mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 09:48:58 -04:00
* Don’t use prevent default on IE unless the user pressed enter * Implament ie fix on number fields too * share the ie detection lib * change file names and export types
This commit is contained in:
parent
950403ff6d
commit
c805c3b1cb
3 changed files with 35 additions and 4 deletions
|
@ -1,10 +1,12 @@
|
|||
import _ from 'lodash';
|
||||
import { detectIE } from './detect_ie';
|
||||
export default (handleChange) => {
|
||||
return (name, defaultValue) => (e) => {
|
||||
e.preventDefault();
|
||||
if (!detectIE() || e.keyCode === 13) e.preventDefault();
|
||||
|
||||
const value = Number(_.get(e, 'target.value', defaultValue));
|
||||
if (_.isFunction(handleChange)) {
|
||||
return handleChange({ [name]: value });
|
||||
}
|
||||
};
|
||||
};
|
||||
};
|
|
@ -1,10 +1,14 @@
|
|||
import _ from 'lodash';
|
||||
import { detectIE } from './detect_ie';
|
||||
|
||||
export default (handleChange) => {
|
||||
return (name, defaultValue) => (e) => {
|
||||
e.preventDefault();
|
||||
// IE preventDefault breaks input, but we still need top prevent enter from being pressed
|
||||
if (!detectIE() || e.keyCode === 13) e.preventDefault();
|
||||
|
||||
const value = _.get(e, 'target.value', defaultValue);
|
||||
if (_.isFunction(handleChange)) {
|
||||
return handleChange({ [name]: value });
|
||||
}
|
||||
};
|
||||
};
|
||||
};
|
25
src/core_plugins/metrics/public/components/lib/detect_ie.js
Normal file
25
src/core_plugins/metrics/public/components/lib/detect_ie.js
Normal file
|
@ -0,0 +1,25 @@
|
|||
export function detectIE() {
|
||||
const ua = window.navigator.userAgent;
|
||||
|
||||
const msie = ua.indexOf('MSIE ');
|
||||
if (msie > 0) {
|
||||
// IE 10 or older => return version number
|
||||
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
|
||||
}
|
||||
|
||||
const trident = ua.indexOf('Trident/');
|
||||
if (trident > 0) {
|
||||
// IE 11 => return version number
|
||||
const rv = ua.indexOf('rv:');
|
||||
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
|
||||
}
|
||||
|
||||
const edge = ua.indexOf('Edge/');
|
||||
if (edge > 0) {
|
||||
// Edge (IE 12+) => return version number
|
||||
return parseInt(ua.substring(edge + 5, ua.indexOf('.', edge)), 10);
|
||||
}
|
||||
|
||||
// other browser
|
||||
return false;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue