{
@@ -316,7 +340,7 @@ export default class DatePanel extends Component {
onFocus={() => {
//todo:
// timePickerVisible = !timePickerVisible
- } }
+ }}
placeholder={t('el.datepicker.selectTime')}
type="text"
className="el-date-picker__editor" />
@@ -365,7 +389,7 @@ export default class DatePanel extends Component {
active: currentView === 'month'
})
}
- >{t(`el.datepicker.month${month + 1}`)}
+ >{t(`el.datepicker.month${month + 1}`)}
)
}
@@ -228,30 +251,6 @@ export default class DateRangePanel extends Component {
}
-DateRangePanel.propTypes = {
- // user picked date value
- /*
- value: null | [Date, null | false]
- */
- value: PropTypes.any,
- // ([value1, value2]|null, isKeepPanel)=>()
- onPick: PropTypes.func.isRequired,
- showTime: PropTypes.bool,
- // Array[{text: String, onClick: (picker)=>()}]
- shortcuts: PropTypes.arrayOf(
- PropTypes.shape({
- text: PropTypes.string.isRequired,
- // ()=>()
- onClick: PropTypes.func.isRequired
- })
- ),
- // (Date)=>bool, if true, disabled
- disabledDate: PropTypes.func,
- firstDayOfWeek: PropTypes.range(0, 6),
- //()=>HtmlElement
- getPopperRefElement: PropTypes.func,
- popperMixinOption: PropTypes.object
-}
DateRangePanel.defaultProps = {
diff --git a/src/date-picker/panel/PopperBase.js b/src/date-picker/panel/PopperBase.js
new file mode 100644
index 0000000000..561dffae85
--- /dev/null
+++ b/src/date-picker/panel/PopperBase.js
@@ -0,0 +1,21 @@
+import { PropTypes, Component } from '../../../libs';
+import { PopperReactMixin } from '../../../libs/utils'
+
+export class PopperBase extends Component{
+ static get propTypes() {
+ return {
+ //()=>HtmlElement
+ getPopperRefElement: PropTypes.func,
+ popperMixinOption: PropTypes.object
+ }
+ }
+
+ constructor(props) {
+ super(props)
+
+ PopperReactMixin.call(this, () => this.refs.root, props.getPopperRefElement, Object.assign({
+ boundariesPadding: 0,
+ gpuAcceleration: false
+ }, props.popperMixinOption));
+ }
+}
\ No newline at end of file
diff --git a/src/date-picker/panel/TimePanel.jsx b/src/date-picker/panel/TimePanel.jsx
index 92e7672363..7e902d0bf8 100644
--- a/src/date-picker/panel/TimePanel.jsx
+++ b/src/date-picker/panel/TimePanel.jsx
@@ -1,12 +1,12 @@
//@flow
import React from 'react';
-import { PropTypes, Component } from '../../../libs';
+import { PropTypes } from '../../../libs';
import { limitRange } from '../utils'
import TimeSpinner from '../basic/TimeSpinner'
-import { PopperReactMixin } from '../../../libs/utils'
import Locale from '../../locale'
import type {TimePanelProps} from '../Types';
+import { PopperBase } from './PopperBase'
const mapPropsToState = (props) => {
const state: any = {
@@ -17,7 +17,7 @@ const mapPropsToState = (props) => {
return state
}
-export default class TimePanel extends Component {
+export default class TimePanel extends PopperBase {
static get propTypes() {
return Object.assign({},
@@ -37,10 +37,7 @@ export default class TimePanel extends Component {
// cancel btn is clicked
//()=>()
onCancel: PropTypes.func.isRequired,
- //()=>HtmlElement
- getPopperRefElement: PropTypes.func,//todo: make this dry
- popperMixinOption: PropTypes.object
- })
+ }, PopperBase.propTypes)
}
static get defaultProps() {
@@ -51,14 +48,7 @@ export default class TimePanel extends Component {
constructor(props: TimePanelProps) {
super(props)
-
this.state = mapPropsToState(props)
- //todo: make this dry
- PopperReactMixin.call(this, () => this.refs.root, props.getPopperRefElement, Object.assign({
- boundariesPadding: 0,
- gpuAcceleration: false
- }, props.popperMixinOption));
-
}
componentWillReceiveProps(nextProps: any) {
diff --git a/src/date-picker/panel/TimeRangePanel.jsx b/src/date-picker/panel/TimeRangePanel.jsx
index d9df0dffd6..da67b10c15 100644
--- a/src/date-picker/panel/TimeRangePanel.jsx
+++ b/src/date-picker/panel/TimeRangePanel.jsx
@@ -1,12 +1,12 @@
//@flow
import React from 'react';
-import { PropTypes, Component } from '../../../libs';
+import { PropTypes } from '../../../libs';
import { limitRange, parseDate } from '../utils';
import TimeSpinner from '../basic/TimeSpinner';
-import { PopperReactMixin } from '../../../libs/utils';
import Locale from '../../locale';
import type {TimeRangePanelProps } from '../Types';
+import { PopperBase } from './PopperBase'
const MIN_TIME = parseDate('00:00:00', 'HH:mm:ss');
const MAX_TIME = parseDate('23:59:59', 'HH:mm:ss');
@@ -50,12 +50,11 @@ const mapPropsToState = props => {
return state;
};
-export default class TimeRangePanel extends Component {
+export default class TimeRangePanel extends PopperBase {
state: any;
static get propTypes() {
return Object.assign(
- {},
{
pickerWidth: PropTypes.number,
currentDates: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
@@ -71,11 +70,7 @@ export default class TimeRangePanel extends Component {
onCancel: PropTypes.func.isRequired,
// (start, end)=>(), index range indicate which field [hours, minutes, seconds] changes
onSelectRangeChange: TimeSpinner.propTypes.onSelectRangeChange,
- //()=>HtmlElement
- getPopperRefElement: PropTypes.func,
- popperMixinOption: PropTypes.object
- }
- );
+ }, PopperBase.propTypes);
}
static get defaultProps() {
@@ -94,19 +89,6 @@ export default class TimeRangePanel extends Component {
},
mapPropsToState(props)
);
-
- PopperReactMixin.call(
- this,
- () => this.refs.root,
- props.getPopperRefElement,
- Object.assign(
- {
- boundariesPadding: 0,
- gpuAcceleration: false
- },
- props.popperMixinOption
- )
- );
}
componentWillReceiveProps(nextProps: any) {
diff --git a/src/date-picker/panel/TimeSelectPanel.jsx b/src/date-picker/panel/TimeSelectPanel.jsx
index a1cea9dcf0..25c333d91d 100644
--- a/src/date-picker/panel/TimeSelectPanel.jsx
+++ b/src/date-picker/panel/TimeSelectPanel.jsx
@@ -1,20 +1,34 @@
//@flow
import React from 'react';
-import { PropTypes, Component } from '../../../libs';
-import { PopperReactMixin } from '../../../libs/utils'
+import { PropTypes } from '../../../libs';
import { scrollIntoView } from '../../../libs/utils/dom';
import { Scrollbar } from '../../scrollbar'
import type {TimeSelectPanelProps } from '../Types';
+import { PopperBase } from './PopperBase'
+
+export default class TimeSelectPanel extends PopperBase {
+
+ static get propTypes() {
+ return Object.assign({
+ start: PropTypes.string,
+ end: PropTypes.string,
+ step: PropTypes.string,
+ minTime: PropTypes.string,
+ maxTime: PropTypes.string,
+ value: PropTypes.string,
+ onPicked: PropTypes.func,
+ //(string)=>date
+ dateParser: PropTypes.func.isRequired,
+ //()=>HtmlElement
+ getPopperRefElement: PropTypes.func,
+ popperMixinOption: PropTypes.object
+ }, PopperBase.propTypes)
+ }
-export default class TimeSelectPanel extends Component {
constructor(props: TimeSelectPanelProps) {
super(props);
- PopperReactMixin.call(this, () => this.refs.root, this.props.getPopperRefElement, Object.assign({
- boundariesPadding: 0,
- gpuAcceleration: false
- }, props.popperMixinOption));
}
handleClick(item: any) {
@@ -90,22 +104,6 @@ TimeSelectPanel.items = ({ start, end, step, minTime, maxTime }) => {
return result;
}
-
-TimeSelectPanel.propTypes = {
- start: PropTypes.string,
- end: PropTypes.string,
- step: PropTypes.string,
- minTime: PropTypes.string,
- maxTime: PropTypes.string,
- value: PropTypes.string,
- onPicked: PropTypes.func,
- //(string)=>date
- dateParser: PropTypes.func.isRequired,
- //()=>HtmlElement
- getPopperRefElement: PropTypes.func,
- popperMixinOption: PropTypes.object
-};
-
TimeSelectPanel.defaultProps = {
start: '09:00',
end: '18:00',