im-ui-mobile 0.1.0 → 0.1.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/components/im-avatar/im-avatar.vue +7 -7
- package/components/im-badge/im-badge.vue +326 -0
- package/components/im-button/im-button.vue +71 -34
- package/components/im-card/im-card.vue +563 -0
- package/components/im-chat-item/im-chat-item.vue +5 -4
- package/components/im-col/im-col.vue +191 -0
- package/components/im-dialog/im-dialog.vue +543 -0
- package/components/im-double-tap-view/im-double-tap-view.vue +93 -0
- package/components/im-emoji-picker/im-emoji-picker.vue +1143 -0
- package/components/im-friend-item/im-friend-item.vue +1 -1
- package/components/im-group-item/im-group-item.vue +1 -1
- package/components/im-group-member-selector/im-group-member-selector.vue +5 -5
- package/components/im-group-rtc-join/im-group-rtc-join.vue +8 -8
- package/components/im-icon/im-icon.vue +593 -0
- package/components/im-image-upload/im-image-upload.vue +0 -2
- package/components/im-link/im-link.vue +628 -0
- package/components/im-loading/im-loading.vue +13 -4
- package/components/im-mention-picker/im-mention-picker.vue +8 -7
- package/components/im-message-action/im-message-action.vue +678 -0
- package/components/im-message-item/im-message-item.vue +28 -26
- package/components/im-message-list/im-message-list.vue +1108 -0
- package/components/im-modal/im-modal.vue +373 -0
- package/components/im-nav-bar/im-nav-bar.vue +689 -75
- package/components/im-parse/im-parse.vue +1054 -0
- package/components/im-popup/im-popup.vue +467 -0
- package/components/im-read-receipt/im-read-receipt.vue +10 -10
- package/components/im-row/im-row.vue +189 -0
- package/components/im-search/im-search.vue +762 -0
- package/components/im-sku/im-sku.vue +720 -0
- package/components/im-sku/utils/helper.ts +182 -0
- package/components/im-stepper/im-stepper.vue +585 -0
- package/components/im-stepper/utils/helper.ts +167 -0
- package/components/im-tabs/im-tabs.vue +1022 -0
- package/components/im-tabs/tabs-navigation.vue +489 -0
- package/components/im-tabs/utils/helper.ts +181 -0
- package/components/im-tabs-tab-pane/im-tabs-tab-pane.vue +145 -0
- package/components/im-upload/im-upload.vue +1236 -0
- package/components/im-voice-input/im-voice-input.vue +1 -1
- package/index.js +3 -5
- package/index.scss +19 -0
- package/libs/emoji-data.ts +229 -0
- package/libs/index.ts +16 -16
- package/package.json +1 -2
- package/styles/button.scss +33 -33
- package/theme.scss +2 -2
- package/types/components/badge.d.ts +42 -0
- package/types/components/button.d.ts +2 -1
- package/types/components/card.d.ts +122 -0
- package/types/components/col.d.ts +37 -0
- package/types/components/dialog.d.ts +125 -0
- package/types/components/double-tap-view.d.ts +31 -0
- package/types/components/emoji-picker.d.ts +121 -0
- package/types/components/group-rtc-join.d.ts +1 -1
- package/types/components/icon.d.ts +77 -0
- package/types/components/link.d.ts +55 -0
- package/types/components/loading.d.ts +1 -0
- package/types/components/message-action.d.ts +96 -0
- package/types/components/message-item.d.ts +2 -2
- package/types/components/message-list.d.ts +136 -0
- package/types/components/modal.d.ts +106 -0
- package/types/components/nav-bar.d.ts +125 -0
- package/types/components/parse.d.ts +90 -0
- package/types/components/popup.d.ts +58 -0
- package/types/components/row.d.ts +31 -0
- package/types/components/search.d.ts +54 -0
- package/types/components/sku.d.ts +195 -0
- package/types/components/stepper.d.ts +99 -0
- package/types/components/tabs-tab-pane.d.ts +27 -0
- package/types/components/tabs.d.ts +117 -0
- package/types/components/upload.d.ts +137 -0
- package/types/components.d.ts +19 -1
- package/types/index.d.ts +38 -1
- package/types/libs/index.d.ts +10 -10
- package/types/utils/base64.d.ts +5 -0
- package/types/utils/dom.d.ts +3 -0
- package/types/utils/enums.d.ts +4 -5
- package/types/utils/validator.d.ts +74 -0
- package/utils/base64.js +18 -0
- package/utils/dom.js +353 -1
- package/utils/enums.js +4 -5
- package/utils/validator.js +230 -0
- package/components/im-file-upload/im-file-upload.vue +0 -309
- package/plugins/uview-plus.js +0 -29
- package/types/components/arrow-bar.d.ts +0 -14
- package/types/components/file-upload.d.ts +0 -58
|
@@ -3,24 +3,21 @@
|
|
|
3
3
|
<view class="message-tip" v-if="msgInfo.type == MESSAGE_TYPE.TIP_TEXT">
|
|
4
4
|
{{ msgInfo.content }}
|
|
5
5
|
</view>
|
|
6
|
-
<view class="message-tip" v-else-if="msgInfo.type == MESSAGE_TYPE.TIP_TIME">
|
|
7
|
-
{{ $datetime.toTimeText(msgInfo.sendTime) }}
|
|
8
|
-
</view>
|
|
9
6
|
<view class="message-normal" v-else-if="isNormal" :class="{ 'message-mine': msgInfo.selfSend }">
|
|
10
|
-
<im-avatar class="avatar" @
|
|
11
|
-
:
|
|
7
|
+
<im-avatar class="avatar" @click="$emit('clickAvatar')" @longpress.prevent="$emit('longpressAvatar')"
|
|
8
|
+
:id="msgInfo.sendId" :url="avatar" :title="displayName" size="small" />
|
|
12
9
|
<view class="content">
|
|
13
10
|
<view v-if="msgInfo.groupId && !msgInfo.selfSend" class="top">
|
|
14
|
-
<text>{{
|
|
11
|
+
<text>{{ displayName }}</text>
|
|
15
12
|
</view>
|
|
16
13
|
<view class="bottom">
|
|
17
14
|
<view class="message-content-wrapper">
|
|
18
15
|
<view v-if="msgInfo.type == MESSAGE_TYPE.TEXT">
|
|
19
16
|
<im-context-menu :items="menuItems" @select="onSelectMenu">
|
|
20
17
|
<!-- up-parse支持点击a标签,但是不支持显示emo表情,也不支持换行 -->
|
|
21
|
-
<
|
|
22
|
-
v-if="$url.containUrl(msgInfo.content) && !emoji.containEmoji(msgInfo.content)"
|
|
23
|
-
|
|
18
|
+
<im-parse
|
|
19
|
+
v-if="$url.containUrl(msgInfo.content) && !(emoji as any).containEmoji(msgInfo.content)"
|
|
20
|
+
customClass="message-text" :content="nodesText" />
|
|
24
21
|
<!-- rich-text支持显示emo表情以及消息换行,但是不支持点击a标签 -->
|
|
25
22
|
<rich-text v-else class="message-text" :nodes="nodesText" />
|
|
26
23
|
</im-context-menu>
|
|
@@ -39,8 +36,8 @@
|
|
|
39
36
|
<im-context-menu :items="menuItems" @select="onSelectMenu">
|
|
40
37
|
<view class="file-box">
|
|
41
38
|
<view class="file-info" style="overflow: hidden;">
|
|
42
|
-
<
|
|
43
|
-
:href="contentData.url" :text="contentData.name"
|
|
39
|
+
<im-link class="file-name" underline="none" color="#007BFF"
|
|
40
|
+
:href="contentData.url" :text="contentData.name" />
|
|
44
41
|
<view class="file-size">{{ fileSize }}</view>
|
|
45
42
|
</view>
|
|
46
43
|
<view class="file-icon iconfont icon-file"></view>
|
|
@@ -67,18 +64,20 @@
|
|
|
67
64
|
</view>
|
|
68
65
|
</im-context-menu>
|
|
69
66
|
<view v-if="sending && isTextMessage" class="sending">
|
|
70
|
-
<im-loading :size="
|
|
67
|
+
<im-loading :size="32" icon-color="rgb(134 4 155)" :mask="false" :text="''" />
|
|
71
68
|
</view>
|
|
72
69
|
<view v-else-if="sendFail" @click="onSendFail"
|
|
73
70
|
class="send-fail iconfont icon-warning-circle-fill"></view>
|
|
74
71
|
</view>
|
|
72
|
+
|
|
73
|
+
<!-- 消息发送状态 -->
|
|
75
74
|
<view class="message-status" v-if="!isAction && msgInfo.selfSend && !msgInfo.groupId">
|
|
76
|
-
<text class="chat-readed" v-if="msgInfo.status == MESSAGE_STATUS.
|
|
75
|
+
<text class="chat-readed" v-if="msgInfo.status == MESSAGE_STATUS.READ">已读</text>
|
|
77
76
|
<text class="chat-unread" v-else>未读</text>
|
|
78
77
|
</view>
|
|
79
78
|
<view class="chat-receipt" v-if="msgInfo.receipt" @click="onShowReadedBox">
|
|
80
79
|
<text v-if="msgInfo.receiptOk" class="tool-icon iconfont icon-ok"></text>
|
|
81
|
-
<text v-else>{{ msgInfo.
|
|
80
|
+
<text v-else>{{ msgInfo.readCount }}人已读</text>
|
|
82
81
|
</view>
|
|
83
82
|
</view>
|
|
84
83
|
</view>
|
|
@@ -96,14 +95,16 @@ import { MESSAGE_TYPE, MESSAGE_STATUS, datetime, dom, url, messageType, emoji }
|
|
|
96
95
|
|
|
97
96
|
interface Props {
|
|
98
97
|
avatar?: string;
|
|
99
|
-
|
|
98
|
+
displayName: string;
|
|
100
99
|
msgInfo: any;
|
|
101
100
|
groupMembers?: any[];
|
|
102
101
|
}
|
|
103
102
|
|
|
104
103
|
interface Emits {
|
|
105
104
|
(e: 'call'): void;
|
|
106
|
-
(e: '
|
|
105
|
+
(e: 'clickAvatar'): void;
|
|
106
|
+
(e: 'doubleclickAvatar'): void;
|
|
107
|
+
(e: 'longpressAvatar'): void;
|
|
107
108
|
(e: 'resend', msgInfo: any): void;
|
|
108
109
|
(e: 'audioStateChange', state: string, msgInfo: any): void;
|
|
109
110
|
(e: 'copy', msgInfo: any): void;
|
|
@@ -129,6 +130,7 @@ const onSendFail = () => {
|
|
|
129
130
|
};
|
|
130
131
|
|
|
131
132
|
const onPlayAudio = () => {
|
|
133
|
+
console.log('onPlayAudio() 音频播放')
|
|
132
134
|
// 初始化音频播放器
|
|
133
135
|
if (!innerAudioContext.value) {
|
|
134
136
|
innerAudioContext.value = uni.createInnerAudioContext();
|
|
@@ -156,6 +158,7 @@ const onPlayAudio = () => {
|
|
|
156
158
|
innerAudioContext.value.play();
|
|
157
159
|
audioPlayState.value = "PLAYING";
|
|
158
160
|
}
|
|
161
|
+
|
|
159
162
|
emitAudioState();
|
|
160
163
|
};
|
|
161
164
|
|
|
@@ -283,14 +286,14 @@ const imageStyle = computed(() => {
|
|
|
283
286
|
|
|
284
287
|
<style scoped lang="scss">
|
|
285
288
|
.message-item {
|
|
286
|
-
|
|
289
|
+
margin: 0 20rpx;
|
|
290
|
+
margin-bottom: 40rpx;
|
|
287
291
|
|
|
288
292
|
.message-tip {
|
|
289
|
-
line-height: 60rpx;
|
|
290
293
|
text-align: center;
|
|
291
294
|
color: $im-text-color-lighter;
|
|
292
|
-
font-size: $im-font-size-
|
|
293
|
-
padding:
|
|
295
|
+
font-size: $im-font-size-small;
|
|
296
|
+
padding: 20rpx;
|
|
294
297
|
}
|
|
295
298
|
|
|
296
299
|
.message-normal {
|
|
@@ -315,12 +318,12 @@ const imageStyle = computed(() => {
|
|
|
315
318
|
font-size: $im-font-size-small;
|
|
316
319
|
line-height: $im-font-size-small;
|
|
317
320
|
height: $im-font-size-small;
|
|
321
|
+
margin-bottom: 12rpx;
|
|
318
322
|
}
|
|
319
323
|
|
|
320
324
|
.bottom {
|
|
321
325
|
display: inline-block;
|
|
322
326
|
padding-right: 80rpx;
|
|
323
|
-
margin-top: 5rpx;
|
|
324
327
|
|
|
325
328
|
.message-content-wrapper {
|
|
326
329
|
position: relative;
|
|
@@ -345,9 +348,8 @@ const imageStyle = computed(() => {
|
|
|
345
348
|
.message-text {
|
|
346
349
|
position: relative;
|
|
347
350
|
line-height: 1.6;
|
|
348
|
-
margin-top: 10rpx;
|
|
349
351
|
padding: 16rpx 24rpx;
|
|
350
|
-
background-color:
|
|
352
|
+
background-color: #ffffff;
|
|
351
353
|
border-radius: 20rpx;
|
|
352
354
|
color: $im-text-color;
|
|
353
355
|
font-size: $im-font-size;
|
|
@@ -364,7 +366,7 @@ const imageStyle = computed(() => {
|
|
|
364
366
|
width: 6rpx;
|
|
365
367
|
height: 6rpx;
|
|
366
368
|
border-style: solid dashed dashed;
|
|
367
|
-
border-color:
|
|
369
|
+
border-color: #ffffff transparent transparent;
|
|
368
370
|
overflow: hidden;
|
|
369
371
|
border-width: 18rpx;
|
|
370
372
|
}
|
|
@@ -468,11 +470,10 @@ const imageStyle = computed(() => {
|
|
|
468
470
|
.message-status {
|
|
469
471
|
line-height: $im-font-size-mini;
|
|
470
472
|
font-size: $im-font-size-mini;
|
|
471
|
-
padding-top:
|
|
473
|
+
padding-top: 20rpx;
|
|
472
474
|
|
|
473
475
|
.chat-readed {
|
|
474
476
|
display: block;
|
|
475
|
-
padding-top: 2rpx;
|
|
476
477
|
color: $im-text-color-lighter;
|
|
477
478
|
}
|
|
478
479
|
|
|
@@ -485,6 +486,7 @@ const imageStyle = computed(() => {
|
|
|
485
486
|
font-size: $im-font-size-small;
|
|
486
487
|
color: $im-text-color-lighter;
|
|
487
488
|
font-weight: 600;
|
|
489
|
+
padding-top: 10rpx;
|
|
488
490
|
|
|
489
491
|
.icon-ok {
|
|
490
492
|
font-size: 20px;
|