keycloak-memoizeit

Details

diff --git a/themes/src/main/resources/theme/keycloak-preview/account/index.ftl b/themes/src/main/resources/theme/keycloak-preview/account/index.ftl
index 2755da1..b77cb05 100644
--- a/themes/src/main/resources/theme/keycloak-preview/account/index.ftl
+++ b/themes/src/main/resources/theme/keycloak-preview/account/index.ftl
@@ -3,6 +3,11 @@
     <head>
         <title>${msg("accountManagementTitle")}</title>
 
+        <meta charset="UTF-8">
+        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
+        <meta name="robots" content="noindex, nofollow">
+        <meta name="viewport" content="width=device-width, initial-scale=1">
+        
         <script>
             var authUrl = '${authUrl}';
             var baseUrl = '${baseUrl}';
@@ -33,11 +38,6 @@
 
         <base href="${baseUrl}/">
 
-        <meta charset="UTF-8">
-        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
-        <meta name="robots" content="noindex, nofollow">
-        <meta name="viewport" content="width=device-width, initial-scale=1">
-
         <link rel="icon" href="${resourceUrl}/app/assets/img/favicon.ico" type="image/x-icon"/>
 
         <!-- PatternFly -->
@@ -72,15 +72,34 @@
         <script src="${resourceUrl}/node_modules/patternfly/dist/js/patternfly.min.js"></script>
         <script src="${authUrl}/js/keycloak.js"></script>
 
+   <!-- TODO: We should save these css and js into variables and then load in
+        main.ts for better performance.  These might be loaded twice.
+        -->
+        <#if properties.styles?has_content>
+            <#list properties.styles?split(' ') as style>
+            <link href="${resourceUrl}/${style}" rel="stylesheet"/>
+            </#list>
+            <a href="../../../../../../../../keycloak-quickstarts/app-profile-jee-html5/src/main/webapp/index.html"></a>
+        </#if>
+
+        <#if properties.scripts?has_content>
+            <#list properties.scripts?split(' ') as script>
+        <script type="text/javascript" src="${resourceUrl}/${script}"></script>
+            </#list>
+        </#if>
+    </head>
+
+    <body>
+
         <script>
             var keycloak = Keycloak('${authUrl}/realms/${realm.name}/account/keycloak.json');
-            keycloak.init({onLoad: 'check-sso'}).success(function(authenticated) {
-                var loadjs = function (url,loadListener) {
+            var loadjs = function (url,loadListener) {
                     const script = document.createElement("script");
                     script.src = resourceUrl + url;
                     if (loadListener) script.addEventListener("load", loadListener);
                     document.head.appendChild(script);
                 };
+            keycloak.init({onLoad: 'check-sso'}).success(function(authenticated) {
                 loadjs("/node_modules/core-js/client/shim.min.js", function(){
                     loadjs("/node_modules/zone.js/dist/zone.min.js");
                     loadjs("/node_modules/systemjs/dist/system.src.js", function() {
@@ -97,26 +116,6 @@
         </script>
 
 
-   <!-- TODO: We should save these css and js into variables and then load in
-        main.ts for better performance.  These might be loaded twice.
-        -->
-        <#if properties.styles?has_content>
-            <#list properties.styles?split(' ') as style>
-        <link href="${resourceUrl}/${style}" rel="stylesheet"/>
-            </#list>
-    <a href="../../../../../../../../keycloak-quickstarts/app-profile-jee-html5/src/main/webapp/index.html"></a>
-        </#if>
-
-        <#if properties.scripts?has_content>
-            <#list properties.scripts?split(' ') as script>
-        <script type="text/javascript" src="${resourceUrl}/${script}"></script>
-            </#list>
-        </#if>
-        </head>
-    <body>
-
-
-
 <!-- Top Navigation -->
         <nav class="navbar navbar-pf-alt">
 
@@ -151,7 +150,7 @@
 
 <!--Top Nav -->
 
-<!-- Home Page --->
+<!-- Home Page -->
 
     <div class="cards-pf" id="welcomeScreen">
         <div class="text-center">
@@ -232,8 +231,8 @@
 
         <script>
             var winHash = window.location.hash;
-            if (winHash.startsWith('#/') && !winHash.startsWith('#/&state')) {
-                document.getElementById("welcomeScreen").style.visibility='hidden';
+            if ((winHash.indexOf('#/') == 0) && (!winHash.indexOf('#/&state') == 0)) {
+                document.getElementById("welcomeScreen").style.display='none';
             }
         </script>
 
diff --git a/themes/src/main/resources/theme/keycloak-preview/account/resources/app/app.component.ts b/themes/src/main/resources/theme/keycloak-preview/account/resources/app/app.component.ts
index 72a19af..48ffac0 100644
--- a/themes/src/main/resources/theme/keycloak-preview/account/resources/app/app.component.ts
+++ b/themes/src/main/resources/theme/keycloak-preview/account/resources/app/app.component.ts
@@ -54,7 +54,9 @@ export class AppComponent implements MenuClickListener {
                 if (navEnd.url !== '/') {
                     this.showSideNav = true;
                     var welcomeScreen = document.getElementById('welcomeScreen')
-                    if (welcomeScreen) welcomeScreen.remove();
+                    
+                    // must use removeChild() -- remove() not available on IE 11
+                    if (welcomeScreen) welcomeScreen.parentNode.removeChild(welcomeScreen);
                 }
             }
         });
diff --git a/themes/src/main/resources/theme/keycloak-preview/account/resources/systemjs-angular-loader.js b/themes/src/main/resources/theme/keycloak-preview/account/resources/systemjs-angular-loader.js
index 4d3e127..3990219 100644
--- a/themes/src/main/resources/theme/keycloak-preview/account/resources/systemjs-angular-loader.js
+++ b/themes/src/main/resources/theme/keycloak-preview/account/resources/systemjs-angular-loader.js
@@ -10,6 +10,11 @@ module.exports.translate = function(load){
 
   basePathParts.pop();
   var basePath = basePathParts.join('/');
+  
+  // basePath leaves out leading slash on IE 11
+  if (!basePath.startsWith('/')) {
+      basePath = '/' + basePath;
+  }
 
   var baseHref = document.createElement('a');
   baseHref.href = this.baseURL;