X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=src%2Fmodule%2FPanel.jsx;h=12d23f718db7d9aa75c9dfb7bc55173635e01a76;hb=0e62bf0b7bdc260e882fd185492939cbaed04d56;hp=4c7eaae17048f77b747fe0c6d8544ba608c532d7;hpb=886312ffa19f856eaf4c60f096d6afe7b44359a9;p=github%2Ffretlink%2Ftime-picker.git diff --git a/src/module/Panel.jsx b/src/module/Panel.jsx index 4c7eaae..12d23f7 100644 --- a/src/module/Panel.jsx +++ b/src/module/Panel.jsx @@ -6,10 +6,12 @@ import Combobox from './Combobox'; function noop() { } -function generateOptions(length) { +function generateOptions(length, disabledOptions, hideDisabledOptions) { const arr = []; - for(let i = 0; i < length; i++){ - arr.push(i); + for (let value = 0; value < length; value++) { + if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) { + arr.push(value); + } } return arr; } @@ -22,9 +24,10 @@ const Panel = React.createClass({ placeholder: PropTypes.string, gregorianCalendarLocale: PropTypes.object, formatter: PropTypes.object, - hourOptions: PropTypes.array, - minuteOptions: PropTypes.array, - secondOptions: PropTypes.array, + disabledHours: PropTypes.array, + disabledMinutes: PropTypes.array, + disabledSeconds: PropTypes.array, + hideDisabledOptions: PropTypes.bool, onChange: PropTypes.func, onEsc: PropTypes.func, allowEmpty: PropTypes.bool, @@ -37,9 +40,10 @@ const Panel = React.createClass({ getDefaultProps() { return { - hourOptions: generateOptions(24), - minuteOptions: generateOptions(60), - secondOptions: generateOptions(60), + disabledHours: null, + disabledMinutes: null, + disabledSeconds: null, + hideDisabledOptions: false, onChange: noop, onClear: noop, }; @@ -48,6 +52,7 @@ const Panel = React.createClass({ getInitialState() { return { value: this.props.value, + selectionRange: [], }; }, @@ -69,9 +74,17 @@ const Panel = React.createClass({ this.props.onClear(); }, + onCurrentSelectPanelChange(currentSelectPanel) { + this.setState({ currentSelectPanel }); + }, + render() { - const { locale, prefixCls, placeholder, hourOptions, minuteOptions, secondOptions, allowEmpty, showHour, showSecond, formatter, gregorianCalendarLocale } = this.props; + const { locale, prefixCls, placeholder, disabledHours, disabledMinutes, disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showSecond, formatter, gregorianCalendarLocale } = this.props; const value = this.state.value; + const hourOptions = generateOptions(24, disabledHours, hideDisabledOptions); + const minuteOptions = generateOptions(60, disabledMinutes, hideDisabledOptions); + const secondOptions = generateOptions(60, disabledSeconds, hideDisabledOptions); + return (
);