naive-ui 2.32.2 → 2.33.2

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 (155) hide show
  1. package/dist/index.js +425 -248
  2. package/dist/index.prod.js +2 -2
  3. package/es/_internal/select-menu/src/SelectOption.js +1 -2
  4. package/es/_utils/cssr/index.js +1 -1
  5. package/es/calendar/src/Calendar.js +2 -1
  6. package/es/card/src/Card.d.ts +24 -1
  7. package/es/card/src/Card.js +8 -4
  8. package/es/card/src/styles/index.cssr.js +17 -8
  9. package/es/card/styles/dark.js +3 -1
  10. package/es/card/styles/light.d.ts +2 -0
  11. package/es/card/styles/light.js +1 -1
  12. package/es/countdown/src/Countdown.js +0 -5
  13. package/es/data-table/src/DataTable.d.ts +10 -0
  14. package/es/data-table/src/HeaderButton/FilterButton.d.ts +1 -0
  15. package/es/data-table/src/HeaderButton/FilterMenu.d.ts +1 -0
  16. package/es/data-table/src/TableParts/Body.d.ts +1 -0
  17. package/es/data-table/src/TableParts/Cell.d.ts +2 -0
  18. package/es/data-table/src/TableParts/Header.d.ts +1 -0
  19. package/es/data-table/src/use-sorter.js +1 -1
  20. package/es/data-table/styles/light.d.ts +1 -0
  21. package/es/dialog/index.d.ts +1 -1
  22. package/es/dialog/index.js +1 -1
  23. package/es/dialog/src/DialogEnvironment.d.ts +3 -0
  24. package/es/dialog/src/DialogEnvironment.js +2 -2
  25. package/es/dialog/src/DialogProvider.d.ts +4 -0
  26. package/es/dialog/src/DialogProvider.js +2 -1
  27. package/es/dialog/src/composables.d.ts +4 -0
  28. package/es/dialog/src/composables.js +17 -0
  29. package/es/dialog/src/context.d.ts +2 -1
  30. package/es/dialog/src/context.js +1 -0
  31. package/es/form/src/FormItem.d.ts +1 -0
  32. package/es/form/src/FormItem.js +27 -18
  33. package/es/form/src/styles/form-item.cssr.js +41 -19
  34. package/es/form/src/utils.d.ts +1 -0
  35. package/es/form/src/utils.js +15 -10
  36. package/es/input/src/utils.js +1 -1
  37. package/es/locales/common/frFR.js +8 -11
  38. package/es/menu/src/Menu.d.ts +13 -0
  39. package/es/menu/src/Menu.js +7 -1
  40. package/es/modal/src/BodyWrapper.d.ts +2 -0
  41. package/es/modal/src/Modal.d.ts +18 -0
  42. package/es/modal/src/presetProps.d.ts +1 -1
  43. package/es/modal/styles/light.d.ts +2 -0
  44. package/es/pagination/src/Pagination.js +5 -1
  45. package/es/radio/src/Radio.d.ts +13 -32
  46. package/es/radio/src/Radio.js +7 -6
  47. package/es/radio/src/RadioButton.d.ts +6 -9
  48. package/es/radio/src/RadioButton.js +7 -11
  49. package/es/radio/src/RadioGroup.d.ts +17 -8
  50. package/es/radio/src/RadioGroup.js +2 -2
  51. package/es/radio/src/interface.d.ts +2 -2
  52. package/es/radio/src/styles/radio.cssr.js +4 -1
  53. package/es/radio/src/use-radio.d.ts +4 -32
  54. package/es/radio/src/use-radio.js +12 -10
  55. package/es/radio/styles/dark.js +1 -1
  56. package/es/radio/styles/light.d.ts +1 -0
  57. package/es/radio/styles/light.js +1 -1
  58. package/es/rate/src/Rate.d.ts +23 -14
  59. package/es/rate/src/Rate.js +32 -12
  60. package/es/rate/src/interface.d.ts +2 -0
  61. package/es/rate/src/interface.js +1 -0
  62. package/es/rate/src/styles/index.cssr.js +13 -13
  63. package/es/slider/src/Slider.d.ts +13 -0
  64. package/es/slider/src/Slider.js +6 -3
  65. package/es/theme-editor/src/MaximizeIcon.d.ts +1 -0
  66. package/es/theme-editor/src/MaximizeIcon.js +8 -0
  67. package/es/theme-editor/src/MinimizeIcon.d.ts +1 -0
  68. package/es/theme-editor/src/MinimizeIcon.js +8 -0
  69. package/es/theme-editor/src/ThemeEditor.d.ts +4 -0
  70. package/es/theme-editor/src/ThemeEditor.js +42 -18
  71. package/es/tree/src/styles/index.cssr.js +4 -3
  72. package/es/upload/src/interface.d.ts +1 -1
  73. package/es/version.d.ts +1 -1
  74. package/es/version.js +1 -1
  75. package/lib/_internal/select-menu/src/SelectOption.js +1 -2
  76. package/lib/_utils/cssr/index.js +2 -5
  77. package/lib/calendar/src/Calendar.js +2 -1
  78. package/lib/card/src/Card.d.ts +24 -1
  79. package/lib/card/src/Card.js +8 -4
  80. package/lib/card/src/styles/index.cssr.js +17 -8
  81. package/lib/card/styles/dark.js +3 -1
  82. package/lib/card/styles/light.d.ts +2 -0
  83. package/lib/card/styles/light.js +1 -1
  84. package/lib/countdown/src/Countdown.js +0 -5
  85. package/lib/data-table/src/DataTable.d.ts +10 -0
  86. package/lib/data-table/src/HeaderButton/FilterButton.d.ts +1 -0
  87. package/lib/data-table/src/HeaderButton/FilterMenu.d.ts +1 -0
  88. package/lib/data-table/src/TableParts/Body.d.ts +1 -0
  89. package/lib/data-table/src/TableParts/Cell.d.ts +2 -0
  90. package/lib/data-table/src/TableParts/Header.d.ts +1 -0
  91. package/lib/data-table/src/use-sorter.js +1 -1
  92. package/lib/data-table/styles/light.d.ts +1 -0
  93. package/lib/dialog/index.d.ts +1 -1
  94. package/lib/dialog/index.js +4 -3
  95. package/lib/dialog/src/DialogEnvironment.d.ts +3 -0
  96. package/lib/dialog/src/DialogEnvironment.js +2 -2
  97. package/lib/dialog/src/DialogProvider.d.ts +4 -0
  98. package/lib/dialog/src/DialogProvider.js +1 -0
  99. package/lib/dialog/src/composables.d.ts +4 -0
  100. package/lib/dialog/src/{use-dialog.js → composables.js} +9 -1
  101. package/lib/dialog/src/context.d.ts +2 -1
  102. package/lib/dialog/src/context.js +2 -1
  103. package/lib/form/src/FormItem.d.ts +1 -0
  104. package/lib/form/src/FormItem.js +27 -18
  105. package/lib/form/src/styles/form-item.cssr.js +41 -19
  106. package/lib/form/src/utils.d.ts +1 -0
  107. package/lib/form/src/utils.js +15 -10
  108. package/lib/input/src/utils.js +1 -1
  109. package/lib/locales/common/frFR.js +8 -11
  110. package/lib/menu/src/Menu.d.ts +13 -0
  111. package/lib/menu/src/Menu.js +7 -1
  112. package/lib/modal/src/BodyWrapper.d.ts +2 -0
  113. package/lib/modal/src/Modal.d.ts +18 -0
  114. package/lib/modal/src/presetProps.d.ts +1 -1
  115. package/lib/modal/styles/light.d.ts +2 -0
  116. package/lib/pagination/src/Pagination.js +5 -1
  117. package/lib/radio/src/Radio.d.ts +13 -32
  118. package/lib/radio/src/Radio.js +7 -6
  119. package/lib/radio/src/RadioButton.d.ts +6 -9
  120. package/lib/radio/src/RadioButton.js +7 -14
  121. package/lib/radio/src/RadioGroup.d.ts +17 -8
  122. package/lib/radio/src/RadioGroup.js +2 -2
  123. package/lib/radio/src/interface.d.ts +2 -2
  124. package/lib/radio/src/styles/radio.cssr.js +4 -1
  125. package/lib/radio/src/use-radio.d.ts +4 -32
  126. package/lib/radio/src/use-radio.js +11 -9
  127. package/lib/radio/styles/dark.js +1 -1
  128. package/lib/radio/styles/light.d.ts +1 -0
  129. package/lib/radio/styles/light.js +1 -1
  130. package/lib/rate/src/Rate.d.ts +23 -14
  131. package/lib/rate/src/Rate.js +32 -12
  132. package/lib/rate/src/interface.d.ts +2 -0
  133. package/lib/rate/src/interface.js +2 -0
  134. package/lib/rate/src/styles/index.cssr.js +13 -13
  135. package/lib/slider/src/Slider.d.ts +13 -0
  136. package/lib/slider/src/Slider.js +6 -3
  137. package/lib/theme-editor/src/MaximizeIcon.d.ts +1 -0
  138. package/lib/theme-editor/src/MaximizeIcon.js +11 -0
  139. package/lib/theme-editor/src/MinimizeIcon.d.ts +1 -0
  140. package/lib/theme-editor/src/MinimizeIcon.js +11 -0
  141. package/lib/theme-editor/src/ThemeEditor.d.ts +4 -0
  142. package/lib/theme-editor/src/ThemeEditor.js +42 -18
  143. package/lib/tree/src/styles/index.cssr.js +4 -3
  144. package/lib/upload/src/interface.d.ts +1 -1
  145. package/lib/version.d.ts +1 -1
  146. package/lib/version.js +1 -1
  147. package/package.json +8 -7
  148. package/web-types.json +36 -5
  149. package/es/countdown/src/utils.d.ts +0 -0
  150. package/es/countdown/src/utils.js +0 -1
  151. package/es/dialog/src/use-dialog.d.ts +0 -2
  152. package/es/dialog/src/use-dialog.js +0 -10
  153. package/lib/countdown/src/utils.d.ts +0 -0
  154. package/lib/countdown/src/utils.js +0 -1
  155. package/lib/dialog/src/use-dialog.d.ts +0 -2
