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
@@ -19,9 +19,7 @@ export default defineComponent({
19
19
  useStyle('-base-clear', style, toRef(props, 'clsPrefix'));
20
20
  return {
21
21
  handleMouseDown(e) {
22
- var _a;
23
22
  e.preventDefault();
24
- (_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props, e);
25
23
  }
26
24
  };
27
25
  },
@@ -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;
@@ -44,6 +44,7 @@ export const autoCompleteProps = Object.assign(Object.assign({}, useTheme.props)
44
44
  blurAfterSelect: Boolean,
45
45
  clearAfterSelect: Boolean,
46
46
  getShow: Function,
47
+ showEmpty: Boolean,
47
48
  inputProps: Object,
48
49
  renderOption: Function,
49
50
  renderLabel: Function,
@@ -106,7 +107,7 @@ export default defineComponent({
106
107
  return !!mergedValueRef.value;
107
108
  });
108
109
  const activeRef = computed(() => {
109
- return mergedShowOptionsRef.value && canBeActivatedRef.value && !!selectOptionsRef.value.length;
110
+ return mergedShowOptionsRef.value && canBeActivatedRef.value && (props.showEmpty ? true : !!selectOptionsRef.value.length);
110
111
  });
111
112
  const treeMateRef = computed(() => createTreeMate(selectOptionsRef.value, createTmOptions('value', 'children')));
112
113
  function doUpdateValue(value) {
@@ -377,7 +378,12 @@ export default defineComponent({
377
378
  renderOption: this.renderOption,
378
379
  size: "medium",
379
380
  onToggle: this.handleToggle
380
- })), [[clickoutside, this.handleClickOutsideMenu, undefined, {
381
+ }), {
382
+ empty: () => {
383
+ var _a, _b;
384
+ return (_b = (_a = this.$slots).empty) === null || _b === void 0 ? void 0 : _b.call(_a);
385
+ }
386
+ }), [[clickoutside, this.handleClickOutsideMenu, undefined, {
381
387
  capture: true
382
388
  }]]);
383
389
  }
