]> git.immae.eu Git - github/fretlink/time-picker.git/commitdiff
Lift disabledHours to Panel
authorWei Zhu <yesmeck@gmail.com>
Fri, 23 Feb 2018 03:16:42 +0000 (11:16 +0800)
committerWei Zhu <yesmeck@gmail.com>
Fri, 23 Feb 2018 03:16:42 +0000 (11:16 +0800)
src/Combobox.jsx
src/Panel.jsx

index 19fbd196e3d5f51654322ea316447c314e598d82..ae53356ebce064a6206f2350f8c4c9086954b5b0 100644 (file)
@@ -37,6 +37,7 @@ class Combobox extends Component {
     disabledSeconds: PropTypes.func,
     onCurrentSelectPanelChange: PropTypes.func,
     use12Hours: PropTypes.bool,
+    isAM: PropTypes.bool,
   };
 
   onItemChange = (type, itemValue) => {
@@ -45,7 +46,7 @@ class Combobox extends Component {
 
     if (type === 'hour') {
       if (use12Hours) {
-        if (this.isAM()) {
+        if (this.props.isAM) {
           value.hour(+itemValue % 12);
         } else {
           value.hour((+itemValue % 12) + 12);
@@ -83,20 +84,12 @@ class Combobox extends Component {
     if (!showHour) {
       return null;
     }
-    let disabledOptions = disabledHours();
+    const disabledOptions = disabledHours();
     let hourOptionsAdj;
     let hourAdj;
     if (use12Hours) {
       hourOptionsAdj = [12].concat(hourOptions.filter(h => h < 12 && h > 0));
       hourAdj = (hour % 12) || 12;
-
-      if (Array.isArray(disabledOptions)) {
-        if (this.isAM()) {
-          disabledOptions = disabledOptions.filter(h => h < 12).map(h => (h === 0 ? 12 : h));
-        } else {
-          disabledOptions = disabledOptions.map(h => (h === 12 ? 12 : h - 12));
-        }
-      }
     } else {
       hourOptionsAdj = hourOptions;
       hourAdj = hour;
@@ -164,7 +157,7 @@ class Combobox extends Component {
                           .map(c => format.match(/\sA/) ? c.toUpperCase() : c)
                           .map(c => ({ value: c }));
 
-    const selected = this.isAM() ? 0 : 1;
+    const selected = this.props.isAM ? 0 : 1;
 
     return (
       <Select
@@ -178,11 +171,6 @@ class Combobox extends Component {
     );
   }
 
-  isAM() {
-    const value = (this.props.value || this.props.defaultOpenValue);
-    return value.hour() >= 0 && value.hour() < 12;
-  }
-
   render() {
     const { prefixCls, defaultOpenValue } = this.props;
     const value = this.props.value || defaultOpenValue;
index 1adb19a27c32ac122f4425e414b25a39917fc781..648944d5182ed067e7f795c55727b3c0f8b96b25 100644 (file)
@@ -93,9 +93,27 @@ class Panel extends Component {
     this.props.onEsc();
   }
 
+  disabledHours = () => {
+    const { use12Hours, disabledHours } = this.props;
+    let disabledOptions = disabledHours();
+    if (use12Hours && Array.isArray(disabledOptions)) {
+      if (this.isAM()) {
+        disabledOptions = disabledOptions.filter(h => h < 12).map(h => (h === 0 ? 12 : h));
+      } else {
+        disabledOptions = disabledOptions.map(h => (h === 12 ? 12 : h - 12));
+      }
+    }
+    return disabledOptions;
+  }
+
+  isAM() {
+    const value = (this.state.value || this.props.defaultOpenValue);
+    return value.hour() >= 0 && value.hour() < 12;
+  }
+
   render() {
     const {
-      prefixCls, className, placeholder, disabledHours, disabledMinutes,
+      prefixCls, className, placeholder, disabledMinutes,
       disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond,
       format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear,
       focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep, inputReadOnly,
@@ -103,7 +121,7 @@ class Panel extends Component {
     const {
       value, currentSelectPanel,
     } = this.state;
-    const disabledHourOptions = disabledHours();
+    const disabledHourOptions = this.disabledHours();
     const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null);
     const disabledSecondOptions = disabledSeconds(value ? value.hour() : null,
       value ? value.minute() : null);
@@ -131,7 +149,7 @@ class Panel extends Component {
           hourOptions={hourOptions}
           minuteOptions={minuteOptions}
           secondOptions={secondOptions}
-          disabledHours={disabledHours}
+          disabledHours={this.disabledHours}
           disabledMinutes={disabledMinutes}
           disabledSeconds={disabledSeconds}
           onChange={this.onChange}
@@ -153,11 +171,12 @@ class Panel extends Component {
           hourOptions={hourOptions}
           minuteOptions={minuteOptions}
           secondOptions={secondOptions}
-          disabledHours={disabledHours}
+          disabledHours={this.disabledHours}
           disabledMinutes={disabledMinutes}
           disabledSeconds={disabledSeconds}
           onCurrentSelectPanelChange={this.onCurrentSelectPanelChange}
           use12Hours={use12Hours}
+          isAM={this.isAM()}
         />
         {addon(this)}
       </div>