pure-angular-advanced-searchbox
Version:
Pure angular-based advanced search
2 lines • 43 kB
JavaScript
"use strict";angular.module("paasb",["paasb.config"]),angular.module("paasb.config",[]).constant("FILTERS",{SELECTORS:[{name:"Contains",key:"contains",selected:!0,notAllowed:["restrictedSuggestedValues"]},{name:"Does not contain",key:"doesNotContain",notAllowed:["restrictedSuggestedValues"]},{name:"Is Equal To",key:"isEqualTo"},{name:"Is Not Equal To",key:"isNotEqualTo"},{name:"Starts with",key:"startsWith"},{name:"Ends with",key:"endsWith"},{name:"Similiarity",key:"similiarity"}],OPERATORS:[{name:"AND",selected:!0},{name:"OR"}]}),angular.module("paasb").directive("paasbAutoSize",["$parse","$window","$timeout","paasbUtils",function(a,b,c,d){return{restrict:"A",controller:["$scope","$element","$attrs",function(b,c,d){var e=null,f=null,g=d.paasbAutoSizeType;d.$observe("paasbAutoSize",function(){e=a(d.paasbAutoSize)(b)||{},f=e.$$filtering||{},angular.element(c).ready(function(){return g?f.addAutoSizeElementToFilter(e,c,g):void 0})})}]}}]),angular.module("paasb").directive("paasbDraggable",["paasbUtils",function(a){return{restrict:"A",controller:["$scope","$element","$attrs",function(b,c,d){c.on("dragstart dragend",function(c){switch(c.type){case"dragstart":var d=angular.element(this),e=a.uuid(),f={id:e,draggable:!0,trash:!0};d.attr("id")||d.attr("id",e),c.dataTransfer.setData("text",JSON.stringify(f));break;case"dragend":if(b.Search&&b.Search.Filtering){var g=b.Search.Filtering;g.removeClassAllFilters("over-placement-1").removeClassAllFilters("over-placement-2").removeClassAllFilters("over-placement-3").removeClassAllFilters("dragged-item")}}})}]}}]),angular.module("paasb").directive("paasbSearchBoxAddedFilter",["$timeout","$document","paasbUi","paasbUtils",function(a,b,c,d){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-added-filter.html",require:"^paasbSearchBoxFiltering",scope:{filter:"=",filtering:"=",toValue:"=",operators:"="},controller:["$scope","$element","$attrs",function(e,f,g){var h,i=e.filtering,j=i.getGrouping(),k=i.getEventHandler(),l=e.filter,m=(e.operators,null),n=null,o=0;if(angular.extend(l,{loading:!1,$$filtering:i}),f.attr("id",d.uuid()),"string"==typeof l.suggestedValues){m=i.getConfig();var p=d.getDeepValue(m,l.suggestedValues);p&&(l.suggestedValues=p)}e.toValue&&(e.value=e.toValue,e.dontOpen=!0),d.isURL(l.suggestedValues)||d.isURL(l.source)&&l.reloadOnCreate?(c.safeApply(e,function(){var a=l.source||l.suggestedValues;angular.extend(l,{loading:!0,suggestedValues:[],source:a})}),i.loadSource(l).then(function(a){c.safeApply(e,function(){angular.extend(l,{suggestedValues:a,loading:!1,value:""})})})):l.value="";var q=i.getFilterScope(l);angular.extend(q,{enableGrouping:function(){b.on("mouseover mouseout",e.events.groupingEvents)},disableGrouping:function(){b.off("mouseover mouseout",e.events.groupingEvents)}}),c.extend(e,{inputId:d.uuid(),Utils:d,getDirection:function(a){var b=null;if("undefined"==typeof a||null===a)return b;switch("string"==typeof a&&(a=parseInt(a)),a){case 1:b="before";break;case 3:b="after"}return b},events:{groupingEvents:function(a){var b=f[0].contains(a.target),c=f[0]==a.target,d=b||c;switch(a.type){case"mouseover":d&&j.addFake(f);break;case"mouseout":d||j.removeLastFake()}},searchboxClick:function(a){var b=f[0].contains(a.target),c=f[0]==a.target,d=b||c;d||e.closeFilter()},inputKeyEvents:function(a){13===a.keyCode&&e.closeFilter()},dragEvents:function(a){switch(a.type){case"dragstart":n=angular.element(this),a.dataTransfer.effectAllowed="copyMove",n.attr("id")||n.attr("id",d.uuid()),a.dataTransfer.setData("text",n.attr("id")),n.addClass("dragged-item");break;case"dragenter":a.preventDefault(),o++;break;case"dragleave":o--,0===o&&angular.element(this).removeClass("over");break;case"dragover":var b=this.getBoundingClientRect(),c=b.width/3,f=Math.abs(Math.ceil((a.pageX-b.left)/c))||1;return i.removeClassAllFilters("over-placement-1").removeClassAllFilters("over-placement-2").removeClassAllFilters("over-placement-3"),angular.element(this).addClass("over-placement-"+f).attr("data-placement",f),a.preventDefault&&a.preventDefault(),a.dataTransfer.dropEffect="copyMove",!1;case"drop":a.stopPropagation&&a.stopPropagation();var g=a.dataTransfer.getData("text"),h=!1;if(d.isJson(g)&&(g=JSON.parse(g),h=!0),g){var j=g;h&&(j=g.id);var k=document.getElementById(j);if(h&&g.draggable)g.trash&&i.removeByElement(this);else if(k!==this){var f=parseInt(angular.element(this).attr("data-placement")||null),l=e.getDirection(f);i[2===f?"swapFilter":"moveFilter"](k,this,l)}}return!1;case"dragend":i.removeClassAllFilters("over-placement-1").removeClassAllFilters("over-placement-2").removeClassAllFilters("over-placement-3").removeClassAllFilters("dragged-item")}}},takeSuggestion:function(a){e.value=a},closeFilter:function(){var a=this;c.safeApply(e,function(){l.editing=!1,e.$broadcast("filter.isEditing",l.editing),b.unbind("click",a.events.searchboxClick),l.value?l.suggestedValue?(console.log(l.suggestedValue,e.value,l.$$lastValue),e.value=l.suggestedValue.value):l.restrictedSuggestedValues&&i.remove(l,!0):i.remove(l,!0),k.onLeavedEditMode(l)})},openFilter:function(){if(!e.dontOpen){var c=this;l.editing||(l.editing=!0,e.$broadcast("filter.isEditing",l.editing),a(function(){b.bind("click",c.events.searchboxClick)},25),e.setFocus(),k.onEnteredEditMode(l))}e.dontOpen=!1},destroy:function(){return i.remove(e.filter,null,!1)},getElements:function(){return h=f.find("input"),l.$$input=h,e},registerEvents:function(a){return h.on("keyup",a.inputKeyEvents),f.on("dragstart dragenter dragover dragleave drop dragend",a.dragEvents),e},setFocus:function(){return a(function(){h&&h[0].focus()},50),e},addWatch:function(){return e.$watch("value",function(a,b){if(i.autoSizeByFilter(l),l.value=a||"",l.value&&a!==b)if(l&&l.suggestedValues){if(l.suggestedValue&&l.suggestedValue.value===l.$$lastValue)return;var c=!1;angular.forEach(l.suggestedValues,function(b){b===a&&(c=!0)}),c&&(l.$$lastValue=l.value,i.update(),k.onFilterChanged(l))}else i.update(),k.onFilterChanged(l)}),e}}),e.getElements().registerEvents(e.events).addWatch().openFilter()}]}}]),angular.module("paasb").directive("paasbSearchBoxAutoComplete",["$window","$document","$timeout","$interpolate","paasbUi","paasbUtils","paasbAutoComplete","paasbMemory",function(a,b,c,d,e,f,g,h){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-auto-complete.html",require:"^paasbSearchBox",scope:{query:"=",config:"=",input:"="},controller:["$scope","$element",function(i,j){var k=i.config,l=h.getAndSet("query");i.$watch("query",function(a){i.tookSuggestion!==a&&(i.tookSuggestion=null,a&&l!==a&&g.load(d(k.autoCompleteUrl)({query:a})).then(function(a){e.extend(i,{autoSuggestions:a,showSuggestions:!(!a||!a.length)}),i.position()}))}),angular.extend(i,{Utils:f,tookSuggestion:null,showSuggestions:!1,autoCompleteClick:function(a){var c=a.target,d=j[0];d.contains(c)||e.extend(i,{showSuggestions:!1}),b.unbind("click",i.autoCompleteClick)},position:function(){c(function(){var a=i.input[0],b=f.getStyle(a,"padding-left"),c=f.getStyle(a,"width")-f.getStyle(a,"padding-right")-b;j.css("left",b+"px").css("width",c+"px")})},takeAutoComplete:function(a){e.extend(i,{showSuggestions:!1,tookSuggestion:a}),i.$emit("take.autoSuggestion",a),b.unbind("click",i.autoCompleteClick)},registerEvents:function(){return angular.element(a).on("resize",function(){i.position()}),i.$on("input.focused",function(){i.autoSuggestions&&i.autoSuggestions.length&&e.extend(i,{showSuggestions:!0})}),i.$watch("showSuggestions",function(a){a&&b.bind("mousedown",i.autoCompleteClick)}),i}}),i.registerEvents()}]}}]),angular.module("paasb").directive("paasbSearchBoxAutoSuggestions",[function(){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-auto-suggestions.html",require:"^paasbSearchBoxAddedFilter",scope:{filtering:"=",filter:"="},controller:["$scope","$element","$attrs",function(a,b,c){a.filtering,a.filter}]}}]),angular.module("paasb").directive("paasbSearchBoxCacheFilter",["paasbMemory","paasbUi",function(a,b){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-cache-filters.html",require:"^paasbSearchBox",controller:["$scope",function(c){b.extend(c,{cacheActive:a.getAndSet("cache")||!1,handleCache:function(){c.paasbSearchBoxCacheFilterPermanent||(c.cacheActive=!c.cacheActive,a.getAndSet("cache",c.cacheActive))}})}]}}]),angular.module("paasb").directive("paasbSearchBoxFilterMovedAnimation",["paasbUtils","paasbUi",function(a,b){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-filter-moved-animation.html",require:"^paasbSearchBoxAddedFilter",scope:{filter:"="},controller:["$scope","$element",function(c,d){var e=c.filter,f=d.parent(),g=null,h=null,i=0,j=0,k=0;if(e){g=e.element,h=f[0].getBoundingClientRect(),k=a.getStyle(f[0],"border-radius")||0,i=h.bottom-h.top,j=h.width;var l=j/2+6,m=i/2+6;d.css("border-left-width",l+"px").css("border-right-width",l+"px").css("border-top-width",m+"px").css("border-bottom-width",m+"px").css("border-radius",k+"px"),b.apply(function(){d.addClass("transition").css("border-left-width","0px").css("border-right-width","0px").css("border-top-width","0px").css("border-bottom-width","0px").css("border-radius",k+"px").css("width",j+"px").css("height",i+"px")},50)}}]}}]),angular.module("paasb").directive("paasbSearchBoxFilterMoved",["$parse","$compile",function(a,b){return{restrict:"A",controller:["$scope","$element","$attrs",function(c,d,e){var f=null;c.hasRecentlyMoved=function(){if(f&&f.recentlyMoved){var a=c.$new(!0),e=null;angular.extend(a,{filter:f}),e=b('<paasb-search-box-filter-moved-animation filter="filter" />')(a),d.prepend(e)}delete f.recentlyMoved},e.$observe("paasbSearchBoxFilterMoved",function(){f=a(e.paasbSearchBoxFilterMoved)(c),angular.element(d).ready(function(){c.hasRecentlyMoved()})})}]}}]),angular.module("paasb").directive("paasbSearchBoxFilterOperators",["$document","paasbUi","FILTERS",function(a,b,c){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-filter-operators.html",require:"^paasbSearchBoxAddedFilter",scope:{filtering:"=",filter:"="},controller:["$scope","$element","$attrs",function(d,e,f){var g=d.filtering,h=g.getEventHandler(),i=angular.copy(c.OPERATORS),j=d.filter;g.getFilterCount()>1&&(d.hasOperator=!0,d.autoSizeElement=e,angular.extend(d,{availableOperators:i,showOperators:!1,events:{docClick:function(c){var f=e[0].contains(c.target),g=e[0]==c.target,h=f||g;h||(a.unbind("click",d.events.docClick),b.extend(d,{showOperators:!1}))}},openOperators:function(){d.showOperators=!d.showOperators,a[d.showOperators?"bind":"unbind"]("click",d.events.docClick),g.autoSizeByFilter(j)},takeOperator:function(a){angular.forEach(i,function(a){a.selected=!1}),d.operator=a,g.addOperatorToFilter(a,j),h.onOperatorChanged(a,j),a.selected=!0},takeOperatorByName:function(a){angular.forEach(i,function(b){b.name!==a?b.selected=!1:(b.selected=!0,d.operator=b)})},setDefaultOperator:function(){var a=g.getOperatorByFilterIndex(j);if(null===a){if(j.operator)angular.forEach(i,function(a){a.selected=a.key===j.selector.key});else if(angular.forEach(i,function(a){a.selected&&(d.operator=a)}),!j.selector&&i&&i.length){var b=i[0];b.selected=!0,d.operator=b}}else this.takeOperatorByName(a);return d},registerOperator:function(){return g.registerOperator(d),d},addOperatorToFilter:function(){return g.hasOperatorAlready(j)||g.addOperatorToFilter(d.operator,j,!0),d}}),d.setDefaultOperator().registerOperator().addOperatorToFilter())}]}}]),angular.module("paasb").directive("paasbSearchBoxFilterSelectors",["FILTERS",function(a){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-filter-selectors.html",require:"^paasbSearchBoxAddedFilter",scope:{filtering:"=",filter:"="},controller:["$scope","$element","$attrs",function(b,c,d){var e=b.filtering,f=e.getEventHandler(),g=angular.copy(a.SELECTORS),h=b.filter;b.autoSizeElement=c,angular.extend(b,{availableSelectors:null,takeSelector:function(a){angular.forEach(b.availableSelectors,function(a){a.selected=!1}),h.selector=a,a.selected=!0,h.value&&(e.update(),f.onFilterSelectorChanged(a,h)),e.autoSizeByFilter(h);var c=h.element.find("input")[0];c.focus()},setDefaultSelector:function(){if(h.selector)angular.forEach(b.availableSelectors,function(a){a.selected=a.key===h.selector.key});else if(angular.forEach(b.availableSelectors,function(a){a.selected&&(h.selector=a)}),!h.selector&&b.availableSelectors&&b.availableSelectors.length){var a=b.availableSelectors[0];a.selected=!0,h.selector=a}return b},setAvailableSelectors:function(){var a=[];return angular.forEach(g,function(b){var c=!0;angular.forEach(b.notAllowed,function(a){h[a]&&(c=!1)}),c&&a.push(b)}),b.availableSelectors=a,b}}),b.$on("filter.isEditing",function(a,b){b&&e.autoSizeByFilter(h)}),b.setAvailableSelectors().setDefaultSelector()}]}}]),angular.module("paasb").directive("paasbSearchBoxFiltering",["$document","$timeout","$window","paasbUtils","paasbUi",function(a,b,c,d,e){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-filtering.html",require:"^paasbSearchBox",scope:{filters:"=",search:"="},controller:["$scope","$element","$attrs",function(f,g,h){var i=null;f.$watch("active",function(c,d){c&&!f.windowClickedFn?b(function(){f.windowClickedFn=a.on("click",f.windowClicked)},25):f.windowClickedFn&&(a.off("click",f.windowClicked),f.windowClickedFn=null)}),angular.extend(f,{active:!1,Utils:d,windowClicked:function(a){var b=a.target,c=g[0];c.contains(b)||e.extend(f,{active:!1})},position:function(){f.active&&b(function(){var a=g.parent(),b=g.find("ul"),c=(b[0].getBoundingClientRect(),a[0].getBoundingClientRect());b.css("top",c.height-5+"px").css("width",c.width+d.getStyle(a[0],"padding-right")+d.getStyle(a[0],"padding-left")-d.getScrollbarWidth()/2+"px")},25)},toggleFilters:function(){e.extend(f,{active:!f.active}),this.position()},addFilterAndClose:function(a){i.Filtering.add(a),e.extend(f,{active:!f.active})},registerEvents:function(){angular.element(c).on("resize",function(){f.position()})},addFilter:function(a){var b=this,c=d.getParentByAttribute(a.target,"li","data-filter-name"),e=c.attr("data-filter-name");angular.forEach(f.filters,function(a){a.name===e&&(a.restrictedSuggestedValues?b.addFilterAndClose(a):a.multi?b.addFilterAndClose(a):(a.notFiltered=!a.notFiltered,a.notFiltered||b.addFilterAndClose(a)))})}}),f.$watch("search",function(a,b){a!==b&&angular.isObject(a)&&(i=a,f.filters=angular.copy(f.filters),f.filters.slice().reverse().forEach(function(a,b,c){a.notFiltered=!0,a.root&&(a.filteredFrom='<i class="fa fa-level-up"></i> (Derived from Root <i class="fa fa-angle-double-right"></i> '+a.root+")"),a.child&&(a.filteredFrom='<i class="fa fa-level-down"></i> (Derived from '+a.child+")"),a.dontFilter&&f.filters.splice(c.length-1-b,1)}),f.registerEvents())})}]}}]),angular.module("paasb").directive("paasbSearchBoxGrouping",[function(){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox-grouping.html",require:"^paasbSearchBox",controller:["$scope","$element","$attrs",function(a,b,c){var d=null;a.Search&&a.Search.Grouper&&(d=a.Search.Grouper,angular.extend(a,{toggleGrouping:function(){return d.toggle()}}))}]}}]),angular.module("paasb").directive("paasbSearchBox",["$timeout","$window","paasbApi","paasbUi","paasbFiltering","paasbGrouping","paasbPlaceholders","paasbEventHandling","paasbMemory","paasbUtils","FILTERS",function(a,b,c,d,e,f,g,h,i,j,k){return{restrict:"E",replace:!0,templateUrl:"views/directives/searchbox.html",scope:{searchParams:"=?",paasbSearchBoxFiltering:"=?",paasbSearchBoxConfig:"=?",paasbSearchBoxAutoComplete:"=?",paasbSearchBoxCacheFilter:"=?",paasbSearchBoxEnableFilteringOperators:"=?",paasbSearchBoxFilterSelectors:"=?",paasbSearchBoxFilterOperators:"=?",paasbSearchBoxEnableGrouping:"=?",placeholder:"@"},controller:["$scope","$element","$attrs",function(b,l,m){var n=null,o=null,p=null,q=null,r=null,s=null,t=null,u=null,v=null,w={searchInputId:"searchInput-"+j.uuid(),hasAutoCompleteConfigurations:function(){return o&&o.autoCompleteUrl},make:function(a,c,d,e){var f=b[a];return angular[d]?angular[d](f)?c&&_.isEmpty(f)&&(b[a]=c,b[e]=c[e]):"isObject"===d?b[a]=angular.extend({},c):b[a]=c:this[d]&&(f=this[d](f)),this},events:{handleEraser:function(){b.query="",u.onEraser()},handleSearch:function(){u.onChange(n)},handleGarbage:function(){(n.query&&n.query.length||b.hasFilters)&&(q.removeAll(!0,!0,{deleteOperators:!0}),b.query="",u.onGarbage())}},shouldStore:function(){return!(!i.getAndSet("cache")&&!o.store)},configure:function(){var a={query:"",filters:{}},c={};return b.paasbSearchBoxEnableFilteringOperators&&angular.extend(a,{operators:[]}),k&&k.SELECTORS&&b.paasbSearchBoxFilterSelectors&&(k.SELECTORS=b.paasbSearchBoxFilterSelectors),k&&k.OPERATORS&&b.paasbSearchBoxFilterOperators&&(k.OPERATORS=b.paasbSearchBoxFilterOperators),this.make("paasbSearchBoxFiltering",[],"isArray").make("paasbSearchBoxConfig",{},"isObject").make("paasbSearchBoxAutoComplete",{},"isObject"),o=b.paasbSearchBoxConfig,this.shouldStore()?(c=i.getAll(),_.isEmpty(c)&&(c=a)):c=a,this.make("searchParams",c,"isObject","query"),n=b.searchParams,p=b.paasbSearchBoxAutoComplete,b.autoCompleteEnabled=this.hasAutoCompleteConfigurations(),b.query&&d.extend(b,{hasQuery:!0,delayedQuery:b.query}),this.shouldStore()||i.removeAll(),o&&o.store&&(b.paasbSearchBoxCacheFilter=!0),d.extend(b,{searchInputId:this.searchInputId,showMagnifierAlways:o.showMagnifierAlways||!0}),this},addEvents:function(){var c=!1;return o&&"number"==typeof o.delay&&(c=!0),angular.extend(b,this.events),c&&(q.watch(function(c,d,e){b.paasbSearchBoxEnableFilteringOperators&&i.getAndSet("operators",d),v&&a.cancel(v),o.delay&&!e?(n.filters=c,b.paasbSearchBoxEnableFilteringOperators&&(n.operators=d),v=a(function(){u.onChange(n)},o.delay)):(n.filters=c,b.paasbSearchBoxEnableFilteringOperators&&(n.operators=d),u.onChange(n))}),b.$watch("query",function(c,e){(c||e||"string"!=typeof c||"string"!=typeof e)&&"undefined"!=typeof c&&i.getAndSet("query")!==c&&(i.getAndSet("query",c),d.extend(b,{hasQuery:!(!c||!c.length)}),o.delay&&!b.skipDelay?(v&&a.cancel(v),n.query=c,v=a(function(){u.onChange(n).onQueryAdded(c,b.delayedQuery).onQueryRemoved(c,b.delayedQuery).onQueryChanged(c,b.delayedQuery),b.delayedQuery=c},o.delay)):(v&&a.cancel(v),b.skipDelay=!1,n.query=c,u.onChange(n).onQueryAdded(c,b.delayedQuery).onQueryRemoved(c,b.delayedQuery).onQueryChanged(c,b.delayedQuery),b.delayedQuery=c))})),b.$on("take.autoSuggestion",function(a,c){b.skipDelay=!0,b.query=c}),b.input.on("focus",function(){b.$broadcast("input.focused")}),b.input.on("keypress",function(a){a&&13===a.keyCode&&u.onChange(n)}),this},register:function(){return r=new f(b,o),q=new e(b,r,o),s=new g(b,o),t=new c(b,q,s),u=new h(b,t),angular.extend(b,{Search:{Grouper:r,Filtering:q,Placeholding:s,API:t,EventHandling:u}}),q.addEventHandler(u).addMemoryOperators().addByMemory(n),s.setup(),b.$emit("onRegisterApi",t),this},dom:function(){var a=angular.element(document.getElementById(this.searchInputId)),c=j.getParentByAttribute(a[0],"div","data-search-box"),e=a.parent();return d.extend(b,{input:a,wrapper:e,box:c}),this}};angular.element(l).ready(function(){w.configure().dom().register().addEvents(),u.onChange(n)})}]}}]),angular.module("paasb").filter("paasbClean",[function(){return function(a,b){if(a&&!a.$$timestamp&&(a.$$timestamp=(new Date).getTime()),a.$$modified=(new Date).getTime(),b)if("function"==typeof b)a.modifiedValue=b(a.value);else if(angular.isArray(b)){var c=a.value;angular.forEach(b,function(a){c=a(c)}),a.modifiedValue=c}return a}}]),angular.module("paasb").filter("paasbSuggest",[function(){return _.memoize(function(a,b,c,d){if(!b){var e=[];return angular.forEach(a,function(a){e.push({modified:a,value:a})}),e}var f=[],g=new String(b);return angular.forEach(a,function(a){var b=a.toLowerCase(),c=g.toLowerCase();if(-1!==b.indexOf(c)){for(var d=[],e=!0,h=-1;e;)if(h=b.indexOf(c,d.length?h+1:h),-1!==h){var i=c.length;d.push({start:h,end:i,len:i-1})}else e=!1;var j=a,k=0;angular.forEach(d,function(a){var b=j.substr(0,a.start+k),c="<b>"+j.substr(a.start+k,a.end)+"</b>",d=j.substr(a.start+k+1+a.len,j.length);j=b+c+d,k+=7})}j&&f.push({modified:j,value:a})}),c.suggestedValue=f&&f.length?f[0]:null,f},function(a,b){return a.length+b})}]),angular.module("paasb").factory("paasbApi",["$q","$http","paasbUi",function(a,b,c){return function(a,b,d){var e={hasEventErrors:function(a,b,c){if("string"!=typeof a)throw new TypeError("Paasb API - Event Name parameter must be type String!");if("function"!=typeof b&&!c)throw new TypeError("Paasb API - Event Function parameter must be type Function!");return this},hasInvalidEventType:function(a,b){var c=!1;if(angular.forEach(b,function(b){b=b.toLowerCase(),a=a.toLowerCase(),b===a&&(c=!0)}),!c)throw new ReferenceError("Paasb API - Invalid Event Type Provided!");return this}};return{$$registeredEvents:[],$$allowedEvents:["onChange","onQueryAdded","onQueryRemoved","onQueryChanged","onFilterAdded","onFilterRemoved","onFilterChanged","onOperatorChanged","onFilterSelectorChanged","onEraser","onGarbage","onEnteredEditMode","onLeavedEditMode"],Filtering:b,Placeholding:d,Loading:{set:function(b){"boolean"==typeof b&&c.extend(a,{isLoading:b})}},on:function(a,b){var c=this,d=!1;return e.hasEventErrors(a,b).hasInvalidEventType(a,c.$$allowedEvents),angular.forEach(c.$$registeredEvents,function(c){c&&c.fn===b&&c.type===a&&(d=!0)}),d||c.$$registeredEvents.push({type:a,fn:b}),this},off:function(a,b){var c=this,d=!1;return e.hasEventErrors(a,b,!0).hasInvalidEventType(a,c.$$allowedEvents),"function"!=typeof b&&(d=!0),c.$$registeredEvents.slice().reverse().forEach(function(e,f,g){(e&&e.fn===b&&e.type===a||d&&e&&e.type===a)&&c.$$registeredEvents.splice(g.length-1-f,1)}),this},offAll:function(){return self.$$registeredEvents.slice().reverse().forEach(function(a,b,c){self.$$registeredEvents.splice(c.length-1-b,1)}),this},destroy:function(){d&&d.stopAll(),a.$destroy()}}}}]),angular.module("paasb").factory("paasbAutoComplete",["$q","$http",function(a,b){var c={load:function(c){var d=a.defer();return b({method:"GET",url:c}).then(function(a){a&&a.data&&d.resolve(a.data)},function(){d.resolve([])}),d.promise}};return c}]),angular.module("paasb").factory("paasbEventHandling",[function(){var a=null,b=null;return function(c,d){return a=c,b=d,{fire:function(a,c){var d={$$lastChange:(new Date).getTime()};return angular.forEach(b.$$registeredEvents,function(b){a=a.toLowerCase(),b&&b.type&&b.type.toLowerCase()===a&&"function"==typeof b.fn&&b.fn(d,c)}),this},onQueryAdded:function(a,b){return("undefined"==typeof b||"undefined"!=typeof b&&!b.length)&&a&&a.length&&this.fire("onQueryAdded",a),this},onQueryRemoved:function(a,b){return"undefined"!=typeof b&&b.length&&(a&&("string"!=typeof a||a.length)||this.fire("onQueryRemoved",a)),this},onQueryChanged:function(a,b){a!==b&&this.fire("onQueryChanged",a)},onEraser:function(){return this.fire("onEraser"),this},onGarbage:function(){return this.fire("onGarbage"),this},onChange:function(a){return this.fire("onChange",a),this},onFilterAdded:function(a){return this.fire("onFilterAdded",a),this},onFilterRemoved:function(a){return this.fire("onFilterRemoved",a),this},onFilterChanged:function(a){return this.fire("onFilterChanged",a),this},onOperatorChanged:function(a,b){var c={name:a?a.name:"",filter:b};return this.fire("onOperatorChanged",c),this},onFilterSelectorChanged:function(a,b){var c={selector:a,filter:b};return this.fire("onFilterSelectorChanged",c),this},onEnteredEditMode:function(a){return this.fire("onEnteredEditMode",a),this},onLeavedEditMode:function(a){return this.fire("onLeavedEditMode",a),this}}}}]),angular.module("paasb").factory("paasbFiltering",["$q","$filter","$compile","$http","paasbUi","paasbUtils","paasbMemory","paasbValidation","FILTERS",function(a,b,c,d,e,f,g,h,i){var j=null,k=null,l=null,m=null;return function(n,o,p){l=n,m=p,k=o;var q=null;l.$watch("Search",function(a,b){angular.isObject(a)&&(q=a)}),angular.extend(l,{addedFilters:[],addedOperators:[],registeredOperators:[],autoSizeFilterElements:{},addedScopes:{}}),angular.extend(this,{clean:b("paasbClean"),autoSize:function(a,b){if(a&&b){var c=(a[0],b[0]),d=c.getBoundingClientRect(),e=f.getStyle(c,"border-left-width")+f.getStyle(c,"border-right-width");a.css("left",d.left+"px").css("width",d.width-e+"px").css("top",d.top-(d.top-d.bottom)+"px")}return this},autoSizeByFilter:function(a){var b=this;a&&a.uuid&&e.apply(function(){var c=l.autoSizeFilterElements[a.uuid];if(c){var d=c.operator;d&&(d=d.parent().parent()),b.autoSize(c.suggestions,a.$$input).autoSize(c.selector,c.suggestions||a.$$input).autoSize(c.operator,d)}},25)},addAutoSizeElementToFilter:function(a,b,c){if(a&&a.uuid){var d=l.autoSizeFilterElements[a.uuid];d||(l.autoSizeFilterElements[a.uuid]={}),l.autoSizeFilterElements[a.uuid][c]=b}},addEventHandler:function(a){return j=a,this},getGrouping:function(){return k||null},getFilterScopes:function(){return l.addedScopes},getFilterScope:function(a){return a&&a.uuid?l.addedScopes[a.uuid]||null:null},getEventHandler:function(){return j},removeByElement:function(a){var b=this;return angular.forEach(l.addedFilters,function(c){c&&c.element[0]===a&&b.remove(c)}),this},removeClassAllFilters:function(a){return angular.forEach(l.addedFilters,function(b){if(b&&b.element){var c=b.element;c.removeClass(a)}}),this},getFilterByElement:function(a){var b=null;return angular.forEach(l.addedFilters,function(c,d){var e=c.element[0];c&&e===a&&(b={index:d,filter:c})}),b},moveFilter:function(a,b,c){var d=this.getFilterByElement(a),e=angular.copy(l.addedFilters);this.getOperators();if(d){e.splice(d.index,1);var f=this.getFilterByElement(b),g=null;switch(c){case"before":g=f.index;break;case"after":g=f.index+1}d.filter.recentlyMoved=!0,null!==g&&(g>e.length?e.push(d.filter):e.splice(g,0,d.filter)),this.rearrangeOperators(d,f).removeAll(!0,!1,{drag:!0}).addByMemory(e,!0).update()}},rearrangeOperators:function(a,b){var c=this.getOperators();if(c&&c.length){var d=a.index-1,e=b.index-1,f=l.addedOperators[d],g=l.addedOperators[e];-1!==d&&g&&(l.addedOperators[a.index-1]=g),-1!==e&&f&&(l.addedOperators[b.index-1]=f)}return this},swapFilter:function(a,b){var c=this.getFilterByElement(a),d=this.getFilterByElement(b);if(c&&d){var e=angular.copy(l.addedFilters),f=c.filter,g=d.filter;this.getOperators();e[c.index]=g,e[d.index]=f,this.rearrangeOperators(c,d),f.recentlyMoved=!0,this.removeAll(!0,!1,{drag:!0}).addByMemory(e,!0).update()}},getOperatorByFilterIndex:function(a){var b=null,c=0,d=null;return angular.forEach(l.addedFilters,function(c,d){a.uuid===c.uuid&&(b=d)}),c=b-1,-1!==Math.sign(c)&&(d=l.addedOperators[c],"undefined"==typeof d&&(d=null)),d},addOperatorToFilter:function(a,b,c){if(b){var d=null;if(angular.forEach(l.addedFilters,function(a,c){b.uuid===a.uuid&&(d=c)}),null!==d){var e=d-1;l.addedOperators[e]?l.addedOperators[e]=a.name:l.addedOperators.push(a.name)}}else l.addedOperators.push(a.name);c||this.update()},getOperatorsInMemory:function(){return g.getAndSet("operators")||[]},getOperators:function(){return l.addedOperators},hasOperatorAlready:function(a){var b=this.getOperators(),c=this.getFilters(),d=!1;return angular.forEach(b,function(b,e){angular.forEach(c,function(b,c){b.uuid===a.uuid&&c-1===e&&(d=!0)})}),d},addMemoryOperators:function(){var a=this.getOperatorsInMemory();return a&&a.length&&(l.addedOperators=a),this},getConfig:function(){return m},getFilters:function(){return l.addedFilters},getFilterCount:function(){return l.addedFilters.length},watch:function(a){this.callback=a},update:function(a){if(this.callback){var b=this.buildParameters();return g.getAndSet("filters",b),this.callback(b,l.addedOperators||[],a)}},buildParameters:function(){var a=[],b=this;return angular.forEach(l.addedFilters,function(c){var d=function(c){var d={},e=b.getOperatorByFilterIndex(c);e&&(d.$$operator=e);var f=angular.extend({condition:c.selector.key,value:c.value,name:c.name,$$timestamp:c.$$timestamp||null,$$modified:c.$$timestamp||null,$$lastValue:c.value},d,c.extend||{});a.push(b.clean(f,c.middleware))};h.has(c)?h.validate(c)&&d(c):d(c)}),a},getFilterContainer:function(){if(!this.filterContainerId){this.filterContainerId=f.uuid();var a=document.createElement("div");a.id=this.filterContainerId,angular.element(a).attr("ng-hide","!addedFilters.length").addClass("paasb-added-filters-wrapper paasb-clearfix"),l.paasbSearchBoxEnableGrouping&&angular.element(a).prepend("<paasb-search-box-grouping />"),l.wrapper.parent().append(c(a)(l))}return angular.element(document.getElementById(this.filterContainerId))},hasFilterGrouping:function(){return l.paasbSearchBoxEnableGrouping},addByMemory:function(a,b){var c=a.filters||a,d=this;return angular.forEach(c,function(a){b&&f.removeObjectProperties(a,["$filter","editing","element","filteredFrom","loading","notFiltered","selector","uuid"]),angular.forEach(l.paasbSearchBoxFiltering,function(b){a.name===b.name&&d.add(b,a,!0)})}),this},registerOperator:function(a){l.registeredOperators.push(a)},addProperty:function(a,b,c){return b&&b[c]&&(a[c]=b[c]),this},add:function(a,b,d){var g=l.$new(!0),h=angular.copy(a),k=l.paasbSearchBoxEnableFilteringOperators;this.addProperty(h,b,"$$timestamp").addProperty(h,b,"$$modified").addProperty(h,b,"$$lastValue"),angular.extend(g,{filter:h,filtering:this,operators:k,toValue:b&&b.value?b.value:null});var m=c('<paasb-search-box-added-filter filter="filter" filtering="filtering" operators="operators" to-value="toValue" />')(g);this.getFilterContainer().append(m),angular.extend(h,{element:m,$filter:a,uuid:f.uuid()}),b&&b.condition&&angular.forEach(i.SELECTORS,function(a){a.key===b.condition&&(h.selector=a)}),l.addedScopes[h.uuid]=g,e.safeApply(l,function(){l.hasFilters=!0,l.addedFilters.push(h),d||j.onFilterAdded(h)})},remove:function(a,b,c,d){var f=null,g=this,h=g.getOperators();l.addedFilters.forEach(function(b,c){b.uuid===a.uuid&&(f=c)}),l.addedFilters.slice().reverse().forEach(function(c,g,i){if(c.uuid===a.uuid){if(h&&h.length){var k=f-1;if(-1===Math.sign(k)){var m=f+1,n=l.addedFilters[m],o=null;n&&(o=l.addedScopes[n.uuid],e.extend(o,{operators:!1}))}else k=0;l.registeredOperators.splice(k,1),(!b||d&&d.deleteOperators)&&l.addedOperators.splice(k,1)}c.element.remove();var p=l.addedScopes[a.uuid];p&&(p.$destroy(),delete l.addedScopes[a.uuid]),a.$filter.notFiltered=!0,l.addedFilters.splice(i.length-1-g,1),j.onFilterRemoved(c)}}),l.addedFilters&&!l.addedFilters.length&&(l.hasFilters=!1),b||("boolean"!=typeof c&&(c=!0),this.update(c))},removeAll:function(a,b,c){var d=this;return l.addedFilters.slice().reverse().forEach(function(b){var e={deleteOperators:!0};return c&&c.drag&&delete e.deleteOperators,d.remove(b,a,void 0,e)}),a&&!b||g.removeAll(),b&&this.update(),this},loadSource:function(b){var c=a.defer();return d.get(b.source).then(function(a){return b.suggestedDataPoint?c.resolve(a&&a.data[b.suggestedDataPoint]?a.data[b.suggestedDataPoint]:null):c.resolve(a?a.data:null)}),c.promise}})}}]),angular.module("paasb").factory("paasbGrouping",["paasbUi",function(a){var b=null,c=null;return function(d,e){b=d,c=e;var f=null;b.$watch("Search",function(a,b){angular.isObject(a)&&(f=a)}),angular.extend(b,{isGroupingEnabled:!1}),angular.extend(this,{addedParanthesis:[],addFake:function(a){if(this.addedParanthesis&&this.addedParanthesis.length%2!==1){var b=angular.element(document.createElement("div"));b.text("("),a.prepend(b),this.addedParanthesis.push({groupingElement:b,element:a})}},removeLastFake:function(){if(this.addedParanthesis&&this.addedParanthesis.length){var a=this.addedParanthesis[this.addedParanthesis.length-1];a.groupingElement.remove(),this.addedParanthesis.splice(this.addedParanthesis.length-1,1)}},hasOpeningParanthesis:function(){return this.addedParanthesis&&1===this.addedParanthesis.length?!0:void 0},hasGrouping:function(){return this.addedParanthesis&&2===this.addedParanthesis.length?!0:void 0},toggle:function(){var c=null,d=[];this.addedParanthesis=[],f&&f.Filtering&&(c=f.Filtering,a.extend(b,{
isGroupingEnabled:!b.isGroupingEnabled}),d=c.getFilterScopes(),angular.forEach(d,function(a){var c=(b.isGroupingEnabled?"enable":"disable")+"Grouping";a&&a[c]&&a[c].call()}))}})}}]),angular.module("paasb").factory("paasbMemory",["$window",function(a){var b=a.localStorage,c={hash:"paasb",getAndSet:function(a,c){b.getItem(this.hash)||b.setItem(this.hash,"{}");var d=b.getItem(this.hash);if(d){if(d=JSON.parse(d),"undefined"==typeof c)return d[a];d[a]=c,b.setItem(this.hash,JSON.stringify(d))}},getAll:function(){var a=JSON.parse(b.getItem(this.hash));return a?(delete a.cache,a):{}},removeAll:function(){var a=this.getAndSet("cache"),c={};null!==a&&(c.cache=a),b.setItem(this.hash,JSON.stringify(c))}};return c}]),angular.module("paasb").factory("paasbPlaceholders",["$timeout",function(a){var b,c=null,d=null;return function(e,f){c=e,d=f,angular.extend(this,{index:0,position:0,val:"",stopAll:function(){a.cancel(b)},setup:function(){d&&d.placeholders&&d.placeholders.length?this.start(this.index):c.placeholder&&"string"==typeof c.placeholder&&c.input.attr("placeholder",c.placeholder)},start:function(a){"undefined"!=typeof a?this.index=a:"undefined"!=typeof this.index?this.index=0:this.index++,this.position=0,this.val="",this.change()},change:function(e){var f=this;b=e?a(function(){f.val=f.val.slice(0,f.val.length-1),c.input.attr("placeholder",f.val),f.val.length?f.change(!0):(f.position=0,f.index++,f.index>d.placeholders.length-1&&(f.index=0),f.change())},d.placeholderSpeedOutInterval||25):a(function(){var e=d.placeholders[f.index],g=e.length;f.val+=e[f.position],c.input.attr("placeholder",f.val),f.position++,f.position<g?f.change():b=a(function(){f.change(!0)},d.placeholderInterval||2e3)},d.placeholderSpeedInInterval||75)}})}}]),angular.module("paasb").factory("paasbUi",["$timeout",function(a){var b={extend:function(a,b){this.safeApply(a,function(){angular.extend(a,b)})},safeApply:function(a,b){var c=a.$root.$$phase;"$apply"===c||"$digest"===c?b&&"function"==typeof b&&b():a.$apply(b)},apply:function(b,c){return a(b,c||0)}};return b}]),angular.module("paasb").factory("paasbUtils",["$sce","$window",function(a,b){var c={uuid:function(){var a=Date.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(b){var c=(a+Math.round(16*Math.random()))%16|0;return a=Math.floor(a/16),("x"==b?c:3&c|8).toString(16)})},isJson:function(a){try{JSON.parse(a)}catch(a){return!1}return!0},removeObjectProperties:function(a,b){for(var c=0;c<b.length;c++)a.hasOwnProperty(b[c])&&delete a[b[c]]},getScrollbarWidth:function(){var a=document.createElement("div");a.className="scrollbar-measure",document.body.appendChild(a);var b=a.offsetWidth-a.clientWidth;return document.body.removeChild(a),b},isParent:function(a,b){var c=b.parentNode;do{if(a==c)return!0;c=c.parentNode}while(c);return!1},getParentByAttribute:function(a,b,c){var d=!0,e=null;for(a=angular.element(a);d&&a[0]!==document&&a[0]&&a[0].nodeName;){var f=a[0].nodeName.toLowerCase();if(f===b.toLowerCase()&&a.attr(c)){e=a,d=!1;break}a=a.parent()}return e},getStyle:function(a,c){return a&&a.length&&(a=a[0]),parseInt(b.getComputedStyle(a,null).getPropertyValue(c))},trust:function(b){return a.trustAsHtml(b)},isURL:function(a){var b="^(?!mailto:)(?:(?:http|https|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[0-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]+-?)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,})))|localhost)(?::\\d{2,5})?(?:(/|\\?|#)[^\\s]*)?$",c=new RegExp(b,"i");return c.test(a)},getDeepValue:function(a,b){for(var c,d=b.split("."),e=a,f=0;f<d.length;++f){if(c=e[d[f]],"undefined"==typeof c)return;e=c}return e}};return c}]),angular.module("paasb").factory("paasbValidation",["$window",function(a){var b={length:function(a,b){return a.length===parseInt(b)},min:function(a,b){return a.length>=parseInt(b)},max:function(a,b){return a.length<=parseInt(b)},between:function(a,b){var c=b.split(",");if(c&&2===c.length){var d=this.min(a,c[0]),e=this.max(a,c[1]);return d&&e}return!1},numeric:function(a){return!isNaN(a)},email:function(a){var b=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return b.test(a)},phone:function(a){var b=/^[+]*[(]{0,1}[0-9]{1,3}[)]{0,1}[-\s\.\/0-9]*$/g;return b.test(a)},has:function(a){return!!a.validation},validate:function(a){var b=this,c=[],d=[];return a&&a.validation?(c=a.validation.split(" "),angular.forEach(c,function(c){var e=c.split("="),f=e[0],g=e[1]||null;b[f]?b[f](a.value,g)&&d.push({name:f,value:g}):d.push({name:f})}),c.length===d.length):!0}};return b}]),angular.module("paasb").run(["$templateCache",function(a){a.put("views/directives/searchbox-added-filter.html",'\n<div draggable="true" class="paasb-searchbox-added-filter">\n <paasb-search-box-filter-operators ng-if="operators" filtering="filtering" filter="filter"></paasb-search-box-filter-operators>\n <div ng-click="openFilter();" ng-class="{ \'child\': filter.child, \'root\': filter.root }" paasb-search-box-filter-moved="filter" class="paasb-searchbox-added-filter-contents"><span ng-bind="filter.displayName + \':\'" class="filter-name"></span><span ng-bind="filter.selector.name" ng-if="filter.selector" class="selector-type"></span><span ng-bind="filter.value" ng-hide="filter.editing" class="filter-value"></span>\n <input type="text" ng-model="value" ng-hide="!filter.editing" id="{{inputId}}"/><span ng-hide="!filter.loading">Loading...</span>\n <paasb-search-box-filter-selectors filtering="filtering" filter="filter"></paasb-search-box-filter-selectors>\n <paasb-search-box-auto-suggestions filtering="filtering" filter="filter"></paasb-search-box-auto-suggestions><i ng-click="destroy();" class="fa fa-times"></i>\n </div>\n</div>'),a.put("views/directives/searchbox-auto-complete.html",'\n<div ng-hide="!showSuggestions" class="paasb-auto-complete-container">\n <p>Most Popular Suggestions</p>\n <ul>\n <li ng-repeat="suggestion in autoSuggestions" ng-click="takeAutoComplete(suggestion.plainTerm);"><span ng-bind-html="Utils.trust(suggestion.term)" class="suggestion-value"></span><span ng-bind-html="Utils.trust(\' - Suggested <b>\' + suggestion.suggestedCount + \'</b> times\')" class="suggestion-count"></span></li>\n </ul>\n</div>'),a.put("views/directives/searchbox-auto-suggestions.html",'\n<div ng-if="filter.suggestedValues" class="paasb-search-box-auto-suggestions">\n <ul ng-hide="!filter.editing" paasb-auto-size="filter" paasb-auto-size-type="suggestions" ng-if="!filter.loading">\n <li ng-repeat="suggestion in filter.suggestedValues | paasbSuggest: filter.value:filter" ng-click="takeSuggestion(suggestion.value)"><span ng-bind-html="Utils.trust(suggestion.modified)"></span></li>\n </ul>\n</div>'),a.put("views/directives/searchbox-cache-filters.html","<i ng-class=\"{ 'active': cacheActive, 'magnifier-always-on': showMagnifierAlways, 'has-query': hasQuery, 'has-filters': hasFilters }\" ng-click=\"handleCache();\" class=\"paasb-search-box-cache-filter fa fa-archive\"></i>"),a.put("views/directives/searchbox-filter-moved-animation.html",'\n<div class="paasb-searchbox-filter-moved-animation"></div>'),a.put("views/directives/searchbox-filter-operators.html",'\n<div ng-hide="!hasOperator" ng-click="openOperators();" class="paasb-searchbox-added-filter-operator"><span><i class="fa fa-arrow-left"></i><i ng-bind="operator.name"></i><i class="fa fa-arrow-right"></i></span>\n <div ng-hide="!showOperators" class="paasb-searchbox-filter-operators">\n <ul paasb-auto-size="filter" paasb-auto-size-type="operator">\n <li ng-repeat="operator in availableOperators" ng-class="{ \'active\': operator.selected }" ng-click="takeOperator(operator);"><span ng-bind="operator.name"></span></li>\n </ul>\n </div>\n</div>'),a.put("views/directives/searchbox-filter-selectors.html",'\n<div ng-class="{ \'loaded\' : !filter.loading }" ng-hide="!filter.editing" class="paasb-searchbox-filter-selectors">\n <ul paasb-auto-size="filter" paasb-auto-size-type="selector" class="paasb-searchbox-filter-selectors-list">\n <li ng-repeat="selector in availableSelectors" ng-class="{ \'active\': selector.selected }" ng-click="takeSelector(selector);"><span ng-bind="selector.name"></span></li>\n </ul>\n</div>'),a.put("views/directives/searchbox-filtering.html",'\n<div class="paasb-filtering paasb-clearfix"><span ng-click="toggleFilters();" ng-class="{ \'active\': active }"><i class="fa fa-filter"></i></span>\n <ul ng-hide="!active">\n <li ng-repeat="filter in filters" data-filter-name="{{filter.name}}" ng-class="{ \'child-filter\': filter.child, \'root-filter\': filter.root }" ng-click="addFilter($event);" ng-if="filter.notFiltered"><i class="fa fa-filter"></i><span ng-bind="filter.displayName" class="filter-display-name"></span><span ng-bind-html="Utils.trust(filter.filteredFrom)" class="filtered-from"></span></li>\n </ul>\n</div>'),a.put("views/directives/searchbox-grouping.html",'\n<div ng-class="{ \'grouping-active\': isGroupingEnabled }" ng-click="toggleGrouping();" class="paasb-search-box-grouping"><i ng-if="!isGroupingEnabled" class="fa fa-plus"></i><i ng-if="isGroupingEnabled" class="fa fa-remove"></i></div>'),a.put("views/directives/searchbox.html",'\n<div data-search-box="true" class="paasb-searchbox">\n <paasb-search-box-filtering search="Search" filters="paasbSearchBoxFiltering" ng-if="paasbSearchBoxFiltering && paasbSearchBoxFiltering.length"></paasb-search-box-filtering>\n <div class="paasb-searchbox-wrapper"><i ng-if="((!hasQuery && !hasFilters) || showMagnifierAlways)" ng-class="{ \'magnifier-always-on\': showMagnifierAlways }" ng-click="handleSearch();" class="fa fa-search"></i><i ng-if="(hasQuery || hasFilters)" ng-class="{ \'magnifier-always-on\': showMagnifierAlways }" ng-click="handleGarbage();" paasb-draggable="" draggable="true" class="fa fa-trash"></i>\n <paasb-search-box-cache-filter ng-if="paasbSearchBoxCacheFilter"></paasb-search-box-cache-filter><i ng-if="isLoading" ng-class="{ \'no-cache-filtering\': !paasbSearchBoxCacheFilter, \'has-eraser-and-no-cache-filtering\': (hasQuery && !paasbSearchBoxCacheFilter), \'has-eraser-and-cache-filtering\': (hasQuery && paasbSearchBoxCacheFilter), \'magnifier-always-on\': showMagnifierAlways, \'has-filters\': hasFilters, \'has-query\': hasQuery }" class="fa fa-cog fa-spin"></i>\n <input type="text" ng-model="query" id="{{searchInputId}}"/><i ng-if="hasQuery" ng-class="{ \'no-cache-filtering\': !paasbSearchBoxCacheFilter, \'magnifier-always-on\': showMagnifierAlways }" ng-click="handleEraser();" class="fa fa-eraser"></i>\n <paasb-search-box-auto-complete query="searchParams.query" config="paasbSearchBoxAutoComplete" input="input" ng-if="autoCompleteEnabled"></paasb-search-box-auto-complete>\n </div>\n</div>')}]);