package/dist/index.js CHANGED
@@ -1017,7 +1017,7 @@
1017
1017
  if (parentElement) parentElement.removeChild(el);
1018
1018
  }
1019
1019
  function queryElement(id) {
1020
- return document.querySelector(`style[cssr-id="${id}"]`);
1020
+ return document.head.querySelector(`style[cssr-id="${id}"]`);
1021
1021
  }
1022
1022
  function createElement(id) {
1023
1023
  const el = document.createElement('style');
@@ -4445,13 +4445,13 @@
4445
4445
  };
4446
4446
 
4447
4447
  var isElement = function (obj) {
4448
- var _a, _b;
4448
+ var _a;
4449
4449
 
4450
4450
  if (obj instanceof Element) {
4451
4451
  return true;
4452
4452
  }
4453
4453
 
4454
- var scope = (_b = (_a = obj) === null || _a === void 0 ? void 0 : _a.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView;
4454
+ var scope = (_a = obj === null || obj === void 0 ? void 0 : obj.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView;
4455
4455
  return !!(scope && obj instanceof scope.Element);
4456
4456
  };
4457
4457
 
@@ -4692,7 +4692,7 @@
4692
4692
  }).observe(el_1, config);
4693
4693
 
4694
4694
  trigger = function () {
4695
- el_1.textContent = "" + (toggle_1 ? toggle_1-- : toggle_1++);
4695
+ el_1.textContent = "".concat(toggle_1 ? toggle_1-- : toggle_1++);
4696
4696
  };
4697
4697
  }
4698
4698
 
@@ -17347,8 +17347,8 @@
17347
17347
  endDatePlaceholder: "Date de fin",
17348
17348
  startDatetimePlaceholder: "Date et heure de d\xE9but",
17349
17349
  endDatetimePlaceholder: "Date et heure de fin",
17350
- startMonthPlaceholder: "Start Month",
17351
- endMonthPlaceholder: "End Month",
17350
+ startMonthPlaceholder: "Mois de d\xE9but",
17351
+ endMonthPlaceholder: "Mois de fin",
17352
17352
  monthBeforeYear: true,
17353
17353
  firstDayOfWeek: 1,
17354
17354
  today: "Aujourd'hui"
@@ -17364,11 +17364,11 @@
17364
17364
  targetTitle: "Cible"
17365
17365
  },
17366
17366
  Transfer: {
17367
- selectAll: "Select all",
17368
- unselectAll: "Unselect all",
17369
- clearAll: "Clear",
17370
- total: num => `Total ${num} items`,
17371
- selected: num => `${num} items selected`
17367
+ selectAll: "S\xE9lectionner tout",
17368
+ unselectAll: "D\xE9s\xE9lectionner tout",
17369
+ clearAll: "Effacer",
17370
+ total: num => `Total ${num} \xE9l\xE9ments`,
17371
+ selected: num => `${num} \xE9l\xE9ments s\xE9lectionn\xE9s`
17372
17372
  },
17373
17373
  Empty: {
17374
17374
  description: "Aucune donn\xE9e"
@@ -17419,7 +17419,7 @@
17419
17419
  tipZoomOut: "D\xE9zoomer",
17420
17420
  tipZoomIn: "Zoomer",
17421
17421
  tipClose: "Fermer (\xC9chap.)",
17422
- tipOriginalSize: "Zoom to original size"
17422
+ tipOriginalSize: "Zoom \xE0 la taille originale"
17423
17423
  }
17424
17424
  };
17425
17425
  var frFR$1 = frFR;
@@ -37255,7 +37255,6 @@
37255
37255
  };
37256
37256
  var internalSelectMenuDark$1 = internalSelectMenuDark;
37257
37257
 
37258
- const checkMarkIcon = vue.h(FinishedIcon);
37259
37258
  function renderCheckMark(show, clsPrefix) {
37260
37259
  return /* @__PURE__ */ vue.h(vue.Transition, {
37261
37260
  name: "fade-in-scale-up-transition"
@@ -37264,7 +37263,7 @@
37264
37263
  clsPrefix,
37265
37264
  class: `${clsPrefix}-base-select-option__check`
37266
37265
  }, {
37267
- default: () => checkMarkIcon
37266
+ default: () => vue.h(FinishedIcon)
37268
37267
  }) : null
37269
37268
  });
37270
37269
  }
@@ -42963,7 +42962,7 @@
42963
42962
  value: input
42964
42963
  } = inputElRef;
42965
42964
 
42966
- if (!input || !input.focus) {
42965
+ if (!(input !== null && input !== void 0 && input.focus)) {
42967
42966
  reset();
42968
42967
  return;
42969
42968
  }
@@ -47865,7 +47864,7 @@
47865
47864
  );
47866
47865
  const { localeRef, dateLocaleRef } = useLocale("DatePicker");
47867
47866
  const now = Date.now();
47868
- const monthTsRef = vue.ref(startOfMonth(now).valueOf());
47867
+ const monthTsRef = vue.ref(startOfMonth(props.defaultValue ?? now).valueOf());
47869
47868
  const uncontrolledValueRef = vue.ref(props.defaultValue || null);
