naive-ui 2.37.0 → 2.37.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 (68) hide show
  1. package/dist/index.js +147 -73
  2. package/dist/index.prod.js +1 -1
  3. package/es/_internal/clear/src/Clear.mjs +0 -2
  4. package/es/auto-complete/src/AutoComplete.d.ts +4 -0
  5. package/es/auto-complete/src/AutoComplete.mjs +8 -2
  6. package/es/collapse/src/Collapse.d.ts +13 -0
  7. package/es/collapse/src/Collapse.mjs +4 -0
  8. package/es/collapse/src/CollapseItem.d.ts +1 -0
  9. package/es/collapse/src/CollapseItem.mjs +18 -6
  10. package/es/collapse/src/styles/index.cssr.mjs +2 -3
  11. package/es/data-table/src/utils.mjs +3 -2
  12. package/es/date-picker/src/interface.d.ts +21 -2
  13. package/es/date-picker/src/panel/date.d.ts +1 -1
  14. package/es/date-picker/src/panel/date.mjs +6 -1
  15. package/es/date-picker/src/panel/datetime.d.ts +1 -1
  16. package/es/date-picker/src/panel/datetime.mjs +6 -1
  17. package/es/date-picker/src/panel/month.d.ts +1 -1
  18. package/es/date-picker/src/panel/month.mjs +12 -1
  19. package/es/date-picker/src/panel/panelHeader.d.ts +2 -2
  20. package/es/date-picker/src/panel/use-calendar.d.ts +2 -2
  21. package/es/date-picker/src/panel/use-calendar.mjs +19 -3
  22. package/es/date-picker/src/panel/use-dual-calendar.mjs +3 -1
  23. package/es/date-picker/src/validation-utils.mjs +3 -1
  24. package/es/form/src/Form.mjs +20 -12
  25. package/es/form/src/FormItem.mjs +4 -2
  26. package/es/form/src/interface.d.ts +8 -2
  27. package/es/tree/src/Tree.d.ts +1 -1
  28. package/es/tree/src/interface.d.ts +1 -1
  29. package/es/tree/src/keyboard.d.ts +1 -1
  30. package/es/tree/src/keyboard.mjs +8 -8
  31. package/es/tree-select/src/TreeSelect.d.ts +1 -1
  32. package/es/tree-select/src/TreeSelect.mjs +3 -3
  33. package/es/version.d.ts +1 -1
  34. package/es/version.mjs +1 -1
  35. package/lib/_internal/clear/src/Clear.js +0 -2
  36. package/lib/auto-complete/src/AutoComplete.d.ts +4 -0
  37. package/lib/auto-complete/src/AutoComplete.js +3 -3
  38. package/lib/collapse/src/Collapse.d.ts +13 -0
  39. package/lib/collapse/src/Collapse.js +3 -0
  40. package/lib/collapse/src/CollapseItem.d.ts +1 -0
  41. package/lib/collapse/src/CollapseItem.js +16 -4
  42. package/lib/collapse/src/styles/index.cssr.js +1 -2
  43. package/lib/data-table/src/utils.js +5 -2
  44. package/lib/date-picker/src/interface.d.ts +21 -2
  45. package/lib/date-picker/src/panel/date.d.ts +1 -1
  46. package/lib/date-picker/src/panel/date.js +6 -1
  47. package/lib/date-picker/src/panel/datetime.d.ts +1 -1
  48. package/lib/date-picker/src/panel/datetime.js +6 -1
  49. package/lib/date-picker/src/panel/month.d.ts +1 -1
  50. package/lib/date-picker/src/panel/month.js +18 -1
  51. package/lib/date-picker/src/panel/panelHeader.d.ts +2 -2
  52. package/lib/date-picker/src/panel/use-calendar.d.ts +2 -2
  53. package/lib/date-picker/src/panel/use-calendar.js +22 -3
  54. package/lib/date-picker/src/panel/use-dual-calendar.js +2 -1
  55. package/lib/date-picker/src/validation-utils.js +1 -1
  56. package/lib/form/src/Form.js +20 -12
  57. package/lib/form/src/FormItem.js +2 -2
  58. package/lib/form/src/interface.d.ts +8 -2
  59. package/lib/tree/src/Tree.d.ts +1 -1
  60. package/lib/tree/src/interface.d.ts +1 -1
  61. package/lib/tree/src/keyboard.d.ts +1 -1
  62. package/lib/tree/src/keyboard.js +8 -8
  63. package/lib/tree-select/src/TreeSelect.d.ts +1 -1
  64. package/lib/tree-select/src/TreeSelect.js +3 -3
  65. package/lib/version.d.ts +1 -1
  66. package/lib/version.js +1 -1
  67. package/package.json +1 -1
  68. package/web-types.json +33 -33
@@ -1192,7 +1192,7 @@ declare const _default: import("vue").DefineComponent<{
1192
1192
  } | null>;
1193
1193
  treeInstRef: import("vue").Ref<{
1194
1194
  handleKeydown: (e: KeyboardEvent) => {
1195
- enterBehavoir: TreeOverrideNodeClickBehaviorReturn | null;
1195
+ enterBehavior: TreeOverrideNodeClickBehaviorReturn | null;
1196
1196
  };
1197
1197
  } | null>;
