diff --git a/examples/basic.tsx b/examples/basic.tsx index 3347239..5fddcde 100644 --- a/examples/basic.tsx +++ b/examples/basic.tsx @@ -64,6 +64,21 @@ class BasicDemo extends React.Component<{}, { ; } + renderMonthTitle = (date: Date) => { + const style = { color: 'rgba(25,124,217,1)', fontWeight: 600, fontSize: 14, lineHeight: 22 }; + return
+ {`${date.getFullYear()}年`} + {`${date.getMonth()}月`} +
; + } + + render() { return (
@@ -120,6 +135,7 @@ class BasicDemo extends React.Component<{}, { }} minDate={new Date(+new Date - 62 * 24 * 3600 * 1000)} maxDate={new Date(+new Date + 365 * 24 * 3600 * 1000)} + renderMonthTitle={this.renderMonthTitle} />
); diff --git a/package.json b/package.json index 8171c70..a9d9855 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "main": "./lib/index", "module": "./es/index", "config": { - "port": 8021 + "port": 8899 }, "scripts": { "watch-tsc": "rc-tools run watch-tsc", @@ -66,19 +66,19 @@ "rmc-date-picker": "~6.0.0-alpha.10" }, "devDependencies": { - "@types/jest": "^21.1.2", - "jest": "^21.2.1", "@types/enzyme": "^2.8.11", - "enzyme": "^3.1.0", "@types/enzyme-to-json": "^1.5.0", - "enzyme-to-json": "^3.1.2", - "enzyme-adapter-react-15": "^1.0.1", - "coveralls": "^3.0.0", + "@types/jest": "^21.1.2", "@types/react": "^16.0.10", "@types/react-dom": "^16.0.1", + "coveralls": "^3.0.0", + "enzyme": "^3.1.0", + "enzyme-adapter-react-15": "^1.0.1", + "enzyme-to-json": "^3.1.2", + "jest": "^21.2.1", "pre-commit": "1.x", "rc-test": "^6.0.8", - "rc-tools": "^7.0.0", + "rc-tools": "^9.5.3", "react": "^15.x", "react-dom": "^15.x", "react-test-renderer": "^15.x", diff --git a/src/Calendar.tsx b/src/Calendar.tsx index e263a2d..0a12b30 100644 --- a/src/Calendar.tsx +++ b/src/Calendar.tsx @@ -191,7 +191,7 @@ export default class Calendar extends React.PureComponent type, locale = {} as Models.Locale, prefixCls, visible, pickTime, showShortcut, renderHeader, infiniteOpt, initalMonths, defaultDate, minDate, maxDate, getDateExtra, rowSize, defaultTimeValue, renderShortcut, enterDirection, timePickerPrefixCls, timePickerPickerPrefixCls, - style, + style, renderMonthTitle } = this.props; const { showTimePicker, timePickerTitle, @@ -233,6 +233,7 @@ export default class Calendar extends React.PureComponent startDate={startDate} endDate={endDate} rowSize={rowSize} + renderMonthTitle={renderMonthTitle} /> { showTimePicker && diff --git a/src/CalendarProps.ts b/src/CalendarProps.ts index ad773ee..720bc38 100644 --- a/src/CalendarProps.ts +++ b/src/CalendarProps.ts @@ -59,4 +59,6 @@ export default interface PropsType { defaultTimeValue?: Date; timePickerPrefixCls?: string; timePickerPickerPrefixCls?: string; + /** 自定义月的标题 */ + renderMonthTitle?: (date: Date) => React.ReactNode; } diff --git a/src/DatePicker.base.tsx b/src/DatePicker.base.tsx index 523593a..0a7e57e 100644 --- a/src/DatePicker.base.tsx +++ b/src/DatePicker.base.tsx @@ -213,7 +213,7 @@ export default abstract class DatePicker extends React.Component 0) { if (onSelectHasDisableDate) { diff --git a/src/DatePicker.tsx b/src/DatePicker.tsx index 1161366..0a2d7b9 100644 --- a/src/DatePicker.tsx +++ b/src/DatePicker.tsx @@ -14,12 +14,14 @@ export default class DatePicker extends Component { genMonthComponent = (data?: Models.MonthData) => { if (!data) return; + const { renderMonthTitle } = this.props; return renderMonthTitle(data.firstDate) : undefined} ref={(dom) => { // FIXME?: sometimes will callback twice, and the second is null, when use preact. data.componentRef = dom || data.componentRef || undefined; diff --git a/src/DatePickerProps.ts b/src/DatePickerProps.ts index c63e385..da021d3 100644 --- a/src/DatePickerProps.ts +++ b/src/DatePickerProps.ts @@ -30,4 +30,5 @@ export default interface PropsType { rowSize?: 'normal' | 'xl'; /** 选择类型,default: range,one: 单日,range: 日期区间 */ type?: 'one' | 'range'; + renderMonthTitle?: (date: Date) => React.ReactNode; } diff --git a/src/date/SingleMonth.tsx b/src/date/SingleMonth.tsx index d0bfac8..e2374ce 100644 --- a/src/date/SingleMonth.tsx +++ b/src/date/SingleMonth.tsx @@ -7,6 +7,7 @@ export interface PropsType { rowSize?: 'normal' | 'xl'; getDateExtra?: (date: Date) => Models.ExtraData; onCellClick?: (data: Models.CellData, monthData: Models.MonthData) => void; + renderMonthTitle?: (date: Date) => React.ReactNode; } export default class SingleMonth extends React.PureComponent
- {title} + {renderMonthTitle ? renderMonthTitle(firstDate) : title}
{weekComponents}