this[field] = component;
}
-class Picker extends Component {
+export default class Picker extends Component {
static propTypes = {
prefixCls: PropTypes.string,
clearText: PropTypes.string,
showSecond: PropTypes.bool,
style: PropTypes.object,
className: PropTypes.string,
+ popupClassName: PropTypes.string,
disabledHours: PropTypes.func,
disabledMinutes: PropTypes.func,
disabledSeconds: PropTypes.func,
onChange: PropTypes.func,
onOpen: PropTypes.func,
onClose: PropTypes.func,
+ onFocus: PropTypes.func,
+ onBlur: PropTypes.func,
addon: PropTypes.func,
name: PropTypes.string,
autoComplete: PropTypes.string,
use12Hours: PropTypes.bool,
+ hourStep: PropTypes.number,
+ minuteStep: PropTypes.number,
+ secondStep: PropTypes.number,
+ focusOnOpen: PropTypes.bool,
+ onKeyDown: PropTypes.func,
};
static defaultProps = {
defaultOpen: false,
style: {},
className: '',
+ popupClassName: '',
align: {},
defaultOpenValue: moment(),
allowEmpty: true,
onChange: noop,
onOpen: noop,
onClose: noop,
+ onFocus: noop,
+ onBlur: noop,
addon: noop,
use12Hours: false,
+ focusOnOpen: false,
+ onKeyDown: noop,
};
constructor(props) {
prefixCls, placeholder, disabledHours,
disabledMinutes, disabledSeconds, hideDisabledOptions,
allowEmpty, showHour, showMinute, showSecond, defaultOpenValue, clearText,
- addon, use12Hours,
+ addon, use12Hours, focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep,
} = this.props;
return (
<Panel
disabledSeconds={disabledSeconds}
hideDisabledOptions={hideDisabledOptions}
use12Hours={use12Hours}
+ hourStep={hourStep}
+ minuteStep={minuteStep}
+ secondStep={secondStep}
addon={addon}
+ focusOnOpen={focusOnOpen}
+ onKeyDown={onKeyDown}
/>
);
}
+ getPopupClassName() {
+ const { showHour, showMinute, showSecond, use12Hours, prefixCls } = this.props;
+ let popupClassName = this.props.popupClassName;
+ // Keep it for old compatibility
+ if ((!showHour || !showMinute || !showSecond) && !use12Hours) {
+ popupClassName += ` ${prefixCls}-panel-narrow`;
+ }
+ let selectColumnCount = 0;
+ if (showHour) {
+ selectColumnCount += 1;
+ }
+ if (showMinute) {
+ selectColumnCount += 1;
+ }
+ if (showSecond) {
+ selectColumnCount += 1;
+ }
+ if (use12Hours) {
+ selectColumnCount += 1;
+ }
+ popupClassName += ` ${prefixCls}-panel-column-${selectColumnCount}`;
+ return popupClassName;
+ }
+
setOpen(open) {
const { onOpen, onClose } = this.props;
if (this.state.open !== open) {
render() {
const {
prefixCls, placeholder, placement, align,
- disabled, transitionName, style, className, showHour,
- showMinute, showSecond, getPopupContainer, name, autoComplete,
- use12Hours,
+ disabled, transitionName, style, className, getPopupContainer, name, autoComplete,
+ onFocus, onBlur,
} = this.props;
const { open, value } = this.state;
- let popupClassName;
- if ((!showHour || !showMinute || !showSecond) && !use12Hours) {
- popupClassName = `${prefixCls}-panel-narrow`;
- }
+ const popupClassName = this.getPopupClassName();
return (
<Trigger
prefixCls={`${prefixCls}-panel`}
onKeyDown={this.onKeyDown}
disabled={disabled} value={value && value.format(this.getFormat()) || ''}
autoComplete={autoComplete}
+ onFocus={onFocus}
+ onBlur={onBlur}
/>
<span className={`${prefixCls}-icon`}/>
</span>
);
}
}
-
-export default Picker;