@aochuang/client-sdk 1.0.297 → 1.0.299

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.
@@ -243,9 +243,10 @@ export default {
243
243
  const cursorPos = this.cacheInputRange ? this.cacheInputRange.start : 0
244
244
  const nearsetInfo = getNearestString(inputValue, cursorPos)
245
245
  this.suggestionsNearsetInfo = nearsetInfo
246
- const nearest = (nearsetInfo.nearest || '').trim()
246
+ const nearest = this.normalizeSuggestionsKeyword(nearsetInfo)
247
247
  if (!nearest) {
248
248
  this.closeSuggestions()
249
+ return
249
250
  }
250
251
  this.loadSuggestions(nearest, nearsetInfo)
251
252
  }, 200)
@@ -254,7 +255,7 @@ export default {
254
255
  if (!this.fetchSuggestionsMethod) {
255
256
  return
256
257
  }
257
- keyword = keyword.trim()
258
+ keyword = this.normalizeSuggestionsKeyword(nearestInfo, keyword)
258
259
  this.suggestioning = true
259
260
  this.suggestionsKeyword = keyword
260
261
  clearTimeout(this._loadSuggestionsTimer)
@@ -268,6 +269,14 @@ export default {
268
269
  this.suggestioning = false
269
270
  })
270
271
  },
272
+ normalizeSuggestionsKeyword (nearestInfo, keyword) {
273
+ const nearest = keyword === undefined
274
+ ? (nearestInfo && nearestInfo.nearest) || ''
275
+ : keyword || ''
276
+ return nearestInfo && nearestInfo.isAtContext
277
+ ? nearest.trim()
278
+ : nearest.replace(/^\s+/, '')
279
+ },
271
280
  closeSuggestions () {
272
281
  this.$refs.suggestions && this.$refs.suggestions.close()
273
282
  },
@@ -38,19 +38,33 @@ export function getNearestString (inputStr, cursorPos) {
38
38
  break;
39
39
  }
40
40
  }
41
+
42
+ if (!isAtContext) {
43
+ let wordCursor = safeCursorPos - 1;
44
+ while (wordCursor >= 0 && /\s/.test(inputStr[wordCursor])) {
45
+ wordCursor--;
46
+ }
47
+ if (wordCursor < 0) {
48
+ return { nearest: '', start: safeCursorPos, end: safeCursorPos, isAtContext: false };
49
+ }
50
+ let start = wordCursor;
51
+ while (start > 0 && !/\s/.test(inputStr[start - 1])) {
52
+ start--;
53
+ }
54
+ return {
55
+ nearest: inputStr.slice(start, safeCursorPos),
56
+ start,
57
+ end: safeCursorPos,
58
+ isAtContext: false
59
+ };
60
+ }
41
61
 
42
62
  // 2. 根据上下文选择拆分模式
43
63
  let splitRegex, isSeparator;
44
64
 
45
- if (isAtContext) {
46
- // @ 成员场景:按 @ 字符拆分
47
- splitRegex = /(@)/;
48
- isSeparator = (part) => part === '@';
49
- } else {
50
- // 普通输入场景:按空白字符拆分
51
- splitRegex = /(\s+)/;
52
- isSeparator = (part) => /\s+/.test(part);
53
- }
65
+ // @ 成员场景:按 @ 字符拆分
66
+ splitRegex = /(@)/;
67
+ isSeparator = (part) => part === '@';
54
68
 
55
69
  // 拆分字符串(保留分隔符,用于定位)
56
70
  const parts = inputStr.split(splitRegex);
@@ -186,4 +200,4 @@ export function getNearestString (inputStr, cursorPos) {
186
200
  }
187
201
  }
188
202
  return { nearest, start, end, isAtContext };
189
- }
203
+ }
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="sdk-chat-panel-box" :class="[dir ? 'is-dir-' + dir : '', {'is-blank': blank, 'is-recalled': recalled}]">
2
+ <div class="sdk-chat-panel-box" :class="[dir ? 'is-dir-' + dir : '', {'is-blank': blank, 'is-recalled': recalled}]" @mouseenter="handleMouseEnter" @mouseleave="handleMouseLeave">
3
3
  <div class="sdk-chat-panel-box__avatar" @contextmenu="handleUserAvatarContextmenu" @click="handleUserAvatarClick">
