@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
|
@@ -101,7 +101,6 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
101
101
|
};
|
|
102
102
|
});
|
|
103
103
|
const themeClassHandle = (0, _mixins_1.useThemeClass)('chat-messages', (0, vue_1.computed)(() => ''), cssVarsRef, props);
|
|
104
|
-
const mergedTypingTextRef = (0, vue_1.computed)(() => { var _a; return (_a = props.typingText) !== null && _a !== void 0 ? _a : localeRef.value.typingText; });
|
|
105
104
|
const mergedRetryTextRef = (0, vue_1.computed)(() => { var _a; return (_a = props.retryText) !== null && _a !== void 0 ? _a : localeRef.value.retryText; });
|
|
106
105
|
const mergedUnreadNotificationTextRef = (0, vue_1.computed)(() => { var _a; return (_a = props.unreadNotificationText) !== null && _a !== void 0 ? _a : localeRef.value.unreadNotificationText; });
|
|
107
106
|
const unreadMessagesCount = (0, vue_1.computed)(() => {
|
|
@@ -266,23 +265,6 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
266
265
|
], theme: themeRef.value.peers.StatusIcon, themeOverrides: themeRef.value.peerOverrides.StatusIcon }))))))))));
|
|
267
266
|
return messageContent;
|
|
268
267
|
};
|
|
269
|
-
const renderTypingIndicator = () => {
|
|
270
|
-
return ((0, vue_1.h)("div", { class: [
|
|
271
|
-
`${mergedClsPrefixRef.value}-chat-main__message`,
|
|
272
|
-
`${mergedClsPrefixRef.value}-chat-main__message--other`
|
|
273
|
-
] },
|
|
274
|
-
(0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-wrapper` },
|
|
275
|
-
(0, vue_1.h)("div", { class: [
|
|
276
|
-
`${mergedClsPrefixRef.value}-chat-main__message-bubble`,
|
|
277
|
-
`${mergedClsPrefixRef.value}-chat-main__message-bubble--other`,
|
|
278
|
-
`${mergedClsPrefixRef.value}-chat-main__message-bubble--typing`
|
|
279
|
-
] }),
|
|
280
|
-
(0, vue_1.h)("div", { class: [
|
|
281
|
-
`${mergedClsPrefixRef.value}-chat-main__message-meta`,
|
|
282
|
-
`${mergedClsPrefixRef.value}-chat-main__message-meta--other`
|
|
283
|
-
] },
|
|
284
|
-
(0, vue_1.h)("span", { class: `${mergedClsPrefixRef.value}-chat-main__message-time` }, mergedTypingTextRef.value)))));
|
|
285
|
-
};
|
|
286
268
|
const renderSkeletonMessage = (isOwn, index) => {
|
|
287
269
|
return ((0, vue_1.h)("div", { key: `skeleton-${index}`, class: [
|
|
288
270
|
`${mergedClsPrefixRef.value}-chat-main__message`,
|
|
@@ -312,7 +294,6 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
312
294
|
mergedTheme: themeRef,
|
|
313
295
|
renderMessage,
|
|
314
296
|
renderMarkMessage,
|
|
315
|
-
renderTypingIndicator,
|
|
316
297
|
renderSkeletonMessage,
|
|
317
298
|
renderDateSeparator,
|
|
318
299
|
renderUnreadNotification,
|
|
@@ -326,9 +307,9 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
326
307
|
};
|
|
327
308
|
},
|
|
328
309
|
render() {
|
|
329
|
-
var _a, _b
|
|
310
|
+
var _a, _b;
|
|
330
311
|
(_a = this.onRender) === null || _a === void 0 ? void 0 : _a.call(this);
|
|
331
|
-
const { mergedClsPrefixRef, renderMessage, renderMarkMessage,
|
|
312
|
+
const { mergedClsPrefixRef, renderMessage, renderMarkMessage, renderSkeletonMessage, renderDateSeparator, renderUnreadNotification } = this;
|
|
332
313
|
if (this.loading) {
|
|
333
314
|
return ((0, vue_1.h)("div", { class: [`${mergedClsPrefixRef}-chat`, this.themeClass], style: this.cssVars },
|
|
334
315
|
(0, vue_1.h)("div", { class: `${mergedClsPrefixRef}-chat-main`, style: {
|
|
@@ -389,7 +370,6 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
389
370
|
id: 'unread-notification'
|
|
390
371
|
});
|
|
391
372
|
}
|
|
392
|
-
const isTyping = this.selectedChatId && ((_c = this.typingChatIds) === null || _c === void 0 ? void 0 : _c.includes(this.selectedChatId));
|
|
393
373
|
return ((0, vue_1.h)("div", { class: [`${mergedClsPrefixRef}-chat`, this.themeClass], style: this.cssVars },
|
|
394
374
|
(0, vue_1.h)("div", { class: `${mergedClsPrefixRef}-chat-main`, style: {
|
|
395
375
|
border: 'none',
|
|
@@ -404,21 +384,19 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
404
384
|
event.preventDefault();
|
|
405
385
|
this.contextMenuShow = false;
|
|
406
386
|
}
|
|
407
|
-
} },
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
}),
|
|
422
|
-
isTyping && renderTypingIndicator()))));
|
|
387
|
+
} }, messagesWithDates.map((item) => {
|
|
388
|
+
var _a;
|
|
389
|
+
if (item.type === 'date-separator') {
|
|
390
|
+
return renderDateSeparator((_a = item.date) !== null && _a !== void 0 ? _a : '');
|
|
391
|
+
}
|
|
392
|
+
if (item.type === 'unread-notification') {
|
|
393
|
+
return renderUnreadNotification();
|
|
394
|
+
}
|
|
395
|
+
const message = item;
|
|
396
|
+
if (message.type === interface_1.ChatMessageType.MARK) {
|
|
397
|
+
return renderMarkMessage(message);
|
|
398
|
+
}
|
|
399
|
+
return renderMessage(message);
|
|
400
|
+
})))));
|
|
423
401
|
}
|
|
424
402
|
});
|
|
@@ -49,6 +49,11 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
49
49
|
return 0;
|
|
50
50
|
return messagesRef.value.filter((msg) => !msg.isOwn && msg.status === interface_1.MessageStatus.UNREAD).length;
|
|
51
51
|
});
|
|
52
|
+
const isTyping = (0, vue_1.computed)(() => {
|
|
53
|
+
if (!selectedChatRef.value || !typingChatIdsRef.value)
|
|
54
|
+
return false;
|
|
55
|
+
return typingChatIdsRef.value.includes(selectedChatRef.value.id);
|
|
56
|
+
});
|
|
52
57
|
const showNotificationManually = (0, vue_1.ref)(false);
|
|
53
58
|
const hasUnreadMessages = (0, vue_1.ref)(false);
|
|
54
59
|
const unreadCountOnOpen = (0, vue_1.ref)(0);
|
|
@@ -188,9 +193,16 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
188
193
|
const keyId = toKeyString(chat === null || chat === void 0 ? void 0 : chat.id);
|
|
189
194
|
const keyTitle = toKeyString(chat === null || chat === void 0 ? void 0 : chat.title);
|
|
190
195
|
return ((0, vue_1.h)(vue_1.Fragment, null,
|
|
191
|
-
(0, vue_1.h)(
|
|
192
|
-
|
|
193
|
-
|
|
196
|
+
(0, vue_1.h)(flex_1.UFlex, { vertical: true, size: [0, 0], justify: 'flex-start"' },
|
|
197
|
+
(0, vue_1.h)(typography_1.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 }, {
|
|
198
|
+
default: () => { var _a, _b; return (_b = (_a = selectedChatRef.value) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : ''; }
|
|
199
|
+
}),
|
|
200
|
+
isTyping.value && ((0, vue_1.h)(typography_1.UText, { class: [
|
|
201
|
+
`${mergedClsPrefixRef.value}-chat-main__header-subtitle`,
|
|
202
|
+
'typing'
|
|
203
|
+
], variant: "body-m-medium" }, {
|
|
204
|
+
default: () => { var _a; return (_a = typingTextRef.value) !== null && _a !== void 0 ? _a : ''; }
|
|
205
|
+
}))),
|
|
194
206
|
(0, vue_1.h)(flex_1.UFlex, { align: "center", size: "small", class: `${mergedClsPrefixRef.value}-chat-main__header-actions` }, {
|
|
195
207
|
default: () => (0, _utils_1.resolveSlot)(slots.headerActions, () => {
|
|
196
208
|
const shareButtonProps = Object.assign(Object.assign({}, headerButtonPropsRef.value), headerShareButtonPropsRef.value);
|
|
@@ -77,53 +77,28 @@ exports.default = (0, cssr_1.cB)('chat', `
|
|
|
77
77
|
background-color: var(--u-sidebar-item-background-color-selected);
|
|
78
78
|
`, [(0, cssr_1.c)('&:hover', `
|
|
79
79
|
background-color: var(--u-sidebar-item-background-color-selected);
|
|
80
|
-
`)]), (0, cssr_1.
|
|
81
|
-
.u-list-item__description {
|
|
82
|
-
color: var(--u-color-primary) !important;
|
|
83
|
-
font-style: italic;
|
|
84
|
-
}
|
|
85
|
-
`), (0, cssr_1.c)('&:hover', `
|
|
80
|
+
`)]), (0, cssr_1.c)('&:hover', `
|
|
86
81
|
background-color: var(--u-sidebar-item-background-color-hover);
|
|
87
82
|
`, [(0, cssr_1.cM)('selected', `
|
|
88
83
|
background-color: var(--u-sidebar-item-background-color-selected);
|
|
89
84
|
`)])]), (0, cssr_1.cE)('item-title', `
|
|
90
|
-
font-weight: 500;
|
|
91
|
-
font-size: 14px;
|
|
92
|
-
line-height: 20px;
|
|
93
85
|
color: var(--u-sidebar-item-text-color);
|
|
94
86
|
overflow: hidden;
|
|
95
87
|
text-overflow: ellipsis;
|
|
96
88
|
white-space: nowrap;
|
|
89
|
+
margin-bottom: 0;
|
|
97
90
|
`), (0, cssr_1.cE)('item-subtitle', `
|
|
98
|
-
|
|
99
|
-
line-height: 16px;
|
|
91
|
+
display: block;
|
|
100
92
|
color: var(--u-sidebar-item-subtitle-color);
|
|
101
93
|
overflow: hidden;
|
|
102
94
|
text-overflow: ellipsis;
|
|
103
95
|
white-space: nowrap;
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
`)]), (0, cssr_1.cE)('item-main', `
|
|
96
|
+
minWidth: 0;
|
|
97
|
+
maxWidth: 100%;
|
|
98
|
+
`), (0, cssr_1.cE)('item-main', `
|
|
108
99
|
flex: 1;
|
|
109
100
|
min-width: 0;
|
|
110
101
|
margin-right: 12px;
|
|
111
|
-
`), (0, cssr_1.cE)('item-title', `
|
|
112
|
-
font-weight: 500;
|
|
113
|
-
font-size: 14px;
|
|
114
|
-
line-height: 20px;
|
|
115
|
-
color: var(--u-text-color-base);
|
|
116
|
-
margin-bottom: 2px;
|
|
117
|
-
overflow: hidden;
|
|
118
|
-
text-overflow: ellipsis;
|
|
119
|
-
white-space: nowrap;
|
|
120
|
-
`), (0, cssr_1.cE)('item-subtitle', `
|
|
121
|
-
font-size: 12px;
|
|
122
|
-
line-height: 16px;
|
|
123
|
-
color: var(--u-text-color-disabled);
|
|
124
|
-
overflow: hidden;
|
|
125
|
-
text-overflow: ellipsis;
|
|
126
|
-
white-space: nowrap;
|
|
127
102
|
`), (0, cssr_1.cE)('item-indicators', `
|
|
128
103
|
display: flex;
|
|
129
104
|
flex-direction: column;
|
|
@@ -162,10 +137,9 @@ exports.default = (0, cssr_1.cB)('chat', `
|
|
|
162
137
|
`, [(0, cssr_1.cE)('header', `
|
|
163
138
|
border-bottom: 1px solid var(--u-border-color);
|
|
164
139
|
width: 100%;
|
|
165
|
-
padding: 24px 20px
|
|
140
|
+
padding: 24px 20px 10px 24px;
|
|
166
141
|
flex-shrink: 0;
|
|
167
142
|
`), (0, cssr_1.cE)('header-title', `
|
|
168
|
-
margin-top: 9px;
|
|
169
143
|
color: var(--u-header-title-color);
|
|
170
144
|
flex: 1;
|
|
171
145
|
min-width: 0;
|
|
@@ -174,6 +148,14 @@ exports.default = (0, cssr_1.cB)('chat', `
|
|
|
174
148
|
white-space: nowrap;
|
|
175
149
|
display: block;
|
|
176
150
|
margin-right: 16px;
|
|
151
|
+
`), (0, cssr_1.cE)('header-subtitle', `
|
|
152
|
+
display: block;
|
|
153
|
+
color: var(--u-sidebar-item-subtitle-color);
|
|
154
|
+
overflow: hidden;
|
|
155
|
+
text-overflow: ellipsis;
|
|
156
|
+
white-space: nowrap;
|
|
157
|
+
minWidth: 0;
|
|
158
|
+
maxWidth: 100%;
|
|
177
159
|
`), (0, cssr_1.cE)('header-actions', `
|
|
178
160
|
padding: 4px;
|
|
179
161
|
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;
|
|
@@ -32,6 +32,10 @@ exports.configProviderProps = {
|
|
|
32
32
|
breakpoints: Object,
|
|
33
33
|
breakpointProps: Object,
|
|
34
34
|
breakpointThemeOverrides: Object,
|
|
35
|
+
breakpointMode: {
|
|
36
|
+
type: String,
|
|
37
|
+
default: 'desktop-first'
|
|
38
|
+
},
|
|
35
39
|
preflightStyleDisabled: Boolean,
|
|
36
40
|
inlineThemeDisabled: {
|
|
37
41
|
type: Boolean,
|
|
@@ -56,7 +60,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
56
60
|
const mergedThemeRef = (0, vue_1.computed)(() => {
|
|
57
61
|
const { theme } = props;
|
|
58
62
|
if (theme === null)
|
|
59
|
-
return
|
|
63
|
+
return;
|
|
60
64
|
const inheritedTheme = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeRef.value;
|
|
61
65
|
return theme === undefined
|
|
62
66
|
? inheritedTheme
|
|
@@ -64,30 +68,64 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
64
68
|
? theme
|
|
65
69
|
: Object.assign({}, inheritedTheme, theme);
|
|
66
70
|
});
|
|
67
|
-
const
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
71
|
+
const mergedBreakpointModeRef = (0, vue_1.computed)(() => {
|
|
72
|
+
const { breakpointMode } = props;
|
|
73
|
+
return (breakpointMode ||
|
|
74
|
+
(UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointModeRef.value) ||
|
|
75
|
+
'desktop-first');
|
|
76
|
+
});
|
|
77
|
+
const getMergedBreakpointValues = (breakpointMap) => {
|
|
78
|
+
if (!breakpointMap)
|
|
79
|
+
return;
|
|
72
80
|
const breakpointWidths = Object.keys(breakpointMap)
|
|
73
81
|
.map(Number)
|
|
74
|
-
.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
82
|
+
.sort((leftWidth, rightWidth) => leftWidth - rightWidth);
|
|
83
|
+
const mergedMap = {};
|
|
84
|
+
let previousValue;
|
|
85
|
+
for (const width of breakpointWidths) {
|
|
86
|
+
if (previousValue !== undefined) {
|
|
87
|
+
mergedMap[width] = (0, lodash_1.merge)({}, previousValue, breakpointMap[width]);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
mergedMap[width] = breakpointMap[width];
|
|
91
|
+
}
|
|
92
|
+
previousValue = mergedMap[width];
|
|
93
|
+
}
|
|
94
|
+
return mergedMap;
|
|
95
|
+
};
|
|
96
|
+
const getActiveBreakpointValue = (breakpointMap, mode = 'desktop-first') => {
|
|
97
|
+
if (!breakpointMap || !_utils_1.isBrowser)
|
|
98
|
+
return;
|
|
99
|
+
const mergedMap = getMergedBreakpointValues(breakpointMap);
|
|
100
|
+
if (!mergedMap)
|
|
101
|
+
return;
|
|
102
|
+
const currentWidth = windowWidthRef.value;
|
|
103
|
+
const breakpointWidths = Object.keys(mergedMap).map(Number);
|
|
104
|
+
let matchingBreakpoints;
|
|
105
|
+
if (mode === 'mobile-first') {
|
|
106
|
+
matchingBreakpoints = breakpointWidths
|
|
107
|
+
.filter((width) => width >= currentWidth)
|
|
108
|
+
.sort((leftWidth, rightWidth) => leftWidth - rightWidth);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
matchingBreakpoints = breakpointWidths
|
|
112
|
+
.filter((width) => width <= currentWidth)
|
|
113
|
+
.sort((leftWidth, rightWidth) => rightWidth - leftWidth);
|
|
78
114
|
}
|
|
79
|
-
|
|
80
|
-
|
|
115
|
+
if (matchingBreakpoints.length === 0)
|
|
116
|
+
return;
|
|
117
|
+
const activeBreakpoint = matchingBreakpoints[0];
|
|
118
|
+
return mergedMap[activeBreakpoint];
|
|
81
119
|
};
|
|
82
|
-
const
|
|
120
|
+
const activeBreakpointThemeOverridesRef = (0, vue_1.computed)(() => {
|
|
83
121
|
const { breakpointThemeOverrides } = props;
|
|
84
122
|
const breakpointThemeOverridesToUse = breakpointThemeOverrides !== null && breakpointThemeOverrides !== void 0 ? breakpointThemeOverrides : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointThemeOverridesRef.value;
|
|
85
|
-
return getActiveBreakpointValue(breakpointThemeOverridesToUse);
|
|
123
|
+
return getActiveBreakpointValue(breakpointThemeOverridesToUse, mergedBreakpointModeRef.value);
|
|
86
124
|
});
|
|
87
125
|
const mergedThemeOverridesRef = (0, vue_1.computed)(() => {
|
|
88
126
|
const { themeOverrides } = props;
|
|
89
127
|
if (themeOverrides === null)
|
|
90
|
-
return
|
|
128
|
+
return;
|
|
91
129
|
let baseThemeOverrides;
|
|
92
130
|
if (themeOverrides === undefined) {
|
|
93
131
|
baseThemeOverrides = UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedThemeOverridesRef.value;
|
|
@@ -101,14 +139,14 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
101
139
|
baseThemeOverrides = (0, lodash_1.merge)({}, inheritedThemeOverrides, themeOverrides);
|
|
102
140
|
}
|
|
103
141
|
}
|
|
104
|
-
const
|
|
105
|
-
if (!
|
|
142
|
+
const activeBreakpointThemeOverrides = activeBreakpointThemeOverridesRef.value;
|
|
143
|
+
if (!activeBreakpointThemeOverrides) {
|
|
106
144
|
return baseThemeOverrides;
|
|
107
145
|
}
|
|
108
146
|
if (!baseThemeOverrides) {
|
|
109
|
-
return
|
|
147
|
+
return activeBreakpointThemeOverrides;
|
|
110
148
|
}
|
|
111
|
-
return (0, lodash_1.merge)({}, baseThemeOverrides,
|
|
149
|
+
return (0, lodash_1.merge)({}, baseThemeOverrides, activeBreakpointThemeOverrides);
|
|
112
150
|
});
|
|
113
151
|
const mergedNamespaceRef = (0, vooks_1.useMemo)(() => {
|
|
114
152
|
const { namespace } = props;
|
|
@@ -143,24 +181,24 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
143
181
|
window.removeEventListener('resize', updateWindowWidth);
|
|
144
182
|
}
|
|
145
183
|
});
|
|
146
|
-
const
|
|
184
|
+
const activeBreakpointPropsRef = (0, vue_1.computed)(() => {
|
|
147
185
|
const { breakpointProps } = props;
|
|
148
186
|
const breakpointPropsToUse = breakpointProps !== null && breakpointProps !== void 0 ? breakpointProps : UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedBreakpointPropsRef.value;
|
|
149
|
-
return getActiveBreakpointValue(breakpointPropsToUse);
|
|
187
|
+
return getActiveBreakpointValue(breakpointPropsToUse, mergedBreakpointModeRef.value);
|
|
150
188
|
});
|
|
151
189
|
const mergedComponentPropsRef = (0, vue_1.computed)(() => {
|
|
152
190
|
const { componentOptions } = props;
|
|
153
191
|
const baseComponentOptions = componentOptions !== undefined
|
|
154
192
|
? componentOptions
|
|
155
193
|
: UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedComponentPropsRef.value;
|
|
156
|
-
const
|
|
157
|
-
if (!
|
|
194
|
+
const activeBreakpointProps = activeBreakpointPropsRef.value;
|
|
195
|
+
if (!activeBreakpointProps) {
|
|
158
196
|
return baseComponentOptions;
|
|
159
197
|
}
|
|
160
198
|
if (!baseComponentOptions) {
|
|
161
|
-
return
|
|
199
|
+
return activeBreakpointProps;
|
|
162
200
|
}
|
|
163
|
-
return (0, lodash_1.merge)({}, baseComponentOptions,
|
|
201
|
+
return (0, lodash_1.merge)({}, baseComponentOptions, activeBreakpointProps);
|
|
164
202
|
});
|
|
165
203
|
const mergedClsPrefixRef = (0, vue_1.computed)(() => {
|
|
166
204
|
const { clsPrefix } = props;
|
|
@@ -230,13 +268,16 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
230
268
|
mergedComponentPropsRef,
|
|
231
269
|
mergedBreakpointPropsRef,
|
|
232
270
|
mergedBreakpointThemeOverridesRef,
|
|
271
|
+
mergedBreakpointModeRef,
|
|
272
|
+
activeBreakpointPropsRef,
|
|
273
|
+
activeBreakpointThemeOverridesRef,
|
|
233
274
|
mergedBorderedRef,
|
|
234
275
|
mergedNamespaceRef,
|
|
235
276
|
mergedClsPrefixRef,
|
|
236
277
|
mergedLocaleRef: (0, vue_1.computed)(() => {
|
|
237
278
|
const { locale } = props;
|
|
238
279
|
if (locale === null)
|
|
239
|
-
return
|
|
280
|
+
return;
|
|
240
281
|
return locale === undefined
|
|
241
282
|
? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedLocaleRef.value
|
|
242
283
|
: locale;
|
|
@@ -244,7 +285,7 @@ exports.default = (0, vue_1.defineComponent)({
|
|
|
244
285
|
mergedDateLocaleRef: (0, vue_1.computed)(() => {
|
|
245
286
|
const { dateLocale } = props;
|
|
246
287
|
if (dateLocale === null)
|
|
247
|
-
return
|
|
288
|
+
return;
|
|
248
289
|
return dateLocale === undefined
|
|
249
290
|
? UConfigProvider === null || UConfigProvider === void 0 ? void 0 : UConfigProvider.mergedDateLocaleRef.value
|
|
250
291
|
: 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/lib/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/lib/version.js
CHANGED
package/package.json
CHANGED
package/web-types.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"name": "@uzum-tech/ui",
|
|
5
|
-
"version": "1.12.
|
|
5
|
+
"version": "1.12.14",
|
|
6
6
|
"js-types-syntax": "typescript",
|
|
7
7
|
"contributions": {
|
|
8
8
|
"html": {
|
|
@@ -3701,6 +3701,13 @@
|
|
|
3701
3701
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
3702
3702
|
"type": "object"
|
|
3703
3703
|
},
|
|
3704
|
+
{
|
|
3705
|
+
"name": "breakpoint-mode",
|
|
3706
|
+
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
3707
|
+
"type": "'mobile-first' | 'desktop-first'",
|
|
3708
|
+
"description": "Controls how breakpoints are applied. In `desktop-first` mode (default), applies the largest breakpoint ≤ current width. In `mobile-first` mode, applies the smallest breakpoint ≥ current width.",
|
|
3709
|
+
"default": "'desktop-first'"
|
|
3710
|
+
},
|
|
3704
3711
|
{
|
|
3705
3712
|
"name": "preflight-style-disabled",
|
|
3706
3713
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
@@ -3730,14 +3737,14 @@
|
|
|
3730
3737
|
"name": "break-point-props",
|
|
3731
3738
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
3732
3739
|
"type": "{ [width: number]: GlobalComponentConfig }",
|
|
3733
|
-
"description": "Component props configuration based on screen width.
|
|
3740
|
+
"description": "Component props configuration based on screen width. The behavior depends on `breakpoint-mode`. Values from previous breakpoints are inherited by default unless explicitly overridden.",
|
|
3734
3741
|
"default": "undefined"
|
|
3735
3742
|
},
|
|
3736
3743
|
{
|
|
3737
3744
|
"name": "break-point-theme-overrides",
|
|
3738
3745
|
"doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/config-provider",
|
|
3739
3746
|
"type": "{ [width: number]: GlobalThemeOverrides }",
|
|
3740
|
-
"description": "Theme variables configuration based on screen width.
|
|
3747
|
+
"description": "Theme variables configuration based on screen width. The behavior depends on `breakpoint-mode`. Values from previous breakpoints are inherited by default unless explicitly overridden.",
|
|
3741
3748
|
"default": "undefined"
|
|
3742
3749
|
},
|
|
3743
3750
|
{
|