diff --git a/administrator/components/com_config/tmpl/application/default_mail.php b/administrator/components/com_config/tmpl/application/default_mail.php index 2fed80c99480e..3400ba5176099 100644 --- a/administrator/components/com_config/tmpl/application/default_mail.php +++ b/administrator/components/com_config/tmpl/application/default_mail.php @@ -16,7 +16,7 @@ defined('_JEXEC') or die; HTMLHelper::_('form.csrf'); -HTMLHelper::_('webcomponent', ['joomla-field-send-mail' => 'system/webcomponents/joomla-field-send-test-mail.min.js'], ['version' => 'auto', 'relative' => true]); +HTMLHelper::_('webcomponent', 'system/webcomponents/joomla-field-send-test-mail.min.js', ['version' => 'auto', 'relative' => true]); // Load JavaScript message titles Text::script('ERROR'); diff --git a/administrator/templates/atum/component.php b/administrator/templates/atum/component.php index 56cc7983adf65..85c728d3a64f6 100644 --- a/administrator/templates/atum/component.php +++ b/administrator/templates/atum/component.php @@ -17,7 +17,7 @@ $lang = Factory::getLanguage(); // Alerts -HTMLHelper::_('webcomponent', ['joomla-alert' => 'vendor/joomla-custom-elements/joomla-alert.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); +HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); // Add JavaScript Frameworks HTMLHelper::_('bootstrap.framework'); diff --git a/administrator/templates/atum/error.php b/administrator/templates/atum/error.php index 56ff80ff16b3a..93d696ebb829c 100644 --- a/administrator/templates/atum/error.php +++ b/administrator/templates/atum/error.php @@ -42,7 +42,7 @@ 'base' => JUri::base(true), ], "webcomponents" => [ - "joomla-alert" => Uri::root() . 'media/vendor/joomla-custom-elements/js/joomla-alert.min.js', + Uri::root() . 'media/vendor/joomla-custom-elements/js/joomla-alert.min.js', ] ]; ?> diff --git a/administrator/templates/atum/index.php b/administrator/templates/atum/index.php index e8f6a002cdcee..6f567b80425ae 100644 --- a/administrator/templates/atum/index.php +++ b/administrator/templates/atum/index.php @@ -45,7 +45,7 @@ HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true)); // Alerts -HTMLHelper::_('webcomponent', ['joomla-alert' => 'vendor/joomla-custom-elements/joomla-alert.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); +HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); // Load specific language related CSS HTMLHelper::_('stylesheet', 'administrator/language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto')); diff --git a/administrator/templates/atum/login.php b/administrator/templates/atum/login.php index 3649debdf1785..aba1c3fc7dfc7 100644 --- a/administrator/templates/atum/login.php +++ b/administrator/templates/atum/login.php @@ -28,7 +28,7 @@ HTMLHelper::_('stylesheet', 'template' . ($this->direction === 'rtl' ? '-rtl' : '') . '.min.css', ['version' => 'auto', 'relative' => true]); // Alerts -HTMLHelper::_('webcomponent', ['joomla-alert' => 'vendor/joomla-custom-elements/joomla-alert.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); +HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto']); // Load custom CSS file diff --git a/installation/template/index.php b/installation/template/index.php index 21f251a1e247a..37439bea3849f 100644 --- a/installation/template/index.php +++ b/installation/template/index.php @@ -20,7 +20,7 @@ JHtml::_('behavior.keepalive'); JHtml::_('behavior.formvalidator'); JHtml::_('script', 'installation/template/js/template.js', ['version' => 'auto']); -JHtml::_('webcomponent', ['joomla-alert' => 'system/joomla-alert.min.js'], ['version' => 'auto', 'relative' => true]); +JHtml::_('webcomponent', 'system/joomla-alert.min.js', ['version' => 'auto', 'relative' => true]); // Add script options $this->addScriptOptions('system.installation', ['url' => JRoute::_('index.php')]); diff --git a/layouts/joomla/form/field/media.php b/layouts/joomla/form/field/media.php index d7356387e9e1a..54dd4a47de858 100644 --- a/layouts/joomla/form/field/media.php +++ b/layouts/joomla/form/field/media.php @@ -135,7 +135,7 @@ ) ); - HTMLHelper::_('webcomponent', ['joomla-field-media' => 'system/webcomponents/joomla-field-media.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => true]); + HTMLHelper::_('webcomponent', 'system/webcomponents/joomla-field-media.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => true]); Text::script('JLIB_FORM_MEDIA_PREVIEW_EMPTY', true); ?> diff --git a/layouts/joomla/form/field/radio/switcher.php b/layouts/joomla/form/field/radio/switcher.php index 32c887a27b750..9ecb7dcee666e 100644 --- a/layouts/joomla/form/field/radio/switcher.php +++ b/layouts/joomla/form/field/radio/switcher.php @@ -59,7 +59,7 @@ $alt = preg_replace('/[^a-zA-Z0-9_\-]/', '_', $name); HTMLHelper::_('webcomponent', - ['joomla-switcher' => 'system/webcomponents/joomla-field-switcher.min.js'], + 'system/webcomponents/joomla-field-switcher.min.js', ['relative' => true, 'version' => 'auto'] ); diff --git a/layouts/joomla/form/field/user.php b/layouts/joomla/form/field/user.php index 4d74bdc2b9d40..0ddf708e7659f 100644 --- a/layouts/joomla/form/field/user.php +++ b/layouts/joomla/form/field/user.php @@ -53,7 +53,7 @@ // @TODO remove jQuery dependency once modal moves to webcomponents HTMLHelper::_('jquery.framework'); - HTMLHelper::_('webcomponent', ['joomla-field-user' =>'system/webcomponents/joomla-field-user.min.js'], ['version' => 'auto', 'relative' => true]);} + HTMLHelper::_('webcomponent', 'system/webcomponents/joomla-field-user.min.js', ['version' => 'auto', 'relative' => true]);} $uri = new Uri('index.php?option=com_users&view=users&layout=modal&tmpl=component&required=0'); diff --git a/libraries/src/HTML/HTMLHelper.php b/libraries/src/HTML/HTMLHelper.php index 8c92b7d087c2b..a69bd6ef2a828 100644 --- a/libraries/src/HTML/HTMLHelper.php +++ b/libraries/src/HTML/HTMLHelper.php @@ -832,22 +832,22 @@ public static function script($file, $options = array(), $attribs = array()) } /** - * Loads the name and path of a custom element or webcomponent into the scriptOptions object + * Loads the path of a custom element or webcomponent into the scriptOptions object * - * @param array $component The name and path of the web component. - * Also passing a key = fullPolyfill and value= true we force the whole polyfill instead - * of just the custom element. (Polyfills loaded as needed, no force load) - * @param array $options The relative, version, detect browser and detect debug options for the custom element - * or web component. Files need to have a -es5(.min).js for the non ES6 - * Browsers. + * @param string $file The path of the web component (expects the ES6 version). File need to have also an + * -es5(.min).js version in the same folder for the non ES6 Browsers. + * @param array $options The extra options for the script * * @since 4.0.0 * + * @see HTMLHelper::stylesheet() + * @see HTMLHelper::script() + * * @return void */ - public static function webcomponent(array $component = [], array $options = []) + public static function webcomponent(string $file, array $options = []) { - if (empty($component)) + if (empty($file)) { return; } @@ -855,47 +855,57 @@ public static function webcomponent(array $component = [], array $options = []) // Script core.js is responsible for the polyfills and the async loading of the web components static::_('behavior.core'); - foreach ($component as $key => $value) + $version = ''; + $mediaVersion = Factory::getDocument()->getMediaVersion(); + + // Add the css if exists + self::_('stylesheet', str_replace('.js', '.css', $file), $options); + + $includes = static::includeRelativeFiles( + 'js', + $file, + $options['relative'] ?? true, + $options['detectBrowser'] ?? false, + $options['detectDebug'] ?? false + ); + + if (count($includes) === 0) { - $version = ''; - $mediaVersion = Factory::getDocument()->getMediaVersion(); - - // Add the css if exists - self::_('stylesheet', str_replace('.js', '.css', $value), $options); - - $includes = static::includeRelativeFiles( - 'js', - $value, - $options['relative'] ?? true, - $options['detectBrowser'] ?? false, - $options['detectDebug'] ?? false - ); + return; + } - if (count($includes) === 0) + if (isset($options['version'])) + { + if ($options['version'] === 'auto') { - continue; + $version = '?' . $mediaVersion; } - - if (isset($options['version'])) + else { - if ($options['version'] === 'auto') - { - $version = '?' . $mediaVersion; - } - else - { - $version = '?' . $options['version']; - } + $version = '?' . $options['version']; } + } - if (count($includes) === 1) + if (count($includes) === 1) + { + $potential = $includes[0] . ((strpos($includes[0], '?') === false) ? $version : ''); + + if (!in_array($potential, Factory::getDocument()->getScriptOptions('webcomponents'))) { - Factory::getDocument()->addScriptOptions('webcomponents', [$key => $includes[0] . ((strpos($includes[0], '?') === false) ? $version : '')]); - continue; + Factory::getDocument()->addScriptOptions('webcomponents', [$potential]); + return; } - Factory::getDocument()->addScriptOptions('webcomponents', [$key => $includes . ((strpos($includes, '?') === false) ? $version : '')]); + return; } + + $potential = $includes . ((strpos($includes, '?') === false) ? $version : ''); + + if (!in_array($potential, Factory::getDocument()->getScriptOptions('webcomponents'))) + { + Factory::getDocument()->addScriptOptions('webcomponents', [$potential]); + } + } /** diff --git a/media/system/js/core.js b/media/system/js/core.js index 44e70bb042f8a..2b591052de23d 100644 --- a/media/system/js/core.js +++ b/media/system/js/core.js @@ -939,28 +939,30 @@ Joomla.editors.instances = Joomla.editors.instances || { }; /* Load web components async */ - var loadWC = function (wc) { - var el, p, es5; - for (p in wc) { - if (wc.hasOwnProperty(p)) { - if (wc[p].match(/\.js/g)) { - el = document.createElement('script'); + var loadWC = function () { + var wc = Joomla.getOptions('webcomponents'); + + if (wc.length) { + wc.forEach(function(component) { + if (component.match(/\.js/g)) { + var el = document.createElement('script'); if (!checkES6()) { + var es5; // Browser is not ES6! - if (wc[p].match(/\.min\.js/g)) { - es5 = wc[p].replace(/\.min\.js/g, '-es5.min.js') - } else if (wc[p].match(/\.js/g)) { - es5 = wc[p].replace(/\.js/g, '-es5.js') + if (component.match(/\.min\.js/g)) { + es5 = component.replace(/\.min\.js/g, '-es5.min.js') + } else if (component.match(/\.js/g)) { + es5 = component.replace(/\.js/g, '-es5.js') } el.src = es5; } else { - el.src = wc[p]; + el.src = component; } } if (el) { document.head.appendChild(el); } - } + }); } }; diff --git a/media/system/js/core.min.js b/media/system/js/core.min.js index de95b2b9d51f2..3c2d36f4597cc 100644 --- a/media/system/js/core.min.js +++ b/media/system/js/core.min.js @@ -1 +1 @@ -Joomla=window.Joomla||{},Joomla.editors=Joomla.editors||{},Joomla.editors.instances=Joomla.editors.instances||{},function(e,t){"use strict";e.submitform=function(e,o,n){o||(o=t.getElementById("adminForm")),e&&(o.task.value=e),o.noValidate=!n,n?o.hasAttribute("novalidate")&&o.removeAttribute("novalidate"):o.setAttribute("novalidate","");var r=t.createElement("input");r.style.display="none",r.type="submit",o.appendChild(r).click(),o.removeChild(r)},e.submitbutton=function(o){var n=t.querySelectorAll("form.form-validate");if(n.length>0)for(var r=0,s=n.length;r-1?(f="notice"===i?"info":i,f="message"===i?"success":f,f="error"===i?"danger":f):f="info",c.setAttribute("type",f),c.setAttribute("dismiss","true"),s&&parseInt(s)>0&&c.setAttribute("autodismiss",s);else{c=t.createElement("div"),["notice","message","error"].indexOf(i)>-1?(f="notice"===i?"info":i,f="message"===i?"success":f,f="error"===i?"danger":f):f="info",c.className="alert "+f;var p=t.createElement("button");p.setAttribute("type","button"),p.setAttribute("data-dismiss","alert"),p.className="close",p.innerHTML="×",c.appendChild(p)}for(void 0!==e.JText._(i)&&((d=t.createElement("h4")).className="alert-heading",d.innerHTML=e.JText._(i)?e.JText._(i):i,c.appendChild(d)),m=l.length-1;m>=0;m--)(u=t.createElement("div")).innerHTML=l[m],c.appendChild(u);a.appendChild(c),"object"!=typeof window.customElements&&"function"!=typeof window.customElements.get("joomla-alert")&&s&&parseInt(s)>0&&setTimeout(function(){e.removeMessages(a)},s)}},e.removeMessages=function(e){var o;if(o=e||t.getElementById("system-message-container"),"object"==typeof window.customElements&&window.customElements.get("joomla-alert")){var n=o.querySelectorAll("joomla-alert");if(n.length)for(var r=0,s=n.length;r=0;i--)a.unshift(["&#",s[i].charCodeAt(),";"].join(""));s=a.join(""),r.error=[e.JText._("JLIB_JS_AJAX_ERROR_PARSE").replace("%s",s)]}else"nocontent"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_NO_CONTENT")]:"timeout"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_TIMEOUT")]:"abort"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_CONNECTION_ABORT")]:t.responseJSON&&t.responseJSON.message?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)+" "+t.responseJSON.message+""]:t.statusText?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)+" "+t.statusText+""]:r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)];return r},e.isChecked=function(e,o){if(void 0===o&&(o=t.getElementById("adminForm")),o.boxchecked.value=e?parseInt(o.boxchecked.value)+1:parseInt(o.boxchecked.value)-1,o.elements["checkall-toggle"]){var n,r,s,a=!0;for(n=0,s=o.elements.length;n-1?n.options[r].value:null},window.listItemTask=function(t,o){return e.listItemTask(t,o)},e.listItemTask=function(e,o){var n,r=t.adminForm,s=0,a=r[e];if(!a)return!1;for(;n=r["cb"+s];)n.checked=!1,s++;return a.checked=!0,r.boxchecked.value=1,window.submitform(o),!1},window.submitbutton=function(t){e.submitbutton(t)},window.submitform=function(t){e.submitform(t)},window.saveorder=function(e,t){window.checkAll_button(e,t)},window.checkAll_button=function(o,n){var r,s;for(n=n||"saveorder",r=0;r<=o;r++){if(!(s=t.adminForm["cb"+r]))return void alert("You cannot change the order of items, as an item in the list is `Checked Out`");s.checked=!0}e.submitform(n)},e.loadingLayer=function(o,n){if(o=o||"show",n=n||t.body,"load"===o){var r=(e.getOptions("system.paths")||{}).root||"",s=t.createElement("div");s.id="loading-logo",s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.width="100%",s.style.height="100%",s.style.opacity="0.8",s.style.filter="alpha(opacity=80)",s.style.overflow="hidden",s.style["z-index"]="10000",s.style.display="none",s.style["background-color"]="#fff",s.style["background-image"]='url("'+r+'/media/system/images/ajax-loader.gif")',s.style["background-position"]="center",s.style["background-repeat"]="no-repeat",s.style["background-attachment"]="fixed",n.appendChild(s)}else t.getElementById("loading-logo")||e.loadingLayer("load",n),t.getElementById("loading-logo").style.display="show"==o?"block":"none";return t.getElementById("loading-logo")},e.extend=function(e,t){for(var o in null===e&&(e={}),t)t.hasOwnProperty(o)&&(e[o]=t[o]);return e},e.request=function(t){t=e.extend({url:"",method:"GET",data:null,perform:!0},t);try{var o=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("MSXML2.XMLHTTP.3.0");if(o.open(t.method,t.url,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.setRequestHeader("X-Ajax-Engine","Joomla!"),"GET"!==t.method){var n=e.getOptions("csrf.token","");n&&o.setRequestHeader("X-CSRF-Token",n),t.headers&&t.headers["Content-Type"]||o.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}if(t.headers)for(var r in t.headers)t.headers.hasOwnProperty(r)&&o.setRequestHeader(r,t.headers[r]);if(o.onreadystatechange=function(){4===o.readyState&&(200===o.status?t.onSuccess&&t.onSuccess.call(window,o.responseText,o):t.onError&&t.onError.call(window,o))},t.perform){if(t.onBefore&&!1===t.onBefore.call(window,o))return o;o.send(t.data)}}catch(e){return window.console&&console.log(e),!1}return o},e.localStorageEnabled=function(){var e="joomla-cms";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}},e.WebComponents=function(){var o,n=[];e.getOptions&&"function"==typeof e.getOptions&&(o=e.getOptions("webcomponents",{}));var r=function(){try{return new Function("(a = 0) => a"),!0}catch(e){return!1}},s=function(e){var o,n,s;for(n in e)e.hasOwnProperty(n)&&(e[n].match(/\.js/g)&&(o=t.createElement("script"),r()?o.src=e[n]:(e[n].match(/\.min\.js/g)?s=e[n].replace(/\.min\.js/g,"-es5.min.js"):e[n].match(/\.js/g)&&(s=e[n].replace(/\.js/g,"-es5.js")),o.src=s)),o&&t.head.appendChild(o))};if("import"in t.createElement("link")||n.push("hi"),(!("attachShadow"in Element.prototype&&"getRootNode"in Element.prototype)||window.ShadyDOM&&window.ShadyDOM.force)&&n.push("sd"),window.customElements&&!window.customElements.forcePolyfill||n.push("ce"),"content"in t.createElement("template")&&window.Promise&&Array.from&&t.createDocumentFragment().cloneNode()instanceof DocumentFragment||(n=["lite"]),n.length){var a="core.min.js",i=t.querySelector('script[src*="'+a+'"]');if(i||(a="core.js",i=t.querySelector('script[src*="'+a+'"]')),!i)throw new Error("core(.min).js is not registered correctly!");var l=t.createElement("script"),c="media/vendor/webcomponentsjs/js/webcomponents-"+n.join("-")+".min.js",d=i.src.match(/\?.*/)[0],m=e.getOptions("system.paths");if(!m)throw new Error("core(.min).js is not registered correctly!");l.src=m.rootFull+c+(d||""),t.head.appendChild(l),t.addEventListener("WebComponentsReady",function(){s(o)})}else{var u=function(){requestAnimationFrame(function(){t.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0})),s(o)})};"loading"!==t.readyState?u():t.addEventListener("readystatechange",function e(){u(),t.removeEventListener("readystatechange",e)})}}}(Joomla,document),function(e,t){"use strict";t.Event||(t.Event={},t.Event.dispatch=function(t,o,n){var r;"string"==typeof t&&(n=o,o=t,t=e),n=n||{},e.CustomEvent&&"function"==typeof e.CustomEvent?r=new CustomEvent(o,{detail:n,bubbles:!0,cancelable:!0}):((r=document.createEvent("Event")).initEvent(o,!0,!0),r.detail=n),t.dispatchEvent(r)},t.Event.listenOnce=function(e,t,o){var n=function(r){return e.removeEventListener(t,n),o.call(e,r)};e.addEventListener(t,n)})}(window,Joomla),document.addEventListener("DOMContentLoaded",function(){Joomla.WebComponents()}); \ No newline at end of file +Joomla=window.Joomla||{},Joomla.editors=Joomla.editors||{},Joomla.editors.instances=Joomla.editors.instances||{},function(e,t){"use strict";e.submitform=function(e,o,n){o||(o=t.getElementById("adminForm")),e&&(o.task.value=e),o.noValidate=!n,n?o.hasAttribute("novalidate")&&o.removeAttribute("novalidate"):o.setAttribute("novalidate","");var r=t.createElement("input");r.style.display="none",r.type="submit",o.appendChild(r).click(),o.removeChild(r)},e.submitbutton=function(o){var n=t.querySelectorAll("form.form-validate");if(n.length>0)for(var r=0,s=n.length;r-1?(f="notice"===i?"info":i,f="message"===i?"success":f,f="error"===i?"danger":f):f="info",c.setAttribute("type",f),c.setAttribute("dismiss","true"),s&&parseInt(s)>0&&c.setAttribute("autodismiss",s);else{c=t.createElement("div"),["notice","message","error"].indexOf(i)>-1?(f="notice"===i?"info":i,f="message"===i?"success":f,f="error"===i?"danger":f):f="info",c.className="alert "+f;var p=t.createElement("button");p.setAttribute("type","button"),p.setAttribute("data-dismiss","alert"),p.className="close",p.innerHTML="×",c.appendChild(p)}for(void 0!==e.JText._(i)&&((d=t.createElement("h4")).className="alert-heading",d.innerHTML=e.JText._(i)?e.JText._(i):i,c.appendChild(d)),m=l.length-1;m>=0;m--)(u=t.createElement("div")).innerHTML=l[m],c.appendChild(u);a.appendChild(c),"object"!=typeof window.customElements&&"function"!=typeof window.customElements.get("joomla-alert")&&s&&parseInt(s)>0&&setTimeout(function(){e.removeMessages(a)},s)}},e.removeMessages=function(e){var o;if(o=e||t.getElementById("system-message-container"),"object"==typeof window.customElements&&window.customElements.get("joomla-alert")){var n=o.querySelectorAll("joomla-alert");if(n.length)for(var r=0,s=n.length;r=0;i--)a.unshift(["&#",s[i].charCodeAt(),";"].join(""));s=a.join(""),r.error=[e.JText._("JLIB_JS_AJAX_ERROR_PARSE").replace("%s",s)]}else"nocontent"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_NO_CONTENT")]:"timeout"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_TIMEOUT")]:"abort"===o?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_CONNECTION_ABORT")]:t.responseJSON&&t.responseJSON.message?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)+" "+t.responseJSON.message+""]:t.statusText?r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)+" "+t.statusText+""]:r.error=[e.JText._("JLIB_JS_AJAX_ERROR_OTHER").replace("%s",t.status)];return r},e.isChecked=function(e,o){if(void 0===o&&(o=t.getElementById("adminForm")),o.boxchecked.value=e?parseInt(o.boxchecked.value)+1:parseInt(o.boxchecked.value)-1,o.elements["checkall-toggle"]){var n,r,s,a=!0;for(n=0,s=o.elements.length;n-1?n.options[r].value:null},window.listItemTask=function(t,o){return e.listItemTask(t,o)},e.listItemTask=function(e,o){var n,r=t.adminForm,s=0,a=r[e];if(!a)return!1;for(;n=r["cb"+s];)n.checked=!1,s++;return a.checked=!0,r.boxchecked.value=1,window.submitform(o),!1},window.submitbutton=function(t){e.submitbutton(t)},window.submitform=function(t){e.submitform(t)},window.saveorder=function(e,t){window.checkAll_button(e,t)},window.checkAll_button=function(o,n){var r,s;for(n=n||"saveorder",r=0;r<=o;r++){if(!(s=t.adminForm["cb"+r]))return void alert("You cannot change the order of items, as an item in the list is `Checked Out`");s.checked=!0}e.submitform(n)},e.loadingLayer=function(o,n){if(o=o||"show",n=n||t.body,"load"===o){var r=(e.getOptions("system.paths")||{}).root||"",s=t.createElement("div");s.id="loading-logo",s.style.position="fixed",s.style.top="0",s.style.left="0",s.style.width="100%",s.style.height="100%",s.style.opacity="0.8",s.style.filter="alpha(opacity=80)",s.style.overflow="hidden",s.style["z-index"]="10000",s.style.display="none",s.style["background-color"]="#fff",s.style["background-image"]='url("'+r+'/media/system/images/ajax-loader.gif")',s.style["background-position"]="center",s.style["background-repeat"]="no-repeat",s.style["background-attachment"]="fixed",n.appendChild(s)}else t.getElementById("loading-logo")||e.loadingLayer("load",n),t.getElementById("loading-logo").style.display="show"==o?"block":"none";return t.getElementById("loading-logo")},e.extend=function(e,t){for(var o in null===e&&(e={}),t)t.hasOwnProperty(o)&&(e[o]=t[o]);return e},e.request=function(t){t=e.extend({url:"",method:"GET",data:null,perform:!0},t);try{var o=window.XMLHttpRequest?new XMLHttpRequest:new ActiveXObject("MSXML2.XMLHTTP.3.0");if(o.open(t.method,t.url,!0),o.setRequestHeader("X-Requested-With","XMLHttpRequest"),o.setRequestHeader("X-Ajax-Engine","Joomla!"),"GET"!==t.method){var n=e.getOptions("csrf.token","");n&&o.setRequestHeader("X-CSRF-Token",n),t.headers&&t.headers["Content-Type"]||o.setRequestHeader("Content-Type","application/x-www-form-urlencoded")}if(t.headers)for(var r in t.headers)t.headers.hasOwnProperty(r)&&o.setRequestHeader(r,t.headers[r]);if(o.onreadystatechange=function(){4===o.readyState&&(200===o.status?t.onSuccess&&t.onSuccess.call(window,o.responseText,o):t.onError&&t.onError.call(window,o))},t.perform){if(t.onBefore&&!1===t.onBefore.call(window,o))return o;o.send(t.data)}}catch(e){return window.console&&console.log(e),!1}return o},e.localStorageEnabled=function(){var e="joomla-cms";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}},e.WebComponents=function(){var o=[];e.getOptions&&"function"==typeof e.getOptions&&e.getOptions("webcomponents",{});var n=function(){var o=e.getOptions("webcomponents");o.length&&o.forEach(function(e){if(e.match(/\.js/g)){var o,n=t.createElement("script");if(function(){try{return new Function("(a = 0) => a"),!0}catch(e){return!1}}())n.src=e;else e.match(/\.min\.js/g)?o=e.replace(/\.min\.js/g,"-es5.min.js"):e.match(/\.js/g)&&(o=e.replace(/\.js/g,"-es5.js")),n.src=o}n&&t.head.appendChild(n)})};if("import"in t.createElement("link")||o.push("hi"),(!("attachShadow"in Element.prototype&&"getRootNode"in Element.prototype)||window.ShadyDOM&&window.ShadyDOM.force)&&o.push("sd"),window.customElements&&!window.customElements.forcePolyfill||o.push("ce"),"content"in t.createElement("template")&&window.Promise&&Array.from&&t.createDocumentFragment().cloneNode()instanceof DocumentFragment||(o=["lite"]),o.length){var r="core.min.js",s=t.querySelector('script[src*="'+r+'"]');if(s||(r="core.js",s=t.querySelector('script[src*="'+r+'"]')),!s)throw new Error("core(.min).js is not registered correctly!");var a=t.createElement("script"),i="media/vendor/webcomponentsjs/js/webcomponents-"+o.join("-")+".min.js",l=s.src.match(/\?.*/)[0],c=e.getOptions("system.paths");if(!c)throw new Error("core(.min).js is not registered correctly!");a.src=c.rootFull+i+(l||""),t.head.appendChild(a),t.addEventListener("WebComponentsReady",function(){n()})}else{var d=function(){requestAnimationFrame(function(){t.dispatchEvent(new CustomEvent("WebComponentsReady",{bubbles:!0})),n()})};"loading"!==t.readyState?d():t.addEventListener("readystatechange",function e(){d(),t.removeEventListener("readystatechange",e)})}}}(Joomla,document),function(e,t){"use strict";t.Event||(t.Event={},t.Event.dispatch=function(t,o,n){var r;"string"==typeof t&&(n=o,o=t,t=e),n=n||{},e.CustomEvent&&"function"==typeof e.CustomEvent?r=new CustomEvent(o,{detail:n,bubbles:!0,cancelable:!0}):((r=document.createEvent("Event")).initEvent(o,!0,!0),r.detail=n),t.dispatchEvent(r)},t.Event.listenOnce=function(e,t,o){var n=function(r){return e.removeEventListener(t,n),o.call(e,r)};e.addEventListener(t,n)})}(window,Joomla),document.addEventListener("DOMContentLoaded",function(){Joomla.WebComponents()}); \ No newline at end of file diff --git a/templates/cassiopeia/index.php b/templates/cassiopeia/index.php index afb9d381ecbc6..bc3e6fa3303db 100644 --- a/templates/cassiopeia/index.php +++ b/templates/cassiopeia/index.php @@ -48,7 +48,7 @@ HTMLHelper::_('stylesheet', 'user.css', array('version' => 'auto', 'relative' => true)); // Alerts progressive enhancement -HTMLHelper::_('webcomponent', ['joomla-alert' => 'vendor/joomla-custom-elements/joomla-alert.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); +HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); // Load specific language related CSS HTMLHelper::_('stylesheet', 'language/' . $lang->getTag() . '/' . $lang->getTag() . '.css', array('version' => 'auto')); diff --git a/templates/cassiopeia/offline.php b/templates/cassiopeia/offline.php index 5a64ddeb67f11..430b21141d67d 100644 --- a/templates/cassiopeia/offline.php +++ b/templates/cassiopeia/offline.php @@ -34,7 +34,7 @@ HTMLHelper::_('stylesheet', 'offline.css', ['version' => 'auto', 'relative' => true]); // Alerts progressive enhancement -HTMLHelper::_('webcomponent', ['joomla-alert' => 'vendor/joomla-custom-elements/joomla-alert.min.js'], ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); +HTMLHelper::_('webcomponent', 'vendor/joomla-custom-elements/joomla-alert.min.js', ['relative' => true, 'version' => 'auto', 'detectBrowser' => false, 'detectDebug' => false]); // Template color if ($this->params->get('templateColor'))