naive-ui 2.21.5 → 2.22.0

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 (214) hide show
  1. package/es/_internal/close/src/styles/index.cssr.js +6 -5
  2. package/es/_internal/scrollbar/src/ScrollBar.d.ts +15 -0
  3. package/es/_internal/scrollbar/src/ScrollBar.js +13 -7
  4. package/es/_internal/selection/src/Selection.js +11 -9
  5. package/es/_internal/selection/src/styles/index.cssr.js +6 -2
  6. package/es/alert/src/Alert.d.ts +20 -20
  7. package/es/alert/src/Alert.js +22 -22
  8. package/es/alert/src/styles/index.cssr.js +45 -45
  9. package/es/anchor/src/AnchorAdapter.js +12 -12
  10. package/es/anchor/src/styles/index.cssr.js +41 -41
  11. package/es/avatar/src/Avatar.d.ts +5 -3
  12. package/es/avatar/src/Avatar.js +7 -5
  13. package/es/avatar/src/styles/index.cssr.js +3 -5
  14. package/es/button/src/Button.d.ts +33 -33
  15. package/es/button/src/Button.js +103 -102
  16. package/es/button/src/styles/button.cssr.js +83 -80
  17. package/es/button/styles/light.js +1 -1
  18. package/es/calendar/src/Calendar.d.ts +2 -0
  19. package/es/cascader/src/Cascader.d.ts +135 -0
  20. package/es/cascader/src/Cascader.js +2 -4
  21. package/es/cascader/src/CascaderMenu.d.ts +345 -0
  22. package/es/cascader/src/CascaderMenu.js +6 -5
  23. package/es/cascader/src/CascaderOption.d.ts +18 -0
  24. package/es/cascader/src/CascaderSelectMenu.d.ts +18 -0
  25. package/es/cascader/src/CascaderSubmenu.d.ts +18 -0
  26. package/es/cascader/styles/dark.js +3 -1
  27. package/es/cascader/styles/light.d.ts +13 -0
  28. package/es/cascader/styles/light.js +3 -1
  29. package/es/config-provider/src/ConfigProvider.d.ts +6 -0
  30. package/es/data-table/src/DataTable.js +7 -13
  31. package/es/data-table/src/MainTable.js +2 -3
  32. package/es/data-table/src/TableParts/Body.d.ts +15 -4
  33. package/es/data-table/src/TableParts/Body.js +80 -28
  34. package/es/data-table/src/TableParts/Header.js +1 -1
  35. package/es/data-table/src/interface.d.ts +4 -1
  36. package/es/data-table/src/styles/index.cssr.js +4 -3
  37. package/es/data-table/src/use-check.js +6 -2
  38. package/es/data-table/src/use-scroll.d.ts +2 -0
  39. package/es/data-table/src/use-scroll.js +34 -4
  40. package/es/data-table/src/use-table-data.js +3 -1
  41. package/es/data-table/styles/_common.js +1 -1
  42. package/es/date-picker/src/DatePicker.d.ts +25 -1
  43. package/es/date-picker/src/DatePicker.js +16 -7
  44. package/es/date-picker/src/config.d.ts +1 -1
  45. package/es/date-picker/src/interface.d.ts +2 -1
  46. package/es/date-picker/src/panel/date.d.ts +9 -1
  47. package/es/date-picker/src/panel/date.js +2 -2
  48. package/es/date-picker/src/panel/daterange.d.ts +7 -0
  49. package/es/date-picker/src/panel/daterange.js +2 -2
  50. package/es/date-picker/src/panel/datetime.d.ts +9 -7
  51. package/es/date-picker/src/panel/datetime.js +2 -2
  52. package/es/date-picker/src/panel/datetimerange.d.ts +7 -0
  53. package/es/date-picker/src/panel/datetimerange.js +2 -2
  54. package/es/date-picker/src/panel/month.d.ts +13 -11
  55. package/es/date-picker/src/panel/month.js +23 -12
  56. package/es/date-picker/src/panel/use-calendar.d.ts +11 -34
  57. package/es/date-picker/src/panel/use-calendar.js +35 -18
  58. package/es/date-picker/src/panel/use-dual-calendar.d.ts +7 -31
  59. package/es/date-picker/src/panel/use-dual-calendar.js +23 -8
  60. package/es/date-picker/src/panel/use-panel-common.d.ts +7 -27
  61. package/es/date-picker/src/panel/use-panel-common.js +2 -2
  62. package/es/date-picker/src/utils.d.ts +19 -3
  63. package/es/date-picker/src/utils.js +40 -5
  64. package/es/date-picker/styles/_common.d.ts +2 -0
  65. package/es/date-picker/styles/_common.js +3 -1
  66. package/es/date-picker/styles/light.d.ts +4 -0
  67. package/es/image/src/Image.js +8 -12
  68. package/es/locales/common/deDE.js +2 -0
  69. package/es/locales/common/enUS.d.ts +2 -0
  70. package/es/locales/common/enUS.js +2 -0
  71. package/es/locales/common/frFR.js +3 -0
  72. package/es/locales/common/idID.js +2 -0
  73. package/es/locales/common/jaJP.js +2 -0
  74. package/es/locales/common/nbNO.js +2 -0
  75. package/es/locales/common/ruRU.js +2 -0
  76. package/es/locales/common/ukUA.js +2 -0
  77. package/es/locales/common/zhCN.js +2 -0
  78. package/es/locales/common/zhTW.d.ts +3 -0
  79. package/es/locales/common/zhTW.js +100 -0
  80. package/es/locales/date/zhTW.d.ts +3 -0
  81. package/es/locales/date/zhTW.js +6 -0
  82. package/es/locales/index.d.ts +2 -0
  83. package/es/locales/index.js +2 -0
  84. package/es/page-header/src/PageHeader.js +3 -3
  85. package/es/page-header/src/styles/index.cssr.js +2 -4
  86. package/es/popover/src/Popover.js +4 -1
  87. package/es/popover/src/PopoverBody.js +3 -3
  88. package/es/popselect/src/Popselect.d.ts +2 -11
  89. package/es/popselect/src/Popselect.js +2 -2
  90. package/es/popselect/src/PopselectPanel.d.ts +3 -11
  91. package/es/popselect/src/PopselectPanel.js +17 -11
  92. package/es/radio/src/Radio.js +3 -3
  93. package/es/radio/src/RadioButton.js +4 -5
  94. package/es/radio/src/styles/radio-group.cssr.js +8 -4
  95. package/es/radio/src/styles/radio.cssr.js +8 -4
  96. package/es/radio/src/use-radio.d.ts +0 -3
  97. package/es/radio/src/use-radio.js +1 -26
  98. package/es/tabs/src/styles/index.cssr.js +1 -0
  99. package/es/tag/src/styles/index.cssr.js +1 -1
  100. package/es/tree-select/src/TreeSelect.d.ts +38 -1
  101. package/es/tree-select/src/TreeSelect.js +25 -10
  102. package/es/tree-select/src/styles/index.cssr.js +11 -2
  103. package/es/tree-select/styles/light.d.ts +6 -0
  104. package/es/tree-select/styles/light.js +5 -2
  105. package/es/version.d.ts +1 -1
  106. package/es/version.js +1 -1
  107. package/lib/_internal/close/src/styles/index.cssr.js +6 -5
  108. package/lib/_internal/scrollbar/src/ScrollBar.d.ts +15 -0
  109. package/lib/_internal/scrollbar/src/ScrollBar.js +13 -7
  110. package/lib/_internal/selection/src/Selection.js +11 -9
  111. package/lib/_internal/selection/src/styles/index.cssr.js +6 -2
  112. package/lib/alert/src/Alert.d.ts +20 -20
  113. package/lib/alert/src/Alert.js +22 -22
  114. package/lib/alert/src/styles/index.cssr.js +45 -45
  115. package/lib/anchor/src/AnchorAdapter.js +12 -12
  116. package/lib/anchor/src/styles/index.cssr.js +41 -41
  117. package/lib/avatar/src/Avatar.d.ts +5 -3
  118. package/lib/avatar/src/Avatar.js +7 -5
  119. package/lib/avatar/src/styles/index.cssr.js +3 -5
  120. package/lib/button/src/Button.d.ts +33 -33
  121. package/lib/button/src/Button.js +103 -102
  122. package/lib/button/src/styles/button.cssr.js +83 -80
  123. package/lib/button/styles/light.js +1 -1
  124. package/lib/calendar/src/Calendar.d.ts +2 -0
  125. package/lib/cascader/src/Cascader.d.ts +135 -0
  126. package/lib/cascader/src/Cascader.js +2 -4
  127. package/lib/cascader/src/CascaderMenu.d.ts +345 -0
  128. package/lib/cascader/src/CascaderMenu.js +6 -5
  129. package/lib/cascader/src/CascaderOption.d.ts +18 -0
  130. package/lib/cascader/src/CascaderSelectMenu.d.ts +18 -0
  131. package/lib/cascader/src/CascaderSubmenu.d.ts +18 -0
  132. package/lib/cascader/styles/dark.js +3 -1
  133. package/lib/cascader/styles/light.d.ts +13 -0
  134. package/lib/cascader/styles/light.js +3 -1
  135. package/lib/config-provider/src/ConfigProvider.d.ts +6 -0
  136. package/lib/data-table/src/DataTable.js +6 -12
  137. package/lib/data-table/src/MainTable.js +1 -2
  138. package/lib/data-table/src/TableParts/Body.d.ts +15 -4
  139. package/lib/data-table/src/TableParts/Body.js +78 -26
  140. package/lib/data-table/src/TableParts/Header.js +1 -1
  141. package/lib/data-table/src/interface.d.ts +4 -1
  142. package/lib/data-table/src/styles/index.cssr.js +4 -3
  143. package/lib/data-table/src/use-check.js +6 -2
  144. package/lib/data-table/src/use-scroll.d.ts +2 -0
  145. package/lib/data-table/src/use-scroll.js +34 -4
  146. package/lib/data-table/src/use-table-data.js +3 -1
  147. package/lib/data-table/styles/_common.js +1 -1
  148. package/lib/date-picker/src/DatePicker.d.ts +25 -1
  149. package/lib/date-picker/src/DatePicker.js +16 -7
  150. package/lib/date-picker/src/config.d.ts +1 -1
  151. package/lib/date-picker/src/interface.d.ts +2 -1
  152. package/lib/date-picker/src/panel/date.d.ts +9 -1
  153. package/lib/date-picker/src/panel/date.js +1 -1
  154. package/lib/date-picker/src/panel/daterange.d.ts +7 -0
  155. package/lib/date-picker/src/panel/daterange.js +1 -1
  156. package/lib/date-picker/src/panel/datetime.d.ts +9 -7
  157. package/lib/date-picker/src/panel/datetime.js +1 -1
  158. package/lib/date-picker/src/panel/datetimerange.d.ts +7 -0
  159. package/lib/date-picker/src/panel/datetimerange.js +2 -2
  160. package/lib/date-picker/src/panel/month.d.ts +13 -11
  161. package/lib/date-picker/src/panel/month.js +23 -12
  162. package/lib/date-picker/src/panel/use-calendar.d.ts +11 -34
  163. package/lib/date-picker/src/panel/use-calendar.js +34 -16
  164. package/lib/date-picker/src/panel/use-dual-calendar.d.ts +7 -31
  165. package/lib/date-picker/src/panel/use-dual-calendar.js +22 -6
  166. package/lib/date-picker/src/panel/use-panel-common.d.ts +7 -27
  167. package/lib/date-picker/src/panel/use-panel-common.js +3 -2
  168. package/lib/date-picker/src/utils.d.ts +19 -3
  169. package/lib/date-picker/src/utils.js +41 -4
  170. package/lib/date-picker/styles/_common.d.ts +2 -0
  171. package/lib/date-picker/styles/_common.js +3 -1
  172. package/lib/date-picker/styles/light.d.ts +4 -0
  173. package/lib/image/src/Image.js +7 -11
  174. package/lib/locales/common/deDE.js +2 -0
  175. package/lib/locales/common/enUS.d.ts +2 -0
  176. package/lib/locales/common/enUS.js +2 -0
  177. package/lib/locales/common/frFR.js +3 -0
  178. package/lib/locales/common/idID.js +2 -0
  179. package/lib/locales/common/jaJP.js +2 -0
  180. package/lib/locales/common/nbNO.js +2 -0
  181. package/lib/locales/common/ruRU.js +2 -0
  182. package/lib/locales/common/ukUA.js +2 -0
  183. package/lib/locales/common/zhCN.js +2 -0
  184. package/lib/locales/common/zhTW.d.ts +3 -0
  185. package/lib/locales/common/zhTW.js +102 -0
  186. package/lib/locales/date/zhTW.d.ts +3 -0
  187. package/lib/locales/date/zhTW.js +11 -0
  188. package/lib/locales/index.d.ts +2 -0
  189. package/lib/locales/index.js +5 -1
  190. package/lib/page-header/src/PageHeader.js +3 -3
  191. package/lib/page-header/src/styles/index.cssr.js +2 -4
  192. package/lib/popover/src/Popover.js +4 -1
  193. package/lib/popover/src/PopoverBody.js +3 -3
  194. package/lib/popselect/src/Popselect.d.ts +2 -11
  195. package/lib/popselect/src/Popselect.js +2 -2
  196. package/lib/popselect/src/PopselectPanel.d.ts +3 -11
  197. package/lib/popselect/src/PopselectPanel.js +16 -10
  198. package/lib/radio/src/Radio.js +3 -3
  199. package/lib/radio/src/RadioButton.js +4 -5
  200. package/lib/radio/src/styles/radio-group.cssr.js +8 -4
  201. package/lib/radio/src/styles/radio.cssr.js +8 -4
  202. package/lib/radio/src/use-radio.d.ts +0 -3
  203. package/lib/radio/src/use-radio.js +1 -26
  204. package/lib/tabs/src/styles/index.cssr.js +1 -0
  205. package/lib/tag/src/styles/index.cssr.js +1 -1
  206. package/lib/tree-select/src/TreeSelect.d.ts +38 -1
  207. package/lib/tree-select/src/TreeSelect.js +24 -9
  208. package/lib/tree-select/src/styles/index.cssr.js +11 -2
  209. package/lib/tree-select/styles/light.d.ts +6 -0
  210. package/lib/tree-select/styles/light.js +5 -2
  211. package/lib/version.d.ts +1 -1
  212. package/lib/version.js +1 -1
  213. package/package.json +4 -3
  214. package/web-types.json +25 -7
