@hlw-uni/mp-vue 1.1.18 → 1.1.20
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.
|
@@ -50,4 +50,38 @@ export interface HlwMenuItem {
|
|
|
50
50
|
* @default true
|
|
51
51
|
*/
|
|
52
52
|
visible?: boolean;
|
|
53
|
+
/**
|
|
54
|
+
* 微信小程序 `<button open-type>` 能力。设置后菜单项用 `<button>` 渲染,
|
|
55
|
+
* 支持触发客服会话、获取手机号、分享等原生能力。
|
|
56
|
+
*
|
|
57
|
+
* 常用值:
|
|
58
|
+
* - `contact` — 打开客服会话(需在后台配置客服)
|
|
59
|
+
* - `share` — 触发分享
|
|
60
|
+
* - `getPhoneNumber` — 获取手机号
|
|
61
|
+
* - `launchApp` — 打开 App(仅 App 内)
|
|
62
|
+
*
|
|
63
|
+
* 参考:https://developers.weixin.qq.com/miniprogram/dev/component/button.html
|
|
64
|
+
*/
|
|
65
|
+
openType?: string;
|
|
66
|
+
/**
|
|
67
|
+
* 会话来源,`openType="contact"` 时有效。
|
|
68
|
+
*/
|
|
69
|
+
sessionFrom?: string;
|
|
70
|
+
/**
|
|
71
|
+
* 会话内消息卡片标题,`openType="contact"` 时有效。
|
|
72
|
+
*/
|
|
73
|
+
sendMessageTitle?: string;
|
|
74
|
+
/**
|
|
75
|
+
* 会话内消息卡片点击跳转小程序路径,`openType="contact"` 时有效。
|
|
76
|
+
*/
|
|
77
|
+
sendMessagePath?: string;
|
|
78
|
+
/**
|
|
79
|
+
* 会话内消息卡片图片,`openType="contact"` 时有效。
|
|
80
|
+
*/
|
|
81
|
+
sendMessageImg?: string;
|
|
82
|
+
/**
|
|
83
|
+
* 是否显示会话内消息卡片,`openType="contact"` 时有效。
|
|
84
|
+
* @default false
|
|
85
|
+
*/
|
|
86
|
+
showMessageCard?: boolean;
|
|
53
87
|
}
|
package/package.json
CHANGED
|
@@ -23,6 +23,34 @@
|
|
|
23
23
|
</view>
|
|
24
24
|
</navigator>
|
|
25
25
|
|
|
26
|
+
<button
|
|
27
|
+
v-else-if="item.openType"
|
|
28
|
+
class="hlw-menu-item hlw-menu-item-btn"
|
|
29
|
+
hover-class="hlw-menu-item--active"
|
|
30
|
+
:open-type="item.openType"
|
|
31
|
+
:session-from="item.sessionFrom"
|
|
32
|
+
:send-message-title="item.sendMessageTitle"
|
|
33
|
+
:send-message-path="item.sendMessagePath"
|
|
34
|
+
:send-message-img="item.sendMessageImg"
|
|
35
|
+
:show-message-card="item.showMessageCard"
|
|
36
|
+
@click="handleClick(item)"
|
|
37
|
+
@contact="handleContact(item, $event)"
|
|
38
|
+
@getphonenumber="handleGetPhoneNumber(item, $event)"
|
|
39
|
+
>
|
|
40
|
+
<view class="hlw-menu-left">
|
|
41
|
+
<view class="hlw-menu-icon" :class="`hlw-menu-icon--${item.iconTheme || 'slate'}`">
|
|
42
|
+
<text :class="item.icon"></text>
|
|
43
|
+
</view>
|
|
44
|
+
<text class="hlw-menu-label">{{ item.label }}</text>
|
|
45
|
+
</view>
|
|
46
|
+
<view class="hlw-menu-right">
|
|
47
|
+
<text v-if="item.loading" class="i-fa6-solid-circle-notch hlw-menu-spin hlw-menu-muted"></text>
|
|
48
|
+
<text v-if="item.value" class="hlw-menu-value">{{ item.value }}</text>
|
|
49
|
+
<text v-if="item.tag" class="hlw-menu-tag" :class="[`hlw-menu-tag--${item.tagTheme || 'rose'}`, item.tagPulse ? 'hlw-menu-tag-pulse' : '']">{{ item.tag }}</text>
|
|
50
|
+
<text class="i-fa6-solid-chevron-right hlw-menu-arrow"></text>
|
|
51
|
+
</view>
|
|
52
|
+
</button>
|
|
53
|
+
|
|
26
54
|
<view v-else class="hlw-menu-item" hover-class="hlw-menu-item--active" @click="handleClick(item)">
|
|
27
55
|
<view class="hlw-menu-left">
|
|
28
56
|
<view class="hlw-menu-icon" :class="`hlw-menu-icon--${item.iconTheme || 'slate'}`">
|
|
@@ -141,6 +169,14 @@ const emit = defineEmits<{
|
|
|
141
169
|
* @param item 被点击的菜单项
|
|
142
170
|
*/
|
|
143
171
|
click: [item: HlwMenuItem];
|
|
172
|
+
/**
|
|
173
|
+
* `openType="contact"` 的菜单项,打开客服会话时触发。
|
|
174
|
+
*/
|
|
175
|
+
contact: [item: HlwMenuItem, event: unknown];
|
|
176
|
+
/**
|
|
177
|
+
* `openType="getPhoneNumber"` 的菜单项,获取手机号回调时触发。
|
|
178
|
+
*/
|
|
179
|
+
getphonenumber: [item: HlwMenuItem, event: unknown];
|
|
144
180
|
}>();
|
|
145
181
|
|
|
146
182
|
const visibleItems = computed(() => props.items.filter((item) => item.visible !== false));
|
|
@@ -148,6 +184,14 @@ const visibleItems = computed(() => props.items.filter((item) => item.visible !=
|
|
|
148
184
|
const handleClick = (item: HlwMenuItem) => {
|
|
149
185
|
emit("click", item);
|
|
150
186
|
};
|
|
187
|
+
|
|
188
|
+
const handleContact = (item: HlwMenuItem, event: unknown) => {
|
|
189
|
+
emit("contact", item, event);
|
|
190
|
+
};
|
|
191
|
+
|
|
192
|
+
const handleGetPhoneNumber = (item: HlwMenuItem, event: unknown) => {
|
|
193
|
+
emit("getphonenumber", item, event);
|
|
194
|
+
};
|
|
151
195
|
</script>
|
|
152
196
|
|
|
153
197
|
<style lang="scss" scoped>
|
|
@@ -195,6 +239,30 @@ const handleClick = (item: HlwMenuItem) => {
|
|
|
195
239
|
}
|
|
196
240
|
}
|
|
197
241
|
|
|
242
|
+
/* open-type button 模式:去除微信 button 原生样式,对齐 .hlw-menu-item 布局 */
|
|
243
|
+
.hlw-menu-item-btn {
|
|
244
|
+
display: flex;
|
|
245
|
+
align-items: center;
|
|
246
|
+
justify-content: space-between;
|
|
247
|
+
width: 100%;
|
|
248
|
+
margin: 0;
|
|
249
|
+
padding: 24rpx 32rpx;
|
|
250
|
+
background: transparent;
|
|
251
|
+
color: inherit;
|
|
252
|
+
font-size: inherit;
|
|
253
|
+
font-weight: inherit;
|
|
254
|
+
line-height: inherit;
|
|
255
|
+
border-radius: 0;
|
|
256
|
+
border: none;
|
|
257
|
+
text-align: left;
|
|
258
|
+
box-sizing: border-box;
|
|
259
|
+
|
|
260
|
+
&::after {
|
|
261
|
+
border: none;
|
|
262
|
+
display: none;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
198
266
|
.hlw-menu-divider {
|
|
199
267
|
margin: 0 32rpx;
|
|
200
268
|
height: 0;
|
|
@@ -52,4 +52,38 @@ export interface HlwMenuItem {
|
|
|
52
52
|
* @default true
|
|
53
53
|
*/
|
|
54
54
|
visible?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* 微信小程序 `<button open-type>` 能力。设置后菜单项用 `<button>` 渲染,
|
|
57
|
+
* 支持触发客服会话、获取手机号、分享等原生能力。
|
|
58
|
+
*
|
|
59
|
+
* 常用值:
|
|
60
|
+
* - `contact` — 打开客服会话(需在后台配置客服)
|
|
61
|
+
* - `share` — 触发分享
|
|
62
|
+
* - `getPhoneNumber` — 获取手机号
|
|
63
|
+
* - `launchApp` — 打开 App(仅 App 内)
|
|
64
|
+
*
|
|
65
|
+
* 参考:https://developers.weixin.qq.com/miniprogram/dev/component/button.html
|
|
66
|
+
*/
|
|
67
|
+
openType?: string;
|
|
68
|
+
/**
|
|
69
|
+
* 会话来源,`openType="contact"` 时有效。
|
|
70
|
+
*/
|
|
71
|
+
sessionFrom?: string;
|
|
72
|
+
/**
|
|
73
|
+
* 会话内消息卡片标题,`openType="contact"` 时有效。
|
|
74
|
+
*/
|
|
75
|
+
sendMessageTitle?: string;
|
|
76
|
+
/**
|
|
77
|
+
* 会话内消息卡片点击跳转小程序路径,`openType="contact"` 时有效。
|
|
78
|
+
*/
|
|
79
|
+
sendMessagePath?: string;
|
|
80
|
+
/**
|
|
81
|
+
* 会话内消息卡片图片,`openType="contact"` 时有效。
|
|
82
|
+
*/
|
|
83
|
+
sendMessageImg?: string;
|
|
84
|
+
/**
|
|
85
|
+
* 是否显示会话内消息卡片,`openType="contact"` 时有效。
|
|
86
|
+
* @default false
|
|
87
|
+
*/
|
|
88
|
+
showMessageCard?: boolean;
|
|
55
89
|
}
|