From d8d4c3493020bbf163dc963c94a21dc429604c34 Mon Sep 17 00:00:00 2001
From: Quazgar <quazgar@posteo.de>
Date: Tue, 16 Feb 2021 13:19:44 +0000
Subject: [PATCH] FIX: Make edit mode compatible with Safari 11 (on iOS 13).

Remove outerHTML assignment which failed there and replace by equivalent innerHTML workflow.
---
 CHANGELOG.md             |  2 ++
 src/core/js/webcaosdb.js | 14 ++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 985d1541..dc5d40f0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -16,6 +16,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
+- Fixed edit mode for Safari 11.
+
 ### Security (in case of vulnerabilities)
 
 ## [0.3.0] - 2021-02-10
diff --git a/src/core/js/webcaosdb.js b/src/core/js/webcaosdb.js
index 55337a36..b7ad95f4 100644
--- a/src/core/js/webcaosdb.js
+++ b/src/core/js/webcaosdb.js
@@ -1683,11 +1683,17 @@ function getXSLScriptClone(source) {
 /**
  * TODO
  */
-function injectTemplate(orig_xsl, template) {
+function injectTemplate(orig_xsl, templateStr) {
     var xsl = getXSLScriptClone(orig_xsl);
-    var entry_t = xsl.createElement("xsl:template");
-    xsl.firstElementChild.appendChild(entry_t);
-    entry_t.outerHTML = template;
+    // var entry_t = xsl.createElement("xsl:template");
+    // xsl.firstElementChild.appendChild(entry_t);
+    // entry_t.outerHTML = template; // Does not work in templates in Safari 11
+    // Workaround follows, remove after Safari also has the behaviour of Firefox and current WebKit
+    var temp = xsl.documentElement.cloneNode(false)
+    temp.innerHTML = templateStr;
+    var entry_t = temp.firstChild;
+    xsl.documentElement.appendChild(entry_t);
+    // End of workaround
     return xsl;
 }
 
-- 
GitLab