naive-ui 2.30.4 → 2.30.7

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 (192) hide show
  1. package/README.zh-CN.md +2 -2
  2. package/dist/index.js +2321 -1375
  3. package/dist/index.prod.js +2 -2
  4. package/es/_internal/close/src/Close.js +1 -1
  5. package/es/_internal/scrollbar/src/Scrollbar.js +1 -2
  6. package/es/_internal/selection/src/Selection.js +5 -3
  7. package/es/_utils/dom/index.d.ts +1 -0
  8. package/es/_utils/dom/index.js +1 -0
  9. package/es/_utils/dom/is-document.d.ts +1 -0
  10. package/es/_utils/dom/is-document.js +3 -0
  11. package/es/_utils/index.d.ts +2 -1
  12. package/es/_utils/index.js +2 -1
  13. package/es/_utils/vue/index.d.ts +2 -0
  14. package/es/_utils/vue/index.js +2 -0
  15. package/es/_utils/vue/is-node-v-show-false.d.ts +2 -0
  16. package/es/_utils/vue/is-node-v-show-false.js +6 -0
  17. package/es/{_internal/scrollbar/src/Wrapper.d.ts → _utils/vue/wrapper.d.ts} +0 -0
  18. package/es/{_internal/scrollbar/src/Wrapper.js → _utils/vue/wrapper.js} +0 -0
  19. package/es/back-top/src/BackTop.d.ts +1 -1
  20. package/es/back-top/src/BackTop.js +24 -31
  21. package/es/button/src/styles/index.cssr.js +3 -0
  22. package/es/color-picker/src/ColorInputUnit.js +1 -1
  23. package/es/data-table/src/DataTable.d.ts +5 -2
  24. package/es/data-table/src/DataTable.js +3 -2
  25. package/es/data-table/src/TableParts/Body.d.ts +1 -0
  26. package/es/data-table/src/TableParts/Body.js +5 -7
  27. package/es/data-table/src/TableParts/Cell.d.ts +11 -1
  28. package/es/data-table/src/TableParts/Cell.js +19 -6
  29. package/es/data-table/src/interface.d.ts +5 -2
  30. package/es/data-table/src/styles/index.cssr.js +7 -2
  31. package/es/data-table/src/use-check.js +11 -3
  32. package/es/date-picker/src/DatePicker.d.ts +40 -0
  33. package/es/date-picker/src/DatePicker.js +15 -3
  34. package/es/date-picker/src/config.d.ts +1 -1
  35. package/es/date-picker/src/panel/date.d.ts +4 -0
  36. package/es/date-picker/src/panel/daterange.d.ts +7 -1
  37. package/es/date-picker/src/panel/datetime.d.ts +4 -0
  38. package/es/date-picker/src/panel/datetimerange.d.ts +7 -1
  39. package/es/date-picker/src/panel/month.d.ts +4 -0
  40. package/es/date-picker/src/panel/monthrange.d.ts +11 -5
  41. package/es/date-picker/src/panel/monthrange.js +13 -7
  42. package/es/date-picker/src/panel/panelHeader.d.ts +8 -0
  43. package/es/date-picker/src/panel/use-calendar.d.ts +4 -0
  44. package/es/date-picker/src/panel/use-dual-calendar.d.ts +9 -3
  45. package/es/date-picker/src/panel/use-dual-calendar.js +26 -6
  46. package/es/date-picker/src/panel/use-panel-common.d.ts +4 -0
  47. package/es/date-picker/src/utils.d.ts +1 -1
  48. package/es/date-picker/src/utils.js +2 -2
  49. package/es/date-picker/styles/_common.d.ts +4 -0
  50. package/es/date-picker/styles/_common.js +5 -1
  51. package/es/date-picker/styles/light.d.ts +8 -0
  52. package/es/drawer/src/DrawerBodyWrapper.js +1 -1
  53. package/es/grid/src/Grid.d.ts +3 -0
  54. package/es/grid/src/Grid.js +47 -9
  55. package/es/grid/src/GridItem.js +2 -1
  56. package/es/image/src/Image.d.ts +10 -0
  57. package/es/image/src/Image.js +42 -8
  58. package/es/image/src/utils.d.ts +11 -0
  59. package/es/image/src/utils.js +81 -0
  60. package/es/input/src/styles/input-group-label.cssr.js +2 -0
  61. package/es/locales/common/viVN.d.ts +3 -0
  62. package/es/locales/common/viVN.js +113 -0
  63. package/es/locales/date/viVN.d.ts +3 -0
  64. package/es/locales/date/viVN.js +6 -0
  65. package/es/locales/index.d.ts +2 -0
  66. package/es/locales/index.js +2 -0
  67. package/es/modal/src/BodyWrapper.d.ts +13 -18
  68. package/es/modal/src/BodyWrapper.js +38 -33
  69. package/es/modal/src/Modal.js +12 -7
  70. package/es/modal/src/styles/index.cssr.js +1 -0
  71. package/es/notification/src/Notification.d.ts +3 -0
  72. package/es/notification/src/Notification.js +5 -2
  73. package/es/notification/src/NotificationContainer.d.ts +3 -0
  74. package/es/notification/src/NotificationProvider.d.ts +27 -0
  75. package/es/notification/src/styles/index.cssr.js +6 -3
  76. package/es/notification/styles/_common.d.ts +3 -0
  77. package/es/notification/styles/_common.js +4 -1
  78. package/es/notification/styles/light.d.ts +6 -0
  79. package/es/select/index.d.ts +1 -1
  80. package/es/select/src/Select.d.ts +4 -4
  81. package/es/select/src/Select.js +10 -1
  82. package/es/select/src/interface.d.ts +1 -0
  83. package/es/space/src/Space.d.ts +26 -0
  84. package/es/space/src/Space.js +53 -43
  85. package/es/tabs/src/Tabs.js +1 -1
  86. package/es/tooltip/index.d.ts +1 -1
  87. package/es/tree/src/Tree.d.ts +4 -3
  88. package/es/tree/src/Tree.js +2 -1
  89. package/es/tree/src/TreeNode.d.ts +1 -1
  90. package/es/tree/src/interface.d.ts +1 -1
  91. package/es/tree-select/index.d.ts +1 -1
  92. package/es/tree-select/src/TreeSelect.d.ts +27 -5
  93. package/es/tree-select/src/TreeSelect.js +19 -3
  94. package/es/tree-select/src/interface.d.ts +17 -1
  95. package/es/version.d.ts +1 -1
  96. package/es/version.js +1 -1
  97. package/lib/_internal/close/src/Close.js +1 -1
  98. package/lib/_internal/scrollbar/src/Scrollbar.js +2 -3
  99. package/lib/_internal/selection/src/Selection.js +4 -2
  100. package/lib/_utils/dom/index.d.ts +1 -0
  101. package/lib/_utils/dom/index.js +5 -0
  102. package/lib/_utils/dom/is-document.d.ts +1 -0
  103. package/lib/_utils/dom/is-document.js +7 -0
  104. package/lib/_utils/index.d.ts +2 -1
  105. package/lib/_utils/index.js +4 -1
  106. package/lib/_utils/vue/index.d.ts +2 -0
  107. package/lib/_utils/vue/index.js +5 -1
  108. package/lib/_utils/vue/is-node-v-show-false.d.ts +2 -0
  109. package/lib/_utils/vue/is-node-v-show-false.js +10 -0
  110. package/lib/{_internal/scrollbar/src/Wrapper.d.ts → _utils/vue/wrapper.d.ts} +0 -0
  111. package/lib/{_internal/scrollbar/src/Wrapper.js → _utils/vue/wrapper.js} +0 -0
  112. package/lib/back-top/src/BackTop.d.ts +1 -1
  113. package/lib/back-top/src/BackTop.js +23 -30
  114. package/lib/button/src/styles/index.cssr.js +3 -0
  115. package/lib/color-picker/src/ColorInputUnit.js +1 -1
  116. package/lib/data-table/src/DataTable.d.ts +5 -2
  117. package/lib/data-table/src/DataTable.js +3 -2
  118. package/lib/data-table/src/TableParts/Body.d.ts +1 -0
  119. package/lib/data-table/src/TableParts/Body.js +5 -7
  120. package/lib/data-table/src/TableParts/Cell.d.ts +11 -1
  121. package/lib/data-table/src/TableParts/Cell.js +19 -6
  122. package/lib/data-table/src/interface.d.ts +5 -2
  123. package/lib/data-table/src/styles/index.cssr.js +7 -2
  124. package/lib/data-table/src/use-check.js +11 -3
  125. package/lib/date-picker/src/DatePicker.d.ts +40 -0
  126. package/lib/date-picker/src/DatePicker.js +15 -3
  127. package/lib/date-picker/src/config.d.ts +1 -1
  128. package/lib/date-picker/src/panel/date.d.ts +4 -0
  129. package/lib/date-picker/src/panel/daterange.d.ts +7 -1
  130. package/lib/date-picker/src/panel/datetime.d.ts +4 -0
  131. package/lib/date-picker/src/panel/datetimerange.d.ts +7 -1
  132. package/lib/date-picker/src/panel/month.d.ts +4 -0
  133. package/lib/date-picker/src/panel/monthrange.d.ts +11 -5
  134. package/lib/date-picker/src/panel/monthrange.js +13 -7
  135. package/lib/date-picker/src/panel/panelHeader.d.ts +8 -0
  136. package/lib/date-picker/src/panel/use-calendar.d.ts +4 -0
  137. package/lib/date-picker/src/panel/use-dual-calendar.d.ts +9 -3
  138. package/lib/date-picker/src/panel/use-dual-calendar.js +24 -4
  139. package/lib/date-picker/src/panel/use-panel-common.d.ts +4 -0
  140. package/lib/date-picker/src/utils.d.ts +1 -1
  141. package/lib/date-picker/src/utils.js +2 -2
  142. package/lib/date-picker/styles/_common.d.ts +4 -0
  143. package/lib/date-picker/styles/_common.js +5 -1
  144. package/lib/date-picker/styles/light.d.ts +8 -0
  145. package/lib/drawer/src/DrawerBodyWrapper.js +1 -1
  146. package/lib/grid/src/Grid.d.ts +3 -0
  147. package/lib/grid/src/Grid.js +45 -7
  148. package/lib/grid/src/GridItem.js +2 -1
  149. package/lib/image/src/Image.d.ts +10 -0
  150. package/lib/image/src/Image.js +41 -7
  151. package/lib/image/src/utils.d.ts +11 -0
  152. package/lib/image/src/utils.js +86 -0
  153. package/lib/input/src/styles/input-group-label.cssr.js +2 -0
  154. package/lib/locales/common/viVN.d.ts +3 -0
  155. package/lib/locales/common/viVN.js +115 -0
  156. package/lib/locales/date/viVN.d.ts +3 -0
  157. package/lib/locales/date/viVN.js +11 -0
  158. package/lib/locales/index.d.ts +2 -0
  159. package/lib/locales/index.js +5 -1
  160. package/lib/modal/src/BodyWrapper.d.ts +13 -18
  161. package/lib/modal/src/BodyWrapper.js +38 -33
  162. package/lib/modal/src/Modal.js +12 -7
  163. package/lib/modal/src/styles/index.cssr.js +1 -0
  164. package/lib/notification/src/Notification.d.ts +3 -0
  165. package/lib/notification/src/Notification.js +5 -2
  166. package/lib/notification/src/NotificationContainer.d.ts +3 -0
  167. package/lib/notification/src/NotificationProvider.d.ts +27 -0
  168. package/lib/notification/src/styles/index.cssr.js +6 -3
  169. package/lib/notification/styles/_common.d.ts +3 -0
  170. package/lib/notification/styles/_common.js +4 -1
  171. package/lib/notification/styles/light.d.ts +6 -0
  172. package/lib/select/index.d.ts +1 -1
  173. package/lib/select/src/Select.d.ts +4 -4
  174. package/lib/select/src/Select.js +10 -1
  175. package/lib/select/src/interface.d.ts +1 -0
  176. package/lib/space/src/Space.d.ts +26 -0
  177. package/lib/space/src/Space.js +53 -43
  178. package/lib/tabs/src/Tabs.js +1 -1
  179. package/lib/tooltip/index.d.ts +1 -1
  180. package/lib/tree/src/Tree.d.ts +4 -3
  181. package/lib/tree/src/Tree.js +2 -1
  182. package/lib/tree/src/TreeNode.d.ts +1 -1
  183. package/lib/tree/src/interface.d.ts +1 -1
  184. package/lib/tree-select/index.d.ts +1 -1
  185. package/lib/tree-select/src/TreeSelect.d.ts +27 -5
  186. package/lib/tree-select/src/TreeSelect.js +19 -3
  187. package/lib/tree-select/src/interface.d.ts +17 -1
  188. package/lib/version.d.ts +1 -1
  189. package/lib/version.js +1 -1
  190. package/package.json +2 -2
  191. package/volar.d.ts +0 -1
  192. package/web-types.json +100 -10
