diff --git a/dist/dialog-polyfill.esm.js b/dist/dialog-polyfill.esm.js index 073d953..da774bc 100644 --- a/dist/dialog-polyfill.esm.js +++ b/dist/dialog-polyfill.esm.js @@ -153,7 +153,7 @@ function findFocusableElementWithin(hostElement) { /** * Determines if an element is attached to the DOM. * @param {Element} element to check - * @return {Boolean} whether the element is in DOM + * @return {boolean} whether the element is in DOM */ function isConnected(element) { return element.isConnected || document.body.contains(element); @@ -161,6 +161,7 @@ function isConnected(element) { /** * @param {!Event} event + * @return {?Element} */ function findFormSubmitter(event) { if (event.submitter) { @@ -179,7 +180,7 @@ function findFormSubmitter(event) { submitter = root.activeElement; } - if (submitter.form !== form) { + if (!submitter || submitter.form !== form) { return null; } return submitter; @@ -195,7 +196,7 @@ function maybeHandleSubmit(event) { var form = /** @type {!HTMLFormElement} */ (event.target); // We'd have a value if we clicked on an imagemap. - var value = dialogPolyfill.useValue; + var value = dialogPolyfill.imagemapUseValue; var submitter = findFormSubmitter(event); if (value === null && submitter) { value = submitter.value; @@ -215,7 +216,8 @@ function maybeHandleSubmit(event) { } event.preventDefault(); - if (submitter) { + if (value != null) { + // nb. we explicitly check against null/undefined dialog.close(value); } else { dialog.close(); @@ -751,7 +753,7 @@ dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) { dialogPolyfill.dm = new dialogPolyfill.DialogManager(); dialogPolyfill.formSubmitter = null; -dialogPolyfill.useValue = null; +dialogPolyfill.imagemapUseValue = null; /** * Installs global handlers, such as click listers and native method overrides. These are needed @@ -796,7 +798,7 @@ if (window.HTMLDialogElement === undefined) { */ document.addEventListener('click', function(ev) { dialogPolyfill.formSubmitter = null; - dialogPolyfill.useValue = null; + dialogPolyfill.imagemapUseValue = null; if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission var target = /** @type {Element} */ (ev.target); @@ -810,7 +812,7 @@ if (window.HTMLDialogElement === undefined) { if (!valid) { if (!(target.localName === 'input' && target.type === 'image')) { return; } // this is a , which can submit forms - dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY; + dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY; } var dialog = findNearestDialog(target); diff --git a/dist/dialog-polyfill.js b/dist/dialog-polyfill.js index 8dfd245..aee7d96 100644 --- a/dist/dialog-polyfill.js +++ b/dist/dialog-polyfill.js @@ -159,7 +159,7 @@ /** * Determines if an element is attached to the DOM. * @param {Element} element to check - * @return {Boolean} whether the element is in DOM + * @return {boolean} whether the element is in DOM */ function isConnected(element) { return element.isConnected || document.body.contains(element); @@ -167,6 +167,7 @@ /** * @param {!Event} event + * @return {?Element} */ function findFormSubmitter(event) { if (event.submitter) { @@ -185,7 +186,7 @@ submitter = root.activeElement; } - if (submitter.form !== form) { + if (!submitter || submitter.form !== form) { return null; } return submitter; @@ -201,7 +202,7 @@ var form = /** @type {!HTMLFormElement} */ (event.target); // We'd have a value if we clicked on an imagemap. - var value = dialogPolyfill.useValue; + var value = dialogPolyfill.imagemapUseValue; var submitter = findFormSubmitter(event); if (value === null && submitter) { value = submitter.value; @@ -221,7 +222,8 @@ } event.preventDefault(); - if (submitter) { + if (value != null) { + // nb. we explicitly check against null/undefined dialog.close(value); } else { dialog.close(); @@ -757,7 +759,7 @@ dialogPolyfill.dm = new dialogPolyfill.DialogManager(); dialogPolyfill.formSubmitter = null; - dialogPolyfill.useValue = null; + dialogPolyfill.imagemapUseValue = null; /** * Installs global handlers, such as click listers and native method overrides. These are needed @@ -802,7 +804,7 @@ */ document.addEventListener('click', function(ev) { dialogPolyfill.formSubmitter = null; - dialogPolyfill.useValue = null; + dialogPolyfill.imagemapUseValue = null; if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission var target = /** @type {Element} */ (ev.target); @@ -816,7 +818,7 @@ if (!valid) { if (!(target.localName === 'input' && target.type === 'image')) { return; } // this is a , which can submit forms - dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY; + dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY; } var dialog = findNearestDialog(target); diff --git a/index.js b/index.js index ecddcdd..8adc5ad 100644 --- a/index.js +++ b/index.js @@ -154,7 +154,7 @@ function findFocusableElementWithin(hostElement) { /** * Determines if an element is attached to the DOM. * @param {Element} element to check - * @return {Boolean} whether the element is in DOM + * @return {boolean} whether the element is in DOM */ function isConnected(element) { return element.isConnected || document.body.contains(element); @@ -162,6 +162,7 @@ function isConnected(element) { /** * @param {!Event} event + * @return {?Element} */ function findFormSubmitter(event) { if (event.submitter) { @@ -180,7 +181,7 @@ function findFormSubmitter(event) { submitter = root.activeElement; } - if (submitter.form !== form) { + if (!submitter || submitter.form !== form) { return null; } return submitter; @@ -196,7 +197,7 @@ function maybeHandleSubmit(event) { var form = /** @type {!HTMLFormElement} */ (event.target); // We'd have a value if we clicked on an imagemap. - var value = dialogPolyfill.useValue; + var value = dialogPolyfill.imagemapUseValue; var submitter = findFormSubmitter(event); if (value === null && submitter) { value = submitter.value; @@ -216,7 +217,8 @@ function maybeHandleSubmit(event) { } event.preventDefault(); - if (submitter) { + if (value != null) { + // nb. we explicitly check against null/undefined dialog.close(value); } else { dialog.close(); @@ -754,7 +756,7 @@ dialogPolyfill.DialogManager.prototype.removeDialog = function(dpi) { dialogPolyfill.dm = new dialogPolyfill.DialogManager(); dialogPolyfill.formSubmitter = null; -dialogPolyfill.useValue = null; +dialogPolyfill.imagemapUseValue = null; /** * Installs global handlers, such as click listers and native method overrides. These are needed @@ -799,7 +801,7 @@ if (window.HTMLDialogElement === undefined) { */ document.addEventListener('click', function(ev) { dialogPolyfill.formSubmitter = null; - dialogPolyfill.useValue = null; + dialogPolyfill.imagemapUseValue = null; if (ev.defaultPrevented) { return; } // e.g. a submit which prevents default submission var target = /** @type {Element} */ (ev.target); @@ -813,7 +815,7 @@ if (window.HTMLDialogElement === undefined) { if (!valid) { if (!(target.localName === 'input' && target.type === 'image')) { return; } // this is a , which can submit forms - dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY; + dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY; } var dialog = findNearestDialog(target); diff --git a/package.json b/package.json index 6ce9315..54c6db1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dialog-polyfill", - "version": "0.5.5", + "version": "0.5.6", "description": "Polyfill for the dialog element", "main": "dist/dialog-polyfill.js", "module": "dist/dialog-polyfill.esm.js",