Comparing version 5.1.4 to 5.1.5
# Changelog | ||
## 5.1.5 | ||
### Patch Changes | ||
- c048203: fix crash when radio button name attributes contain CSS selector special characters (#168) | ||
## 5.1.4 | ||
@@ -4,0 +10,0 @@ |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
@@ -82,3 +82,21 @@ */ | ||
var radioScope = node.form || node.ownerDocument; | ||
var radioSet = radioScope.querySelectorAll('input[type="radio"][name="' + node.name + '"]'); | ||
var queryRadios = function queryRadios(name) { | ||
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); | ||
}; | ||
var radioSet; | ||
if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
// eslint-disable-next-line no-console | ||
console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message); | ||
return false; | ||
} | ||
} | ||
var checked = getCheckedRadio(radioSet, node.form); | ||
@@ -85,0 +103,0 @@ return !checked || checked === node; |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
*/ | ||
var e=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],t=e.join(","),n="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,r=function(e,r,o){var i=Array.prototype.slice.apply(e.querySelectorAll(t));return r&&n.call(e,t)&&i.unshift(e),i=i.filter(o)},o=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},i=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},a=function(e){return"INPUT"===e.tagName},u=function(e){return function(e){return a(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}((e.form||e.ownerDocument).querySelectorAll('input[type="radio"][name="'+e.name+'"]'),e.form);return!t||t===e}(e)},c=function(e){return!(e.disabled||function(e){return a(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=n.call(e,"details>summary:first-of-type")?e.parentElement:e;if(n.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},d=function(e){return!(!c(e)||u(e)||o(e)<0)},l=function(e,t){var n=[],a=[];return r(e,(t=t||{}).includeContainer,d).forEach((function(e,t){var r=o(e);0===r?n.push(e):a.push({documentOrder:t,tabIndex:r,node:e})})),a.sort(i).map((function(e){return e.node})).concat(n)},f=function(e,t){return r(e,(t=t||{}).includeContainer,c)},p=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,t)&&d(e)},m=e.concat("iframe").join(","),s=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,m)&&c(e)};export{f as focusable,s as isFocusable,p as isTabbable,l as tabbable}; | ||
var e=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],t=e.join(","),n="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,r=function(e,r,o){var i=Array.prototype.slice.apply(e.querySelectorAll(t));return r&&n.call(e,t)&&i.unshift(e),i=i.filter(o)},o=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},i=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},a=function(e){return"INPUT"===e.tagName},u=function(e){return function(e){return a(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||e.ownerDocument,r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var o=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!o||o===e}(e)},c=function(e){return!(e.disabled||function(e){return a(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=n.call(e,"details>summary:first-of-type")?e.parentElement:e;if(n.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},d=function(e){return!(!c(e)||u(e)||o(e)<0)},l=function(e,t){var n=[],a=[];return r(e,(t=t||{}).includeContainer,d).forEach((function(e,t){var r=o(e);0===r?n.push(e):a.push({documentOrder:t,tabIndex:r,node:e})})),a.sort(i).map((function(e){return e.node})).concat(n)},f=function(e,t){return r(e,(t=t||{}).includeContainer,c)},p=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,t)&&d(e)},s=e.concat("iframe").join(","),m=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,s)&&c(e)};export{f as focusable,m as isFocusable,p as isTabbable,l as tabbable}; | ||
//# sourceMappingURL=index.esm.min.js.map |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
@@ -86,3 +86,21 @@ */ | ||
var radioScope = node.form || node.ownerDocument; | ||
var radioSet = radioScope.querySelectorAll('input[type="radio"][name="' + node.name + '"]'); | ||
var queryRadios = function queryRadios(name) { | ||
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); | ||
}; | ||
var radioSet; | ||
if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
// eslint-disable-next-line no-console | ||
console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message); | ||
return false; | ||
} | ||
} | ||
var checked = getCheckedRadio(radioSet, node.form); | ||
@@ -89,0 +107,0 @@ return !checked || checked === node; |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
*/ | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],t=e.join(","),n="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,r=function(e,r,o){var i=Array.prototype.slice.apply(e.querySelectorAll(t));return r&&n.call(e,t)&&i.unshift(e),i=i.filter(o)},o=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},i=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},a=function(e){return"INPUT"===e.tagName},u=function(e){return function(e){return a(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}((e.form||e.ownerDocument).querySelectorAll('input[type="radio"][name="'+e.name+'"]'),e.form);return!t||t===e}(e)},c=function(e){return!(e.disabled||function(e){return a(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=n.call(e,"details>summary:first-of-type")?e.parentElement:e;if(n.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},l=function(e){return!(!c(e)||u(e)||o(e)<0)},d=e.concat("iframe").join(",");exports.focusable=function(e,t){return r(e,(t=t||{}).includeContainer,c)},exports.isFocusable=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,d)&&c(e)},exports.isTabbable=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,t)&&l(e)},exports.tabbable=function(e,t){var n=[],a=[];return r(e,(t=t||{}).includeContainer,l).forEach((function(e,t){var r=o(e);0===r?n.push(e):a.push({documentOrder:t,tabIndex:r,node:e})})),a.sort(i).map((function(e){return e.node})).concat(n)}; | ||
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],t=e.join(","),n="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,r=function(e,r,o){var i=Array.prototype.slice.apply(e.querySelectorAll(t));return r&&n.call(e,t)&&i.unshift(e),i=i.filter(o)},o=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},i=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},a=function(e){return"INPUT"===e.tagName},u=function(e){return function(e){return a(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||e.ownerDocument,r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var o=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!o||o===e}(e)},c=function(e){return!(e.disabled||function(e){return a(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=n.call(e,"details>summary:first-of-type")?e.parentElement:e;if(n.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},d=function(e){return!(!c(e)||u(e)||o(e)<0)},l=e.concat("iframe").join(",");exports.focusable=function(e,t){return r(e,(t=t||{}).includeContainer,c)},exports.isFocusable=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,l)&&c(e)},exports.isTabbable=function(e){if(!e)throw new Error("No node provided");return!1!==n.call(e,t)&&d(e)},exports.tabbable=function(e,t){var n=[],a=[];return r(e,(t=t||{}).includeContainer,d).forEach((function(e,t){var r=o(e);0===r?n.push(e):a.push({documentOrder:t,tabIndex:r,node:e})})),a.sort(i).map((function(e){return e.node})).concat(n)}; | ||
//# sourceMappingURL=index.min.js.map |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
@@ -93,3 +93,21 @@ */ | ||
var radioScope = node.form || node.ownerDocument; | ||
var radioSet = radioScope.querySelectorAll('input[type="radio"][name="' + node.name + '"]'); | ||
var queryRadios = function queryRadios(name) { | ||
return radioScope.querySelectorAll('input[type="radio"][name="' + name + '"]'); | ||
}; | ||
var radioSet; | ||
if (typeof window !== 'undefined' && typeof window.CSS !== 'undefined' && typeof window.CSS.escape === 'function') { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
// eslint-disable-next-line no-console | ||
console.error('Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', err.message); | ||
return false; | ||
} | ||
} | ||
var checked = getCheckedRadio(radioSet, node.form); | ||
@@ -96,0 +114,0 @@ return !checked || checked === node; |
/*! | ||
* tabbable 5.1.4 | ||
* tabbable 5.1.5 | ||
* @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE | ||
*/ | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.tabbable,r=e.tabbable={};t(r),r.noConflict=function(){return e.tabbable=n,r}}())}(this,(function(e){"use strict";var t=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],n=t.join(","),r="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,o=function(e,t,o){var i=Array.prototype.slice.apply(e.querySelectorAll(n));return t&&r.call(e,n)&&i.unshift(e),i=i.filter(o)},i=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},a=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},u=function(e){return"INPUT"===e.tagName},c=function(e){return function(e){return u(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}((e.form||e.ownerDocument).querySelectorAll('input[type="radio"][name="'+e.name+'"]'),e.form);return!t||t===e}(e)},l=function(e){return!(e.disabled||function(e){return u(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=r.call(e,"details>summary:first-of-type")?e.parentElement:e;if(r.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},f=function(e){return!(!l(e)||c(e)||i(e)<0)},d=t.concat("iframe").join(",");e.focusable=function(e,t){return o(e,(t=t||{}).includeContainer,l)},e.isFocusable=function(e){if(!e)throw new Error("No node provided");return!1!==r.call(e,d)&&l(e)},e.isTabbable=function(e){if(!e)throw new Error("No node provided");return!1!==r.call(e,n)&&f(e)},e.tabbable=function(e,t){var n=[],r=[];return o(e,(t=t||{}).includeContainer,f).forEach((function(e,t){var o=i(e);0===o?n.push(e):r.push({documentOrder:t,tabIndex:o,node:e})})),r.sort(a).map((function(e){return e.node})).concat(n)},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):(e="undefined"!=typeof globalThis?globalThis:e||self,function(){var n=e.tabbable,r=e.tabbable={};t(r),r.noConflict=function(){return e.tabbable=n,r}}())}(this,(function(e){"use strict";var t=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])',"details>summary:first-of-type","details"],n=t.join(","),r="undefined"==typeof Element?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,o=function(e,t,o){var i=Array.prototype.slice.apply(e.querySelectorAll(n));return t&&r.call(e,n)&&i.unshift(e),i=i.filter(o)},i=function(e){var t=parseInt(e.getAttribute("tabindex"),10);return isNaN(t)?function(e){return"true"===e.contentEditable}(e)?0:"AUDIO"!==e.nodeName&&"VIDEO"!==e.nodeName&&"DETAILS"!==e.nodeName||null!==e.getAttribute("tabindex")?e.tabIndex:0:t},a=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},u=function(e){return"INPUT"===e.tagName},c=function(e){return function(e){return u(e)&&"radio"===e.type}(e)&&!function(e){if(!e.name)return!0;var t,n=e.form||e.ownerDocument,r=function(e){return n.querySelectorAll('input[type="radio"][name="'+e+'"]')};if("undefined"!=typeof window&&void 0!==window.CSS&&"function"==typeof window.CSS.escape)t=r(window.CSS.escape(e.name));else try{t=r(e.name)}catch(e){return console.error("Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s",e.message),!1}var o=function(e,t){for(var n=0;n<e.length;n++)if(e[n].checked&&e[n].form===t)return e[n]}(t,e.form);return!o||o===e}(e)},l=function(e){return!(e.disabled||function(e){return u(e)&&"hidden"===e.type}(e)||function(e){if("hidden"===getComputedStyle(e).visibility)return!0;var t=r.call(e,"details>summary:first-of-type")?e.parentElement:e;if(r.call(t,"details:not([open]) *"))return!0;for(;e;){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(e)||function(e){return"DETAILS"===e.tagName&&Array.prototype.slice.apply(e.children).some((function(e){return"SUMMARY"===e.tagName}))}(e))},d=function(e){return!(!l(e)||c(e)||i(e)<0)},f=t.concat("iframe").join(",");e.focusable=function(e,t){return o(e,(t=t||{}).includeContainer,l)},e.isFocusable=function(e){if(!e)throw new Error("No node provided");return!1!==r.call(e,f)&&l(e)},e.isTabbable=function(e){if(!e)throw new Error("No node provided");return!1!==r.call(e,n)&&d(e)},e.tabbable=function(e,t){var n=[],r=[];return o(e,(t=t||{}).includeContainer,d).forEach((function(e,t){var o=i(e);0===o?n.push(e):r.push({documentOrder:t,tabIndex:o,node:e})})),r.sort(a).map((function(e){return e.node})).concat(n)},Object.defineProperty(e,"__esModule",{value:!0})})); | ||
//# sourceMappingURL=index.umd.min.js.map |
{ | ||
"name": "tabbable", | ||
"version": "5.1.4", | ||
"version": "5.1.5", | ||
"description": "Returns an array of all tabbable DOM nodes within a containing node.", | ||
@@ -50,11 +50,11 @@ "main": "dist/index.js", | ||
"devDependencies": { | ||
"@babel/core": "^7.12.9", | ||
"@babel/core": "^7.12.10", | ||
"@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", | ||
"@babel/plugin-proposal-optional-chaining": "^7.12.7", | ||
"@babel/preset-env": "^7.12.7", | ||
"@changesets/cli": "^2.11.2", | ||
"@rollup/plugin-babel": "^5.2.1", | ||
"@rollup/plugin-commonjs": "^16.0.0", | ||
"@rollup/plugin-node-resolve": "^10.0.0", | ||
"@types/node": "^14.14.10", | ||
"@changesets/cli": "^2.12.0", | ||
"@rollup/plugin-babel": "^5.2.2", | ||
"@rollup/plugin-commonjs": "^17.0.0", | ||
"@rollup/plugin-node-resolve": "^11.0.0", | ||
"@types/node": "^14.14.14", | ||
"all-contributors-cli": "^6.19.0", | ||
@@ -66,5 +66,5 @@ "babel-eslint": "^10.1.0", | ||
"chai": "^4.2.0", | ||
"cross-env": "^7.0.2", | ||
"eslint": "^7.14.0", | ||
"eslint-config-prettier": "^6.15.0", | ||
"cross-env": "^7.0.3", | ||
"eslint": "^7.15.0", | ||
"eslint-config-prettier": "^7.0.0", | ||
"eslint-plugin-import": "^2.22.1", | ||
@@ -78,6 +78,7 @@ "karma": "^5.2.3", | ||
"mocha": "^8.2.1", | ||
"prettier": "^2.2.0", | ||
"rollup": "^2.33.3", | ||
"prettier": "^2.2.1", | ||
"rollup": "^2.34.2", | ||
"rollup-plugin-sourcemaps": "^0.6.3", | ||
"rollup-plugin-terser": "^7.0.2", | ||
"sinon": "^9.2.2", | ||
"typescript": "^4.1.2", | ||
@@ -84,0 +85,0 @@ "watchify": "^3.11.1" |
# tabbable [![CI](https://github.com/focus-trap/tabbable/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/focus-trap/tabbable/actions?query=workflow:CI+branch:master) [![license](https://badgen.now.sh/badge/license/MIT)](./LICENSE) | ||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section --> | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-7-orange.svg?style=flat-square)](#contributors) | ||
[![All Contributors](https://img.shields.io/badge/all_contributors-8-orange.svg?style=flat-square)](#contributors) | ||
<!-- ALL-CONTRIBUTORS-BADGE:END --> | ||
@@ -47,2 +47,4 @@ | ||
**Note:** When used with any version of IE, [CSS.escape](https://developer.mozilla.org/en-US/docs/Web/API/CSS/escape) needs a [polyfill](https://www.npmjs.com/package/css.escape) for tabbable to work properly with radio buttons that have `name` attributes containing special characters. | ||
## Installation | ||
@@ -162,2 +164,5 @@ | ||
</tr> | ||
<tr> | ||
<td align="center"><a href="https://github.com/tidychips"><img src="https://avatars2.githubusercontent.com/u/11446636?v=4" width="100px;" alt=""/><br /><sub><b>Bryan Murphy</b></sub></a><br /><a href="https://github.com/focus-trap/tabbable/issues?q=author%3Atidychips" title="Bug reports">🐛</a> <a href="https://github.com/focus-trap/tabbable/commits?author=tidychips" title="Code">💻</a></td> | ||
</tr> | ||
</table> | ||
@@ -164,0 +169,0 @@ |
@@ -104,5 +104,29 @@ const candidateSelectors = [ | ||
const radioScope = node.form || node.ownerDocument; | ||
const radioSet = radioScope.querySelectorAll( | ||
'input[type="radio"][name="' + node.name + '"]' | ||
); | ||
const queryRadios = function (name) { | ||
return radioScope.querySelectorAll( | ||
'input[type="radio"][name="' + name + '"]' | ||
); | ||
}; | ||
let radioSet; | ||
if ( | ||
typeof window !== 'undefined' && | ||
typeof window.CSS !== 'undefined' && | ||
typeof window.CSS.escape === 'function' | ||
) { | ||
radioSet = queryRadios(window.CSS.escape(node.name)); | ||
} else { | ||
try { | ||
radioSet = queryRadios(node.name); | ||
} catch (err) { | ||
// eslint-disable-next-line no-console | ||
console.error( | ||
'Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s', | ||
err.message | ||
); | ||
return false; | ||
} | ||
} | ||
const checked = getCheckedRadio(radioSet, node.form); | ||
@@ -109,0 +133,0 @@ return !checked || checked === node; |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
133644
799
171
0
33