stellar-ui-v2 1.35.3

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.
Files changed (141) hide show
  1. package/common/css/common.scss +61 -0
  2. package/components/ste-animate/README.md +117 -0
  3. package/components/ste-animate/animate.scss +247 -0
  4. package/components/ste-animate/ste-animate.vue +200 -0
  5. package/components/ste-badge/README.md +171 -0
  6. package/components/ste-badge/ste-badge.vue +238 -0
  7. package/components/ste-barcode/README.md +36 -0
  8. package/components/ste-barcode/encode2.js +317 -0
  9. package/components/ste-barcode/ste-barcode.vue +213 -0
  10. package/components/ste-button/README.md +129 -0
  11. package/components/ste-button/ste-button.vue +345 -0
  12. package/components/ste-calendar/README.md +304 -0
  13. package/components/ste-calendar/self-date.js +119 -0
  14. package/components/ste-calendar/ste-calendar.vue +578 -0
  15. package/components/ste-checkbox/README.md +297 -0
  16. package/components/ste-checkbox/ste-checkbox.vue +305 -0
  17. package/components/ste-checkbox-group/ste-checkbox-group.vue +133 -0
  18. package/components/ste-code-input/README.md +67 -0
  19. package/components/ste-code-input/ste-code-input.vue +302 -0
  20. package/components/ste-date-picker/README.md +135 -0
  21. package/components/ste-date-picker/ste-date-picker.vue +407 -0
  22. package/components/ste-drag/README.md +103 -0
  23. package/components/ste-drag/ste-drag.vue +203 -0
  24. package/components/ste-dropdown-menu/README.md +358 -0
  25. package/components/ste-dropdown-menu/ste-dropdown-menu.vue +405 -0
  26. package/components/ste-dropdown-menu-item/ste-dropdown-menu-item.vue +176 -0
  27. package/components/ste-icon/README.md +90 -0
  28. package/components/ste-icon/iconfont.css +8 -0
  29. package/components/ste-icon/ste-icon.vue +147 -0
  30. package/components/ste-image/README.md +154 -0
  31. package/components/ste-image/ste-image.vue +218 -0
  32. package/components/ste-index-item/ste-index-item.vue +96 -0
  33. package/components/ste-index-list/README.md +153 -0
  34. package/components/ste-index-list/ste-index-list.vue +128 -0
  35. package/components/ste-input/README.md +146 -0
  36. package/components/ste-input/ste-input.vue +480 -0
  37. package/components/ste-loading/README.md +81 -0
  38. package/components/ste-loading/ste-loading.vue +166 -0
  39. package/components/ste-media-preview/README.md +243 -0
  40. package/components/ste-media-preview/TouchScaleing.js +102 -0
  41. package/components/ste-media-preview/ste-media-preview.vue +267 -0
  42. package/components/ste-message-box/README.md +217 -0
  43. package/components/ste-message-box/ste-message-box.js +72 -0
  44. package/components/ste-message-box/ste-message-box.vue +380 -0
  45. package/components/ste-notice-bar/README.md +129 -0
  46. package/components/ste-notice-bar/ste-notice-bar.vue +331 -0
  47. package/components/ste-number-keyboard/README.md +246 -0
  48. package/components/ste-number-keyboard/keyboard.vue +140 -0
  49. package/components/ste-number-keyboard/ste-number-keyboard.vue +240 -0
  50. package/components/ste-picker/ste-picker.vue +258 -0
  51. package/components/ste-popup/README.md +148 -0
  52. package/components/ste-popup/ste-popup.vue +337 -0
  53. package/components/ste-price/README.md +129 -0
  54. package/components/ste-price/ste-price.vue +258 -0
  55. package/components/ste-progress/README.md +87 -0
  56. package/components/ste-progress/ste-progress.vue +200 -0
  57. package/components/ste-qrcode/README.md +50 -0
  58. package/components/ste-qrcode/ste-qrcode.vue +164 -0
  59. package/components/ste-qrcode/uqrcode.js +34 -0
  60. package/components/ste-radio/README.md +286 -0
  61. package/components/ste-radio/ste-radio.vue +293 -0
  62. package/components/ste-radio-group/ste-radio-group.vue +128 -0
  63. package/components/ste-rate/README.md +115 -0
  64. package/components/ste-rate/ste-rate.vue +202 -0
  65. package/components/ste-read-more/README.md +111 -0
  66. package/components/ste-read-more/ste-read-more.vue +133 -0
  67. package/components/ste-rich-text/README.md +31 -0
  68. package/components/ste-rich-text/ste-rich-text.vue +70 -0
  69. package/components/ste-scroll-to/README.md +68 -0
  70. package/components/ste-scroll-to/mixin.js +173 -0
  71. package/components/ste-scroll-to/ste-scroll-to.vue +45 -0
  72. package/components/ste-scroll-to-item/ste-scroll-to-item.vue +25 -0
  73. package/components/ste-search/README.md +262 -0
  74. package/components/ste-search/ste-search.vue +547 -0
  75. package/components/ste-select/README.md +434 -0
  76. package/components/ste-select/datapager.vue +62 -0
  77. package/components/ste-select/datetime.vue +106 -0
  78. package/components/ste-select/defaultDate.js +142 -0
  79. package/components/ste-select/ste-select.vue +843 -0
  80. package/components/ste-signature/README.md +105 -0
  81. package/components/ste-signature/ste-signature.vue +220 -0
  82. package/components/ste-slider/README.md +165 -0
  83. package/components/ste-slider/ste-slider.vue +544 -0
  84. package/components/ste-step/ste-step.vue +264 -0
  85. package/components/ste-stepper/README.md +170 -0
  86. package/components/ste-stepper/ste-stepper.vue +373 -0
  87. package/components/ste-steps/README.md +132 -0
  88. package/components/ste-steps/ste-steps.vue +65 -0
  89. package/components/ste-sticky/README.md +52 -0
  90. package/components/ste-sticky/ste-sticky.vue +127 -0
  91. package/components/ste-swipe-action/README.md +197 -0
  92. package/components/ste-swipe-action/ste-swipe-action.vue +303 -0
  93. package/components/ste-swipe-action-group/ste-swipe-action-group.vue +104 -0
  94. package/components/ste-swiper/README.md +173 -0
  95. package/components/ste-swiper/ste-swiper.vue +462 -0
  96. package/components/ste-swiper-item/ste-swiper-item.vue +41 -0
  97. package/components/ste-switch/README.md +110 -0
  98. package/components/ste-switch/ste-switch.vue +144 -0
  99. package/components/ste-tab/ste-tab.vue +87 -0
  100. package/components/ste-table/README.md +785 -0
  101. package/components/ste-table/common.js +8 -0
  102. package/components/ste-table/ste-table.vue +666 -0
  103. package/components/ste-table/utils.js +20 -0
  104. package/components/ste-table-column/checkbox-icon.vue +65 -0
  105. package/components/ste-table-column/common.scss +65 -0
  106. package/components/ste-table-column/radio-icon.vue +110 -0
  107. package/components/ste-table-column/ste-table-column.vue +255 -0
  108. package/components/ste-table-column/sub-table.vue +116 -0
  109. package/components/ste-table-column/table-popover.vue +204 -0
  110. package/components/ste-table-column/var.scss +1 -0
  111. package/components/ste-tabs/README.md +475 -0
  112. package/components/ste-tabs/props.js +212 -0
  113. package/components/ste-tabs/ste-tabs.vue +758 -0
  114. package/components/ste-text/README.md +66 -0
  115. package/components/ste-text/ste-text.vue +72 -0
  116. package/components/ste-toast/README.md +243 -0
  117. package/components/ste-toast/ste-toast.js +69 -0
  118. package/components/ste-toast/ste-toast.vue +231 -0
  119. package/components/ste-touch-swipe/README.md +104 -0
  120. package/components/ste-touch-swipe/TouchEvent.js +72 -0
  121. package/components/ste-touch-swipe/ste-touch-swipe.vue +327 -0
  122. package/components/ste-touch-swipe-item/ste-touch-swipe-item.vue +33 -0
  123. package/components/ste-tour/README.md +194 -0
  124. package/components/ste-tour/ste-tour.vue +355 -0
  125. package/components/ste-tree/README.md +240 -0
  126. package/components/ste-tree/ste-tree.vue +350 -0
  127. package/components/ste-upload/README.md +276 -0
  128. package/components/ste-upload/ReadFile.js +229 -0
  129. package/components/ste-upload/ste-upload.vue +526 -0
  130. package/components/ste-video/README.md +60 -0
  131. package/components/ste-video/props.js +149 -0
  132. package/components/ste-video/ste-video.vue +647 -0
  133. package/config/color.js +22 -0
  134. package/index.js +2 -0
  135. package/package.json +19 -0
  136. package/utils/Color.js +66 -0
  137. package/utils/System.js +110 -0
  138. package/utils/dayjs.min.js +1 -0
  139. package/utils/mixin.js +67 -0
  140. package/utils/store.js +7 -0
  141. package/utils/utils.js +604 -0
