@uzum-tech/ui 1.12.17 → 1.12.18

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.
Files changed (40) hide show
  1. package/dist/index.js +88 -21
  2. package/dist/index.prod.js +3 -3
  3. package/es/data-table/src/DataTable.d.ts +2 -0
  4. package/es/data-table/src/DataTable.js +1 -0
  5. package/es/data-table/src/TableParts/Body.d.ts +1 -0
  6. package/es/data-table/src/TableParts/Body.js +3 -2
  7. package/es/data-table/src/TableParts/Cell.d.ts +2 -0
  8. package/es/data-table/src/TableParts/Cell.js +62 -9
  9. package/es/data-table/src/interface.d.ts +2 -0
  10. package/es/data-table/src/interface.js +1 -1
  11. package/es/header/src/Header.d.ts +12 -3
  12. package/es/header/src/Header.js +21 -5
  13. package/es/header/src/HeaderNavigation.d.ts +3 -1
  14. package/es/header/src/HeaderNavigation.js +6 -4
  15. package/es/header/src/interface.d.ts +1 -0
  16. package/es/header/src/utils.d.ts +1 -1
  17. package/es/header/src/utils.js +1 -1
  18. package/es/version.d.ts +1 -1
  19. package/es/version.js +1 -1
  20. package/lib/data-table/src/DataTable.d.ts +2 -0
  21. package/lib/data-table/src/DataTable.js +1 -0
  22. package/lib/data-table/src/TableParts/Body.d.ts +1 -0
  23. package/lib/data-table/src/TableParts/Body.js +3 -2
  24. package/lib/data-table/src/TableParts/Cell.d.ts +2 -0
  25. package/lib/data-table/src/TableParts/Cell.js +62 -9
  26. package/lib/data-table/src/interface.d.ts +2 -0
  27. package/lib/data-table/src/interface.js +1 -1
  28. package/lib/header/src/Header.d.ts +12 -3
  29. package/lib/header/src/Header.js +21 -5
  30. package/lib/header/src/HeaderNavigation.d.ts +3 -1
  31. package/lib/header/src/HeaderNavigation.js +6 -4
  32. package/lib/header/src/interface.d.ts +1 -0
  33. package/lib/header/src/utils.d.ts +1 -1
  34. package/lib/header/src/utils.js +1 -1
  35. package/lib/version.d.ts +1 -1
  36. package/lib/version.js +1 -1
  37. package/package.json +1 -1
  38. package/volar.d.ts +22 -22
  39. package/web-types.json +31 -2
  40. package/README.md +0 -73
@@ -30,7 +30,8 @@ exports.default = (0, vue_1.defineComponent)({
30
30
  type: Object,
31
31
  required: true
32
32
  },
33
- renderCell: Function
33
+ renderCell: Function,
34
+ defaultEmptyValue: [String, Function]
34
35
  },