47870
47869
  const mergedValueRef = useMergedState(
47871
47870
  vue.toRef(props, "value"),
@@ -49821,6 +49820,8 @@
49821
49820
  colorPopover: popoverColor,
49822
49821
  colorTarget: primaryColor,
49823
49822
  colorEmbedded: actionColor,
49823
+ colorEmbeddedModal: actionColor,
49824
+ colorEmbeddedPopover: actionColor,
49824
49825
  textColor: textColor2,
49825
49826
  titleTextColor: textColor1,
49826
49827
  borderColor: dividerColor,
@@ -49854,9 +49855,13 @@
49854
49855
  self(vars) {
49855
49856
  const commonSelf = self$W(vars);
49856
49857
  const {
49857
- cardColor
49858
+ cardColor,
49859
+ modalColor,
49860
+ popoverColor
49858
49861
  } = vars;
49859
49862
  commonSelf.colorEmbedded = cardColor;
49863
+ commonSelf.colorEmbeddedModal = modalColor;
49864
+ commonSelf.colorEmbeddedPopover = popoverColor;
49860
49865
  return commonSelf;
49861
49866
  }
49862
49867
 
@@ -49891,7 +49896,9 @@
49891
49896
  background-color .3s var(--n-bezier),
49892
49897
  box-shadow .3s var(--n-bezier),
49893
49898
  border-color .3s var(--n-bezier);
49894
- `, [cM("hoverable", [c$1("&:hover", "box-shadow: var(--n-box-shadow);")]), cM("content-segmented", [c$1(">", [cE("content", {
49899
+ `, [asModal({
49900
+ background: "var(--n-color-modal)"
49901
+ }), cM("hoverable", [c$1("&:hover", "box-shadow: var(--n-box-shadow);")]), cM("content-segmented", [c$1(">", [cE("content", {
49895
49902
  paddingTop: "var(--n-padding-bottom)"
49896
49903
  })])]), cM("content-soft-segmented", [c$1(">", [cE("content", `
49897
49904
  margin: 0 var(--n-padding-left);
@@ -49965,13 +49972,17 @@
49965
49972
  transition: "border-color 0.3s var(--n-bezier)"
49966
49973
  }, [c$1("&:not(:first-child)", {
49967
49974
  borderTop: "1px solid var(--n-border-color)"
49968
- })])])])]), insideModal(cB("card", {
49969
- background: "var(--n-color-modal)"
49970
- })), insidePopover(cB("card", {
49971
- background: "var(--n-color-popover)"
49972
- })), cB("card", [asModal({
49973
- background: "var(--n-color-modal)"
49974
- })])]);
49975
+ })])])]), cM("embedded", `
49976
+ background-color: var(--n-color-embedded);
49977
+ `)]), insideModal(cB("card", `
49978
+ background: var(--n-color-modal);
49979
+ `, [cM("embedded", `
49980
+ background-color: var(--n-color-embedded-modal);
49981
+ `)])), insidePopover(cB("card", `
49982
+ background: var(--n-color-popover);
49983
+ `, [cM("embedded", `
49984
+ background-color: var(--n-color-embedded-popover);
49985
+ `)]))]);
49975
49986
 
49976
49987
  const cardBaseProps = {
49977
49988
  title: String,
@@ -50049,6 +50060,8 @@
50049
50060
  boxShadow,
50050
50061
  colorPopover,
50051
50062
  colorEmbedded,
50063
+ colorEmbeddedModal,
50064
+ colorEmbeddedPopover,
50052
50065
  [createKey("padding", size)]: padding,
50053
50066
  [createKey("fontSize", size)]: fontSize,
50054
50067
  [createKey("titleFontSize", size)]: titleFontSize
@@ -50063,9 +50076,12 @@
50063
50076
  return {
50064
50077
  "--n-bezier": cubicBezierEaseInOut,
50065
50078
  "--n-border-radius": borderRadius,
50066
- "--n-color": props.embedded ? colorEmbedded : color,
50079
+ "--n-color": color,
50067
50080
  "--n-color-modal": colorModal,
50068
50081
  "--n-color-popover": colorPopover,
50082
+ "--n-color-embedded": colorEmbedded,
50083
+ "--n-color-embedded-modal": colorEmbeddedModal,
50084
+ "--n-color-embedded-popover": colorEmbeddedPopover,
50069
50085
  "--n-color-target": colorTarget,
50070
50086
  "--n-text-color": textColor,
50071
50087
  "--n-line-height": lineHeight,
@@ -50115,6 +50131,7 @@
50115
50131
  mergedClsPrefix,
50116
50132
  rtlEnabled,
50117
50133
  onRender,
50134
+ embedded,
50118
50135
  $slots
50119
50136
  } = this;
50120
50137
  onRender?.();
@@ -50122,6 +50139,7 @@
50122
50139
  class: [
50123
50140
  `${mergedClsPrefix}-card`,
50124
50141
  this.themeClass,
50142
+ embedded && `${mergedClsPrefix}-card--embedded`,
50125
50143
  {
50126
50144
  [`${mergedClsPrefix}-card--rtl`]: rtlEnabled,
50127
50145
  [`${mergedClsPrefix}-card--content${typeof segmented !== "boolean" && segmented.content === "soft" ? "-soft" : ""}-segmented`]: segmented === true || segmented !== false && segmented.content,
@@ -50146,7 +50164,7 @@
50146
50164
  }, /* @__PURE__ */ vue.h("div", {
50147
50165
  class: `${mergedClsPrefix}-card-header__main`,
50148
50166
  role: "heading"
50149
- }, children || [this.title]), resolveWrappedSlot(
50167
+ }, children || this.title), resolveWrappedSlot(
50150
50168
  $slots["header-extra"],
50151
50169
  (children2) => children2 && /* @__PURE__ */ vue.h("div", {
50152
50170
  class: `${mergedClsPrefix}-card-header__extra`,
@@ -57249,10 +57267,14 @@
57249
57267
  const showFastForwardMenuRef = vue.ref(false);
57250
57268
  const showFastBackwardMenuRef = vue.ref(false);
57251
57269
  const handleFastForwardMouseenter = () => {
57270
+ if (props.disabled)
57271
+ return;
57252
57272
  fastForwardActiveRef.value = true;
57253
57273
  disableTransitionOneTick();
57254
57274
  };
57255
57275
  const handleFastForwardMouseleave = () => {
57276
+ if (props.disabled)
57277
+ return;
57256
57278
  fastForwardActiveRef.value = false;
57257
57279
  disableTransitionOneTick();
57258
57280
  };
@@ -57746,6 +57768,7 @@
57746
57768
  const key = pageItem.type === "page" ? pageItem.mayBeFastBackward ? "fast-backward" : "fast-forward" : pageItem.type;
57747
57769
  return /* @__PURE__ */ vue.h(NPopselect, {
57748
57770
  key,
57771
+ disabled,
57749
57772
  trigger: "hover",
57750
57773
  virtualScroll: true,
57751
57774
  style: { width: "60px" },
@@ -57964,6 +57987,7 @@
57964
57987
  boxShadowDisabled: `inset 0 0 0 1px ${borderColor}`,
57965
57988
  color: "#0000",
57966
57989
  colorDisabled: inputColorDisabled,
57990
+ colorActive: "#0000",
57967
57991
  textColor: textColor2,
57968
57992
  textColorDisabled,
57969
57993
  dotColorActive: primaryColor,
@@ -58024,6 +58048,7 @@
58024
58048
  boxShadowDisabled: `inset 0 0 0 1px ${borderColor}`,
58025
58049
  color: baseColor,
58026
58050
  colorDisabled: inputColorDisabled,
58051
+ colorActive: "#0000",
58027
58052
  textColor: textColor2,
58028
58053
  textColorDisabled,
58029
58054
  dotColorActive: primaryColor,
@@ -58526,10 +58551,10 @@
58526
58551
 
58527
58552
  });
58528
58553
 
58529
- const radioProps$1 = {
58554
+ const radioProps = {
58530
58555
  name: String,
58531
58556
  value: {
58532
- type: [String, Number],
58557
+ type: [String, Number, Boolean],
58533
58558
  default: "on"
58534
58559
  },
58535
58560
  checked: {
@@ -58547,16 +58572,20 @@
58547
58572
  "onUpdate:checked": [Function, Array],
58548
58573
  checkedValue: {
58549
58574
  type: Boolean,
58550
- validator: () => {
58551
- warn$2("radio", "`checked-value` is deprecated, please use `checked` instead.");
58552
- return true;
58553
- },
58554
58575
  default: void 0
58555
58576
  }
58556
58577
  };
58557
58578
  const radioGroupInjectionKey = createInjectionKey("n-radio-group");
58558
58579
 
58559
58580
  function setup(props) {
58581
+ {
58582
+ vue.watchEffect(() => {
58583
+ if (props.checkedValue !== void 0) {
58584
+ warnOnce("radio", "`checked-value` is deprecated, please use `checked` instead.");
58585
+ }
58586
+ });
58587
+ }
58588
+
58560
58589
  const formItem = useFormItem(props, {
58561
58590
  mergedSize(NFormItem) {
58562
58591
  const {
@@ -58676,8 +58705,6 @@
58676
58705
  };
58677
58706
  }
58678
58707
 
58679
- setup.props = radioProps$1;
58680
-
58681
58708
  var style$X = cB("radio", `
58682
58709
  line-height: var(--n-label-line-height);
58683
58710
  outline: none;
@@ -58689,7 +58716,9 @@
58689
58716
  flex-wrap: nowrap;
58690
58717
  font-size: var(--n-font-size);
58691
58718
  word-break: break-word;
58692
- `, [cE("dot-wrapper", `
58719
+ `, [cM("checked", [cE("dot", `
58720
+ background-color: var(--n-color-active);
58721
+ `)]), cE("dot-wrapper", `
58693
58722
  position: relative;
58694
58723
  flex-shrink: 0;
58695
58724
  flex-grow: 0;
@@ -58764,12 +58793,11 @@
58764
58793
  cursor: not-allowed;
58765
58794
  `)])]);
58766
58795
 
58767
- const radioProps = setup.props;
58768
58796
  var NRadio = vue.defineComponent({
58769
58797
  name: "Radio",
58770
58798
  props: {
58771
58799
  ...useTheme.props,
58772
- ...setup.props
58800
+ ...radioProps
58773
58801
  },
58774
58802
  setup(props) {
58775
58803
  const radio = setup(props);
@@ -58795,6 +58823,7 @@
58795
58823
  boxShadowHover,
58796
58824
  color,
58797
58825
  colorDisabled,
58826
+ colorActive,
58798
58827
  textColor,
58799
58828
  textColorDisabled,
58800
58829
  dotColorActive,
@@ -58814,6 +58843,7 @@
58814
58843
  "--n-box-shadow-focus": boxShadowFocus,
58815
58844
  "--n-box-shadow-hover": boxShadowHover,
58816
58845
  "--n-color": color,
58846
+ "--n-color-active": colorActive,
58817
58847
  "--n-color-disabled": colorDisabled,
58818
58848
  "--n-dot-color-active": dotColorActive,
58819
58849
  "--n-dot-color-disabled": dotColorDisabled,
@@ -59035,9 +59065,9 @@
59035
59065
  const radioGroupProps = {
59036
59066
  ...useTheme.props,
59037
59067
  name: String,
59038
- value: [String, Number],
59068
+ value: [String, Number, Boolean],
59039
59069
  defaultValue: {
59040
- type: [String, Number],
59070
+ type: [String, Number, Boolean],
59041
59071
  default: null
59042
59072
  },
59043
59073
  size: String,
@@ -59191,23 +59221,19 @@
59191
59221
  }
59192
59222
  });
59193
59223
 
59194
- const radioButtonProps = setup.props;
59224
+ const radioButtonProps = radioProps;
59195
59225
  var RadioButton = vue.defineComponent({
59196
59226
  name: "RadioButton",
59197
- props: setup.props,
59198
- setup(props) {
59199
- return setup(props);
59200
- },
59227
+ props: radioProps,
59228
+ setup,
59201
59229
  render() {
59202
59230
  const { mergedClsPrefix } = this;
59203
59231
  return /* @__PURE__ */ vue.h("label", {
59204
59232
  class: [
59205
59233
  `${mergedClsPrefix}-radio-button`,
59206
- {
59207
- [`${mergedClsPrefix}-radio-button--disabled`]: this.mergedDisabled,
59208
- [`${mergedClsPrefix}-radio-button--checked`]: this.renderSafeChecked,
59209
- [`${mergedClsPrefix}-radio-button--focus`]: this.focus
59210
- }
59234
+ this.mergedDisabled && `${mergedClsPrefix}-radio-button--disabled`,
59235
+ this.renderSafeChecked && `${mergedClsPrefix}-radio-button--checked`,
59236
+ this.focus && [`${mergedClsPrefix}-radio-button--focus`]
59211
59237
  ]
59212
59238
  }, /* @__PURE__ */ vue.h("input", {
59213
59239
  ref: "inputRef",
@@ -62539,7 +62565,7 @@
62539
62565
  clearSorter();
62540
62566
  } else {
62541
62567
  const columnToSort = dataRelatedColsRef.value.find(column => column.type !== "selection" && column.type !== "expand" && column.key === columnKey);
62542
- if (!columnToSort || !columnToSort.sorter) return;
62568
+ if (!(columnToSort !== null && columnToSort !== void 0 && columnToSort.sorter)) return;
62543
62569
  const sorter = columnToSort.sorter;
62544
62570
  deriveNextSorter({
62545
62571
  columnKey,
@@ -75035,6 +75061,7 @@
75035
75061
 
75036
75062
  const dialogProviderInjectionKey = createInjectionKey("n-dialog-provider");
75037
75063
  const dialogApiInjectionKey = createInjectionKey("n-dialog-api");
75064
+ const dialogReactiveListInjectionKey = createInjectionKey("n-dialog-reactive-list");
75038
75065
 
75039
75066
  const self$D = vars => {
75040
75067
  const {
@@ -75676,6 +75703,7 @@
75676
75703
 
75677
75704
  const exposedDialogEnvProps = {
75678
75705
  ...dialogProps,
75706
+ onAfterEnter: Function,
75679
75707
  blockScroll: { type: Boolean, default: true },
75680
75708
  closeOnEsc: { type: Boolean, default: true },
75681
75709
  onEsc: Function,
@@ -75799,6 +75827,7 @@
75799
75827
  onEsc: handleEsc,
75800
75828
  to,
75801
75829
  maskClosable,
75830
+ onAfterEnter: this.onAfterEnter,
75802
75831
  onAfterLeave: handleAfterLeave,
75803
75832
  closeOnEsc: this.closeOnEsc,
75804
75833
  blockScroll: this.blockScroll,
@@ -75872,6 +75901,7 @@
75872
75901
  clickedRef: useClicked(64),
75873
75902
  clickPositionRef: useClickPosition()
75874
75903
  });
75904
+ vue.provide(dialogReactiveListInjectionKey, dialogListRef);
75875
75905
  return { ...api,
75876
75906
  dialogList: dialogListRef,
75877
75907
  dialogInstRefs,
@@ -75908,6 +75938,15 @@
75908
75938
 
75909
75939
  return dialog;
75910
75940
  }
75941
+ function useDialogReactiveList() {
75942
+ const dialogReactiveList = vue.inject(dialogReactiveListInjectionKey, null);
75943
+
75944
+ if (dialogReactiveList === null) {
75945
+ throwError("use-dialog-reactive-list", "No outer <n-dialog-provider /> founded.");
75946
+ }
75947
+
75948
+ return dialogReactiveList;
75949
+ }
75911
75950
 
75912
75951
  const self$C = vars => {
75913
75952
  const {
@@ -79711,6 +79750,17 @@
79711
79750
  }
79712
79751
  function formItemMisc(props) {
79713
79752
  const NForm = vue.inject(formInjectionKey, null);
79753
+ const mergedLabelPlacementRef = vue.computed(() => {
79754
+ const {
79755
+ labelPlacement
79756
+ } = props;
79757
+ if (labelPlacement !== void 0) return labelPlacement;
79758
+ if (NForm !== null && NForm !== void 0 && NForm.props.labelPlacement) return NForm.props.labelPlacement;
79759
+ return "top";
79760
+ });
79761
+ const isAutoLabelWidthRef = vue.computed(() => {
79762
+ return mergedLabelPlacementRef.value === "left" && (props.labelWidth === "auto" || (NForm === null || NForm === void 0 ? void 0 : NForm.props.labelWidth) === "auto");
79763
+ });
79714
79764
  const mergedLabelWidthRef = vue.computed(() => {
79715
79765
  if (mergedLabelPlacementRef.value === "top") return;
79716
79766
  const {
@@ -79721,7 +79771,7 @@
79721
79771
  return formatLength(labelWidth);
79722
79772
  }
79723
79773
 
79724
- if (labelWidth === "auto" || (NForm === null || NForm === void 0 ? void 0 : NForm.props.labelWidth) === "auto") {
79774
+ if (isAutoLabelWidthRef.value) {
79725
79775
  const autoComputedWidth = NForm === null || NForm === void 0 ? void 0 : NForm.maxChildLabelWidthRef.value;
79726
79776
 
79727
79777
  if (autoComputedWidth !== void 0) {
@@ -79737,14 +79787,6 @@
79737
79787
 
79738
79788
  return void 0;
79739
79789
  });
79740
- const mergedLabelPlacementRef = vue.computed(() => {
79741
- const {
79742
- labelPlacement
79743
- } = props;
79744
- if (labelPlacement !== void 0) return labelPlacement;
79745
- if (NForm !== null && NForm !== void 0 && NForm.props.labelPlacement) return NForm.props.labelPlacement;
79746
- return "top";
79747
- });
79748
79790
  const mergedLabelAlignRef = vue.computed(() => {
79749
79791
  const {
79750
79792
  labelAlign
@@ -79808,7 +79850,8 @@
79808
79850
  mergedRequireMarkPlacement: mergedRequireMarkPlacementRef,
79809
79851
  mergedValidationStatus: mergedValidationStatusRef,
79810
79852
  mergedShowFeedback: mergedShowFeedbackRef,
79811
- mergedShowLabel: mergedShowLabelRef
79853
+ mergedShowLabel: mergedShowLabelRef,
79854
+ isAutoLabelWidth: isAutoLabelWidthRef
79812
79855
  };
79813
79856
  }
79814
79857
  function formItemRule(props) {
@@ -79894,61 +79937,83 @@
79894
79937
  })];
79895
79938
  }
79896
79939
 
79897
- var style$I = cB("form-item", {
79898
- display: "grid",
79899
- lineHeight: "var(--n-line-height)"
79900
- }, [cB("form-item-label", `
79940
+ var style$I = cB("form-item", `
79941
+ display: grid;
79942
+ line-height: var(--n-line-height);
79943
+ `, [cB("form-item-label", `
79901
79944
  grid-area: label;
79902
79945
  align-items: center;
79903
79946
  line-height: 1.25;
79904
79947
  text-align: var(--n-label-text-align);
79905
79948
  font-size: var(--n-label-font-size);
79906
- height: var(--n-label-height);
79949
+ min-height: var(--n-label-height);
79907
79950
  padding: var(--n-label-padding);
79908
79951
  color: var(--n-label-text-color);
79909
79952
  transition: color .3s var(--n-bezier);
79910
79953
  box-sizing: border-box;
79911
79954
  `, [cE("asterisk", `
79955
+ white-space: nowrap;
79912
79956
  user-select: none;
79913
79957
  -webkit-user-select: none;
79914
79958
  color: var(--n-asterisk-color);
79915
79959
  transition: color .3s var(--n-bezier);
79916
79960
  `), cE("asterisk-placeholder", `
79961
+ grid-area: mark;
79917
79962
  user-select: none;
79918
79963
  -webkit-user-select: none;
79919
79964
  visibility: hidden;
79920
- `)]), cB("form-item-blank", {
79921
- gridArea: "blank",
79922
- minHeight: "var(--n-blank-height)"
79923
- }), cM("left-labelled", `
79965
+ `)]), cB("form-item-blank", `
79966
+ grid-area: blank;
79967
+ min-height: var(--n-blank-height);
79968
+ `), cM("auto-label-width", [cB("form-item-label", "white-space: nowrap;")]), cM("left-labelled", `
79924
79969
  grid-template-areas:
79925
79970
  "label blank"
79926
79971
  "label feedback";
79927
79972
  grid-template-columns: auto minmax(0, 1fr);
79973
+ grid-template-rows: auto 1fr;
79974
+ align-items: start;
79928
79975
  `, [cB("form-item-label", `
79929
- height: var(--n-blank-height);
79930
- line-height: var(--n-blank-height);
79976
+ display: grid;
79977
+ grid-template-columns: 1fr auto;
79978
+ min-height: var(--n-blank-height);
79979
+ height: auto;
79931
79980
  box-sizing: border-box;
79932
- white-space: nowrap;
79933
79981
  flex-shrink: 0;
79934
79982
  flex-grow: 0;
79935
- `)]), cM("top-labelled", `
79983
+ `, [cM("left-mark", `
79984
+ grid-template-areas:
79985
+ "mark text"
79986
+ ". text";
79987
+ `), cM("right-mark", `
79988
+ grid-template-areas:
79989
+ "text mark"
79990
+ "text .";
79991
+ `), cM("right-hanging-mark", `
79992
+ grid-template-areas:
79993
+ "text mark"
79994
+ "text .";
79995
+ `), cE("text", `
79996
+ grid-area: text;
79997
+ `), cE("asterisk", `
79998
+ grid-area: mark;
79999
+ align-self: end;
80000
+ `)])]), cM("top-labelled", `
79936
80001
  grid-template-areas:
79937
80002
  "label"
79938
80003
  "blank"
79939
80004
  "feedback";
79940
- grid-template-rows: var(--n-label-height) 1fr;
80005
+ grid-template-rows: minmax(var(--n-label-height), auto) 1fr;
79941
80006
  grid-template-columns: minmax(0, 100%);
79942
80007
  `, [cM("no-label", `
79943
80008
  grid-template-areas:
79944
80009
  "blank"
79945
80010
  "feedback";
79946
80011
  grid-template-rows: 1fr;
79947
- `), cB("form-item-label", {
79948
- display: "flex",
79949
- alignItems: "flex-end",
79950
- justifyContent: "var(--n-label-text-align)"
79951
- })]), cB("form-item-blank", `
80012
+ `), cB("form-item-label", `
80013
+ display: flex;
80014
+ align-items: flex-start;
80015
+ justify-content: var(--n-label-text-align);
80016
+ `)]), cB("form-item-blank", `
79952
80017
  box-sizing: border-box;
79953
80018
  display: flex;
79954
80019
  align-items: center;
@@ -80226,10 +80291,17 @@
80226
80291
  };
80227
80292
  const labelElementRef = vue.ref(null);
80228
80293
  vue.onMounted(() => {
80229
- if (labelElementRef.value !== null) {
80294
+ if (!formItemMiscRefs.isAutoLabelWidth.value)
80295
+ return;
80296
+ const labelElement = labelElementRef.value;
80297
+ if (labelElement !== null) {
80298
+ const memoizedWhitespace = labelElement.style.whiteSpace;
80299
+ labelElement.style.whiteSpace = "nowrap";
80300
+ labelElement.style.width = "";
80230
80301
  NForm?.deriveMaxChildLabelWidth(
80231
- Number(getComputedStyle(labelElementRef.value).width.slice(0, -2))
80302
+ Number(getComputedStyle(labelElement).width.slice(0, -2))
80232
80303
  );
80304
+ labelElement.style.whiteSpace = memoizedWhitespace;
80233
80305
  }
80234
80306
  });
80235
80307
  const cssVarsRef = vue.computed(() => {
@@ -80311,28 +80383,41 @@
80311
80383
  } = this;
80312
80384
  const renderedShowRequireMark = mergedShowRequireMark !== void 0 ? mergedShowRequireMark : this.mergedRequired;
80313
80385
  onRender?.();
80386
+ const renderLabel = () => {
80387
+ const labelText = this.$slots.label ? this.$slots.label() : this.label;
80388
+ if (!labelText)
80389
+ return null;
80390
+ const textNode = /* @__PURE__ */ vue.h("span", {
80391
+ class: `${mergedClsPrefix}-form-item-label__text`
80392
+ }, labelText);
80393
+ const markNode = renderedShowRequireMark ? /* @__PURE__ */ vue.h("span", {
80394
+ class: `${mergedClsPrefix}-form-item-label__asterisk`
80395
+ }, mergedRequireMarkPlacement !== "left" ? "\xA0*" : "*\xA0") : mergedRequireMarkPlacement === "right-hanging" && /* @__PURE__ */ vue.h("span", {
80396
+ class: `${mergedClsPrefix}-form-item-label__asterisk-placeholder`
80397
+ }, "\xA0*");
80398
+ const { labelProps } = this;
80399
+ return /* @__PURE__ */ vue.h("label", {
80400
+ ...labelProps,
80401
+ class: [
80402
+ labelProps?.class,
80403
+ `${mergedClsPrefix}-form-item-label`,
80404
+ `${mergedClsPrefix}-form-item-label--${mergedRequireMarkPlacement}-mark`
80405
+ ],
80406
+ style: this.mergedLabelStyle,
80407
+ ref: "labelElementRef"
80408
+ }, mergedRequireMarkPlacement === "left" ? [markNode, textNode] : [textNode, markNode]);
80409
+ };
80314
80410
  return /* @__PURE__ */ vue.h("div", {
80315
80411
  class: [
80316
80412
  `${mergedClsPrefix}-form-item`,
80317
80413
  this.themeClass,
80318
80414
  `${mergedClsPrefix}-form-item--${this.mergedSize}-size`,
80319
80415
  `${mergedClsPrefix}-form-item--${this.mergedLabelPlacement}-labelled`,
80416
+ this.isAutoLabelWidth && `${mergedClsPrefix}-form-item--auto-label-width`,
80320
80417
  !mergedShowLabel && `${mergedClsPrefix}-form-item--no-label`
80321
80418
  ],
80322
80419
  style: this.cssVars
80323
- }, mergedShowLabel && (this.label || $slots.label) ? /* @__PURE__ */ vue.h("label", {
80324
- ...this.labelProps,
80325
- class: [
80326
- this.labelProps?.class,
80327
- `${mergedClsPrefix}-form-item-label`
80328
- ],
80329
- style: this.mergedLabelStyle,
80330
- ref: "labelElementRef"
80331
- }, mergedRequireMarkPlacement !== "left" ? $slots.label ? $slots.label() : this.label : null, renderedShowRequireMark ? /* @__PURE__ */ vue.h("span", {
80332
- class: `${mergedClsPrefix}-form-item-label__asterisk`
80333
- }, mergedRequireMarkPlacement !== "left" ? "\xA0*" : "*\xA0") : mergedRequireMarkPlacement === "right-hanging" && /* @__PURE__ */ vue.h("span", {
80334
- class: `${mergedClsPrefix}-form-item-label__asterisk-placeholder`
80335
- }, "\xA0*"), mergedRequireMarkPlacement === "left" ? $slots.label ? $slots.label() : this.label : null) : null, /* @__PURE__ */ vue.h("div", {
80420
+ }, mergedShowLabel && renderLabel(), /* @__PURE__ */ vue.h("div", {
80336
80421
  class: [
80337
80422
  `${mergedClsPrefix}-form-item-blank`,
80338
80423
  this.mergedValidationStatus && `${mergedClsPrefix}-form-item-blank--${this.mergedValidationStatus}`
@@ -80397,7 +80482,7 @@
80397
80482
  }
80398
80483
  };
80399
80484
  const gridItemPropKeys = keysOf(gridItemProps);
80400
- var NGridItem = vue.defineComponent({
80485
+ var NGi = vue.defineComponent({
80401
80486
  __GRID_ITEM__: true,
80402
80487
  name: "GridItem",
80403
80488
  alias: ["Gi"],
@@ -80492,7 +80577,7 @@
80492
80577
  },
80493
80578
 
80494
80579
  render() {
80495
- return vue.h(NGridItem, keep(this.$.vnode.props || {}, gridItemPropKeys), {
80580
+ return vue.h(NGi, keep(this.$.vnode.props || {}, gridItemPropKeys), {
80496
80581
  default: () => {
80497
80582
  const itemProps = keep(this.$props, formItemPropKeys);
80498
80583
  return vue.h(NFormItem, {
@@ -81072,7 +81157,7 @@
81072
81157
  default: 0
81073
81158
  }
81074
81159
  };
81075
- var Grid = vue.defineComponent({
81160
+ var NGrid = vue.defineComponent({
81076
81161
  name: "Grid",
81077
81162
  inheritAttrs: false,
81078
81163
  props: gridProps,
@@ -88709,6 +88794,10 @@
88709
88794
  type: String,
88710
88795
  default: "children"
88711
88796
  },
88797
+ disabledField: {
88798
+ type: String,
88799
+ default: "disabled"
88800
+ },
88712
88801
  defaultExpandAll: Boolean,
88713
88802
  defaultExpandedKeys: Array,
88714
88803
  expandedKeys: Array,
@@ -88783,13 +88872,16 @@
88783
88872
  return false;
88784
88873
  });
88785
88874
  const treeMateRef = vue.computed(() => {
88786
- const { keyField, childrenField } = props;
88875
+ const { keyField, childrenField, disabledField } = props;
88787
88876
  return createTreeMate(
88788
88877
  props.items || props.options,
88789
88878
  {
88790
88879
  getChildren(node) {
88791
88880
  return node[childrenField];
88792
88881
  },
88882
+ getDisabled(node) {
88883
+ return node[disabledField];
88884
+ },
88793
88885
  getKey(node) {
88794
88886
  return node[keyField] ?? node.name;
88795
88887
  }
@@ -92027,6 +92119,12 @@
92027
92119
  }
92028
92120
  });
92029
92121
 
92122
+ var StarIcon = /* @__PURE__ */ vue.h("svg", {
92123
+ viewBox: "0 0 512 512"
92124
+ }, /* @__PURE__ */ vue.h("path", {
92125
+ d: "M394 480a16 16 0 01-9.39-3L256 383.76 127.39 477a16 16 0 01-24.55-18.08L153 310.35 23 221.2a16 16 0 019-29.2h160.38l48.4-148.95a16 16 0 0130.44 0l48.4 149H480a16 16 0 019.05 29.2L359 310.35l50.13 148.53A16 16 0 01394 480z"
92126
+ }));
92127
+
92030
92128
  var style$n = cB("rate", {
92031
92129
  display: "inline-flex",
92032
92130
  flexWrap: "nowrap"
@@ -92043,17 +92141,17 @@
92043
92141
  transform: scale(1);
92044
92142
  font-size: var(--n-item-size);
92045
92143
  color: var(--n-item-color);
92046
- `, [c$1("&:not(:first-child)", {
92047
- marginLeft: "6px"
92048
- }), cM("active", {
92049
- color: "var(--n-item-color-active)"
92050
- })]), cNotM("readonly", `
92144
+ `, [c$1("&:not(:first-child)", `
92145
+ margin-left: 6px;
92146
+ `), cM("active", `
92147
+ color: var(--n-item-color-active);
92148
+ `)]), cNotM("readonly", `
92051
92149
  cursor: pointer;
92052
- `, [cE("item", [c$1("&:hover", {
92053
- transform: "scale(1.05)"
92054
- }), c$1("&:active", {
92055
- transform: "scale(0.96)"
92056
- })])]), cE("half", `
92150
+ `, [cE("item", [c$1("&:hover", `
92151
+ transform: scale(1.05);
92152
+ `), c$1("&:active", `
92153
+ transform: scale(0.96);
92154
+ `)])]), cE("half", `
92057
92155
  display: flex;
92058
92156
  transition: inherit;
92059
92157
  position: absolute;
@@ -92063,15 +92161,9 @@
92063
92161
  width: 50%;
92064
92162
  overflow: hidden;
92065
92163
  color: rgba(255, 255, 255, 0);
92066
- `, [cM("active", {
92067
- color: "var(--n-item-color-active)"
92068
- })])]);
92069
-
92070
- var StarIcon = /* @__PURE__ */ vue.h("svg", {
92071
- viewBox: "0 0 512 512"
92072
- }, /* @__PURE__ */ vue.h("path", {
92073
- d: "M394 480a16 16 0 01-9.39-3L256 383.76 127.39 477a16 16 0 01-24.55-18.08L153 310.35 23 221.2a16 16 0 019-29.2h160.38l48.4-148.95a16 16 0 0130.44 0l48.4 149H480a16 16 0 019.05 29.2L359 310.35l50.13 148.53A16 16 0 01394 480z"
92074
- }));
92164
+ `, [cM("active", `
92165
+ color: var(--n-item-color-active);
92166
+ `)])]);
92075
92167
 
92076
92168
  const rateProps = {
92077
92169
  ...useTheme.props,
@@ -92083,14 +92175,16 @@
92083
92175
  value: Number,
92084
92176
  defaultValue: {
92085
92177
  type: Number,
92086
- default: 0
92178
+ default: null
92087
92179
  },
92088
92180
  readonly: Boolean,
92089
92181
  size: {
92090
92182
  type: [String, Number],
92091
92183
  default: "medium"
92092
92184
  },
92185
+ clearable: Boolean,
92093
92186
  color: String,
92187
+ onClear: Function,
92094
92188
  "onUpdate:value": [Function, Array],
92095
92189
  onUpdateValue: [Function, Array]
92096
92190
  };
@@ -92111,6 +92205,7 @@
92111
92205
  const uncontrolledValueRef = vue.ref(props.defaultValue);
92112
92206
  const hoverIndexRef = vue.ref(null);
92113
92207
  const formItem = useFormItem(props);
92208
+ const mergedValue = useMergedState(controlledValueRef, uncontrolledValueRef);
92114
92209
  function doUpdateValue(value) {
92115
92210
  const { "onUpdate:value": _onUpdateValue, onUpdateValue } = props;
92116
92211
  const { nTriggerFormChange, nTriggerFormInput } = formItem;
@@ -92135,14 +92230,29 @@
92135
92230
  return index + 1;
92136
92231
  }
92137
92232
  }
92233
+ let cleared = false;
92138
92234
  function handleMouseMove(index, e) {
92235
+ if (cleared)
92236
+ return;
92139
92237
  hoverIndexRef.value = getDerivedValue(index, e);
92140
92238
  }
92141
92239
  function handleMouseLeave() {
92142
92240
  hoverIndexRef.value = null;
92143
92241
  }
92144
92242
  function handleClick(index, e) {
92145
- doUpdateValue(getDerivedValue(index, e));
92243
+ const { clearable } = props;
92244
+ const derivedValue = getDerivedValue(index, e);
92245
+ if (clearable && derivedValue === mergedValue.value) {
92246
+ cleared = true;
92247
+ props.onClear?.();
92248
+ hoverIndexRef.value = null;
92249
+ doUpdateValue(null);
92250
+ } else {
92251
+ doUpdateValue(derivedValue);
92252
+ }
92253
+ }
92254
+ function handleMouseEnterSomeStar() {
92255
+ cleared = false;
92146
92256
  }
92147
92257
  const mergedSizeRef = vue.computed(() => {
92148
92258
  const { size } = props;
@@ -92159,10 +92269,11 @@
92159
92269
  self
92160
92270
  } = themeRef.value;
92161
92271
  const { itemColor, itemColorActive } = self;
92272
+ const { color } = props;
92162
92273
  return {
92163
92274
  "--n-bezier": cubicBezierEaseInOut,
92164
92275
  "--n-item-color": itemColor,
92165
- "--n-item-color-active": props.color || itemColorActive,
92276
+ "--n-item-color-active": color || itemColorActive,
92166
92277
  "--n-item-size": mergedSizeRef.value
92167
92278
  };
92168
92279
  });
@@ -92185,11 +92296,12 @@
92185
92296
  ) : void 0;
92186
92297
  return {
92187
92298
  mergedClsPrefix: mergedClsPrefixRef,
92188
- mergedValue: useMergedState(controlledValueRef, uncontrolledValueRef),
92299
+ mergedValue,
92189
92300
  hoverIndex: hoverIndexRef,
92190
92301
  handleMouseMove,
92191
92302
  handleClick,
92192
92303
  handleMouseLeave,
92304
+ handleMouseEnterSomeStar,
92193
92305
  cssVars: inlineThemeDisabled ? void 0 : cssVarsRef,
92194
92306
  themeClass: themeClassHandle?.themeClass,
92195
92307
  onRender: themeClassHandle?.onRender
@@ -92219,16 +92331,17 @@
92219
92331
  const icon = defaultSlot ? defaultSlot() : /* @__PURE__ */ vue.h(NBaseIcon, {
92220
92332
  clsPrefix: mergedClsPrefix
92221
92333
  }, { default: () => StarIcon });
92222
- const fullStarActive = hoverIndex !== null ? index + 1 <= hoverIndex : index + 1 <= mergedValue;
92334
+ const entireStarActive = hoverIndex !== null ? index + 1 <= hoverIndex : index + 1 <= (mergedValue || 0);
92223
92335
  return /* @__PURE__ */ vue.h("div", {
92224
92336
  key: index,
92225
92337
  class: [
92226
92338
  `${mergedClsPrefix}-rate__item`,
92227
- fullStarActive && `${mergedClsPrefix}-rate__item--active`
92339
+ entireStarActive && `${mergedClsPrefix}-rate__item--active`
92228
92340
  ],
92229
92341
  onClick: readonly ? void 0 : (e) => {
92230
92342
  this.handleClick(index, e);
92231
92343
  },
92344
+ onMouseenter: this.handleMouseEnterSomeStar,
92232
92345
  onMousemove: readonly ? void 0 : (e) => {
92233
92346
  this.handleMouseMove(index, e);
92234
92347
  }
@@ -92236,7 +92349,7 @@
92236
92349
  class: [
92237
92350
  `${mergedClsPrefix}-rate__half`,
92238
92351
  {
92239
- [`${mergedClsPrefix}-rate__half--active`]: !fullStarActive && hoverIndex !== null ? index + 0.5 <= hoverIndex : index + 0.5 <= mergedValue
92352
+ [`${mergedClsPrefix}-rate__half--active`]: !entireStarActive && hoverIndex !== null ? index + 0.5 <= hoverIndex : index + 0.5 <= (mergedValue || 0)
92240
92353
  }
92241
92354
  ]
92242
92355
  }, icon) : null);
@@ -92870,6 +92983,10 @@
92870
92983
  default: void 0
92871
92984
  },
92872
92985
  formatTooltip: Function,
92986
+ keyboard: {
92987
+ type: Boolean,
92988
+ default: true
92989
+ },
92873
92990
  min: {
92874
92991
  type: Number,
92875
92992
  default: 0
@@ -93125,7 +93242,7 @@
93125
93242
  return Number(newValue.toFixed(precisionRef.value));
93126
93243
  }
93127
93244
  function getClosestMark(currentValue, markValues = markValuesRef.value, buffer) {
93128
- if (!markValues || !markValues.length)
93245
+ if (!markValues?.length)
93129
93246
  return null;
93130
93247
  let closestMark = null;
93131
93248
  let index = -1;
@@ -93160,7 +93277,7 @@
93160
93277
  return percentageToValue(percentage);
93161
93278
  }
93162
93279
  function handleRailKeyDown(e) {
93163
- if (mergedDisabledRef.value)
93280
+ if (mergedDisabledRef.value || !props.keyboard)
93164
93281
  return;
93165
93282
  const { vertical, reverse } = props;
93166
93283
  switch (e.key) {
@@ -98136,8 +98253,8 @@
98136
98253
  `)]), cNotM("disabled", [cM("clickable", [cB("tree-node-content", `
98137
98254
  cursor: pointer;
98138
98255
  `)])])]), cM("block-node", [cB("tree-node-content", `
98139
- flex-grow: 1;
98140
- flex-shrink: 0;
98256
+ flex: 1;
98257
+ min-width: 0;
98141
98258
  `)]), cNotM("block-line", [cB("tree-node", [cNotM("disabled", [cB("tree-node-content", [c$1("&:hover", {
98142
98259
  backgroundColor: "var(--n-node-color-hover)"
98143
98260
  })]), cM("selectable", [cB("tree-node-content", [c$1("&:active", {
@@ -98222,7 +98339,8 @@
98222
98339
  `), cE("text", `
98223
98340
  border-bottom: 1px solid #0000;
98224
98341
  transition: border-color .3s var(--n-bezier);
98225
- flex-grow:1;
98342
+ flex-grow: 1;
98343
+ max-width: 100%;
98226
98344
  `), cE("suffix", `
98227
98345
  display: inline-flex;
98228
98346
  `)]), cE("empty", "margin: auto;")]);
@@ -102854,6 +102972,7 @@
102854
102972
  NDialogProvider: NDialogProvider,
102855
102973
  dialogProviderProps: dialogProviderProps,
102856
102974
  useDialog: useDialog,
102975
+ useDialogReactiveList: useDialogReactiveList,
102857
102976
  NDivider: NDivider,
102858
102977
  dividerProps: dividerProps,
102859
102978
  NDrawer: Drawer,
@@ -102886,11 +103005,11 @@
102886
103005
  NGlobalStyle: GlobalStyle,
102887
103006
  NGradientText: GradientText,
102888
103007
  gradientTextProps: gradientTextProps,
102889
- NGrid: Grid,
103008
+ NGrid: NGrid,
102890
103009
  gridProps: gridProps,
102891
- NGridItem: NGridItem,
103010
+ NGridItem: NGi,
102892
103011
  gridItemProps: gridItemProps,
102893
- NGi: NGridItem,
103012
+ NGi: NGi,
102894
103013
  giProps: gridItemProps,
102895
103014
  NIcon: NIcon,
102896
103015
  iconProps: iconProps,
@@ -103055,7 +103174,7 @@
103055
103174
  createDiscreteApi: createDiscreteApi
103056
103175
  });
103057
103176
 
103058
- var version = "2.32.2";
103177
+ var version = "2.33.2";
103059
103178
 
103060
103179
  function create() {
103061
103180
  let {
@@ -103316,6 +103435,35 @@
103316
103435
  return theme;
103317
103436
  }
103318
103437
 
103438
+ const MaximizeIcon = vue.defineComponent({
103439
+ render() {
103440
+ return /* @__PURE__ */ vue.h("svg", {
103441
+ xmlns: "http://www.w3.org/2000/svg",
103442
+ viewBox: "0 0 16 16"
103443
+ }, /* @__PURE__ */ vue.h("g", {
103444
+ fill: "none"
103445
+ }, /* @__PURE__ */ vue.h("path", {
103446
+ d: "M8.5 2a.5.5 0 0 0 0 1h3.793L3 12.293V8.5a.5.5 0 0 0-1 0v4.9a.6.6 0 0 0 .6.6h4.9a.5.5 0 0 0 0-1H3.707L13 3.707V7.5a.5.5 0 0 0 1 0V2.6a.6.6 0 0 0-.6-.6H8.5z",
103447
+ fill: "currentColor"
103448
+ })));
103449
+ }
103450
+ });
103451
+
103452
+ const MinimizeIcon = vue.defineComponent({
103453
+ render() {
103454
+ return /* @__PURE__ */ vue.h("svg", {
103455
+ xmlns: "http://www.w3.org/2000/svg",
103456
+ viewBox: "0 0 32 32"
103457
+ }, /* @__PURE__ */ vue.h("path", {
103458
+ d: "M4 18v2h6.586L2 28.582L3.414 30L12 21.414V28h2V18H4z",
103459
+ fill: "currentColor"
103460
+ }), /* @__PURE__ */ vue.h("path", {
103461
+ d: "M30 3.416L28.592 2L20 10.586V4h-2v10h10v-2h-6.586L30 3.416z",
103462
+ fill: "currentColor"
103463
+ }));
103464
+ }
103465
+ });
103466
+
103319
103467
  const ColorWandIcon = /* @__PURE__ */ vue.h("svg", {
103320
103468
  viewBox: "0 0 16 16",
103321
103469
  fill: "none",
@@ -103345,6 +103493,7 @@
103345
103493
  name: "ThemeEditor",
103346
103494
  inheritAttrs: false,
103347
103495
  setup() {
103496
+ const isMaximized = vue.ref(false);
103348
103497
  const fileInputRef = vue.ref(null);
103349
103498
  const NConfigProvider2 = vue.inject(configProviderInjectionKey, null);
103350
103499
  const theme = vue.computed(() => {
@@ -103407,6 +103556,9 @@
103407
103556
  return;
103408
103557
  fileInput.click();
103409
103558
  }
103559
+ function toggleMaximized() {
103560
+ isMaximized.value = !isMaximized.value;
103561
+ }
103410
103562
  function handleInputFileChange() {
103411
103563
  const { value: fileInput } = fileInputRef;
103412
103564
  if (!fileInput)
@@ -103457,7 +103609,9 @@
103457
103609
  handleClearAllClick,
103458
103610
  handleExportClick,
103459
103611
  handleImportClick,
103460
- handleInputFileChange
103612
+ handleInputFileChange,
103613
+ toggleMaximized,
103614
+ isMaximized
103461
103615
  };
103462
103616
  },
103463
103617
  render() {
@@ -103473,7 +103627,7 @@
103473
103627
  displayDirective: "show",
103474
103628
  placement: "top-end",
103475
103629
  style: {
103476
- width: "288px",
103630
+ width: this.isMaximized ? "calc(100vw - 80px)" : "288px",
103477
103631
  height: "calc(100vh - 200px)",
103478
103632
  padding: 0
103479
103633
  }
@@ -103517,62 +103671,84 @@
103517
103671
  }), /* @__PURE__ */ vue.h(NSpace, {
103518
103672
  vertical: true
103519
103673
  }, {
103520
- default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h("div", {
103521
- style: {
103522
- marginBottom: "8px",
103523
- fontSize: "18px",
103524
- fontWeight: 500
103525
- }
103526
- }, this.locale.title), this.locale.filterCompName, /* @__PURE__ */ vue.h(NInput, {
103527
- onChange: () => {
103528
- this.compNamePattern = this.tempCompNamePattern;
103529
- },
103530
- onInput: (value) => {
103531
- this.tempCompNamePattern = value;
103532
- },
103533
- value: this.tempCompNamePattern,
103534
- placeholder: this.locale.filterCompName
103535
- }), this.locale.filterVarName, /* @__PURE__ */ vue.h(NInput, {
103536
- onChange: (value) => {
103537
- this.varNamePattern = value;
103538
- },
103539
- onInput: (value) => {
103540
- this.tempVarNamePattern = value;
103541
- },
103542
- value: this.tempVarNamePattern,
103543
- placeholder: this.locale.filterVarName
103544
- }), /* @__PURE__ */ vue.h(NButton, {
103545
- size: "small",
103546
- onClick: () => {
103547
- this.compNamePattern = "";
103548
- this.varNamePattern = "";
103549
- this.tempCompNamePattern = "";
103550
- this.tempVarNamePattern = "";
103551
- },
103552
- block: true
103553
- }, { default: () => this.locale.clearSearch }), /* @__PURE__ */ vue.h(NButton, {
103554
- size: "small",
103555
- onClick: this.handleClearAllClick,
103556
- block: true
103557
- }, {
103558
- default: () => this.locale.clearAllVars
103559
- }), /* @__PURE__ */ vue.h(NSpace, {
103560
- itemStyle: { flex: 1 }
103561
- }, {
103562
- default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(NButton, {
103563
- block: true,
103564
- size: "small",
103565
- onClick: this.handleImportClick
103674
+ default: () => [
103675
+ /* @__PURE__ */ vue.h(NSpace, {
103676
+ align: "center",
103677
+ justify: "space-between",
103678
+ style: {
103679
+ marginBottom: "8px",
103680
+ fontSize: "18px",
103681
+ fontWeight: 500
103682
+ }
103566
103683
  }, {
103567
- default: () => this.locale.import
103568
- }), /* @__PURE__ */ vue.h(NButton, {
103569
- block: true,
103684
+ default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h("span", null, this.locale.title), /* @__PURE__ */ vue.h(NButton, {
103685
+ onClick: this.toggleMaximized,
103686
+ secondary: true,
103687
+ circle: true,
103688
+ size: "tiny"
103689
+ }, {
103690
+ icon: () => /* @__PURE__ */ vue.h(NIcon, {
103691
+ component: this.isMaximized ? MinimizeIcon : MaximizeIcon
103692
+ })
103693
+ }))
103694
+ }),
103695
+ this.locale.filterCompName,
103696
+ /* @__PURE__ */ vue.h(NInput, {
103697
+ onChange: () => {
103698
+ this.compNamePattern = this.tempCompNamePattern;
103699
+ },
103700
+ onInput: (value) => {
103701
+ this.tempCompNamePattern = value;
103702
+ },
103703
+ value: this.tempCompNamePattern,
103704
+ placeholder: this.locale.filterCompName
103705
+ }),
103706
+ this.locale.filterVarName,
103707
+ /* @__PURE__ */ vue.h(NInput, {
103708
+ onChange: (value) => {
103709
+ this.varNamePattern = value;
103710
+ },
103711
+ onInput: (value) => {
103712
+ this.tempVarNamePattern = value;
103713
+ },
103714
+ value: this.tempVarNamePattern,
103715
+ placeholder: this.locale.filterVarName
103716
+ }),
103717
+ /* @__PURE__ */ vue.h(NButton, {
103570
103718
  size: "small",
103571
- onClick: this.handleExportClick
103719
+ onClick: () => {
103720
+ this.compNamePattern = "";
103721
+ this.varNamePattern = "";
103722
+ this.tempCompNamePattern = "";
103723
+ this.tempVarNamePattern = "";
103724
+ },
103725
+ block: true
103726
+ }, { default: () => this.locale.clearSearch }),
103727
+ /* @__PURE__ */ vue.h(NButton, {
103728
+ size: "small",
103729
+ onClick: this.handleClearAllClick,
103730
+ block: true
103572
103731
  }, {
103573
- default: () => this.locale.export
103574
- }))
103575
- }))
103732
+ default: () => this.locale.clearAllVars
103733
+ }),
103734
+ /* @__PURE__ */ vue.h(NSpace, {
103735
+ itemStyle: { flex: 1 }
103736
+ }, {
103737
+ default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h(NButton, {
103738
+ block: true,
103739
+ size: "small",
103740
+ onClick: this.handleImportClick
103741
+ }, {
103742
+ default: () => this.locale.import
103743
+ }), /* @__PURE__ */ vue.h(NButton, {
103744
+ block: true,
103745
+ size: "small",
103746
+ onClick: this.handleExportClick
103747
+ }, {
103748
+ default: () => this.locale.export
103749
+ }))
103750
+ })
103751
+ ]
103576
103752
  }), /* @__PURE__ */ vue.h(NDivider, null), /* @__PURE__ */ vue.h(NCollapse, null, {
103577
103753
  default: () => {
103578
103754
  const { theme, compNamePattern, varNamePattern } = this;
@@ -103600,62 +103776,62 @@
103600
103776
  title: themeKey,
103601
103777
  name: themeKey
103602
103778
  }, {
103603
- default: () => {
103604
- return /* @__PURE__ */ vue.h(NSpace, {
103605
- vertical: true
103606
- }, {
103607
- default: () => varKeys.map((varKey) => {
103608
- return [
103609
- /* @__PURE__ */ vue.h("div", {
103610
- key: `${varKey}Label`,
103611
- style: {
103612
- wordBreak: "break-word"
103613
- }
103614
- }, varKey),
103615
- showColorPicker(varKey) ? /* @__PURE__ */ vue.h(NColorPicker, {
103616
- key: varKey,
103617
- modes: ["rgb", "hex"],
103618
- value: this.tempOverrides?.[themeKey]?.[varKey] || componentTheme[varKey],
103619
- onComplete: this.applyTempOverrides,
103620
- onUpdateValue: (value) => {
103621
- this.setTempOverrides(
103622
- themeKey,
103623
- varKey,
103624
- value
103625
- );
103626
- }
103627
- }, {
103628
- action: () => /* @__PURE__ */ vue.h(NButton, {
103629
- size: "small",
103630
- disabled: componentTheme[varKey] === this.tempOverrides?.[themeKey]?.[varKey],
103631
- onClick: () => {
103632
- this.setTempOverrides(
103633
- themeKey,
103634
- varKey,
103635
- componentTheme[varKey]
103636
- );
103637
- this.applyTempOverrides();
103638
- }
103639
- }, {
103640
- default: () => this.locale.restore
103641
- })
103642
- }) : /* @__PURE__ */ vue.h(NInput, {
103643
- key: varKey,
103644
- onChange: this.applyTempOverrides,
103645
- onUpdateValue: (value) => {
103646
- this.setTempOverrides(
103647
- themeKey,
103648
- varKey,
103649
- value
103650
- );
103651
- },
103652
- value: this.tempOverrides?.[themeKey]?.[varKey] || "",
103653
- placeholder: componentTheme[varKey]
103654
- })
103655
- ];
103656
- })
103657
- });
103658
- }
103779
+ default: () => /* @__PURE__ */ vue.h(NGrid, {
103780
+ xGap: 32,
103781
+ yGap: 16,
103782
+ responsive: "screen",
103783
+ cols: this.isMaximized ? "1 xs:1 s:2 m:3 l:4" : 1
103784
+ }, {
103785
+ default: () => varKeys.map((varKey) => /* @__PURE__ */ vue.h(NGi, null, {
103786
+ default: () => /* @__PURE__ */ vue.h(vue.Fragment, null, /* @__PURE__ */ vue.h("div", {
103787
+ key: `${varKey}Label`,
103788
+ style: {
103789
+ wordBreak: "break-word"
103790
+ }
103791
+ }, varKey), showColorPicker(
103792
+ varKey
103793
+ ) ? /* @__PURE__ */ vue.h(NColorPicker, {
103794
+ key: varKey,
103795
+ modes: ["rgb", "hex"],
103796
+ value: this.tempOverrides?.[themeKey]?.[varKey] || componentTheme[varKey],
103797
+ onComplete: this.applyTempOverrides,
103798
+ onUpdateValue: (value) => {
103799
+ this.setTempOverrides(
103800
+ themeKey,
103801
+ varKey,
103802
+ value
103803
+ );
103804
+ }
103805
+ }, {
103806
+ action: () => /* @__PURE__ */ vue.h(NButton, {
103807
+ size: "small",
103808
+ disabled: componentTheme[varKey] === this.tempOverrides?.[themeKey]?.[varKey],
103809
+ onClick: () => {
103810
+ this.setTempOverrides(
103811
+ themeKey,
103812
+ varKey,
103813
+ componentTheme[varKey]
103814
+ );
103815
+ this.applyTempOverrides();
103816
+ }
103817
+ }, {
103818
+ default: () => this.locale.restore
103819
+ })
103820
+ }) : /* @__PURE__ */ vue.h(NInput, {
103821
+ key: varKey,
103822
+ onChange: this.applyTempOverrides,
103823
+ onUpdateValue: (value) => {
103824
+ this.setTempOverrides(
103825
+ themeKey,
103826
+ varKey,
103827
+ value
103828
+ );
103829
+ },
103830
+ value: this.tempOverrides?.[themeKey]?.[varKey] || "",
103831
+ placeholder: componentTheme[varKey]
103832
+ }))
103833
+ }))
103834
+ })
103659
103835
  });
103660
103836
  });
103661
103837
  if (!filteredItemsCount)
@@ -103722,11 +103898,11 @@
103722
103898
  exports.NFormItemGi = FormItemGridItem;
103723
103899
  exports.NFormItemGridItem = FormItemGridItem;
103724
103900
  exports.NFormItemRow = FormItemRow;
103725
- exports.NGi = NGridItem;
103901
+ exports.NGi = NGi;
103726
103902
  exports.NGlobalStyle = GlobalStyle;
103727
103903
  exports.NGradientText = GradientText;
103728
- exports.NGrid = Grid;
103729
- exports.NGridItem = NGridItem;
103904
+ exports.NGrid = NGrid;
103905
+ exports.NGridItem = NGi;
103730
103906
  exports.NH1 = NH1;
103731
103907
  exports.NH2 = NH2;
103732
103908
  exports.NH3 = NH3;
@@ -104085,6 +104261,7 @@
104085
104261
  exports.uploadDark = uploadDark$1;
104086
104262
  exports.uploadProps = uploadProps;
104087
104263
  exports.useDialog = useDialog;
104264
+ exports.useDialogReactiveList = useDialogReactiveList;
104088
104265
  exports.useLoadingBar = useLoadingBar;
104089
104266
  exports.useMessage = useMessage;
104090
104267
  exports.useNotification = useNotification;