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}