1198
1198
  mergedClsPrefix: import("vue").Ref<string>;
@@ -504,17 +504,17 @@ export default defineComponent({
504
504
  return treeInst.handleKeydown(e);
505
505
  }
506
506
  return {
507
- enterBehavoir: null
507
+ enterBehavior: null
508
508
  };
509
509
  }
510
510
  function handleKeydown(e) {
511
511
  if (e.key === 'Enter') {
512
512
  if (mergedShowRef.value) {
513
513
  const {
514
- enterBehavoir
514
+ enterBehavior
515
515
  } = treeHandleKeydown(e);
516
516
  if (!props.multiple) {
517
- switch (enterBehavoir) {
517
+ switch (enterBehavior) {
518
518
  case 'default':
519
519
  case 'toggleSelect':
520
520
  closeMenu();
package/es/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- declare const _default: "2.37.0";
1
+ declare const _default: "2.37.2";
2
2
  export default _default;
package/es/version.mjs CHANGED
@@ -1 +1 @@
1
- export default '2.37.0';
1
+ export default '2.37.2';
@@ -24,9 +24,7 @@ exports.default = (0, vue_1.defineComponent)({
24
24
  (0, _mixins_1.useStyle)('-base-clear', index_cssr_1.default, (0, vue_1.toRef)(props, 'clsPrefix'));
25
25
  return {
26
26
  handleMouseDown(e) {
27
- var _a;
28
27
  e.preventDefault();
29
- (_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props, e);
30
28
  }
31
29
  };
32
30
  },
@@ -41,6 +41,7 @@ export declare const autoCompleteProps: {
41
41
  readonly blurAfterSelect: BooleanConstructor;
42
42
  readonly clearAfterSelect: BooleanConstructor;
43
43
  readonly getShow: PropType<(inputValue: string) => boolean>;
44
+ readonly showEmpty: BooleanConstructor;
44
45
  readonly inputProps: PropType<InputHTMLAttributes>;
45
46
  readonly renderOption: PropType<RenderOption>;
46
47
  readonly renderLabel: PropType<RenderLabel>;
@@ -448,6 +449,7 @@ declare const _default: import("vue").DefineComponent<{
448
449
  readonly blurAfterSelect: BooleanConstructor;
449
450
  readonly clearAfterSelect: BooleanConstructor;
450
451
  readonly getShow: PropType<(inputValue: string) => boolean>;
452
+ readonly showEmpty: BooleanConstructor;
451
453
  readonly inputProps: PropType<InputHTMLAttributes>;
452
454
  readonly renderOption: PropType<RenderOption>;
453
455
  readonly renderLabel: PropType<RenderLabel>;
@@ -1157,6 +1159,7 @@ declare const _default: import("vue").DefineComponent<{
1157
1159
  readonly blurAfterSelect: BooleanConstructor;
1158
1160
  readonly clearAfterSelect: BooleanConstructor;
1159
1161
  readonly getShow: PropType<(inputValue: string) => boolean>;
1162
+ readonly showEmpty: BooleanConstructor;
1160
1163
  readonly inputProps: PropType<InputHTMLAttributes>;
1161
1164
  readonly renderOption: PropType<RenderOption>;
1162
1165
  readonly renderLabel: PropType<RenderLabel>;
@@ -1538,5 +1541,6 @@ declare const _default: import("vue").DefineComponent<{
1538
1541
  readonly defaultValue: string | null;
1539
1542
  readonly blurAfterSelect: boolean;
1540
1543
  readonly clearAfterSelect: boolean;
1544
+ readonly showEmpty: boolean;
1541
1545
  }, {}>;
1542
1546
  export default _default;
@@ -36,7 +36,7 @@ exports.autoCompleteProps = Object.assign(Object.assign({}, _mixins_1.useTheme.p
36
36
  }, placeholder: String, placement: {
37
37
  type: String,
38
38
  default: 'bottom-start'
39
- }, value: String, blurAfterSelect: Boolean, clearAfterSelect: Boolean, getShow: Function, inputProps: Object, renderOption: Function, renderLabel: Function, size: String, options: {
39
+ }, value: String, blurAfterSelect: Boolean, clearAfterSelect: Boolean, getShow: Function, showEmpty: Boolean, inputProps: Object, renderOption: Function, renderLabel: Function, size: String, options: {
40
40
  type: Array,
41
41
  default: () => []
42
42
  }, zIndex: Number, status: String, 'onUpdate:value': [Function, Array], onUpdateValue: [Function, Array], onSelect: [Function, Array], onBlur: [Function, Array], onFocus: [Function, Array],
@@ -77,7 +77,7 @@ exports.default = (0, vue_1.defineComponent)({
77
77
  const activeRef = (0, vue_1.computed)(() => {
78
78
  return (mergedShowOptionsRef.value &&
79
79
  canBeActivatedRef.value &&
80
- !!selectOptionsRef.value.length);
80
+ (props.showEmpty ? true : !!selectOptionsRef.value.length));
81
81
  });
82
82
  const treeMateRef = (0, vue_1.computed)(() => (0, treemate_1.createTreeMate)(selectOptionsRef.value, (0, utils_1.createTmOptions)('value', 'children')));
83
83
  function doUpdateValue(value) {
@@ -282,7 +282,7 @@ exports.default = (0, vue_1.defineComponent)({
282
282
  ], style: [
283
283
  menuProps === null || menuProps === void 0 ? void 0 : menuProps.style,
284
284
  this.cssVars
285
- ], treeMate: this.treeMate, multiple: false, renderLabel: this.renderLabel, renderOption: this.renderOption, size: "medium", onToggle: this.handleToggle })), [
285
+ ], treeMate: this.treeMate, multiple: false, renderLabel: this.renderLabel, renderOption: this.renderOption, size: "medium", onToggle: this.handleToggle }), { empty: () => { var _a, _b; return (_b = (_a = this.$slots).empty) === null || _b === void 0 ? void 0 : _b.call(_a); } }), [
286
286
  [
287
287
  vdirs_1.clickoutside,
288
288
  this.handleClickOutsideMenu,
@@ -19,6 +19,10 @@ export declare const collapseProps: {
19
19
  readonly type: PropType<"show" | "if">;
20
20
  readonly default: "if";
21
21
  };
22
+ readonly triggerAreas: {
23
+ readonly type: PropType<("extra" | "main" | "arrow")[]>;
24
+ readonly default: () => string[];
25
+ };
22
26
  readonly onItemHeaderClick: PropType<MaybeArray<OnItemHeaderClick>>;
23
27
  readonly 'onUpdate:expandedNames': PropType<MaybeArray<OnUpdateExpandedNames>>;
24
28
  readonly onUpdateExpandedNames: PropType<MaybeArray<OnUpdateExpandedNames>>;
@@ -94,6 +98,10 @@ declare const _default: import("vue").DefineComponent<{
94
98
  readonly type: PropType<"show" | "if">;
95
99
  readonly default: "if";
96
100
  };
101
+ readonly triggerAreas: {
102
+ readonly type: PropType<("extra" | "main" | "arrow")[]>;
103
+ readonly default: () => string[];
104
+ };
97
105
  readonly onItemHeaderClick: PropType<MaybeArray<OnItemHeaderClick>>;
98
106
  readonly 'onUpdate:expandedNames': PropType<MaybeArray<OnUpdateExpandedNames>>;
99
107
  readonly onUpdateExpandedNames: PropType<MaybeArray<OnUpdateExpandedNames>>;
@@ -302,6 +310,10 @@ declare const _default: import("vue").DefineComponent<{
302
310
  readonly type: PropType<"show" | "if">;
303
311
  readonly default: "if";
304
312
  };
313
+ readonly triggerAreas: {
314
+ readonly type: PropType<("extra" | "main" | "arrow")[]>;
315
+ readonly default: () => string[];
316
+ };
305
317
  readonly onItemHeaderClick: PropType<MaybeArray<OnItemHeaderClick>>;
306
318
  readonly 'onUpdate:expandedNames': PropType<MaybeArray<OnUpdateExpandedNames>>;
307
319
  readonly onUpdateExpandedNames: PropType<MaybeArray<OnUpdateExpandedNames>>;
@@ -354,6 +366,7 @@ declare const _default: import("vue").DefineComponent<{
354
366
  readonly defaultExpandedNames: string | number | (string | number)[] | null;
355
367
  readonly arrowPlacement: "left" | "right";
356
368
  readonly accordion: boolean;
369
+ readonly triggerAreas: ("extra" | "main" | "arrow")[];
357
370
  readonly onExpandedNamesChange: MaybeArray<OnUpdateExpandedNames> | undefined;
358
371
  }, {}>;
359
372
  export default _default;
@@ -23,6 +23,9 @@ exports.collapseProps = Object.assign(Object.assign({}, _mixins_1.useTheme.props
23
23
  }, displayDirective: {
24
24
  type: String,
25
25
  default: 'if'
26
+ }, triggerAreas: {
27
+ type: Array,
28
+ default: () => ['main', 'extra', 'arrow']
26
29
  }, onItemHeaderClick: [Function, Array], 'onUpdate:expandedNames': [Function, Array], onUpdateExpandedNames: [Function, Array],
27
30
  // deprecated
28
31
  onExpandedNamesChange: {
@@ -20,6 +20,7 @@ declare const _default: import("vue").DefineComponent<{
20
20
  randomName: string;
21
21
  mergedClsPrefix: import("vue").Ref<string>;
22
22
  collapsed: import("vue").ComputedRef<boolean>;
23
+ triggerAreas: import("vue").Ref<("extra" | "main" | "arrow")[]>;
23
24
  mergedDisplayDirective: import("vue").ComputedRef<"show" | "if">;
24
25
  arrowPlacement: import("vue").ComputedRef<"left" | "right">;
25
26
  handleClick(e: MouseEvent): void;
@@ -54,6 +54,7 @@ exports.default = (0, vue_1.defineComponent)({
54
54
  randomName,
55
55
  mergedClsPrefix: mergedClsPrefixRef,
56
56
  collapsed: collapsedRef,
57
+ triggerAreas: (0, vue_1.toRef)(collapseProps, 'triggerAreas'),
57
58
  mergedDisplayDirective: (0, vue_1.computed)(() => {
58
59
  const { displayDirective } = props;
59
60
  if (displayDirective) {
@@ -67,6 +68,14 @@ exports.default = (0, vue_1.defineComponent)({
67
68
  return collapseProps.arrowPlacement;
68
69
  }),
69
70
  handleClick(e) {
71
+ let happensInArea = 'main';
72
+ if ((0, seemly_1.happensIn)(e, 'arrow'))
73
+ happensInArea = 'arrow';
74
+ if ((0, seemly_1.happensIn)(e, 'extra'))
75
+ happensInArea = 'extra';
76
+ if (!collapseProps.triggerAreas.includes(happensInArea)) {
77
+ return;
78
+ }
70
79
  if (NCollapse && !props.disabled) {
71
80
  NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);
72
81
  }
@@ -74,7 +83,7 @@ exports.default = (0, vue_1.defineComponent)({
74
83
  };
75
84
  },
76
85
  render() {
77
- const { collapseSlots, $slots, arrowPlacement, collapsed, mergedDisplayDirective, mergedClsPrefix, disabled } = this;
86
+ const { collapseSlots, $slots, arrowPlacement, collapsed, mergedDisplayDirective, mergedClsPrefix, disabled, triggerAreas } = this;
78
87
  const headerNode = (0, _utils_1.resolveSlotWithProps)($slots.header, { collapsed }, () => [this.title]);
79
88
  const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];
80
89
  const arrowSlot = $slots.arrow || collapseSlots.arrow;
@@ -82,7 +91,10 @@ exports.default = (0, vue_1.defineComponent)({
82
91
  `${mergedClsPrefix}-collapse-item`,
83
92
  `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`,
84
93
  disabled && `${mergedClsPrefix}-collapse-item--disabled`,
85
- !collapsed && `${mergedClsPrefix}-collapse-item--active`
94
+ !collapsed && `${mergedClsPrefix}-collapse-item--active`,
95
+ triggerAreas.map((area) => {
96
+ return `${mergedClsPrefix}-collapse-item--trigger-area-${area}`;
97
+ })
86
98
  ] },
87
99
  (0, vue_1.h)("div", { class: [
88
100
  `${mergedClsPrefix}-collapse-item__header`,
@@ -90,7 +102,7 @@ exports.default = (0, vue_1.defineComponent)({
90
102
  ] },
91
103
  (0, vue_1.h)("div", { class: `${mergedClsPrefix}-collapse-item__header-main`, onClick: this.handleClick },
92
104
  arrowPlacement === 'right' && headerNode,
93
- (0, vue_1.h)("div", { class: `${mergedClsPrefix}-collapse-item-arrow`, key: this.rtlEnabled ? 0 : 1 }, (0, _utils_1.resolveSlotWithProps)(arrowSlot, { collapsed }, () => {
105
+ (0, vue_1.h)("div", { class: `${mergedClsPrefix}-collapse-item-arrow`, key: this.rtlEnabled ? 0 : 1, "data-arrow": true }, (0, _utils_1.resolveSlotWithProps)(arrowSlot, { collapsed }, () => {
94
106
  var _a;
95
107
  return [
96
108
  (0, vue_1.h)(_internal_1.NBaseIcon, { clsPrefix: mergedClsPrefix }, {
@@ -99,7 +111,7 @@ exports.default = (0, vue_1.defineComponent)({
99
111
  ];
100
112
  })),
101
113
  arrowPlacement === 'left' && headerNode),
102
- (0, _utils_1.resolveWrappedSlotWithProps)(headerExtraSlot, { collapsed }, (children) => ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-collapse-item__header-extra`, onClick: this.handleClick }, children)))),
114
+ (0, _utils_1.resolveWrappedSlotWithProps)(headerExtraSlot, { collapsed }, (children) => ((0, vue_1.h)("div", { class: `${mergedClsPrefix}-collapse-item__header-extra`, onClick: this.handleClick, "data-extra": true }, children)))),
103
115
  (0, vue_1.h)(CollapseItemContent_1.default, { clsPrefix: mergedClsPrefix, displayDirective: mergedDisplayDirective, show: !collapsed }, $slots)));
104
116
  }
105
117
  });
@@ -31,7 +31,7 @@ exports.default = (0, cssr_1.cB)('collapse', 'width: 100%;', [(0, cssr_1.cB)('co
31
31
  color: var(--n-arrow-color-disabled);
32
32
  `)])]), (0, cssr_1.cB)('collapse-item', 'margin-left: 32px;'), (0, cssr_1.c)('&:first-child', 'margin-top: 0;'), (0, cssr_1.c)('&:first-child >', [(0, cssr_1.cE)('header', 'padding-top: 0;')]), (0, cssr_1.cM)('left-arrow-placement', [(0, cssr_1.cE)('header', [(0, cssr_1.cB)('collapse-item-arrow', 'margin-right: 4px;')])]), (0, cssr_1.cM)('right-arrow-placement', [(0, cssr_1.cE)('header', [(0, cssr_1.cB)('collapse-item-arrow', 'margin-left: 4px;')])]), (0, cssr_1.cE)('content-wrapper', [(0, cssr_1.cE)('content-inner', 'padding-top: 16px;'), (0, fade_in_height_expand_cssr_1.fadeInHeightExpandTransition)({
33
33
  duration: '0.15s'
34
- })]), (0, cssr_1.cM)('active', [(0, cssr_1.cE)('header', [(0, cssr_1.cM)('active', [(0, cssr_1.cB)('collapse-item-arrow', 'transform: rotate(90deg);')])])]), (0, cssr_1.c)('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), (0, cssr_1.cE)('header', `
34
+ })]), (0, cssr_1.cM)('active', [(0, cssr_1.cE)('header', [(0, cssr_1.cM)('active', [(0, cssr_1.cB)('collapse-item-arrow', 'transform: rotate(90deg);')])])]), (0, cssr_1.c)('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), (0, cssr_1.cNotM)('disabled', [(0, cssr_1.cM)('trigger-area-main', [(0, cssr_1.cE)('header', [(0, cssr_1.cE)('header-main', 'cursor: pointer;'), (0, cssr_1.cB)('collapse-item-arrow', 'cursor: default;')])]), (0, cssr_1.cM)('trigger-area-arrow', [(0, cssr_1.cE)('header', [(0, cssr_1.cB)('collapse-item-arrow', 'cursor: pointer;')])]), (0, cssr_1.cM)('trigger-area-extra', [(0, cssr_1.cE)('header', [(0, cssr_1.cE)('header-extra', 'cursor: pointer;')])])]), (0, cssr_1.cE)('header', `
35
35
  font-size: var(--n-title-font-size);
36
36
  display: flex;
37
37
  flex-wrap: nowrap;
@@ -48,7 +48,6 @@ exports.default = (0, cssr_1.cB)('collapse', 'width: 100%;', [(0, cssr_1.cB)('co
48
48
  transition: color .3s var(--n-bezier);
49
49
  flex: 1;
50
50
  color: var(--n-title-text-color);
51
- cursor: pointer;
52
51
  `), (0, cssr_1.cE)('header-extra', `
53
52
  display: flex;
54
53
  align-items: center;
@@ -159,9 +159,12 @@ function formatCsvCell(value) {
159
159
  }
160
160
  }
161
161
  function generateCsv(columns, data) {
162
- const header = columns.map((col) => col.title).join(',');
162
+ const exportableColumns = columns.filter((column) => column.type !== 'expand' && column.type !== 'selection');
163
+ const header = exportableColumns.map((col) => col.title).join(',');
163
164
  const rows = data.map((row) => {
164
- return columns.map((col) => formatCsvCell(row[col.key])).join(',');
165
+ return exportableColumns
166
+ .map((col) => formatCsvCell(row[col.key]))
167
+ .join(',');
165
168
  });
166
169
  return [header, ...rows].join('\n');
167
170
  }
@@ -71,8 +71,27 @@ export type DatePickerInjection = {
71
71
  } & ReturnType<typeof uniCalendarValidation> & ReturnType<typeof dualCalendarValidation>;
72
72
  export declare const datePickerInjectionKey: import("vue").InjectionKey<DatePickerInjection>;
73
73
  export type IsDateDisabled = IsSingleDateDisabled | IsRangeDateDisabled;
74
- export type IsSingleDateDisabled = (date: number) => boolean;
75
- export type IsRangeDateDisabled = (date: number, position: 'start' | 'end', value: [number, number] | null) => boolean;
74
+ export type IsSingleDateDisabledDetail = {
75
+ type: 'date';
76
+ year: number;
77
+ month: number;
78
+ date: number;
79
+ } | {
80
+ type: 'month';
81
+ year: number;
82
+ month: number;
83
+ } | {
84
+ type: 'year';
85
+ year: number;
86
+ } | {
87
+ type: 'quarter';
88
+ year: number;
89
+ quarter: number;
90
+ } | {
91
+ type: 'input';
92
+ };
93
+ export type IsSingleDateDisabled = (timestamp: number, detail: IsSingleDateDisabledDetail) => boolean;
94
+ export type IsRangeDateDisabled = (timestamp: number, position: 'start' | 'end', value: [number, number] | null) => boolean;
76
95
  export interface TimeValidator {
77
96
  isHourDisabled?: IsHourDisabled;
78
97
  isMinuteDisabled?: IsMinuteDisabled;
@@ -1170,7 +1170,7 @@ declare const _default: import("vue").DefineComponent<{
1170
1170
  calendarYear: import("vue").ComputedRef<string>;
1171
1171
  calendarMonth: import("vue").ComputedRef<string>;
1172
1172
  weekdays: import("vue").ComputedRef<string[]>;
1173
- mergedIsDateDisabled: (ts: number) => boolean;
1173
+ mergedIsDateDisabled: (ts: number, detail: import("../interface").IsSingleDateDisabledDetail) => boolean;
1174
1174
  nextYear: () => void;
1175
1175
  prevYear: () => void;
1176
1176
  nextMonth: () => void;
@@ -57,7 +57,12 @@ exports.default = (0, vue_1.defineComponent)({
57
57
  [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
58
58
  [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
59
59
  [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
60
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts),
60
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts, {
61
+ type: 'date',
62
+ year: dateItem.dateObject.year,
63
+ month: dateItem.dateObject.month,
64
+ date: dateItem.dateObject.date
65
+ }),
61
66
  [`${mergedClsPrefix}-date-panel-date--week-hovered`]: this.isWeekHovered(dateItem),
62
67
  [`${mergedClsPrefix}-date-panel-date--week-selected`]: dateItem.inSelectedWeek
63
68
  }
@@ -1147,7 +1147,7 @@ declare const _default: import("vue").DefineComponent<{
1147
1147
  calendarYear: import("vue").ComputedRef<string>;
1148
1148
  calendarMonth: import("vue").ComputedRef<string>;
1149
1149
  weekdays: import("vue").ComputedRef<string[]>;
1150
- mergedIsDateDisabled: (ts: number) => boolean;
1150
+ mergedIsDateDisabled: (ts: number, detail: import("../interface").IsSingleDateDisabledDetail) => boolean;
1151
1151
  nextYear: () => void;
1152
1152
  prevYear: () => void;
1153
1153
  nextMonth: () => void;
@@ -51,7 +51,12 @@ exports.default = (0, vue_1.defineComponent)({
51
51
  [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
52
52
  [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
53
53
  [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
54
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
54
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts, {
55
+ type: 'date',
56
+ year: dateItem.dateObject.year,
57
+ month: dateItem.dateObject.month,
58
+ date: dateItem.dateObject.date
59
+ })
55
60
  }
56
61
  ], onClick: () => {
57
62
  this.handleDateClick(dateItem);
@@ -1155,7 +1155,7 @@ declare const _default: import("vue").DefineComponent<{
1155
1155
  calendarYear: import("vue").ComputedRef<string>;
1156
1156
  calendarMonth: import("vue").ComputedRef<string>;
1157
1157
  weekdays: import("vue").ComputedRef<string[]>;
1158
- mergedIsDateDisabled: (ts: number) => boolean;
1158
+ mergedIsDateDisabled: (ts: number, detail: import("../interface").IsSingleDateDisabledDetail) => boolean;
1159
1159
  nextYear: () => void;
1160
1160
  prevYear: () => void;
1161
1161
  nextMonth: () => void;
@@ -45,7 +45,24 @@ exports.default = (0, vue_1.defineComponent)({
45
45
  item.selected &&
46
46
  `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--selected`,
47
47
  !useAsQuickJump &&
48
- mergedIsDateDisabled(item.ts) &&
48
+ mergedIsDateDisabled(item.ts, item.type === 'year'
49
+ ? {
50
+ type: 'year',
51
+ year: item.dateObject.year
52
+ }
53
+ : item.type === 'month'
54
+ ? {
55
+ type: 'month',
56
+ year: item.dateObject.year,
57
+ month: item.dateObject.month
58
+ }
59
+ : item.type === 'quarter'
60
+ ? {
61
+ type: 'month',
62
+ year: item.dateObject.year,
63
+ month: item.dateObject.quarter
64
+ }
65
+ : null) &&
49
66
  `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--disabled`
50
67
  ], onClick: () => {
51
68
  useAsQuickJump
@@ -1175,7 +1175,7 @@ declare const _default: import("vue").DefineComponent<{
1175
1175
  calendarYear: import("vue").ComputedRef<string>;
1176
1176
  calendarMonth: import("vue").ComputedRef<string>;
1177
1177
  weekdays: import("vue").ComputedRef<string[]>;
1178
- mergedIsDateDisabled: (ts: number) => boolean;
1178
+ mergedIsDateDisabled: (ts: number, detail: import("../interface").IsSingleDateDisabledDetail) => boolean;
1179
1179
  nextYear: () => void;
1180
1180
  prevYear: () => void;
1181
1181
  nextMonth: () => void;
@@ -2385,7 +2385,7 @@ declare const _default: import("vue").DefineComponent<{
2385
2385
  calendarYear: import("vue").ComputedRef<string>;
2386
2386
  calendarMonth: import("vue").ComputedRef<string>;
2387
2387
  weekdays: import("vue").ComputedRef<string[]>;
2388
- mergedIsDateDisabled: (ts: number) => boolean;
2388
+ mergedIsDateDisabled: (ts: number, detail: import("../interface").IsSingleDateDisabledDetail) => boolean;
2389
2389
  nextYear: () => void;
2390
2390
  prevYear: () => void;
2391
2391
  nextMonth: () => void;
@@ -1,7 +1,7 @@
1
1
  import { type ExtractPropTypes, type PropType } from 'vue';
2
2
  import type { VirtualListInst } from 'vueuc';
3
3
  import type { ScrollbarInst } from '../../../_internal';
4
- import type { Shortcuts } from '../interface';
4
+ import type { IsSingleDateDisabledDetail, Shortcuts } from '../interface';
5
5
  import type { DateItem, MonthItem, YearItem, QuarterItem } from '../utils';
6
6
  declare const useCalendarProps: {
7
7
  readonly actions: {
@@ -1147,7 +1147,7 @@ declare function useCalendar(props: ExtractPropTypes<typeof useCalendarProps>, t
1147
1147
  calendarYear: import("vue").ComputedRef<string>;
1148
1148
  calendarMonth: import("vue").ComputedRef<string>;
1149
1149
  weekdays: import("vue").ComputedRef<string[]>;
1150
- mergedIsDateDisabled: (ts: number) => boolean;
1150
+ mergedIsDateDisabled: (ts: number, detail: IsSingleDateDisabledDetail) => boolean;
1151
1151
  nextYear: () => void;
1152
1152
  prevYear: () => void;
1153
1153
  nextMonth: () => void;
@@ -110,11 +110,11 @@ function useCalendar(props, type) {
110
110
  }
111
111
  return (0, date_fns_1.getTime)((0, date_fns_1.startOfDay)(value));
112
112
  }
113
- function mergedIsDateDisabled(ts) {
113
+ function mergedIsDateDisabled(ts, detail) {
114
114
  const { isDateDisabled: { value: isDateDisabled } } = validation;
115
115
  if (!isDateDisabled)
116
116
  return false;
117
- return isDateDisabled(ts);
117
+ return isDateDisabled(ts, detail);
118
118
  }
119
119
  function handleDateInput(value) {
120
120
  const date = (0, utils_1.strictParse)(value, mergedDateFormatRef.value, new Date(), panelCommon.dateFnsOptions.value);
@@ -184,7 +184,26 @@ function useCalendar(props, type) {
184
184
  return false;
185
185
  }
186
186
  function handleDateClick(dateItem) {
187
- if (mergedIsDateDisabled(dateItem.ts)) {
187
+ if (mergedIsDateDisabled(dateItem.ts, dateItem.type === 'date'
188
+ ? {
189
+ type: 'date',
190
+ year: dateItem.dateObject.year,
191
+ month: dateItem.dateObject.month,
192
+ date: dateItem.dateObject.date
193
+ }
194
+ : dateItem.type === 'month'
195
+ ? {
196
+ type: 'month',
197
+ year: dateItem.dateObject.year,
198
+ month: dateItem.dateObject.month
199
+ }
200
+ : dateItem.type === 'year'
201
+ ? { type: 'year', year: dateItem.dateObject.year }
202
+ : {
203
+ type: 'quarter',
204
+ year: dateItem.dateObject.year,
205
+ quarter: dateItem.dateObject.quarter
206
+ })) {
188
207
  return;
189
208
  }
190
209
  let newValue;
@@ -227,8 +227,9 @@ function useDualCalendar(props, type) {
227
227
  const isDateDisabled = isDateDisabledRef.value;
228
228
  if (!isDateDisabled)
229
229
  return false;
230
- if (!Array.isArray(props.value))
230
+ if (!Array.isArray(props.value)) {
231
231
  return isDateDisabled(ts, 'start', null);
232
+ }
232
233
  if (selectingPhaseRef.value === 'start') {
233
234
  // before you really start to select
234
235
  return isDateDisabled(ts, 'start', null);
@@ -34,7 +34,7 @@ function uniCalendarValidation(props, mergedValueRef) {
34
34
  !isDateDisabled) {
35
35
  return false;
36
36
  }
37
- return isDateDisabled(value);
37
+ return isDateDisabled(value, { type: 'input' });
38
38
  });
39
39
  const isTimeInvalidRef = (0, vue_1.computed)(() => {
40
40
  const { type } = props;
@@ -59,7 +59,7 @@ exports.default = (0, vue_1.defineComponent)({
59
59
  };
60
60
  function validate(validateCallback, shouldRuleBeApplied = () => true) {
61
61
  return __awaiter(this, void 0, void 0, function* () {
62
- yield new Promise((resolve, reject) => {
62
+ return yield new Promise((resolve, reject) => {
63
63
  const formItemValidationPromises = [];
64
64
  for (const key of (0, _utils_1.keysOf)(formItems)) {
65
65
  const formItemInstances = formItems[key];
@@ -71,21 +71,29 @@ exports.default = (0, vue_1.defineComponent)({
71
71
  }
72
72
  void Promise.all(formItemValidationPromises).then((results) => {
73
73
  const formInvalid = results.some((result) => !result.valid);
74
- const errors = results
75
- .filter((result) => { var _a; return (_a = result.errors) === null || _a === void 0 ? void 0 : _a.length; })
76
- .map((result) => result.errors);
77
- const warnings = results
78
- .filter((result) => { var _a; return (_a = result.warnings) === null || _a === void 0 ? void 0 : _a.length; })
79
- .map((result) => result.warnings);
74
+ const errors = [];
75
+ const warnings = [];
76
+ results.forEach((result) => {
77
+ var _a, _b;
78
+ if ((_a = result.errors) === null || _a === void 0 ? void 0 : _a.length) {
79
+ errors.push(result.errors);
80
+ }
81
+ if ((_b = result.warnings) === null || _b === void 0 ? void 0 : _b.length) {
82
+ warnings.push(result.warnings);
83
+ }
84
+ });
80
85
  if (validateCallback) {
81
- validateCallback((errors === null || errors === void 0 ? void 0 : errors.length) ? errors : undefined, {
82
- warnings: (warnings === null || warnings === void 0 ? void 0 : warnings.length)
83
- ? warnings
84
- : undefined
86
+ validateCallback(errors.length ? errors : undefined, {
87
+ warnings: warnings.length ? warnings : undefined
85
88
  });
86
89
  }
90
+ if (formInvalid) {
91
+ reject(errors.length ? errors : undefined);
92
+ }
87
93
  else {
88
- formInvalid ? reject(errors) : resolve();
94
+ resolve({
95
+ warnings: warnings.length ? warnings : undefined
96
+ });
89
97
  }
90
98
  });
91
99
  });
@@ -130,13 +130,13 @@ exports.default = (0, vue_1.defineComponent)({
130
130
  shouldRuleBeApplied = options.shouldRuleBeApplied;
131
131
  asyncValidatorOptions = options.options;
132
132
  }
133
- yield new Promise((resolve, reject) => {
133
+ return yield new Promise((resolve, reject) => {
134
134
  void internalValidate(trigger, shouldRuleBeApplied, asyncValidatorOptions).then(({ valid, errors, warnings }) => {
135
135
  if (valid) {
136
136
  if (validateCallback) {
137
137
  validateCallback(undefined, { warnings });
138
138
  }
139
- resolve();
139
+ resolve({ warnings });
140
140
  }
141
141
  else {
142
142
  if (validateCallback) {
@@ -28,7 +28,11 @@ export interface FormItemInternalValidateResult {
28
28
  warnings: ValidateError[] | undefined;
29
29
  }
30
30
  export type FormItemInternalValidate = (trigger: ValidationTrigger | string | null | undefined, shouldRuleBeApplied?: ShouldRuleBeApplied, options?: ValidateOption) => Promise<FormItemInternalValidateResult>;
31
- export type FormItemValidate = ((options: FormItemValidateOptions) => Promise<void>) & ((trigger?: string, callback?: ValidateCallback) => Promise<void>);
31
+ export type FormItemValidate = ((options: FormItemValidateOptions) => Promise<{
32
+ warnings: ValidateError[] | undefined;
33
+ }>) & ((trigger?: string, callback?: ValidateCallback) => Promise<{
34
+ warnings: ValidateError[] | undefined;
35
+ }>);
32
36
  export interface FormItemInst {
33
37
  validate: FormItemValidate;
34
38
  restoreValidation: () => void;
@@ -53,7 +57,9 @@ export type ValidateCallback = (errors: ValidateError[] | undefined, extra: {
53
57
  export type FormValidateCallback = (errors: ValidateError[][] | undefined, extra: {
54
58
  warnings: ValidateError[][] | undefined;
55
59
  }) => void;
56
- export type FormValidate = (callback?: FormValidateCallback, shouldRuleBeApplied?: ShouldRuleBeApplied) => Promise<void>;
60
+ export type FormValidate = (callback?: FormValidateCallback, shouldRuleBeApplied?: ShouldRuleBeApplied) => Promise<{
61
+ warnings: ValidateError[][] | undefined;
62
+ }>;
57
63
  export type FormValidationError = ValidateError[];
58
64
  export interface FormInst {
59
65
  validate: FormValidate;
@@ -1224,7 +1224,7 @@ declare const _default: import("vue").DefineComponent<{
1224
1224
  themeClass: import("vue").Ref<string> | undefined;
1225
1225
  onRender: (() => void) | undefined;
1226
1226
  handleKeydown: (e: KeyboardEvent) => {
1227
- enterBehavoir: import("./interface").TreeOverrideNodeClickBehaviorReturn | null;
1227
+ enterBehavior: import("./interface").TreeOverrideNodeClickBehaviorReturn | null;
1228
1228
  };
1229
1229
  scrollTo: import("vueuc").VirtualListScrollTo;
1230
1230
  getCheckedData: () => {
@@ -124,7 +124,7 @@ export interface MotionData {
124
124
  }
125
125
  export interface InternalTreeInst {
126
126
  handleKeydown: (e: KeyboardEvent) => {
127
- enterBehavoir: TreeOverrideNodeClickBehaviorReturn | null;
127
+ enterBehavior: TreeOverrideNodeClickBehaviorReturn | null;
128
128
  };
129
129
  }
130
130
  export interface TreeInst {
@@ -16,6 +16,6 @@ export declare function useKeyboard({ props, fNodesRef, mergedExpandedKeysRef, m
16
16
  }): {
17
17
  pendingNodeKeyRef: Ref<null | Key>;
18
18
  handleKeydown: (e: KeyboardEvent) => {
19
- enterBehavoir: TreeOverrideNodeClickBehaviorReturn | null;
19
+ enterBehavior: TreeOverrideNodeClickBehaviorReturn | null;
20
20
  };
21
21
  };