@uzum-tech/ui 1.12.17 → 1.12.19

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 (48) hide show
  1. package/dist/index.js +146 -35
  2. package/dist/index.prod.js +3 -3
  3. package/es/chat/src/ChatParts/ChatAttachment.d.ts +6 -5
  4. package/es/chat/src/ChatParts/ChatAttachment.js +3 -3
  5. package/es/data-table/src/DataTable.d.ts +2 -0
  6. package/es/data-table/src/DataTable.js +1 -0
  7. package/es/data-table/src/TableParts/Body.d.ts +1 -0
  8. package/es/data-table/src/TableParts/Body.js +3 -2
  9. package/es/data-table/src/TableParts/Cell.d.ts +2 -0
  10. package/es/data-table/src/TableParts/Cell.js +62 -9
  11. package/es/data-table/src/interface.d.ts +2 -0
  12. package/es/data-table/src/interface.js +1 -1
  13. package/es/header/src/Header.d.ts +24 -6
  14. package/es/header/src/Header.js +36 -11
  15. package/es/header/src/HeaderActions.d.ts +54 -42
  16. package/es/header/src/HeaderActions.js +67 -38
  17. package/es/header/src/HeaderNavigation.d.ts +3 -1
  18. package/es/header/src/HeaderNavigation.js +6 -4
  19. package/es/header/src/interface.d.ts +24 -1
  20. package/es/header/src/utils.d.ts +1 -1
  21. package/es/header/src/utils.js +1 -1
  22. package/es/version.d.ts +1 -1
  23. package/es/version.js +1 -1
  24. package/lib/chat/src/ChatParts/ChatAttachment.d.ts +6 -5
  25. package/lib/chat/src/ChatParts/ChatAttachment.js +3 -3
  26. package/lib/data-table/src/DataTable.d.ts +2 -0
  27. package/lib/data-table/src/DataTable.js +1 -0
  28. package/lib/data-table/src/TableParts/Body.d.ts +1 -0
  29. package/lib/data-table/src/TableParts/Body.js +3 -2
  30. package/lib/data-table/src/TableParts/Cell.d.ts +2 -0
  31. package/lib/data-table/src/TableParts/Cell.js +62 -9
  32. package/lib/data-table/src/interface.d.ts +2 -0
  33. package/lib/data-table/src/interface.js +1 -1
  34. package/lib/header/src/Header.d.ts +24 -6
  35. package/lib/header/src/Header.js +35 -10
  36. package/lib/header/src/HeaderActions.d.ts +54 -42
  37. package/lib/header/src/HeaderActions.js +67 -38
  38. package/lib/header/src/HeaderNavigation.d.ts +3 -1
  39. package/lib/header/src/HeaderNavigation.js +6 -4
  40. package/lib/header/src/interface.d.ts +24 -1
  41. package/lib/header/src/utils.d.ts +1 -1
  42. package/lib/header/src/utils.js +1 -1
  43. package/lib/version.d.ts +1 -1
  44. package/lib/version.js +1 -1
  45. package/package.json +1 -1
  46. package/volar.d.ts +22 -22
  47. package/web-types.json +80 -12
  48. package/README.md +0 -73
package/dist/index.js CHANGED
@@ -54291,7 +54291,7 @@
54291
54291
  },
54292
54292
  uploadProps: {
54293
54293
  type: Object,
54294
- default: () => ({})
54294
+ default: void 0
54295
54295
  },
