diff options
Diffstat (limited to 'src/Panel.jsx')
-rw-r--r-- | src/Panel.jsx | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/Panel.jsx b/src/Panel.jsx index 1adb19a..648944d 100644 --- a/src/Panel.jsx +++ b/src/Panel.jsx | |||
@@ -93,9 +93,27 @@ class Panel extends Component { | |||
93 | this.props.onEsc(); | 93 | this.props.onEsc(); |
94 | } | 94 | } |
95 | 95 | ||
96 | disabledHours = () => { | ||
97 | const { use12Hours, disabledHours } = this.props; | ||
98 | let disabledOptions = disabledHours(); | ||
99 | if (use12Hours && Array.isArray(disabledOptions)) { | ||
100 | if (this.isAM()) { | ||
101 | disabledOptions = disabledOptions.filter(h => h < 12).map(h => (h === 0 ? 12 : h)); | ||
102 | } else { | ||
103 | disabledOptions = disabledOptions.map(h => (h === 12 ? 12 : h - 12)); | ||
104 | } | ||
105 | } | ||
106 | return disabledOptions; | ||
107 | } | ||
108 | |||
109 | isAM() { | ||
110 | const value = (this.state.value || this.props.defaultOpenValue); | ||
111 | return value.hour() >= 0 && value.hour() < 12; | ||
112 | } | ||
113 | |||
96 | render() { | 114 | render() { |
97 | const { | 115 | const { |
98 | prefixCls, className, placeholder, disabledHours, disabledMinutes, | 116 | prefixCls, className, placeholder, disabledMinutes, |
99 | disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond, | 117 | disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond, |
100 | format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear, | 118 | format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear, |
101 | focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep, inputReadOnly, | 119 | focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep, inputReadOnly, |
@@ -103,7 +121,7 @@ class Panel extends Component { | |||
103 | const { | 121 | const { |
104 | value, currentSelectPanel, | 122 | value, currentSelectPanel, |
105 | } = this.state; | 123 | } = this.state; |
106 | const disabledHourOptions = disabledHours(); | 124 | const disabledHourOptions = this.disabledHours(); |
107 | const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null); | 125 | const disabledMinuteOptions = disabledMinutes(value ? value.hour() : null); |
108 | const disabledSecondOptions = disabledSeconds(value ? value.hour() : null, | 126 | const disabledSecondOptions = disabledSeconds(value ? value.hour() : null, |
109 | value ? value.minute() : null); | 127 | value ? value.minute() : null); |
@@ -131,7 +149,7 @@ class Panel extends Component { | |||
131 | hourOptions={hourOptions} | 149 | hourOptions={hourOptions} |
132 | minuteOptions={minuteOptions} | 150 | minuteOptions={minuteOptions} |
133 | secondOptions={secondOptions} | 151 | secondOptions={secondOptions} |
134 | disabledHours={disabledHours} | 152 | disabledHours={this.disabledHours} |
135 | disabledMinutes={disabledMinutes} | 153 | disabledMinutes={disabledMinutes} |
136 | disabledSeconds={disabledSeconds} | 154 | disabledSeconds={disabledSeconds} |
137 | onChange={this.onChange} | 155 | onChange={this.onChange} |
@@ -153,11 +171,12 @@ class Panel extends Component { | |||
153 | hourOptions={hourOptions} | 171 | hourOptions={hourOptions} |
154 | minuteOptions={minuteOptions} | 172 | minuteOptions={minuteOptions} |
155 | secondOptions={secondOptions} | 173 | secondOptions={secondOptions} |
156 | disabledHours={disabledHours} | 174 | disabledHours={this.disabledHours} |
157 | disabledMinutes={disabledMinutes} | 175 | disabledMinutes={disabledMinutes} |
158 | disabledSeconds={disabledSeconds} | 176 | disabledSeconds={disabledSeconds} |
159 | onCurrentSelectPanelChange={this.onCurrentSelectPanelChange} | 177 | onCurrentSelectPanelChange={this.onCurrentSelectPanelChange} |
160 | use12Hours={use12Hours} | 178 | use12Hours={use12Hours} |
179 | isAM={this.isAM()} | ||
161 | /> | 180 | /> |
162 | {addon(this)} | 181 | {addon(this)} |
163 | </div> | 182 | </div> |