@@ -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,10 @@ export const collapseProps = Object.assign(Object.assign({}, useTheme.props), {
23
23
  type: String,
24
24
  default: 'if'
25
25
  },
26
+ triggerAreas: {
27
+ type: Array,
28
+ default: () => ['main', 'extra', 'arrow']
29
+ },
26
30
  onItemHeaderClick: [Function, Array],
27
31
  'onUpdate:expandedNames': [Function, Array],
28
32
  onUpdateExpandedNames: [Function, Array],
@@ -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;
@@ -1,5 +1,5 @@
1
- import { h, defineComponent, inject, computed } from 'vue';
2
- import { createId } from 'seemly';
1
+ import { h, defineComponent, inject, computed, toRef } from 'vue';
2
+ import { createId, happensIn } from 'seemly';
3
3
  import { useMemo } from 'vooks';
4
4
  import { ChevronRightIcon as ArrowRightIcon, ChevronLeftIcon as ArrowLeftIcon } from "../../_internal/icons/index.mjs";
5
5
  import { useRtl } from "../../_mixins/use-rtl.mjs";
@@ -60,6 +60,7 @@ export default defineComponent({
60
60
  randomName,
61
61
  mergedClsPrefix: mergedClsPrefixRef,
62
62
  collapsed: collapsedRef,
63
+ triggerAreas: toRef(collapseProps, 'triggerAreas'),
63
64
  mergedDisplayDirective: computed(() => {
64
65
  const {
65
66
  displayDirective
@@ -74,6 +75,12 @@ export default defineComponent({
74
75
  return collapseProps.arrowPlacement;
75
76
  }),
76
77
  handleClick(e) {
78
+ let happensInArea = 'main';
79
+ if (happensIn(e, 'arrow')) happensInArea = 'arrow';
80
+ if (happensIn(e, 'extra')) happensInArea = 'extra';
81
+ if (!collapseProps.triggerAreas.includes(happensInArea)) {
82
+ return;
83
+ }
77
84
  if (NCollapse && !props.disabled) {
78
85
  NCollapse.toggleItem(collapsedRef.value, mergedNameRef.value, e);
79
86
  }
@@ -88,7 +95,8 @@ export default defineComponent({
88
95
  collapsed,
89
96
  mergedDisplayDirective,
90
97
  mergedClsPrefix,
91
- disabled
98
+ disabled,
99
+ triggerAreas
92
100
  } = this;
93
101
  const headerNode = resolveSlotWithProps($slots.header, {
94
102
  collapsed
@@ -96,7 +104,9 @@ export default defineComponent({
96
104
  const headerExtraSlot = $slots['header-extra'] || collapseSlots['header-extra'];
97
105
  const arrowSlot = $slots.arrow || collapseSlots.arrow;
98
106
  return h("div", {
99
- class: [`${mergedClsPrefix}-collapse-item`, `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`, disabled && `${mergedClsPrefix}-collapse-item--disabled`, !collapsed && `${mergedClsPrefix}-collapse-item--active`]
107
+ class: [`${mergedClsPrefix}-collapse-item`, `${mergedClsPrefix}-collapse-item--${arrowPlacement}-arrow-placement`, disabled && `${mergedClsPrefix}-collapse-item--disabled`, !collapsed && `${mergedClsPrefix}-collapse-item--active`, triggerAreas.map(area => {
108
+ return `${mergedClsPrefix}-collapse-item--trigger-area-${area}`;
109
+ })]
100
110
  }, h("div", {
101
111
  class: [`${mergedClsPrefix}-collapse-item__header`, !collapsed && `${mergedClsPrefix}-collapse-item__header--active`]
102
112
  }, h("div", {
@@ -104,7 +114,8 @@ export default defineComponent({
104
114
  onClick: this.handleClick
105
115
  }, arrowPlacement === 'right' && headerNode, h("div", {
106
116
  class: `${mergedClsPrefix}-collapse-item-arrow`,
107
- key: this.rtlEnabled ? 0 : 1
117
+ key: this.rtlEnabled ? 0 : 1,
118
+ "data-arrow": true
108
119
  }, resolveSlotWithProps(arrowSlot, {
109
120
  collapsed
110
121
  }, () => {
@@ -118,7 +129,8 @@ export default defineComponent({
118
129
  collapsed
119
130
  }, children => h("div", {
120
131
  class: `${mergedClsPrefix}-collapse-item__header-extra`,
121
- onClick: this.handleClick
132
+ onClick: this.handleClick,
133
+ "data-extra": true
122
134
  }, children))), h(NCollapseItemContent, {
123
135
  clsPrefix: mergedClsPrefix,
124
136
  displayDirective: mergedDisplayDirective,
@@ -1,4 +1,4 @@
1
- import { c, cB, cE, cM } from "../../../_utils/cssr/index.mjs";
1
+ import { c, cB, cE, cM, cNotM } from "../../../_utils/cssr/index.mjs";
2
2
  import { fadeInHeightExpandTransition } from "../../../_styles/transitions/fade-in-height-expand.cssr.mjs";
3
3
  // vars:
4
4
  // --n-font-size
@@ -26,7 +26,7 @@ export default cB('collapse', 'width: 100%;', [cB('collapse-item', `
26
26
  color: var(--n-arrow-color-disabled);
27
27
  `)])]), cB('collapse-item', 'margin-left: 32px;'), c('&:first-child', 'margin-top: 0;'), c('&:first-child >', [cE('header', 'padding-top: 0;')]), cM('left-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-right: 4px;')])]), cM('right-arrow-placement', [cE('header', [cB('collapse-item-arrow', 'margin-left: 4px;')])]), cE('content-wrapper', [cE('content-inner', 'padding-top: 16px;'), fadeInHeightExpandTransition({
28
28
  duration: '0.15s'
29
- })]), cM('active', [cE('header', [cM('active', [cB('collapse-item-arrow', 'transform: rotate(90deg);')])])]), c('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), cE('header', `
29
+ })]), cM('active', [cE('header', [cM('active', [cB('collapse-item-arrow', 'transform: rotate(90deg);')])])]), c('&:not(:first-child)', 'border-top: 1px solid var(--n-divider-color);'), cNotM('disabled', [cM('trigger-area-main', [cE('header', [cE('header-main', 'cursor: pointer;'), cB('collapse-item-arrow', 'cursor: default;')])]), cM('trigger-area-arrow', [cE('header', [cB('collapse-item-arrow', 'cursor: pointer;')])]), cM('trigger-area-extra', [cE('header', [cE('header-extra', 'cursor: pointer;')])])]), cE('header', `
30
30
  font-size: var(--n-title-font-size);
31
31
  display: flex;
32
32
  flex-wrap: nowrap;
@@ -43,7 +43,6 @@ export default cB('collapse', 'width: 100%;', [cB('collapse-item', `
43
43
  transition: color .3s var(--n-bezier);
44
44
  flex: 1;
45
45
  color: var(--n-title-text-color);
46
- cursor: pointer;
47
46
  `), cE('header-extra', `
48
47
  display: flex;
49
48
  align-items: center;
@@ -127,9 +127,10 @@ function formatCsvCell(value) {
127
127
  }
128
128
  }
129
129
  export function generateCsv(columns, data) {
130
- const header = columns.map(col => col.title).join(',');
130
+ const exportableColumns = columns.filter(column => column.type !== 'expand' && column.type !== 'selection');
131
+ const header = exportableColumns.map(col => col.title).join(',');
131
132
  const rows = data.map(row => {
132
- return columns.map(col => formatCsvCell(row[col.key])).join(',');
133
+ return exportableColumns.map(col => formatCsvCell(row[col.key])).join(',');
133
134
  });
134
135
  return [header, ...rows].join('\n');
135
136
  }
@@ -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;
@@ -84,7 +84,12 @@ export default defineComponent({
84
84
  [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
85
85
  [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
86
86
  [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
87
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts),
87
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts, {
88
+ type: 'date',
89
+ year: dateItem.dateObject.year,
90
+ month: dateItem.dateObject.month,
91
+ date: dateItem.dateObject.date
92
+ }),
88
93
  [`${mergedClsPrefix}-date-panel-date--week-hovered`]: this.isWeekHovered(dateItem),
89
94
  [`${mergedClsPrefix}-date-panel-date--week-selected`]: dateItem.inSelectedWeek
90
95
  }],
@@ -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;
@@ -101,7 +101,12 @@ export default defineComponent({
101
101
  [`${mergedClsPrefix}-date-panel-date--current`]: dateItem.isCurrentDate,
102
102
  [`${mergedClsPrefix}-date-panel-date--selected`]: dateItem.selected,
103
103
  [`${mergedClsPrefix}-date-panel-date--excluded`]: !dateItem.inCurrentMonth,
104
- [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts)
104
+ [`${mergedClsPrefix}-date-panel-date--disabled`]: this.mergedIsDateDisabled(dateItem.ts, {
105
+ type: 'date',
106
+ year: dateItem.dateObject.year,
107
+ month: dateItem.dateObject.month,
108
+ date: dateItem.dateObject.date
109
+ })
105
110
  }],
106
111
  onClick: () => {
107
112
  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;
@@ -49,7 +49,18 @@ export default defineComponent({
49
49
  return h("div", {
50
50
  "data-n-date": true,
51
51
  key: i,
52
- class: [`${mergedClsPrefix}-date-panel-month-calendar__picker-col-item`, item.isCurrent && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--current`, item.selected && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--selected`, !useAsQuickJump && mergedIsDateDisabled(item.ts) && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--disabled`],
52
+ class: [`${mergedClsPrefix}-date-panel-month-calendar__picker-col-item`, item.isCurrent && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--current`, item.selected && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--selected`, !useAsQuickJump && mergedIsDateDisabled(item.ts, item.type === 'year' ? {
53
+ type: 'year',
54
+ year: item.dateObject.year
55
+ } : item.type === 'month' ? {
56
+ type: 'month',
57
+ year: item.dateObject.year,
58
+ month: item.dateObject.month
59
+ } : item.type === 'quarter' ? {
60
+ type: 'month',
61
+ year: item.dateObject.year,
62
+ month: item.dateObject.quarter
63
+ } : null) && `${mergedClsPrefix}-date-panel-month-calendar__picker-col-item--disabled`],
53
64
  onClick: () => {
54
65
  useAsQuickJump ? handleQuickMonthClick(item, value => {
55
66
  ;
@@ -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;
@@ -119,14 +119,14 @@ function useCalendar(props, type) {
119
119
  }
120
120
  return getTime(startOfDay(value));
121
121
  }
122
- function mergedIsDateDisabled(ts) {
122
+ function mergedIsDateDisabled(ts, detail) {
123
123
  const {
124
124
  isDateDisabled: {
125
125
  value: isDateDisabled
126
126
  }
127
127
  } = validation;
128
128
  if (!isDateDisabled) return false;
129
- return isDateDisabled(ts);
129
+ return isDateDisabled(ts, detail);
130
130
  }
131
131
  function handleDateInput(value) {
132
132
  const date = strictParse(value, mergedDateFormatRef.value, new Date(), panelCommon.dateFnsOptions.value);
@@ -191,7 +191,23 @@ function useCalendar(props, type) {
191
191
  return false;
192
192
  }
193
193
  function handleDateClick(dateItem) {
194
- if (mergedIsDateDisabled(dateItem.ts)) {
194
+ if (mergedIsDateDisabled(dateItem.ts, dateItem.type === 'date' ? {
195
+ type: 'date',
196
+ year: dateItem.dateObject.year,
197
+ month: dateItem.dateObject.month,
198
+ date: dateItem.dateObject.date
199
+ } : dateItem.type === 'month' ? {
200
+ type: 'month',
201
+ year: dateItem.dateObject.year,
202
+ month: dateItem.dateObject.month
203
+ } : dateItem.type === 'year' ? {
204
+ type: 'year',
205
+ year: dateItem.dateObject.year
206
+ } : {
207
+ type: 'quarter',
208
+ year: dateItem.dateObject.year,
209
+ quarter: dateItem.dateObject.quarter
210
+ })) {
195
211
  return;
196
212
  }
197
213
  let newValue;
@@ -244,7 +244,9 @@ function useDualCalendar(props, type) {
244
244
  function mergedIsDateDisabled(ts) {
245
245
  const isDateDisabled = isDateDisabledRef.value;
246
246
  if (!isDateDisabled) return false;
247
- if (!Array.isArray(props.value)) return isDateDisabled(ts, 'start', null);
247
+ if (!Array.isArray(props.value)) {
248
+ return isDateDisabled(ts, 'start', null);
249
+ }
248
250
  if (selectingPhaseRef.value === 'start') {
249
251
  // before you really start to select
250
252
  return isDateDisabled(ts, 'start', null);
@@ -36,7 +36,9 @@ export function uniCalendarValidation(props, mergedValueRef) {
36
36
  if (value === null || Array.isArray(value) || !['date', 'datetime'].includes(type) || !isDateDisabled) {
37
37
  return false;
38
38
  }
39
- return isDateDisabled(value);
39
+ return isDateDisabled(value, {
40
+ type: 'input'
41
+ });
40
42
  });
41
43
  const isTimeInvalidRef = computed(() => {
42
44
  const {
@@ -87,7 +87,7 @@ export default defineComponent({
87
87
  };
88
88
  function validate(validateCallback, shouldRuleBeApplied = () => true) {
89
89
  return __awaiter(this, void 0, void 0, function* () {
90
- yield new Promise((resolve, reject) => {
90
+ return yield new Promise((resolve, reject) => {
91
91
  const formItemValidationPromises = [];
92
92
  for (const key of keysOf(formItems)) {
93
93
  const formItemInstances = formItems[key];
@@ -99,20 +99,28 @@ export default defineComponent({
99
99
  }
100
100
  void Promise.all(formItemValidationPromises).then(results => {
101
101
  const formInvalid = results.some(result => !result.valid);
102
- const errors = results.filter(result => {
103
- var _a;
104
- return (_a = result.errors) === null || _a === void 0 ? void 0 : _a.length;
105
- }).map(result => result.errors);
106
- const warnings = results.filter(result => {
107
- var _a;
108
- return (_a = result.warnings) === null || _a === void 0 ? void 0 : _a.length;
109
- }).map(result => result.warnings);
102
+ const errors = [];
103
+ const warnings = [];
104
+ results.forEach(result => {
105
+ var _a, _b;
106
+ if ((_a = result.errors) === null || _a === void 0 ? void 0 : _a.length) {
107
+ errors.push(result.errors);
108
+ }
109
+ if ((_b = result.warnings) === null || _b === void 0 ? void 0 : _b.length) {
110
+ warnings.push(result.warnings);
111
+ }
112
+ });
110
113
  if (validateCallback) {
111
- validateCallback((errors === null || errors === void 0 ? void 0 : errors.length) ? errors : undefined, {
112
- warnings: (warnings === null || warnings === void 0 ? void 0 : warnings.length) ? warnings : undefined
114
+ validateCallback(errors.length ? errors : undefined, {
115
+ warnings: warnings.length ? warnings : undefined
113
116
  });
117
+ }
118
+ if (formInvalid) {
119
+ reject(errors.length ? errors : undefined);
114
120
  } else {
115
- formInvalid ? reject(errors) : resolve();
121
+ resolve({
122
+ warnings: warnings.length ? warnings : undefined
123
+ });
116
124
  }
117
125
  });
118
126
  });
@@ -163,7 +163,7 @@ export default defineComponent({
163
163
  shouldRuleBeApplied = options.shouldRuleBeApplied;
164
164
  asyncValidatorOptions = options.options;
165
165
  }
166
- yield new Promise((resolve, reject) => {
166
+ return yield new Promise((resolve, reject) => {
167
167
  void internalValidate(trigger, shouldRuleBeApplied, asyncValidatorOptions).then(({
168
168
  valid,
169
169
  errors,
@@ -175,7 +175,9 @@ export default defineComponent({
175
175
  warnings
176
176
  });
177
177
  }
178
- resolve();
178
+ resolve({
179
+ warnings
180
+ });
179
181
  } else {
180
182
  if (validateCallback) {
181
183
  validateCallback(errors, {
@@ -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
  };
@@ -19,12 +19,12 @@ export function useKeyboard({
19
19
  function handleKeydown(e) {
20
20
  var _a;
21
21
  if (!props.keyboard) return {
22
- enterBehavoir: null
22
+ enterBehavior: null
23
23
  };
24
24
  const {
25
25
  value: pendingNodeKey
26
26
  } = pendingNodeKeyRef;
27
- let enterBehavoir = null;
27
+ let enterBehavior = null;
28
28
  if (pendingNodeKey === null) {
29
29
  if (e.key === 'ArrowDown' || e.key === 'ArrowUp') {
30
30
  e.preventDefault();
@@ -50,14 +50,14 @@ export function useKeyboard({
50
50
  } = fNodesRef;
51
51
  let fIndex = fNodes.findIndex(tmNode => tmNode.key === pendingNodeKey);
52
52
  if (!~fIndex) return {
53
- enterBehavoir: null
53
+ enterBehavior: null
54
54
  };
55
55
  if (e.key === 'Enter') {
56
56
  const tmNode = fNodes[fIndex];
57
- enterBehavoir = ((_a = props.overrideDefaultNodeClickBehavior) === null || _a === void 0 ? void 0 : _a.call(props, {
57
+ enterBehavior = ((_a = props.overrideDefaultNodeClickBehavior) === null || _a === void 0 ? void 0 : _a.call(props, {
58
58
  option: tmNode.rawNode
59
59
  })) || null;
60
- switch (enterBehavoir) {
60
+ switch (enterBehavior) {
61
61
  case 'toggleCheck':
62
62
  handleCheck(tmNode, !mergedCheckedKeysRef.value.includes(tmNode.key));
63
63
  break;
@@ -71,7 +71,7 @@ export function useKeyboard({
71
71
  break;
72
72
  case 'default':
73
73
  default:
74
- enterBehavoir = 'default';
74
+ enterBehavior = 'default';
75
75
  handleSelect(tmNode);
76
76
  }
77
77
  } else if (e.key === 'ArrowDown') {
@@ -107,7 +107,7 @@ export function useKeyboard({
107
107
  } else if (e.key === 'ArrowRight') {
108
108
  const pendingNode = fNodes[fIndex];
109
109
  if (pendingNode.isLeaf) return {
110
- enterBehavoir: null
110
+ enterBehavior: null
111
111
  };
112
112
  if (!mergedExpandedKeysRef.value.includes(pendingNodeKey)) {
113
113
  handleSwitcherClick(pendingNode);
@@ -125,7 +125,7 @@ export function useKeyboard({
125
125
  }
126
126
  }
127
127
  return {
128
- enterBehavoir
128
+ enterBehavior
129
129
  };
130
130
  }
131
131
  return {