diff options
author | Dan Finlay <542863+danfinlay@users.noreply.github.com> | 2018-08-08 02:31:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-08 02:31:42 +0800 |
commit | 0601df9dae488d997277bb6b52c28df27546e27c (patch) | |
tree | ae33a0c4610b9a9e865c797258232542a72f57b6 /test/lib/react-trigger-change.js | |
parent | 4598554fea7b9435e5cbecc4735c479ffbadf37e (diff) | |
parent | f6490a2a6eda943a374c01df5884acb07ba28869 (diff) | |
download | tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar.gz tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar.bz2 tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar.lz tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar.xz tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.tar.zst tangerine-wallet-browser-0601df9dae488d997277bb6b52c28df27546e27c.zip |
Merge pull request #4954 from MetaMask/v4.9.0
V4.9.0
Diffstat (limited to 'test/lib/react-trigger-change.js')
-rw-r--r-- | test/lib/react-trigger-change.js | 112 |
1 files changed, 56 insertions, 56 deletions
diff --git a/test/lib/react-trigger-change.js b/test/lib/react-trigger-change.js index a25ddff00..d169dd614 100644 --- a/test/lib/react-trigger-change.js +++ b/test/lib/react-trigger-change.js @@ -1,7 +1,7 @@ // Trigger React's synthetic change events on input, textarea and select elements // https://github.com/vitalyq/react-trigger-change -/******************IMPORTANT NOTE******************/ +/** ****************IMPORTANT NOTE******************/ /* This file is a modification of the */ /* 'react-trigger-change' library linked above. */ /* That library breaks when 'onFocus' events are */ @@ -11,13 +11,13 @@ /* This modification removes the accomodations */ /* 'react-trigger-change' makes for IE to ensure */ /* our tests can pass in chrome and firefox. */ -/**************************************************/ +/** ************************************************/ -'use strict'; +'use strict' // Constants and functions are declared inside the closure. // In this way, reactTriggerChange can be passed directly to executeScript in Selenium. -module.exports = function reactTriggerChange(node) { +module.exports = function reactTriggerChange (node) { var supportedInputTypes = { color: true, date: true, @@ -33,47 +33,47 @@ module.exports = function reactTriggerChange(node) { text: true, time: true, url: true, - week: true - }; - var nodeName = node.nodeName.toLowerCase(); - var type = node.type; - var event; - var descriptor; - var initialValue; - var initialChecked; - var initialCheckedRadio; + week: true, + } + var nodeName = node.nodeName.toLowerCase() + var type = node.type + var event + var descriptor + var initialValue + var initialChecked + var initialCheckedRadio // Do not try to delete non-configurable properties. // Value and checked properties on DOM elements are non-configurable in PhantomJS. - function deletePropertySafe(elem, prop) { - var desc = Object.getOwnPropertyDescriptor(elem, prop); + function deletePropertySafe (elem, prop) { + var desc = Object.getOwnPropertyDescriptor(elem, prop) if (desc && desc.configurable) { - delete elem[prop]; + delete elem[prop] } } - function getCheckedRadio(radio) { - var name = radio.name; - var radios; - var i; + function getCheckedRadio (radio) { + var name = radio.name + var radios + var i if (name) { - radios = document.querySelectorAll('input[type="radio"][name="' + name + '"]'); + radios = document.querySelectorAll('input[type="radio"][name="' + name + '"]') for (i = 0; i < radios.length; i += 1) { if (radios[i].checked) { - return radios[i] !== radio ? radios[i] : null; + return radios[i] !== radio ? radios[i] : null } } } - return null; + return null } - function preventChecking(e) { - e.preventDefault(); + function preventChecking (e) { + e.preventDefault() if (!initialChecked) { - e.target.checked = false; + e.target.checked = false } if (initialCheckedRadio) { - initialCheckedRadio.checked = true; + initialCheckedRadio.checked = true } } @@ -81,81 +81,81 @@ module.exports = function reactTriggerChange(node) { (nodeName === 'input' && type === 'file')) { // IE9-IE11, non-IE // Dispatch change. - event = document.createEvent('HTMLEvents'); - event.initEvent('change', true, false); - node.dispatchEvent(event); + event = document.createEvent('HTMLEvents') + event.initEvent('change', true, false) + node.dispatchEvent(event) } else if ((nodeName === 'input' && supportedInputTypes[type]) || nodeName === 'textarea') { // React 16 // Cache artificial value property descriptor. // Property doesn't exist in React <16, descriptor is undefined. - descriptor = Object.getOwnPropertyDescriptor(node, 'value'); + descriptor = Object.getOwnPropertyDescriptor(node, 'value') // Update inputValueTracking cached value. // Remove artificial value property. // Restore initial value to trigger event with it. - initialValue = node.value; - node.value = initialValue + '#'; - deletePropertySafe(node, 'value'); - node.value = initialValue; + initialValue = node.value + node.value = initialValue + '#' + deletePropertySafe(node, 'value') + node.value = initialValue // React 0.14: IE10-IE11, non-IE // React 15: non-IE // React 16: IE10-IE11, non-IE - event = document.createEvent('HTMLEvents'); - event.initEvent('input', true, false); - node.dispatchEvent(event); + event = document.createEvent('HTMLEvents') + event.initEvent('input', true, false) + node.dispatchEvent(event) // React 16 // Restore artificial value property descriptor. if (descriptor) { - Object.defineProperty(node, 'value', descriptor); + Object.defineProperty(node, 'value', descriptor) } } else if (nodeName === 'input' && type === 'checkbox') { // Invert inputValueTracking cached value. - node.checked = !node.checked; + node.checked = !node.checked // Dispatch click. // Click event inverts checked value. - event = document.createEvent('MouseEvents'); - event.initEvent('click', true, true); - node.dispatchEvent(event); + event = document.createEvent('MouseEvents') + event.initEvent('click', true, true) + node.dispatchEvent(event) } else if (nodeName === 'input' && type === 'radio') { // Cache initial checked value. - initialChecked = node.checked; + initialChecked = node.checked // Find and cache initially checked radio in the group. - initialCheckedRadio = getCheckedRadio(node); + initialCheckedRadio = getCheckedRadio(node) // React 16 // Cache property descriptor. // Invert inputValueTracking cached value. // Remove artificial checked property. // Restore initial value, otherwise preventDefault will eventually revert the value. - descriptor = Object.getOwnPropertyDescriptor(node, 'checked'); - node.checked = !initialChecked; - deletePropertySafe(node, 'checked'); - node.checked = initialChecked; + descriptor = Object.getOwnPropertyDescriptor(node, 'checked') + node.checked = !initialChecked + deletePropertySafe(node, 'checked') + node.checked = initialChecked // Prevent toggling during event capturing phase. // Set checked value to false if initialChecked is false, // otherwise next listeners will see true. // Restore initially checked radio in the group. - node.addEventListener('click', preventChecking, true); + node.addEventListener('click', preventChecking, true) // Dispatch click. // Click event inverts checked value. - event = document.createEvent('MouseEvents'); - event.initEvent('click', true, true); - node.dispatchEvent(event); + event = document.createEvent('MouseEvents') + event.initEvent('click', true, true) + node.dispatchEvent(event) // Remove listener to stop further change prevention. - node.removeEventListener('click', preventChecking, true); + node.removeEventListener('click', preventChecking, true) // React 16 // Restore artificial checked property descriptor. if (descriptor) { - Object.defineProperty(node, 'checked', descriptor); + Object.defineProperty(node, 'checked', descriptor) } } -}; +} |