@@ -26,7 +26,7 @@ export default defineComponent({
26
26
  useStyle('-base-close', style, toRef(props, 'clsPrefix'));
27
27
  return () => {
28
28
  const { clsPrefix, disabled, absolute, round } = props;
29
- return (h("button", { tabindex: disabled || !props.focusable ? -1 : 0, "aria-disabled": disabled, "aria-label": "close", disabled: disabled, class: [
29
+ return (h("button", { type: "button", tabindex: disabled || !props.focusable ? -1 : 0, "aria-disabled": disabled, "aria-label": "close", disabled: disabled, class: [
30
30
  `${clsPrefix}-base-close`,
31
31
  absolute && `${clsPrefix}-base-close--absolute`,
32
32
  disabled && `${clsPrefix}-base-close--disabled`,
@@ -3,9 +3,8 @@ import { on, off } from 'evtd';
3
3
  import { VResizeObserver } from 'vueuc';
4
4
  import { useIsIos } from 'vooks';
5
5
  import { useConfig, useTheme, useThemeClass } from '../../../_mixins';
6
- import { useReactivated } from '../../../_utils';
6
+ import { useReactivated, Wrapper } from '../../../_utils';
7
7
  import { scrollbarLight } from '../styles';
8
- import { Wrapper } from './Wrapper';
9
8
  import style from './styles/index.cssr';
10
9
  const scrollbarProps = Object.assign(Object.assign({}, useTheme.props), { size: {
11
10
  type: Number,
@@ -4,7 +4,7 @@ import { VOverflow } from 'vueuc';
4
4
  import { NPopover } from '../../../popover';
5
5
  import { NTag } from '../../../tag';
6
6
  import { useThemeClass, useTheme } from '../../../_mixins';
7
- import { createKey, getTitleAttribute, render, useOnResize } from '../../../_utils';
7
+ import { createKey, getTitleAttribute, render, useOnResize, Wrapper } from '../../../_utils';
8
8
  import Suffix from '../../suffix';
9
9
  import { internalSelectionLight } from '../styles';
10
10
  import style from './styles/index.cssr';
@@ -426,8 +426,10 @@ export default defineComponent({
426
426
  const maxTagCountResponsive = maxTagCount === 'responsive';
427
427
  const maxTagCountNumeric = typeof maxTagCount === 'number';
428
428
  const useMaxTagCount = maxTagCountResponsive || maxTagCountNumeric;
429
- const suffix = (h(Suffix, { clsPrefix: clsPrefix, loading: this.loading, showArrow: this.showArrow, showClear: this.mergedClearable && this.selected, onClear: this.handleClear }, {
430
- default: () => { var _a, _b; return (_b = (_a = this.$slots).arrow) === null || _b === void 0 ? void 0 : _b.call(_a); }
429
+ const suffix = (h(Wrapper, null, {
430
+ default: () => (h(Suffix, { clsPrefix: clsPrefix, loading: this.loading, showArrow: this.showArrow, showClear: this.mergedClearable && this.selected, onClear: this.handleClear }, {
431
+ default: () => { var _a, _b; return (_b = (_a = this.$slots).arrow) === null || _b === void 0 ? void 0 : _b.call(_a); }
432
+ }))
431
433
  }));
432
434
  let body;
433
435
  if (multiple) {
@@ -0,0 +1 @@
1
+ export { isDocument } from './is-document';
@@ -0,0 +1 @@
1
+ export { isDocument } from './is-document';
@@ -0,0 +1 @@
1
+ export declare function isDocument(node: Node): node is Document;
@@ -0,0 +1,3 @@
1
+ export function isDocument(node) {
2
+ return node.nodeName === '#document';
3
+ }
@@ -1,4 +1,4 @@
1
- export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, getFirstSlotVNode, createDataKey, createRefSetter, createInjectionKey, resolveSlot, resolveSlotWithProps, resolveWrappedSlot, isSlotEmpty, mergeEventHandlers } from './vue';
1
+ export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, getFirstSlotVNode, createDataKey, createRefSetter, createInjectionKey, resolveSlot, resolveSlotWithProps, resolveWrappedSlot, isSlotEmpty, mergeEventHandlers, isNodeVShowFalse, Wrapper } from './vue';
2
2
  export type { MaybeArray } from './vue';
3
3
  export { warn, warnOnce, throwError, smallerSize, largerSize, getTitleAttribute } from './naive';
4
4
  export type { ExtractPublicPropTypes, ExtractInternalPropTypes, Mutable } from './naive';
@@ -8,3 +8,4 @@ export { isJsdom } from './env/is-jsdom';
8
8
  export { isBrowser } from './env/is-browser';
9
9
  export { eventEffectNotPerformed, markEventEffectPerformed } from './event';
10
10
  export * from './composable';
11
+ export * from './dom';
@@ -1,4 +1,4 @@
1
- export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, getFirstSlotVNode, createDataKey, createRefSetter, createInjectionKey, resolveSlot, resolveSlotWithProps, resolveWrappedSlot, isSlotEmpty, mergeEventHandlers } from './vue';
1
+ export { call, keep, omit, flatten, getSlot, getVNodeChildren, keysOf, render, getFirstSlotVNode, createDataKey, createRefSetter, createInjectionKey, resolveSlot, resolveSlotWithProps, resolveWrappedSlot, isSlotEmpty, mergeEventHandlers, isNodeVShowFalse, Wrapper } from './vue';
2
2
  export { warn, warnOnce, throwError, smallerSize, largerSize, getTitleAttribute } from './naive';
3
3
  export { formatLength, color2Class } from './css';
4
4
  export { createKey } from './cssr';
@@ -6,3 +6,4 @@ export { isJsdom } from './env/is-jsdom';
6
6
  export { isBrowser } from './env/is-browser';
7
7
  export { eventEffectNotPerformed, markEventEffectPerformed } from './event';
8
8
  export * from './composable';
9
+ export * from './dom';
@@ -13,3 +13,5 @@ export { createInjectionKey } from './create-injection-key';
13
13
  export { resolveSlot, resolveWrappedSlot, resolveSlotWithProps, isSlotEmpty } from './resolve-slot';
14
14
  export type { MaybeArray } from './call';
15
15
  export { mergeEventHandlers } from './merge-handlers';
16
+ export { isNodeVShowFalse } from './is-node-v-show-false';
17
+ export { Wrapper } from './wrapper';
@@ -12,3 +12,5 @@ export { createRefSetter } from './create-ref-setter';
12
12
  export { createInjectionKey } from './create-injection-key';
13
13
  export { resolveSlot, resolveWrappedSlot, resolveSlotWithProps, isSlotEmpty } from './resolve-slot';
14
14
  export { mergeEventHandlers } from './merge-handlers';
15
+ export { isNodeVShowFalse } from './is-node-v-show-false';
16
+ export { Wrapper } from './wrapper';
@@ -0,0 +1,2 @@
1
+ import { VNode } from 'vue';
2
+ export declare function isNodeVShowFalse(vNode: VNode): boolean;
@@ -0,0 +1,6 @@
1
+ import { vShow } from 'vue';
2
+ export function isNodeVShowFalse(vNode) {
3
+ var _a;
4
+ const showDir = (_a = vNode.dirs) === null || _a === void 0 ? void 0 : _a.find(({ dir }) => dir === vShow);
5
+ return !!(showDir && showDir.value === false);
6
+ }
@@ -159,7 +159,7 @@ declare const _default: import("vue").DefineComponent<{
159
159
  mergedClsPrefix: import("vue").ComputedRef<string>;
160
160
  handleAfterEnter: () => void;
161
161
  handleScroll: () => void;
162
- handleClick: (e: MouseEvent) => void;
162
+ handleClick: () => void;
163
163
  cssVars: import("vue").ComputedRef<{
164
164
  '--n-bezier': string;
165
165
  '--n-border-radius': string;
@@ -4,7 +4,7 @@ import { useIsMounted, useMergedState } from 'vooks';
4
4
  import { getScrollParent, unwrapElement } from 'seemly';
5
5
  import { useConfig, useTheme, useThemeClass } from '../../_mixins';
6
6
  import { NBaseIcon } from '../../_internal';
7
- import { lockHtmlScrollRightCompensationRef, formatLength, resolveSlot, warn, warnOnce } from '../../_utils';
7
+ import { lockHtmlScrollRightCompensationRef, formatLength, resolveSlot, isDocument, warn, warnOnce } from '../../_utils';
8
8
  import { backTopLight } from '../styles';
9
9
  import BackTopIcon from './BackTopIcon';
10
10
  import style from './styles/index.cssr';
@@ -50,15 +50,20 @@ export default defineComponent({
50
50
  }
51
51
  const { mergedClsPrefixRef, inlineThemeDisabled } = useConfig(props);
52
52
  const scrollTopRef = ref(null);
53
- const uncontrolledShowRef = computed(() => {
54
- if (scrollTopRef.value === null)
55
- return false;
56
- return scrollTopRef.value >= props.visibilityHeight;
53
+ const uncontrolledShowRef = ref(false);
54
+ watchEffect(() => {
55
+ const { value: scrollTop } = scrollTopRef;
56
+ if (scrollTop === null) {
57
+ uncontrolledShowRef.value = false;
58
+ return;
59
+ }
60
+ uncontrolledShowRef.value = scrollTop >= props.visibilityHeight;
57
61
  });
58
62
  const DomInfoReadyRef = ref(false);
59
63
  watch(uncontrolledShowRef, (value) => {
64
+ var _a;
60
65
  if (DomInfoReadyRef.value) {
61
- props['onUpdate:show'](value);
66
+ (_a = props['onUpdate:show']) === null || _a === void 0 ? void 0 : _a.call(props, value);
62
67
  }
63
68
  });
64
69
  const controlledShowRef = toRef(props, 'show');
@@ -98,39 +103,27 @@ export default defineComponent({
98
103
  }
99
104
  return;
100
105
  }
101
- scrollElement = scrollEl;
106
+ scrollElement =
107
+ scrollEl === document.documentElement ? document : scrollEl;
102
108
  const { to } = props;
103
109
  const target = typeof to === 'string' ? document.querySelector(to) : to;
104
110
  if (process.env.NODE_ENV !== 'production' && !target) {
105
111
  warn('back-top', 'Target is not found.');
106
112
  }
107
- if (scrollEl) {
108
- scrollEl.addEventListener('scroll', handleScroll);
109
- handleScroll();
110
- }
113
+ scrollElement.addEventListener('scroll', handleScroll);
114
+ handleScroll();
111
115
  }
112
- function handleClick(e) {
113
- if (scrollElement.nodeName === '#document') {
114
- ;
115
- scrollElement.documentElement.scrollTo({
116
- top: 0,
117
- behavior: 'smooth'
118
- });
119
- }
120
- else {
121
- scrollElement.scrollTo({
122
- top: 0,
123
- behavior: 'smooth'
124
- });
125
- }
116
+ function handleClick() {
117
+ ;
118
+ (isDocument(scrollElement)
119
+ ? document.documentElement
120
+ : scrollElement).scrollTo({
121
+ top: 0,
122
+ behavior: 'smooth'
123
+ });
126
124
  }
127
125
  function handleScroll() {
128
- if (scrollElement.nodeName === '#document') {
129
- scrollTopRef.value = scrollElement.documentElement.scrollTop;
130
- }
131
- else {
132
- scrollTopRef.value = scrollElement.scrollTop;
133
- }
126
+ scrollTopRef.value = (isDocument(scrollElement) ? document.documentElement : scrollElement).scrollTop;
134
127
  if (!DomInfoReadyRef.value) {
135
128
  void nextTick(() => {
136
129
  DomInfoReadyRef.value = true;
@@ -149,6 +149,8 @@ export default c([cB('button', `
149
149
  top: 50%;
150
150
  transform: translateY(-50%);
151
151
  display: flex;
152
+ align-items: center;
153
+ justify-content: center;
152
154
  `, [iconSwitchTransition({
153
155
  top: '50%',
154
156
  originalTransform: 'translateY(-50%)'
@@ -156,6 +158,7 @@ export default c([cB('button', `
156
158
  display: flex;
157
159
  align-items: center;
158
160
  flex-wrap: nowrap;
161
+ min-width: 0;
159
162
  `, [c('~', [cE('icon', {
160
163
  margin: 'var(--n-icon-margin)',
161
164
  marginRight: 0
@@ -32,7 +32,7 @@ function normalizeHexaUnit(value) {
32
32
  // 0 - 100%
33
33
  function normalizeAlphaUnit(value) {
34
34
  if (/^\d{1,3}\.?\d*%$/.test(value.trim())) {
35
- return Math.max(0, Math.min(parseInt(value), 100));
35
+ return Math.max(0, Math.min(parseInt(value) / 100, 100));
36
36
  }
37
37
  return false;
38
38
  }
@@ -1,7 +1,7 @@
1
- import { PropType, ExtractPropTypes } from 'vue';
1
+ import { PropType, ExtractPropTypes, VNodeChild } from 'vue';
2
2
  import type { PaginationProps } from '../../pagination';
3
3
  import type { MaybeArray, ExtractPublicPropTypes } from '../../_utils';
4
- import type { CreateRowClassName, CreateRowKey, OnUpdateCheckedRowKeys, OnUpdateSorter, RowKey, TableColumns, RowData, OnUpdateFilters, OnUpdateExpandedRowKeys, CreateSummary, CreateRowProps, DataTableOnLoad } from './interface';
4
+ import type { CreateRowClassName, CreateRowKey, OnUpdateCheckedRowKeys, OnUpdateSorter, RowKey, TableColumns, RowData, OnUpdateFilters, OnUpdateExpandedRowKeys, CreateSummary, CreateRowProps, DataTableOnLoad, TableBaseColumn } from './interface';
5
5
  export declare const dataTableProps: {
6
6
  readonly pagination: {
7
7
  readonly type: PropType<false | PaginationProps>;
@@ -80,6 +80,7 @@ export declare const dataTableProps: {
80
80
  readonly type: PropType<"first" | "current">;
81
81
  readonly default: "current";
82
82
  };
83
+ readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn) => VNodeChild>;
83
84
  readonly onLoad: PropType<DataTableOnLoad>;
84
85
  readonly 'onUpdate:page': PropType<MaybeArray<(page: number) => void> | undefined>;
85
86
  readonly onUpdatePage: PropType<MaybeArray<(page: number) => void> | undefined>;
@@ -2295,6 +2296,7 @@ declare const _default: import("vue").DefineComponent<{
2295
2296
  readonly type: PropType<"first" | "current">;
2296
2297
  readonly default: "current";
2297
2298
  };
2299
+ readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn<import("./interface").InternalRowData>) => VNodeChild>;
2298
2300
  readonly onLoad: PropType<DataTableOnLoad>;
2299
2301
  readonly 'onUpdate:page': PropType<MaybeArray<(page: number) => void> | undefined>;
2300
2302
  readonly onUpdatePage: PropType<MaybeArray<(page: number) => void> | undefined>;
@@ -5702,6 +5704,7 @@ declare const _default: import("vue").DefineComponent<{
5702
5704
  readonly type: PropType<"first" | "current">;
5703
5705
  readonly default: "current";
5704
5706
  };
5707
+ readonly renderCell: PropType<(value: any, rowData: object, column: TableBaseColumn<import("./interface").InternalRowData>) => VNodeChild>;
5705
5708
  readonly onLoad: PropType<DataTableOnLoad>;
5706
5709
  readonly 'onUpdate:page': PropType<MaybeArray<(page: number) => void> | undefined>;
5707
5710
  readonly onUpdatePage: PropType<MaybeArray<(page: number) => void> | undefined>;
@@ -60,7 +60,7 @@ export const dataTableProps = Object.assign(Object.assign({}, useTheme.props), {
60
60
  }, flexHeight: Boolean, paginationBehaviorOnFilter: {
61
61
  type: String,
62
62
  default: 'current'
63
- }, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
63
+ }, renderCell: Function, onLoad: Function, 'onUpdate:page': [Function, Array], onUpdatePage: [Function, Array], 'onUpdate:pageSize': [Function, Array], onUpdatePageSize: [Function, Array], 'onUpdate:sorter': [Function, Array], onUpdateSorter: [Function, Array], 'onUpdate:filters': [Function, Array], onUpdateFilters: [Function, Array], 'onUpdate:checkedRowKeys': [Function, Array], onUpdateCheckedRowKeys: [Function, Array], 'onUpdate:expandedRowKeys': [Function, Array], onUpdateExpandedRowKeys: [Function, Array], onScroll: Function,
64
64
  // deprecated
65
65
  onPageChange: [Function, Array], onPageSizeChange: [Function, Array], onSorterChange: [Function, Array], onFiltersChange: [Function, Array], onCheckedRowKeysChange: [Function, Array] });
66
66
  export default defineComponent({
@@ -204,7 +204,8 @@ export default defineComponent({
204
204
  doUpdateExpandedRowKeys,
205
205
  handleTableHeaderScroll,
206
206
  handleTableBodyScroll,
207
- setHeaderScrollLeft
207
+ setHeaderScrollLeft,
208
+ renderCell: toRef(props, 'renderCell')
208
209
  });
209
210
  const exposedMethods = {
210
211
  filter,
@@ -1213,6 +1213,7 @@ declare const _default: import("vue").DefineComponent<{
1213
1213
  key: RowKey;
1214
1214
  }, checked: boolean, shiftKey: boolean) => void;
1215
1215
  handleUpdateExpanded: (key: RowKey, tmNode: TmNode | null) => void;
1216
+ renderCell: import("vue").Ref<((value: any, rowData: object, column: import("../interface").TableBaseColumn<import("../interface").InternalRowData>) => import("vue").VNodeChild) | undefined>;
1216
1217
  }, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
1217
1218
  onResize: PropType<(e: ResizeObserverEntry) => void>;
1218
1219
  showHeader: BooleanConstructor;
@@ -77,7 +77,7 @@ export default defineComponent({
77
77
  bodyStyle: Object
78
78
  },
79
79
  setup(props) {
80
- const { slots: dataTableSlots, mergedExpandedRowKeysRef, mergedClsPrefixRef, mergedThemeRef, scrollXRef, colsRef, paginatedDataRef, rawPaginatedDataRef, fixedColumnLeftMapRef, fixedColumnRightMapRef, mergedCurrentPageRef, rowClassNameRef, leftActiveFixedColKeyRef, leftActiveFixedChildrenColKeysRef, rightActiveFixedColKeyRef, rightActiveFixedChildrenColKeysRef, renderExpandRef, hoverKeyRef, summaryRef, mergedSortStateRef, virtualScrollRef, componentId, scrollPartRef, mergedTableLayoutRef, childTriggerColIndexRef, indentRef, rowPropsRef, maxHeightRef, stripedRef, loadingRef, onLoadRef, loadingKeySetRef, setHeaderScrollLeft, doUpdateExpandedRowKeys, handleTableBodyScroll, doCheck, doUncheck
80
+ const { slots: dataTableSlots, mergedExpandedRowKeysRef, mergedClsPrefixRef, mergedThemeRef, scrollXRef, colsRef, paginatedDataRef, rawPaginatedDataRef, fixedColumnLeftMapRef, fixedColumnRightMapRef, mergedCurrentPageRef, rowClassNameRef, leftActiveFixedColKeyRef, leftActiveFixedChildrenColKeysRef, rightActiveFixedColKeyRef, rightActiveFixedChildrenColKeysRef, renderExpandRef, hoverKeyRef, summaryRef, mergedSortStateRef, virtualScrollRef, componentId, scrollPartRef, mergedTableLayoutRef, childTriggerColIndexRef, indentRef, rowPropsRef, maxHeightRef, stripedRef, loadingRef, onLoadRef, loadingKeySetRef, setHeaderScrollLeft, doUpdateExpandedRowKeys, handleTableBodyScroll, doCheck, doUncheck, renderCell
81
81
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
82
82
  } = inject(dataTableInjectionKey);
83
83
  const scrollbarInstRef = ref(null);
@@ -308,7 +308,8 @@ export default defineComponent({
308
308
  virtualListContent,
309
309
  handleTableBodyScroll,
310
310
  handleCheckboxUpdateChecked,
311
- handleUpdateExpanded }, exposedMethods);
311
+ handleUpdateExpanded,
312
+ renderCell }, exposedMethods);
312
313
  },
313
314
  render() {
314
315
  const { mergedTheme, scrollX, mergedClsPrefix, virtualScroll, maxHeight, mergedTableLayout, flexHeight, loadingKeySet, onResize, setHeaderScrollLeft } = this;
@@ -469,7 +470,7 @@ export default defineComponent({
469
470
  }
470
471
  }
471
472
  const hoverKey = isCrossRowTd ? this.hoverKey : null;
472
- const { ellipsis, cellProps } = column;
473
+ const { cellProps } = column;
473
474
  const resolvedCellProps = cellProps === null || cellProps === void 0 ? void 0 : cellProps(rowData, rowIndex);
474
475
  return (h("td", Object.assign({}, resolvedCellProps, { key: colKey, style: [
475
476
  {
@@ -493,9 +494,6 @@ export default defineComponent({
493
494
  column.align &&
494
495
  `${mergedClsPrefix}-data-table-td--${column.align}-align`,
495
496
  {
496
- [`${mergedClsPrefix}-data-table-td--ellipsis`]: ellipsis === true ||
497
- // don't add ellipsis class if tooltip exists
498
- (ellipsis && !ellipsis.tooltip),
499
497
  [`${mergedClsPrefix}-data-table-td--selection`]: column.type === 'selection',
500
498
  [`${mergedClsPrefix}-data-table-td--expand`]: column.type === 'expand',
501
499
  [`${mergedClsPrefix}-data-table-td--last-col`]: isLastCol,
@@ -511,7 +509,7 @@ export default defineComponent({
511
509
  ]
512
510
  : null,
513
511
  column.type === 'selection' ? (!isSummary ? (h(RenderSafeCheckbox, { key: currentPage, rowKey: rowKey, disabled: rowInfo.tmNode.disabled, onUpdateChecked: (checked, e) => handleCheckboxUpdateChecked(rowInfo.tmNode, checked, e.shiftKey) })) : null) : column.type === 'expand' ? (!isSummary ? (!column.expandable ||
514
- ((_e = column.expandable) === null || _e === void 0 ? void 0 : _e.call(column, rowData)) ? (h(ExpandTrigger, { clsPrefix: mergedClsPrefix, expanded: expanded, onClick: () => handleUpdateExpanded(rowKey, null) })) : null) : null) : (h(Cell, { index: rowIndex, row: rowData, column: column, isSummary: isSummary, mergedTheme: mergedTheme }))));
512
+ ((_e = column.expandable) === null || _e === void 0 ? void 0 : _e.call(column, rowData)) ? (h(ExpandTrigger, { clsPrefix: mergedClsPrefix, expanded: expanded, onClick: () => handleUpdateExpanded(rowKey, null) })) : null) : null) : (h(Cell, { clsPrefix: mergedClsPrefix, index: rowIndex, row: rowData, column: column, isSummary: isSummary, mergedTheme: mergedTheme, renderCell: this.renderCell }))));
515
513
  })));
516
514
  return row;
517
515
  };
@@ -1,6 +1,10 @@
1
- import { PropType } from 'vue';
1
+ import { PropType, VNodeChild } from 'vue';
2
2
  import { TableBaseColumn, InternalRowData } from '../interface';
3
3
  declare const _default: import("vue").DefineComponent<{
4
+ clsPrefix: {
5
+ type: StringConstructor;
6
+ required: true;
7
+ };
4
8
  row: {
5
9
  type: PropType<InternalRowData>;
6
10
  required: true;
@@ -1149,7 +1153,12 @@ declare const _default: import("vue").DefineComponent<{
1149
1153
  }>;
1150
1154
  required: true;
1151
1155
  };
1156
+ renderCell: PropType<(value: any, rowData: object, column: any) => VNodeChild>;
1152
1157
  }, unknown, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, Record<string, any>, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
1158
+ clsPrefix: {
1159
+ type: StringConstructor;
1160
+ required: true;
1161
+ };
1153
1162
  row: {
1154
1163
  type: PropType<InternalRowData>;
1155
1164
  required: true;
@@ -2298,6 +2307,7 @@ declare const _default: import("vue").DefineComponent<{
2298
2307
  }>;
2299
2308
  required: true;
2300
2309
  };
2310
+ renderCell: PropType<(value: any, rowData: object, column: any) => VNodeChild>;
2301
2311
  }>>, {
2302
2312
  isSummary: boolean;
2303
2313
  }>;
@@ -4,6 +4,10 @@ import { NEllipsis } from '../../../ellipsis';
4
4
  export default defineComponent({
5
5
  name: 'DataTableCell',
6
6
  props: {
7
+ clsPrefix: {
8
+ type: String,
9
+ required: true
10
+ },
7
11
  row: {
8
12
  type: Object,
9
13
  required: true
@@ -20,11 +24,13 @@ export default defineComponent({
20
24
  mergedTheme: {
21
25
  type: Object,
22
26
  required: true
23
- }
27
+ },
28
+ renderCell: Function
24
29
  },
25
30
  render() {
26
- const { isSummary, column: { render, key, ellipsis }, row } = this;
31
+ const { isSummary, column, row, renderCell } = this;
27
32
  let cell;
33
+ const { render, key, ellipsis } = column;
28
34
  if (render && !isSummary) {
29
35
  cell = render(row, this.index);
30
36
  }
@@ -33,12 +39,19 @@ export default defineComponent({
33
39
  cell = row[key].value;
34
40
  }
35
41
  else {
36
- cell = get(row, key);
42
+ cell = renderCell
43
+ ? renderCell(get(row, key), row, column)
44
+ : get(row, key);
37
45
  }
38
46
  }
39
- if (ellipsis && typeof ellipsis === 'object') {
40
- const { mergedTheme } = this;
41
- return (h(NEllipsis, Object.assign({}, ellipsis, { theme: mergedTheme.peers.Ellipsis, themeOverrides: mergedTheme.peerOverrides.Ellipsis }), { default: () => cell }));
47
+ if (ellipsis) {
48
+ if (typeof ellipsis === 'object') {
49
+ const { mergedTheme } = this;
50
+ return (h(NEllipsis, Object.assign({}, ellipsis, { theme: mergedTheme.peers.Ellipsis, themeOverrides: mergedTheme.peerOverrides.Ellipsis }), { default: () => cell }));
51
+ }
52
+ else {
53
+ return (h("span", { class: `${this.clsPrefix}-data-table-td__ellipsis` }, cell));
54
+ }
42
55
  }
43
56
  return cell;
44
57
  }
@@ -32,7 +32,9 @@ export interface FilterOption {
32
32
  }
33
33
  export declare type TmNode = TreeNode<InternalRowData>;
34
34
  export declare type SortOrder = 'ascend' | 'descend' | false;
35
- export declare type Ellipsis = boolean | EllipsisProps;
35
+ export declare type Ellipsis = boolean | (EllipsisProps & {
36
+ style?: CSSProperties;
37
+ });
36
38
  export interface CommonColumnInfo<T = InternalRowData> {
37
39
  fixed?: 'left' | 'right';
38
40
  width?: number | string;
@@ -173,6 +175,7 @@ export interface DataTableInjection {
173
175
  handleTableBodyScroll: (e: Event) => void;
174
176
  syncScrollState: (deltaX?: number, deltaY?: number) => void;
175
177
  setHeaderScrollLeft: (scrollLeft: number) => void;
178
+ renderCell: Ref<undefined | ((value: any, rowData: object, column: TableBaseColumn) => VNodeChild)>;
176
179
  }
177
180
  export declare const dataTableInjectionKey: import("vue").InjectionKey<DataTableInjection>;
178
181
  export interface MainTableInjection {
@@ -192,7 +195,7 @@ export declare type RenderFilterMenu = (actions: {
192
195
  hide: () => void;
193
196
  }) => VNodeChild;
194
197
  export declare type OnUpdateExpandedRowKeys = (keys: RowKey[]) => void;
195
- export declare type OnUpdateCheckedRowKeys = (keys: RowKey[]) => void;
198
+ export declare type OnUpdateCheckedRowKeys = (keys: RowKey[], row: InternalRowData[]) => void;
196
199
  export declare type OnUpdateSorter = (sortState: SortState & SortState[] & null) => void;
197
200
  export declare type OnUpdateSorterImpl = (sortState: SortState | SortState[] | null) => void;
198
201
  export declare type OnUpdateFilters = (filterState: FilterState, sourceColumn: TableBaseColumn) => void;
@@ -202,7 +202,9 @@ c('&:last-child', 'flex-grow: 1;')])])])])])])]), c('>', [cB('base-loading', `
202
202
  background-color .3s var(--n-bezier),
203
203
  border-color .3s var(--n-bezier),
204
204
  color .3s var(--n-bezier);
205
- `, [cM('last-row', {
205
+ `, [cM('expand', [cB('data-table-expand-trigger', `
206
+ margin-right: 0;
207
+ `)]), cM('last-row', {
206
208
  borderBottom: '0 solid var(--n-merged-border-color)'
207
209
  }, [// make sure there is no overlap between bottom border and
208
210
  // fixed column box shadow
@@ -214,10 +216,13 @@ c('&::after', {
214
216
  background-color: var(--n-merged-th-color);
215
217
  `), cM('hover', {
216
218
  backgroundColor: 'var(--n-merged-td-color-hover)'
217
- }), cM('ellipsis', `
219
+ }), cE('ellipsis', `
220
+ display: inline-block;
218
221
  text-overflow: ellipsis;
219
222
  overflow: hidden;
220
223
  white-space: nowrap;
224
+ max-width: 100%;
225
+ vertical-align: bottom;
221
226
  `), cM('selection, expand', `
222
227
  text-align: center;
223
228
  padding: 0;
@@ -50,12 +50,20 @@ export function useCheck(props, data) {
50
50
  });
51
51
  function doUpdateCheckedRowKeys(keys) {
52
52
  const { 'onUpdate:checkedRowKeys': _onUpdateCheckedRowKeys, onUpdateCheckedRowKeys, onCheckedRowKeysChange } = props;
53
+ const rows = [];
54
+ const { value: { getNode } } = treeMateRef;
55
+ keys.forEach((key) => {
56
+ var _a;
57
+ const row = (_a = getNode(key)) === null || _a === void 0 ? void 0 : _a.rawNode;
58
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
59
+ rows.push(row);
60
+ });
53
61
  if (_onUpdateCheckedRowKeys)
54
- call(_onUpdateCheckedRowKeys, keys);
62
+ call(_onUpdateCheckedRowKeys, keys, rows);
55
63
  if (onUpdateCheckedRowKeys)
56
- call(onUpdateCheckedRowKeys, keys);
64
+ call(onUpdateCheckedRowKeys, keys, rows);
57
65
  if (onCheckedRowKeysChange)
58
- call(onCheckedRowKeysChange, keys);
66
+ call(onCheckedRowKeysChange, keys, rows);
59
67
  uncontrolledCheckedRowKeysRef.value = keys;
60
68
  }
61
69
  function doCheck(rowKey) {