54296
54296
  withPadding: {
54297
54297
  type: Boolean,
@@ -54342,7 +54342,6 @@
54342
54342
  UUpload,
54343
54343
  {
54344
54344
  abstract: true,
54345
- ...props.uploadProps,
54346
54345
  fileList,
54347
54346
  fileListStyle: props.withPadding ? {
54348
54347
  display: "flex",
@@ -54357,7 +54356,8 @@
54357
54356
  showRetryButton: props.attachments.some(
54358
54357
  (attachment) => attachment.status === ChatAttachmentStatus.ERROR
54359
54358
  ),
54360
- onDownload: handleDownload
54359
+ onDownload: handleDownload,
54360
+ ...props.uploadProps
54361
54361
  },
54362
54362
  {
54363
54363
  default: () => /* @__PURE__ */ vue.h(UUploadFileList, null, {
@@ -63971,6 +63971,7 @@
63971
63971
  },
63972
63972
  scrollbarProps: Object,
63973
63973
  renderCell: Function,
63974
+ defaultEmptyValue: [String, Function],
63974
63975
  renderExpandIcon: Function,
63975
63976
  spinProps: {
63976
63977
  type: Object,
@@ -83477,7 +83478,8 @@
83477
83478
  type: Object,
83478
83479
  required: true
83479
83480
  },
83480
- renderCell: Function
83481
+ renderCell: Function,
83482
+ defaultEmptyValue: [String, Function]
83481
83483
  },
83482
83484
  render() {
83483
83485
  const { isSummary, column, row, renderCell } = this;
@@ -83488,12 +83490,25 @@
83488
83490
  const isEditable = typeof editable === "function" ? editable(row) : editable;
83489
83491
  if (render && !isSummary) {
83490
83492
  let cellValue = render(row, this.index);
83491
- if (mask && cellValue !== null && cellValue !== void 0) {
83492
- if (typeof cellValue === "string" || typeof cellValue === "number") {
83493
- cellValue = processMaskedValue(cellValue, mask);
83493
+ if (cellValue == null || cellValue === false) {
83494
+ const { defaultEmptyValue } = this;
83495
+ if (defaultEmptyValue !== void 0) {
83496
+ if (typeof defaultEmptyValue === "function") {
83497
+ cell = defaultEmptyValue();
83498
+ } else {
83499
+ cell = defaultEmptyValue;
83500
+ }
83501
+ } else {
83502
+ cell = "";
83494
83503
  }
83504
+ } else {
83505
+ if (mask && cellValue !== null && cellValue !== void 0) {
83506
+ if (typeof cellValue === "string" || typeof cellValue === "number") {
83507
+ cellValue = processMaskedValue(cellValue, mask);
83508
+ }
83509
+ }
83510
+ cell = cellValue;
83495
83511
  }
83496
- cell = cellValue;
83497
83512
  } else if (isEditable && !isSummary) {
83498
83513
  const { placeholder } = column;
83499
83514
  const rawValue = String(row[key] || "");
@@ -83603,16 +83618,42 @@
83603
83618
  if (mask && cellValue !== null && cellValue !== void 0) {
83604
83619
  cellValue = processMaskedValue(String(cellValue), mask);
83605
83620
  }
83606
- cell = String(cellValue);
83621
+ if (cellValue === null || cellValue === void 0 || cellValue === false) {
83622
+ const { defaultEmptyValue } = this;
83623
+ if (defaultEmptyValue !== void 0) {
83624
+ if (typeof defaultEmptyValue === "function") {
83625
+ cell = defaultEmptyValue();
83626
+ } else {
83627
+ cell = defaultEmptyValue;
83628
+ }
83629
+ } else {
83630
+ cell = "";
83631
+ }
83632
+ } else {
83633
+ cell = String(cellValue);
83634
+ }
83607
83635
  } else {
83608
83636
  let cellValue = renderCell ? renderCell(get(row, key), row, column) : get(row, key);
83609
83637
  if (cellValue && typeof cellValue === "object" && "type" in cellValue) {
83610
83638
  cell = cellValue;
83611
83639
  } else {
83612
- if (mask && cellValue !== null && cellValue !== void 0) {
83613
- cellValue = processMaskedValue(cellValue, mask);
83640
+ if (cellValue === null || cellValue === void 0 || cellValue === false) {
83641
+ const { defaultEmptyValue } = this;
83642
+ if (defaultEmptyValue !== void 0) {
83643
+ if (typeof defaultEmptyValue === "function") {
83644
+ cell = defaultEmptyValue();
83645
+ } else {
83646
+ cell = defaultEmptyValue;
83647
+ }
83648
+ } else {
83649
+ cell = "";
83650
+ }
83651
+ } else {
83652
+ if (mask && cellValue !== null && cellValue !== void 0) {
83653
+ cellValue = processMaskedValue(cellValue, mask);
83654
+ }
83655
+ cell = String(cellValue);
83614
83656
  }
83615
- cell = String(cellValue);
83616
83657
  }
83617
83658
  }
83618
83659
  }
@@ -83977,6 +84018,7 @@
83977
84018
  doCheck,
83978
84019
  doUncheck,
83979
84020
  renderCell,
84021
+ defaultEmptyValueRef,
83980
84022
  emptyPropsRef
83981
84023
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
83982
84024
  } = vue.inject(dataTableInjectionKey);
@@ -84252,6 +84294,7 @@
84252
84294
  handleRadioUpdateChecked,
84253
84295
  handleUpdateExpanded,
84254
84296
  renderCell,
84297
+ defaultEmptyValueRef,
84255
84298
  emptyPropsRef,
84256
84299
  ...exposedMethods
84257
84300
  };
@@ -84606,6 +84649,7 @@
84606
84649
  isSummary,
84607
84650
  mergedTheme: mergedTheme2,
84608
84651
  renderCell: this.renderCell,
84652
+ defaultEmptyValue: this.defaultEmptyValueRef,
84609
84653
  onEdit: (value, row2, key) => {
84610
84654
  this.$emit("edit", value, row2, key);
84611
84655
  }
@@ -86643,6 +86687,7 @@
86643
86687
  handleTableBodyScroll,
86644
86688
  setHeaderScrollLeft,
86645
86689
  renderCell: vue.toRef(props, "renderCell"),
86690
+ defaultEmptyValueRef: vue.toRef(props, "defaultEmptyValue"),
86646
86691
  emptyPropsRef: vue.toRef(props, "emptyProps"),
86647
86692
  handleEdit
86648
86693
  });
@@ -125267,7 +125312,7 @@
125267
125312
  }
125268
125313
  function resolveTopLevelMenuKey(menuOptions, activeMenuKey) {
125269
125314
  if (activeMenuKey === null || activeMenuKey === void 0) return null;
125270
- for (let index = 0; index < menuOptions.length; index += 1) {
125315
+ for (let index = 0; index < menuOptions.length; index++) {
125271
125316
  const option = menuOptions[index];
125272
125317
  const optionKey = getMenuItemKey(option, index);
125273
125318
  if (optionKey === activeMenuKey) return optionKey;
@@ -125317,7 +125362,8 @@
125317
125362
  default: null
125318
125363
  },
125319
125364
  "onUpdate:menuValue": [Function, Array],
125320
- onUpdateMenuValue: [Function, Array]
125365
+ onUpdateMenuValue: [Function, Array],
125366
+ onUpdateActiveMenuKey: Function
125321
125367
  };
125322
125368
  var HeaderNavigation = vue.defineComponent({
125323
125369
  name: "HeaderNavigation",
@@ -125334,7 +125380,7 @@
125334
125380
  navRef.value = el;
125335
125381
  };
125336
125382
  const hoveredKeyRef = vue.ref(null);
125337
- const activeMenuKeyRef = vue.toRef(props.activeMenuKey);
125383
+ const activeMenuKeyRef = vue.toRef(props, "activeMenuKey");
125338
125384
  const tabRefs = vue.ref({});
125339
125385
  const indicatorStyleRef = vue.ref({
125340
125386
  width: "0px",
@@ -125376,7 +125422,9 @@
125376
125422
  if (_onUpdateMenuValue) call(_onUpdateMenuValue, value);
125377
125423
  }
125378
125424
  function setActiveMenuKey(key = null) {
125379
- activeMenuKeyRef.value = key;
125425
+ if (props.onUpdateActiveMenuKey) {
125426
+ props.onUpdateActiveMenuKey(key);
125427
+ }
125380
125428
  }
125381
125429
  function handleMenuItemClick(option) {
125382
125430
  setActiveMenuKey(option?.key);
@@ -125422,7 +125470,6 @@
125422
125470
  setTabRef,
125423
125471
  indicatorStyle: indicatorStyleRef,
125424
125472
  hoveredKey: hoveredKeyRef,
125425
- activeMenuKey: activeMenuKeyRef,
125426
125473
  setActiveMenuKey,
125427
125474
  handleMenuItemClick,
125428
125475
  checkedTopMenuKey
@@ -126221,6 +126268,10 @@
126221
126268
  type: Boolean,
126222
126269
  default: true
126223
126270
  },
126271
+ actionsVisibility: {
126272
+ type: Object,
126273
+ required: false
126274
+ },
126224
126275
  cssVars: Object,
126225
126276
  onSearch: Function,
126226
126277
  onPreview: Function,
@@ -126294,12 +126345,14 @@
126294
126345
  };
126295
126346
  },
126296
126347
  render() {
126348
+ const { $slots } = this;
126297
126349
  const blockClass = `${this.mergedClsPrefix}-header`;
126298
126350
  if (this.responsive && this.isMobile && this.mobileActionsCollapse) {
126299
- return /* @__PURE__ */ vue.h("div", { class: `${blockClass}__actions` }, /* @__PURE__ */ vue.h(UFlex, { size: 32 }, { default: () => this.$slots.mobile?.() }));
126351
+ return /* @__PURE__ */ vue.h("div", { class: `${blockClass}__actions` }, /* @__PURE__ */ vue.h(UFlex, { size: 32 }, { default: () => $slots.mobile?.() }));
126300
126352
  }
126301
- return /* @__PURE__ */ vue.h("div", { class: `${blockClass}__actions` }, /* @__PURE__ */ vue.h(UFlex, { class: `${blockClass}__actions-block`, size: 32 }, {
126302
- default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(
126353
+ const langNode = () => {
126354
+ if (this.actionsVisibility?.lang === false) return null;
126355
+ return $slots.lang ? $slots.lang() : /* @__PURE__ */ vue.h(
126303
126356
  UDropdown,
126304
126357
  {
126305
126358
  options: this.langOptions,
@@ -126318,7 +126371,11 @@
126318
126371
  }
126319
126372
  )
126320
126373
  }
126321
- ), /* @__PURE__ */ vue.h("div", { class: `${blockClass}__search-wrapper` }, /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.handleSearchClick }, {
126374
+ );
126375
+ };
126376
+ const searchNode = () => {
126377
+ if (this.actionsVisibility?.search === false) return null;
126378
+ return $slots.search ? $slots.search() : /* @__PURE__ */ vue.h("div", { class: `${blockClass}__search-wrapper` }, /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.handleSearchClick }, {
126322
126379
  default: () => /* @__PURE__ */ vue.h(UIcon, { size: 24 }, { default: () => /* @__PURE__ */ vue.h(SearchIcon, null) })
126323
126380
  }), /* @__PURE__ */ vue.h(vue.Transition, { name: "fade-in-scale-up" }, {
126324
126381
  default: () => this.searchVisible ? vue.h(HeaderSearchDesktop, {
@@ -126334,11 +126391,22 @@
126334
126391
  },
126335
126392
  onResultSelect: this.handleResultSelect
126336
126393
  }) : null
126337
- })), /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.onPreview }, {
126394
+ }));
126395
+ };
126396
+ const accessibilityNode = () => {
126397
+ if (this.actionsVisibility?.accessibility === false) return null;
126398
+ return $slots.accessibility ? $slots.accessibility() : /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.onPreview }, {
126338
126399
  default: () => /* @__PURE__ */ vue.h(UIcon, { size: 24 }, { default: () => /* @__PURE__ */ vue.h(EyeIcon, null) })
126339
- }), /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.onLogout }, {
126400
+ });
126401
+ };
126402
+ const logoutNode = () => {
126403
+ if (this.actionsVisibility?.logout === false) return null;
126404
+ return $slots.logout ? $slots.logout() : /* @__PURE__ */ vue.h(Button, { text: true, onClick: this.onLogout }, {
126340
126405
  default: () => /* @__PURE__ */ vue.h(UIcon, { size: 24 }, { default: () => /* @__PURE__ */ vue.h(LogoutIcon, null) })
126341
- }))
126406
+ });
126407
+ };
126408
+ return /* @__PURE__ */ vue.h("div", { class: `${blockClass}__actions` }, /* @__PURE__ */ vue.h(UFlex, { class: `${blockClass}__actions-block`, size: 32 }, {
126409
+ default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, langNode(), searchNode(), accessibilityNode(), logoutNode())
126342
126410
  }));
