@webitel/ui-chats 0.1.43 → 0.1.44

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webitel/ui-chats",
3
- "version": "0.1.43",
3
+ "version": "0.1.44",
4
4
  "description": "Reusable Webitel Frontend Code for Chats UI",
5
5
  "workspaces": [
6
6
  "../../",
@@ -21,49 +21,53 @@
21
21
  />
22
22
  </div>
23
23
  <!-- click.stop prevents focus on textarea and allows to select the message-new text -->
24
- <message-blocked-error v-if="message.file?.malware" @click.stop />
25
- <message-size-exceeded-error
26
- v-else-if="isFileSizeExceeded"
27
- :self-side="isSelfSide"
24
+ <div
25
+ class="chat-message__body"
26
+ :class="{ 'chat-message__body--malware': isFileMalware }"
28
27
  @click.stop
29
- />
30
- <div class="chat-message__body" v-else @click.stop>
31
- <message-player
32
- v-if="media"
33
- :file="media"
34
- :type="media.mime"
35
- :size="size"
36
- @initialized="handlePlayerInitialize"
37
- />
38
- <message-image
39
- v-else-if="image"
40
- :file="image"
41
- @open="emit(MessageAction.ClickOnImage)"
42
- />
43
- <message-document
44
- v-else-if="document"
45
- :file="document"
46
- :self-side="isSelfSide"
47
- />
48
- <div
49
- v-if="props.message?.text"
50
- class="chat-message-text-wrapper"
51
- >
52
- <message-text
53
- :text="props.message.text"
54
- :with-timestamp-spacer="true"
28
+ >
29
+ <template v-if="hasFileError">
30
+ <message-blocked-error v-if="isFileMalware" />
31
+ <message-size-exceeded-error
32
+ v-else-if="isFileSizeExceeded"
33
+ :self-side="isSelfSide"
55
34
  />
56
35
  <message-time :date="props.message.createdAt" />
57
- </div>
58
- <message-time
59
- v-else
60
- :date="props.message.createdAt"
61
- />
36
+ </template>
37
+ <template v-else>
38
+ <message-player
39
+ v-if="media"
40
+ :file="media"
41
+ :type="media.mime"
42
+ :size="size"
43
+ @initialized="handlePlayerInitialize"
44
+ />
45
+ <message-image
46
+ v-else-if="image"
47
+ :file="image"
48
+ @open="emit(MessageAction.ClickOnImage)"
49
+ />
50
+ <message-document
51
+ v-else-if="document"
52
+ :file="document"
53
+ :self-side="isSelfSide"
54
+ />
55
+ <div
56
+ v-if="props.message?.text"
57
+ class="chat-message-text-wrapper"
58
+ >
59
+ <message-text
60
+ :text="props.message.text"
61
+ :with-timestamp-spacer="true"
62
+ />
63
+ <message-time :date="props.message.createdAt" />
64
+ </div>
65
+ <message-time
66
+ v-else
67
+ :date="props.message.createdAt"
68
+ />
69
+ </template>
62
70
  </div>
63
- <message-time
64
- v-if="message.file?.malware || isFileSizeExceeded"
65
- :date="props.message.createdAt"
66
- />
67
71
  </div>
68
72
 
69
73
  <slot name="after-message" />
@@ -112,6 +116,12 @@ const isFileSizeExceeded = computed<boolean>(
112
116
  () => !!props.message.file && !props.message.file?.size,
113
117
  );
114
118
 
119
+ const isFileMalware = computed<boolean>(() => !!props.message.file?.malware);
120
+
121
+ const hasFileError = computed<boolean>(
122
+ () => isFileMalware.value || isFileSizeExceeded.value,
123
+ );
124
+
115
125
  const isInternalMember = computed(
116
126
  () => props.message.member?.type === 'webitel',
117
127
  );
@@ -192,6 +202,11 @@ function handlePlayerInitialize(player) {
192
202
  place-self: flex-start;
193
203
  }
194
204
 
205
+ .chat-message__body--malware,
206
+ .chat-message--right .chat-message__body--malware {
207
+ background: var(--p-error-highlight-color);
208
+ }
209
+
195
210
  .chat-message-time {
196
211
  margin-top: var(--p-player-chat-message-gap);
197
212
  }
@@ -19,9 +19,6 @@ const { t } = useI18n();
19
19
  </script>
20
20
  <style scoped lang="scss">
21
21
  .chat-message-blocked-error {
22
- background: var(--p-error-highlight-color);
23
- border-radius: var(--spacing-xs);
24
- padding: var(--spacing-xs);
25
22
  display: flex;
26
23
  flex-direction: column;
27
24
  align-items: center;
@@ -31,9 +31,6 @@ withDefaults(defineProps<IChatMessageSizeExceededErrorProps>(), {
31
31
 
32
32
  <style scoped lang="scss">
33
33
  .chat-message-size-exceeded-error {
34
- background: var(--primary-light-color);
35
- border-radius: var(--spacing-xs);
36
- padding: var(--spacing-xs);
37
34
  display: flex;
38
35
  flex-direction: column;
39
36
  align-items: center;
@@ -42,7 +39,6 @@ withDefaults(defineProps<IChatMessageSizeExceededErrorProps>(), {
42
39
  text-align: center;
43
40
 
44
41
  &--right {
45
- background: var(--secondary-light-color);
46
42
  color: var(--secondary-on-color);
47
43
  place-self: flex-end;
48
44
  }