@10yun/cv-mobile-ui 0.5.62 → 0.5.63

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 (67) hide show
  1. package/package.json +1 -1
  2. package/plugins/uni-extend.js +10 -10
  3. package/ui-fireui/components/u-action-sheet/u-action-sheet.vue +46 -16
  4. package/ui-fireui/components/u-alert/u-alert.vue +11 -5
  5. package/ui-fireui/components/u-badge/u-badge.vue +52 -69
  6. package/ui-fireui/components/u-bottom-navigation/u-bottom-navigation.vue +28 -20
  7. package/ui-fireui/components/u-bottom-popup/u-bottom-popup.vue +40 -11
  8. package/ui-fireui/components/u-bubble-popup/u-bubble-popup.vue +3 -6
  9. package/ui-fireui/components/u-button/u-button.vue +262 -259
  10. package/ui-fireui/components/u-calendar/u-calendar.vue +227 -44
  11. package/ui-fireui/components/u-calendar/u-calendar2.js +562 -0
  12. package/ui-fireui/components/u-card/u-card.vue +50 -32
  13. package/ui-fireui/components/u-cascade-selection/u-cascade-selection.vue +197 -74
  14. package/ui-fireui/components/u-circular-progress/u-circular-progress.vue +324 -0
  15. package/ui-fireui/components/u-clipboard2/tui-clipboard.js +53 -0
  16. package/ui-fireui/components/u-collapse/u-collapse.vue +8 -8
  17. package/ui-fireui/components/u-config/index.js +129 -0
  18. package/ui-fireui/components/u-count-down/u-count-down.vue +124 -19
  19. package/ui-fireui/components/u-datetime/u-datetime.vue +416 -176
  20. package/ui-fireui/components/u-divider/u-divider.vue +3 -3
  21. package/ui-fireui/components/u-drawer/u-drawer.vue +55 -12
  22. package/ui-fireui/components/u-dropdown-list/u-dropdown-list.vue +103 -0
  23. package/ui-fireui/components/u-fab/u-fab.vue +344 -0
  24. package/ui-fireui/components/u-footer/u-footer.vue +148 -0
  25. package/ui-fireui/components/u-grid/u-grid.vue +2 -8
  26. package/ui-fireui/components/u-grid-item/u-grid-item.vue +22 -5
  27. package/ui-fireui/components/u-icon/u-icon-new.js +190 -0
  28. package/ui-fireui/components/u-icon/u-icon-new.vue +100 -0
  29. package/ui-fireui/components/u-image-cropper/u-image-cropper.vue +1144 -0
  30. package/ui-fireui/components/u-image-group/u-image-group.vue +164 -0
  31. package/ui-fireui/components/u-keyboard/u-keyboard.vue +3 -2
  32. package/ui-fireui/components/u-keyboard-input/u-keyboard-input.vue +1 -1
  33. package/ui-fireui/components/u-list-cell/u-list-cell.vue +82 -72
  34. package/ui-fireui/components/u-list-view/u-list-view.vue +33 -8
  35. package/ui-fireui/components/u-loading/u-loading.vue +107 -27
  36. package/ui-fireui/components/u-loadmore/u-loadmore.vue +21 -3
  37. package/ui-fireui/components/u-modal/u-modal.vue +140 -176
  38. package/ui-fireui/components/u-navigation-bar/u-navigation-bar.vue +121 -28
  39. package/ui-fireui/components/u-no-data/u-no-data.vue +58 -20
  40. package/ui-fireui/components/u-nomore/u-nomore.vue +5 -4
  41. package/ui-fireui/components/u-numberbox/u-numberbox.vue +88 -45
  42. package/ui-fireui/components/u-picture-cropper/u-picture-cropper.vue +94 -36
  43. package/ui-fireui/components/u-picture-cropper/u-picture-cropper.wxs +27 -17
  44. package/ui-fireui/components/u-rate/u-rate.vue +197 -0
  45. package/ui-fireui/components/u-round-progress/u-round-progress.vue +62 -42
  46. package/ui-fireui/components/u-scroll-top/u-scroll-top.vue +4 -3
  47. package/ui-fireui/components/u-section/u-section.vue +149 -0
  48. package/ui-fireui/components/u-skeleton/u-skeleton.vue +37 -6
  49. package/ui-fireui/components/u-steps/u-steps.vue +110 -27
  50. package/ui-fireui/components/u-sticky/u-sticky.vue +35 -21
  51. package/ui-fireui/components/u-sticky-wxs/u-sticky-wxs.vue +7 -4
  52. package/ui-fireui/components/u-sticky-wxs/u-sticky.wxs +39 -36
  53. package/ui-fireui/components/u-swipe-action/u-swipe-action.vue +76 -19
  54. package/ui-fireui/components/u-tabbar/u-tabbar.vue +71 -38
  55. package/ui-fireui/components/u-tabs/u-tabs.vue +133 -51
  56. package/ui-fireui/components/u-tag/u-tag.vue +109 -226
  57. package/ui-fireui/components/u-time-axis/u-time-axis.vue +1 -1
  58. package/ui-fireui/components/u-timeaxis-item/u-timeaxis-item.vue +1 -1
  59. package/ui-fireui/components/u-tips/u-tips.vue +35 -15
  60. package/ui-fireui/components/u-toast/u-toast.vue +9 -5
  61. package/ui-fireui/components/u-top-dropdown/u-top-dropdown.vue +8 -6
  62. package/ui-fireui/components/u-upload/u-upload-old.vue +462 -0
  63. package/ui-fireui/components/u-upload/u-upload.vue +648 -446
  64. package/ui-fireui/components/u-white-space/u-white-space.vue +68 -0
  65. package/ui-fireui/components/u-wing-blank/u-wing-blank.vue +100 -0
  66. package/uview-plus/libs/ctocode/index.js +1 -0
  67. package/uview-plus/libs/ctocode/richText.js +0 -1
