fix: mode='month' a-date-picker disabledDate prop is invalid (#3988)
* fix: mode='month' a-date-picker disabledDate prop is invalid * chore: code-factory errors * chore: remove example codes * fix: the date-picker disabledDate is invalid when mode is yearpull/4049/head
parent
3e617bd4d2
commit
45c7163b58
|
@ -46,6 +46,14 @@
|
||||||
|
|
||||||
.@{calendar-prefix-cls}-year-panel-cell {
|
.@{calendar-prefix-cls}-year-panel-cell {
|
||||||
text-align: center;
|
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 {
|
.@{calendar-prefix-cls}-year-panel-year {
|
||||||
|
|
|
@ -325,6 +325,7 @@ const Calendar = {
|
||||||
locale={locale}
|
locale={locale}
|
||||||
mode={sMode}
|
mode={sMode}
|
||||||
value={sValue}
|
value={sValue}
|
||||||
|
disabledMonth={disabledDate}
|
||||||
onValueChange={this.setValue}
|
onValueChange={this.setValue}
|
||||||
onPanelChange={this.onPanelChange}
|
onPanelChange={this.onPanelChange}
|
||||||
renderFooter={renderFooter}
|
renderFooter={renderFooter}
|
||||||
|
|
|
@ -179,6 +179,7 @@ const CalendarHeader = {
|
||||||
onSelect={this.onYearSelect}
|
onSelect={this.onYearSelect}
|
||||||
onDecadePanelShow={this.showDecadePanel}
|
onDecadePanelShow={this.showDecadePanel}
|
||||||
renderFooter={renderFooter}
|
renderFooter={renderFooter}
|
||||||
|
disabledDate={disabledMonth}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -28,6 +28,7 @@ export default {
|
||||||
defaultValue: PropTypes.object,
|
defaultValue: PropTypes.object,
|
||||||
locale: PropTypes.object,
|
locale: PropTypes.object,
|
||||||
renderFooter: PropTypes.func,
|
renderFooter: PropTypes.func,
|
||||||
|
disabledDate: PropTypes.func,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
this.nextDecade = goYear.bind(this, 10);
|
this.nextDecade = goYear.bind(this, 10);
|
||||||
|
@ -67,18 +68,26 @@ export default {
|
||||||
},
|
},
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
const { sValue: value, locale, renderFooter } = this;
|
const { sValue: value, locale, renderFooter, $props } = this;
|
||||||
const decadePanelShow = getListeners(this).decadePanelShow || noop;
|
const decadePanelShow = getListeners(this).decadePanelShow || noop;
|
||||||
const years = this.years();
|
const years = this.years();
|
||||||
const currentYear = value.year();
|
const currentYear = value.year();
|
||||||
const startYear = parseInt(currentYear / 10, 10) * 10;
|
const startYear = parseInt(currentYear / 10, 10) * 10;
|
||||||
const endYear = startYear + 9;
|
const endYear = startYear + 9;
|
||||||
const prefixCls = `${this.rootPrefixCls}-year-panel`;
|
const prefixCls = `${this.rootPrefixCls}-year-panel`;
|
||||||
|
const { disabledDate } = $props;
|
||||||
|
|
||||||
const yeasEls = years.map((row, index) => {
|
const yeasEls = years.map((row, index) => {
|
||||||
const tds = row.map(yearData => {
|
const tds = row.map(yearData => {
|
||||||
|
let disabled = false;
|
||||||
|
if (disabledDate) {
|
||||||
|
const testValue = value.clone();
|
||||||
|
testValue.year(yearData.year);
|
||||||
|
disabled = disabledDate(testValue);
|
||||||
|
}
|
||||||
const classNameMap = {
|
const classNameMap = {
|
||||||
[`${prefixCls}-cell`]: 1,
|
[`${prefixCls}-cell`]: 1,
|
||||||
|
[`${prefixCls}-cell-disabled`]: disabled,
|
||||||
[`${prefixCls}-selected-cell`]: yearData.year === currentYear,
|
[`${prefixCls}-selected-cell`]: yearData.year === currentYear,
|
||||||
[`${prefixCls}-last-decade-cell`]: yearData.year < startYear,
|
[`${prefixCls}-last-decade-cell`]: yearData.year < startYear,
|
||||||
[`${prefixCls}-next-decade-cell`]: yearData.year > endYear,
|
[`${prefixCls}-next-decade-cell`]: yearData.year > endYear,
|
||||||
|
@ -96,7 +105,7 @@ export default {
|
||||||
role="gridcell"
|
role="gridcell"
|
||||||
title={yearData.title}
|
title={yearData.title}
|
||||||
key={yearData.content}
|
key={yearData.content}
|
||||||
onClick={clickHandler}
|
onClick={disabled ? noop : clickHandler}
|
||||||
class={classNameMap}
|
class={classNameMap}
|
||||||
>
|
>
|
||||||
<a class={`${prefixCls}-year`}>{yearData.content}</a>
|
<a class={`${prefixCls}-year`}>{yearData.content}</a>
|
||||||
|
|
Loading…
Reference in New Issue