define(["require", "exports", "./modalize"], function (require, exports, modalize_1) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function getHiddenElements() { function walkTree(el) { if (el.getAttribute('aria-hidden') === 'true') { hiddenIds.push(el.id); } Array.from(el.children).forEach(walkTree); } var hiddenIds = []; walkTree(document.body); return hiddenIds; } describe('modalize', function () { afterEach(function () { document.body.innerHTML = ''; }); var modalizeId = 'childToModalize'; it('sets and removes aria-hidden', function () { document.body.innerHTML = "\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n "); expect(getHiddenElements()).toStrictEqual([]); // modalize the target element, verify aria-hidden is correct on all elements var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['parentBefore', 'siblingBefore', 'siblingAfter', 'parentAfter']); // unmodalize, verify aria-hidden is correct on all elements unmodalize(); expect(getHiddenElements()).toStrictEqual([]); }); it('does not remove aria-hidden from initially hidden element when unmodalizing', function () { document.body.innerHTML = "\n
\n
\n
\n
\n
\n "); expect(getHiddenElements()).toStrictEqual(['alreadyHidden']); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['alreadyHidden', 'siblingAfter']); unmodalize(); expect(getHiddenElements()).toStrictEqual(['alreadyHidden']); }); it('handles if there is nothing to hide', function () { document.body.innerHTML = "\n
\n
\n
\n
\n
\n "); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual([]); unmodalize(); expect(getHiddenElements()).toStrictEqual([]); }); it('restores original aria-hidden state (false or unset)', function () { document.body.innerHTML = "\n
\n
\n
\n "); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['siblingBefore', 'siblingAfter']); unmodalize(); expect(getHiddenElements()).toStrictEqual([]); expect(document.getElementById('siblingBefore').getAttribute('aria-hidden')).toBe('false'); expect(document.getElementById('siblingAfter').getAttribute('aria-hidden')).toBeNull(); }); it('handles if element is direct child of body', function () { document.body.innerHTML = "\n
\n
\n
\n "); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['siblingBefore', 'siblingAfter']); unmodalize(); expect(getHiddenElements()).toStrictEqual([]); }); it('handles text nodes', function () { // The text nodes can't be hidden, but at least shouldn't cause exceptions document.body.innerHTML = "\n
\n some text\n
\n some other text\n
\n "); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['siblingBefore', 'siblingAfter']); unmodalize(); expect(getHiddenElements()).toStrictEqual([]); }); it('ignores template, script, and style tags', function () { document.body.innerHTML = "\n \n \n \n
\n
\n
\n "); var child = document.getElementById(modalizeId); var unmodalize = (0, modalize_1.modalize)(child); expect(getHiddenElements()).toStrictEqual(['siblingBefore', 'siblingAfter']); unmodalize(); expect(getHiddenElements()).toStrictEqual([]); }); }); }); //# sourceMappingURL=modalize.test.js.map