126343
126411
  }
126344
126412
  });
@@ -126618,9 +126686,14 @@
126618
126686
  type: Boolean,
126619
126687
  default: true
126620
126688
  },
126689
+ actionsProps: {
126690
+ type: Object
126691
+ },
126621
126692
  onSearch: Function,
126622
126693
  "onUpdate:menuValue": [Function, Array],
126623
- onUpdateMenuValue: [Function, Array]
126694
+ onUpdateMenuValue: [Function, Array],
126695
+ "onUpdate:activeMenuKey": [Function, Array],
126696
+ onUpdateActiveMenuKey: [Function, Array]
126624
126697
  };
126625
126698
  var Header = vue.defineComponent({
126626
126699
  name: "Header",
@@ -126633,7 +126706,8 @@
126633
126706
  "language-select",
126634
126707
  "logo-click",
126635
126708
  "mobile-primary-action",
126636
- "mobile-secondary-action"
126709
+ "mobile-secondary-action",
126710
+ "update:activeMenuKey"
126637
126711
  ],
126638
126712
  setup(props, { emit }) {
126639
126713
  const { mergedClsPrefixRef } = useConfig(props);
@@ -126648,6 +126722,12 @@
126648
126722
  const isMobileRef = vue.toRef(props, "isMobile");
126649
126723
  const mobileMenuVisibleRef = vue.ref(false);
126650
126724
  const searchVisibleRef = vue.ref(false);
126725
+ const controlledActiveMenuKeyRef = vue.toRef(props, "activeMenuKey");
126726
+ const uncontrolledActiveMenuKeyRef = vue.ref(null);
126727
+ const mergedActiveMenuKeyRef = useMergedState(
126728
+ controlledActiveMenuKeyRef,
126729
+ uncontrolledActiveMenuKeyRef
126730
+ );
126651
126731
  vue.onBeforeMount(() => {
126652
126732
  headerMobileMenuStyle.mount({
126653
126733
  id: `${mergedClsPrefixRef.value}-header-mobile-menu`,
@@ -126798,6 +126878,14 @@
126798
126878
  function handleLogoClick() {
126799
126879
  emit("logo-click");
126800
126880
  }
126881
+ function handleUpdateActiveMenuKey(value) {
126882
+ uncontrolledActiveMenuKeyRef.value = value;
126883
+ emit("update:activeMenuKey", value);
126884
+ const { onUpdateActiveMenuKey } = props;
126885
+ const { "onUpdate:activeMenuKey": _onUpdateActiveMenuKey } = props;
126886
+ if (onUpdateActiveMenuKey) call(onUpdateActiveMenuKey, value);
126887
+ if (_onUpdateActiveMenuKey) call(_onUpdateActiveMenuKey, value);
126888
+ }
126801
126889
  return {
126802
126890
  mergedClsPrefix: mergedClsPrefixRef,
126803
126891
  cssVars: cssVarsRef,
@@ -126808,6 +126896,9 @@
126808
126896
  isMobile: isMobileRef,
126809
126897
  mobileMenuVisible: mobileMenuVisibleRef,
126810
126898
  searchVisible: searchVisibleRef,
126899
+ menuPaneClass,
126900
+ menuPaneWrapperClass,
126901
+ mergedActiveMenuKey: mergedActiveMenuKeyRef,
126811
126902
  handleSelectLang,
126812
126903
  handleMenuValueUpdate,
126813
126904
  handleSearchClick,
@@ -126822,8 +126913,7 @@
126822
126913
  handleMobileMenuItemClick,
126823
126914
  handleMobilePrimaryAction,
126824
126915
  handleMobileSecondaryAction,
126825
- menuPaneClass,
126826
- menuPaneWrapperClass,
126916
+ handleUpdateActiveMenuKey,
126827
126917
  onRender: themeClassHandle?.onRender
126828
126918
  };
126829
126919
  },
@@ -126870,8 +126960,9 @@
126870
126960
  mergedClsPrefix,
126871
126961
  menuPaneClass: this.menuPaneClass,
126872
126962
  menuPaneWrapperClass: this.menuPaneWrapperClass,
126873
- activeMenuKey: this.activeMenuKey,
126874
- onUpdateMenuValue: this.handleMenuValueUpdate
126963
+ activeMenuKey: this.mergedActiveMenuKey,
126964
+ onUpdateMenuValue: this.handleMenuValueUpdate,
126965
+ onUpdateActiveMenuKey: this.handleUpdateActiveMenuKey
126875
126966
  }
126876
126967
  );
126877
126968
  const mobileNode = this.responsive && this.isMobile ? /* @__PURE__ */ vue.h(
@@ -126904,6 +126995,21 @@
126904
126995
  footer: $slots["mobile-footer"]
126905
126996
  }
126906
126997
  ) : null;
126998
+ const langNode = resolveWrappedSlot($slots.lang, (children) => children);
126999
+ const searchNode = resolveWrappedSlot($slots.search, (children) => children);
127000
+ const accessibilityNode = resolveWrappedSlot(
127001
+ $slots.accessibility,
127002
+ (children) => children ?? null
127003
+ );
127004
+ const logoutNode = resolveWrappedSlot($slots.logout, (children) => children);
127005
+ const resolveActionSlots = () => {
127006
+ return {
127007
+ ...$slots.lang ? { lang: () => langNode } : {},
127008
+ ...$slots.search ? { search: () => searchNode } : {},
127009
+ ...$slots.accessibility ? { accessibility: () => accessibilityNode } : {},
127010
+ ...$slots.logout ? { logout: () => logoutNode } : {}
127011
+ };
127012
+ };
126907
127013
  const actionsNode = resolveWrappedSlot(
126908
127014
  $slots.action,
126909
127015
  (children) => children ? /* @__PURE__ */ vue.h("div", { class: `${blockClass}__actions` }, children) : null
@@ -126921,13 +127027,18 @@
126921
127027
  onSearchResultSelect: this.handleSearchResultSelect,
126922
127028
  onPreview: this.handlePreviewClick,
126923
127029
  onLogout: this.handleLogoutClick,
126924
- onLanguageSelect: this.handleSelectLang
127030
+ onLanguageSelect: this.handleSelectLang,
127031
+ ...vue.mergeProps(
127032
+ this.$attrs,
127033
+ this.actionsProps
127034
+ )
126925
127035
  },
126926
127036
  {
126927
- mobile: () => mobileNode
127037
+ mobile: () => mobileNode,
127038
+ ...resolveActionSlots()
126928
127039
  }
126929
127040
  );
126930
- const searchNode = this.responsive && this.isMobile && this.searchVisible ? vue.h(HeaderSearchMobile, {
127041
+ const searchMobileNode = this.responsive && this.isMobile && this.searchVisible ? vue.h(HeaderSearchMobile, {
126931
127042
  mergedClsPrefix,
126932
127043
  show: this.searchVisible,
126933
127044
  cssVars: this.cssVars,
@@ -126950,7 +127061,7 @@
126950
127061
  actions: () => actionsNode
126951
127062
  }
126952
127063
  ),
126953
- searchNode
127064
+ searchMobileNode
126954
127065
  ]);
126955
127066
  }
126956
127067
  return vue.h(
@@ -128660,7 +128771,7 @@
128660
128771
  watermarkProps: watermarkProps
128661
128772
  });
128662
128773
 
128663
- var version = "1.12.17";
128774
+ var version = "1.12.19";
128664
128775
 
128665
128776
  function useExposeProxy(targetRef) {
128666
128777
  return new Proxy({}, {