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.
- package/dist/index.js +147 -73
- package/dist/index.prod.js +1 -1
- package/es/_internal/clear/src/Clear.mjs +0 -2
- package/es/auto-complete/src/AutoComplete.d.ts +4 -0
- package/es/auto-complete/src/AutoComplete.mjs +8 -2
- package/es/collapse/src/Collapse.d.ts +13 -0
- package/es/collapse/src/Collapse.mjs +4 -0
- package/es/collapse/src/CollapseItem.d.ts +1 -0
- package/es/collapse/src/CollapseItem.mjs +18 -6
- package/es/collapse/src/styles/index.cssr.mjs +2 -3
- package/es/data-table/src/utils.mjs +3 -2
- package/es/date-picker/src/interface.d.ts +21 -2
- package/es/date-picker/src/panel/date.d.ts +1 -1
- package/es/date-picker/src/panel/date.mjs +6 -1
- package/es/date-picker/src/panel/datetime.d.ts +1 -1
- package/es/date-picker/src/panel/datetime.mjs +6 -1
- package/es/date-picker/src/panel/month.d.ts +1 -1
- package/es/date-picker/src/panel/month.mjs +12 -1
- package/es/date-picker/src/panel/panelHeader.d.ts +2 -2
- package/es/date-picker/src/panel/use-calendar.d.ts +2 -2
- package/es/date-picker/src/panel/use-calendar.mjs +19 -3
- package/es/date-picker/src/panel/use-dual-calendar.mjs +3 -1
- package/es/date-picker/src/validation-utils.mjs +3 -1
- package/es/form/src/Form.mjs +20 -12
- package/es/form/src/FormItem.mjs +4 -2
- package/es/form/src/interface.d.ts +8 -2
- package/es/tree/src/Tree.d.ts +1 -1
- package/es/tree/src/interface.d.ts +1 -1
- package/es/tree/src/keyboard.d.ts +1 -1
- package/es/tree/src/keyboard.mjs +8 -8
- package/es/tree-select/src/TreeSelect.d.ts +1 -1
- package/es/tree-select/src/TreeSelect.mjs +3 -3
- package/es/version.d.ts +1 -1
- package/es/version.mjs +1 -1
- package/lib/_internal/clear/src/Clear.js +0 -2
- package/lib/auto-complete/src/AutoComplete.d.ts +4 -0
- package/lib/auto-complete/src/AutoComplete.js +3 -3
- package/lib/collapse/src/Collapse.d.ts +13 -0
- package/lib/collapse/src/Collapse.js +3 -0
- package/lib/collapse/src/CollapseItem.d.ts +1 -0
- package/lib/collapse/src/CollapseItem.js +16 -4
- package/lib/collapse/src/styles/index.cssr.js +1 -2
- package/lib/data-table/src/utils.js +5 -2
- package/lib/date-picker/src/interface.d.ts +21 -2
- package/lib/date-picker/src/panel/date.d.ts +1 -1
- package/lib/date-picker/src/panel/date.js +6 -1
- package/lib/date-picker/src/panel/datetime.d.ts +1 -1
- package/lib/date-picker/src/panel/datetime.js +6 -1
- package/lib/date-picker/src/panel/month.d.ts +1 -1
- package/lib/date-picker/src/panel/month.js +18 -1
- package/lib/date-picker/src/panel/panelHeader.d.ts +2 -2
- package/lib/date-picker/src/panel/use-calendar.d.ts +2 -2
- package/lib/date-picker/src/panel/use-calendar.js +22 -3
- package/lib/date-picker/src/panel/use-dual-calendar.js +2 -1
- package/lib/date-picker/src/validation-utils.js +1 -1
- package/lib/form/src/Form.js +20 -12
- package/lib/form/src/FormItem.js +2 -2
- package/lib/form/src/interface.d.ts +8 -2
- package/lib/tree/src/Tree.d.ts +1 -1
- package/lib/tree/src/interface.d.ts +1 -1
- package/lib/tree/src/keyboard.d.ts +1 -1
- package/lib/tree/src/keyboard.js +8 -8
- package/lib/tree-select/src/TreeSelect.d.ts +1 -1
- package/lib/tree-select/src/TreeSelect.js +3 -3
- package/lib/version.d.ts +1 -1
- package/lib/version.js +1 -1
- package/package.json +1 -1
- 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
|
-
})
|
|
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
|
|
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
|
|
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
|
|
75
|
-
|
|
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
|
|
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))
|
|
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 {
|
package/es/form/src/Form.mjs
CHANGED
|
@@ -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 =
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
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(
|
|
112
|
-
warnings:
|
|
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
|
-
|
|
121
|
+
resolve({
|
|
122
|
+
warnings: warnings.length ? warnings : undefined
|
|
123
|
+
});
|
|
116
124
|
}
|
|
117
125
|
});
|
|
118
126
|
});
|
package/es/form/src/FormItem.mjs
CHANGED
|
@@ -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<
|
|
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<
|
|
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;
|
package/es/tree/src/Tree.d.ts
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
19
|
+
enterBehavior: TreeOverrideNodeClickBehaviorReturn | null;
|
|
20
20
|
};
|
|
21
21
|
};
|
package/es/tree/src/keyboard.mjs
CHANGED
|
@@ -19,12 +19,12 @@ export function useKeyboard({
|
|
|
19
19
|
function handleKeydown(e) {
|
|
20
20
|
var _a;
|
|
21
21
|
if (!props.keyboard) return {
|
|
22
|
-
|
|
22
|
+
enterBehavior: null
|
|
23
23
|
};
|
|
24
24
|
const {
|
|
25
25
|
value: pendingNodeKey
|
|
26
26
|
} = pendingNodeKeyRef;
|
|
27
|
-
let
|
|
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
|
-
|
|
53
|
+
enterBehavior: null
|
|
54
54
|
};
|
|
55
55
|
if (e.key === 'Enter') {
|
|
56
56
|
const tmNode = fNodes[fIndex];
|
|
57
|
-
|
|
57
|
+
enterBehavior = ((_a = props.overrideDefaultNodeClickBehavior) === null || _a === void 0 ? void 0 : _a.call(props, {
|
|
58
58
|
option: tmNode.rawNode
|
|
59
59
|
})) || null;
|
|
60
|
-
switch (
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
128
|
+
enterBehavior
|
|
129
129
|
};
|
|
130
130
|
}
|
|
131
131
|
return {
|