@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.
- package/dist/index.js +2638 -2653
- package/dist/index.prod.js +3 -3
- package/es/chat/src/ChatListItems.js +14 -16
- package/es/chat/src/ChatMessages.d.ts +0 -1
- package/es/chat/src/ChatMessages.js +16 -38
- package/es/chat/src/ChatParts/MainArea.js +15 -3
- package/es/chat/src/styles/index.cssr.js +15 -33
- package/es/config-provider/src/ConfigProvider.d.ts +20 -7
- package/es/config-provider/src/ConfigProvider.js +68 -27
- package/es/config-provider/src/interface.d.ts +1 -1
- package/es/config-provider/src/internal-interface.d.ts +4 -0
- package/es/version.d.ts +1 -1
- package/es/version.js +1 -1
- package/lib/chat/src/ChatListItems.js +14 -16
- package/lib/chat/src/ChatMessages.d.ts +0 -1
- package/lib/chat/src/ChatMessages.js +16 -38
- package/lib/chat/src/ChatParts/MainArea.js +15 -3
- package/lib/chat/src/styles/index.cssr.js +15 -33
- package/lib/config-provider/src/ConfigProvider.d.ts +20 -7
- package/lib/config-provider/src/ConfigProvider.js +68 -27
- package/lib/config-provider/src/interface.d.ts +1 -1
- package/lib/config-provider/src/internal-interface.d.ts +4 -0
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- package/web-types.json +10 -3
|
@@ -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(
|
|
131
|
-
|
|
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
|
-
],
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
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
|
|
304
|
+
var _a, _b;
|
|
324
305
|
(_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
325
|
-
const { mergedClsPrefixRef, renderMessage, renderMarkMessage,
|
|
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
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
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(
|
|
187
|
-
|
|
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
|
-
`)]),
|
|
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
|
-
|
|
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
|
-
|
|
100
|
-
|
|
101
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
77
|
-
|
|
112
|
+
if (matchingBreakpoints.length === 0)
|
|
113
|
+
return;
|
|
114
|
+
const activeBreakpoint = matchingBreakpoints[0];
|
|
115
|
+
return mergedMap[activeBreakpoint];
|
|
78
116
|
};
|
|
79
|
-
const
|
|
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
|
|
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
|
|
102
|
-
if (!
|
|
139
|
+
const activeBreakpointThemeOverrides = activeBreakpointThemeOverridesRef.value;
|
|
140
|
+
if (!activeBreakpointThemeOverrides) {
|
|
103
141
|
return baseThemeOverrides;
|
|
104
142
|
}
|
|
105
143
|
if (!baseThemeOverrides) {
|
|
106
|
-
return
|
|
144
|
+
return activeBreakpointThemeOverrides;
|
|
107
145
|
}
|
|
108
|
-
return merge({}, baseThemeOverrides,
|
|
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
|
|
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
|
|
154
|
-
if (!
|
|
191
|
+
const activeBreakpointProps = activeBreakpointPropsRef.value;
|
|
192
|
+
if (!activeBreakpointProps) {
|
|
155
193
|
return baseComponentOptions;
|
|
156
194
|
}
|
|
157
195
|
if (!baseComponentOptions) {
|
|
158
|
-
return
|
|
196
|
+
return activeBreakpointProps;
|
|
159
197
|
}
|
|
160
|
-
return merge({}, baseComponentOptions,
|
|
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
|
|
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
|
|
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.
|
|
1
|
+
declare const _default: "1.12.14";
|
|
2
2
|
export default _default;
|
package/es/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default '1.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)(
|
|
137
|
-
|
|
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
|
-
],
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
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;
|