@uzum-tech/ui 1.12.12 → 1.12.14

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.
@@ -10,6 +10,7 @@ import { chatLight } from '../styles';
10
10
  import { useConfig, useTheme, useThemeClass, useLocale } from '../../_mixins';
11
11
  import { CheckmarkDoneSharp, MdTime, PersonOutline, Refresh } from '../../_internal/icons';
12
12
  import { UFlex } from '../../flex';
13
+ import { UText } from '../../typography';
13
14
  const statusIconMapper = {
14
15
  [MessageStatus.READ]: CheckmarkDoneSharp,
15
16
  [MessageStatus.PENDING]: MdTime,
@@ -127,24 +128,21 @@ export default defineComponent({
127
128
  : '?';
128
129
  }
129
130
  })),
130
- header: () => (h("span", { class: `${mergedClsPrefixRef.value}-chat-sidebar__item-title` }, typeof item.title === 'function' ? item.title() : item.title)),
131
- description: () => (h("span", { class: [
131
+ header: () => (h(UText, { class: `${mergedClsPrefixRef.value}-chat-sidebar__item-title`, variant: "body-l-medium" }, {
132
+ default: () => typeof item.title === 'function' ? item.title() : item.title
133
+ })),
134
+ description: () => (h(UText, { class: [
132
135
  `${mergedClsPrefixRef.value}-chat-sidebar__item-subtitle`,
133
136
  isTyping && 'typing'
134
- ], style: {
135
- display: 'block',
136
- overflow: 'hidden',
137
- textOverflow: 'ellipsis',
138
- whiteSpace: 'nowrap',
139
- minWidth: 0,
140
- maxWidth: '100%'
141
- } }, isTyping
142
- ? mergedTypingTextRef.value
143
- : typeof item.subtitle === 'string'
144
- ? item.subtitle
145
- : typeof item.subtitle === 'function'
146
- ? item.subtitle()
147
- : item.subtitle)),
137
+ ], variant: "body-m-medium" }, {
138
+ default: () => isTyping
139
+ ? mergedTypingTextRef.value
140
+ : typeof item.subtitle === 'string'
141
+ ? item.subtitle
142
+ : typeof item.subtitle === 'function'
143
+ ? item.subtitle()
144
+ : item.subtitle
145
+ })),
148
146
  suffix: () => {
149
147
  const displayUnreadCount = item.unreadCount || 0;
150
148
  const hasUnreadIncoming = displayUnreadCount > 0;
@@ -6205,7 +6205,6 @@ declare const _default: import("vue").DefineComponent<{
6205
6205
  }>;
6206
6206
  renderMessage: (message: ChatMessageData) => JSX.Element;
6207
6207
  renderMarkMessage: (message: ChatMessageData) => JSX.Element;
6208
- renderTypingIndicator: () => JSX.Element;
6209
6208
  renderSkeletonMessage: (isOwn: boolean, index: number) => JSX.Element;
6210
6209
  renderDateSeparator: (date: string) => JSX.Element;
6211
6210
  renderUnreadNotification: () => JSX.Element;
@@ -95,7 +95,6 @@ export default defineComponent({
95
95
  };
96
96
  });
97
97
  const themeClassHandle = useThemeClass('chat-messages', computed(() => ''), cssVarsRef, props);
98
- const mergedTypingTextRef = computed(() => { var _a; return (_a = props.typingText) !== null && _a !== void 0 ? _a : localeRef.value.typingText; });
99
98
  const mergedRetryTextRef = computed(() => { var _a; return (_a = props.retryText) !== null && _a !== void 0 ? _a : localeRef.value.retryText; });
100
99
  const mergedUnreadNotificationTextRef = computed(() => { var _a; return (_a = props.unreadNotificationText) !== null && _a !== void 0 ? _a : localeRef.value.unreadNotificationText; });
101
100
  const unreadMessagesCount = computed(() => {
@@ -260,23 +259,6 @@ export default defineComponent({
260
259
  ], theme: themeRef.value.peers.StatusIcon, themeOverrides: themeRef.value.peerOverrides.StatusIcon }))))))))));