4
4
  <template v-if="userData && userData.avatar">
5
5
  <sdk-user-avatar :src="userData.avatar"></sdk-user-avatar>
@@ -32,11 +32,18 @@
32
32
  </div>
33
33
  </div>
34
34
  <div class="sdk-chat-panel-box__foot">
35
- <component :is="inner_foot_vnode"></component>
36
- <slot name="foot"></slot>
37
- <span class="sdk-chat-panel-box__date">
38
- {{ sendTime }}
39
- </span>
35
+ <div class="sdk-chat-panel-box__foot-row" v-if="inner_foot_vnode">
36
+ <component :is="inner_foot_vnode"></component>
37
+ </div>
38
+ <div class="sdk-chat-panel-box__foot-row" v-if="$slots.foot">
39
+ <slot name="foot"></slot>
40
+ </div>
41
+ <div class="sdk-chat-panel-box__foot-row is-last">
42
+ <slot name="foot-bottom" :hover="hover"></slot>
43
+ <span class="sdk-chat-panel-box__date">
44
+ {{ sendTime }}
45
+ </span>
46
+ </div>
40
47
  </div>
41
48
  </div>
42
49
  </div>
@@ -111,6 +118,7 @@ export default {
111
118
  * }
112
119
  */
113
120
  userData: null,
121
+ hover: false,
114
122
  inner_href: this.href,
115
123
  inner_foot_vnode: null,
116
124
  inner_bg_color: this.bgColor,
@@ -236,6 +244,12 @@ export default {
236
244
  },
237
245
  handleBodyContextMenu (evt) {
238
246
  this.SdkChatPanelChat && this.SdkChatPanelChat.triggerMessageContentContextMenu(evt)
247
+ },
248
+ handleMouseEnter () {
249
+ this.hover = true
250
+ },
251
+ handleMouseLeave () {
252
+ this.hover = false
239
253
  }
240
254
  }
241
255
  }
@@ -257,6 +271,10 @@ export default {
257
271
  .sdk-chat-panel-box__msg-arrow-main{
258
272
  left: 2px;
259
273
  }
274
+ .sdk-chat-panel-box__foot-row{
275
+ flex-direction: row-reverse;
276
+ justify-content: flex-end;
277
+ }
260
278
  }
