]> git.immae.eu Git - github/fretlink/time-picker.git/commitdiff
update disabled options
authorMG12 <wuzhao.mail@gmail.com>
Sun, 13 Dec 2015 16:50:41 +0000 (00:50 +0800)
committerMG12 <wuzhao.mail@gmail.com>
Sun, 13 Dec 2015 16:50:41 +0000 (00:50 +0800)
examples/disabled.js
examples/hidden.js
src/TimePicker.jsx
src/module/Combobox.jsx
src/module/Header.jsx
src/module/Panel.jsx
tests/Header.spec.jsx
tests/Select.spec.jsx

index 24d0068f259ec35f0bbcdb553a54407dffcb5bd5..633b8db9279e47e3b9ea45220327b4798383aa5e 100644 (file)
@@ -20,17 +20,47 @@ const formatter = new DateTimeFormat(str);
 const now = new GregorianCalendar(zhCn);
 now.setTime(Date.now());
 
+function generateOptions(length, excludedOptions) {
+  const arr = [];
+  for (let value = 0; value < length; value++) {
+    if (excludedOptions.indexOf(value) < 0) {
+      arr.push(value);
+    }
+  }
+  return arr;
+}
+
 function onChange(value) {
   console.log(value && formatter.format(value));
 }
 
+function disabledHours() {
+  return [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23];
+}
+
+function disabledMinutes(h) {
+  switch (h) {
+  case 9:
+    return generateOptions(60, [30]);
+  case 21:
+    return generateOptions(60, [0]);
+  default:
+    return generateOptions(60, [0, 30]);
+  }
+}
+
+function disabledSeconds(h, m) {
+  return [h + m % 60];
+}
+
 ReactDom.render(
   <TimePicker formatter={formatter} locale={TimePickerLocale}
               showSecond={showSecond}
               defaultValue={now}
               className="xxx"
               onChange={onChange}
-              disabledHours={[0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]}
-              disabledMinutes={[0, 2, 4, 6, 8]} />,
+              disabledHours={disabledHours}
+              disabledMinutes={disabledMinutes}
+              disabledSeconds={disabledSeconds} />,
   document.getElementById('__react-content')
 );
index 1084236b68c392c26d0fa3b17192d61470894e26..da366ccc672defe6395c46e3e40329169c692fca 100644 (file)
@@ -30,8 +30,8 @@ ReactDom.render(
               defaultValue={now}
               className="xxx"
               onChange={onChange}
-              disabledHours={[0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]}
-              disabledMinutes={[0, 2, 4, 6, 8]}
-              hideDisabledOptions={true} />,
+              disabledHours={() => [0, 1, 2, 3, 4, 5, 6, 7, 8, 22, 23]}
+              disabledMinutes={() => [0, 2, 4, 6, 8]}
+              hideDisabledOptions />,
   document.getElementById('__react-content')
 );
