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.
Files changed (85) hide show
  1. package/components/im-avatar/im-avatar.vue +7 -7
  2. package/components/im-badge/im-badge.vue +326 -0
  3. package/components/im-button/im-button.vue +71 -34
  4. package/components/im-card/im-card.vue +563 -0
  5. package/components/im-chat-item/im-chat-item.vue +5 -4
  6. package/components/im-col/im-col.vue +191 -0
  7. package/components/im-dialog/im-dialog.vue +543 -0
  8. package/components/im-double-tap-view/im-double-tap-view.vue +93 -0
  9. package/components/im-emoji-picker/im-emoji-picker.vue +1143 -0
  10. package/components/im-friend-item/im-friend-item.vue +1 -1
  11. package/components/im-group-item/im-group-item.vue +1 -1
  12. package/components/im-group-member-selector/im-group-member-selector.vue +5 -5
  13. package/components/im-group-rtc-join/im-group-rtc-join.vue +8 -8
  14. package/components/im-icon/im-icon.vue +593 -0
  15. package/components/im-image-upload/im-image-upload.vue +0 -2
  16. package/components/im-link/im-link.vue +628 -0
  17. package/components/im-loading/im-loading.vue +13 -4
  18. package/components/im-mention-picker/im-mention-picker.vue +8 -7
  19. package/components/im-message-action/im-message-action.vue +678 -0
  20. package/components/im-message-item/im-message-item.vue +28 -26
  21. package/components/im-message-list/im-message-list.vue +1108 -0
  22. package/components/im-modal/im-modal.vue +373 -0
  23. package/components/im-nav-bar/im-nav-bar.vue +689 -75
  24. package/components/im-parse/im-parse.vue +1054 -0
  25. package/components/im-popup/im-popup.vue +467 -0
  26. package/components/im-read-receipt/im-read-receipt.vue +10 -10
  27. package/components/im-row/im-row.vue +189 -0
  28. package/components/im-search/im-search.vue +762 -0
  29. package/components/im-sku/im-sku.vue +720 -0
  30. package/components/im-sku/utils/helper.ts +182 -0
  31. package/components/im-stepper/im-stepper.vue +585 -0
  32. package/components/im-stepper/utils/helper.ts +167 -0
  33. package/components/im-tabs/im-tabs.vue +1022 -0
  34. package/components/im-tabs/tabs-navigation.vue +489 -0
  35. package/components/im-tabs/utils/helper.ts +181 -0
  36. package/components/im-tabs-tab-pane/im-tabs-tab-pane.vue +145 -0
  37. package/components/im-upload/im-upload.vue +1236 -0
  38. package/components/im-voice-input/im-voice-input.vue +1 -1
  39. package/index.js +3 -5
  40. package/index.scss +19 -0
  41. package/libs/emoji-data.ts +229 -0
  42. package/libs/index.ts +16 -16
  43. package/package.json +1 -2
  44. package/styles/button.scss +33 -33
  45. package/theme.scss +2 -2
  46. package/types/components/badge.d.ts +42 -0
  47. package/types/components/button.d.ts +2 -1
  48. package/types/components/card.d.ts +122 -0
  49. package/types/components/col.d.ts +37 -0
  50. package/types/components/dialog.d.ts +125 -0
  51. package/types/components/double-tap-view.d.ts +31 -0
  52. package/types/components/emoji-picker.d.ts +121 -0
  53. package/types/components/group-rtc-join.d.ts +1 -1
  54. package/types/components/icon.d.ts +77 -0
  55. package/types/components/link.d.ts +55 -0
  56. package/types/components/loading.d.ts +1 -0
  57. package/types/components/message-action.d.ts +96 -0
  58. package/types/components/message-item.d.ts +2 -2
  59. package/types/components/message-list.d.ts +136 -0
  60. package/types/components/modal.d.ts +106 -0
  61. package/types/components/nav-bar.d.ts +125 -0
  62. package/types/components/parse.d.ts +90 -0
  63. package/types/components/popup.d.ts +58 -0
  64. package/types/components/row.d.ts +31 -0
  65. package/types/components/search.d.ts +54 -0
  66. package/types/components/sku.d.ts +195 -0
  67. package/types/components/stepper.d.ts +99 -0
  68. package/types/components/tabs-tab-pane.d.ts +27 -0
  69. package/types/components/tabs.d.ts +117 -0
  70. package/types/components/upload.d.ts +137 -0
  71. package/types/components.d.ts +19 -1
  72. package/types/index.d.ts +38 -1
  73. package/types/libs/index.d.ts +10 -10
  74. package/types/utils/base64.d.ts +5 -0
  75. package/types/utils/dom.d.ts +3 -0
  76. package/types/utils/enums.d.ts +4 -5
  77. package/types/utils/validator.d.ts +74 -0
  78. package/utils/base64.js +18 -0
  79. package/utils/dom.js +353 -1
  80. package/utils/enums.js +4 -5
  81. package/utils/validator.js +230 -0
  82. package/components/im-file-upload/im-file-upload.vue +0 -309
  83. package/plugins/uview-plus.js +0 -29
  84. package/types/components/arrow-bar.d.ts +0 -14
  85. 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" @longpress.prevent="$emit('longPressHead')" :id="msgInfo.sendId" :url="avatar"
11
- :name="showName" size="small" />
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>{{ showName }}</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
- <up-parse
22
- v-if="$url.containUrl(msgInfo.content) && !emoji.containEmoji(msgInfo.content)"
23
- class="message-text" :showImgMenu="false" :content="nodesText" />
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
- <u-link class="file-name" :under-line="true" color="#007BFF"
43
- :href="contentData.url" :text="contentData.name"></u-link>
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="40" icon-color="#656adf" :mask="false"></im-loading>
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.READED">已读</text>
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.readedCount }}人已读</text>
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
- showName: string;
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: 'longPressHead'): void;
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
- padding: 2rpx 20rpx;
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-mini;
293
- padding: 10rpx;
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: $im-bg;
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: $im-bg transparent transparent;
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: 2rpx;
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;