From dc65826a6eb181ac7587ff8be89fd6efcc3e5376 Mon Sep 17 00:00:00 2001
From: donley828 <344919627@qq.com>
Date: Sun, 25 Apr 2021 18:29:59 +0800
Subject: [PATCH 1/4] fix: mode='month' a-date-picker disabledDate prop is
invalid
---
components/vc-calendar/src/Calendar.jsx | 1 +
examples/App.vue | 13 +++++++++++++
2 files changed, 14 insertions(+)
diff --git a/components/vc-calendar/src/Calendar.jsx b/components/vc-calendar/src/Calendar.jsx
index a35888ed26..0769c849f5 100644
--- a/components/vc-calendar/src/Calendar.jsx
+++ b/components/vc-calendar/src/Calendar.jsx
@@ -325,6 +325,7 @@ const Calendar = {
locale={locale}
mode={sMode}
value={sValue}
+ disabledMonth={disabledDate}
onValueChange={this.setValue}
onPanelChange={this.onPanelChange}
renderFooter={renderFooter}
diff --git a/examples/App.vue b/examples/App.vue
index 93ab247cba..56b97617c5 100644
--- a/examples/App.vue
+++ b/examples/App.vue
@@ -32,14 +32,27 @@
{ key: 'tab2', tab: 'tab2' },
]"
/>
+
+
+
From 5f8a359b59027e339398e721d98fecca338ef998 Mon Sep 17 00:00:00 2001
From: donley828 <344919627@qq.com>
Date: Sun, 25 Apr 2021 18:36:52 +0800
Subject: [PATCH 2/4] chore: code-factory errors
---
examples/App.vue | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/examples/App.vue b/examples/App.vue
index 56b97617c5..49c7c29dde 100644
--- a/examples/App.vue
+++ b/examples/App.vue
@@ -32,9 +32,9 @@
{ key: 'tab2', tab: 'tab2' },
]"
/>
-
-
-
+
+
+
From eaf58c8e4b61d2773e263f4f80dfa6fde0c7ee09 Mon Sep 17 00:00:00 2001
From: donley828 <344919627@qq.com>
Date: Mon, 26 Apr 2021 09:37:19 +0800
Subject: [PATCH 4/4] fix: the date-picker disabledDate is invalid when mode is
year
---
components/date-picker/style/YearPanel.less | 8 ++++++++
.../vc-calendar/src/calendar/CalendarHeader.jsx | 1 +
components/vc-calendar/src/year/YearPanel.jsx | 13 +++++++++++--
3 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/components/date-picker/style/YearPanel.less b/components/date-picker/style/YearPanel.less
index b9efca73ca..a533638c06 100644
--- a/components/date-picker/style/YearPanel.less
+++ b/components/date-picker/style/YearPanel.less
@@ -46,6 +46,14 @@
.@{calendar-prefix-cls}-year-panel-cell {
text-align: center;
+ &-disabled .@{calendar-prefix-cls}-year-panel-year {
+ &,
+ &:hover {
+ color: @disabled-color;
+ background: @disabled-bg;
+ cursor: not-allowed;
+ }
+ }
}
.@{calendar-prefix-cls}-year-panel-year {
diff --git a/components/vc-calendar/src/calendar/CalendarHeader.jsx b/components/vc-calendar/src/calendar/CalendarHeader.jsx
index 8712031924..81e941a64c 100644
--- a/components/vc-calendar/src/calendar/CalendarHeader.jsx
+++ b/components/vc-calendar/src/calendar/CalendarHeader.jsx
@@ -179,6 +179,7 @@ const CalendarHeader = {
onSelect={this.onYearSelect}
onDecadePanelShow={this.showDecadePanel}
renderFooter={renderFooter}
+ disabledDate={disabledMonth}
/>
);
}
diff --git a/components/vc-calendar/src/year/YearPanel.jsx b/components/vc-calendar/src/year/YearPanel.jsx
index 0ca3931bf2..19efaa3c0e 100644
--- a/components/vc-calendar/src/year/YearPanel.jsx
+++ b/components/vc-calendar/src/year/YearPanel.jsx
@@ -28,6 +28,7 @@ export default {
defaultValue: PropTypes.object,
locale: PropTypes.object,
renderFooter: PropTypes.func,
+ disabledDate: PropTypes.func,
},
data() {
this.nextDecade = goYear.bind(this, 10);
@@ -67,18 +68,26 @@ export default {
},
render() {
- const { sValue: value, locale, renderFooter } = this;
+ const { sValue: value, locale, renderFooter, $props } = this;
const decadePanelShow = getListeners(this).decadePanelShow || noop;
const years = this.years();
const currentYear = value.year();
const startYear = parseInt(currentYear / 10, 10) * 10;
const endYear = startYear + 9;
const prefixCls = `${this.rootPrefixCls}-year-panel`;
+ const { disabledDate } = $props;
const yeasEls = years.map((row, index) => {
const tds = row.map(yearData => {
+ let disabled = false;
+ if (disabledDate) {
+ const testValue = value.clone();
+ testValue.year(yearData.year);
+ disabled = disabledDate(testValue);
+ }
const classNameMap = {
[`${prefixCls}-cell`]: 1,
+ [`${prefixCls}-cell-disabled`]: disabled,
[`${prefixCls}-selected-cell`]: yearData.year === currentYear,
[`${prefixCls}-last-decade-cell`]: yearData.year < startYear,
[`${prefixCls}-next-decade-cell`]: yearData.year > endYear,
@@ -96,7 +105,7 @@ export default {
role="gridcell"
title={yearData.title}
key={yearData.content}
- onClick={clickHandler}
+ onClick={disabled ? noop : clickHandler}
class={classNameMap}
>
{yearData.content}