index fb855e29996228abd9aa5bf87b033ad000468050..ad4e834a60277cdc8d0795efd6e142a23461fc37 100644 (file)
@@ -34,9 +34,9 @@ const Picker = React.createClass({
     style: PropTypes.object,
     className: PropTypes.string,
     showSecond: PropTypes.bool,
-    disabledHours: PropTypes.array,
-    disabledMinutes: PropTypes.array,
-    disabledSeconds: PropTypes.array,
+    disabledHours: PropTypes.func,
+    disabledMinutes: PropTypes.func,
+    disabledSeconds: PropTypes.func,
     hideDisabledOptions: PropTypes.bool,
     onChange: PropTypes.func,
     onOpen: PropTypes.func,
@@ -55,9 +55,9 @@ const Picker = React.createClass({
       allowEmpty: true,
       showHour: true,
       showSecond: true,
-      disabledHours: null,
-      disabledMinutes: null,
-      disabledSeconds: null,
+      disabledHours: noop,
+      disabledMinutes: noop,
+      disabledSeconds: noop,
       hideDisabledOptions: false,
       placement: 'bottomLeft',
       onChange: noop,
index 1e172a7274c18775d9b8b9528e3e839042a17d72..7374b391e5100919c707a2f2439d1b84c2a29d37 100644 (file)
@@ -31,9 +31,9 @@ const Combobox = React.createClass({
     hourOptions: PropTypes.array,
     minuteOptions: PropTypes.array,
     secondOptions: PropTypes.array,
-    disabledHours: PropTypes.array,
-    disabledMinutes: PropTypes.array,
-    disabledSeconds: PropTypes.array,
+    disabledHours: PropTypes.func,
+    disabledMinutes: PropTypes.func,
+    disabledSeconds: PropTypes.func,
     onCurrentSelectPanelChange: PropTypes.func,
   },
 
@@ -64,10 +64,12 @@ const Combobox = React.createClass({
     if (!showHour) {
       return null;
     }
+    const disabledOptions = disabledHours();
+
     return (
       <Select
         prefixCls={prefixCls}
-        options={hourOptions.map(option => formatOption(option, disabledHours))}
+        options={hourOptions.map(option => formatOption(option, disabledOptions))}
         selectedIndex={hourOptions.indexOf(hour)}
         type="hour"
         onSelect={this.onItemChange}
@@ -77,11 +79,13 @@ const Combobox = React.createClass({
   },
 
   getMinuteSelect(minute) {
-    const { prefixCls, minuteOptions, disabledMinutes } = this.props;
+    const { prefixCls, minuteOptions, disabledMinutes, value } = this.props;
+    const disabledOptions = disabledMinutes(value.getHourOfDay());
+
     return (
       <Select
         prefixCls={prefixCls}
-        options={minuteOptions.map(option => formatOption(option, disabledMinutes))}
+        options={minuteOptions.map(option => formatOption(option, disabledOptions))}
         selectedIndex={minuteOptions.indexOf(minute)}
         type="minute"
         onSelect={this.onItemChange}
@@ -91,14 +95,16 @@ const Combobox = React.createClass({
   },
 
   getSecondSelect(second) {
-    const { prefixCls, secondOptions, disabledSeconds, showSecond } = this.props;
+    const { prefixCls, secondOptions, disabledSeconds, showSecond, value } = this.props;
     if (!showSecond) {
       return null;
     }
+    const disabledOptions = disabledSeconds(value.getHourOfDay(), value.getMinutes());
+
     return (
       <Select
         prefixCls={prefixCls}
-        options={secondOptions.map(option => formatOption(option, disabledSeconds))}
+        options={secondOptions.map(option => formatOption(option, disabledOptions))}
         selectedIndex={secondOptions.indexOf(second)}
         type="second"
         onSelect={this.onItemChange}
index fec02af9f28b8a7689f820da448680e58e3e75de..9a048dc07f3f97b68eb02328c4f46d5f2bb5b904 100644 (file)
@@ -13,9 +13,9 @@ const Header = React.createClass({
     hourOptions: PropTypes.array,
     minuteOptions: PropTypes.array,
     secondOptions: PropTypes.array,
-    disabledHours: PropTypes.array,
-    disabledMinutes: PropTypes.array,
-    disabledSeconds: PropTypes.array,
+    disabledHours: PropTypes.func,
+    disabledMinutes: PropTypes.func,
+    disabledSeconds: PropTypes.func,
     onChange: PropTypes.func,
     onClear: PropTypes.func,
     onEsc: PropTypes.func,
@@ -87,10 +87,13 @@ const Header = React.createClass({
         }
 
         // if time value is disabled, response warning.
+        const disabledHourOptions = disabledHours();
+        const disabledMinuteOptions = disabledMinutes(value.getHourOfDay());
+        const disabledSecondOptions = disabledSeconds(value.getHourOfDay(), value.getMinutes());
         if (
-          (disabledHours && disabledHours.indexOf(value.getHourOfDay()) >= 0) ||
-          (disabledMinutes && disabledMinutes.indexOf(value.getMinutes()) >= 0) ||
-          (disabledSeconds && disabledSeconds.indexOf(value.getSeconds()) >= 0)
+          (disabledHourOptions && disabledHourOptions.indexOf(value.getHourOfDay()) >= 0) ||
+          (disabledMinuteOptions && disabledMinuteOptions.indexOf(value.getMinutes()) >= 0) ||
+          (disabledSecondOptions && disabledSecondOptions.indexOf(value.getSeconds()) >= 0)
         ) {
           this.setState({
             invalid: true,
index 12d23f718db7d9aa75c9dfb7bc55173635e01a76..94d3842a608a64cde73ce73d41d87c692a960ef3 100644 (file)
@@ -24,9 +24,9 @@ const Panel = React.createClass({
     placeholder: PropTypes.string,
     gregorianCalendarLocale: PropTypes.object,
     formatter: PropTypes.object,
-    disabledHours: PropTypes.array,
-    disabledMinutes: PropTypes.array,
-    disabledSeconds: PropTypes.array,
+    disabledHours: PropTypes.func,
+    disabledMinutes: PropTypes.func,
+    disabledSeconds: PropTypes.func,
     hideDisabledOptions: PropTypes.bool,
     onChange: PropTypes.func,
     onEsc: PropTypes.func,
@@ -40,10 +40,6 @@ const Panel = React.createClass({
 
   getDefaultProps() {
     return {
-      disabledHours: null,
-      disabledMinutes: null,
-      disabledSeconds: null,
-      hideDisabledOptions: false,
       onChange: noop,
       onClear: noop,
     };
@@ -81,9 +77,12 @@ const Panel = React.createClass({
   render() {
     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);
+    const disabledHourOptions = disabledHours();
+    const disabledMinuteOptions = disabledMinutes(value.getHourOfDay());
+    const disabledSecondOptions = disabledSeconds(value.getHourOfDay(), value.getMinutes());
+    const hourOptions = generateOptions(24, disabledHourOptions, hideDisabledOptions);
+    const minuteOptions = generateOptions(60, disabledMinuteOptions, hideDisabledOptions);
+    const secondOptions = generateOptions(60, disabledSecondOptions, hideDisabledOptions);
 
     return (
       <div className={`${prefixCls}-inner`}>
index 18d61c5943c69ee456d7235461d3cd0e80b4b10d..e992279d7200b80dda075aede3c871fcbfb5fe46 100644 (file)
@@ -123,7 +123,12 @@ describe('Header', () => {
 
     it('carry disabled correctly', (done) => {
       const picker = renderPicker({
-        disabledMinutes: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]
+        disabledMinutes(h) {
+          return [h];
+        },
+        disabledSeconds(h, m) {
+          return [h + m % 60];
+        },
       });
       expect(picker.state.open).not.to.be.ok();
       const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
@@ -138,22 +143,39 @@ describe('Header', () => {
         expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
         expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
 
-        ReactDOM.findDOMNode(header).value = '12:15:78';
+        ReactDOM.findDOMNode(header).value = '10:09:78';
         Simulate.change(header);
         setTimeout(next, 100);
       }, (next) => {
         expect(picker.state.open).to.be(true);
         expect(ReactDOM.findDOMNode(header).className).to.contain('rc-time-picker-panel-input-invalid');
-        expect(ReactDOM.findDOMNode(header).value).to.be('12:15:78');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:78');
         expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
 
-        ReactDOM.findDOMNode(header).value = '12:10:78';
+        ReactDOM.findDOMNode(header).value = '10:10:78';
+        Simulate.change(header);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(picker.state.open).to.be(true);
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:11:18');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:11:18');
+
+        ReactDOM.findDOMNode(header).value = '10:09:19';
+        Simulate.change(header);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(picker.state.open).to.be(true);
+        expect(ReactDOM.findDOMNode(header).className).to.contain('rc-time-picker-panel-input-invalid');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:19');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:11:18');
+
+        ReactDOM.findDOMNode(header).value = '10:09:20';
         Simulate.change(header);
         setTimeout(next, 100);
       }, (next) => {
         expect(picker.state.open).to.be(true);
-        expect(ReactDOM.findDOMNode(header).value).to.be('12:11:18');
-        expect(ReactDOM.findDOMNode(input).value).to.be('12:11:18');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:20');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:09:20');
 
         next();
       }], () => {
@@ -163,8 +185,13 @@ describe('Header', () => {
 
     it('carry hidden correctly', (done) => {
       const picker = renderPicker({
-        disabledMinutes: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22],
-        hideDisabledOptions: true
+        disabledMinutes(h) {
+          return [h];
+        },
+        disabledSeconds(h, m) {
+          return [h + m % 60];
+        },
+        hideDisabledOptions: true,
       });
       expect(picker.state.open).not.to.be.ok();
       const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
@@ -179,22 +206,39 @@ describe('Header', () => {
         expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
         expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
 
-        ReactDOM.findDOMNode(header).value = '12:15:78';
+        ReactDOM.findDOMNode(header).value = '10:09:78';
         Simulate.change(header);
         setTimeout(next, 100);
       }, (next) => {
         expect(picker.state.open).to.be(true);
         expect(ReactDOM.findDOMNode(header).className).to.contain('rc-time-picker-panel-input-invalid');
-        expect(ReactDOM.findDOMNode(header).value).to.be('12:15:78');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:78');
         expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
 
-        ReactDOM.findDOMNode(header).value = '12:10:78';
+        ReactDOM.findDOMNode(header).value = '10:10:78';
+        Simulate.change(header);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(picker.state.open).to.be(true);
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:11:18');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:11:18');
+
+        ReactDOM.findDOMNode(header).value = '10:09:19';
+        Simulate.change(header);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(picker.state.open).to.be(true);
+        expect(ReactDOM.findDOMNode(header).className).to.contain('rc-time-picker-panel-input-invalid');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:19');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:11:18');
+
+        ReactDOM.findDOMNode(header).value = '10:09:20';
         Simulate.change(header);
         setTimeout(next, 100);
       }, (next) => {
         expect(picker.state.open).to.be(true);
-        expect(ReactDOM.findDOMNode(header).value).to.be('12:11:18');
-        expect(ReactDOM.findDOMNode(input).value).to.be('12:11:18');
+        expect(ReactDOM.findDOMNode(header).value).to.be('10:09:20');
+        expect(ReactDOM.findDOMNode(input).value).to.be('10:09:20');
 
         next();
       }], () => {
index 6dd7796e3d206cbfe2e88795cda663c81c1f2b44..f7717c7ab78b47ee81e62de3269c20f6db12f8dd 100644 (file)
@@ -29,7 +29,7 @@ describe('Select', () => {
         formatter={formatter}
         locale={TimePickerLocale}
         showSecond={showSecond}
-        defaultValue={formatTime('01:02:03', formatter)}
+        defaultValue={formatTime('01:02:04', formatter)}
         {...props}
       />, container);
   }
@@ -90,8 +90,8 @@ describe('Select', () => {
         expect(picker.state.open).to.be(true);
         header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
         expect(header).to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[0];
         const option = selector.getElementsByTagName('li')[19];
@@ -100,8 +100,8 @@ describe('Select', () => {
       }, (next) => {
         expect(change).to.be.ok();
         expect(change.getHourOfDay()).to.be(19);
-        expect(ReactDOM.findDOMNode(header).value).to.be('19:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('19:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('19:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('19:02:04');
         expect(picker.state.open).to.be.ok();
 
         next();
@@ -129,8 +129,8 @@ describe('Select', () => {
         expect(picker.state.open).to.be(true);
         header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
         expect(header).to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[1];
         const option = selector.getElementsByTagName('li')[19];
@@ -139,8 +139,8 @@ describe('Select', () => {
       }, (next) => {
         expect(change).to.be.ok();
         expect(change.getMinutes()).to.be(19);
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:19:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:19:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:19:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:19:04');
         expect(picker.state.open).to.be.ok();
 
         next();
@@ -168,8 +168,8 @@ describe('Select', () => {
         expect(picker.state.open).to.be(true);
         header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
         expect(header).to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[2];
         const option = selector.getElementsByTagName('li')[19];
@@ -194,7 +194,12 @@ describe('Select', () => {
         onChange(v) {
           change = v;
         },
-        disabledMinutes: [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22]
+        disabledMinutes(h) {
+          return [h];
+        },
+        disabledSeconds(h, m) {
+          return [h + m % 60];
+        },
       });
       expect(picker.state.open).not.to.be.ok();
       const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
@@ -208,17 +213,27 @@ describe('Select', () => {
         expect(picker.state.open).to.be(true);
         header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
         expect(header).to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[1];
-        const option = selector.getElementsByTagName('li')[6];
+        const option = selector.getElementsByTagName('li')[1];
         Simulate.click(option);
         setTimeout(next, 100);
       }, (next) => {
         expect(change).not.to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
+        expect(picker.state.open).to.be.ok();
+
+        const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[2];
+        const option = selector.getElementsByTagName('li')[3];
+        Simulate.click(option);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(change).not.to.be.ok();
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
         expect(picker.state.open).to.be.ok();
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[1];
@@ -228,8 +243,8 @@ describe('Select', () => {
       }, (next) => {
         expect(change).to.be.ok();
         expect(change.getMinutes()).to.be(7);
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:07:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:07:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:07:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:07:04');
         expect(picker.state.open).to.be.ok();
 
         next();
@@ -244,8 +259,10 @@ describe('Select', () => {
         onChange(v) {
           change = v;
         },
-        disabledHours: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23],
-        hideDisabledOptions: true
+        disabledHours() {
+          return [1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23];
+        },
+        hideDisabledOptions: true,
       });
       expect(picker.state.open).not.to.be.ok();
       const input = TestUtils.scryRenderedDOMComponentsWithClass(picker, 'rc-time-picker-input')[0];
@@ -259,8 +276,8 @@ describe('Select', () => {
         expect(picker.state.open).to.be(true);
         header = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-input')[0];
         expect(header).to.be.ok();
-        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('01:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('01:02:04');
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[0];
         const option = selector.getElementsByTagName('li')[3];
@@ -269,8 +286,8 @@ describe('Select', () => {
       }, (next) => {
         expect(change).to.be.ok();
         expect(change.getHourOfDay()).to.be(6);
-        expect(ReactDOM.findDOMNode(header).value).to.be('06:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('06:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('06:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('06:02:04');
         expect(picker.state.open).to.be.ok();
 
         const selector = TestUtils.scryRenderedDOMComponentsWithClass(picker.panelInstance, 'rc-time-picker-panel-select')[0];
@@ -280,8 +297,8 @@ describe('Select', () => {
       }, (next) => {
         expect(change).to.be.ok();
         expect(change.getHourOfDay()).to.be(8);
-        expect(ReactDOM.findDOMNode(header).value).to.be('08:02:03');
-        expect(ReactDOM.findDOMNode(input).value).to.be('08:02:03');
+        expect(ReactDOM.findDOMNode(header).value).to.be('08:02:04');
+        expect(ReactDOM.findDOMNode(input).value).to.be('08:02:04');
         expect(picker.state.open).to.be.ok();
 
         next();