261
279
  &.is-dir-right {
262
280
  flex-direction: row-reverse;
@@ -278,6 +296,10 @@ export default {
278
296
  .sdk-chat-panel-box__msg-arrow-main{
279
297
  right: 2px;
280
298
  }
299
+ .sdk-chat-panel-box__foot-row{
300
+ flex-direction: row;
301
+ justify-content: flex-end;
302
+ }
281
303
  }
282
304
  &.is-recalled{
283
305
  .sdk-chat-panel-box__msg{
@@ -308,9 +330,13 @@ export default {
308
330
  flex-direction: row;
309
331
  align-items: center;
310
332
  }
311
- .sdk-chat-panel-box__foot{
333
+ .sdk-chat-panel-box__foot-row{
312
334
  line-height: 24px;
313
335
  }
336
+ .sdk-chat-panel-box__foot-row{
337
+ display: flex;
338
+ flex-direction: row;
339
+ }
314
340
  .sdk-chat-panel-box__date{
315
341
  font-size: 12px;
316
342
  color: #888;
@@ -223,7 +223,7 @@ export default {
223
223
  border-radius: 3px;
224
224
  padding: 8px;
225
225
  margin-top: 6px;
226
- display: flex;
226
+ display: inline-flex;
227
227
  flex-direction: row;
228
228
  max-width: 100%;
229
229
  line-height: 1.5em;
@@ -20,6 +20,9 @@
20
20
  <template slot="foot">
21
21
  <slot name="box-append" :item="item"></slot>
22
22
  </template>
23
+ <template slot="foot-bottom" slot-scope="{ hover }">
24
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
25
+ </template>
23
26
  <sdk-chat-control-text
24
27
  v-bind="configData"
25
28
  :id="item.id"
@@ -40,8 +43,11 @@
40
43
  @user-avatar-click="handleUserAvatarClick"
41
44
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
42
45
  >
43
- <template slot="foot">
44
- <slot name="box-append" :item="item"></slot>
46
+ <template slot="foot" slot-scope="{ hover }">
47
+ <slot name="box-append" :item="item" :hover="hover"></slot>
48
+ </template>
49
+ <template slot="foot-bottom" slot-scope="{ hover }">
50
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
45
51
  </template>
46
52
  <sdk-chat-control-image
47
53
  v-bind="configData"
@@ -63,8 +69,11 @@
63
69
  @user-avatar-click="handleUserAvatarClick"
64
70
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
65
71
  >
66
- <template slot="foot">
67
- <slot name="box-append" :item="item"></slot>
72
+ <template slot="foot" slot-scope="{ hover }">
73
+ <slot name="box-append" :item="item" :hover="hover"></slot>
74
+ </template>
75
+ <template slot="foot-bottom" slot-scope="{ hover }">
76
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
68
77
  </template>
69
78
  <sdk-chat-control-video
70
79
  v-bind="configData"
@@ -86,8 +95,11 @@
86
95
  @user-avatar-click="handleUserAvatarClick"
87
96
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
88
97
  >
89
- <template slot="foot">
90
- <slot name="box-append" :item="item"></slot>
98
+ <template slot="foot" slot-scope="{ hover }">
99
+ <slot name="box-append" :item="item" :hover="hover"></slot>
100
+ </template>
101
+ <template slot="foot-bottom" slot-scope="{ hover }">
102
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
91
103
  </template>
92
104
  <sdk-chat-control-voice
93
105
  v-bind="configData"
@@ -111,8 +123,11 @@
111
123
  @user-avatar-click="handleUserAvatarClick"
112
124
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
113
125
  >
114
- <template slot="foot">
115
- <slot name="box-append" :item="item"></slot>
126
+ <template slot="foot" slot-scope="{ hover }">
127
+ <slot name="box-append" :item="item" :hover="hover"></slot>
128
+ </template>
129
+ <template slot="foot-bottom" slot-scope="{ hover }">
130
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
116
131
  </template>
117
132
  <sdk-chat-control-music
118
133
  v-bind="configData"
@@ -135,8 +150,11 @@
135
150
  @user-avatar-click="handleUserAvatarClick"
136
151
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
137
152
  >
138
- <template slot="foot">
139
- <slot name="box-append" :item="item"></slot>
153
+ <template slot="foot" slot-scope="{ hover }">
154
+ <slot name="box-append" :item="item" :hover="hover"></slot>
155
+ </template>
156
+ <template slot="foot-bottom" slot-scope="{ hover }">
157
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
140
158
  </template>
141
159
  <sdk-chat-control-share-card
142
160
  v-bind="configData"
@@ -160,8 +178,11 @@
160
178
  @user-avatar-click="handleUserAvatarClick"
161
179
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
162
180
  >
163
- <template slot="foot">
164
- <slot name="box-append" :item="item"></slot>
181
+ <template slot="foot" slot-scope="{ hover }">
182
+ <slot name="box-append" :item="item" :hover="hover"></slot>
183
+ </template>
184
+ <template slot="foot-bottom" slot-scope="{ hover }">
185
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
165
186
  </template>
166
187
  <template slot-scope="{ updateProp }">
167
188
  <sdk-chat-control-location
@@ -185,8 +206,11 @@
185
206
  @user-avatar-click="handleUserAvatarClick"
186
207
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
187
208
  >
188
- <template slot="foot">
189
- <slot name="box-append" :item="item"></slot>
209
+ <template slot="foot" slot-scope="{ hover }">
210
+ <slot name="box-append" :item="item" :hover="hover"></slot>
211
+ </template>
212
+ <template slot="foot-bottom" slot-scope="{ hover }">
213
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
190
214
  </template>
191
215
  <sdk-chat-control-real-time-position
192
216
  v-bind="configData"
@@ -209,8 +233,11 @@
209
233
  @user-avatar-click="handleUserAvatarClick"
210
234
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
211
235
  >
212
- <template slot="foot">
213
- <slot name="box-append" :item="item"></slot>
236
+ <template slot="foot" slot-scope="{ hover }">
237
+ <slot name="box-append" :item="item" :hover="hover"></slot>
238
+ </template>
239
+ <template slot="foot-bottom" slot-scope="{ hover }">
240
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
214
241
  </template>
215
242
  <template slot-scope="{ updateStyle }">
216
243
  <sdk-chat-control-transfer
@@ -236,8 +263,11 @@
236
263
  @user-avatar-click="handleUserAvatarClick"
237
264
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
238
265
  >
239
- <template slot="foot">
240
- <slot name="box-append" :item="item"></slot>
266
+ <template slot="foot" slot-scope="{ hover }">
267
+ <slot name="box-append" :item="item" :hover="hover"></slot>
268
+ </template>
269
+ <template slot="foot-bottom" slot-scope="{ hover }">
270
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
241
271
  </template>
242
272
  <sdk-chat-control-red-envelopes
243
273
  v-bind="configData"
@@ -260,8 +290,11 @@
260
290
  @user-avatar-click="handleUserAvatarClick"
261
291
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
262
292
  >
263
- <template slot="foot">
264
- <slot name="box-append" :item="item"></slot>
293
+ <template slot="foot" slot-scope="{ hover }">
294
+ <slot name="box-append" :item="item" :hover="hover"></slot>
295
+ </template>
296
+ <template slot="foot-bottom" slot-scope="{ hover }">
297
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
265
298
  </template>
266
299
  <sdk-chat-control-company-card
267
300
  v-bind="configData"
@@ -284,8 +317,11 @@
284
317
  @user-avatar-click="handleUserAvatarClick"
285
318
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
286
319
  >
287
- <template slot="foot">
288
- <slot name="box-append" :item="item"></slot>
320
+ <template slot="foot" slot-scope="{ hover }">
321
+ <slot name="box-append" :item="item" :hover="hover"></slot>
322
+ </template>
323
+ <template slot="foot-bottom" slot-scope="{ hover }">
324
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
289
325
  </template>
290
326
  <sdk-chat-control-channel-video
291
327
  v-bind="configData"
@@ -308,8 +344,11 @@
308
344
  @user-avatar-click="handleUserAvatarClick"
309
345
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
310
346
  >
311
- <template slot="foot">
312
- <slot name="box-append" :item="item"></slot>
347
+ <template slot="foot" slot-scope="{ hover }">
348
+ <slot name="box-append" :item="item" :hover="hover"></slot>
349
+ </template>
350
+ <template slot="foot-bottom" slot-scope="{ hover }">
351
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
313
352
  </template>
314
353
  <sdk-chat-control-channel-video-card
315
354
  v-bind="configData"
@@ -332,8 +371,11 @@
332
371
  @user-avatar-click="handleUserAvatarClick"
333
372
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
334
373
  >
335
- <template slot="foot">
336
- <slot name="box-append" :item="item"></slot>
374
+ <template slot="foot" slot-scope="{ hover }">
375
+ <slot name="box-append" :item="item" :hover="hover"></slot>
376
+ </template>
377
+ <template slot="foot-bottom" slot-scope="{ hover }">
378
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
337
379
  </template>
338
380
  <sdk-chat-control-channel-live
339
381
  v-bind="configData"
@@ -356,8 +398,11 @@
356
398
  @user-avatar-click="handleUserAvatarClick"
357
399
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
358
400
  >
359
- <template slot="foot">
360
- <slot name="box-append" :item="item"></slot>
401
+ <template slot="foot" slot-scope="{ hover }">
402
+ <slot name="box-append" :item="item" :hover="hover"></slot>
403
+ </template>
404
+ <template slot="foot-bottom" slot-scope="{ hover }">
405
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
361
406
  </template>
362
407
  <template slot-scope="{ updateProp }">
363
408
  <sdk-chat-control-url
@@ -383,8 +428,11 @@
383
428
  @user-avatar-click="handleUserAvatarClick"
384
429
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
385
430
  >
386
- <template slot="foot">
387
- <slot name="box-append" :item="item"></slot>
431
+ <template slot="foot" slot-scope="{ hover }">
432
+ <slot name="box-append" :item="item" :hover="hover"></slot>
433
+ </template>
434
+ <template slot="foot-bottom" slot-scope="{ hover }">
435
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
388
436
  </template>
389
437
  <template slot-scope="{ updateProp }">
390
438
  <sdk-chat-control-file-url
@@ -408,8 +456,11 @@
408
456
  @user-avatar-click="handleUserAvatarClick"
409
457
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
410
458
  >
411
- <template slot="foot">
412
- <slot name="box-append" :item="item"></slot>
459
+ <template slot="foot" slot-scope="{ hover }">
460
+ <slot name="box-append" :item="item" :hover="hover"></slot>
461
+ </template>
462
+ <template slot="foot-bottom" slot-scope="{ hover }">
463
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
413
464
  </template>
414
465
  <sdk-chat-control-custom-expression
415
466
  v-bind="configData"
@@ -432,8 +483,11 @@
432
483
  @user-avatar-click="handleUserAvatarClick"
433
484
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
434
485
  >
435
- <template slot="foot">
436
- <slot name="box-append" :item="item"></slot>
486
+ <template slot="foot" slot-scope="{ hover }">
487
+ <slot name="box-append" :item="item" :hover="hover"></slot>
488
+ </template>
489
+ <template slot="foot-bottom" slot-scope="{ hover }">
490
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
437
491
  </template>
438
492
  <sdk-chat-control-calling
439
493
  v-bind="configData"
@@ -465,8 +519,11 @@
465
519
  @user-avatar-click="handleUserAvatarClick"
466
520
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
467
521
  >
468
- <template slot="foot">
469
- <slot name="box-append" :item="item"></slot>
522
+ <template slot="foot" slot-scope="{ hover }">
523
+ <slot name="box-append" :item="item" :hover="hover"></slot>
524
+ </template>
525
+ <template slot="foot-bottom" slot-scope="{ hover }">
526
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
470
527
  </template>
471
528
  <sdk-chat-control-text-with-at
472
529
  v-bind="configData"
@@ -543,8 +600,11 @@
543
600
  @user-avatar-click="handleUserAvatarClick"
544
601
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
545
602
  >
546
- <template slot="foot">
547
- <slot name="box-append" :item="item"></slot>
603
+ <template slot="foot" slot-scope="{ hover }">
604
+ <slot name="box-append" :item="item" :hover="hover"></slot>
605
+ </template>
606
+ <template slot="foot-bottom" slot-scope="{ hover }">
607
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
548
608
  </template>
549
609
  <template slot-scope="{ setFootVnode }">
550
610
  <sdk-chat-control-quote-message
@@ -581,8 +641,11 @@
581
641
  @user-avatar-click="handleUserAvatarClick"
582
642
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
583
643
  >
584
- <template slot="foot">
585
- <slot name="box-append" :item="item"></slot>
644
+ <template slot="foot" slot-scope="{ hover }">
645
+ <slot name="box-append" :item="item" :hover="hover"></slot>
646
+ </template>
647
+ <template slot="foot-bottom" slot-scope="{ hover }">
648
+ <slot name="box-append-bottom" :item="item" :hover="hover"></slot>
586
649
  </template>
587
650
  <sdk-chat-control-unknow
588
651
  :id="item.id"
@@ -24,9 +24,12 @@
24
24
  @user-avatar-click="handleUserAvatarClick"
25
25
  @user-avatar-contextmenu="handleUserAvatarContextmenu"
26
26
  >
27
- <template slot="box-append" slots-scope="{}">
27
+ <template slot="box-append">
28
28
  <slot name="box-append" :item="item"></slot>
29
29
  </template>
30
+ <template slot="box-append-bottom" slot-scope="scope">
31
+ <slot name="box-append-bottom" :item="item" :hover="scope.hover"></slot>
32
+ </template>
30
33
  <template slot="chat-append" slot-scope="{ item, updateProp }">
31
34
  <chat-panel-chat-status
32
35
  :data="item"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aochuang/client-sdk",
3
- "version": "1.0.297",
3
+ "version": "1.0.299",
4
4
  "description": "",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"