@@ -18,7 +18,7 @@
18
18
 
19
19
  <script>
20
20
  export default {
21
- name: 'fuiDivider',
21
+ name: 'tuiDivider',
22
22
  props: {
23
23
  //divider占据高度
24
24
  height: {
@@ -62,7 +62,7 @@ export default {
62
62
  //渐变色值,to right ,提供两个色值即可,由浅至深
63
63
  gradualColor: {
64
64
  type: Array,
65
- default: () => {
65
+ default: function () {
66
66
  return ['#eee', '#ccc'];
67
67
  }
68
68
  }
@@ -102,7 +102,7 @@ export default {
102
102
 
103
103
  .up-divider-line {
104
104
  position: absolute;
105
- height: 1rpx;
105
+ height: 1px;
106
106
  top: 50%;
107
107
  left: 50%;
108
108
  -webkit-transform: scaleY(0.5) translateX(-50%) translateZ(0);
@@ -1,12 +1,17 @@
1
1
  <template>
2
- <view @touchmove.stop.prevent>
3
- <view v-if="mask" class="up-drawer-mask" :class="{ 'up-drawer-mask_show': visible }" @tap="handleMaskClick"></view>
2
+ <!-- @touchmove.stop.prevent -->
3
+ <view>
4
+ <view
5
+ v-if="mask"
6
+ class="up-drawer-mask"
7
+ :class="{ 'up-drawer-mask_show': visible }"
8
+ :style="{ zIndex: maskZIndex }"
9
+ @tap="handleMaskClick"
10
+ ></view>
4
11
  <view
5
12
  class="up-drawer-container"
6
- :class="[
7
- mode == 'left' ? 'up-drawer-container_left' : 'up-drawer-container_right',
8
- visible ? 'up-drawer-container_show' : ''
9
- ]"
13
+ :class="[`up-drawer-container_${mode}`, visible ? `up-drawer-${mode}__show` : '']"
14
+ :style="{ zIndex: zIndex, backgroundColor: backgroundColor }"
10
15
  >
11
16
  <slot></slot>
12
17
  </view>
@@ -18,7 +23,8 @@
18
23
  * 超过一屏时插槽使用scroll-view
19
24
  **/
20
25
  export default {
21
- name: 'fuiDrawer',
26
+ name: 'tuiDrawer',
27
+ emits: ['close'],
22
28
  props: {
23
29
  visible: {
24
30
  type: Boolean,
@@ -32,9 +38,24 @@ export default {
32
38
  type: Boolean,
33
39
  default: true
34
40
  },
41
+ // left right bottom top
35
42
  mode: {
36
43
  type: String,
37
- default: 'left' // left right
44
+ default: 'right'
45
+ },
46
+ //drawer z-index
47
+ zIndex: {
48
+ type: [Number, String],
49
+ default: 990
50
+ },
51
+ //mask z-index
52
+ maskZIndex: {
53
+ type: [Number, String],
54
+ default: 980
55
+ },
56
+ backgroundColor: {
57
+ type: String,
58
+ default: '#fff'
38
59
  }
39
60
  },
40
61
  methods: {
@@ -57,7 +78,6 @@ export default {
57
78
  left: 0;
58
79
  right: 0;
59
80
  bottom: 0;
60
- z-index: 8888;
61
81
  background-color: rgba(0, 0, 0, 0.6);
62
82
  transition: all 0.3s ease-in-out;
63
83
  }
@@ -75,10 +95,8 @@ export default {
75
95
  transform: translate3d(-50%, -50%, 0);
76
96
  transform-origin: center;
77
97
  transition: all 0.3s ease-in-out;
78
- z-index: 99999;
79
98
  opacity: 0;
80
99
  overflow-y: scroll;
81
- background-color: #fff;
82
100
  -webkit-overflow-scrolling: touch;
83
101
  -ms-touch-action: pan-y cross-slide-y;
84
102
  -ms-scroll-chaining: none;
@@ -96,8 +114,33 @@ export default {
96
114
  left: auto;
97
115
  transform: translate3d(100%, -50%, 0);
98
116
  }
99
- .up-drawer-container_show {
117
+
118
+ .up-drawer-container_bottom,
119
+ .up-drawer-container_top {
120
+ width: 100%;
121
+ height: auto !important;
122
+ min-height: 20rpx;
123
+ left: 0;
124
+ right: 0;
125
+ transform-origin: center;
126
+ transition: all 0.3s ease-in-out;
127
+ }
128
+ .up-drawer-container_bottom {
129
+ bottom: 0;
130
+ top: auto;
131
+ transform: translate3d(0, 100%, 0);
132
+ }
133
+ .up-drawer-container_top {
134
+ transform: translate3d(0, -100%, 0);
135
+ }
136
+ .up-drawer-left__show,
137
+ .up-drawer-right__show {
100
138
  opacity: 1;
101
139
  transform: translate3d(0, -50%, 0);
102
140
  }
141
+ .up-drawer-top__show,
142
+ .up-drawer-bottom__show {
143
+ opacity: 1;
144
+ transform: translate3d(0, 0, 0);
145
+ }
103
146
  </style>
@@ -0,0 +1,103 @@
1
+ <template>
2
+ <view>
3
+ <view class="up-selected-class up-dropdown-list" :style="{ height: selectHeight ? selectHeight + 'rpx' : 'auto' }">
4
+ <slot name="selectionbox"></slot>
5
+ <view
6
+ class="up-dropdown-view"
7
+ :class="[show ? 'up-dropdownlist-show' : '']"
8
+ :style="{ backgroundColor: backgroundColor, height: show ? height + 'rpx' : 0, top: top + 'rpx' }"
9
+ >
10
+ <slot name="dropdownbox"></slot>
11
+ </view>
12
+ </view>
13
+ <view
14
+ class="up-dropdown__mask"
15
+ :style="{ backgroundColor: maskBackground }"
16
+ v-if="isMask && show"
17
+ @tap.stop="maskClick"
18
+ ></view>
19
+ </view>
20
+ </template>
21
+
22
+ <script>
23
+ export default {
24
+ name: 'tuiDropdownList',
25
+ emits: ['close'],
26
+ props: {
27
+ //控制显示
28
+ show: {
29
+ type: Boolean,
30
+ default: false
31
+ },
32
+ //背景颜色
33
+ backgroundColor: {
34
+ type: String,
35
+ default: 'transparent'
36
+ },
37
+ //top rpx
38
+ top: {
39
+ type: Number,
40
+ default: 0
41
+ },
42
+ //下拉框高度 rpx
43
+ height: {
44
+ type: Number,
45
+ default: 0
46
+ },
47
+ //选择框高度 单位rpx
48
+ selectHeight: {
49
+ type: Number,
50
+ default: 0
51
+ },
52
+ isMask: {
53
+ type: Boolean,
54
+ default: false
55
+ },
56
+ maskBackground: {
57
+ type: String,
58
+ default: 'transparent'
59
+ }
60
+ },
61
+ methods: {
62
+ maskClick() {
63
+ this.$emit('close', {});
64
+ }
65
+ }
66
+ };
67
+ </script>
68
+
69
+ <style scoped>
70
+ .up-dropdown-list {
71
+ position: relative;
72
+ z-index: 12;
73
+ }
74
+
75
+ .up-dropdown-view {
76
+ width: 100%;
77
+ overflow: hidden;
78
+ position: absolute;
79
+ z-index: -99;
80
+ left: 0;
81
+ opacity: 0;
82
+ /* visibility: hidden; */
83
+ transition: all 0.2s ease-in-out;
84
+ }
85
+
86
+ .up-dropdownlist-show {
87
+ opacity: 1;
88
+ z-index: 996;
89
+ /* visibility: visible; */
90
+ }
91
+
92
+ .up-dropdown__mask {
93
+ width: 100%;
94
+ height: 100%;
95
+ position: fixed;
96
+ left: 0;
97
+ right: 0;
98
+ top: 0;
99
+ bottom: 0;
100
+ background-color: rgba(0, 0, 0, 0.1);
101
+ z-index: 5;
102
+ }
103
+ </style>
@@ -0,0 +1,344 @@
1
+ <template>
2
+ <view>
3
+ <view
4
+ class="up-fab-box"
5
+ :class="{
6
+ 'up-fab-right': left == 0 || (left && right),
7
+ 'up-fab__box-bottom': bottom && top == 0,
8
+ 'up-fab__box-top': !(bottom && top == 0)
9
+ }"
10
+ :style="getStyles"
11
+ >
12
+ <view class="up-fab-btn" :class="{ 'up-visible': isOpen, 'up-fab-hidden': isHidden }">
13
+ <view
14
+ class="up-fab-item-box"
15
+ :class="{
16
+ 'up-fab-item-left': left && right == 0 && item[imgField],
17
+ 'up-fab__pb40': bottom && top == 0,
18
+ 'up-fab__pt40': !(bottom && top == 0)
19
+ }"
20
+ v-for="(item, index) in btnList"
21
+ :key="index"
22
+ @tap.stop="handleClick(index)"
23
+ >
24
+ <view
25
+ :class="[left && right == 0 ? 'up-text-left' : 'up-text-right']"
26
+ v-if="item[imgField]"
27
+ :style="{ fontSize: (item.fontSize || size) + 'rpx', color: item.color }"
28
+ >
29
+ {{ item[textField] || '' }}
30
+ </view>
31
+ <view
32
+ class="up-fab-item"
33
+ :style="{
34
+ width: width + 'rpx',
35
+ height: height + 'rpx',
36
+ background: item.bgColor || getBgColor,
37
+ borderRadius: radius
38
+ }"
39
+ >
40
+ <view
41
+ class="up-fab-title"
42
+ v-if="!item[imgField]"
43
+ :style="{ fontSize: (item.fontSize || size) + 'rpx', color: item.color }"
44
+ >
45
+ {{ item[textField] || '' }}
46
+ </view>
47
+ <image
48
+ :src="item[imgField]"
49
+ class="up-fab-img"
50
+ v-else
51
+ :style="{ width: (item.imgWidth || 64) + 'rpx', height: (item.imgHeight || 64) + 'rpx' }"
52
+ ></image>
53
+ </view>
54
+ </view>
55
+ </view>
56
+ <view
57
+ class="up-fab-item"
58
+ :class="{ 'up-active': isOpen }"
59
+ :style="{ width: width + 'rpx', height: height + 'rpx', borderRadius: radius, background: getBgColor, color: color }"
60
+ @tap.stop="handleClick(-1)"
61
+ >
62
+ <text class="up-fab-icon up-icon-plus" v-if="!custom"></text>
63
+ <slot></slot>
64
+ </view>
65
+ </view>
66
+ <view class="up-fab-mask" :style="getZIndex" :class="{ 'up-visible': isOpen }" @tap="handleClickCancel"></view>
67
+ </view>
68
+ </template>
69
+
70
+ <script>
71
+ //拓展出来的按钮不应多于6个,否则违反了作为悬浮按钮的快速、高效的原则
72
+ export default {
73
+ name: 'tuiFab',
74
+ emits: ['click'],
75
+ props: {
76
+ //rpx 为0时值为auto
77
+ left: {
78
+ type: [Number, String],
79
+ default: 0
80
+ },
81
+ //rpx 当为0时且left不为0,值为auto
82
+ right: {
83
+ type: [Number, String],
84
+ default: 80
85
+ },
86
+ //rpx bottom值
87
+ bottom: {
88
+ type: [Number, String],
89
+ default: 100
90
+ },
91
+ //rpx top值
92
+ top: {
93
+ type: [Number, String],
94
+ default: 0
95
+ },
96
+ zIndex: {
97
+ type: [Number, String],
98
+ default: 997
99
+ },
100
+ //默认按钮 宽度 rpx
101
+ width: {
102
+ type: [Number, String],
103
+ default: 108
104
+ },
105
+ //默认按钮 高度 rpx
106
+ height: {
107
+ type: [Number, String],
108
+ default: 108
109
+ },
110
+ //圆角值
111
+ radius: {
112
+ type: String,
113
+ default: '50%'
114
+ },
115
+ //默认按钮自定义内容[替换加号]
116
+ custom: {
117
+ type: Boolean,
118
+ default: false
119
+ },
120
+ //默认按钮背景颜色
121
+ bgColor: {
122
+ type: String,
123
+ default: ''
124
+ },
125
+ //字体颜色
126
+ color: {
127
+ type: String,
128
+ default: '#fff'
129
+ },
130
+ btnList: {
131
+ type: Array,
132
+ default() {
133
+ return [];
134
+ }
135
+ },
136
+ textField: {
137
+ type: String,
138
+ default: 'text'
139
+ },
140
+ imgField: {
141
+ type: String,
142
+ default: 'imgUrl'
143
+ },
144
+ size: {
145
+ type: [Number, String],
146
+ default: 28
147
+ },
148
+ //点击遮罩 是否可关闭
149
+ maskClosable: {
150
+ type: Boolean,
151
+ default: false
152
+ }
153
+ },
154
+ computed: {
155
+ getBgColor() {
156
+ return this.bgColor || (uni && uni.$tui && uni.$tui.color.primary) || '#5677fc';
157
+ },
158
+ getStyles() {
159
+ let style = `z-index:${this.zIndex};`;
160
+ if (this.left && this.right == 0) {
161
+ style += `left:${this.left}rpx;`;
162
+ } else {
163
+ style += `right:${this.right}rpx;`;
164
+ }
165
+
166
+ if (this.bottom && this.top == 0) {
167
+ style += `bottom:${this.bottom}rpx;`;
168
+ } else {
169
+ style += `top:${this.top}rpx;`;
170
+ }
171
+ return style;
172
+ },
173
+ getZIndex() {
174
+ return Number(this.zIndex) - 2;
175
+ }
176
+ },
177
+ data() {
178
+ return {
179
+ isOpen: false,
180
+ isHidden: true,
181
+ timer: null
182
+ };
183
+ },
184
+ // #ifndef VUE3
185
+ beforeDestroy() {
186
+ clearTimeout(this.timer);
187
+ this.timer = null;
188
+ },
189
+ // #endif
190
+ // #ifdef VUE3
191
+ beforeUnmount() {
192
+ clearTimeout(this.timer);
193
+ this.timer = null;
194
+ },
195
+ // #endif
196
+ methods: {
197
+ handleClick: function (index) {
198
+ this.isHidden = false;
199
+ clearTimeout(this.timer);
200
+ if (index == -1 && this.btnList.length) {
201
+ this.isOpen = !this.isOpen;
202
+ } else {
203
+ this.$emit('click', {
204
+ index: index
205
+ });
206
+ this.isOpen = false;
207
+ }
208
+ if (!this.isOpen) {
209
+ this.timer = setTimeout(() => {
210
+ this.isHidden = true;
211
+ }, 200);
212
+ }
213
+ },
214
+ handleClickCancel: function () {
215
+ if (!this.maskClosable) return;
216
+ this.isOpen = false;
217
+ }
218
+ }
219
+ };
220
+ </script>
221
+
222
+ <style scoped>
223
+ @font-face {
224
+ font-family: 'tuifab';
225
+ src: url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAAREAA0AAAAABnAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAEKAAAABoAAAAciPExJUdERUYAAAQIAAAAHgAAAB4AKQAKT1MvMgAAAaAAAABCAAAAVjyBSAVjbWFwAAAB9AAAAD4AAAFCAA/pvmdhc3AAAAQAAAAACAAAAAj//wADZ2x5ZgAAAkAAAABRAAAAYFkYQQNoZWFkAAABMAAAADAAAAA2Fm5OF2hoZWEAAAFgAAAAHQAAACQH3QOFaG10eAAAAeQAAAAPAAAAEAwAAANsb2NhAAACNAAAAAoAAAAKADAAAG1heHAAAAGAAAAAHwAAACABDwAobmFtZQAAApQAAAFJAAACiCnmEVVwb3N0AAAD4AAAAB8AAAAx2XRuznjaY2BkYGAAYtGolt54fpuvDNwsDCBwc1krH5xm/t/I/J+5FsjlYGACiQIAGAEKZHjaY2BkYGBu+N/AEMPCAALM/xkYGVABCwBZ4wNrAAAAeNpjYGRgYGBhkGEA0QwMTEDMBYQMDP/BfAYAC4kBOAB42mNgZGFgnMDAysDA1Ml0hoGBoR9CM75mMGLkAIoysDIzYAUBaa4pDA7PhJ8JMzf8b2CIYW5gaAAKM4LkAN21DAEAAHjaY2GAABYIZgYAAIMAEAB42mNgYGBmgGAZBkYGELAB8hjBfBYGBSDNAoRA/jPh//8hpOQHqEoGRjYGGJOBkQlIMDGgAkaGYQ8AUSIHswAAAAAAAAAAAAAAMAAAeNpjYGRg/t/I/J+5lkGagYFRUVCPUYmNXVCRj1FETFxRUI7RyMxcUNGO0USN+fS/HEY5XTnGfznicnLijFPAHMYpYnJyjFvBlBgWBQBNJxKpAAAAeNp9kD1OAzEQhZ/zByQSQiCoXVEA2vyUKRMp9Ailo0g23pBo1155nUg5AS0VB6DlGByAGyDRcgpelkmTImvt6PObmeexAZzjGwr/3yXuhBWO8ShcwREy4Sr1F+Ea+V24jhY+hRvUf4SbuFUD4RYu1BsdVO2Eu5vSbcsKZxgIV3CKJ+Eq9ZVwjfwqXMcVPoQb1L+EmxjjV7iFa2WpDOFhMEFgnEFjig3jAjEcLJIyBtahOfRmEsxMTzd6ETubOBso71dilwMeaDnngCntPbdmvkon/mDLgdSYbh4FS7YpjS4idCgbXyyc1d2oc7D9nu22tNi/a4E1x+xRDWzU/D3bM9JIbAyvkJI18jK3pBJTj2hrrPG7ZynW814IiU68y/SIx5o0dTr3bmniwOLn8owcfbS5kj33qBw+Y1kIeb/dTsQgil2GP5PYcRkAAAB42mNgYoAALjDJyIAOWMCiTIxMbFmZiRmJ+QALXAKKAAAAAAH//wACAAEAAAAMAAAAFgAAAAIAAQADAAMAAQAEAAAAAgAAAAB42mNgYGBkAIKrS9Q5QPTNZa18MBoAPbcFzgAA)
226
+ format('woff');
227
+ font-weight: normal;
228
+ font-style: normal;
229
+ }
230
+
231
+ .up-fab-icon {
232
+ font-family: 'tuifab' !important;
233
+ font-style: normal;
234
+ -webkit-font-smoothing: antialiased;
235
+ -moz-osx-font-smoothing: grayscale;
236
+ padding: 10rpx;
237
+ }
238
+
239
+ .up-icon-plus:before {
240
+ content: '\e613';
241
+ }
242
+
243
+ .up-fab-box {
244
+ display: flex;
245
+ justify-content: center;
246
+ position: fixed;
247
+ }
248
+
249
+ .up-fab__box-bottom {
250
+ flex-direction: column;
251
+ }
252
+
253
+ .up-fab__box-top {
254
+ flex-direction: column-reverse;
255
+ }
256
+
257
+ .up-fab-right {
258
+ align-items: flex-end;
259
+ }
260
+
261
+ .up-fab-btn {
262
+ transform: scale(0);
263
+ transition: all 0.2s ease-in-out;
264
+ opacity: 0;
265
+ visibility: hidden;
266
+ }
267
+
268
+ .up-fab-hidden {
269
+ height: 0;
270
+ width: 0;
271
+ }
272
+
273
+ .up-fab-item-box {
274
+ display: flex;
275
+ align-items: center;
276
+ justify-content: flex-end;
277
+ }
278
+
279
+ .up-fab__pb40 {
280
+ padding-bottom: 40rpx;
281
+ }
282
+
283
+ .up-fab__pt40 {
284
+ padding-top: 40rpx;
285
+ }
286
+
287
+ .up-fab-item-left {
288
+ flex-flow: row-reverse;
289
+ }
290
+
291
+ .up-fab-title {
292
+ width: 90%;
293
+ text-align: center;
294
+ white-space: nowrap;
295
+ overflow: hidden;
296
+ text-overflow: ellipsis;
297
+ }
298
+
299
+ .up-text-left {
300
+ padding-left: 28rpx;
301
+ }
302
+
303
+ .up-text-right {
304
+ padding-right: 28rpx;
305
+ }
306
+
307
+ .up-fab-img {
308
+ display: block;
309
+ }
310
+
311
+ .up-fab-item {
312
+ display: flex;
313
+ align-items: center;
314
+ justify-content: center;
315
+ box-shadow: 0 0 5px 2px rgba(0, 0, 0, 0.1);
316
+ transition: all 0.2s linear;
317
+ }
318
+
319
+ .up-radius {
320
+ border-radius: 50%;
321
+ }
322
+
323
+ .up-active {
324
+ transform: rotate(135deg);
325
+ }
326
+
327
+ .up-fab-mask {
328
+ position: fixed;
329
+ top: 0;
330
+ left: 0;
331
+ right: 0;
332
+ bottom: 0;
333
+ background: rgba(0, 0, 0, 0.75);
334
+ transition: all 0.2s ease-in-out;
335
+ opacity: 0;
336
+ visibility: hidden;
337
+ }
338
+
339
+ .up-visible {
340
+ visibility: visible;
341
+ opacity: 1;
342
+ transform: scale(1);
343
+ }
344
+ </style>