diff --git a/node_modules/.package-lock.json b/node_modules/.package-lock.json
index 02460f4..0ac9f8c 100644
--- a/node_modules/.package-lock.json
+++ b/node_modules/.package-lock.json
@@ -13,9 +13,9 @@
       }
     },
     "node_modules/dialog-polyfill": {
-      "version": "0.5.4",
-      "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.4.tgz",
-      "integrity": "sha512-LqQvIky9+qIFD7MCESOXdMZc4ObCdEbzbuvnPJVCiRXKQMzMjpQKK50UI+2sj0bJBPKn6ugPpMRpuLrgYc4RjA=="
+      "version": "0.5.6",
+      "resolved": "https://registry.npmjs.org/dialog-polyfill/-/dialog-polyfill-0.5.6.tgz",
+      "integrity": "sha512-ZbVDJI9uvxPAKze6z146rmfUZjBqNEwcnFTVamQzXH+svluiV7swmVIGr7miwADgfgt1G2JQIytypM9fbyhX4w=="
     },
     "node_modules/jquery": {
       "version": "3.5.0",
diff --git a/node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js b/node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js
index 471f55e..da774bc 100644
--- a/node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js
+++ b/node_modules/dialog-polyfill/dist/dialog-polyfill.esm.js
@@ -64,7 +64,13 @@
     if (el.localName === 'dialog') {
       return /** @type {HTMLDialogElement} */ (el);
     }
-    el = el.parentElement;
+    if (el.parentElement) {
+      el = el.parentElement;
+    } else if (el.parentNode) {
+      el = el.parentNode.host;
+    } else {
+      el = null;
+    }
   }
   return null;
 }
@@ -147,7 +153,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);
@@ -155,6 +161,7 @@
 
 /**
  * @param {!Event} event
+ * @return {?Element}
  */
 function findFormSubmitter(event) {
   if (event.submitter) {
@@ -173,7 +180,7 @@
     submitter = root.activeElement;
   }
 
-  if (submitter.form !== form) {
+  if (!submitter || submitter.form !== form) {
     return null;
   }
   return submitter;
@@ -189,7 +196,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;
@@ -209,7 +216,8 @@
   }
   event.preventDefault();
 
-  if (submitter) {
+  if (value != null) {
+    // nb. we explicitly check against null/undefined
     dialog.close(value);
   } else {
     dialog.close();
@@ -745,7 +753,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
@@ -790,7 +798,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);
@@ -804,7 +812,7 @@
     if (!valid) {
       if (!(target.localName === 'input' && target.type === 'image')) { return; }
       // this is a <input type="image">, which can submit forms
-      dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY;
+      dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY;
     }
 
     var dialog = findNearestDialog(target);
diff --git a/node_modules/dialog-polyfill/dist/dialog-polyfill.js b/node_modules/dialog-polyfill/dist/dialog-polyfill.js
index bd60a70..aee7d96 100644
--- a/node_modules/dialog-polyfill/dist/dialog-polyfill.js
+++ b/node_modules/dialog-polyfill/dist/dialog-polyfill.js
@@ -70,7 +70,13 @@
       if (el.localName === 'dialog') {
         return /** @type {HTMLDialogElement} */ (el);
       }
-      el = el.parentElement;
+      if (el.parentElement) {
+        el = el.parentElement;
+      } else if (el.parentNode) {
+        el = el.parentNode.host;
+      } else {
+        el = null;
+      }
     }
     return null;
   }
@@ -153,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);
@@ -161,6 +167,7 @@
 
   /**
    * @param {!Event} event
+   * @return {?Element}
    */
   function findFormSubmitter(event) {
     if (event.submitter) {
@@ -179,7 +186,7 @@
       submitter = root.activeElement;
     }
 
-    if (submitter.form !== form) {
+    if (!submitter || submitter.form !== form) {
       return null;
     }
     return submitter;
@@ -195,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;
@@ -215,7 +222,8 @@
     }
     event.preventDefault();
 
-    if (submitter) {
+    if (value != null) {
+      // nb. we explicitly check against null/undefined
       dialog.close(value);
     } else {
       dialog.close();
@@ -751,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
@@ -796,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);
@@ -810,7 +818,7 @@
       if (!valid) {
         if (!(target.localName === 'input' && target.type === 'image')) { return; }
         // this is a <input type="image">, which can submit forms
-        dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY;
+        dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY;
       }
 
       var dialog = findNearestDialog(target);
diff --git a/node_modules/dialog-polyfill/index.js b/node_modules/dialog-polyfill/index.js
index 3643014..8adc5ad 100644
--- a/node_modules/dialog-polyfill/index.js
+++ b/node_modules/dialog-polyfill/index.js
@@ -65,7 +65,13 @@
     if (el.localName === 'dialog') {
       return /** @type {HTMLDialogElement} */ (el);
     }
-    el = el.parentElement;
+    if (el.parentElement) {
+      el = el.parentElement;
+    } else if (el.parentNode) {
+      el = el.parentNode.host;
+    } else {
+      el = null;
+    }
   }
   return null;
 }
@@ -148,7 +154,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);
@@ -156,6 +162,7 @@
 
 /**
  * @param {!Event} event
+ * @return {?Element}
  */
 function findFormSubmitter(event) {
   if (event.submitter) {
@@ -174,7 +181,7 @@
     submitter = root.activeElement;
   }
 
-  if (submitter.form !== form) {
+  if (!submitter || submitter.form !== form) {
     return null;
   }
   return submitter;
@@ -190,7 +197,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;
@@ -210,7 +217,8 @@
   }
   event.preventDefault();
 
-  if (submitter) {
+  if (value != null) {
+    // nb. we explicitly check against null/undefined
     dialog.close(value);
   } else {
     dialog.close();
@@ -748,7 +756,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
@@ -793,7 +801,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);
@@ -807,7 +815,7 @@
     if (!valid) {
       if (!(target.localName === 'input' && target.type === 'image')) { return; }
       // this is a <input type="image">, which can submit forms
-      dialogPolyfill.useValue = ev.offsetX + ',' + ev.offsetY;
+      dialogPolyfill.imagemapUseValue = ev.offsetX + ',' + ev.offsetY;
     }
 
     var dialog = findNearestDialog(target);
diff --git a/node_modules/dialog-polyfill/package.json b/node_modules/dialog-polyfill/package.json
index 4ecce16..54c6db1 100644
--- a/node_modules/dialog-polyfill/package.json
+++ b/node_modules/dialog-polyfill/package.json
@@ -1,6 +1,6 @@
 {
   "name": "dialog-polyfill",
-  "version": "0.5.4",
+  "version": "0.5.6",
   "description": "Polyfill for the dialog element",
   "main": "dist/dialog-polyfill.js",
   "module": "dist/dialog-polyfill.esm.js",
