]> git.immae.eu Git - github/fretlink/time-picker.git/commitdiff
add focus/blur support.
authorChristian Senk <senk.christian@googlemail.com>
Tue, 12 Sep 2017 17:12:40 +0000 (19:12 +0200)
committerChristian Senk <senk.christian@googlemail.com>
Tue, 12 Sep 2017 17:12:40 +0000 (19:12 +0200)
src/TimePicker.jsx
tests/TimePicker.spec.jsx

index 2c6a1f16ea69f5825fd7b7f30963ea308a3528ca..6e164579bb6242452c750c14254d69565abeae9f 100644 (file)
@@ -42,6 +42,8 @@ export default class Picker extends Component {
     onChange: PropTypes.func,
     onOpen: PropTypes.func,
     onClose: PropTypes.func,
+    onFocus: PropTypes.func,
+    onBlur: PropTypes.func,
     addon: PropTypes.func,
     name: PropTypes.string,
     autoComplete: PropTypes.string,
@@ -69,6 +71,8 @@ export default class Picker extends Component {
     onChange: noop,
     onOpen: noop,
     onClose: noop,
+    onFocus: noop,
+    onBlur: noop,
     addon: noop,
     use12Hours: false,
   };
@@ -231,6 +235,7 @@ export default class Picker extends Component {
     const {
       prefixCls, placeholder, placement, align,
       disabled, transitionName, style, className, getPopupContainer, name, autoComplete,
+      onFocus, onBlur,
     } = this.props;
     const { open, value } = this.state;
     const popupClassName = this.getPopupClassName();
@@ -260,6 +265,8 @@ export default class Picker extends Component {
             onKeyDown={this.onKeyDown}
             disabled={disabled} value={value && value.format(this.getFormat()) || ''}
             autoComplete={autoComplete}
+            onFocus={onFocus}
+            onBlur={onBlur}
           />
           <span className={`${prefixCls}-icon`}/>
         </span>
index 0dd6c101ccaf9643c01c24f4b53e2bcd1905fe8c..d698e48ab17b610eeb3fe12491cc9df8ff977526 100644 (file)
@@ -208,4 +208,40 @@ describe('TimePicker', () => {
       });
     });
   });
+
+  describe('other operations', () => {
+    it('focus/blur correctly', (done) => {
+      let focus = false;
+      let blur = false;
+
+      const picker = renderPicker({
+        onFocus: () => {
+          focus = true;
+        },
+        onBlur: () => {
+          blur = true;
+        },
+      });
+      expect(picker.state.open).not.to.be.ok();
+      const input = TestUtils.scryRenderedDOMComponentsWithClass(picker,
+        'rc-time-picker-input')[0];
+
+      async.series([(next) => {
+        Simulate.focus(input);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(picker.state.open).to.be(false);
+
+        Simulate.blur(input);
+        setTimeout(next, 100);
+      }, (next) => {
+        expect(focus).to.be(true);
+        expect(blur).to.be(true);
+
+        next();
+      }], () => {
+        done();
+      });
+    });
+  });
 });