@@ -0,0 +1,345 @@
1
+ <template>
2
+ <button
3
+ v-if="stopPropagation"
4
+ class="ste-button--root"
5
+ :disabled="disabled"
6
+ :hover-class="!loading ? 'ste-button--root-active' : ''"
7
+ @click.stop="handleClick"
8
+ :style="[cmpBtnStyle]"
9
+ :open-type="openType"
10
+ :scope="scope"
11
+ @getuserinfo="getuserinfo"
12
+ @getUserInfo="getuserinfo"
13
+ @contact="contact"
14
+ @getphonenumber="getphonenumber"
15
+ @getPhoneNumber="getphonenumber"
16
+ @getrealtimephonenumber="getrealtimephonenumber"
17
+ @agreeprivacyauthorization="agreeprivacyauthorization"
18
+ @error="error"
19
+ @opensetting="opensetting"
20
+ @launchapp="launchapp"
21
+ @chooseavatar="chooseavatar"
22
+ @getAuthorize="getAuthorize"
23
+ @followLifestyle="followLifestyle"
24
+ >
25
+ <view class="btn-box">
26
+ <text v-if="loading">加载中.......</text>
27
+ <slot v-else></slot>
28
+ </view>
29
+ </button>
30
+ <button
31
+ v-else
32
+ class="ste-button--root"
33
+ :disabled="disabled"
34
+ :hover-class="!loading ? 'ste-button--root-active' : ''"
35
+ @click="handleClick"
36
+ :style="[cmpBtnStyle]"
37
+ :open-type="openType"
38
+ :scope="scope"
39
+ @getuserinfo="getuserinfo"
40
+ @getUserInfo="getuserinfo"
41
+ @contact="contact"
42
+ @getphonenumber="getphonenumber"
43
+ @getPhoneNumber="getphonenumber"
44
+ @getrealtimephonenumber="getrealtimephonenumber"
45
+ @agreeprivacyauthorization="agreeprivacyauthorization"
46
+ @error="error"
47
+ @opensetting="opensetting"
48
+ @launchapp="launchapp"
49
+ @chooseavatar="chooseavatar"
50
+ @getAuthorize="getAuthorize"
51
+ @followLifestyle="followLifestyle"
52
+ >
53
+ <view class="btn-box">
54
+ <text v-if="loading">加载中.......</text>
55
+ <slot v-else></slot>
56
+ </view>
57
+ </button>
58
+ </template>
59
+
60
+ <script>
61
+ import utils from '../../utils/utils.js';
62
+ import useColor from '../../config/color.js';
63
+ let color = useColor();
64
+ /**
65
+ * ste-button 按钮
66
+ * @description 按钮组件
67
+ * @tutorial https://stellar-ui.intecloud.com.cn/pc/index/index?name=ste-button
68
+ * @property {Number} mode 尺寸 默认值 200
69
+ * @value 100 小 {Number}
70
+ * @value 200 中 {Number}
71
+ * @value 300 大 {Number}
72
+ * @value 400 超大 {Number}
73
+ * @property {String} color 文本颜色 默认值 #ffffff
74
+ * @property {String} background 背景 默认值 #0090FF
75
+ * @property {String} borderColor 边框颜色
76
+ * @property {Number|String} width 宽度 默认值 auto
77
+ * @value auto 自适应宽度 {String}
78
+ * @value 100% 填满 {String}
79
+ * @value {{Number}} 自适应宽度,单位rpx {Number}
80
+ * @property {Boolean} round 是否圆角按钮 默认 true
81
+ * @property {Boolean} disabled 是否禁用状态 默认 false
82
+ * @property {Boolean} loading 是否加载中状态 默认 false
83
+ * @property {Boolean} stopPropagation 是否阻止冒泡行为 默认 false
84
+ * @property {String} openType 微信开放能力和支付宝开放能力
85
+ * @property {String} scope 支付宝开放能力,当 openType 为 getAuthorize 时有效
86
+ * @property {Object} rootStyle 按钮样式属性
87
+ * @event {Function} click 非禁止并且非加载中,才能点击
88
+ * @event {Function} getuserinfo 微信小程序:用户点击该按钮时,会返回获取到的用户信息,从返回参数的 detail 中获取到的值同 wx.getUserInfo。支付宝小程序:当 open-type 为 getAuthorize 且 scope 为 userInfo 时有效。当授权成功时触发。
89
+ * @event {Function} contact 微信小程序:客服消息回调,open-type="contact"时有效。
90
+ * @event {Function} getphonenumber 微信小程序:手机号快速验证回调,open-type=getPhoneNumber时有效。Tips:在触发 bindgetphonenumber 回调后应立即隐藏手机号按钮组件,或置为 disabled 状态,避免用户重复授权手机号产生额外费用。支付宝小程序:当 open-type 为 getAuthorize 且 scope 为 phoneNumber 时有效。当授权成功时触发。
91
+ * @event {Function} getrealtimephonenumber 微信小程序:手机号实时验证回调,open-type=getRealtimePhoneNumber 时有效。Tips:在触发 bindgetrealtimephonenumber 回调后应立即隐藏手机号按钮组件,或置为 disabled 状态,避免用户重复授权手机号产生额外费用。
92
+ * @event {Function} agreeprivacyauthorization 微信小程序:用户同意隐私协议事件回调,open-type=agreePrivacyAuthorization时有效 (Tips: 如果使用 onNeedPrivacyAuthorization 接口,需要在 bindagreeprivacyauthorization 触发后再调用 resolve({ event: "agree", buttonId }))
93
+ * @event {Function} error 微信小程序:当使用开放能力时,发生错误的回调,open-type=launchApp时有效 支付宝小程序:当 open-type 为 getAuthorize 时有效。当授权失败时触发。event.detail = {type, errorMessage},此时 type 的值为 getAuthorize。
94
+ * @event {Function} launchapp 微信小程序:打开 APP 成功的回调,open-type=launchApp时有效
95
+ * @event {Function} opensetting 微信小程序:在打开授权设置页后回调,open-type=openSetting时有效
96
+ * @event {Function} chooseavatar 微信小程序:获取用户头像回调,open-type=chooseAvatar时有效。返回 e.detail.avatarUrl 为头像临时文件链接。
97
+ * @event {Function} getAuthorize 支付宝小程序:当 open-type 为 getAuthorize 时有效。当授权成功时触发。
98
+ * @event {Function} followLifestyle 支付宝小程序:当 open-type 为 lifestyle 时有效。当点击按钮时触发。event.detail = { followStatus },folllowStatus 合法值有 1、2、3,其中 1 表示已关注。2 表示用户不允许关注。3 表示发生未知错误;。
99
+ */
100
+ export default {
101
+ group: '基础组件',
102
+ title: 'Button 按钮',
103
+ name: 'ste-button',
104
+ props: {
105
+ mode: {
106
+ type: [Number, String, null],
107
+ default: 200,
108
+ },
109
+ color: {
110
+ type: [String, null],
111
+ default: '#ffffff',
112
+ },
113
+ background: {
114
+ type: [String, null],
115
+ default: '',
116
+ },
117
+ borderColor: {
118
+ type: [String, null],
119
+ default: '',
120
+ },
121
+ width: {
122
+ type: [String, Number, null],
123
+ default: 'auto',
124
+ },
125
+ round: {
126
+ type: [Boolean, null],
127
+ default: true,
128
+ },
129
+ disabled: {
130
+ type: [Boolean, null],
131
+ default: false,
132
+ },
133
+ loading: {
134
+ type: [Boolean, null],
135
+ default: false,
136
+ },
137
+ openType: {
138
+ type: [String, null],
139
+ default: '',
140
+ },
141
+ scope: {
142
+ type: [String, null],
143
+ default: '',
144
+ },
145
+ rootStyle: {
146
+ type: [Object, null],
147
+ default: () => {},
148
+ },
149
+ stopPropagation: {
150
+ type: [Boolean, null],
151
+ default: true,
152
+ },
153
+ },
154
+ data() {
155
+ return {};
156
+ },
157
+ created() {},
158
+ computed: {
159
+ cmpBtnStyle() {
160
+ let style = {};
161
+ // 为解决支付宝动态类名时不兼容,尽量使用内联样式
162
+
163
+ // 圆角 round
164
+ if (this.round) {
165
+ style.borderRadius = utils.formatPx(48);
166
+ }
167
+
168
+ // 宽度 width
169
+ if (this.width == '100%' || this.width == 'auto') {
170
+ style.width = this.width;
171
+ } else {
172
+ style.width = utils.formatPx(this.width);
173
+ }
174
+
175
+ // 边框色 borderColor
176
+ if (this.borderColor) {
177
+ style.border = `solid ${utils.formatPx(2)}`;
178
+ style.borderColor = this.borderColor;
179
+ }
180
+
181
+ // 类型 mode
182
+ switch (this.mode) {
183
+ case 100:
184
+ style.padding = `0 ${utils.formatPx(30)}`;
185
+ style.height = utils.formatPx(48);
186
+ style.fontSize = '24rpx';
187
+ break;
188
+ case 300:
189
+ style.padding = `0 ${utils.formatPx(72)}`;
190
+ style.height = utils.formatPx(80);
191
+ style.fontSize = '32rpx';
192
+ break;
193
+ case 400:
194
+ style.padding = `0 ${utils.formatPx(72)}`;
195
+ style.height = utils.formatPx(96);
196
+ style.fontSize = '36rpx';
197
+ break;
198
+ default:
199
+ style.padding = `0 ${utils.formatPx(40)}`;
200
+ style.height = utils.formatPx(68);
201
+ style.fontSize = '28rpx';
202
+ break;
203
+ }
204
+
205
+ // 背景色 & 字体色
206
+ style = { ...style, ...utils.bg2style(this.background ? this.background : color.getColor().steThemeColor) };
207
+ style.color = this.color;
208
+
209
+ // 禁用 disabled | 加载 loading
210
+ // #ifdef H5
211
+ if (this.disabled || this.loading) {
212
+ style.cursor = 'not-allowed';
213
+ }
214
+ // #endif
215
+ if (this.disabled) {
216
+ style.opacity = 0.5;
217
+ }
218
+ return utils.deepMerge(style, this.rootStyle);
219
+ },
220
+ },
221
+ methods: {
222
+ handleClick(e) {
223
+ if (!this.disabled && !this.loading) {
224
+ this.$emit('click');
225
+ }
226
+ },
227
+ getuserinfo(e) {
228
+ this.$emit('getuserinfo', e);
229
+ },
230
+ contact(e) {
231
+ this.$emit('contact', e);
232
+ },
233
+ getphonenumber(e) {
234
+ this.$emit('getphonenumber', e);
235
+ },
236
+ getrealtimephonenumber(e) {
237
+ this.$emit('getrealtimephonenumber', e);
238
+ },
239
+ greeprivacyauthorization(e) {
240
+ this.$emit('greeprivacyauthorization', e);
241
+ },
242
+ error(e) {
243
+ this.$emit('error', e);
244
+ },
245
+ launchapp(e) {
246
+ this.$emit('launchapp', e);
247
+ },
248
+ opensetting(e) {
249
+ this.$emit('opensetting', e);
250
+ },
251
+ chooseavatar(e) {
252
+ this.$emit('chooseavatar', e);
253
+ },
254
+ getAuthorize(e) {
255
+ this.$emit('getAuthorize', e);
256
+ },
257
+ followLifestyle(e) {
258
+ this.$emit('followLifestyle', e);
259
+ },
260
+ },
261
+ };
262
+ </script>
263
+
264
+ <style lang="scss" scoped>
265
+ .ste-button--root {
266
+ position: relative;
267
+ align-items: center;
268
+ justify-content: center;
269
+ display: inline-flex;
270
+ flex-direction: row;
271
+ box-sizing: border-box;
272
+ flex-direction: row;
273
+ background-size: cover;
274
+ border-radius: 10rpx;
275
+
276
+ .btn-box {
277
+ width: 100%;
278
+ white-space: nowrap;
279
+ overflow: hidden;
280
+ text-overflow: ellipsis;
281
+ white-space: nowrap;
282
+ }
283
+
284
+ &:before {
285
+ position: absolute;
286
+ top: 50%;
287
+ left: 50%;
288
+ width: 100%;
289
+ height: 100%;
290
+ border: inherit;
291
+ border-radius: inherit;
292
+ -webkit-transform: translate(-50%, -50%);
293
+ transform: translate(-50%, -50%);
294
+ opacity: 0;
295
+ content: ' ';
296
+ background-color: #000;
297
+ border-color: #000;
298
+ }
299
+
300
+ &:after {
301
+ border: none;
302
+ }
303
+
304
+ &-disabled {
305
+ background: #666666;
306
+ color: #ffffff;
307
+
308
+ cursor: not-allowed;
309
+ }
310
+
311
+ &-loading {
312
+ cursor: not-allowed;
313
+ }
314
+
315
+ &-active {
316
+ &:before {
317
+ opacity: 0.15;
318
+ }
319
+ }
320
+
321
+ &-100 {
322
+ padding: 0 30rpx;
323
+ height: 48rpx;
324
+ font-size: 24rpx;
325
+ }
326
+
327
+ &-200 {
328
+ padding: 0 40rpx;
329
+ height: 68rpx;
330
+ font-size: 28rpx;
331
+ }
332
+
333
+ &-300 {
334
+ padding: 0 72rpx;
335
+ height: 80rpx;
336
+ font-size: 32rpx;
337
+ }
338
+
339
+ &-400 {
340
+ padding: 0 72rpx;
341
+ height: 96rpx;
342
+ font-size: 36rpx;
343
+ }
344
+ }
345
+ </style>
@@ -0,0 +1,304 @@
1
+ # Calendar 日历
2
+ 日历组件
3
+
4
+ ---$
5
+
6
+ ### 基础用法
7
+ - 属性`height`用于设置日历的高度,单位为`rpx`,默认`100%`
8
+ - 属性`showTitle`用于设置是否显示日历的标题,默认`true`
9
+ - 属性`title`用户设置日历的标题,默认`日期选择`
10
+ - 事件`confirm`用于监听用户点击确定按钮事件,参数为选中的日期数组
11
+ ```html
12
+ <template>
13
+ <ste-calendar height="720" :showTitle="false" @confirm="handleConfirm" />
14
+ </template>
15
+ <script>
16
+ export default{
17
+ methods: {
18
+ handleConfirm(v) {
19
+ this.showToast({
20
+ title: '确定选择:' + v.join(' '),
21
+ icon: 'none',
22
+ duration: 1500,
23
+ });
24
+ },
25
+ },
26
+ }
27
+ </script>
28
+ ```
29
+
30
+ ### 结合弹窗使用
31
+
32
+ #### 基础使用
33
+ ```html
34
+ <ste-button @click="show1 = true">默认(单个日期)</ste-button>
35
+ <ste-popup :show.sync="show1" height="60vh" position="bottom">
36
+ <div style="padding-bottom: 20px; height: 100%">
37
+ <ste-calendar @confirm ="handleConfirm" />
38
+ </div>
39
+ </ste-popup>
40
+ ```
41
+
42
+ #### 多个日期
43
+ - 属性`mode`用于设置日历的模式,可选值`single`、`multiple`、`range`,默认`single`
44
+ - 设置为`multiple`可以选择多个日期
45
+ ```html
46
+ <ste-button @click="show2 = true">多个日期</ste-button>
47
+ <ste-popup :show.sync="show2" height="60vh" position="bottom">
48
+ <div style="padding-bottom: 20px; height: 100%">
49
+ <ste-calendar mode="multiple" @confirm="handleConfirm" />
50
+ </div>
51
+ </ste-popup>
52
+ ```
53
+
54
+ #### 日期范围
55
+ - 属性`mode`用于设置日历的模式,可选值`single`、`multiple`、`range`,默认`single`
56
+ - 设置为`single`可以选择日期范围
57
+ ```html
58
+ <ste-button @click="show2 = true">日期范围</ste-button>
59
+ <ste-popup :show.sync="show2" height="60vh" position="bottom">
60
+ <div style="padding-bottom: 20px; height: 100%">
61
+ <ste-calendar mode="single" @confirm="handleConfirm" />
62
+ </div>
63
+ </ste-popup>
64
+ ```
65
+
66
+ #### 自定义主题色
67
+ - 属性`color`可以设置日历的主题色,包括周末日期颜色、日期选中颜色、日期范围选中颜色、确定按钮颜色
68
+ ```html
69
+ <ste-button @click="show4 = true">自定义主题色</ste-button>
70
+ <ste-popup :show.sync="show4" height="60vh" position="bottom">
71
+ <div style="padding-bottom: 20px; height: 100%">
72
+ <ste-calendar color="#3478f6" @confirm="handleConfirm" />
73
+ </div>
74
+ </ste-popup>
75
+ ```
76
+
77
+ #### 自定义文案
78
+ - 属性`title`可以设置标题文案
79
+ - 属性`startText`可以设置开始日期的文案,`mode`值为`range`时生效
80
+ - 属性`endText`可以设置结束日期的文案,`mode`值为`range`时生效
81
+ ```html
82
+ <ste-button @click="show5 = true">自定义文案</ste-button>
83
+ <ste-popup :show.sync="show5" height="60vh" position="bottom">
84
+ <div style="padding-bottom: 20px; height: 100%">
85
+ <ste-calendar mode="range" title="酒店预约" startText="住店" endText="离店" @confirm="handleConfirm" />
86
+ </div>
87
+ </ste-popup>
88
+ ```
89
+
90
+ #### 日期最大范围
91
+ - 属性`minDate`可以设置日期的最小可选范围
92
+ - 属性`maxDate`可以设置日期的最大可选范围
93
+
94
+ ```html
95
+ <ste-button @click="show6 = true">日期最大范围</ste-button>
96
+ <ste-popup :show.sync="show6" height="60vh" position="bottom">
97
+ <div style="padding-bottom: 20px; height: 100%">
98
+ <ste-calendar mode="range" minDate="2024-05-10" maxDate="2024-05-20" @confirm="handleConfirm" />
99
+ </div>
100
+ </ste-popup>
101
+ ```
102
+
103
+ #### 多选数量限制
104
+ - 属性`maxCount`用于设置多选模式下最多可选的日期数量
105
+
106
+ ```html
107
+ <ste-button @click="show7 = true">多选数量限制</ste-button>
108
+ <ste-popup :show.sync="show7" height="60vh" position="bottom">
109
+ <div style="padding-bottom: 20px; height: 100%">
110
+ <ste-calendar mode="multiple" :maxCount="5" @confirm="handleConfirm" />
111
+ </div>
112
+ </ste-popup>
113
+ ```
114
+
115
+ #### 多选数量限制
116
+ - 属性`maxRange`用于设置范围模式下最多可选的日期数量
117
+ - 属性`showRangePrompt`用于设置范围模式下是否显示超出数量时的提示文案
118
+ - 属性`rangePrompt`用于设置范围模式下超出数量时的提示文案
119
+
120
+ ```html
121
+ <ste-button @click="show7 = true">范围数量限制</ste-button>
122
+ <ste-popup :show.sync="show7" height="60vh" position="bottom">
123
+ <div style="padding-bottom: 20px; height: 100%">
124
+ <ste-calendar mode="range" :maxRange="5" @confirm="handleConfirm" />
125
+ </div>
126
+ </ste-popup>
127
+ ```
128
+
129
+ #### 默认选择日期
130
+ - 属性`list`用于设置默认选择的日期
131
+
132
+ ```html
133
+ <ste-button @click="show8 = true">默认选择日期</ste-button>
134
+ <ste-popup :show.sync="show8" height="60vh" position="bottom">
135
+ <div style="padding-bottom: 20px; height: 100%">
136
+ <ste-calendar :list="[Date.now()]" @confirm="handleConfirm" />
137
+ </div>
138
+ </ste-popup>
139
+ ```
140
+ #### 默认展示月份
141
+ - 属性`defaultDate`用于设置默认展示的日期,因为弹窗中的日历不在文档流,无法设置滚动距离,所以需要在弹窗动画结束之后手动设置默认展示的时间
142
+
143
+ ```html
144
+ <ste-button @click="show9 = true">默认展示月份</ste-button>
145
+ <ste-popup :show.sync="show9" position="bottom" height="60vh" @open-after="setViewMonth">
146
+ <div style="padding-bottom: 20px; height: 100%">
147
+ <ste-calendar ref="calendarRef" minDate="2024-05-20" maxDate="2024-12-01" @confirm="handleConfirm" />
148
+ </div>
149
+ </ste-popup>
150
+ <script>
151
+ export default{
152
+ methods: {
153
+ setViewMonth() {
154
+ this.$refs.calendarRef.showMonth('2024-07-12');
155
+ },
156
+ },
157
+ }
158
+ </script>
159
+ ```
160
+ #### 隐藏确定按钮
161
+ - 属性`showConfirm`用于设置是否显示确定按钮
162
+ - 事件`select`用于监听选择日期的事件
163
+
164
+ ```html
165
+ <ste-button @click="show10 = true">隐藏确定按钮</ste-button>
166
+ <ste-popup :show.sync="show10" position="bottom" height="60vh">
167
+ <div style="padding-bottom: 20px; height: 100%">
168
+ <ste-calendar minDate="2024-05-20" maxDate="2024-12-01" @select="handleConfirm" :showConfirm="false" />
169
+ </div>
170
+ </ste-popup>
171
+ ```
172
+ #### 只读
173
+ - 属性`readonly`用于设置是否只读
174
+
175
+ ```html
176
+ <ste-button @click="show11 = true">只读</ste-button>
177
+ <ste-popup :show.sync="show11" position="bottom" height="60vh">
178
+ <div style="padding-bottom: 20px; height: 100%">
179
+ <ste-calendar minDate="2024-05-20" maxDate="2024-06-10" readonly :list="['2024-05-21']" />
180
+ </div>
181
+ </ste-popup>
182
+ ```
183
+
184
+ #### 隐藏背景月份
185
+ - 属性`showMark`用于设置是否显示背景月份
186
+
187
+ ```html
188
+ <ste-button @click="show12 = true">隐藏背景月份</ste-button>
189
+ <ste-popup :show.sync="show12" position="bottom" height="60vh">
190
+ <div style="padding-bottom: 20px; height: 100%">
191
+ <ste-calendar :showMark="false" @select="handleConfirm" />
192
+ </div>
193
+ </ste-popup>
194
+ ```
195
+
196
+ #### 手动切换、标记
197
+ - 属性`weekendColor`用于设置周末日期颜色
198
+ - 属性`monthCount`用于设置渲染的月数
199
+ - 属性`signs`用于设置标记的日期
200
+
201
+ ```html
202
+ <ste-select mode="month" v-model="defaultDate" width="200" options-width="420" border-color="transparency">
203
+ <template v-slot:icon>
204
+ <ste-icon code="&#xe699;"></ste-icon>
205
+ </template>
206
+ </ste-select>
207
+
208
+ <ste-calendar
209
+ @select="handleConfirm"
210
+ weekendColor="#999"
211
+ color="#09f"
212
+ :signs="signs"
213
+ :defaultDate="defaultDate"
214
+ :monthCount="1"
215
+ :showConfirm="false"
216
+ :showTitle="false"
217
+ />
218
+
219
+ <script>
220
+ import utils from 'stellar-ui/utils/utils';
221
+ export default{
222
+ data(){
223
+ return {
224
+ defaultDate: utils.dayjs().format('YYYY-MM'),
225
+ signs: {
226
+ '2024-11-12': [
227
+ { content: 'XXXXX', className: 'test-signs' },
228
+ { content: 'XXXXX', className: 'test-signs' },
229
+ { content: 'XXXXX', className: 'test-signs' },
230
+ ],
231
+ '2024-11-13': [
232
+ { content: 'XXXXX', style: { color: '#666', background: '#f5f5f5' } },
233
+ { content: 'XXXXX', style: { color: '#666', background: '#f5f5f5' } },
234
+ { content: 'XXXXX', style: { color: '#666', background: '#f5f5f5' } },
235
+ ],
236
+ },
237
+ }
238
+ },
239
+ }
240
+ </script>
241
+ <style>
242
+ /deep/ .test-signs {
243
+ color: #fff;
244
+ background-color: #000;
245
+ }
246
+ </style>
247
+ ```
248
+
249
+ ---$
250
+ ### API
251
+ #### Tabs Props
252
+ 背景之外的颜色属性只支持`16进制`、`RGB`、`RGBA`格式
253
+ | 属性名 | 说明 | 类型 | 默认值 | 可选值 | 支持版本 |
254
+ | ----- | ----- | ----- | ----- | ----- | ----- |
255
+ | `mode` | 选择模式 | `String` | `"single"` | `"single"`单选<br/>`"multiple"`多选<br/>`"range"`范围选择 | - |
256
+ | `title` | 标题文本 | `String` | `"日期选择"` | - | - |
257
+ | `showTitle` | 是否显示标题 | `Boolean` | `true` | - | - |
258
+ | `list` | 已选中的日期 | `Array<Date>` | `[]` | - | - |
259
+ | `startText` | 开始日期的提示文字,`mode`=`range`时生效 | `String` | `[]` | - | - |
260
+ | `endText` | 结束日期的提示文字,`mode`=`range`时生效 | `String` | `[]` | - | - |
261
+ | `color` | 主题颜色(选中日期背景、月份背景、当天日期颜色和确定按钮颜色) | `String` | `#0090FF` | - | - |
262
+ | `weekendColor` | 周末日期颜色 | `String` | `#0090FF` | - | - |
263
+ | `minDate` | 开始日期 (没有该属性的情况下,从`defaultDate`开始渲染) | `Date` | `0` | - | - |
264
+ | `maxDate` | 结束日期 (没有该属性的情况下,从`minDate`或者`defaultDate`开始往后渲染`maxCount`个月) | `Date` | `0` | - | - |
265
+ | `defaultDate` | 默认展示日期(不设置`minDate`和`maxDate`的情况下,列表展示从默认月份开始往后`maxCount`个月) | `Date` | `new Date()` | - | - |
266
+ | `monthCount` | 渲染的月数(如果存在`maxDate`则该属性不生效) | `Number` | `12` | - | - |
267
+ | `maxCount` | `mode`=`multiple`时,最多可选多少个日期 | `Number` | `0` | - | - |
268
+ | `formatter` | 日期格式化 | `String` | `"YYYY-MM-DD"` | - | - |
269
+ | `showMark` | 是否显示月份背景色 | `Boolean` | `true` | - | - |
270
+ | `readonly` | 是否为只读状态,只读状态下禁止选择日期 | `Boolean` | `false` | - | - |
271
+ | `maxRange` | 日期区间最多可选天数,`mode`=`range`时有效 | `Number` | `0` | - | - |
272
+ | `rangePrompt` | 范围选择超过最多可选天数时的提示文案 | `String` | `"选择天数不能超过XX天"` | - | - |
273
+ | `showRangePrompt` | 范围选择超过最多可选天数时,是否展示提示文案 | `Number` | `0` | - | - |
274
+ | `allowSameDay` | 是否允许日期范围的起止时间为同一天 | `Boolean` | `true` | - | - |
275
+ | `signs` | 标签对象(每一天的支持最多三条标签) | `Signs` | `true` | - | - |
276
+
277
+ ##### Signs 示例
278
+ ```javascript
279
+ {
280
+ "2024-11-21":[
281
+ {content:"标记1",className:"XXX"}
282
+ {content:"标记1",className:"XXX"}
283
+ {content:"标记1",className:"XXX"}
284
+ ],
285
+ "2024-11-22":[
286
+ {content:"标记1",style:{}}
287
+ {content:"标记1",style:{}}
288
+ {content:"标记1",style:{}}
289
+ ]
290
+ }
291
+ ```
292
+
293
+
294
+ #### Tabs Events
295
+
296
+ | 事件名 | 说明 | 事件参数 | 支持版本 |
297
+ | --- | --- | --- | --- |
298
+ | `confirm` | 监听用户点击确定按钮,参数为用户选中的日期列表 | `Array<Date>` | - |
299
+ | `select` | 监听用户选择日期,参数一为用户选中的日期列表,参数二为当前点击的日期 | `Array<Date>`,`Date`| - |
300
+ | `viewMonth` | 监听用户滚动日历时,视图区域展示的月份变化 | `YYYY-MM` | - |
301
+
302
+
303
+ ---$
304
+ {{xuyajun}}