im-ui-mobile 0.0.46 → 0.0.48
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-chat-at-box/im-chat-at-box.vue +7 -5
- package/components/im-chat-group-readed/im-chat-group-readed.vue +10 -8
- package/components/im-chat-item/im-chat-item.vue +4 -3
- package/components/im-chat-message-item/im-chat-message-item.vue +16 -14
- package/components/im-file-upload/im-file-upload.vue +1 -1
- package/components/im-friend-item/im-friend-item.vue +3 -1
- package/components/im-group-item/im-group-item.vue +3 -1
- package/components/im-group-member-selector/im-group-member-selector.vue +8 -5
- package/components/im-group-rtc-join/im-group-rtc-join.vue +3 -2
- package/index.js +0 -8
- package/package.json +1 -1
- package/types/components.d.ts +1 -1
- /package/types/components/{chat-upload.d.ts → file-upload.d.ts} +0 -0
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<scroll-view v-show="atUserIds.length > 0" scroll-x="true" scroll-left="120">
|
|
11
11
|
<view class="at-user-items">
|
|
12
12
|
<view v-for="m in checkedMembers" class="at-user-item" :key="m.userId">
|
|
13
|
-
<head-image :name="m.showNickName" :url="m.headImage" size="mini"
|
|
13
|
+
<im-head-image :name="m.showNickName" :url="m.headImage" size="mini" />
|
|
14
14
|
</view>
|
|
15
15
|
</view>
|
|
16
16
|
</scroll-view>
|
|
@@ -18,23 +18,25 @@
|
|
|
18
18
|
<u-search v-model="searchText" :show-action="false" shape="round" placeholder="搜索"></u-search>
|
|
19
19
|
</view>
|
|
20
20
|
<view class="member-items">
|
|
21
|
-
<virtual-scroller :items="memberItems">
|
|
21
|
+
<im-virtual-scroller :items="memberItems">
|
|
22
22
|
<template v-slot="{ item }">
|
|
23
23
|
<view class="member-item" @click="onSwitchChecked(item)">
|
|
24
|
-
<head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
25
|
-
size="small"
|
|
24
|
+
<im-head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
25
|
+
size="small" />
|
|
26
26
|
<view class="member-name">{{ item.showNickName }}</view>
|
|
27
27
|
<radio :checked="item.checked" :disabled="item.locked"
|
|
28
28
|
@click.stop="onSwitchChecked(item)" />
|
|
29
29
|
</view>
|
|
30
30
|
</template>
|
|
31
|
-
</virtual-scroller>
|
|
31
|
+
</im-virtual-scroller>
|
|
32
32
|
</view>
|
|
33
33
|
</view>
|
|
34
34
|
</u-popup>
|
|
35
35
|
</template>
|
|
36
36
|
|
|
37
37
|
<script setup lang="ts">
|
|
38
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
39
|
+
import ImVirtualScroller from '../im-virtual-scroller/im-virtual-scroller.vue'
|
|
38
40
|
import { GroupMember } from '../../libs';
|
|
39
41
|
|
|
40
42
|
interface Props {
|
|
@@ -6,26 +6,26 @@
|
|
|
6
6
|
</view>
|
|
7
7
|
<view class="content">
|
|
8
8
|
<view v-if="current === 0">
|
|
9
|
-
<virtual-scroller :items="readedMembers">
|
|
9
|
+
<im-virtual-scroller :items="readedMembers">
|
|
10
10
|
<template v-slot="{ item }">
|
|
11
11
|
<view class="member-item">
|
|
12
|
-
<head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
13
|
-
:size="90"
|
|
12
|
+
<im-head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
13
|
+
:size="90" />
|
|
14
14
|
<view class="member-name">{{ item.showNickName }}</view>
|
|
15
15
|
</view>
|
|
16
16
|
</template>
|
|
17
|
-
</virtual-scroller>
|
|
17
|
+
</im-virtual-scroller>
|
|
18
18
|
</view>
|
|
19
19
|
<view v-if="current === 1">
|
|
20
|
-
<virtual-scroller :items="unreadMembers">
|
|
20
|
+
<im-virtual-scroller :items="unreadMembers">
|
|
21
21
|
<template v-slot="{ item }">
|
|
22
22
|
<view class="member-item">
|
|
23
|
-
<head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
24
|
-
:size="90"
|
|
23
|
+
<im-head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
24
|
+
:size="90" />
|
|
25
25
|
<view class="member-name">{{ item.showNickName }}</view>
|
|
26
26
|
</view>
|
|
27
27
|
</template>
|
|
28
|
-
</virtual-scroller>
|
|
28
|
+
</im-virtual-scroller>
|
|
29
29
|
</view>
|
|
30
30
|
</view>
|
|
31
31
|
</view>
|
|
@@ -33,6 +33,8 @@
|
|
|
33
33
|
</template>
|
|
34
34
|
|
|
35
35
|
<script setup lang="ts">
|
|
36
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
37
|
+
import ImVirtualScroller from '../im-virtual-scroller/im-virtual-scroller.vue'
|
|
36
38
|
import { Chat, Message } from '../../libs';
|
|
37
39
|
|
|
38
40
|
interface Props {
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
<!--rich-text中的表情包会屏蔽事件,所以这里用一个遮罩层捕获点击事件 -->
|
|
4
4
|
<view class="mask" @tap="showChatBox()"></view>
|
|
5
5
|
<view class="left">
|
|
6
|
-
<head-image :url="chat.headImage" :name="chat.showName" :online="online"
|
|
6
|
+
<im-head-image :url="chat.headImage" :name="chat.showName" :online="online" />
|
|
7
7
|
</view>
|
|
8
8
|
<view class="chat-right">
|
|
9
9
|
<view class="chat-name">
|
|
@@ -25,6 +25,7 @@
|
|
|
25
25
|
</template>
|
|
26
26
|
|
|
27
27
|
<script setup lang="ts">
|
|
28
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
28
29
|
import datetime from '../../utils/datetime'
|
|
29
30
|
import dom from '../../utils/dom'
|
|
30
31
|
import messageType from '../../utils/messageType'
|
|
@@ -35,7 +36,7 @@ interface Props {
|
|
|
35
36
|
chat?: any;
|
|
36
37
|
index?: number;
|
|
37
38
|
active?: boolean;
|
|
38
|
-
online:boolean
|
|
39
|
+
online: boolean
|
|
39
40
|
}
|
|
40
41
|
|
|
41
42
|
const $datetime = datetime
|
|
@@ -112,7 +113,7 @@ const showChatBox = () => {
|
|
|
112
113
|
// url: "/pages-chat/pages/chat/chat-box?targetId=" + props.chat.targetId
|
|
113
114
|
// });
|
|
114
115
|
|
|
115
|
-
emit('click',props.chat.targetId)
|
|
116
|
+
emit('click', props.chat.targetId)
|
|
116
117
|
};
|
|
117
118
|
</script>
|
|
118
119
|
|
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
{{ $datetime.toTimeText(msgInfo.sendTime) }}
|
|
8
8
|
</view>
|
|
9
9
|
<view class="message-normal" v-else-if="isNormal" :class="{ 'message-mine': msgInfo.selfSend }">
|
|
10
|
-
<head-image class="avatar" @longpress.prevent="$emit('longPressHead')" :id="msgInfo.sendId"
|
|
11
|
-
:
|
|
10
|
+
<im-head-image class="avatar" @longpress.prevent="$emit('longPressHead')" :id="msgInfo.sendId" :url="avatar"
|
|
11
|
+
:name="showName" size="small" />
|
|
12
12
|
<view class="content">
|
|
13
13
|
<view v-if="msgInfo.groupId && !msgInfo.selfSend" class="top">
|
|
14
14
|
<text>{{ showName }}</text>
|
|
@@ -16,27 +16,27 @@
|
|
|
16
16
|
<view class="bottom">
|
|
17
17
|
<view class="message-content-wrapper">
|
|
18
18
|
<view v-if="msgInfo.type == MESSAGE_TYPE.TEXT">
|
|
19
|
-
<long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
19
|
+
<im-long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
20
20
|
<!-- up-parse支持点击a标签,但是不支持显示emo表情,也不支持换行 -->
|
|
21
21
|
<up-parse
|
|
22
22
|
v-if="$url.containUrl(msgInfo.content) && !$emotion.containEmoji(msgInfo.content)"
|
|
23
23
|
class="message-text" :showImgMenu="false" :content="nodesText"></up-parse>
|
|
24
24
|
<!-- rich-text支持显示emo表情以及消息换行,但是不支持点击a标签 -->
|
|
25
25
|
<rich-text v-else class="message-text" :nodes="nodesText"></rich-text>
|
|
26
|
-
</long-press-menu>
|
|
26
|
+
</im-long-press-menu>
|
|
27
27
|
</view>
|
|
28
28
|
<view class="message-image" v-else-if="msgInfo.type == MESSAGE_TYPE.IMAGE">
|
|
29
|
-
<long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
29
|
+
<im-long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
30
30
|
<view class="image-box">
|
|
31
31
|
<image class="send-image" :style="imageStyle" mode="aspectFill"
|
|
32
32
|
:src="contentData.thumbUrl" lazy-load="true" @click.stop="onShowFullImage()">
|
|
33
33
|
</image>
|
|
34
34
|
<im-loading v-if="sending"></im-loading>
|
|
35
35
|
</view>
|
|
36
|
-
</long-press-menu>
|
|
36
|
+
</im-long-press-menu>
|
|
37
37
|
</view>
|
|
38
38
|
<view class="message-file" v-else-if="msgInfo.type == MESSAGE_TYPE.FILE">
|
|
39
|
-
<long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
39
|
+
<im-long-press-menu :items="menuItems" @select="onSelectMenu">
|
|
40
40
|
<view class="file-box">
|
|
41
41
|
<view class="file-info" style="overflow: hidden;">
|
|
42
42
|
<u-link class="file-name" :under-line="true" color="#007BFF"
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
<view class="file-icon iconfont icon-file"></view>
|
|
47
47
|
<im-loading v-if="sending"></im-loading>
|
|
48
48
|
</view>
|
|
49
|
-
</long-press-menu>
|
|
49
|
+
</im-long-press-menu>
|
|
50
50
|
</view>
|
|
51
|
-
<long-press-menu v-else-if="msgInfo.type == MESSAGE_TYPE.AUDIO" :items="menuItems"
|
|
51
|
+
<im-long-press-menu v-else-if="msgInfo.type == MESSAGE_TYPE.AUDIO" :items="menuItems"
|
|
52
52
|
@select="onSelectMenu">
|
|
53
53
|
<view class="message-audio message-text" @click="onPlayAudio()">
|
|
54
54
|
<text class="iconfont icon-voice-play"></text>
|
|
@@ -56,8 +56,8 @@
|
|
|
56
56
|
<text v-if="audioPlayState == 'PAUSE'" class="iconfont icon-play"></text>
|
|
57
57
|
<text v-if="audioPlayState == 'PLAYING'" class="iconfont icon-pause"></text>
|
|
58
58
|
</view>
|
|
59
|
-
</long-press-menu>
|
|
60
|
-
<long-press-menu v-if="isAction" :items="menuItems" @select="onSelectMenu">
|
|
59
|
+
</im-long-press-menu>
|
|
60
|
+
<im-long-press-menu v-if="isAction" :items="menuItems" @select="onSelectMenu">
|
|
61
61
|
<view class="chat-realtime message-text" @click="$emit('call')">
|
|
62
62
|
<text v-if="msgInfo.type == MESSAGE_TYPE.ACT_RT_VOICE"
|
|
63
63
|
class="iconfont icon-chat-voice"></text>
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
class="iconfont icon-chat-video"></text>
|
|
66
66
|
<text>{{ msgInfo.content }}</text>
|
|
67
67
|
</view>
|
|
68
|
-
</long-press-menu>
|
|
68
|
+
</im-long-press-menu>
|
|
69
69
|
<view v-if="sending && isTextMessage" class="sending">
|
|
70
70
|
<im-loading :size="40" icon-color="#656adf" :mask="false"></im-loading>
|
|
71
71
|
</view>
|
|
@@ -83,12 +83,14 @@
|
|
|
83
83
|
</view>
|
|
84
84
|
</view>
|
|
85
85
|
</view>
|
|
86
|
-
<chat-group-readed ref="chatGroupReaded" :groupMembers="groupMembers" :msgInfo="msgInfo"
|
|
86
|
+
<im-chat-group-readed ref="chatGroupReaded" :groupMembers="groupMembers" :msgInfo="msgInfo" />
|
|
87
87
|
</view>
|
|
88
88
|
</template>
|
|
89
89
|
|
|
90
90
|
<script setup lang="ts">
|
|
91
|
-
import
|
|
91
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
92
|
+
import ImChatGroupReaded from '../im-chat-group-readed/im-chat-group-readed.vue'
|
|
93
|
+
import ImLongPressMenu from '../im-long-press-menu/im-long-press-menu.vue'
|
|
92
94
|
import { MESSAGE_TYPE, MESSAGE_STATUS, } from '../../utils/enums'
|
|
93
95
|
import emoji from '../../utils/emoji';
|
|
94
96
|
import url from '../../utils/url';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<view v-if="visible" class="
|
|
2
|
+
<view v-if="visible" class="file-upload">
|
|
3
3
|
<u-upload ref="uploadRef" :max-count="props.maxCount" :max-size="props.maxSize" :size-type="props.sizeType"
|
|
4
4
|
:source-type="props.sourceType" :deletable="props.deletable" :preview-full-image="props.previewFullImage"
|
|
5
5
|
:multiple="props.multiple" :disabled="props.disabled" :custom-btn="props.customBtn"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="friend-item" @click="showFriendInfo()">
|
|
3
|
-
<head-image :name="friend.nickName" :online="friend.online" :url="friend.headImage" size="small"
|
|
3
|
+
<im-head-image :name="friend.nickName" :online="friend.online" :url="friend.headImage" size="small"/>
|
|
4
4
|
<view class="friend-info">
|
|
5
5
|
<view class="friend-name">{{ friend.nickName }}</view>
|
|
6
6
|
<view class="friend-online">
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
</template>
|
|
14
14
|
|
|
15
15
|
<script setup lang="ts">
|
|
16
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
17
|
+
|
|
16
18
|
interface Props {
|
|
17
19
|
friend?: any;
|
|
18
20
|
detail?: boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<view class="group-item" @click="showGroupInfo()">
|
|
3
|
-
<head-image :name="group.showGroupName" :url="group.headImageThumb" size="small"
|
|
3
|
+
<im-head-image :name="group.showGroupName" :url="group.headImageThumb" size="small"/>
|
|
4
4
|
<view class="group-name">
|
|
5
5
|
<view>{{ group.showGroupName }}</view>
|
|
6
6
|
</view>
|
|
@@ -8,6 +8,8 @@
|
|
|
8
8
|
</template>
|
|
9
9
|
|
|
10
10
|
<script setup lang="ts">
|
|
11
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
12
|
+
|
|
11
13
|
interface Props {
|
|
12
14
|
group?: any;
|
|
13
15
|
}
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
<scroll-view v-show="checkedIds.length > 0" scroll-x="true" scroll-left="120">
|
|
11
11
|
<view class="checked-users">
|
|
12
12
|
<view v-for="m in checkedMembers" class="user-item" :key="m.userId">
|
|
13
|
-
<head-image :name="m.showNickName" :url="m.headImage" :size="60"
|
|
13
|
+
<im-head-image :name="m.showNickName" :url="m.headImage" :size="60"/>
|
|
14
14
|
</view>
|
|
15
15
|
</view>
|
|
16
16
|
</scroll-view>
|
|
@@ -18,11 +18,11 @@
|
|
|
18
18
|
<u-search v-model="searchText" :show-action="false" placeholder="搜索"></u-search>
|
|
19
19
|
</view>
|
|
20
20
|
<view class="member-items">
|
|
21
|
-
<virtual-scroller :items="showMembers">
|
|
21
|
+
<im-virtual-scroller :items="showMembers">
|
|
22
22
|
<template v-slot="{ item }">
|
|
23
23
|
<view class="member-item" @click="onSwitchChecked(item)">
|
|
24
|
-
<head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
25
|
-
:size="90"
|
|
24
|
+
<im-head-image :name="item.showNickName" :online="item.online" :url="item.headImage"
|
|
25
|
+
:size="90"/>
|
|
26
26
|
<view class="member-name">{{ item.showNickName }}
|
|
27
27
|
</view>
|
|
28
28
|
<view class="member-checked">
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
</view>
|
|
32
32
|
</view>
|
|
33
33
|
</template>
|
|
34
|
-
</virtual-scroller>
|
|
34
|
+
</im-virtual-scroller>
|
|
35
35
|
</view>
|
|
36
36
|
</view>
|
|
37
37
|
</u-popup>
|
|
@@ -39,6 +39,9 @@
|
|
|
39
39
|
|
|
40
40
|
|
|
41
41
|
<script setup lang="ts">
|
|
42
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
43
|
+
import ImVirtualScroller from '../im-virtual-scroller/im-virtual-scroller.vue'
|
|
44
|
+
|
|
42
45
|
interface Props {
|
|
43
46
|
group?: any;
|
|
44
47
|
members?: any[];
|
|
@@ -4,14 +4,14 @@
|
|
|
4
4
|
<div class="group-rtc-join">
|
|
5
5
|
<div class="host-info">
|
|
6
6
|
<div>发起人</div>
|
|
7
|
-
<head-image :name="rtcInfo.host.nickName" :url="rtcInfo.host.headImage" :size="80"
|
|
7
|
+
<im-head-image :name="rtcInfo.host.nickName" :url="rtcInfo.host.headImage" :size="80" />
|
|
8
8
|
</div>
|
|
9
9
|
<div class="user-info">
|
|
10
10
|
<div>{{ rtcInfo.userInfos.length + '人正在通话中' }}</div>
|
|
11
11
|
<scroll-view scroll-x="true" scroll-left="120">
|
|
12
12
|
<view class="user-list">
|
|
13
13
|
<view v-for="user in rtcInfo.userInfos" class="user-item" :key="user.id">
|
|
14
|
-
<head-image :name="user.nickName" :url="user.headImage" :size="80"
|
|
14
|
+
<im-head-image :name="user.nickName" :url="user.headImage" :size="80" />
|
|
15
15
|
</view>
|
|
16
16
|
</view>
|
|
17
17
|
</scroll-view>
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
</template>
|
|
23
23
|
|
|
24
24
|
<script setup lang="ts">
|
|
25
|
+
import ImHeadImage from '../im-head-image/im-head-image.vue'
|
|
25
26
|
import { ref } from 'vue';
|
|
26
27
|
import { UserInfo } from '../../libs';
|
|
27
28
|
|
package/index.js
CHANGED
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import { Pinia } from './plugins/pinia.js'
|
|
2
2
|
import { UViewPlusPlugin } from './plugins/uview-plus.js'
|
|
3
|
-
// import ImSample from './components/im-sample/im-sample.vue'
|
|
4
|
-
|
|
5
|
-
// // 重要:为组件添加名称,以支持开发环境
|
|
6
|
-
// ImSample.name = 'ImSample'
|
|
7
|
-
|
|
8
|
-
// const components = [
|
|
9
|
-
// ImSample
|
|
10
|
-
// ]
|
|
11
3
|
|
|
12
4
|
const importFn = import.meta.glob('./components/im-*/im-*.vue', { eager: true })
|
|
13
5
|
const components = [];
|
package/package.json
CHANGED
package/types/components.d.ts
CHANGED
|
@@ -8,7 +8,7 @@ declare module 'vue' {
|
|
|
8
8
|
['im-chat-item']: typeof import('./components/chat-item')['ChatItem']
|
|
9
9
|
['im-chat-message-item']: typeof import('./components/chat-message-item')['ChatMessageItem']
|
|
10
10
|
['im-chat-record']: typeof import('./components/chat-record')['ChatRecord']
|
|
11
|
-
['im-
|
|
11
|
+
['im-file-upload']: typeof import('./components/file-upload')['FileUpload']
|
|
12
12
|
['im-friend-item']: typeof import('./components/friend-item')['FriendItem']
|
|
13
13
|
['im-group-item']: typeof import('./components/group-item')['GroupItem']
|
|
14
14
|
['im-group-member-selector']: typeof import('./components/group-member-selector')['GroupMemberSelector']
|
|
File without changes
|