@didaoktv/didaoui-uniapp 1.0.0 → 1.2.0
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 +16 -7
- package/components/dd-action-sheet/dd-action-sheet.vue +3 -3
- package/components/dd-album/album.js +19 -0
- package/components/dd-album/dd-album.vue +345 -0
- package/components/dd-album/props.js +89 -0
- package/components/dd-avatar/avatar.js +19 -0
- package/components/dd-avatar/dd-avatar.vue +172 -160
- package/components/dd-avatar/props.js +84 -0
- package/components/dd-avatar-group/avatarGroup.js +14 -0
- package/components/dd-avatar-group/dd-avatar-group.vue +110 -0
- package/components/dd-avatar-group/props.js +57 -0
- package/components/dd-badge/dd-badge.vue +2 -2
- package/components/dd-barcode/dd-barcode.vue +1030 -0
- package/components/dd-bill-detail/dd-bill-detail.vue +265 -0
- package/components/dd-button/dd-button.vue +17 -17
- package/components/dd-calendar/dd-calendar.vue +357 -0
- package/components/dd-canvas/dd-canvas.vue +1088 -0
- package/components/dd-capsule-button/dd-capsule-button.vue +6 -6
- package/components/dd-car-keyboard/carKeyboard.js +6 -0
- package/components/dd-car-keyboard/dd-car-keyboard.vue +315 -0
- package/components/dd-car-keyboard/props.js +19 -0
- package/components/dd-cascader/dd-cascader.vue +405 -0
- package/components/dd-cell/dd-cell.vue +50 -23
- package/components/dd-cell-group/dd-cell-group.vue +32 -25
- package/components/dd-champion-card/dd-champion-card.vue +4 -4
- package/components/dd-checkbox/dd-checkbox.vue +30 -39
- package/components/dd-checkbox-group/dd-checkbox-group.vue +67 -0
- package/components/dd-copy/dd-copy.vue +74 -0
- package/components/dd-coupon/dd-coupon.vue +368 -0
- package/components/dd-cropper/dd-cropper.vue +1297 -0
- package/components/dd-dialog/dd-dialog.vue +1 -1
- package/components/dd-divider/dd-divider.vue +3 -3
- package/components/dd-dropdown-item/dd-dropdown-item.vue +5 -5
- package/components/dd-empty-state/dd-empty-state.vue +1 -1
- package/components/dd-field/dd-field.vue +531 -106
- package/components/dd-form/dd-form.vue +116 -0
- package/components/dd-form/rules.ts +84 -0
- package/components/dd-goods-sku/dd-goods-sku.vue +434 -0
- package/components/dd-icon/dd-icon.vue +2 -2
- package/components/dd-image/dd-image.vue +4 -4
- package/components/dd-input/dd-input.vue +5 -5
- package/components/dd-keyboard/dd-keyboard.vue +178 -0
- package/components/dd-keyboard/keyboard.js +22 -0
- package/components/dd-keyboard/props.js +89 -0
- package/components/dd-link/dd-link.vue +87 -0
- package/components/dd-link/link.js +18 -0
- package/components/dd-link/props.js +44 -0
- package/components/dd-list-cell/dd-list-cell.vue +4 -4
- package/components/dd-loading/dd-loading.vue +1 -1
- package/components/dd-loadmore/dd-loadmore.vue +2 -2
- package/components/dd-markdown/dd-markdown.vue +344 -0
- package/components/dd-markdown/marked.esm.mjs +7 -0
- package/components/dd-mini-program-navbar/dd-mini-program-navbar.vue +9 -9
- package/components/dd-navigation/dd-navigation.vue +5 -5
- package/components/dd-number-keyboard/dd-number-keyboard.vue +200 -0
- package/components/dd-number-keyboard/numberKeyboard.js +8 -0
- package/components/dd-number-keyboard/props.js +24 -0
- package/components/dd-parse/dd-parse.vue +534 -0
- package/components/dd-parse/node/handler.wxs +26 -0
- package/components/dd-parse/node/node.vue +603 -0
- package/components/dd-parse/parse.js +13 -0
- package/components/dd-parse/parser.js +1400 -0
- package/components/dd-parse/props.js +57 -0
- package/components/dd-popover/dd-popover.vue +10 -10
- package/components/dd-popover-item/dd-popover-item.vue +3 -3
- package/components/dd-popup/dd-popup.vue +5 -5
- package/components/dd-poster/dd-poster.vue +695 -0
- package/components/dd-progress/dd-progress.vue +3 -3
- package/components/dd-pull-refresh/dd-pull-refresh.vue +3 -3
- package/components/dd-qrcode/dd-qrcode.vue +509 -0
- package/components/dd-qrcode/qrcode.js +1283 -0
- package/components/dd-radio/dd-radio.vue +19 -20
- package/components/dd-radio-group/dd-radio-group.vue +53 -0
- package/components/dd-rate/dd-rate.vue +1 -1
- package/components/dd-room-card/dd-room-card.vue +3 -3
- package/components/dd-search-bar/dd-search-bar.vue +8 -8
- package/components/dd-segmented-tab/dd-segmented-tab.vue +6 -6
- package/components/dd-signature/dd-signature.vue +513 -0
- package/components/dd-skeleton/dd-skeleton.vue +1 -1
- package/components/dd-slider/dd-slider.vue +4 -4
- package/components/dd-stat-card/dd-stat-card.vue +5 -5
- package/components/dd-step/dd-step.vue +11 -11
- package/components/dd-stepper/dd-stepper.vue +6 -6
- package/components/dd-swipe-action/dd-swipe-action.vue +1 -1
- package/components/dd-swipeable-tab/dd-swipeable-tab.vue +1 -1
- package/components/dd-tabbar-item/dd-tabbar-item.vue +8 -8
- package/components/dd-tag/dd-tag.vue +17 -1
- package/components/dd-text/dd-text.vue +250 -0
- package/components/dd-text/props.js +120 -0
- package/components/dd-text/text.js +30 -0
- package/components/dd-text/value.js +87 -0
- package/components/dd-toast/dd-toast.vue +2 -2
- package/components/dd-upload/dd-upload.vue +4 -4
- package/components/dd-workorder-card/dd-workorder-card.vue +237 -0
- package/index.ts +50 -9
- package/libs/config/color.js +16 -0
- package/libs/config/config.js +25 -0
- package/libs/config/props.js +185 -0
- package/libs/config/zIndex.js +20 -0
- package/libs/function/digit.js +167 -0
- package/libs/function/index.js +932 -0
- package/libs/function/test.js +327 -0
- package/libs/i18n/index.d.ts +2 -0
- package/libs/i18n/index.js +89 -0
- package/libs/i18n/locales/zh-Hans.js +86 -0
- package/libs/mixin/button.js +18 -0
- package/libs/mixin/mixin.js +44 -0
- package/libs/mixin/mpMixin.js +13 -0
- package/libs/mixin/openType.js +27 -0
- package/libs/utils.ts +462 -0
- package/libs/vue.js +3 -0
- package/package.json +1 -1
- package/scss/_dd-shared.scss +40 -0
- package/scss/_variables.scss +4 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<!-- dd-popup 用 v-model+position;show prop 经 popupShow 透传,收起时仅抛 close 由父级置 false -->
|
|
3
|
+
<dd-popup
|
|
4
|
+
v-model="popupShow"
|
|
5
|
+
:overlay="overlay"
|
|
6
|
+
:close-on-click-overlay="closeOnClickOverlay"
|
|
7
|
+
position="bottom"
|
|
8
|
+
:safe-area-inset-bottom="safeAreaInsetBottom"
|
|
9
|
+
@close="popupClose"
|
|
10
|
+
:z-index="zIndex"
|
|
11
|
+
>
|
|
12
|
+
<view class="dd-keyboard">
|
|
13
|
+
<slot />
|
|
14
|
+
<view
|
|
15
|
+
class="dd-keyboard__tooltip"
|
|
16
|
+
v-if="tooltip"
|
|
17
|
+
>
|
|
18
|
+
<view
|
|
19
|
+
hover-class="dd-keyboard-hover"
|
|
20
|
+
:hover-stay-time="100"
|
|
21
|
+
>
|
|
22
|
+
<text
|
|
23
|
+
class="dd-keyboard__tooltip__item dd-keyboard__tooltip__cancel"
|
|
24
|
+
v-if="showCancel"
|
|
25
|
+
@tap="onCancel"
|
|
26
|
+
>{{showCancel && cancelText}}</text>
|
|
27
|
+
</view>
|
|
28
|
+
<view>
|
|
29
|
+
<text
|
|
30
|
+
v-if="showTips"
|
|
31
|
+
class="dd-keyboard__tooltip__item dd-keyboard__tooltip__tips"
|
|
32
|
+
>{{tips ? tips : mode == 'number' ? '数字键盘' : mode == 'card' ? '身份证键盘' : '车牌号键盘'}}</text>
|
|
33
|
+
</view>
|
|
34
|
+
<view
|
|
35
|
+
hover-class="dd-keyboard-hover"
|
|
36
|
+
:hover-stay-time="100"
|
|
37
|
+
>
|
|
38
|
+
<text
|
|
39
|
+
v-if="showConfirm"
|
|
40
|
+
@tap="onConfirm"
|
|
41
|
+
class="dd-keyboard__tooltip__item dd-keyboard__tooltip__submit"
|
|
42
|
+
>{{showConfirm && confirmText}}</text>
|
|
43
|
+
</view>
|
|
44
|
+
</view>
|
|
45
|
+
<template v-if="mode == 'number' || mode == 'card'">
|
|
46
|
+
<dd-number-keyboard
|
|
47
|
+
:random="random"
|
|
48
|
+
@backspace="backspace"
|
|
49
|
+
@change="change"
|
|
50
|
+
:mode="mode"
|
|
51
|
+
:dotDisabled="dotDisabled"
|
|
52
|
+
></dd-number-keyboard>
|
|
53
|
+
</template>
|
|
54
|
+
<template v-else>
|
|
55
|
+
<dd-car-keyboard
|
|
56
|
+
:random="random"
|
|
57
|
+
:autoChange="autoChange"
|
|
58
|
+
@backspace="backspace"
|
|
59
|
+
@change="change"
|
|
60
|
+
></dd-car-keyboard>
|
|
61
|
+
</template>
|
|
62
|
+
</view>
|
|
63
|
+
</dd-popup>
|
|
64
|
+
</template>
|
|
65
|
+
|
|
66
|
+
<script>
|
|
67
|
+
import { props } from './props';
|
|
68
|
+
import { mpMixin } from '../../libs/mixin/mpMixin';
|
|
69
|
+
import { mixin } from '../../libs/mixin/mixin';
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* keyboard 键盘
|
|
73
|
+
* @description 自定义的键盘面板,内含了数字键盘,车牌号键,身份证号键盘3种模式,都有可以打乱按键顺序的选项。
|
|
74
|
+
* @property {String} mode 键盘类型,见官网基本使用的说明 (默认 'number' )
|
|
75
|
+
* @property {Boolean} dotDisabled 是否显示"."按键,只在mode=number时有效 (默认 false )
|
|
76
|
+
* @property {Boolean} tooltip 是否显示键盘顶部工具条 (默认 true )
|
|
77
|
+
* @property {Boolean} showTips 是否显示工具条中间的提示 (默认 true )
|
|
78
|
+
* @property {String} tips 工具条中间的提示文字,见上方基本使用的说明,如不需要,请传""空字符
|
|
79
|
+
* @property {Boolean} showCancel 是否显示工具条左边的"取消"按钮 (默认 true )
|
|
80
|
+
* @property {Boolean} showConfirm 是否显示工具条右边的"完成"按钮( 默认 true )
|
|
81
|
+
* @property {Boolean} random 是否打乱键盘按键的顺序 (默认 false )
|
|
82
|
+
* @property {Boolean} safeAreaInsetBottom 是否开启底部安全区适配 (默认 true )
|
|
83
|
+
* @property {Boolean} closeOnClickOverlay 是否允许点击遮罩收起键盘 (默认 true )
|
|
84
|
+
* @property {Boolean} show 控制键盘的弹出与收起(默认 false )
|
|
85
|
+
* @property {Boolean} overlay 是否显示遮罩 (默认 true )
|
|
86
|
+
* @property {String | Number} zIndex 弹出键盘的z-index值 (默认 1075 )
|
|
87
|
+
* @property {String} cancelText 取消按钮的文字 (默认 '取消' )
|
|
88
|
+
* @property {String} confirmText 确认按钮的文字 (默认 '确认' )
|
|
89
|
+
* @property {Object} customStyle 自定义样式,对象形式
|
|
90
|
+
* @event {Function} change 按键被点击(不包含退格键被点击)
|
|
91
|
+
* @event {Function} cancel 键盘顶部工具条左边的"取消"按钮被点击
|
|
92
|
+
* @event {Function} confirm 键盘顶部工具条右边的"完成"按钮被点击
|
|
93
|
+
* @event {Function} backspace 键盘退格键被点击
|
|
94
|
+
* @example <dd-keyboard mode="number" v-model="show"></dd-keyboard>
|
|
95
|
+
*/
|
|
96
|
+
export default {
|
|
97
|
+
name: "dd-keyboard",
|
|
98
|
+
data() {
|
|
99
|
+
return {
|
|
100
|
+
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
mixins: [mpMixin, mixin, props],
|
|
104
|
+
computed: {
|
|
105
|
+
// ponytail: 剥离运行时主题;面板底色由 dd-popup($dd-bg-elevated)承担
|
|
106
|
+
popupShow: {
|
|
107
|
+
get() {
|
|
108
|
+
return this.show;
|
|
109
|
+
},
|
|
110
|
+
set(val) {
|
|
111
|
+
if (!val) this.$emit('close');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
emits: ["change", "close", "confirm", "cancel", "backspace"],
|
|
116
|
+
methods: {
|
|
117
|
+
change(e) {
|
|
118
|
+
this.$emit('change', e);
|
|
119
|
+
},
|
|
120
|
+
// 键盘关闭
|
|
121
|
+
popupClose() {
|
|
122
|
+
this.$emit('close');
|
|
123
|
+
},
|
|
124
|
+
// 输入完成
|
|
125
|
+
onConfirm() {
|
|
126
|
+
this.$emit('confirm');
|
|
127
|
+
},
|
|
128
|
+
// 取消输入
|
|
129
|
+
onCancel() {
|
|
130
|
+
this.$emit('cancel');
|
|
131
|
+
},
|
|
132
|
+
// 退格键
|
|
133
|
+
backspace() {
|
|
134
|
+
this.$emit('backspace');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
</script>
|
|
139
|
+
|
|
140
|
+
<style lang="scss" scoped>
|
|
141
|
+
@import '../../scss/variables';
|
|
142
|
+
@import '../../scss/dd-shared';
|
|
143
|
+
|
|
144
|
+
.dd-keyboard {
|
|
145
|
+
// 工具条按钮点击反馈(text 不支持 hover-class,由外层 view 承担)
|
|
146
|
+
.dd-keyboard-hover {
|
|
147
|
+
opacity: 0.7;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
&__tooltip {
|
|
151
|
+
@include flex;
|
|
152
|
+
justify-content: space-between;
|
|
153
|
+
background-color: $dd-bg-elevated;
|
|
154
|
+
padding: 14px 12px;
|
|
155
|
+
|
|
156
|
+
&__item {
|
|
157
|
+
color: $dd-text-primary;
|
|
158
|
+
flex: 1;
|
|
159
|
+
text-align: center;
|
|
160
|
+
font-size: 15px;
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
&__submit {
|
|
164
|
+
text-align: right;
|
|
165
|
+
color: $dd-primary-400;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
&__cancel {
|
|
169
|
+
text-align: left;
|
|
170
|
+
color: $dd-text-tertiary;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
&__tips {
|
|
174
|
+
color: $dd-text-tertiary;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
</style>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { t } from '../../libs/i18n'
|
|
2
|
+
export default {
|
|
3
|
+
// 键盘组件
|
|
4
|
+
keyboard: {
|
|
5
|
+
mode: 'number',
|
|
6
|
+
dotDisabled: false,
|
|
7
|
+
tooltip: true,
|
|
8
|
+
showTips: true,
|
|
9
|
+
tips: '',
|
|
10
|
+
showCancel: true,
|
|
11
|
+
showConfirm: true,
|
|
12
|
+
random: false,
|
|
13
|
+
safeAreaInsetBottom: true,
|
|
14
|
+
closeOnClickOverlay: true,
|
|
15
|
+
show: false,
|
|
16
|
+
overlay: true,
|
|
17
|
+
zIndex: 10075,
|
|
18
|
+
cancelText: t("dd.common.cancel"),
|
|
19
|
+
confirmText: t("dd.common.confirm"),
|
|
20
|
+
autoChange: false
|
|
21
|
+
}
|
|
22
|
+
}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { defineMixin } from '../../libs/vue'
|
|
2
|
+
import KeyboardDefaultProps from './keyboard'
|
|
3
|
+
import { registerComponentProps } from '../../libs/config/props.js'
|
|
4
|
+
|
|
5
|
+
const defProps = registerComponentProps(KeyboardDefaultProps)
|
|
6
|
+
export const props = defineMixin({
|
|
7
|
+
props: {
|
|
8
|
+
// 键盘的类型,number-数字键盘,card-身份证键盘,car-车牌号键盘
|
|
9
|
+
mode: {
|
|
10
|
+
type: String,
|
|
11
|
+
default: () => defProps.keyboard.mode
|
|
12
|
+
},
|
|
13
|
+
// 是否显示键盘的"."符号
|
|
14
|
+
dotDisabled: {
|
|
15
|
+
type: Boolean,
|
|
16
|
+
default: () => defProps.keyboard.dotDisabled
|
|
17
|
+
},
|
|
18
|
+
// 是否显示顶部工具条
|
|
19
|
+
tooltip: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: () => defProps.keyboard.tooltip
|
|
22
|
+
},
|
|
23
|
+
// 是否显示工具条中间的提示
|
|
24
|
+
showTips: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: () => defProps.keyboard.showTips
|
|
27
|
+
},
|
|
28
|
+
// 工具条中间的提示文字
|
|
29
|
+
tips: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: () => defProps.keyboard.tips
|
|
32
|
+
},
|
|
33
|
+
// 是否显示工具条左边的"取消"按钮
|
|
34
|
+
showCancel: {
|
|
35
|
+
type: Boolean,
|
|
36
|
+
default: () => defProps.keyboard.showCancel
|
|
37
|
+
},
|
|
38
|
+
// 是否显示工具条右边的"完成"按钮
|
|
39
|
+
showConfirm: {
|
|
40
|
+
type: Boolean,
|
|
41
|
+
default: () => defProps.keyboard.showConfirm
|
|
42
|
+
},
|
|
43
|
+
// 是否打乱键盘按键的顺序
|
|
44
|
+
random: {
|
|
45
|
+
type: Boolean,
|
|
46
|
+
default: () => defProps.keyboard.random
|
|
47
|
+
},
|
|
48
|
+
// 是否开启底部安全区适配,开启的话,会在iPhoneX机型底部添加一定的内边距
|
|
49
|
+
safeAreaInsetBottom: {
|
|
50
|
+
type: Boolean,
|
|
51
|
+
default: () => defProps.keyboard.safeAreaInsetBottom
|
|
52
|
+
},
|
|
53
|
+
// 是否允许通过点击遮罩关闭键盘
|
|
54
|
+
closeOnClickOverlay: {
|
|
55
|
+
type: Boolean,
|
|
56
|
+
default: () => defProps.keyboard.closeOnClickOverlay
|
|
57
|
+
},
|
|
58
|
+
// 控制键盘的弹出与收起
|
|
59
|
+
show: {
|
|
60
|
+
type: Boolean,
|
|
61
|
+
default: () => defProps.keyboard.show
|
|
62
|
+
},
|
|
63
|
+
// 是否显示遮罩,某些时候数字键盘时,用户希望看到自己的数值,所以可能不想要遮罩
|
|
64
|
+
overlay: {
|
|
65
|
+
type: Boolean,
|
|
66
|
+
default: () => defProps.keyboard.overlay
|
|
67
|
+
},
|
|
68
|
+
// z-index值
|
|
69
|
+
zIndex: {
|
|
70
|
+
type: [String, Number],
|
|
71
|
+
default: () => defProps.keyboard.zIndex
|
|
72
|
+
},
|
|
73
|
+
// 取消按钮的文字
|
|
74
|
+
cancelText: {
|
|
75
|
+
type: String,
|
|
76
|
+
default: () => defProps.keyboard.cancelText
|
|
77
|
+
},
|
|
78
|
+
// 确认按钮的文字
|
|
79
|
+
confirmText: {
|
|
80
|
+
type: String,
|
|
81
|
+
default: () => defProps.keyboard.confirmText
|
|
82
|
+
},
|
|
83
|
+
// 输入一个中文后,是否自动切换到英文
|
|
84
|
+
autoChange: {
|
|
85
|
+
type: Boolean,
|
|
86
|
+
default: () => defProps.keyboard.autoChange
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
})
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<text
|
|
3
|
+
class="dd-link"
|
|
4
|
+
@tap.stop="openLink"
|
|
5
|
+
:style="[linkStyle, addStyle(customStyle)]"
|
|
6
|
+
>{{text}}</text>
|
|
7
|
+
</template>
|
|
8
|
+
|
|
9
|
+
<script>
|
|
10
|
+
import { props } from './props';
|
|
11
|
+
import { mpMixin } from '../../libs/mixin/mpMixin';
|
|
12
|
+
import { mixin } from '../../libs/mixin/mixin';
|
|
13
|
+
import { addStyle, addUnit, getPx, toast } from '../../libs/function/index';
|
|
14
|
+
/**
|
|
15
|
+
* link 超链接
|
|
16
|
+
* @description 该组件为超链接组件,在不同平台有不同表现形式:在APP平台会通过plus环境打开内置浏览器,在小程序中把链接复制到粘贴板,同时提示信息,在H5中通过window.open打开链接。
|
|
17
|
+
* @property {String} color 文字颜色 (默认 color['primary'] )
|
|
18
|
+
* @property {String | Number} fontSize 字体大小,单位px (默认 15 )
|
|
19
|
+
* @property {Boolean} underLine 是否显示下划线 (默认 false )
|
|
20
|
+
* @property {String} href 跳转的链接,要带上http(s)
|
|
21
|
+
* @property {String} mpTips 各个小程序平台把链接复制到粘贴板后的提示语(默认“链接已复制,请在浏览器打开”)
|
|
22
|
+
* @property {String} lineColor 下划线颜色,默认同color参数颜色
|
|
23
|
+
* @property {String} text 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色
|
|
24
|
+
* @property {Object} customStyle 定义需要用到的外部样式
|
|
25
|
+
*
|
|
26
|
+
* @example <dd-link href="https://didaoktv.com">蜀道难,难于上青天</dd-link>
|
|
27
|
+
*/
|
|
28
|
+
export default {
|
|
29
|
+
name: "dd-link",
|
|
30
|
+
mixins: [mpMixin, mixin, props],
|
|
31
|
+
computed: {
|
|
32
|
+
linkStyle() {
|
|
33
|
+
const style = {
|
|
34
|
+
color: this.color,
|
|
35
|
+
fontSize: addUnit(this.fontSize),
|
|
36
|
+
// line-height设置为比字体大小多2px
|
|
37
|
+
lineHeight: addUnit(getPx(this.fontSize) + 2),
|
|
38
|
+
textDecoration: this.underLine ? 'underline' : 'none'
|
|
39
|
+
}
|
|
40
|
+
// if (this.underLine) {
|
|
41
|
+
// style.borderBottomColor = this.lineColor || this.color
|
|
42
|
+
// style.borderBottomWidth = '1px'
|
|
43
|
+
// }
|
|
44
|
+
return style
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
emits: ["click"],
|
|
48
|
+
methods: {
|
|
49
|
+
addStyle,
|
|
50
|
+
openLink() {
|
|
51
|
+
// #ifdef APP-PLUS
|
|
52
|
+
plus.runtime.openURL(this.href)
|
|
53
|
+
// #endif
|
|
54
|
+
// #ifdef H5
|
|
55
|
+
window.open(this.href)
|
|
56
|
+
// #endif
|
|
57
|
+
// #ifdef MP
|
|
58
|
+
uni.setClipboardData({
|
|
59
|
+
data: this.href,
|
|
60
|
+
success: () => {
|
|
61
|
+
uni.hideToast();
|
|
62
|
+
this.$nextTick(() => {
|
|
63
|
+
toast(this.mpTips);
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
// #endif
|
|
68
|
+
this.$emit('click')
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
</script>
|
|
73
|
+
|
|
74
|
+
<style lang="scss" scoped>
|
|
75
|
+
@import '../../scss/variables';
|
|
76
|
+
@import '../../scss/dd-shared';
|
|
77
|
+
$dd-link-line-height:1 !default;
|
|
78
|
+
|
|
79
|
+
.dd-link {
|
|
80
|
+
/* #ifndef APP-NVUE */
|
|
81
|
+
line-height: $dd-link-line-height;
|
|
82
|
+
/* #endif */
|
|
83
|
+
@include flex;
|
|
84
|
+
flex-wrap: wrap;
|
|
85
|
+
flex: 1;
|
|
86
|
+
}
|
|
87
|
+
</style>
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import config from '../../libs/config/config'
|
|
2
|
+
import { t } from '../../libs/i18n'
|
|
3
|
+
|
|
4
|
+
const {
|
|
5
|
+
color
|
|
6
|
+
} = config
|
|
7
|
+
export default {
|
|
8
|
+
// link超链接组件props参数
|
|
9
|
+
link: {
|
|
10
|
+
color: color['primary'],
|
|
11
|
+
fontSize: 15,
|
|
12
|
+
underLine: false,
|
|
13
|
+
href: '',
|
|
14
|
+
mpTips: t("dd.link.copyed"),
|
|
15
|
+
lineColor: '',
|
|
16
|
+
text: ''
|
|
17
|
+
}
|
|
18
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { defineMixin } from '../../libs/vue'
|
|
2
|
+
import LinkDefaultProps from './link'
|
|
3
|
+
import { registerComponentProps } from '../../libs/config/props.js'
|
|
4
|
+
|
|
5
|
+
const defProps = registerComponentProps(LinkDefaultProps)
|
|
6
|
+
export const props = defineMixin({
|
|
7
|
+
props: {
|
|
8
|
+
// 文字颜色
|
|
9
|
+
color: {
|
|
10
|
+
type: String,
|
|
11
|
+
default: () => defProps.link.color
|
|
12
|
+
},
|
|
13
|
+
// 字体大小,单位px
|
|
14
|
+
fontSize: {
|
|
15
|
+
type: [String, Number],
|
|
16
|
+
default: () => defProps.link.fontSize
|
|
17
|
+
},
|
|
18
|
+
// 是否显示下划线
|
|
19
|
+
underLine: {
|
|
20
|
+
type: Boolean,
|
|
21
|
+
default: () => defProps.link.underLine
|
|
22
|
+
},
|
|
23
|
+
// 要跳转的链接
|
|
24
|
+
href: {
|
|
25
|
+
type: String,
|
|
26
|
+
default: () => defProps.link.href
|
|
27
|
+
},
|
|
28
|
+
// 小程序中复制到粘贴板的提示语
|
|
29
|
+
mpTips: {
|
|
30
|
+
type: String,
|
|
31
|
+
default: () => defProps.link.mpTips
|
|
32
|
+
},
|
|
33
|
+
// 下划线颜色
|
|
34
|
+
lineColor: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: () => defProps.link.lineColor
|
|
37
|
+
},
|
|
38
|
+
// 超链接的问题,不使用slot形式传入,是因为nvue下无法修改颜色
|
|
39
|
+
text: {
|
|
40
|
+
type: String,
|
|
41
|
+
default: () => defProps.link.text
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
})
|
|
@@ -71,7 +71,7 @@ function onClick(e: Event) {
|
|
|
71
71
|
display: flex;
|
|
72
72
|
flex-direction: row;
|
|
73
73
|
align-items: center;
|
|
74
|
-
min-height:
|
|
74
|
+
min-height: $dd-space-7;
|
|
75
75
|
padding: 0 $dd-space-4;
|
|
76
76
|
box-sizing: border-box;
|
|
77
77
|
background: $dd-bg-elevated;
|
|
@@ -88,7 +88,7 @@ function onClick(e: Event) {
|
|
|
88
88
|
}
|
|
89
89
|
|
|
90
90
|
&__icon-text {
|
|
91
|
-
font-size:
|
|
91
|
+
font-size: $dd-font-size-h2;
|
|
92
92
|
line-height: 1;
|
|
93
93
|
color: $dd-primary-400;
|
|
94
94
|
}
|
|
@@ -98,7 +98,7 @@ function onClick(e: Event) {
|
|
|
98
98
|
min-width: 0;
|
|
99
99
|
display: flex;
|
|
100
100
|
flex-direction: column;
|
|
101
|
-
gap:
|
|
101
|
+
gap: $dd-space-1;
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
&__title {
|
|
@@ -129,7 +129,7 @@ function onClick(e: Event) {
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
&__arrow {
|
|
132
|
-
font-size:
|
|
132
|
+
font-size: $dd-font-size-h3;
|
|
133
133
|
color: $dd-text-tertiary;
|
|
134
134
|
line-height: 1;
|
|
135
135
|
margin-left: $dd-space-1;
|
|
@@ -80,7 +80,7 @@ const coreStyle = computed(() => (props.color ? { '--dd-loading-color': props.co
|
|
|
80
80
|
&__mask {
|
|
81
81
|
position: absolute;
|
|
82
82
|
inset: 0;
|
|
83
|
-
background:
|
|
83
|
+
background: $dd-color-overlay-strong;
|
|
84
84
|
/* #ifdef H5 */
|
|
85
85
|
backdrop-filter: blur(8rpx);
|
|
86
86
|
-webkit-backdrop-filter: blur(8rpx);
|
|
@@ -130,14 +130,14 @@ function onClick() {
|
|
|
130
130
|
}
|
|
131
131
|
|
|
132
132
|
&__spinner {
|
|
133
|
-
border:
|
|
133
|
+
border: $dd-space-1 solid $dd-border-default;
|
|
134
134
|
border-radius: 50%;
|
|
135
135
|
box-sizing: border-box;
|
|
136
136
|
animation: dd-lm-spin 0.8s linear infinite;
|
|
137
137
|
}
|
|
138
138
|
|
|
139
139
|
&__text {
|
|
140
|
-
line-height:
|
|
140
|
+
line-height: $dd-line-height-caption;
|
|
141
141
|
}
|
|
142
142
|
|
|
143
143
|
&__dot {
|