@@ -4,7 +4,7 @@ import classNames from 'classnames';
44import Header from './Header' ;
55import Combobox from './Combobox' ;
66
7- function noop ( ) { }
7+ function noop ( ) { }
88
99function generateOptions ( length , disabledOptions , hideDisabledOptions , step = 1 ) {
1010 const arr = [ ] ;
@@ -16,7 +16,7 @@ function generateOptions(length, disabledOptions, hideDisabledOptions, step = 1)
1616 return arr ;
1717}
1818
19- function toNearestValidTime ( time , hourOptions , minuteOptions , secondOptions ) {
19+ function toNearestValidTime ( time , hourOptions , minuteOptions , secondOptions , millisecondOptions ) {
2020 const hour = hourOptions
2121 . slice ( )
2222 . sort ( ( a , b ) => Math . abs ( time . hour ( ) - a ) - Math . abs ( time . hour ( ) - b ) ) [ 0 ] ;
@@ -26,7 +26,10 @@ function toNearestValidTime(time, hourOptions, minuteOptions, secondOptions) {
2626 const second = secondOptions
2727 . slice ( )
2828 . sort ( ( a , b ) => Math . abs ( time . second ( ) - a ) - Math . abs ( time . second ( ) - b ) ) [ 0 ] ;
29- return moment ( `${ hour } :${ minute } :${ second } ` , 'HH:mm:ss' ) ;
29+ const millisecond = millisecondOptions
30+ . slice ( )
31+ . sort ( ( a , b ) => Math . abs ( time . millisecond ( ) - a ) - Math . abs ( time . millisecond ( ) - b ) ) [ 0 ] ;
32+ return moment ( `${ hour } :${ minute } :${ second } :${ millisecond } ` , 'HH:mm:ss:SS' ) ;
3033}
3134
3235class Panel extends Component {
@@ -36,6 +39,7 @@ class Panel extends Component {
3639 disabledHours : noop ,
3740 disabledMinutes : noop ,
3841 disabledSeconds : noop ,
42+ disabledMilliseconds : noop ,
3943 defaultOpenValue : moment ( ) ,
4044 use12Hours : false ,
4145 addon : noop ,
@@ -104,10 +108,12 @@ class Panel extends Component {
104108 placeholder,
105109 disabledMinutes,
106110 disabledSeconds,
111+ disabledMilliseconds,
107112 hideDisabledOptions,
108113 showHour,
109114 showMinute,
110115 showSecond,
116+ showMillisecond,
111117 format,
112118 defaultOpenValue,
113119 clearText,
@@ -119,6 +125,7 @@ class Panel extends Component {
119125 hourStep,
120126 minuteStep,
121127 secondStep,
128+ millisecondStep,
122129 inputReadOnly,
123130 clearIcon,
124131 } = this . props ;
@@ -129,6 +136,11 @@ class Panel extends Component {
129136 value ? value . hour ( ) : null ,
130137 value ? value . minute ( ) : null ,
131138 ) ;
139+ const disabledMillisecondOptions = disabledMilliseconds (
140+ value ? value . hour ( ) : null ,
141+ value ? value . minute ( ) : null ,
142+ value ? value . second ( ) : null ,
143+ ) ;
132144 const hourOptions = generateOptions ( 24 , disabledHourOptions , hideDisabledOptions , hourStep ) ;
133145 const minuteOptions = generateOptions (
134146 60 ,
@@ -142,12 +154,19 @@ class Panel extends Component {
142154 hideDisabledOptions ,
143155 secondStep ,
144156 ) ;
157+ const millisecondOptions = generateOptions (
158+ 100 ,
159+ disabledMillisecondOptions ,
160+ hideDisabledOptions ,
161+ millisecondStep ,
162+ ) ;
145163
146164 const validDefaultOpenValue = toNearestValidTime (
147165 defaultOpenValue ,
148166 hourOptions ,
149167 minuteOptions ,
150168 secondOptions ,
169+ millisecondOptions ,
151170 ) ;
152171
153172 return (
@@ -164,9 +183,11 @@ class Panel extends Component {
164183 hourOptions = { hourOptions }
165184 minuteOptions = { minuteOptions }
166185 secondOptions = { secondOptions }
186+ millisecondOptions = { millisecondOptions }
167187 disabledHours = { this . disabledHours }
168188 disabledMinutes = { disabledMinutes }
169189 disabledSeconds = { disabledSeconds }
190+ disabledMilliseconds = { disabledMilliseconds }
170191 onChange = { this . onChange }
171192 focusOnOpen = { focusOnOpen }
172193 onKeyDown = { onKeyDown }
@@ -183,12 +204,15 @@ class Panel extends Component {
183204 showHour = { showHour }
184205 showMinute = { showMinute }
185206 showSecond = { showSecond }
207+ showMillisecond = { showMillisecond }
186208 hourOptions = { hourOptions }
187209 minuteOptions = { minuteOptions }
188210 secondOptions = { secondOptions }
211+ millisecondOptions = { millisecondOptions }
189212 disabledHours = { this . disabledHours }
190213 disabledMinutes = { disabledMinutes }
191214 disabledSeconds = { disabledSeconds }
215+ disabledMilliseconds = { disabledMilliseconds }
192216 onCurrentSelectPanelChange = { this . onCurrentSelectPanelChange }
193217 use12Hours = { use12Hours }
194218 onEsc = { onEsc }
0 commit comments