@@ -26,11 +26,7 @@ export declare const panelProps: {
26
26
  readonly onMouseenter: PropType<(e: MouseEvent) => void>;
27
27
  readonly onMouseleave: PropType<(e: MouseEvent) => void>;
28
28
  readonly renderLabel: PropType<RenderLabel>;
29
- readonly onChange: {
30
- readonly type: PropType<MaybeArray<OnUpdateValue> | undefined>;
31
- readonly validator: () => boolean;
32
- readonly default: undefined;
33
- };
29
+ readonly onChange: PropType<MaybeArray<OnUpdateValue> | undefined>;
34
30
  };
35
31
  export declare const panelPropKeys: ("value" | "size" | "width" | "multiple" | "onChange" | "onMouseenter" | "onMouseleave" | "scrollable" | "renderLabel" | "options" | "onUpdate:value" | "onUpdateValue" | "cancelable")[];
36
32
  declare const _default: import("vue").DefineComponent<{
@@ -55,11 +51,7 @@ declare const _default: import("vue").DefineComponent<{
55
51
  readonly onMouseenter: PropType<(e: MouseEvent) => void>;
56
52
  readonly onMouseleave: PropType<(e: MouseEvent) => void>;
57
53
  readonly renderLabel: PropType<RenderLabel>;
58
- readonly onChange: {
59
- readonly type: PropType<MaybeArray<OnUpdateValue> | undefined>;
60
- readonly validator: () => boolean;
61
- readonly default: undefined;
62
- };
54
+ readonly onChange: PropType<MaybeArray<OnUpdateValue> | undefined>;
63
55
  }, {
64
56
  mergedTheme: import("vue").Ref<{
65
57
  common: {
@@ -266,6 +258,7 @@ declare const _default: import("vue").DefineComponent<{
266
258
  mergedClsPrefix: import("vue").ComputedRef<string>;
267
259
  treeMate: import("vue").ComputedRef<import("treemate").TreeMate<SelectBaseOption<string | number, string | ((option: SelectBaseOption<string | number, string | any>, selected: boolean) => import("vue").VNodeChild)>, SelectGroupOption, SelectIgnoredOption>>;
268
260
  handleToggle: (tmNode: TreeNode<SelectBaseOption>) => void;
261
+ handleMenuMousedown: (e: MouseEvent) => void;
269
262
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<{
270
263
  readonly multiple?: unknown;
271
264
  readonly value?: unknown;
@@ -299,7 +292,6 @@ declare const _default: import("vue").DefineComponent<{
299
292
  value: Value | null;
300
293
  size: PopselectSize;
301
294
  multiple: boolean;
302
- onChange: MaybeArray<OnUpdateValue> | undefined;
303
295
  scrollable: boolean;
304
296
  options: SelectMixedOption[];
305
297
  cancelable: boolean;
@@ -1,6 +1,7 @@
1
1
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
2
- import { h, computed, defineComponent, inject, toRef, watch, nextTick } from 'vue';
2
+ import { h, computed, defineComponent, inject, toRef, watch, nextTick, watchEffect } from 'vue';
3
3
  import { createTreeMate } from 'treemate';
4
+ import { happensIn } from 'seemly';
4
5
  import { tmOptions } from '../../select/src/utils';
5
6
  import { useConfig } from '../../_mixins';
6
7
  import { NInternalSelectMenu } from '../../_internal';
@@ -29,20 +30,20 @@ export const panelProps = {
29
30
  onMouseleave: Function,
30
31
  renderLabel: Function,
31
32
  // deprecated
32
- onChange: {
33
- type: [Function, Array],
34
- validator: () => {
35
- warn('popselect', '`on-change` is deprecated, please use `on-update:value` instead.');
36
- return true;
37
- },
38
- default: undefined
39
- }
33
+ onChange: [Function, Array]
40
34
  };
41
35
  export const panelPropKeys = keysOf(panelProps);
42
36
  export default defineComponent({
43
37
  name: 'PopselectPanel',
44
38
  props: panelProps,
45
39
  setup(props) {
40
+ if (process.env.NODE_ENV !== 'production') {
41
+ watchEffect(() => {
42
+ if (props.onChange !== undefined) {
43
+ warn('popselect', '`on-change` is deprecated, please use `on-update:value` instead.');
44
+ }
45
+ });
46
+ }
46
47
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
47
48
  const NPopselect = inject(popselectInjectionKey);
48
49
  const { mergedClsPrefixRef } = useConfig(props);
@@ -62,6 +63,10 @@ export default defineComponent({
62
63
  function handleToggle(tmNode) {
63
64
  toggle(tmNode.key);
64
65
  }
66
+ function handleMenuMousedown(e) {
67
+ if (!happensIn(e, 'action'))
68
+ e.preventDefault();
69
+ }
65
70
  function toggle(value) {
66
71
  const { value: { getNode } } = treeMateRef;
67
72
  if (props.multiple) {
@@ -118,10 +123,11 @@ export default defineComponent({
118
123
  mergedTheme: NPopselect.mergedThemeRef,
119
124
  mergedClsPrefix: mergedClsPrefixRef,
120
125
  treeMate: treeMateRef,
121
- handleToggle
126
+ handleToggle,
127
+ handleMenuMousedown
122
128
  };
123
129
  },
124
130
  render() {
125
- return (h(NInternalSelectMenu, { clsPrefix: this.mergedClsPrefix, theme: this.mergedTheme.peers.InternalSelectMenu, themeOverrides: this.mergedTheme.peerOverrides.InternalSelectMenu, multiple: this.multiple, treeMate: this.treeMate, size: this.size, value: this.value, width: this.width, virtualScroll: false, scrollable: this.scrollable, renderLabel: this.renderLabel, onToggle: this.handleToggle, onMouseenter: this.onMouseenter, onMouseleave: this.onMouseenter }));
131
+ return (h(NInternalSelectMenu, { clsPrefix: this.mergedClsPrefix, focusable: true, theme: this.mergedTheme.peers.InternalSelectMenu, themeOverrides: this.mergedTheme.peerOverrides.InternalSelectMenu, multiple: this.multiple, treeMate: this.treeMate, size: this.size, value: this.value, width: this.width, virtualScroll: false, scrollable: this.scrollable, renderLabel: this.renderLabel, onToggle: this.handleToggle, onMouseenter: this.onMouseenter, onMouseleave: this.onMouseenter, onMousedown: this.handleMenuMousedown }, this.$slots));
126
132
  }
127
133
  });
@@ -36,15 +36,15 @@ export default defineComponent({
36
36
  },
37
37
  render() {
38
38
  const { $slots, mergedClsPrefix } = this;
39
- return (h("div", { class: [
39
+ return (h("label", { class: [
40
40
  `${mergedClsPrefix}-radio`,
41
41
  {
42
42
  [`${mergedClsPrefix}-radio--disabled`]: this.mergedDisabled,
43
43
  [`${mergedClsPrefix}-radio--checked`]: this.renderSafeChecked,
44
44
  [`${mergedClsPrefix}-radio--focus`]: this.focus
45
45
  }
46
- ], style: this.cssVars, onKeyup: this.handleKeyUp, onClick: this.handleClick, onMousedown: this.handleMouseDown },
47
- h("input", { ref: "inputRef", type: "radio", class: `${mergedClsPrefix}-radio__radio-input`, value: this.value, name: this.mergedName, checked: this.renderSafeChecked, disabled: this.mergedDisabled, onChange: this.handleRadioInputChange, onFocus: this.handleRadioInputFocus, onBlur: this.handleRadioInputBlur }),
46
+ ], style: this.cssVars },
47
+ h("input", { ref: "inputRef", type: "radio", class: `${mergedClsPrefix}-radio-input`, value: this.value, name: this.mergedName, checked: this.renderSafeChecked, disabled: this.mergedDisabled, onChange: this.handleRadioInputChange, onFocus: this.handleRadioInputFocus, onBlur: this.handleRadioInputBlur }),
48
48
  h("div", { class: [
49
49
  `${mergedClsPrefix}-radio__dot`,
50
50
  this.renderSafeChecked && `${mergedClsPrefix}-radio__dot--checked`
@@ -8,16 +8,15 @@ export default defineComponent({
8
8
  },
9
9
  render() {
10
10
  const { mergedClsPrefix } = this;
11
- return (h("div", { class: [
11
+ return (h("label", { class: [
12
12
  `${mergedClsPrefix}-radio-button`,
13
13
  {
14
14
  [`${mergedClsPrefix}-radio-button--disabled`]: this.mergedDisabled,
15
- [`${mergedClsPrefix}-radio-button--checked`]: this
16
- .renderSafeChecked,
15
+ [`${mergedClsPrefix}-radio-button--checked`]: this.renderSafeChecked,
17
16
  [`${mergedClsPrefix}-radio-button--focus`]: this.focus
18
17
  }
19
- ], onKeyup: this.handleKeyUp, onClick: this.handleClick, onMousedown: this.handleMouseDown },
20
- h("input", { ref: "inputRef", type: "radio", class: `${mergedClsPrefix}-radio-button__radio-input`, value: this.value, name: this.mergedName, checked: this.renderSafeChecked, disabled: this.mergedDisabled, onChange: this.handleRadioInputChange, onFocus: this.handleRadioInputFocus, onBlur: this.handleRadioInputBlur }),
18
+ ] },
19
+ h("input", { ref: "inputRef", type: "radio", class: `${mergedClsPrefix}-radio-input`, value: this.value, name: this.mergedName, checked: this.renderSafeChecked, disabled: this.mergedDisabled, onChange: this.handleRadioInputChange, onFocus: this.handleRadioInputFocus, onBlur: this.handleRadioInputBlur }),
21
20
  h("div", { class: `${mergedClsPrefix}-radio-button__state-border` }),
22
21
  h("span", { ref: "labelRef" }, this.$slots)));
23
22
  }
@@ -47,12 +47,16 @@ export default cB('radio-group', `
47
47
  color: var(--button-text-color);
48
48
  border-top: 1px solid var(--button-border-color);
49
49
  border-bottom: 1px solid var(--button-border-color);
50
- `, [cE('radio-input', `
50
+ `, [cB('radio-input', `
51
+ position: absolute;
51
52
  border: 0;
52
- width: 0;
53
- height: 0;
53
+ border-radius: inherit;
54
+ left: 0;
55
+ right: 0;
56
+ top: 0;
57
+ bottom: 0;
54
58
  opacity: 0;
55
- margin: 0;
59
+ z-index: 1;
56
60
  `), cE('state-border', `
57
61
  pointer-events: none;
58
62
  position: absolute;
@@ -27,12 +27,16 @@ export default cB('radio', `
27
27
  `, [cE('dot', `
28
28
  height: var(--radio-size);
29
29
  width: var(--radio-size);
30
- `), cE('radio-input', `
30
+ `), cB('radio-input', `
31
+ position: absolute;
31
32
  border: 0;
32
- width: 0;
33
- height: 0;
33
+ border-radius: inherit;
34
+ left: 0;
35
+ right: 0;
36
+ top: 0;
37
+ bottom: 0;
34
38
  opacity: 0;
35
- margin: 0;
39
+ z-index: 1;
36
40
  `), cE('dot', `
37
41
  background: var(--color);
38
42
  box-shadow: var(--box-shadow);
@@ -47,9 +47,6 @@ export interface UseRadio {
47
47
  handleRadioInputChange: () => void;
48
48
  handleRadioInputBlur: () => void;
49
49
  handleRadioInputFocus: () => void;
50
- handleKeyUp: (e: KeyboardEvent) => void;
51
- handleMouseDown: () => void;
52
- handleClick: () => void;
53
50
  }
54
51
  declare function setup(props: ExtractPropTypes<typeof radioProps>): UseRadio;
55
52
  declare namespace setup {
@@ -112,28 +112,6 @@ function setup(props) {
112
112
  function handleRadioInputFocus() {
113
113
  focusRef.value = true;
114
114
  }
115
- function handleKeyUp(e) {
116
- var _a;
117
- switch (e.code) {
118
- case 'Enter':
119
- case 'NumpadEnter':
120
- (_a = inputRef.value) === null || _a === void 0 ? void 0 : _a.click();
121
- }
122
- }
123
- function handleMouseDown() {
124
- if (mergedDisabledRef.value)
125
- return;
126
- setTimeout(() => {
127
- var _a, _b;
128
- if (!((_a = labelRef.value) === null || _a === void 0 ? void 0 : _a.contains(document.activeElement))) {
129
- (_b = inputRef.value) === null || _b === void 0 ? void 0 : _b.focus();
130
- }
131
- }, 0);
132
- }
133
- function handleClick() {
134
- var _a;
135
- (_a = inputRef.value) === null || _a === void 0 ? void 0 : _a.click();
136
- }
137
115
  return {
138
116
  mergedClsPrefix: NRadioGroup
139
117
  ? NRadioGroup.mergedClsPrefixRef
@@ -148,10 +126,7 @@ function setup(props) {
148
126
  mergedSize: mergedSizeRef,
149
127
  handleRadioInputChange,
150
128
  handleRadioInputBlur,
151
- handleRadioInputFocus,
152
- handleKeyUp,
153
- handleMouseDown,
154
- handleClick
129
+ handleRadioInputFocus
155
130
  };
156
131
  }
157
132
  setup.props = radioProps;
@@ -23,6 +23,7 @@ import { c, cM, cB, cE, cNotM } from '../../../_utils/cssr'; // vars:
23
23
  // --tab-color-segment
24
24
 
25
25
  export default cB('tabs', `
26
+ box-sizing: border-box;
26
27
  width: 100%;
27
28
  transition:
28
29
  background-color .3s var(--bezier),
@@ -42,7 +42,7 @@ export default cB('tag', `
42
42
  color .3s var(--bezier),
43
43
  box-shadow .3s var(--bezier),
44
44
  opacity .3s var(--bezier);
45
- line-height: 1;
45
+ line-height: 1.2;
46
46
  height: var(--height);
47
47
  font-size: var(--font-size);
48
48
  `, [cE('border', `
@@ -1,4 +1,4 @@
1
- import { PropType } from 'vue';
1
+ import { PropType, HTMLAttributes } from 'vue';
2
2
  import { FollowerPlacement } from 'vueuc';
3
3
  import { CheckStrategy } from 'treemate';
4
4
  import { Key } from '../../tree/src/interface';
@@ -94,6 +94,7 @@ declare const props: {
94
94
  type: PropType<string | boolean | HTMLElement>;
95
95
  default: undefined;
96
96
  };
97
+ readonly menuProps: PropType<HTMLAttributes>;
97
98
  readonly virtualScroll: {
98
99
  readonly type: BooleanConstructor;
99
100
  readonly default: true;
@@ -104,6 +105,9 @@ declare const props: {
104
105
  menuBoxShadow: string;
105
106
  menuBorderRadius: string;
106
107
  menuHeight: string;
108
+ actionDividerColor: string;
109
+ actionTextColor: string;
110
+ actionPadding: string;
107
111
  }, {
108
112
  Tree: import("../../_mixins").Theme<"Tree", {
109
113
  fontSize: string;
@@ -238,6 +242,9 @@ declare const props: {
238
242
  menuBoxShadow: string;
239
243
  menuBorderRadius: string;
240
244
  menuHeight: string;
245
+ actionDividerColor: string;
246
+ actionTextColor: string;
247
+ actionPadding: string;
241
248
  }, {
242
249
  Tree: import("../../_mixins").Theme<"Tree", {
243
250
  fontSize: string;
@@ -372,6 +379,9 @@ declare const props: {
372
379
  menuBoxShadow: string;
373
380
  menuBorderRadius: string;
374
381
  menuHeight: string;
382
+ actionDividerColor: string;
383
+ actionTextColor: string;
384
+ actionPadding: string;
375
385
  }, {
376
386
  Tree: import("../../_mixins").Theme<"Tree", {
377
387
  fontSize: string;
@@ -591,6 +601,7 @@ declare const _default: import("vue").DefineComponent<{
591
601
  type: PropType<string | boolean | HTMLElement>;
592
602
  default: undefined;
593
603
  };
604
+ readonly menuProps: PropType<HTMLAttributes>;
594
605
  readonly virtualScroll: {
595
606
  readonly type: BooleanConstructor;
596
607
  readonly default: true;
@@ -601,6 +612,9 @@ declare const _default: import("vue").DefineComponent<{
601
612
  menuBoxShadow: string;
602
613
  menuBorderRadius: string;
603
614
  menuHeight: string;
615
+ actionDividerColor: string;
616
+ actionTextColor: string;
617
+ actionPadding: string;
604
618
  }, {
605
619
  Tree: import("../../_mixins").Theme<"Tree", {
606
620
  fontSize: string;
@@ -735,6 +749,9 @@ declare const _default: import("vue").DefineComponent<{
735
749
  menuBoxShadow: string;
736
750
  menuBorderRadius: string;
737
751
  menuHeight: string;
752
+ actionDividerColor: string;
753
+ actionTextColor: string;
754
+ actionPadding: string;
738
755
  }, {
739
756
  Tree: import("../../_mixins").Theme<"Tree", {
740
757
  fontSize: string;
@@ -869,6 +886,9 @@ declare const _default: import("vue").DefineComponent<{
869
886
  menuBoxShadow: string;
870
887
  menuBorderRadius: string;
871
888
  menuHeight: string;
889
+ actionDividerColor: string;
890
+ actionTextColor: string;
891
+ actionPadding: string;
872
892
  }, {
873
893
  Tree: import("../../_mixins").Theme<"Tree", {
874
894
  fontSize: string;
@@ -1060,6 +1080,9 @@ declare const _default: import("vue").DefineComponent<{
1060
1080
  '--menu-color': string;
1061
1081
  '--menu-height': string;
1062
1082
  '--bezier': string;
1083
+ '--action-padding': string;
1084
+ '--action-text-color': string;
1085
+ '--action-divider-color': string;
1063
1086
  }>;
1064
1087
  mergedTheme: import("vue").ComputedRef<{
1065
1088
  common: {
@@ -1171,6 +1194,9 @@ declare const _default: import("vue").DefineComponent<{
1171
1194
  menuBoxShadow: string;
1172
1195
  menuBorderRadius: string;
1173
1196
  menuHeight: string;
1197
+ actionDividerColor: string;
1198
+ actionTextColor: string;
1199
+ actionPadding: string;
1174
1200
  };
1175
1201
  peers: {
1176
1202
  Tree: import("../../_mixins").Theme<"Tree", {
@@ -1403,6 +1429,7 @@ declare const _default: import("vue").DefineComponent<{
1403
1429
  readonly size?: unknown;
1404
1430
  readonly value?: unknown;
1405
1431
  readonly to?: unknown;
1432
+ readonly menuProps?: unknown;
1406
1433
  readonly virtualScroll?: unknown;
1407
1434
  readonly theme?: unknown;
1408
1435
  readonly themeOverrides?: unknown;
@@ -1444,6 +1471,9 @@ declare const _default: import("vue").DefineComponent<{
1444
1471
  menuBoxShadow: string;
1445
1472
  menuBorderRadius: string;
1446
1473
  menuHeight: string;
1474
+ actionDividerColor: string;
1475
+ actionTextColor: string;
1476
+ actionPadding: string;
1447
1477
  }, {
1448
1478
  Tree: import("../../_mixins").Theme<"Tree", {
1449
1479
  fontSize: string;
@@ -1578,6 +1608,9 @@ declare const _default: import("vue").DefineComponent<{
1578
1608
  menuBoxShadow: string;
1579
1609
  menuBorderRadius: string;
1580
1610
  menuHeight: string;
1611
+ actionDividerColor: string;
1612
+ actionTextColor: string;
1613
+ actionPadding: string;
1581
1614
  }, {
1582
1615
  Tree: import("../../_mixins").Theme<"Tree", {
1583
1616
  fontSize: string;
@@ -1712,6 +1745,9 @@ declare const _default: import("vue").DefineComponent<{
1712
1745
  menuBoxShadow: string;
1713
1746
  menuBorderRadius: string;
1714
1747
  menuHeight: string;
1748
+ actionDividerColor: string;
1749
+ actionTextColor: string;
1750
+ actionPadding: string;
1715
1751
  }, {
1716
1752
  Tree: import("../../_mixins").Theme<"Tree", {
1717
1753
  fontSize: string;
@@ -1843,6 +1879,7 @@ declare const _default: import("vue").DefineComponent<{
1843
1879
  "onUpdate:show"?: MaybeArray<(show: boolean) => void> | undefined;
1844
1880
  onUpdateShow?: MaybeArray<(show: boolean) => void> | undefined;
1845
1881
  maxTagCount?: number | "responsive" | undefined;
1882
+ menuProps?: HTMLAttributes | undefined;
1846
1883
  "onUpdate:value"?: MaybeArray<OnUpdateValue> | undefined;
1847
1884
  onUpdateValue?: MaybeArray<OnUpdateValue> | undefined;
1848
1885
  leafOnly?: boolean | undefined;
@@ -1,8 +1,9 @@
1
- import { h, defineComponent, ref, toRef, Transition, withDirectives, computed, provide, watch, nextTick, watchEffect } from 'vue';
1
+ import { h, defineComponent, ref, toRef, Transition, withDirectives, computed, provide, watch, nextTick, watchEffect, renderSlot } from 'vue';
2
2
  import { VBinder, VFollower, VTarget } from 'vueuc';
3
3
  import { useIsMounted, useMergedState } from 'vooks';
4
4
  import { clickoutside } from 'vdirs';
5
5
  import { createTreeMate } from 'treemate';
6
+ import { happensIn } from 'seemly';
6
7
  import { createTreeMateOptions, treeSharedProps } from '../../tree/src/Tree';
7
8
  import { NInternalSelection, NBaseFocusDetector } from '../../_internal';
8
9
  import { NTree } from '../../tree';
@@ -40,7 +41,7 @@ const props = Object.assign(Object.assign(Object.assign(Object.assign({}, useThe
40
41
  }, show: {
41
42
  type: Boolean,
42
43
  default: undefined
43
- }, size: String, value: [String, Number, Array], to: useAdjustedTo.propTo, virtualScroll: {
44
+ }, size: String, value: [String, Number, Array], to: useAdjustedTo.propTo, menuProps: Object, virtualScroll: {
44
45
  type: Boolean,
45
46
  default: true
46
47
  } }), treeSharedProps), { onBlur: Function, onFocus: Function, onUpdateShow: [Function, Array], onUpdateValue: [Function, Array], 'onUpdate:value': [Function, Array], 'onUpdate:show': [Function, Array],
@@ -437,7 +438,8 @@ export default defineComponent({
437
438
  function handleMenuMousedown(e) {
438
439
  // If there's an action slot later, we need to check if mousedown happens
439
440
  // in action panel
440
- e.preventDefault();
441
+ if (!happensIn(e, 'action'))
442
+ e.preventDefault();
441
443
  }
442
444
  provide(treeSelectInjectionKey, {
443
445
  pendingNodeKeyRef
@@ -514,20 +516,23 @@ export default defineComponent({
514
516
  handleTabOut,
515
517
  handleMenuMousedown,
516
518
  cssVars: computed(() => {
517
- const { common: { cubicBezierEaseInOut }, self: { menuBoxShadow, menuBorderRadius, menuColor, menuHeight } } = themeRef.value;
519
+ const { common: { cubicBezierEaseInOut }, self: { menuBoxShadow, menuBorderRadius, menuColor, menuHeight, actionPadding, actionDividerColor, actionTextColor } } = themeRef.value;
518
520
  return {
519
521
  '--menu-box-shadow': menuBoxShadow,
520
522
  '--menu-border-radius': menuBorderRadius,
521
523
  '--menu-color': menuColor,
522
524
  '--menu-height': menuHeight,
523
- '--bezier': cubicBezierEaseInOut
525
+ '--bezier': cubicBezierEaseInOut,
526
+ '--action-padding': actionPadding,
527
+ '--action-text-color': actionTextColor,
528
+ '--action-divider-color': actionDividerColor
524
529
  };
525
530
  }),
526
531
  mergedTheme: themeRef
527
532
  };
528
533
  },
529
534
  render() {
530
- const { mergedTheme, mergedClsPrefix } = this;
535
+ const { mergedTheme, mergedClsPrefix, $slots } = this;
531
536
  return (h("div", { class: `${mergedClsPrefix}-tree-select` },
532
537
  h(VBinder, null, {
533
538
  default: () => [
@@ -539,11 +544,21 @@ export default defineComponent({
539
544
  default: () => {
540
545
  if (!this.mergedShow)
541
546
  return null;
542
- const { mergedClsPrefix, filteredTreeInfo, checkable, multiple } = this;
543
- return withDirectives(h("div", { class: `${mergedClsPrefix}-tree-select-menu`, ref: "menuElRef", style: this.cssVars, tabindex: 0, onMousedown: this.handleMenuMousedown, onKeyup: this.handleKeyup, onKeydown: this.handleKeydown, onFocusin: this.handleMenuFocusin, onFocusout: this.handleMenuFocusout },
547
+ const { mergedClsPrefix, filteredTreeInfo, checkable, multiple, menuProps } = this;
548
+ return withDirectives(h("div", Object.assign({}, menuProps, { class: [
549
+ `${mergedClsPrefix}-tree-select-menu`,
550
+ menuProps === null || menuProps === void 0 ? void 0 : menuProps.class
551
+ ], ref: "menuElRef", style: [
552
+ (menuProps === null || menuProps === void 0 ? void 0 : menuProps.style) || '',
553
+ this.cssVars
554
+ ], tabindex: 0, onMousedown: this.handleMenuMousedown, onKeyup: this.handleKeyup, onKeydown: this.handleKeydown, onFocusin: this.handleMenuFocusin, onFocusout: this.handleMenuFocusout }),
544
555
  filteredTreeInfo.filteredTree.length ? (h(NTree, { ref: "treeInstRef", blockLine: true, animated: false, data: filteredTreeInfo.filteredTree, cancelable: multiple, labelField: this.labelField, theme: mergedTheme.peers.Tree, themeOverrides: mergedTheme.peerOverrides.Tree, defaultExpandAll: this.defaultExpandAll, defaultExpandedKeys: this.defaultExpandedKeys, expandedKeys: this.mergedExpandedKeys, checkedKeys: this.treeCheckedKeys, selectedKeys: this.treeSelectedKeys, checkable: checkable, checkStrategy: this.checkStrategy, cascade: this.mergedCascade, leafOnly: this.leafOnly, multiple: this.multiple, virtualScroll: this.consistentMenuWidth &&
545
- this.virtualScroll, internalDataTreeMate: this.dataTreeMate, internalDisplayTreeMate: this.displayTreeMate, internalHighlightKeySet: filteredTreeInfo.highlightKeySet, internalUnifySelectCheck: true, internalScrollable: true, internalScrollablePadding: this.menuPadding, internalFocusable: false, internalCheckboxFocusable: false, onUpdateCheckedKeys: this.handleUpdateCheckedKeys, onUpdateIndeterminateKeys: this.handleUpdateIndeterminateKeys, onUpdateExpandedKeys: this.doUpdateExpandedKeys })) : (h("div", { class: `${mergedClsPrefix}-tree-select-menu__empty` },
546
- h(NEmpty, { theme: mergedTheme.peers.Empty, themeOverrides: mergedTheme.peerOverrides.Empty }))),
556
+ this.virtualScroll, internalDataTreeMate: this.dataTreeMate, internalDisplayTreeMate: this.displayTreeMate, internalHighlightKeySet: filteredTreeInfo.highlightKeySet, internalUnifySelectCheck: true, internalScrollable: true, internalScrollablePadding: this.menuPadding, internalFocusable: false, internalCheckboxFocusable: false, onUpdateCheckedKeys: this.handleUpdateCheckedKeys, onUpdateIndeterminateKeys: this.handleUpdateIndeterminateKeys, onUpdateExpandedKeys: this.doUpdateExpandedKeys })) : (h("div", { class: `${mergedClsPrefix}-tree-select-menu__empty` }, renderSlot($slots, 'empty', undefined, () => [
557
+ h(NEmpty, { theme: mergedTheme.peers.Empty, themeOverrides: mergedTheme.peerOverrides.Empty })
558
+ ]))),
559
+ $slots.action && (h("div", { class: `${mergedClsPrefix}-tree-select-menu__action`, "data-action": true }, {
560
+ default: $slots.action
561
+ })),
547
562
  h(NBaseFocusDetector, { onFocus: this.handleTabOut })), [[clickoutside, this.handleMenuClickoutside]]);
548
563
  }
549
564
  }))
@@ -5,6 +5,9 @@ import { c, cB, cE } from '../../../_utils/cssr'; // vars:
5
5
  // --menu-border-radius
6
6
  // --menu-box-shadow
7
7
  // --menu-color
8
+ // --action-padding
9
+ // --action-text-color
10
+ // --action-divider-color
8
11
 
9
12
  export default c([cB('tree-select', `
10
13
  z-index: auto;
@@ -15,15 +18,21 @@ export default c([cB('tree-select', `
15
18
  position: relative;
16
19
  overflow: hidden;
17
20
  margin: 4px 0;
18
- max-height: var(--menu-height);
19
21
  transition: box-shadow .3s var(--bezier), background-color .3s var(--bezier);
20
22
  border-radius: var(--menu-border-radius);
21
23
  box-shadow: var(--menu-box-shadow);
22
24
  background-color: var(--menu-color);
23
25
  outline: none;
24
- `, [cB('tree', 'max-height: inherit;'), cE('empty', `
26
+ `, [cB('tree', 'max-height: var(--menu-height);'), cE('empty', `
25
27
  display: flex;
26
28
  padding: 12px 32px;
27
29
  flex: 1;
28
30
  justify-content: center;
31
+ `), cE('action', `
32
+ padding: var(--action-padding);
33
+ transition:
34
+ color .3s var(--bezier);
35
+ border-color .3s var(--bezier);
36
+ border-top: 1px solid var(--action-divider-color);
37
+ color: var(--action-text-color);
29
38
  `), fadeInScaleUpTransition()])]);
@@ -5,6 +5,9 @@ export declare const self: (vars: ThemeCommonVars) => {
5
5
  menuBoxShadow: string;
6
6
  menuBorderRadius: string;
7
7
  menuHeight: string;
8
+ actionDividerColor: string;
9
+ actionTextColor: string;
10
+ actionPadding: string;
8
11
  };
9
12
  export declare type TreeSelectThemeVars = ReturnType<typeof self>;
10
13
  declare const treeSelectLight: import("../../_mixins/use-theme").Theme<"TreeSelect", {
@@ -13,6 +16,9 @@ declare const treeSelectLight: import("../../_mixins/use-theme").Theme<"TreeSele
13
16
  menuBoxShadow: string;
14
17
  menuBorderRadius: string;
15
18
  menuHeight: string;
19
+ actionDividerColor: string;
20
+ actionTextColor: string;
21
+ actionPadding: string;
16
22
  }, {
17
23
  Tree: import("../../_mixins/use-theme").Theme<"Tree", {
18
24
  fontSize: string;
@@ -4,13 +4,16 @@ import { treeLight } from '../../tree/styles';
4
4
  import { emptyLight } from '../../empty/styles';
5
5
  import { internalSelectionLight } from '../../_internal/selection/styles';
6
6
  export const self = (vars) => {
7
- const { popoverColor, boxShadow2, borderRadius, heightMedium } = vars;
7
+ const { popoverColor, boxShadow2, borderRadius, heightMedium, dividerColor, textColor2 } = vars;
8
8
  return {
9
9
  menuPadding: '4px',
10
10
  menuColor: popoverColor,
11
11
  menuBoxShadow: boxShadow2,
12
12
  menuBorderRadius: borderRadius,
13
- menuHeight: `calc(${heightMedium} * 7.6)`
13
+ menuHeight: `calc(${heightMedium} * 7.6)`,
14
+ actionDividerColor: dividerColor,
15
+ actionTextColor: textColor2,
16
+ actionPadding: '8px 12px'
14
17
  };
15
18
  };
16
19
  const treeSelectLight = createTheme({
package/es/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "2.21.5";
1
+ declare const _default: "2.22.0";
2
2
  export default _default;
package/es/version.js CHANGED
@@ -1 +1 @@
1
- export default '2.21.5';
1
+ export default '2.22.0';
@@ -4,7 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
 
7
- const cssr_1 = require("../../../../_utils/cssr"); // vars:
7
+ const cssr_1 = require("../../../../_utils/cssr"); // Note: non-prefixed color should be removed after css vars prefix migration
8
+ // vars:
8
9
  // --close-color
9
10
  // --close-color-hover
10
11
  // --close-color-pressed
@@ -13,12 +14,12 @@ const cssr_1 = require("../../../../_utils/cssr"); // vars:
13
14
 
14
15
  exports.default = (0, cssr_1.cB)('base-close', `
15
16
  cursor: pointer;
16
- color: var(--close-color);
17
+ color: var(--close-color, var(--n-close-color));
17
18
  `, [(0, cssr_1.c)('&:hover', {
18
- color: 'var(--close-color-hover)'
19
+ color: 'var(--close-color-hover, var(--n-close-color))'
19
20
  }), (0, cssr_1.c)('&:active', {
20
- color: 'var(--close-color-pressed)'
21
+ color: 'var(--close-color-pressed, var(--n-close-color-pressed))'
21
22
  }), (0, cssr_1.cM)('disabled', {
22
23
  cursor: 'not-allowed!important',
23
- color: 'var(--close-color-disabled)'
24
+ color: 'var(--close-color-disabled, var(--n-close-color-disabled))'
24
25
  })]);