35
36
  render() {
36
37
  var _a;
@@ -43,12 +44,28 @@ exports.default = (0, vue_1.defineComponent)({
43
44
  const isEditable = typeof editable === 'function' ? editable(row) : editable;
44
45
  if (render && !isSummary) {
45
46
  let cellValue = render(row, this.index);
46
- if (mask && cellValue !== null && cellValue !== undefined) {
47
- if (typeof cellValue === 'string' || typeof cellValue === 'number') {
48
- cellValue = (0, use_mask_1.processMaskedValue)(cellValue, mask);
47
+ if (cellValue == null || cellValue === false) {
48
+ const { defaultEmptyValue } = this;
49
+ if (defaultEmptyValue !== undefined) {
50
+ if (typeof defaultEmptyValue === 'function') {
51
+ cell = defaultEmptyValue();
52
+ }
53
+ else {
54
+ cell = defaultEmptyValue;
55
+ }
56
+ }
57
+ else {
58
+ cell = '';
49
59
  }
50
60
  }
51
- cell = cellValue;
61
+ else {
62
+ if (mask && cellValue !== null && cellValue !== undefined) {
63
+ if (typeof cellValue === 'string' || typeof cellValue === 'number') {
64
+ cellValue = (0, use_mask_1.processMaskedValue)(cellValue, mask);
65
+ }
66
+ }
67
+ cell = cellValue;
68
+ }
52
69
  }
53
70
  else if (isEditable && !isSummary) {
54
71
  const { placeholder } = column;
@@ -162,7 +179,25 @@ exports.default = (0, vue_1.defineComponent)({
162
179
  if (mask && cellValue !== null && cellValue !== undefined) {
163
180
  cellValue = (0, use_mask_1.processMaskedValue)(String(cellValue), mask);
164
181
  }
165
- cell = String(cellValue);
182
+ if (cellValue === null ||
183
+ cellValue === undefined ||
184
+ cellValue === false) {
185
+ const { defaultEmptyValue } = this;
186
+ if (defaultEmptyValue !== undefined) {
187
+ if (typeof defaultEmptyValue === 'function') {
188
+ cell = defaultEmptyValue();
189
+ }
190
+ else {
191
+ cell = defaultEmptyValue;
192
+ }
193
+ }
194
+ else {
195
+ cell = '';
196
+ }
197
+ }
198
+ else {
199
+ cell = String(cellValue);
200
+ }
166
201
  }
167
202
  else {
168
203
  let cellValue = renderCell
@@ -172,10 +207,28 @@ exports.default = (0, vue_1.defineComponent)({
172
207
  cell = cellValue;
173
208
  }
174
209
  else {
175
- if (mask && cellValue !== null && cellValue !== undefined) {
176
- cellValue = (0, use_mask_1.processMaskedValue)(cellValue, mask);
210
+ if (cellValue === null ||
211
+ cellValue === undefined ||
212
+ cellValue === false) {
213
+ const { defaultEmptyValue } = this;
214
+ if (defaultEmptyValue !== undefined) {
215
+ if (typeof defaultEmptyValue === 'function') {
216
+ cell = defaultEmptyValue();
217
+ }
218
+ else {
219
+ cell = defaultEmptyValue;
220
+ }
221
+ }
222
+ else {
223
+ cell = '';
224
+ }
225
+ }
226
+ else {
227
+ if (mask && cellValue !== null && cellValue !== undefined) {
228
+ cellValue = (0, use_mask_1.processMaskedValue)(cellValue, mask);
229
+ }
230
+ cell = String(cellValue);
177
231
  }
178
- cell = String(cellValue);
179
232
  }
180
233
  }
181
234
  }
@@ -97,6 +97,7 @@ export declare const dataTableProps: {
97
97
  };
98
98
  readonly scrollbarProps: PropType<ScrollbarProps>;
99
99
  readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn) => VNodeChild>;
100
+ readonly defaultEmptyValue: PropType<string | (() => VNodeChild) | undefined>;
100
101
  readonly renderExpandIcon: PropType<RenderExpandIcon>;
101
102
  readonly spinProps: {
102
103
  readonly type: PropType<BaseLoadingExposedProps>;
@@ -3175,6 +3176,7 @@ export interface DataTableInjection {
3175
3176
  syncScrollState: (deltaX?: number, deltaY?: number) => void;
3176
3177
  setHeaderScrollLeft: (scrollLeft: number) => void;
3177
3178
  renderCell: Ref<undefined | ((value: any, rowData: object, column: TableBaseColumn) => VNodeChild)>;
3179
+ defaultEmptyValueRef: Ref<string | (() => VNodeChild) | undefined>;
3178
3180
  emptyPropsRef: Ref<Partial<EmptyProps> | undefined>;
3179
3181
  handleEdit: (value: any, row: any, key: string) => void;
3180
3182
  }
@@ -53,7 +53,7 @@ exports.dataTableProps = Object.assign(Object.assign({}, _mixins_1.useTheme.prop
53
53
  }, paginationBehaviorOnFilter: {
54
54
  type: String,
55
55
  default: 'current'
56
- }, scrollbarProps: Object, renderCell: Function, renderExpandIcon: Function, spinProps: { type: Object, default: {} }, emptyProps: Object, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
56
+ }, scrollbarProps: Object, renderCell: Function, defaultEmptyValue: [String, Function], renderExpandIcon: Function, spinProps: { type: Object, default: {} }, emptyProps: Object, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
57
57
  // deprecated
58
58
  onPageChange: [Function, Array], onPageSizeChange: [Function, Array], onSorterChange: [Function, Array], onFiltersChange: [Function, Array], onCheckedRowKeysChange: [Function, Array] });
59
59
  exports.dataTableInjectionKey = (0, _utils_1.createInjectionKey)('u-data-table');
@@ -81,6 +81,8 @@ export declare const headerProps: {
81
81
  onSearch: PropType<HeaderPropsInterface["onSearch"]>;
82
82
  'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
83
83
  onUpdateMenuValue: PropType<MaybeArray<HeaderPropsInterface["onUpdateMenuValue"]>>;
84
+ 'onUpdate:activeMenuKey': PropType<MaybeArray<(value: string | number | null) => void>>;
85
+ onUpdateActiveMenuKey: PropType<MaybeArray<(value: string | number | null) => void>>;
84
86
  theme: PropType<import("../../_mixins").Theme<"Header", {
85
87
  fontSize: string;
86
88
  fontBodyLarge: string;
@@ -262,6 +264,8 @@ declare const _default: import("vue").DefineComponent<{
262
264
  onSearch: PropType<HeaderPropsInterface["onSearch"]>;
263
265
  'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
264
266
  onUpdateMenuValue: PropType<MaybeArray<HeaderPropsInterface["onUpdateMenuValue"]>>;
267
+ 'onUpdate:activeMenuKey': PropType<MaybeArray<(value: string | number | null) => void>>;
268
+ onUpdateActiveMenuKey: PropType<MaybeArray<(value: string | number | null) => void>>;
265
269
  theme: PropType<import("../../_mixins").Theme<"Header", {
266
270
  fontSize: string;
267
271
  fontBodyLarge: string;
@@ -413,6 +417,9 @@ declare const _default: import("vue").DefineComponent<{
413
417
  isMobile: import("vue").Ref<boolean | undefined>;
414
418
  mobileMenuVisible: import("vue").Ref<boolean>;
415
419
  searchVisible: import("vue").Ref<boolean>;
420
+ menuPaneClass: ComputedRef<string>;
421
+ menuPaneWrapperClass: ComputedRef<string>;
422
+ mergedActiveMenuKey: ComputedRef<string | number | null>;
416
423
  handleSelectLang: (key: string | number) => void;
417
424
  handleMenuValueUpdate: (value: string | number | null) => void;
418
425
  handleSearchClick: () => void;
@@ -427,10 +434,9 @@ declare const _default: import("vue").DefineComponent<{
427
434
  handleMobileMenuItemClick: (option: HeaderMenuOption) => void;
428
435
  handleMobilePrimaryAction: () => void;
429
436
  handleMobileSecondaryAction: () => void;
430
- menuPaneClass: ComputedRef<string>;
431
- menuPaneWrapperClass: ComputedRef<string>;
437
+ handleUpdateActiveMenuKey: (value: string | number | null) => void;
432
438
  onRender: () => void;
433
- }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ["search", "search-result-select", "preview", "logout", "language-select", "logo-click", "mobile-primary-action", "mobile-secondary-action"], "search" | "logout" | "preview" | "search-result-select" | "language-select" | "logo-click" | "mobile-primary-action" | "mobile-secondary-action", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
439
+ }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, ["search", "search-result-select", "preview", "logout", "language-select", "logo-click", "mobile-primary-action", "mobile-secondary-action", "update:activeMenuKey"], "search" | "logout" | "preview" | "search-result-select" | "language-select" | "logo-click" | "mobile-primary-action" | "mobile-secondary-action" | "update:activeMenuKey", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<ExtractPropTypes<{
434
440
  menuOptions: {
435
441
  type: PropType<HeaderPropsInterface["menuOptions"]>;
436
442
  default: () => never[];
@@ -508,6 +514,8 @@ declare const _default: import("vue").DefineComponent<{
508
514
  onSearch: PropType<HeaderPropsInterface["onSearch"]>;
509
515
  'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
510
516
  onUpdateMenuValue: PropType<MaybeArray<HeaderPropsInterface["onUpdateMenuValue"]>>;
517
+ 'onUpdate:activeMenuKey': PropType<MaybeArray<(value: string | number | null) => void>>;
518
+ onUpdateActiveMenuKey: PropType<MaybeArray<(value: string | number | null) => void>>;
511
519
  theme: PropType<import("../../_mixins").Theme<"Header", {
512
520
  fontSize: string;
513
521
  fontBodyLarge: string;
@@ -613,6 +621,7 @@ declare const _default: import("vue").DefineComponent<{
613
621
  }>> & {
614
622
  onSearch?: ((...args: any[]) => any) | undefined;
615
623
  onPreview?: ((...args: any[]) => any) | undefined;
624
+ "onUpdate:activeMenuKey"?: ((...args: any[]) => any) | undefined;
616
625
  onLogout?: ((...args: any[]) => any) | undefined;
617
626
  "onSearch-result-select"?: ((...args: any[]) => any) | undefined;
618
627
  "onLanguage-select"?: ((...args: any[]) => any) | undefined;
@@ -123,7 +123,7 @@ exports.headerProps = Object.assign(Object.assign({}, _mixins_1.useTheme.props),
123
123
  }, mobileShowHeaderActions: {
124
124
  type: Boolean,
125
125
  default: true
126
- }, onSearch: Function, 'onUpdate:menuValue': [Function, Array], onUpdateMenuValue: [Function, Array] });
126
+ }, onSearch: Function, 'onUpdate:menuValue': [Function, Array], onUpdateMenuValue: [Function, Array], 'onUpdate:activeMenuKey': [Function, Array], onUpdateActiveMenuKey: [Function, Array] });
127
127
  exports.default = (0, vue_1.defineComponent)({
128
128
  name: 'Header',
129
129
  props: exports.headerProps,
@@ -135,7 +135,8 @@ exports.default = (0, vue_1.defineComponent)({
135
135
  'language-select',
136
136
  'logo-click',
137
137
  'mobile-primary-action',
138
- 'mobile-secondary-action'
138
+ 'mobile-secondary-action',
139
+ 'update:activeMenuKey'
139
140
  ],
140
141
  setup(props, { emit }) {
141
142
  var _a, _b;
@@ -144,6 +145,9 @@ exports.default = (0, vue_1.defineComponent)({
144
145
  const isMobileRef = (0, vue_1.toRef)(props, 'isMobile');
145
146
  const mobileMenuVisibleRef = (0, vue_1.ref)(false);
146
147
  const searchVisibleRef = (0, vue_1.ref)(false);
148
+ const controlledActiveMenuKeyRef = (0, vue_1.toRef)(props, 'activeMenuKey');
149
+ const uncontrolledActiveMenuKeyRef = (0, vue_1.ref)(null);
150
+ const mergedActiveMenuKeyRef = (0, vooks_1.useMergedState)(controlledActiveMenuKeyRef, uncontrolledActiveMenuKeyRef);
147
151
  (0, vue_1.onBeforeMount)(() => {
148
152
  index_cssr_1.headerMobileMenuStyle.mount({
149
153
  id: `${mergedClsPrefixRef.value}-header-mobile-menu`,
@@ -283,6 +287,16 @@ exports.default = (0, vue_1.defineComponent)({
283
287
  function handleLogoClick() {
284
288
  emit('logo-click');
285
289
  }
290
+ function handleUpdateActiveMenuKey(value) {
291
+ uncontrolledActiveMenuKeyRef.value = value;
292
+ emit('update:activeMenuKey', value);
293
+ const { onUpdateActiveMenuKey } = props;
294
+ const { 'onUpdate:activeMenuKey': _onUpdateActiveMenuKey } = props;
295
+ if (onUpdateActiveMenuKey)
296
+ (0, _utils_1.call)(onUpdateActiveMenuKey, value);
297
+ if (_onUpdateActiveMenuKey)
298
+ (0, _utils_1.call)(_onUpdateActiveMenuKey, value);
299
+ }
286
300
  return {
287
301
  mergedClsPrefix: mergedClsPrefixRef,
288
302
  cssVars: cssVarsRef,
@@ -293,6 +307,9 @@ exports.default = (0, vue_1.defineComponent)({
293
307
  isMobile: isMobileRef,
294
308
  mobileMenuVisible: mobileMenuVisibleRef,
295
309
  searchVisible: searchVisibleRef,
310
+ menuPaneClass,
311
+ menuPaneWrapperClass,
312
+ mergedActiveMenuKey: mergedActiveMenuKeyRef,
296
313
  handleSelectLang,
297
314
  handleMenuValueUpdate,
298
315
  handleSearchClick,
@@ -307,8 +324,7 @@ exports.default = (0, vue_1.defineComponent)({
307
324
  handleMobileMenuItemClick,
308
325
  handleMobilePrimaryAction,
309
326
  handleMobileSecondaryAction,
310
- menuPaneClass,
311
- menuPaneWrapperClass,
327
+ handleUpdateActiveMenuKey,
312
328
  onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender
313
329
  };
314
330
  },
@@ -325,7 +341,7 @@ exports.default = (0, vue_1.defineComponent)({
325
341
  this.logoSrc && `${blockClass}__logo--clickable`
326
342
  ].filter(Boolean), onClick: this.handleLogoClick },
327
343
  (0, vue_1.h)("img", { src: this.logoSrc, alt: this.logoAlt })));
328
- const navigationNode = (0, _utils_1.resolveWrappedSlot)($slots.navigation, (children) => children !== null && children !== void 0 ? children : null) || ((0, vue_1.h)(HeaderNavigation_1.default, { menuOptions: this.menuOptions, menuPlacement: this.menuPlacement, menuTrigger: this.menuTrigger, menuValue: this.mergedMenuValue, menuTabsProps: this.menuTabsProps, menuCardMinColumnWidth: this.menuCardMinColumnWidth, mergedClsPrefix: mergedClsPrefix, menuPaneClass: this.menuPaneClass, menuPaneWrapperClass: this.menuPaneWrapperClass, activeMenuKey: this.activeMenuKey, onUpdateMenuValue: this.handleMenuValueUpdate }));
344
+ const navigationNode = (0, _utils_1.resolveWrappedSlot)($slots.navigation, (children) => children !== null && children !== void 0 ? children : null) || ((0, vue_1.h)(HeaderNavigation_1.default, { menuOptions: this.menuOptions, menuPlacement: this.menuPlacement, menuTrigger: this.menuTrigger, menuValue: this.mergedMenuValue, menuTabsProps: this.menuTabsProps, menuCardMinColumnWidth: this.menuCardMinColumnWidth, mergedClsPrefix: mergedClsPrefix, menuPaneClass: this.menuPaneClass, menuPaneWrapperClass: this.menuPaneWrapperClass, activeMenuKey: this.mergedActiveMenuKey, onUpdateMenuValue: this.handleMenuValueUpdate, onUpdateActiveMenuKey: this.handleUpdateActiveMenuKey }));
329
345
  const mobileNode = this.responsive && this.isMobile ? ((0, vue_1.h)(HeaderMobile_1.default, { visible: this.mobileMenuVisible, menuOptions: this.normalizedMenuItems, activeMenuValue: this.mergedMenuValue, langOptions: this.langOptions || defaultLangOptions, currentLang: this.currentLang, mergedClsPrefix: mergedClsPrefix, cssVars: this.cssVars, menuType: this.mobileMenuType, showFooterActions: this.mobileShowFooterActions, showHeaderActions: this.mobileShowHeaderActions, primaryActionText: this.mobilePrimaryActionText, secondaryActionText: this.mobileSecondaryActionText, onToggle: this.toggleMobileMenu, onClose: this.closeMobileMenu, onMenuItemClick: this.handleMobileMenuItemClick, onLanguageSelect: this.handleSelectLang, onPrimaryAction: this.handleMobilePrimaryAction, onSecondaryAction: this.handleMobileSecondaryAction, onSearchClick: this.handleSearchClick, onPreview: this.handlePreviewClick, onLogout: this.handleLogoutClick }, {
330
346
  actions: $slots['mobile-actions'],
331
347
  footer: $slots['mobile-footer']
@@ -45,6 +45,7 @@ export declare const headerNavigationProps: {
45
45
  };
46
46
  readonly 'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
47
47
  readonly onUpdateMenuValue: PropType<MaybeArray<(value: string | number | null) => void>>;
48
+ readonly onUpdateActiveMenuKey: PropType<(value: string | number | null) => void>;
48
49
  };
49
50
  declare const _default: import("vue").DefineComponent<{
50
51
  readonly menuOptions: {
@@ -86,6 +87,7 @@ declare const _default: import("vue").DefineComponent<{
86
87
  };
87
88
  readonly 'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
88
89
  readonly onUpdateMenuValue: PropType<MaybeArray<(value: string | number | null) => void>>;
90
+ readonly onUpdateActiveMenuKey: PropType<(value: string | number | null) => void>;
89
91
  }, {
90
92
  normalizedMenuItems: import("vue").ComputedRef<InternalMenuItem[]>;
91
93
  handleMenuValueUpdate: (value: string | number | null) => void;
@@ -1687,7 +1689,6 @@ declare const _default: import("vue").DefineComponent<{
1687
1689
  "vector-effect"?: import("csstype").Property.VectorEffect | undefined;
1688
1690
  }>;
1689
1691
  hoveredKey: import("vue").Ref<string | number | null>;
1690
- activeMenuKey: import("vue").Ref<string> | import("vue").Ref<number> | import("vue").Ref<null>;
1691
1692
  setActiveMenuKey: (key?: string | number | null) => void;
1692
1693
  handleMenuItemClick: (option: HeaderMenuOption) => void;
1693
1694
  checkedTopMenuKey: import("vue").ComputedRef<string | number | undefined>;
@@ -1731,6 +1732,7 @@ declare const _default: import("vue").DefineComponent<{
1731
1732
  };
1732
1733
  readonly 'onUpdate:menuValue': PropType<MaybeArray<(value: string | number | null) => void>>;
1733
1734
  readonly onUpdateMenuValue: PropType<MaybeArray<(value: string | number | null) => void>>;
1735
+ readonly onUpdateActiveMenuKey: PropType<(value: string | number | null) => void>;
1734
1736
  }>>, {
1735
1737
  readonly menuOptions: HeaderMenuOption[];
1736
1738
  readonly menuPlacement: HeaderMenuPlacement;
@@ -63,7 +63,8 @@ exports.headerNavigationProps = {
63
63
  default: null
64
64
  },
65
65
  'onUpdate:menuValue': [Function, Array],
66
- onUpdateMenuValue: [Function, Array]
66
+ onUpdateMenuValue: [Function, Array],
67
+ onUpdateActiveMenuKey: Function
67
68
  };
68
69
  exports.default = (0, vue_1.defineComponent)({
69
70
  name: 'HeaderNavigation',
@@ -80,7 +81,7 @@ exports.default = (0, vue_1.defineComponent)({
80
81
  navRef.value = el;
81
82
  };
82
83
  const hoveredKeyRef = (0, vue_1.ref)(null);
83
- const activeMenuKeyRef = (0, vue_1.toRef)(props.activeMenuKey);
84
+ const activeMenuKeyRef = (0, vue_1.toRef)(props, 'activeMenuKey');
84
85
  const tabRefs = (0, vue_1.ref)({});
85
86
  const indicatorStyleRef = (0, vue_1.ref)({
86
87
  width: '0px',
@@ -130,7 +131,9 @@ exports.default = (0, vue_1.defineComponent)({
130
131
  (0, _utils_1.call)(_onUpdateMenuValue, value);
131
132
  }
132
133
  function setActiveMenuKey(key = null) {
133
- activeMenuKeyRef.value = key;
134
+ if (props.onUpdateActiveMenuKey) {
135
+ props.onUpdateActiveMenuKey(key);
136
+ }
134
137
  }
135
138
  function handleMenuItemClick(option) {
136
139
  setActiveMenuKey(option === null || option === void 0 ? void 0 : option.key);
@@ -169,7 +172,6 @@ exports.default = (0, vue_1.defineComponent)({
169
172
  setTabRef,
170
173
  indicatorStyle: indicatorStyleRef,
171
174
  hoveredKey: hoveredKeyRef,
172
- activeMenuKey: activeMenuKeyRef,
173
175
  setActiveMenuKey,
174
176
  handleMenuItemClick,
175
177
  checkedTopMenuKey
@@ -25,6 +25,7 @@ export interface HeaderProps {
25
25
  mobileShowHeaderActions?: boolean;
26
26
  onSearch?: HeaderSearchHandler;
27
27
  onUpdateMenuValue: (value: string | number | null) => void;
28
+ onUpdateActiveMenuKey?: (value: string | number | null) => void;
28
29
  }
29
30
  export interface HeaderMenuColumnOption {
30
31
  type: 'column';
@@ -11,4 +11,4 @@ export declare function isColumnOption(option: HeaderMenuChildOption): option is
11
11
  export declare function isNotNull<T>(value: T | null): value is T;
12
12
  export declare function resolvePlacement(placement: HeaderMenuPlacement): TabsProps['placement'];
13
13
  export declare function isLeafMenuOption(option: HeaderMenuChildOption): option is Exclude<HeaderMenuChildOption, HeaderMenuColumnOption>;
14
- export declare function resolveTopLevelMenuKey(menuOptions: HeaderMenuOption[], activeMenuKey: string | number | null | undefined): string | number | null;
14
+ export declare function resolveTopLevelMenuKey(menuOptions: HeaderMenuOption[], activeMenuKey?: string | number | null): string | number | null;
@@ -84,7 +84,7 @@ function isMenuValueInChildren(children, value) {
84
84
  function resolveTopLevelMenuKey(menuOptions, activeMenuKey) {
85
85
  if (activeMenuKey === null || activeMenuKey === undefined)
86
86
  return null;
87
- for (let index = 0; index < menuOptions.length; index += 1) {
87
+ for (let index = 0; index < menuOptions.length; index++) {
88
88
  const option = menuOptions[index];
89
89
  const optionKey = getMenuItemKey(option, index);
90
90
  if (optionKey === activeMenuKey)
package/lib/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "1.12.17";
1
+ declare const _default: "1.12.18";
2
2
  export default _default;
package/lib/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = '1.12.17';
3
+ exports.default = '1.12.18';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uzum-tech/ui",
3
- "version": "1.12.17",
3
+ "version": "1.12.18",
4
4
  "description": "A Vue 3 Component Library. Fairly Complete, Theme Customizable, Uses TypeScript, Fast",
5
5
  "main": "lib/index.js",
6
6
  "module": "es/index.js",
package/volar.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  // Auto generated component declarations
2
2
  declare module 'vue' {
3
3
  export interface GlobalComponents {
4
+ UActionCard: typeof import('@uzum-tech/ui')['UActionCard']
4
5
  UAffix: typeof import('@uzum-tech/ui')['UAffix']
5
6
  UAlert: typeof import('@uzum-tech/ui')['UAlert']
6
7
  UAnchor: typeof import('@uzum-tech/ui')['UAnchor']
@@ -21,6 +22,9 @@ declare module 'vue' {
21
22
  UCarousel: typeof import('@uzum-tech/ui')['UCarousel']
22
23
  UCarouselItem: typeof import('@uzum-tech/ui')['UCarouselItem']
23
24
  UCascader: typeof import('@uzum-tech/ui')['UCascader']
25
+ UChat: typeof import('@uzum-tech/ui')['UChat']
26
+ UChatListItems: typeof import('@uzum-tech/ui')['UChatListItems']
27
+ UChatMessages: typeof import('@uzum-tech/ui')['UChatMessages']
24
28
  UCheckbox: typeof import('@uzum-tech/ui')['UCheckbox']
25
29
  UCheckboxGroup: typeof import('@uzum-tech/ui')['UCheckboxGroup']
26
30
  UCode: typeof import('@uzum-tech/ui')['UCode']
@@ -31,6 +35,7 @@ declare module 'vue' {
31
35
  UColorPicker: typeof import('@uzum-tech/ui')['UColorPicker']
32
36
  UConfigProvider: typeof import('@uzum-tech/ui')['UConfigProvider']
33
37
  UCountdown: typeof import('@uzum-tech/ui')['UCountdown']
38
+ UCrop: typeof import('@uzum-tech/ui')['UCrop']
34
39
  UDataTable: typeof import('@uzum-tech/ui')['UDataTable']
35
40
  UDatePicker: typeof import('@uzum-tech/ui')['UDatePicker']
36
41
  UDescriptions: typeof import('@uzum-tech/ui')['UDescriptions']
@@ -66,11 +71,23 @@ declare module 'vue' {
66
71
  UH4: typeof import('@uzum-tech/ui')['UH4']
67
72
  UH5: typeof import('@uzum-tech/ui')['UH5']
68
73
  UH6: typeof import('@uzum-tech/ui')['UH6']
74
+ UHeader: typeof import('@uzum-tech/ui')['UHeader']
75
+ UHeaderActions: typeof import('@uzum-tech/ui')['UHeaderActions']
76
+ UHeaderDesktopLayout: typeof import('@uzum-tech/ui')['UHeaderDesktopLayout']
77
+ UHeaderMobile: typeof import('@uzum-tech/ui')['UHeaderMobile']
78
+ UHeaderMobileLayout: typeof import('@uzum-tech/ui')['UHeaderMobileLayout']
79
+ UHeaderNavigation: typeof import('@uzum-tech/ui')['UHeaderNavigation']
80
+ UHeaderSearchDesktop: typeof import('@uzum-tech/ui')['UHeaderSearchDesktop']
81
+ UHeaderSearchMobile: typeof import('@uzum-tech/ui')['UHeaderSearchMobile']
82
+ UHeaderSearchResults: typeof import('@uzum-tech/ui')['UHeaderSearchResults']
69
83
  UHr: typeof import('@uzum-tech/ui')['UHr']
70
84
  UIcon: typeof import('@uzum-tech/ui')['UIcon']
85
+ UIconBar: typeof import('@uzum-tech/ui')['UIconBar']
86
+ UIconBarItem: typeof import('@uzum-tech/ui')['UIconBarItem']
71
87
  UIconWrapper: typeof import('@uzum-tech/ui')['UIconWrapper']
72
88
  UImage: typeof import('@uzum-tech/ui')['UImage']
73
89
  UImageGroup: typeof import('@uzum-tech/ui')['UImageGroup']
90
+ UInfiniteScroll: typeof import('@uzum-tech/ui')['UInfiniteScroll']
74
91
  UInput: typeof import('@uzum-tech/ui')['UInput']
75
92
  UInputGroup: typeof import('@uzum-tech/ui')['UInputGroup']
76
93
  UInputGroupLabel: typeof import('@uzum-tech/ui')['UInputGroupLabel']
@@ -91,6 +108,7 @@ declare module 'vue' {
91
108
  UMenu: typeof import('@uzum-tech/ui')['UMenu']
92
109
  UMessageProvider: typeof import('@uzum-tech/ui')['UMessageProvider']
93
110
  UModal: typeof import('@uzum-tech/ui')['UModal']
111
+ UModalFullscreen: typeof import('@uzum-tech/ui')['UModalFullscreen']
94
112
  UNotificationProvider: typeof import('@uzum-tech/ui')['UNotificationProvider']
95
113
  UNumberAnimation: typeof import('@uzum-tech/ui')['UNumberAnimation']
96
114
  UOl: typeof import('@uzum-tech/ui')['UOl']
@@ -101,12 +119,14 @@ declare module 'vue' {
101
119
  UPopover: typeof import('@uzum-tech/ui')['UPopover']
102
120
  UPopselect: typeof import('@uzum-tech/ui')['UPopselect']
103
121
  UProgress: typeof import('@uzum-tech/ui')['UProgress']
122
+ UQrCode: typeof import('@uzum-tech/ui')['UQrCode']
104
123
  URadio: typeof import('@uzum-tech/ui')['URadio']
105
124
  URadioButton: typeof import('@uzum-tech/ui')['URadioButton']
106
125
  URadioGroup: typeof import('@uzum-tech/ui')['URadioGroup']
107
126
  URate: typeof import('@uzum-tech/ui')['URate']
108
127
  UResult: typeof import('@uzum-tech/ui')['UResult']
109
128
  URow: typeof import('@uzum-tech/ui')['URow']
129
+ USafeTopScrollbar: typeof import('@uzum-tech/ui')['USafeTopScrollbar']
110
130
  UScrollbar: typeof import('@uzum-tech/ui')['UScrollbar']
111
131
  USelect: typeof import('@uzum-tech/ui')['USelect']
112
132
  USkeleton: typeof import('@uzum-tech/ui')['USkeleton']
@@ -123,6 +143,7 @@ declare module 'vue' {
123
143
  UTable: typeof import('@uzum-tech/ui')['UTable']
124
144
  UTabs: typeof import('@uzum-tech/ui')['UTabs']
125
145
  UTag: typeof import('@uzum-tech/ui')['UTag']
146
+ UTagGroup: typeof import('@uzum-tech/ui')['UTagGroup']
126
147
  UTbody: typeof import('@uzum-tech/ui')['UTbody']
127
148
  UTd: typeof import('@uzum-tech/ui')['UTd']
128
149
  UText: typeof import('@uzum-tech/ui')['UText']
@@ -144,29 +165,8 @@ declare module 'vue' {
144
165
  UUploadDragger: typeof import('@uzum-tech/ui')['UUploadDragger']
145
166
  UUploadFileList: typeof import('@uzum-tech/ui')['UUploadFileList']
146
167
  UUploadTrigger: typeof import('@uzum-tech/ui')['UUploadTrigger']
147
- UWatermark: typeof import('@uzum-tech/ui')['UWatermark']
148
- UActionCard: typeof import('@uzum-tech/ui')['UActionCard']
149
- UChat: typeof import('@uzum-tech/ui')['UChat']
150
- UChatListItems: typeof import('@uzum-tech/ui')['UChatListItems']
151
- UChatMessages: typeof import('@uzum-tech/ui')['UChatMessages']
152
- UInfiniteScroll: typeof import('@uzum-tech/ui')['UInfiniteScroll']
153
168
  UVirtualList: typeof import('@uzum-tech/ui')['UVirtualList']
154
- UModalFullscreen: typeof import('@uzum-tech/ui')['UModalFullscreen']
155
- UCrop: typeof import('@uzum-tech/ui')['UCrop']
156
- UTagGroup: typeof import('@uzum-tech/ui')['UTagGroup']
157
- UIconBar: typeof import('@uzum-tech/ui')['UIconBar']
158
- UIconBarItem: typeof import('@uzum-tech/ui')['UIconBarItem']
159
- UQrCode: typeof import('@uzum-tech/ui')['UQrCode']
160
- UHeader: typeof import('@uzum-tech/ui')['UHeader']
161
- USafeTopScrollbar: typeof import('@uzum-tech/ui')['USafeTopScrollbar']
162
- UHeaderActions: typeof import('@uzum-tech/ui')['UHeaderActions']
163
- UHeaderMobile: typeof import('@uzum-tech/ui')['UHeaderMobile']
164
- UHeaderNavigation: typeof import('@uzum-tech/ui')['UHeaderNavigation']
165
- UHeaderDesktopLayout: typeof import('@uzum-tech/ui')['UHeaderDesktopLayout']
166
- UHeaderMobileLayout: typeof import('@uzum-tech/ui')['UHeaderMobileLayout']
167
- UHeaderSearchDesktop: typeof import('@uzum-tech/ui')['UHeaderSearchDesktop']
168
- UHeaderSearchMobile: typeof import('@uzum-tech/ui')['UHeaderSearchMobile']
169
- UHeaderSearchResults: typeof import('@uzum-tech/ui')['UHeaderSearchResults']
169
+ UWatermark: typeof import('@uzum-tech/ui')['UWatermark']
170
170
  }
171
171
  }
172
172
  export {}
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.17",
5
+ "version": "1.12.18",
6
6
  "js-types-syntax": "typescript",
7
7
  "contributions": {
8
8
  "html": {
@@ -4232,6 +4232,13 @@
4232
4232
  "since": "2.30.5"
4233
4233
  }
4234
4234
  },
4235
+ {
4236
+ "name": "default-empty-value",
4237
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/data-table",
4238
+ "type": "string | (() => VNodeChild) | undefined",
4239
+ "description": "Default value to display when cell value is `null`, `undefined`, or `false`. Can be a string or a render function. If not provided, empty string is used.",
4240
+ "default": "undefined"
4241
+ },
4235
4242
  {
4236
4243
  "name": "render-expand-icon",
4237
4244
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/data-table",
@@ -18337,7 +18344,7 @@
18337
18344
  "name": "active-menu-key",
18338
18345
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header",
18339
18346
  "type": "string | number | null",
18340
- "description": "Active menu key.",
18347
+ "description": "Key of the active menu item (can be set from outside, e.g. router).",
18341
18348
  "default": "null"
18342
18349
  },
18343
18350
  {
@@ -18452,12 +18459,30 @@
18452
18459
  "name": "update-menu-value",
18453
18460
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header"
18454
18461
  },
18462
+ {
18463
+ "name": "update-active-menu-key",
18464
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header",
18465
+ "type": "(value: string | number | null) => void",
18466
+ "description": "Same as `on-update:active-menu-key` (kebab-case alias).",
18467
+ "default": "-"
18468
+ },
18469
+ {
18470
+ "name": "update-active-menu-key",
18471
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header"
18472
+ },
18455
18473
  {
18456
18474
  "name": "update:menu-value",
18457
18475
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header",
18458
18476
  "type": "(value: string | number | null) => void",
18459
18477
  "description": "Callback when the active menu key changes.",
18460
18478
  "default": "-"
18479
+ },
18480
+ {
18481
+ "name": "update:active-menu-key",
18482
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header",
18483
+ "type": "(value: string | number | null) => void",
18484
+ "description": "Callback when `active-menu-key` changes (v-model).",
18485
+ "default": "-"
18461
18486
  }
18462
18487
  ]
18463
18488
  }
@@ -18531,6 +18556,10 @@
18531
18556
  {
18532
18557
  "name": "update-menu-value",
18533
18558
  "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header"
18559
+ },
18560
+ {
18561
+ "name": "update-active-menu-key",
18562
+ "doc-url": "https://uzum-ui.kapitalbank.uz/en-US/os-theme/components/header"
18534
18563
  }
18535
18564
  ]
18536
18565
  }
package/README.md DELETED
@@ -1,73 +0,0 @@
1
- <p align="center">
2
- <img width="144px" src="https://ik.imagekit.io/jbalancer/uzum-logo.svg?updatedAt=1692012347116" />
3
- </p>
4
-
5
- <h1 align="center">Uzum UI</h1>
6
- <p align="center">A Vue 3 Component Library</p>
7
- <p align="center"><b>Fairly Complete, Theme Customizable, Uses TypeScript, Fast</b></p>
8
-
9
- <p align="center">English</p>
10
-
11
- ## Documentation
12
-
13
- [www.uzumui.com](http://www.uzumui.com)
14
-
15
- ## Features
16
-
17
- ### Fairly Complete
18
-
19
- There are more than 80 components. Hope they can help you write less code.
20
-
21
- What's more, they are all treeshakable.
22
-
23
- ### Theme Customizable
24
-
25
- We provide an advanced type safe theme system built using TypeScript. All you need is to provide a theme overrides object in JS. Then all the stuff will be done by us.
26
-
27
- What's more, no less/sass/css variables, no webpack loaders are required.
28
-
29
- ### Uses TypeScript
30
-
31
- All the stuff in Uzum UI is written in TypeScript. It can work with your typescript project seamlessly.
32
-
33
- What's more, you don't need to import any CSS to use the components.
34
-
35
- ### Fast
36
-
37
- I try to make it not rather slow. At least select, tree, transfer, table and cascader work with virtual list.
38
-
39
- What's more, ..., no more. Just enjoy it.
40
-
41
- ## Installation
42
-
43
- ### npm
44
-
45
- Use npm to install.
46
-
47
- ```bash
48
- npm i -D @uzum-tech/ui
49
- ```
50
-
51
- ### Fonts
52
-
53
- ```bash
54
- npm i -D vfonts
55
- ```
56
-
57
- ### Icons
58
-
59
- Uzum UI recommends using [xicons](https://www.xicons.org) as icon library.
60
-
61
- ### Design Resources
62
-
63
- [Uzum UI (Figma)](https://www.figma.com/file/yKEpk8950c0bZ2fA51psBI/Components-Web?type=design&t=brzuYK7mC2iOHJJ1-6).
64
-
65
- ## Contributing
66
-
67
- Later...
68
-
69
- ## License
70
-
71
- Uzum UI is licensed under the [MIT license](https://opensource.org/licenses/MIT).
72
-
73
- Graphics resouces of `result` component is licensed under the [CC-BY 4.0](https://creativecommons.org/licenses/by/4.0/). The graphics resources come from [Twemoji](https://github.com/twitter/twemoji).