aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMarek Piechut <marek.piechut@gmail.com>2017-10-09 13:38:00 +0200
committerMarek Piechut <marek.piechut@gmail.com>2017-10-09 13:38:00 +0200
commit5827568ef882ae5a474f37ff5c843e931528ebe8 (patch)
treede49d29b22db47adcaba3dee2bdf94227fdae665 /src
parent35d5ed7815f4707c79565a45261ffadc21d604be (diff)
downloadtime-picker-5827568ef882ae5a474f37ff5c843e931528ebe8.tar.gz
time-picker-5827568ef882ae5a474f37ff5c843e931528ebe8.tar.zst
time-picker-5827568ef882ae5a474f37ff5c843e931528ebe8.zip
Add hourStep, minuteStep and secondStep props to control intervals in picker
Diffstat (limited to 'src')
-rw-r--r--src/Panel.jsx20
-rw-r--r--src/TimePicker.jsx8
2 files changed, 22 insertions, 6 deletions
diff --git a/src/Panel.jsx b/src/Panel.jsx
index 1953ad4..468eb37 100644
--- a/src/Panel.jsx
+++ b/src/Panel.jsx
@@ -8,9 +8,9 @@ import classNames from 'classnames';
8function noop() { 8function noop() {
9} 9}
10 10
11function generateOptions(length, disabledOptions, hideDisabledOptions) { 11function generateOptions(length, disabledOptions, hideDisabledOptions, step = 1) {
12 const arr = []; 12 const arr = [];
13 for (let value = 0; value < length; value++) { 13 for (let value = 0; value < length; value += step) {
14 if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) { 14 if (!disabledOptions || disabledOptions.indexOf(value) < 0 || !hideDisabledOptions) {
15 arr.push(value); 15 arr.push(value);
16 } 16 }
@@ -39,6 +39,9 @@ class Panel extends Component {
39 showSecond: PropTypes.bool, 39 showSecond: PropTypes.bool,
40 onClear: PropTypes.func, 40 onClear: PropTypes.func,
41 use12Hours: PropTypes.bool, 41 use12Hours: PropTypes.bool,
42 hourStep: PropTypes.number,
43 minuteStep: PropTypes.number,
44 secondStep: PropTypes.number,
42 addon: PropTypes.func, 45 addon: PropTypes.func,
43 }; 46 };
44 47
@@ -90,6 +93,7 @@ class Panel extends Component {
90 prefixCls, className, placeholder, disabledHours, disabledMinutes, 93 prefixCls, className, placeholder, disabledHours, disabledMinutes,
91 disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond, 94 disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond,
92 format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear, 95 format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear,
96 hourStep, minuteStep, secondStep,
93 } = this.props; 97 } = this.props;
94 const { 98 const {
95 value, currentSelectPanel, 99 value, currentSelectPanel,
@@ -98,9 +102,15 @@ class Panel extends Component {
98 const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null); 102 const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null);
99 const disabledSecondOptions = disabledSeconds(value ? value.hour() : null, 103 const disabledSecondOptions = disabledSeconds(value ? value.hour() : null,
100 value ? value.minute() : null); 104 value ? value.minute() : null);
101 const hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions); 105 const hourOptions = generateOptions(
102 const minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions); 106 24, disabledHourOptions, hideDisabledOptions, hourStep
103 const secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions); 107 );
108 const minuteOptions = generateOptions(
109 60, disabledMinuteOptions, hideDisabledOptions, minuteStep
110 );
111 const secondOptions = generateOptions(
112 60, disabledSecondOptions, hideDisabledOptions, secondStep
113 );
104 114
105 return ( 115 return (
106 <div className={classNames({ [`${prefixCls}-inner`]: true, [className]: !!className })}> 116 <div className={classNames({ [`${prefixCls}-inner`]: true, [className]: !!className })}>
diff --git a/src/TimePicker.jsx b/src/TimePicker.jsx
index 2c6a1f1..85dc3e2 100644
--- a/src/TimePicker.jsx
+++ b/src/TimePicker.jsx
@@ -46,6 +46,9 @@ export default class Picker extends Component {
46 name: PropTypes.string, 46 name: PropTypes.string,
47 autoComplete: PropTypes.string, 47 autoComplete: PropTypes.string,
48 use12Hours: PropTypes.bool, 48 use12Hours: PropTypes.bool,
49 hourStep: PropTypes.number,
50 minuteStep: PropTypes.number,
51 secondStep: PropTypes.number,
49 }; 52 };
50 53
51 static defaultProps = { 54 static defaultProps = {
@@ -157,7 +160,7 @@ export default class Picker extends Component {
157 prefixCls, placeholder, disabledHours, 160 prefixCls, placeholder, disabledHours,
158 disabledMinutes, disabledSeconds, hideDisabledOptions, 161 disabledMinutes, disabledSeconds, hideDisabledOptions,
159 allowEmpty, showHour, showMinute, showSecond, defaultOpenValue, clearText, 162 allowEmpty, showHour, showMinute, showSecond, defaultOpenValue, clearText,
160 addon, use12Hours, 163 addon, use12Hours, hourStep, minuteStep, secondStep,
161 } = this.props; 164 } = this.props;
162 return ( 165 return (
163 <Panel 166 <Panel
@@ -180,6 +183,9 @@ export default class Picker extends Component {
180 disabledSeconds={disabledSeconds} 183 disabledSeconds={disabledSeconds}
181 hideDisabledOptions={hideDisabledOptions} 184 hideDisabledOptions={hideDisabledOptions}
182 use12Hours={use12Hours} 185 use12Hours={use12Hours}
186 hourStep={hourStep}
187 minuteStep={minuteStep}
188 secondStep={secondStep}
183 addon={addon} 189 addon={addon}
184 /> 190 />
185 ); 191 );