diff --git a/libraries/cms/html/searchtools.php b/libraries/cms/html/searchtools.php index ba29bcbc27d39..328a740ab0b56 100644 --- a/libraries/cms/html/searchtools.php +++ b/libraries/cms/html/searchtools.php @@ -39,7 +39,7 @@ public static function main() if (empty(static::$loaded[__METHOD__])) { // Load the script && css files - JHtml::_('script', 'system/searchtools.js', array('version' => 'auto', 'relative' => true)); + JHtml::_('script', 'system/searchtools.min.js', array('version' => 'auto', 'relative' => true)); JHtml::_('stylesheet', 'system/searchtools.css', array('version' => 'auto', 'relative' => true)); static::$loaded[__METHOD__] = true; @@ -71,8 +71,8 @@ public static function form($selector = '.js-stools-form', $options = array()) // Load the script && css files JHtml::_('behavior.core'); - JHtml::_('script', 'system/searchtools.js', false, true); - JHtml::_('stylesheet', 'system/searchtools.css', array(), true); + JHtml::_('script', 'system/searchtools.min.js', array('version' => 'auto', 'relative' => true)); + JHtml::_('stylesheet', 'system/searchtools.css', array('version' => 'auto', 'relative' => true)); JFactory::getDocument()->addScriptOptions('searchtools', $options); diff --git a/media/system/js/searchtools.js b/media/system/js/searchtools.js index 447ef14d51fe2..867bddd05b0e6 100644 --- a/media/system/js/searchtools.js +++ b/media/system/js/searchtools.js @@ -369,7 +369,7 @@ } } - if (desiredOption.length) + if (desiredOption && desiredOption.length) { desiredOption.setAttribute('selected', 'selected'); } diff --git a/media/system/js/searchtools.min.js b/media/system/js/searchtools.min.js index 3efcc1adebd6e..90247d151c149 100644 --- a/media/system/js/searchtools.min.js +++ b/media/system/js/searchtools.min.js @@ -1 +1 @@ -!function(){"use strict";var t=function(t,e){var i={formSelector:".js-stools-form",searchFieldSelector:".js-stools-field-search",clearBtnSelector:".js-stools-btn-clear",mainContainerSelector:".js-stools",searchBtnSelector:".js-stools-btn-search",filterBtnSelector:".js-stools-btn-filter",filterContainerSelector:".js-stools-container-filters",filtersHidden:!0,listBtnSelector:".js-stools-btn-list",listContainerSelector:".js-stools-container-list",listHidden:!0,orderColumnSelector:".js-stools-column-order",orderBtnSelector:".js-stools-btn-order",orderFieldSelector:".js-stools-field-order",orderFieldName:"list[fullordering]",limitFieldSelector:".js-stools-field-limit",defaultLimit:20,activeOrder:null,activeDirection:"ASC",clearListOptions:!1};this.element=t,this.options=Joomla.extend(i,e),this.theForm=document.querySelector(this.options.formSelector),this.filterButton=document.querySelector(this.options.formSelector+" "+this.options.filterBtnSelector),this.filterContainer=document.querySelector(this.options.formSelector+" "+this.options.filterContainerSelector)?document.querySelector(this.options.formSelector+" "+this.options.filterContainerSelector):"",this.filtersHidden=this.options.filtersHidden,this.listButton=document.querySelector(this.options.listBtnSelector),this.listContainer=document.querySelector(this.options.formSelector+" "+this.options.listContainerSelector),this.listHidden=this.options.listHidden,this.mainContainer=document.querySelector(this.options.mainContainerSelector),this.searchButton=document.querySelector(this.options.formSelector+" "+this.options.searchBtnSelector),this.searchField=document.querySelector(this.options.formSelector+" "+this.options.searchFieldSelector),this.searchString=null,this.clearButton=document.querySelector(this.options.clearBtnSelector),this.orderCols=Array.prototype.slice.call(document.querySelectorAll(this.options.formSelector+" "+this.options.orderColumnSelector)),this.orderField=document.querySelector(this.options.formSelector+" "+this.options.orderFieldSelector),this.limitField=document.querySelector(this.options.formSelector+" "+this.options.limitFieldSelector),this.activeColumn=null,this.activeDirection=this.options.activeDirection,this.activeOrder=this.options.activeOrder,this.activeLimit=null,this.clearListOptions=this.options.clearListOptions,this.init()};t.prototype={init:function(){var t=this;document.addEventListener||this.searchField.value===this.searchField.getAttribute("placeholder")&&(this.searchField.value=""),this.searchString=this.searchField.value,this.filterContainer&&this.filterContainer.classList.contains("js-stools-container-filters-visible")?(this.showFilters(),this.showList()):(this.hideFilters(),this.hideList()),t.filterButton&&t.filterButton.addEventListener("click",function(e){t.toggleFilters(),e.stopPropagation(),e.preventDefault()}),t.listButton&&t.listButton.addEventListener("click",function(e){t.toggleList(),e.stopPropagation(),e.preventDefault()}),t.getFilterFields()&&t.getFilterFields().forEach(function(e){t.checkFilter(e),e.addEventListener("change",function(){t.checkFilter(e)})}),t.clearButton&&t.clearButton.addEventListener("click",function(){t.clear()}),this.createOrderField(),t.orderCols.forEach(function(e){e.addEventListener("click",function(){var e=this.getAttribute("data-order"),i=this.getAttribute("data-direction"),r=e+" "+i;e.length&&(t.activeColumn=e,r!==t.activeOrder?(t.activeDirection=i,t.activeOrder=r,t.updateFieldValue(t.orderField,r)):t.toggleDirection(),t.theForm.submit())})})},checkFilter:function(t){var e=this;""!==t.querySelector("option:checked").value?e.activeFilter(t):e.deactiveFilter(t)},clear:function(){var t=this;t.getFilterFields()&&t.getFilterFields().forEach(function(e){e.value="",t.checkFilter(e),window.jQuery&&jQuery.chosen&&jQuery(e).trigger("liszt:updated")}),t.clearListOptions&&(t.getListFields().forEach(function(e){e.value="",t.checkFilter(e),window.jQuery&&jQuery.chosen&&jQuery(e).trigger("liszt:updated")}),document.querySelector("#list_limit").value=t.options.defaultLimit,window.jQuery&&jQuery.chosen&&jQuery("#list_limit").trigger("liszt:updated")),t.theForm.submit()},activeFilter:function(t){t.classList.add("active");var e="#"+t.getAttribute("id"),i=t.querySelector(e);i&&i.classList.add("active")},deactiveFilter:function(t){t.classList.remove("active");var e="#"+t.getAttribute("id"),i=t.querySelector(e);i&&i.classList.remove("active")},getFilterFields:function(){if(this.filterContainer)return Array.prototype.slice.call(this.filterContainer.querySelectorAll("select,input"))},getListFields:function(){return Array.prototype.slice.call(this.listContainer.querySelectorAll("select"))},hideContainer:function(t){t&&(t.style.display="none",t.classList.remove("shown"))},showContainer:function(t){t.style.display="block",t.classList.add("shown")},toggleContainer:function(t){t.classList.contains("shown")?this.hideContainer(t):this.showContainer(t)},hideList:function(){this.hideContainer(this.filterContainer)},showList:function(){this.showContainer(this.filterContainer)},toggleList:function(){this.toggleContainer(this.filterContainer)},hideFilters:function(){this.hideContainer(this.filterContainer)},showFilters:function(){this.showContainer(this.filterContainer)},toggleFilters:function(){this.toggleContainer(this.filterContainer)},toggleDirection:function(){var t=this,e="ASC";"ASC"==t.activeDirection.toUpperCase()&&(e="DESC"),t.activeDirection=e,t.activeOrder=t.activeColumn+" "+e,t.updateFieldValue(t.orderField,t.activeOrder)},createOrderField:function(){var t=this;if(this.orderField.length||(this.orderField=createElement(""),this.orderField.setAttribute("type","hidden"),this.orderField.setAttribute("id","js-stools-field-order"),this.orderField.setAttribute("class","js-stools-field-order"),this.orderField.setAttribute("name",t.options.orderFieldName),this.orderField.setAttribute("value",t.activeOrder+" "+this.activeDirection),this.theForm.innerHTML+=this.orderField),"select"==this.orderField.tagName.toLowerCase()){for(var e=this.orderField.options,i=0,r=e.length;r>i;i++){var o=e[i].getAttribute("data-order"),s=e[i].getAttribute("data-name"),n=e[i].getAttribute("data-direction");if(o&&o.length){o=o+" "+n;var l=t.findOption(t.orderField,o);l.length||((l=document.createElement("option")).text=s,l.value=o,e[i].classList.contains("active")&&l.setAttribute("selected","selected"),t.orderFieldName.innerHTML+=l)}}window.jQuery&&jQuery.chosen&&jQuery(this.orderField).trigger("liszt:updated")}this.activeOrder=this.orderField.value},updateFieldValue:function(t,e){var i=t.getAttribute("type");if("hidden"===i||"text"===i)t.setAttribute("value",e);else if("select"===t.tagName.toLowerCase()){for(var r=t.options,o=0,s=r.length;s>o;o++)if(r[o].value==e)var n=r[o];if(n.length)n.setAttribute("selected","selected");else{var l=document.createElement("option");l.text=name,l.value=e,l.setAttribute("selected","selected"),t.appendChild(l)}t.value=e,window.jQuery&&jQuery.chosen&&t.trigger("liszt:updated")}},findOption:function(t,e){for(var i=0,r=t.length;r>i;i++)if(t[i].value==e)return t[i]}},document.addEventListener("DOMContentLoaded",function(){if(Joomla.getOptions("searchtools")){var e=Joomla.getOptions("searchtools"),i=document.querySelector(e.selector);new t(i,e)}})}(); \ No newline at end of file +!function(){"use strict";var a=function(a,b){var c={formSelector:".js-stools-form",searchFieldSelector:".js-stools-field-search",clearBtnSelector:".js-stools-btn-clear",mainContainerSelector:".js-stools",searchBtnSelector:".js-stools-btn-search",filterBtnSelector:".js-stools-btn-filter",filterContainerSelector:".js-stools-container-filters",filtersHidden:!0,listBtnSelector:".js-stools-btn-list",listContainerSelector:".js-stools-container-list",listHidden:!0,orderColumnSelector:".js-stools-column-order",orderBtnSelector:".js-stools-btn-order",orderFieldSelector:".js-stools-field-order",orderFieldName:"list[fullordering]",limitFieldSelector:".js-stools-field-limit",defaultLimit:20,activeOrder:null,activeDirection:"ASC",clearListOptions:!1};this.element=a,this.options=Joomla.extend(c,b),this.theForm=document.querySelector(this.options.formSelector),this.filterButton=document.querySelector(this.options.formSelector+" "+this.options.filterBtnSelector),this.filterContainer=document.querySelector(this.options.formSelector+" "+this.options.filterContainerSelector)?document.querySelector(this.options.formSelector+" "+this.options.filterContainerSelector):"",this.filtersHidden=this.options.filtersHidden,this.listButton=document.querySelector(this.options.listBtnSelector),this.listContainer=document.querySelector(this.options.formSelector+" "+this.options.listContainerSelector),this.listHidden=this.options.listHidden,this.mainContainer=document.querySelector(this.options.mainContainerSelector),this.searchButton=document.querySelector(this.options.formSelector+" "+this.options.searchBtnSelector),this.searchField=document.querySelector(this.options.formSelector+" "+this.options.searchFieldSelector),this.searchString=null,this.clearButton=document.querySelector(this.options.clearBtnSelector),this.orderCols=Array.prototype.slice.call(document.querySelectorAll(this.options.formSelector+" "+this.options.orderColumnSelector)),this.orderField=document.querySelector(this.options.formSelector+" "+this.options.orderFieldSelector),this.limitField=document.querySelector(this.options.formSelector+" "+this.options.limitFieldSelector),this.activeColumn=null,this.activeDirection=this.options.activeDirection,this.activeOrder=this.options.activeOrder,this.activeLimit=null,this.clearListOptions=this.options.clearListOptions,this.init()};a.prototype={init:function(){var a=this;document.addEventListener||this.searchField.value===this.searchField.getAttribute("placeholder")&&(this.searchField.value=""),this.searchString=this.searchField.value,this.filterContainer&&this.filterContainer.classList.contains("js-stools-container-filters-visible")?(this.showFilters(),this.showList()):(this.hideFilters(),this.hideList()),a.filterButton&&a.filterButton.addEventListener("click",function(b){a.toggleFilters(),b.stopPropagation(),b.preventDefault()}),a.listButton&&a.listButton.addEventListener("click",function(b){a.toggleList(),b.stopPropagation(),b.preventDefault()}),a.getFilterFields()&&a.getFilterFields().forEach(function(b){a.checkFilter(b),b.addEventListener("change",function(){a.checkFilter(b)})}),a.clearButton&&a.clearButton.addEventListener("click",function(){a.clear()}),this.createOrderField(),a.orderCols.forEach(function(b){b.addEventListener("click",function(){var b=this.getAttribute("data-order"),c=this.getAttribute("data-direction"),d=b+" "+c;b.length&&(a.activeColumn=b,d!==a.activeOrder?(a.activeDirection=c,a.activeOrder=d,a.updateFieldValue(a.orderField,d)):a.toggleDirection(),a.theForm.submit())})})},checkFilter:function(a){var b=this;""!==a.querySelector("option:checked").value?b.activeFilter(a):b.deactiveFilter(a)},clear:function(){var a=this;a.getFilterFields()&&a.getFilterFields().forEach(function(b){b.value="",a.checkFilter(b),window.jQuery&&jQuery.chosen&&jQuery(b).trigger("liszt:updated")}),a.clearListOptions&&(a.getListFields().forEach(function(b){b.value="",a.checkFilter(b),window.jQuery&&jQuery.chosen&&jQuery(b).trigger("liszt:updated")}),document.querySelector("#list_limit").value=a.options.defaultLimit,window.jQuery&&jQuery.chosen&&jQuery("#list_limit").trigger("liszt:updated")),a.theForm.submit()},activeFilter:function(a){a.classList.add("active");var b="#"+a.getAttribute("id"),c=a.querySelector(b);c&&c.classList.add("active")},deactiveFilter:function(a){a.classList.remove("active");var b="#"+a.getAttribute("id"),c=a.querySelector(b);c&&c.classList.remove("active")},getFilterFields:function(){if(this.filterContainer)return Array.prototype.slice.call(this.filterContainer.querySelectorAll("select,input"))},getListFields:function(){return Array.prototype.slice.call(this.listContainer.querySelectorAll("select"))},hideContainer:function(a){a&&(a.style.display="none",a.classList.remove("shown"))},showContainer:function(a){a.style.display="block",a.classList.add("shown")},toggleContainer:function(a){a.classList.contains("shown")?this.hideContainer(a):this.showContainer(a)},hideList:function(){this.hideContainer(this.filterContainer)},showList:function(){this.showContainer(this.filterContainer)},toggleList:function(){this.toggleContainer(this.filterContainer)},hideFilters:function(){this.hideContainer(this.filterContainer)},showFilters:function(){this.showContainer(this.filterContainer)},toggleFilters:function(){this.toggleContainer(this.filterContainer)},toggleDirection:function(){var a=this,b="ASC";"ASC"==a.activeDirection.toUpperCase()&&(b="DESC"),a.activeDirection=b,a.activeOrder=a.activeColumn+" "+b,a.updateFieldValue(a.orderField,a.activeOrder)},createOrderField:function(){var a=this;if(this.orderField.length||(this.orderField=createElement(""),this.orderField.setAttribute("type","hidden"),this.orderField.setAttribute("id","js-stools-field-order"),this.orderField.setAttribute("class","js-stools-field-order"),this.orderField.setAttribute("name",a.options.orderFieldName),this.orderField.setAttribute("value",a.activeOrder+" "+this.activeDirection),this.theForm.innerHTML+=this.orderField),"select"==this.orderField.tagName.toLowerCase()){for(var b=this.orderField.options,c=0,d=b.length;d>c;c++){var e=b[c].getAttribute("data-order"),f=b[c].getAttribute("data-name"),g=b[c].getAttribute("data-direction");if(e&&e.length){e=e+" "+g;var h=a.findOption(a.orderField,e);if(!h.length){var h=document.createElement("option");h.text=f,h.value=e,b[c].classList.contains("active")&&h.setAttribute("selected","selected"),a.orderFieldName.innerHTML+=h}}}window.jQuery&&jQuery.chosen&&jQuery(this.orderField).trigger("liszt:updated")}this.activeOrder=this.orderField.value},updateFieldValue:function(a,b){var c=a.getAttribute("type");if("hidden"===c||"text"===c)a.setAttribute("value",b);else if("select"===a.tagName.toLowerCase()){for(var d=a.options,e=0,f=d.length;f>e;e++)if(d[e].value==b)var g=d[e];if(g&&g.length)g.setAttribute("selected","selected");else{var h=document.createElement("option");h.text=name,h.value=b,h.setAttribute("selected","selected"),a.appendChild(h)}a.value=b,window.jQuery&&jQuery.chosen&&a.trigger("liszt:updated")}},findOption:function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c].value==b)return a[c]}},document.addEventListener("DOMContentLoaded",function(){if(Joomla.getOptions("searchtools")){var b=Joomla.getOptions("searchtools"),c=document.querySelector(b.selector);new a(c,b)}})}(); \ No newline at end of file