261
260
  return messageContent;
262
261
  };
263
- const renderTypingIndicator = () => {
264
- return (h("div", { class: [
265
- `${mergedClsPrefixRef.value}-chat-main__message`,
266
- `${mergedClsPrefixRef.value}-chat-main__message--other`
267
- ] },
268
- h("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-wrapper` },
269
- h("div", { class: [
270
- `${mergedClsPrefixRef.value}-chat-main__message-bubble`,
271
- `${mergedClsPrefixRef.value}-chat-main__message-bubble--other`,
272
- `${mergedClsPrefixRef.value}-chat-main__message-bubble--typing`
273
- ] }),
274
- h("div", { class: [
275
- `${mergedClsPrefixRef.value}-chat-main__message-meta`,
276
- `${mergedClsPrefixRef.value}-chat-main__message-meta--other`
277
- ] },
278
- h("span", { class: `${mergedClsPrefixRef.value}-chat-main__message-time` }, mergedTypingTextRef.value)))));
279
- };
280
262
  const renderSkeletonMessage = (isOwn, index) => {
281
263
  return (h("div", { key: `skeleton-${index}`, class: [
282
264
  `${mergedClsPrefixRef.value}-chat-main__message`,
@@ -306,7 +288,6 @@ export default defineComponent({
306
288
  mergedTheme: themeRef,
307
289
  renderMessage,
308
290
  renderMarkMessage,
309
- renderTypingIndicator,
310
291
  renderSkeletonMessage,
311
292
  renderDateSeparator,
312
293
  renderUnreadNotification,
@@ -320,9 +301,9 @@ export default defineComponent({
320
301
  };
321
302
  },
322
303
  render() {
323
- var _a, _b, _c;
304
+ var _a, _b;
324
305
  (_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);
325
- const { mergedClsPrefixRef, renderMessage, renderMarkMessage, renderTypingIndicator, renderSkeletonMessage, renderDateSeparator, renderUnreadNotification } = this;
306
+ const { mergedClsPrefixRef, renderMessage, renderMarkMessage, renderSkeletonMessage, renderDateSeparator, renderUnreadNotification } = this;
326
307
  if (this.loading) {
327
308
  return (h("div", { class: [`${mergedClsPrefixRef}-chat`, this.themeClass], style: this.cssVars },
328
309
  h("div", { class: `${mergedClsPrefixRef}-chat-main`, style: {
@@ -383,7 +364,6 @@ export default defineComponent({
383
364
  id: 'unread-notification'
384
365
  });
385
366
  }
386
- const isTyping = this.selectedChatId && ((_c = this.typingChatIds) === null || _c === void 0 ? void 0 : _c.includes(this.selectedChatId));
387
367
  return (h("div", { class: [`${mergedClsPrefixRef}-chat`, this.themeClass], style: this.cssVars },
388
368
  h("div", { class: `${mergedClsPrefixRef}-chat-main`, style: {
389
369
  border: 'none',
@@ -398,21 +378,19 @@ export default defineComponent({
398
378
  event.preventDefault();
399
379
  this.contextMenuShow = false;
400
380
  }
401
- } },
402
- messagesWithDates.map((item) => {
403
- var _a;
404
- if (item.type === 'date-separator') {
405
- return renderDateSeparator((_a = item.date) !== null && _a !== void 0 ? _a : '');
406
- }
407
- if (item.type === 'unread-notification') {
408
- return renderUnreadNotification();
409
- }
410
- const message = item;
411
- if (message.type === ChatMessageType.MARK) {
412
- return renderMarkMessage(message);
413
- }
414
- return renderMessage(message);
415
- }),
416
- isTyping && renderTypingIndicator()))));
381
+ } }, messagesWithDates.map((item) => {
382
+ var _a;
383
+ if (item.type === 'date-separator') {
384
+ return renderDateSeparator((_a = item.date) !== null && _a !== void 0 ? _a : '');
385
+ }
386
+ if (item.type === 'unread-notification') {
387
+ return renderUnreadNotification();
388
+ }
389
+ const message = item;
390
+ if (message.type === ChatMessageType.MARK) {
391
+ return renderMarkMessage(message);
392
+ }
393
+ return renderMessage(message);
394
+ })))));
417
395
  }
418
396
  });
@@ -44,6 +44,11 @@ export default defineComponent({
44
44
  return 0;
45
45
  return messagesRef.value.filter((msg) => !msg.isOwn && msg.status === MessageStatus.UNREAD).length;
46
46
  });
47
+ const isTyping = computed(() => {
48
+ if (!selectedChatRef.value || !typingChatIdsRef.value)
49
+ return false;
50
+ return typingChatIdsRef.value.includes(selectedChatRef.value.id);
51
+ });
47
52
  const showNotificationManually = ref(false);
48
53
  const hasUnreadMessages = ref(false);
49
54
  const unreadCountOnOpen = ref(0);
@@ -183,9 +188,16 @@ export default defineComponent({
183
188
  const keyId = toKeyString(chat === null || chat === void 0 ? void 0 : chat.id);
184
189
  const keyTitle = toKeyString(chat === null || chat === void 0 ? void 0 : chat.title);
185
190
  return (h(Fragment, null,
186
- h(UText, { key: `${keyId}-${keyTitle}`, variant: "heading-s-bold", class: `${mergedClsPrefixRef.value}-chat-main__header-title`, theme: mergedThemeRef.value.peers.Typography, themeOverrides: mergedThemeRef.value.peerOverrides.Typography }, {
187
- default: () => { var _a, _b; return (_b = (_a = selectedChatRef.value) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : ''; }
188
- }),
191
+ h(UFlex, { vertical: true, size: [0, 0], justify: 'flex-start"' },
192
+ h(UText, { key: `${keyId}-${keyTitle}`, variant: "heading-s-bold", class: `${mergedClsPrefixRef.value}-chat-main__header-title`, theme: mergedThemeRef.value.peers.Typography, themeOverrides: mergedThemeRef.value.peerOverrides.Typography }, {
193
+ default: () => { var _a, _b; return (_b = (_a = selectedChatRef.value) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : ''; }
194
+ }),
195
+ isTyping.value && (h(UText, { class: [
196
+ `${mergedClsPrefixRef.value}-chat-main__header-subtitle`,
197
+ 'typing'
198
+ ], variant: "body-m-medium" }, {
199
+ default: () => { var _a; return (_a = typingTextRef.value) !== null && _a !== void 0 ? _a : ''; }
200
+ }))),
189
201
  h(UFlex, { align: "center", size: "small", class: `${mergedClsPrefixRef.value}-chat-main__header-actions` }, {
190
202
  default: () => resolveSlot(slots.headerActions, () => {
191
203
  const shareButtonProps = Object.assign(Object.assign({}, headerButtonPropsRef.value), headerShareButtonPropsRef.value);
@@ -72,53 +72,28 @@ export default cB('chat', `
72
72
  background-color: var(--u-sidebar-item-background-color-selected);
73
73
  `, [c('&:hover', `
74
74
  background-color: var(--u-sidebar-item-background-color-selected);
75
- `)]), cM('typing', `
76
- .u-list-item__description {
77
- color: var(--u-color-primary) !important;
78
- font-style: italic;
79
- }
80
- `), c('&:hover', `
75
+ `)]), c('&:hover', `
81
76
  background-color: var(--u-sidebar-item-background-color-hover);
82
77
  `, [cM('selected', `
83
78
  background-color: var(--u-sidebar-item-background-color-selected);
84
79
  `)])]), cE('item-title', `
85
- font-weight: 500;
86
- font-size: 14px;
87
- line-height: 20px;
88
80
  color: var(--u-sidebar-item-text-color);
89
81
  overflow: hidden;
90
82
  text-overflow: ellipsis;
91
83
  white-space: nowrap;
84
+ margin-bottom: 0;
92
85
  `), cE('item-subtitle', `
93
- font-size: 12px;
94
- line-height: 16px;
86
+ display: block;
95
87
  color: var(--u-sidebar-item-subtitle-color);
96
88
  overflow: hidden;
97
89
  text-overflow: ellipsis;
98
90
  white-space: nowrap;
99
- `, [cM('typing', `
100
- color: var(--u-color-primary);
101
- font-style: italic;
102
- `)]), cE('item-main', `
91
+ minWidth: 0;
92
+ maxWidth: 100%;
93
+ `), cE('item-main', `
103
94
  flex: 1;
104
95
  min-width: 0;
105
96
  margin-right: 12px;
106
- `), cE('item-title', `
107
- font-weight: 500;
108
- font-size: 14px;
109
- line-height: 20px;
110
- color: var(--u-text-color-base);
111
- margin-bottom: 2px;
112
- overflow: hidden;
113
- text-overflow: ellipsis;
114
- white-space: nowrap;
115
- `), cE('item-subtitle', `
116
- font-size: 12px;
117
- line-height: 16px;
118
- color: var(--u-text-color-disabled);
119
- overflow: hidden;
120
- text-overflow: ellipsis;
121
- white-space: nowrap;
122
97
  `), cE('item-indicators', `
123
98
  display: flex;
124
99
  flex-direction: column;
@@ -157,10 +132,9 @@ export default cB('chat', `
157
132
  `, [cE('header', `
158
133
  border-bottom: 1px solid var(--u-border-color);
159
134
  width: 100%;
160
- padding: 24px 20px 8px 24px;
135
+ padding: 24px 20px 10px 24px;
161
136
  flex-shrink: 0;
162
137
  `), cE('header-title', `
163
- margin-top: 9px;
164
138
  color: var(--u-header-title-color);
165
139
  flex: 1;
166
140
  min-width: 0;
@@ -169,6 +143,14 @@ export default cB('chat', `
169
143
  white-space: nowrap;
170
144
  display: block;
171
145
  margin-right: 16px;
146
+ `), cE('header-subtitle', `
147
+ display: block;
148
+ color: var(--u-sidebar-item-subtitle-color);
149
+ overflow: hidden;
150
+ text-overflow: ellipsis;
151
+ white-space: nowrap;
152
+ minWidth: 0;
153
+ maxWidth: 100%;
172
154
  `), cE('header-actions', `
173
155
  padding: 4px;
174
156
  flex-shrink: 0;
@@ -1,8 +1,8 @@
1
- import { type PropType, type ComputedRef, type ExtractPropTypes } from 'vue';
1
+ import { type PropType, type ExtractPropTypes } from 'vue';
2
2
  import { type Hljs } from '../../_mixins';
3
3
  import type { UDateLocale, ULocale } from '../../locales';
4
4
  import type { GlobalTheme, GlobalThemeOverrides, GlobalComponentConfig, GlobalIconConfig } from './interface';
5
- import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
5
+ import type { RtlProp, Breakpoints, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
6
6
  import type { Katex } from './katex';
7
7
  export declare const configProviderProps: {
8
8
  readonly abstract: BooleanConstructor;
@@ -31,6 +31,10 @@ export declare const configProviderProps: {
31
31
  readonly breakpoints: PropType<Breakpoints>;
32
32
  readonly breakpointProps: PropType<BreakpointProps>;
33
33
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
34
+ readonly breakpointMode: {
35
+ readonly type: PropType<BreakpointMode>;
36
+ readonly default: "desktop-first";
37
+ };
34
38
  readonly preflightStyleDisabled: BooleanConstructor;
35
39
  readonly inlineThemeDisabled: {
36
40
  readonly type: BooleanConstructor;
@@ -70,6 +74,10 @@ declare const _default: import("vue").DefineComponent<{
70
74
  readonly breakpoints: PropType<Breakpoints>;
71
75
  readonly breakpointProps: PropType<BreakpointProps>;
72
76
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
77
+ readonly breakpointMode: {
78
+ readonly type: PropType<BreakpointMode>;
79
+ readonly default: "desktop-first";
80
+ };
73
81
  readonly preflightStyleDisabled: BooleanConstructor;
74
82
  readonly inlineThemeDisabled: {
75
83
  readonly type: BooleanConstructor;
@@ -81,11 +89,11 @@ declare const _default: import("vue").DefineComponent<{
81
89
  readonly default: undefined;
82
90
  };
83
91
  }, {
84
- mergedClsPrefix: ComputedRef<string>;
85
- mergedBordered: ComputedRef<boolean | undefined>;
86
- mergedNamespace: ComputedRef<string | undefined>;
87
- mergedTheme: ComputedRef<GlobalTheme | undefined>;
88
- mergedThemeOverrides: ComputedRef<GlobalThemeOverrides | undefined>;
92
+ mergedClsPrefix: import("vue").ComputedRef<string>;
93
+ mergedBordered: import("vue").ComputedRef<boolean | undefined>;
94
+ mergedNamespace: import("vue").ComputedRef<string | undefined>;
95
+ mergedTheme: import("vue").ComputedRef<GlobalTheme | undefined>;
96
+ mergedThemeOverrides: import("vue").ComputedRef<GlobalThemeOverrides | undefined>;
89
97
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
90
98
  readonly abstract: BooleanConstructor;
91
99
  readonly bordered: {
@@ -113,6 +121,10 @@ declare const _default: import("vue").DefineComponent<{
113
121
  readonly breakpoints: PropType<Breakpoints>;
114
122
  readonly breakpointProps: PropType<BreakpointProps>;
115
123
  readonly breakpointThemeOverrides: PropType<BreakpointThemeOverrides>;
124
+ readonly breakpointMode: {
125
+ readonly type: PropType<BreakpointMode>;
126
+ readonly default: "desktop-first";
127
+ };
116
128
  readonly preflightStyleDisabled: BooleanConstructor;
117
129
  readonly inlineThemeDisabled: {
118
130
  readonly type: BooleanConstructor;
@@ -128,6 +140,7 @@ declare const _default: import("vue").DefineComponent<{
128
140
  readonly bordered: boolean | undefined;
129
141
  readonly clsPrefix: string;
130
142
  readonly tag: string;
143
+ readonly breakpointMode: BreakpointMode;
131
144
  readonly preflightStyleDisabled: boolean;
132
145
  readonly inlineThemeDisabled: boolean;
133
146
  readonly as: string | undefined;
@@ -29,6 +29,10 @@ export const configProviderProps = {
29
29
  breakpoints: Object,
30
30
  breakpointProps: Object,
31
31
  breakpointThemeOverrides: Object,
32
+ breakpointMode: {
33
+ type: String,
34
+ default: 'desktop-first'
35
+ },
32
36
  preflightStyleDisabled: Boolean,
33
37
  inlineThemeDisabled: {
34
38
  type: Boolean,
@@ -53,7 +57,7 @@ export default defineComponent({
53
57
  const mergedThemeRef = computed(() => {
54
58
  const { theme } = props;
55
59
  if (theme === null)
56
- return undefined;
60
+ return;
57
61
  const inheritedTheme = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeRef.value;
58
62
  return theme === undefined
59
63
  ? inheritedTheme
@@ -61,30 +65,64 @@ export default defineComponent({
61
65
  ? theme
62
66
  : Object.assign({}, inheritedTheme, theme);
63
67
  });
64
- const getActiveBreakpointValue = (breakpointMap) => {
65
- if (!breakpointMap || !isBrowser) {
66
- return undefined;
67
- }
68
- const currentWidth = windowWidthRef.value;
68
+ const mergedBreakpointModeRef = computed(() => {
69
+ const { breakpointMode } = props;
70
+ return (breakpointMode ||
71
+ (UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointModeRef.value) ||
72
+ 'desktop-first');
73
+ });
74
+ const getMergedBreakpointValues = (breakpointMap) => {
75
+ if (!breakpointMap)
76
+ return;
69
77
  const breakpointWidths = Object.keys(breakpointMap)
70
78
  .map(Number)
71
- .filter((width) => width <= currentWidth)
72
- .sort((a, b) => b - a);
73
- if (breakpointWidths.length === 0) {
74
- return undefined;
79
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
80
+ const mergedMap = {};
81
+ let previousValue;
82
+ for (const width of breakpointWidths) {
83
+ if (previousValue !== undefined) {
84
+ mergedMap[width] = merge({}, previousValue, breakpointMap[width]);
85
+ }
86
+ else {
87
+ mergedMap[width] = breakpointMap[width];
88
+ }
89
+ previousValue = mergedMap[width];
90
+ }
91
+ return mergedMap;
92
+ };
93
+ const getActiveBreakpointValue = (breakpointMap, mode = 'desktop-first') => {
94
+ if (!breakpointMap || !isBrowser)
95
+ return;
96
+ const mergedMap = getMergedBreakpointValues(breakpointMap);
97
+ if (!mergedMap)
98
+ return;
99
+ const currentWidth = windowWidthRef.value;
100
+ const breakpointWidths = Object.keys(mergedMap).map(Number);
101
+ let matchingBreakpoints;
102
+ if (mode === 'mobile-first') {
103
+ matchingBreakpoints = breakpointWidths
104
+ .filter((width) => width >= currentWidth)
105
+ .sort((leftWidth, rightWidth) => leftWidth - rightWidth);
106
+ }
107
+ else {
108
+ matchingBreakpoints = breakpointWidths
109
+ .filter((width) => width <= currentWidth)
110
+ .sort((leftWidth, rightWidth) => rightWidth - leftWidth);
75
111
  }
76
- const activeBreakpoint = breakpointWidths[0];
77
- return breakpointMap[activeBreakpoint];
112
+ if (matchingBreakpoints.length === 0)
113
+ return;
114
+ const activeBreakpoint = matchingBreakpoints[0];
115
+ return mergedMap[activeBreakpoint];
78
116
  };
79
- const activeBreakPointThemeOverridesRef = computed(() => {
117
+ const activeBreakpointThemeOverridesRef = computed(() => {
80
118
  const { breakpointThemeOverrides } = props;
81
119
  const breakpointThemeOverridesToUse = breakpointThemeOverrides !== null && breakpointThemeOverrides !== void 0 ? breakpointThemeOverrides : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointThemeOverridesRef.value;
82
- return getActiveBreakpointValue(breakpointThemeOverridesToUse);
120
+ return getActiveBreakpointValue(breakpointThemeOverridesToUse, mergedBreakpointModeRef.value);
83
121
  });
84
122
  const mergedThemeOverridesRef = computed(() => {
85
123
  const { themeOverrides } = props;
86
124
  if (themeOverrides === null)
87
- return undefined;
125
+ return;
88
126
  let baseThemeOverrides;
89
127
  if (themeOverrides === undefined) {
90
128
  baseThemeOverrides = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeOverridesRef.value;
@@ -98,14 +136,14 @@ export default defineComponent({
98
136
  baseThemeOverrides = merge({}, inheritedThemeOverrides, themeOverrides);
99
137
  }
100
138
  }
101
- const activeBreakPointThemeOverrides = activeBreakPointThemeOverridesRef.value;
102
- if (!activeBreakPointThemeOverrides) {
139
+ const activeBreakpointThemeOverrides = activeBreakpointThemeOverridesRef.value;
140
+ if (!activeBreakpointThemeOverrides) {
103
141
  return baseThemeOverrides;
104
142
  }
105
143
  if (!baseThemeOverrides) {
106
- return activeBreakPointThemeOverrides;
144
+ return activeBreakpointThemeOverrides;
107
145
  }
108
- return merge({}, baseThemeOverrides, activeBreakPointThemeOverrides);
146
+ return merge({}, baseThemeOverrides, activeBreakpointThemeOverrides);
109
147
  });
110
148
  const mergedNamespaceRef = useMemo(() => {
111
149
  const { namespace } = props;
@@ -140,24 +178,24 @@ export default defineComponent({
140
178
  window.removeEventListener('resize', updateWindowWidth);
141
179
  }
142
180
  });
143
- const activeBreakPointPropsRef = computed(() => {
181
+ const activeBreakpointPropsRef = computed(() => {
144
182
  const { breakpointProps } = props;
145
183
  const breakpointPropsToUse = breakpointProps !== null && breakpointProps !== void 0 ? breakpointProps : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointPropsRef.value;
146
- return getActiveBreakpointValue(breakpointPropsToUse);
184
+ return getActiveBreakpointValue(breakpointPropsToUse, mergedBreakpointModeRef.value);
147
185
  });
148
186
  const mergedComponentPropsRef = computed(() => {
149
187
  const { componentOptions } = props;
150
188
  const baseComponentOptions = componentOptions !== undefined
151
189
  ? componentOptions
152
190
  : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedComponentPropsRef.value;
153
- const activeBreakPointProps = activeBreakPointPropsRef.value;
154
- if (!activeBreakPointProps) {
191
+ const activeBreakpointProps = activeBreakpointPropsRef.value;
192
+ if (!activeBreakpointProps) {
155
193
  return baseComponentOptions;
156
194
  }
157
195
  if (!baseComponentOptions) {
158
- return activeBreakPointProps;
196
+ return activeBreakpointProps;
159
197
  }
160
- return merge({}, baseComponentOptions, activeBreakPointProps);
198
+ return merge({}, baseComponentOptions, activeBreakpointProps);
161
199
  });
162
200
  const mergedClsPrefixRef = computed(() => {
163
201
  const { clsPrefix } = props;
@@ -227,13 +265,16 @@ export default defineComponent({
227
265
  mergedComponentPropsRef,
228
266
  mergedBreakpointPropsRef,
229
267
  mergedBreakpointThemeOverridesRef,
268
+ mergedBreakpointModeRef,
269
+ activeBreakpointPropsRef,
270
+ activeBreakpointThemeOverridesRef,
230
271
  mergedBorderedRef,
231
272
  mergedNamespaceRef,
232
273
  mergedClsPrefixRef,
233
274
  mergedLocaleRef: computed(() => {
234
275
  const { locale } = props;
235
276
  if (locale === null)
236
- return undefined;
277
+ return;
237
278
  return locale === undefined
238
279
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedLocaleRef.value
239
280
  : locale;
@@ -241,7 +282,7 @@ export default defineComponent({
241
282
  mergedDateLocaleRef: computed(() => {
242
283
  const { dateLocale } = props;
243
284
  if (dateLocale === null)
244
- return undefined;
285
+ return;
245
286
  return dateLocale === undefined
246
287
  ? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedDateLocaleRef.value
247
288
  : dateLocale;
@@ -13,4 +13,4 @@ export type GlobalThemeOverrides = {
13
13
  } & {
14
14
  [key in keyof GlobalThemeWithoutCommon]?: ExtractThemeOverrides<GlobalThemeWithoutCommon[key]>;
15
15
  };
16
- export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides } from './internal-interface';
16
+ export type { GlobalIconConfig, GlobalComponentConfig, BreakpointProps, BreakpointThemeOverrides, BreakpointMode } from './internal-interface';
@@ -429,6 +429,7 @@ export type RtlEnabledState = Partial<Record<keyof GlobalThemeWithoutCommon, Rtl
429
429
  export type Breakpoints = Record<string, number> | undefined;
430
430
  export type BreakpointProps = Record<number, GlobalComponentConfig> | undefined;
431
431
  export type BreakpointThemeOverrides = Record<number, GlobalThemeOverrides> | undefined;
432
+ export type BreakpointMode = 'mobile-first' | 'desktop-first';
432
433
  export interface ConfigProviderInjection {
433
434
  mergedBreakpointsRef: Ref<Breakpoints | undefined>;
434
435
  mergedClsPrefixRef: Ref<string>;
@@ -446,6 +447,9 @@ export interface ConfigProviderInjection {
446
447
  mergedThemeHashRef: Ref<string>;
447
448
  mergedBreakpointPropsRef: Ref<BreakpointProps | undefined>;
448
449
  mergedBreakpointThemeOverridesRef: Ref<BreakpointThemeOverrides | undefined>;
450
+ mergedBreakpointModeRef: Ref<BreakpointMode>;
451
+ activeBreakpointPropsRef: Ref<GlobalComponentConfig | undefined>;
452
+ activeBreakpointThemeOverridesRef: Ref<GlobalThemeOverrides | undefined>;
449
453
  inlineThemeDisabled: boolean;
450
454
  preflightStyleDisabled: boolean;
451
455
  }
package/es/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.12.12";
1
+ declare const _default: "1.12.14";
2
2
  export default _default;
package/es/version.js CHANGED
@@ -1 +1 @@
1
- export default '1.12.12';
1
+ export default '1.12.14';
@@ -16,6 +16,7 @@ const styles_1 = require("../styles");
16
16
  const _mixins_1 = require("../../_mixins");
17
17
  const icons_1 = require("../../_internal/icons");
18
18
  const flex_1 = require("../../flex");
19
+ const typography_1 = require("../../typography");
19
20
  const statusIconMapper = {
20
21
  [interface_1.MessageStatus.READ]: icons_1.CheckmarkDoneSharp,
21
22
  [interface_1.MessageStatus.PENDING]: icons_1.MdTime,
@@ -133,24 +134,21 @@ exports.default = (0, vue_1.defineComponent)({
133
134
  : '?';
134
135
  }
135
136
  })),
136
- header: () => ((0, vue_1.h)("span", { class: `${mergedClsPrefixRef.value}-chat-sidebar__item-title` }, typeof item.title === 'function' ? item.title() : item.title)),
137
- description: () => ((0, vue_1.h)("span", { class: [
137
+ header: () => ((0, vue_1.h)(typography_1.UText, { class: `${mergedClsPrefixRef.value}-chat-sidebar__item-title`, variant: "body-l-medium" }, {
138
+ default: () => typeof item.title === 'function' ? item.title() : item.title
139
+ })),
140
+ description: () => ((0, vue_1.h)(typography_1.UText, { class: [
138
141
  `${mergedClsPrefixRef.value}-chat-sidebar__item-subtitle`,
139
142
  isTyping && 'typing'
140
- ], style: {
141
- display: 'block',
142
- overflow: 'hidden',
143
- textOverflow: 'ellipsis',
144
- whiteSpace: 'nowrap',
145
- minWidth: 0,
146
- maxWidth: '100%'
147
- } }, isTyping
148
- ? mergedTypingTextRef.value
149
- : typeof item.subtitle === 'string'
150
- ? item.subtitle
151
- : typeof item.subtitle === 'function'
152
- ? item.subtitle()
153
- : item.subtitle)),
143
+ ], variant: "body-m-medium" }, {
144
+ default: () => isTyping
145
+ ? mergedTypingTextRef.value
146
+ : typeof item.subtitle === 'string'
147
+ ? item.subtitle
148
+ : typeof item.subtitle === 'function'
149
+ ? item.subtitle()
150
+ : item.subtitle
151
+ })),
154
152
  suffix: () => {
155
153
  const displayUnreadCount = item.unreadCount || 0;
156
154
  const hasUnreadIncoming = displayUnreadCount > 0;
@@ -6205,7 +6205,6 @@ declare const _default: import("vue").DefineComponent<{
6205
6205
  }>;
6206
6206
  renderMessage: (message: ChatMessageData) => JSX.Element;
6207
6207
  renderMarkMessage: (message: ChatMessageData) => JSX.Element;
6208
- renderTypingIndicator: () => JSX.Element;
6209
6208
  renderSkeletonMessage: (isOwn: boolean, index: number) => JSX.Element;
6210
6209
  renderDateSeparator: (date: string) => JSX.Element;
6211
6210
  renderUnreadNotification: () => JSX.Element;