@uzum-tech/ui 1.12.13 → 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 +57 -25
- package/dist/index.prod.js +2 -2
- 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/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
|
@@ -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';
|
|
@@ -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
|
{
|