@github/details-menu-element
Advanced tools
Comparing version 0.2.0 to 0.3.0
@@ -50,2 +50,3 @@ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); | ||
details.addEventListener('toggle', closeCurrentMenu); | ||
details.addEventListener('toggle', focusInput.bind(null, details)); | ||
@@ -66,2 +67,36 @@ } | ||
function closeCurrentMenu(event) { | ||
var el = event.currentTarget; | ||
if (!(el instanceof Element)) return; | ||
if (!el.hasAttribute('open')) return; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = document.querySelectorAll('details[open] > details-menu')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var menu = _step.value; | ||
var opened = menu.closest('details'); | ||
if (opened && opened !== el && !opened.contains(el)) { | ||
opened.removeAttribute('open'); | ||
} | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
} | ||
function focusInput(details) { | ||
@@ -109,9 +144,9 @@ if (!details.open) return; | ||
if (selected.getAttribute('role') === 'menuitemradio') { | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator = details.querySelectorAll('[role="menuitemradio"]')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var el = _step.value; | ||
for (var _iterator2 = details.querySelectorAll('[role="menuitemradio"]')[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var el = _step2.value; | ||
@@ -121,12 +156,12 @@ el.setAttribute('aria-checked', 'false'); | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
@@ -133,0 +168,0 @@ } |
@@ -109,2 +109,3 @@ (function (global, factory) { | ||
details.addEventListener('toggle', closeCurrentMenu); | ||
details.addEventListener('toggle', focusInput.bind(null, details)); | ||
@@ -125,2 +126,36 @@ } | ||
function closeCurrentMenu(event) { | ||
var el = event.currentTarget; | ||
if (!(el instanceof Element)) return; | ||
if (!el.hasAttribute('open')) return; | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
try { | ||
for (var _iterator = document.querySelectorAll('details[open] > details-menu')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var menu = _step.value; | ||
var opened = menu.closest('details'); | ||
if (opened && opened !== el && !opened.contains(el)) { | ||
opened.removeAttribute('open'); | ||
} | ||
} | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
} | ||
} | ||
} | ||
} | ||
function focusInput(details) { | ||
@@ -168,9 +203,9 @@ if (!details.open) return; | ||
if (selected.getAttribute('role') === 'menuitemradio') { | ||
var _iteratorNormalCompletion = true; | ||
var _didIteratorError = false; | ||
var _iteratorError = undefined; | ||
var _iteratorNormalCompletion2 = true; | ||
var _didIteratorError2 = false; | ||
var _iteratorError2 = undefined; | ||
try { | ||
for (var _iterator = details.querySelectorAll('[role="menuitemradio"]')[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) { | ||
var el = _step.value; | ||
for (var _iterator2 = details.querySelectorAll('[role="menuitemradio"]')[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) { | ||
var el = _step2.value; | ||
@@ -180,12 +215,12 @@ el.setAttribute('aria-checked', 'false'); | ||
} catch (err) { | ||
_didIteratorError = true; | ||
_iteratorError = err; | ||
_didIteratorError2 = true; | ||
_iteratorError2 = err; | ||
} finally { | ||
try { | ||
if (!_iteratorNormalCompletion && _iterator.return) { | ||
_iterator.return(); | ||
if (!_iteratorNormalCompletion2 && _iterator2.return) { | ||
_iterator2.return(); | ||
} | ||
} finally { | ||
if (_didIteratorError) { | ||
throw _iteratorError; | ||
if (_didIteratorError2) { | ||
throw _iteratorError2; | ||
} | ||
@@ -192,0 +227,0 @@ } |
{ | ||
"name": "@github/details-menu-element", | ||
"version": "0.2.0", | ||
"version": "0.3.0", | ||
"description": "A menu opened with a <details> button.", | ||
@@ -33,5 +33,5 @@ "main": "dist/index.umd.js", | ||
"chai": "^4.1.2", | ||
"eslint": "^5.0.1", | ||
"eslint": "^5.1.0", | ||
"eslint-plugin-github": "^1.1.3", | ||
"flow-bin": "^0.75.0", | ||
"flow-bin": "^0.76.0", | ||
"karma": "^2.0.0", | ||
@@ -38,0 +38,0 @@ "karma-chai": "^0.1.0", |
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
22554
481