]> git.immae.eu Git - github/fretlink/time-picker.git/blobdiff - src/module/Header.jsx
update test case and fix bugs
[github/fretlink/time-picker.git] / src / module / Header.jsx
index ef88948f8e1cbaad5fe0dbec24659ee2ddd5e4e3..fec02af9f28b8a7689f820da448680e58e3e75de 100644 (file)
@@ -13,6 +13,9 @@ const Header = React.createClass({
     hourOptions: PropTypes.array,
     minuteOptions: PropTypes.array,
     secondOptions: PropTypes.array,
+    disabledHours: PropTypes.array,
+    disabledMinutes: PropTypes.array,
+    disabledSeconds: PropTypes.array,
     onChange: PropTypes.func,
     onClear: PropTypes.func,
     onEsc: PropTypes.func,
@@ -54,7 +57,7 @@ const Header = React.createClass({
       str,
     });
     let value = null;
-    const {formatter, gregorianCalendarLocale, hourOptions, minuteOptions, secondOptions, onChange, allowEmpty} = this.props;
+    const {formatter, gregorianCalendarLocale, hourOptions, minuteOptions, secondOptions, disabledHours, disabledMinutes, disabledSeconds, onChange, allowEmpty} = this.props;
 
     if (str) {
       const originalValue = this.props.value;
@@ -71,6 +74,7 @@ const Header = React.createClass({
       }
 
       if (value) {
+        // if time value not allowed, response warning.
         if (
           hourOptions.indexOf(value.getHourOfDay()) < 0 ||
           minuteOptions.indexOf(value.getMinutes()) < 0 ||
@@ -82,6 +86,18 @@ const Header = React.createClass({
           return;
         }
 
+        // if time value is disabled, response warning.
+        if (
+          (disabledHours && disabledHours.indexOf(value.getHourOfDay()) >= 0) ||
+          (disabledMinutes && disabledMinutes.indexOf(value.getMinutes()) >= 0) ||
+          (disabledSeconds && disabledSeconds.indexOf(value.getSeconds()) >= 0)
+        ) {
+          this.setState({
+            invalid: true,
+          });
+          return;
+        }
+
         if (originalValue && value) {
           if (
             originalValue.getHourOfDay() !== value.getHourOfDay() ||