]> git.immae.eu Git - github/fretlink/time-picker.git/commitdiff
make header input readonly by an optional prop
authorAleksandr Denisenko <aleksandr.denisenko.it@gmail.com>
Fri, 17 Nov 2017 09:55:18 +0000 (11:55 +0200)
committerAleksandr Denisenko <aleksandr.denisenko.it@gmail.com>
Fri, 17 Nov 2017 10:04:35 +0000 (12:04 +0200)
src/Header.jsx
src/Panel.jsx
src/TimePicker.jsx

index 1520d25e3008b371efc66bebfe620d2cf5df4034..1ba59099392ee8d2faf66a84480f23193891df31 100644 (file)
@@ -10,6 +10,7 @@ class Header extends Component {
     placeholder: PropTypes.string,
     clearText: PropTypes.string,
     value: PropTypes.object,
+    readOnlyInput: PropTypes.bool,
     hourOptions: PropTypes.array,
     minuteOptions: PropTypes.array,
     secondOptions: PropTypes.array,
@@ -26,6 +27,10 @@ class Header extends Component {
     onKeyDown: PropTypes.func,
   };
 
+  static defaultProps = {
+    readOnlyInput: false,
+  }
+
   constructor(props) {
     super(props);
     const { value, format } = props;
@@ -166,7 +171,7 @@ class Header extends Component {
   }
 
   getInput() {
-    const { prefixCls, placeholder } = this.props;
+    const { prefixCls, placeholder, readOnlyInput } = this.props;
     const { invalid, str } = this.state;
     const invalidClass = invalid ? `${prefixCls}-input-invalid` : '';
     return (
@@ -177,6 +182,7 @@ class Header extends Component {
         value={str}
         placeholder={placeholder}
         onChange={this.onInputChange}
+        readOnly={!!readOnlyInput}
       />
     );
   }
index a1b7c77a9cdd1ae19f28b892e2bc979141dc23f1..c23241d0a7cec953015523d7bf207849f7706e7e 100644 (file)
@@ -27,6 +27,7 @@ class Panel extends Component {
     value: PropTypes.object,
     placeholder: PropTypes.string,
     format: PropTypes.string,
+    readOnlyInput: PropTypes.bool,
     disabledHours: PropTypes.func,
     disabledMinutes: PropTypes.func,
     disabledSeconds: PropTypes.func,
@@ -58,6 +59,7 @@ class Panel extends Component {
     use12Hours: false,
     addon: noop,
     onKeyDown: noop,
+    readOnlyInput: false,
   };
 
   constructor(props) {
@@ -96,7 +98,7 @@ class Panel extends Component {
       prefixCls, className, placeholder, disabledHours, disabledMinutes,
       disabledSeconds, hideDisabledOptions, allowEmpty, showHour, showMinute, showSecond,
       format, defaultOpenValue, clearText, onEsc, addon, use12Hours, onClear,
-      focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep,
+      focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep, readOnlyInput,
     } = this.props;
     const {
       value, currentSelectPanel,
@@ -137,6 +139,7 @@ class Panel extends Component {
           allowEmpty={allowEmpty}
           focusOnOpen={focusOnOpen}
           onKeyDown={onKeyDown}
+          readOnlyInput={readOnlyInput}
         />
         <Combobox
           prefixCls={prefixCls}
index 9a91a2ca0aba129d89dcdb845ed610e0896b5649..039c2f5d9b890e8ed2126b0d6d77642e23a2fc73 100644 (file)
@@ -18,6 +18,7 @@ export default class Picker extends Component {
     clearText: PropTypes.string,
     value: PropTypes.object,
     defaultOpenValue: PropTypes.object,
+    readOnlyInput: PropTypes.bool,
     disabled: PropTypes.bool,
     allowEmpty: PropTypes.bool,
     defaultValue: PropTypes.object,
@@ -60,6 +61,7 @@ export default class Picker extends Component {
     clearText: 'clear',
     prefixCls: 'rc-time-picker',
     defaultOpen: false,
+    readOnlyInput: false,
     style: {},
     className: '',
     popupClassName: '',
@@ -167,7 +169,7 @@ export default class Picker extends Component {
   getPanelElement() {
     const {
       prefixCls, placeholder, disabledHours,
-      disabledMinutes, disabledSeconds, hideDisabledOptions,
+      disabledMinutes, disabledSeconds, hideDisabledOptions, readOnlyInput,
       allowEmpty, showHour, showMinute, showSecond, defaultOpenValue, clearText,
       addon, use12Hours, focusOnOpen, onKeyDown, hourStep, minuteStep, secondStep,
     } = this.props;
@@ -177,6 +179,7 @@ export default class Picker extends Component {
         prefixCls={`${prefixCls}-panel`}
         ref={this.savePanelRef}
         value={this.state.value}
+        readOnlyInput={readOnlyInput}
         onChange={this.onPanelChange}
         onClear={this.onPanelClear}
         defaultOpenValue={defaultOpenValue}