@wavemaker/app-runtime-wm-build 11.14.1-rc.6311 → 11.14.2-rc.6311
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/npm-shrinkwrap.json +2 -2
- package/package-lock.json +2 -2
- package/package.json +1 -1
- package/wmapp/scripts/wm-libs.js +1 -1
- package/wmapp/scripts/wm-libs.min.js +1 -1
- package/wmapp/scripts/wm-loader.js +2 -2
- package/wmapp/scripts/wm-loader.min.js +2 -2
- package/wmapp/styles/foundation/foundation.css +2 -2
- package/wmapp/styles/foundation/foundation.min.css +1 -1
package/wmapp/scripts/wm-libs.js
CHANGED
|
@@ -685,7 +685,7 @@ FullCalendar.List=function(e,t,n,a){"use strict";class r extends n.BaseComponent
|
|
|
685
685
|
* https://jquery.org/license
|
|
686
686
|
*/
|
|
687
687
|
(function(factory){"use strict";if(typeof define==="function"&&define.amd){define(["jquery","./draggable","./mouse","../version","../widget"],factory)}else{factory(jQuery)}})(function($){"use strict";$.widget("ui.droppable",{version:"1.14.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:true,greedy:false,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var proportions,o=this.options,accept=o.accept;this.isover=false;this.isout=true;this.accept=typeof accept==="function"?accept:function(d){return d.is(accept)};this.proportions=function(){if(arguments.length){proportions=arguments[0]}else{return proportions?proportions:proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}}};this._addToManager(o.scope);if(o.addClasses){this._addClass("ui-droppable")}},_addToManager:function(scope){$.ui.ddmanager.droppables[scope]=$.ui.ddmanager.droppables[scope]||[];$.ui.ddmanager.droppables[scope].push(this)},_splice:function(drop){var i=0;for(;i<drop.length;i++){if(drop[i]===this){drop.splice(i,1)}}},_destroy:function(){var drop=$.ui.ddmanager.droppables[this.options.scope];this._splice(drop)},_setOption:function(key,value){if(key==="accept"){this.accept=typeof value==="function"?value:function(d){return d.is(value)}}else if(key==="scope"){var drop=$.ui.ddmanager.droppables[this.options.scope];this._splice(drop);this._addToManager(value)}this._super(key,value)},_activate:function(event){var draggable=$.ui.ddmanager.current;this._addActiveClass();if(draggable){this._trigger("activate",event,this.ui(draggable))}},_deactivate:function(event){var draggable=$.ui.ddmanager.current;this._removeActiveClass();if(draggable){this._trigger("deactivate",event,this.ui(draggable))}},_over:function(event){var draggable=$.ui.ddmanager.current;if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){return}if(this.accept.call(this.element[0],draggable.currentItem||draggable.element)){this._addHoverClass();this._trigger("over",event,this.ui(draggable))}},_out:function(event){var draggable=$.ui.ddmanager.current;if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){return}if(this.accept.call(this.element[0],draggable.currentItem||draggable.element)){this._removeHoverClass();this._trigger("out",event,this.ui(draggable))}},_drop:function(event,custom){var draggable=custom||$.ui.ddmanager.current,childrenIntersection=false;if(!draggable||(draggable.currentItem||draggable.element)[0]===this.element[0]){return false}this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var inst=$(this).droppable("instance");if(inst.options.greedy&&!inst.options.disabled&&inst.options.scope===draggable.options.scope&&inst.accept.call(inst.element[0],draggable.currentItem||draggable.element)&&$.ui.intersect(draggable,$.extend(inst,{offset:inst.element.offset()}),inst.options.tolerance,event)){childrenIntersection=true;return false}});if(childrenIntersection){return false}if(this.accept.call(this.element[0],draggable.currentItem||draggable.element)){this._removeActiveClass();this._removeHoverClass();this._trigger("drop",event,this.ui(draggable));return this.element}return false},ui:function(c){return{draggable:c.currentItem||c.element,helper:c.helper,position:c.position,offset:c.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});$.ui.intersect=function(){function isOverAxis(x,reference,size){return x>=reference&&x<reference+size}return function(draggable,droppable,toleranceMode,event){if(!droppable.offset){return false}var x1=(draggable.positionAbs||draggable.position.absolute).left+draggable.margins.left,y1=(draggable.positionAbs||draggable.position.absolute).top+draggable.margins.top,x2=x1+draggable.helperProportions.width,y2=y1+draggable.helperProportions.height,l=droppable.offset.left,t=droppable.offset.top,r=l+droppable.proportions().width,b=t+droppable.proportions().height;switch(toleranceMode){case"fit":return l<=x1&&x2<=r&&t<=y1&&y2<=b;case"intersect":return l<x1+draggable.helperProportions.width/2&&x2-draggable.helperProportions.width/2<r&&t<y1+draggable.helperProportions.height/2&&y2-draggable.helperProportions.height/2<b;case"pointer":return isOverAxis(event.pageY,t,droppable.proportions().height)&&isOverAxis(event.pageX,l,droppable.proportions().width);case"touch":return(y1>=t&&y1<=b||y2>=t&&y2<=b||y1<t&&y2>b)&&(x1>=l&&x1<=r||x2>=l&&x2<=r||x1<l&&x2>r);default:return false}}}();$.ui.ddmanager={current:null,droppables:{default:[]},prepareOffsets:function(t,event){var i,j,m=$.ui.ddmanager.droppables[t.options.scope]||[],type=event?event.type:null,list=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();droppablesLoop:for(i=0;i<m.length;i++){if(m[i].options.disabled||t&&!m[i].accept.call(m[i].element[0],t.currentItem||t.element)){continue}for(j=0;j<list.length;j++){if(list[j]===m[i].element[0]){m[i].proportions().height=0;continue droppablesLoop}}m[i].visible=m[i].element.css("display")!=="none";if(!m[i].visible){continue}if(type==="mousedown"){m[i]._activate.call(m[i],event)}m[i].offset=m[i].element.offset();m[i].proportions({width:m[i].element[0].offsetWidth,height:m[i].element[0].offsetHeight})}},drop:function(draggable,event){var dropped=false;$.each(($.ui.ddmanager.droppables[draggable.options.scope]||[]).slice(),function(){if(!this.options){return}if(!this.options.disabled&&this.visible&&$.ui.intersect(draggable,this,this.options.tolerance,event)){dropped=this._drop.call(this,event)||dropped}if(!this.options.disabled&&this.visible&&this.accept.call(this.element[0],draggable.currentItem||draggable.element)){this.isout=true;this.isover=false;this._deactivate.call(this,event)}});return dropped},dragStart:function(draggable,event){draggable.element.parentsUntil("body").on("scroll.droppable",function(){if(!draggable.options.refreshPositions){$.ui.ddmanager.prepareOffsets(draggable,event)}})},drag:function(draggable,event){if(draggable.options.refreshPositions){$.ui.ddmanager.prepareOffsets(draggable,event)}$.each($.ui.ddmanager.droppables[draggable.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible){return}var parentInstance,scope,parent,intersects=$.ui.intersect(draggable,this,this.options.tolerance,event),c=!intersects&&this.isover?"isout":intersects&&!this.isover?"isover":null;if(!c){return}if(this.options.greedy){scope=this.options.scope;parent=this.element.parents(":data(ui-droppable)").filter(function(){return $(this).droppable("instance").options.scope===scope});if(parent.length){parentInstance=$(parent[0]).droppable("instance");parentInstance.greedyChild=c==="isover"}}if(parentInstance&&c==="isover"){parentInstance.isover=false;parentInstance.isout=true;parentInstance._out.call(parentInstance,event)}this[c]=true;this[c==="isout"?"isover":"isout"]=false;this[c==="isover"?"_over":"_out"].call(this,event);if(parentInstance&&c==="isout"){parentInstance.isout=false;parentInstance.isover=true;parentInstance._over.call(parentInstance,event)}})},dragStop:function(draggable,event){draggable.element.parentsUntil("body").off("scroll.droppable");if(!draggable.options.refreshPositions){$.ui.ddmanager.prepareOffsets(draggable,event)}}};if($.uiBackCompat===true){$.widget("ui.droppable",$.ui.droppable,{options:{hoverClass:false,activeClass:false},_addActiveClass:function(){this._super();if(this.options.activeClass){this.element.addClass(this.options.activeClass)}},_removeActiveClass:function(){this._super();if(this.options.activeClass){this.element.removeClass(this.options.activeClass)}},_addHoverClass:function(){this._super();if(this.options.hoverClass){this.element.addClass(this.options.hoverClass)}},_removeHoverClass:function(){this._super();if(this.options.hoverClass){this.element.removeClass(this.options.hoverClass)}}})}return $.ui.droppable});/*! iScroll v5.2.0 ~ (c) 2008-2016 Matteo Spinelli ~ http://cubiq.org/license */
|
|
688
|
-
(function(window,document,Math){var rAF=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)};var utils=function(){var me={};var _elementStyle=document.createElement("div").style;var _vendor=function(){var vendors=["t","webkitT","MozT","msT","OT"],transform,i=0,l=vendors.length;for(;i<l;i++){transform=vendors[i]+"ransform";if(transform in _elementStyle)return vendors[i].substr(0,vendors[i].length-1)}return false}();function _prefixStyle(style){if(_vendor===false)return false;if(_vendor==="")return style;return _vendor+style.charAt(0).toUpperCase()+style.substr(1)}me.getTime=Date.now||function getTime(){return(new Date).getTime()};me.extend=function(target,obj){for(var i in obj){target[i]=obj[i]}};me.addEvent=function(el,type,fn,capture){el.addEventListener(type,fn,!!capture)};me.removeEvent=function(el,type,fn,capture){el.removeEventListener(type,fn,!!capture)};me.prefixPointerEvent=function(pointerEvent){return window.MSPointerEvent?"MSPointer"+pointerEvent.charAt(7).toUpperCase()+pointerEvent.substr(8):pointerEvent};me.momentum=function(current,start,time,lowerMargin,wrapperSize,deceleration){var distance=current-start,speed=Math.abs(distance)/time,destination,duration;deceleration=deceleration===undefined?6e-4:deceleration;destination=current+speed*speed/(2*deceleration)*(distance<0?-1:1);duration=speed/deceleration;if(destination<lowerMargin){destination=wrapperSize?lowerMargin-wrapperSize/2.5*(speed/8):lowerMargin;distance=Math.abs(destination-current);duration=distance/speed}else if(destination>0){destination=wrapperSize?wrapperSize/2.5*(speed/8):0;distance=Math.abs(current)+destination;duration=distance/speed}return{destination:Math.round(destination),duration:duration}};var _transform=_prefixStyle("transform");me.extend(me,{hasTransform:_transform!==false,hasPerspective:_prefixStyle("perspective")in _elementStyle,hasTouch:"ontouchstart"in window,hasPointer:!!(window.PointerEvent||window.MSPointerEvent),hasTransition:_prefixStyle("transition")in _elementStyle});me.isBadAndroid=function(){var appVersion=window.navigator.appVersion;if(/Android/.test(appVersion)&&!/Chrome\/\d/.test(appVersion)){var safariVersion=appVersion.match(/Safari\/(\d+.\d)/);if(safariVersion&&typeof safariVersion==="object"&&safariVersion.length>=2){return parseFloat(safariVersion[1])<535.19}else{return true}}else{return false}}();me.extend(me.style={},{transform:_transform,transitionTimingFunction:_prefixStyle("transitionTimingFunction"),transitionDuration:_prefixStyle("transitionDuration"),transitionDelay:_prefixStyle("transitionDelay"),transformOrigin:_prefixStyle("transformOrigin")});me.hasClass=function(e,c){var re=new RegExp("(^|\\s)"+c+"(\\s|$)");return re.test(e.className)};me.addClass=function(e,c){if(me.hasClass(e,c)){return}var newclass=e.className.split(" ");newclass.push(c);e.className=newclass.join(" ")};me.removeClass=function(e,c){if(!me.hasClass(e,c)){return}var re=new RegExp("(^|\\s)"+c+"(\\s|$)","g");e.className=e.className.replace(re," ")};me.offset=function(el){var left=-el.offsetLeft,top=-el.offsetTop;while(el=el.offsetParent){left-=el.offsetLeft;top-=el.offsetTop}return{left:left,top:top}};me.preventDefaultException=function(el,exceptions){for(var i in exceptions){if(exceptions[i].test(el[i])){return true}}return false};me.extend(me.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,pointerdown:3,pointermove:3,pointerup:3,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3});me.extend(me.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(k){return k*(2-k)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(k){return Math.sqrt(1- --k*k)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(k){var b=4;return(k=k-1)*k*((b+1)*k+b)+1}},bounce:{style:"",fn:function(k){if((k/=1)<1/2.75){return 7.5625*k*k}else if(k<2/2.75){return 7.5625*(k-=1.5/2.75)*k+.75}else if(k<2.5/2.75){return 7.5625*(k-=2.25/2.75)*k+.9375}else{return 7.5625*(k-=2.625/2.75)*k+.984375}}},elastic:{style:"",fn:function(k){var f=.22,e=.4;if(k===0){return 0}if(k==1){return 1}return e*Math.pow(2,-10*k)*Math.sin((k-f/4)*(2*Math.PI)/f)+1}}});me.tap=function(e,eventName){var ev=document.createEvent("Event");ev.initEvent(eventName,true,true);ev.pageX=e.pageX;ev.pageY=e.pageY;e.target.dispatchEvent(ev)};me.click=function(e){var target=e.target,ev;if(!/(SELECT|INPUT|TEXTAREA)/i.test(target.tagName)){ev=document.createEvent("MouseEvents");ev.initMouseEvent("click",true,true,e.view,1,target.screenX,target.screenY,target.clientX,target.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);ev._constructed=true;target.dispatchEvent(ev)}};return me}();function IScroll(el,options){this.wrapper=typeof el=="string"?document.querySelector(el):el;this.scroller=this.wrapper.children[0];this.scrollerStyle=this.scroller.style;this.options={resizeScrollbars:true,mouseWheelSpeed:20,snapThreshold:.334,disablePointer:!utils.hasPointer,disableTouch:utils.hasPointer||!utils.hasTouch,disableMouse:utils.hasPointer||utils.hasTouch,startX:0,startY:0,scrollY:true,directionLockThreshold:5,momentum:true,bounce:true,bounceTime:600,bounceEasing:"",preventDefault:true,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:true,useTransition:true,useTransform:true,bindToWrapper:typeof window.onmousedown==="undefined"};for(var i in options){this.options[i]=options[i]}this.translateZ=this.options.HWCompositing&&utils.hasPerspective?" translateZ(0)":"";this.options.useTransition=utils.hasTransition&&this.options.useTransition;this.options.useTransform=utils.hasTransform&&this.options.useTransform;this.options.eventPassthrough=this.options.eventPassthrough===true?"vertical":this.options.eventPassthrough;this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault;this.options.scrollY=this.options.eventPassthrough=="vertical"?false:this.options.scrollY;this.options.scrollX=this.options.eventPassthrough=="horizontal"?false:this.options.scrollX;this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough;this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold;this.options.bounceEasing=typeof this.options.bounceEasing=="string"?utils.ease[this.options.bounceEasing]||utils.ease.circular:this.options.bounceEasing;this.options.resizePolling=this.options.resizePolling===undefined?60:this.options.resizePolling;if(this.options.tap===true){this.options.tap="tap"}if(this.options.shrinkScrollbars=="scale"){this.options.useTransition=false}this.options.invertWheelDirection=this.options.invertWheelDirection?-1:1;this.x=0;this.y=0;this.directionX=0;this.directionY=0;this._events={};this._init();this.refresh();this.scrollTo(this.options.startX,this.options.startY);this.enable()}IScroll.prototype={version:"5.2.0",_init:function(){this._initEvents();if(this.options.scrollbars||this.options.indicators){this._initIndicators()}if(this.options.mouseWheel){this._initWheel()}if(this.options.snap){this._initSnap()}if(this.options.keyBindings){this._initKeys()}},destroy:function(){this._initEvents(true);clearTimeout(this.resizeTimeout);this.resizeTimeout=null;this._execEvent("destroy")},_transitionEnd:function(e){if(e.target!=this.scroller||!this.isInTransition){return}this._transitionTime();if(!this.resetPosition(this.options.bounceTime)){this.isInTransition=false;this._execEvent("scrollEnd")}},_start:function(e){if(utils.eventType[e.type]!=1){var button;if(!e.which){button=e.button<2?0:e.button==4?1:2}else{button=e.button}if(button!==0){return}}if(!this.enabled||this.initiated&&utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!utils.isBadAndroid&&!utils.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var point=e.touches?e.touches[0]:e,pos;this.initiated=utils.eventType[e.type];this.moved=false;this.distX=0;this.distY=0;this.directionX=0;this.directionY=0;this.directionLocked=0;this.startTime=utils.getTime();if(this.options.useTransition&&this.isInTransition){this._transitionTime();this.isInTransition=false;pos=this.getComputedPosition();this._translate(Math.round(pos.x),Math.round(pos.y));this._execEvent("scrollEnd")}else if(!this.options.useTransition&&this.isAnimating){this.isAnimating=false;this._execEvent("scrollEnd")}this.startX=this.x;this.startY=this.y;this.absStartX=this.x;this.absStartY=this.y;this.pointX=point.pageX;this.pointY=point.pageY;this._execEvent("beforeScrollStart")},_move:function(e){if(!this.enabled||utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault){e.preventDefault()}var point=e.touches?e.touches[0]:e,deltaX=point.pageX-this.pointX,deltaY=point.pageY-this.pointY,timestamp=utils.getTime(),newX,newY,absDistX,absDistY;this.pointX=point.pageX;this.pointY=point.pageY;this.distX+=deltaX;this.distY+=deltaY;absDistX=Math.abs(this.distX);absDistY=Math.abs(this.distY);if(timestamp-this.endTime>300&&(absDistX<10&&absDistY<10)){return}if(!this.directionLocked&&!this.options.freeScroll){if(absDistX>absDistY+this.options.directionLockThreshold){this.directionLocked="h"}else if(absDistY>=absDistX+this.options.directionLockThreshold){this.directionLocked="v"}else{this.directionLocked="n"}}if(this.directionLocked=="h"){if(this.options.eventPassthrough=="vertical"){e.preventDefault()}else if(this.options.eventPassthrough=="horizontal"){this.initiated=false;return}deltaY=0}else if(this.directionLocked=="v"){if(this.options.eventPassthrough=="horizontal"){e.preventDefault()}else if(this.options.eventPassthrough=="vertical"){this.initiated=false;return}deltaX=0}deltaX=this.hasHorizontalScroll?deltaX:0;deltaY=this.hasVerticalScroll?deltaY:0;newX=this.x+deltaX;newY=this.y+deltaY;if(newX>0||newX<this.maxScrollX){newX=this.options.bounce?this.x+deltaX/3:newX>0?0:this.maxScrollX}if(newY>0||newY<this.maxScrollY){newY=this.options.bounce?this.y+deltaY/3:newY>0?0:this.maxScrollY}this.directionX=deltaX>0?-1:deltaX<0?1:0;this.directionY=deltaY>0?-1:deltaY<0?1:0;if(!this.moved){this._execEvent("scrollStart")}this.moved=true;this._translate(newX,newY);if(timestamp-this.startTime>300){this.startTime=timestamp;this.startX=this.x;this.startY=this.y}},_end:function(e){if(!this.enabled||utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!utils.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var point=e.changedTouches?e.changedTouches[0]:e,momentumX,momentumY,duration=utils.getTime()-this.startTime,newX=Math.round(this.x),newY=Math.round(this.y),distanceX=Math.abs(newX-this.startX),distanceY=Math.abs(newY-this.startY),time=0,easing="";this.isInTransition=0;this.initiated=0;this.endTime=utils.getTime();if(this.resetPosition(this.options.bounceTime)){return}this.scrollTo(newX,newY);if(!this.moved){if(this.options.tap){utils.tap(e,this.options.tap)}if(this.options.click){utils.click(e)}this._execEvent("scrollCancel");return}if(this._events.flick&&duration<200&&distanceX<100&&distanceY<100){this._execEvent("flick");return}if(this.options.momentum&&duration<300){momentumX=this.hasHorizontalScroll?utils.momentum(this.x,this.startX,duration,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:newX,duration:0};momentumY=this.hasVerticalScroll?utils.momentum(this.y,this.startY,duration,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:newY,duration:0};newX=momentumX.destination;newY=momentumY.destination;time=Math.max(momentumX.duration,momentumY.duration);this.isInTransition=1}if(this.options.snap){var snap=this._nearestSnap(newX,newY);this.currentPage=snap;time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(newX-snap.x),1e3),Math.min(Math.abs(newY-snap.y),1e3)),300);newX=snap.x;newY=snap.y;this.directionX=0;this.directionY=0;easing=this.options.bounceEasing}if(newX!=this.x||newY!=this.y){if(newX>0||newX<this.maxScrollX||newY>0||newY<this.maxScrollY){easing=utils.ease.quadratic}this.scrollTo(newX,newY,time,easing);return}this._execEvent("scrollEnd")},_resize:function(){var that=this;clearTimeout(this.resizeTimeout);this.resizeTimeout=setTimeout(function(){that.refresh()},this.options.resizePolling)},resetPosition:function(time){var x=this.x,y=this.y;time=time||0;if(!this.hasHorizontalScroll||this.x>0){x=0}else if(this.x<this.maxScrollX){x=this.maxScrollX}if(!this.hasVerticalScroll||this.y>0){y=0}else if(this.y<this.maxScrollY){y=this.maxScrollY}if(x==this.x&&y==this.y){return false}this.scrollTo(x,y,time,this.options.bounceEasing);return true},disable:function(){this.enabled=false},enable:function(){this.enabled=true},refresh:function(){var rf=this.wrapper.offsetHeight;this.wrapperWidth=this.wrapper.clientWidth;this.wrapperHeight=this.wrapper.clientHeight;this.scrollerWidth=this.scroller.offsetWidth;this.scrollerHeight=this.scroller.offsetHeight;this.maxScrollX=this.wrapperWidth-this.scrollerWidth;this.maxScrollY=this.wrapperHeight-this.scrollerHeight;this.hasHorizontalScroll=this.options.scrollX&&this.maxScrollX<0;this.hasVerticalScroll=this.options.scrollY&&this.maxScrollY<0;if(!this.hasHorizontalScroll){this.maxScrollX=0;this.scrollerWidth=this.wrapperWidth}if(!this.hasVerticalScroll){this.maxScrollY=0;this.scrollerHeight=this.wrapperHeight}this.endTime=0;this.directionX=0;this.directionY=0;this.wrapperOffset=utils.offset(this.wrapper);this._execEvent("refresh");this.resetPosition()},on:function(type,fn){if(!this._events[type]){this._events[type]=[]}this._events[type].push(fn)},off:function(type,fn){if(!this._events[type]){return}var index=this._events[type].indexOf(fn);if(index>-1){this._events[type].splice(index,1)}},_execEvent:function(type){if(!this._events[type]){return}var i=0,l=this._events[type].length;if(!l){return}for(;i<l;i++){this._events[type][i].apply(this,[].slice.call(arguments,1))}},scrollBy:function(x,y,time,easing){x=this.x+x;y=this.y+y;time=time||0;this.scrollTo(x,y,time,easing)},scrollTo:function(x,y,time,easing){easing=easing||utils.ease.circular;this.isInTransition=this.options.useTransition&&time>0;var transitionType=this.options.useTransition&&easing.style;if(!time||transitionType){if(transitionType){this._transitionTimingFunction(easing.style);this._transitionTime(time)}this._translate(x,y)}else{this._animate(x,y,time,easing.fn)}},scrollToElement:function(el,time,offsetX,offsetY,easing){el=el.nodeType?el:this.scroller.querySelector(el);if(!el){return}var pos=utils.offset(el);pos.left-=this.wrapperOffset.left;pos.top-=this.wrapperOffset.top;if(offsetX===true){offsetX=Math.round(el.offsetWidth/2-this.wrapper.offsetWidth/2)}if(offsetY===true){offsetY=Math.round(el.offsetHeight/2-this.wrapper.offsetHeight/2)}pos.left-=offsetX||0;pos.top-=offsetY||0;pos.left=pos.left>0?0:pos.left<this.maxScrollX?this.maxScrollX:pos.left;pos.top=pos.top>0?0:pos.top<this.maxScrollY?this.maxScrollY:pos.top;time=time===undefined||time===null||time==="auto"?Math.max(Math.abs(this.x-pos.left),Math.abs(this.y-pos.top)):time;this.scrollTo(pos.left,pos.top,time,easing)},_transitionTime:function(time){time=time||0;var durationProp=utils.style.transitionDuration;this.scrollerStyle[durationProp]=time+"ms";if(!time&&utils.isBadAndroid){this.scrollerStyle[durationProp]="0.0001ms";var self=this;rAF(function(){if(self.scrollerStyle[durationProp]==="0.0001ms"){self.scrollerStyle[durationProp]="0s"}})}if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].transitionTime(time)}}},_transitionTimingFunction:function(easing){this.scrollerStyle[utils.style.transitionTimingFunction]=easing;if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].transitionTimingFunction(easing)}}},_translate:function(x,y){if(this.options.useTransform){this.scrollerStyle[utils.style.transform]="translate("+x+"px,"+y+"px)"+this.translateZ}else{x=Math.round(x);y=Math.round(y);this.scrollerStyle.left=x+"px";this.scrollerStyle.top=y+"px"}this.x=x;this.y=y;if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].updatePosition()}}},_initEvents:function(remove){var eventType=remove?utils.removeEvent:utils.addEvent,target=this.options.bindToWrapper?this.wrapper:window;eventType(window,"orientationchange",this);eventType(window,"resize",this);if(this.options.click){eventType(this.wrapper,"click",this,true)}if(!this.options.disableMouse){eventType(this.wrapper,"mousedown",this);eventType(target,"mousemove",this);eventType(target,"mousecancel",this);eventType(target,"mouseup",this)}if(utils.hasPointer&&!this.options.disablePointer){eventType(this.wrapper,utils.prefixPointerEvent("pointerdown"),this);eventType(target,utils.prefixPointerEvent("pointermove"),this);eventType(target,utils.prefixPointerEvent("pointercancel"),this);eventType(target,utils.prefixPointerEvent("pointerup"),this)}if(utils.hasTouch&&!this.options.disableTouch){eventType(this.wrapper,"touchstart",this);eventType(target,"touchmove",this);eventType(target,"touchcancel",this);eventType(target,"touchend",this)}eventType(this.scroller,"transitionend",this);eventType(this.scroller,"webkitTransitionEnd",this);eventType(this.scroller,"oTransitionEnd",this);eventType(this.scroller,"MSTransitionEnd",this)},getComputedPosition:function(){var matrix=window.getComputedStyle(this.scroller,null),x,y;if(this.options.useTransform){matrix=matrix[utils.style.transform].split(")")[0].split(", ");x=+(matrix[12]||matrix[4]);y=+(matrix[13]||matrix[5])}else{x=+matrix.left.replace(/[^-\d.]/g,"");y=+matrix.top.replace(/[^-\d.]/g,"")}return{x:x,y:y}},_initIndicators:function(){var interactive=this.options.interactiveScrollbars,customStyle=typeof this.options.scrollbars!="string",indicators=[],indicator;var that=this;this.indicators=[];if(this.options.scrollbars){if(this.options.scrollY){indicator={el:createDefaultScrollbar("v",interactive,this.options.scrollbars),interactive:interactive,defaultScrollbars:true,customStyle:customStyle,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenX:false};this.wrapper.appendChild(indicator.el);indicators.push(indicator)}if(this.options.scrollX){indicator={el:createDefaultScrollbar("h",interactive,this.options.scrollbars),interactive:interactive,defaultScrollbars:true,customStyle:customStyle,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenY:false};this.wrapper.appendChild(indicator.el);indicators.push(indicator)}}if(this.options.indicators){indicators=indicators.concat(this.options.indicators)}for(var i=indicators.length;i--;){this.indicators.push(new Indicator(this,indicators[i]))}function _indicatorsMap(fn){if(that.indicators){for(var i=that.indicators.length;i--;){fn.call(that.indicators[i])}}}if(this.options.fadeScrollbars){this.on("scrollEnd",function(){_indicatorsMap(function(){this.fade()})});this.on("scrollCancel",function(){_indicatorsMap(function(){this.fade()})});this.on("scrollStart",function(){_indicatorsMap(function(){this.fade(1)})});this.on("beforeScrollStart",function(){_indicatorsMap(function(){this.fade(1,true)})})}this.on("refresh",function(){_indicatorsMap(function(){this.refresh()})});this.on("destroy",function(){_indicatorsMap(function(){this.destroy()});delete this.indicators})},_initWheel:function(){utils.addEvent(this.wrapper,"wheel",this);utils.addEvent(this.wrapper,"mousewheel",this);utils.addEvent(this.wrapper,"DOMMouseScroll",this);this.on("destroy",function(){clearTimeout(this.wheelTimeout);this.wheelTimeout=null;utils.removeEvent(this.wrapper,"wheel",this);utils.removeEvent(this.wrapper,"mousewheel",this);utils.removeEvent(this.wrapper,"DOMMouseScroll",this)})},_wheel:function(e){if(!this.enabled){return}e.preventDefault();var wheelDeltaX,wheelDeltaY,newX,newY,that=this;if(this.wheelTimeout===undefined){that._execEvent("scrollStart")}clearTimeout(this.wheelTimeout);this.wheelTimeout=setTimeout(function(){if(!that.options.snap){that._execEvent("scrollEnd")}that.wheelTimeout=undefined},400);if("deltaX"in e){if(e.deltaMode===1){wheelDeltaX=-e.deltaX*this.options.mouseWheelSpeed;wheelDeltaY=-e.deltaY*this.options.mouseWheelSpeed}else{wheelDeltaX=-e.deltaX;wheelDeltaY=-e.deltaY}}else if("wheelDeltaX"in e){wheelDeltaX=e.wheelDeltaX/120*this.options.mouseWheelSpeed;wheelDeltaY=e.wheelDeltaY/120*this.options.mouseWheelSpeed}else if("wheelDelta"in e){wheelDeltaX=wheelDeltaY=e.wheelDelta/120*this.options.mouseWheelSpeed}else if("detail"in e){wheelDeltaX=wheelDeltaY=-e.detail/3*this.options.mouseWheelSpeed}else{return}wheelDeltaX*=this.options.invertWheelDirection;wheelDeltaY*=this.options.invertWheelDirection;if(!this.hasVerticalScroll){wheelDeltaX=wheelDeltaY;wheelDeltaY=0}if(this.options.snap){newX=this.currentPage.pageX;newY=this.currentPage.pageY;if(wheelDeltaX>0){newX--}else if(wheelDeltaX<0){newX++}if(wheelDeltaY>0){newY--}else if(wheelDeltaY<0){newY++}this.goToPage(newX,newY);return}newX=this.x+Math.round(this.hasHorizontalScroll?wheelDeltaX:0);newY=this.y+Math.round(this.hasVerticalScroll?wheelDeltaY:0);this.directionX=wheelDeltaX>0?-1:wheelDeltaX<0?1:0;this.directionY=wheelDeltaY>0?-1:wheelDeltaY<0?1:0;if(newX>0){newX=0}else if(newX<this.maxScrollX){newX=this.maxScrollX}if(newY>0){newY=0}else if(newY<this.maxScrollY){newY=this.maxScrollY}this.scrollTo(newX,newY,0)},_initSnap:function(){this.currentPage={};if(typeof this.options.snap=="string"){this.options.snap=this.scroller.querySelectorAll(this.options.snap)}this.on("refresh",function(){var i=0,l,m=0,n,cx,cy,x=0,y,stepX=this.options.snapStepX||this.wrapperWidth,stepY=this.options.snapStepY||this.wrapperHeight,el;this.pages=[];if(!this.wrapperWidth||!this.wrapperHeight||!this.scrollerWidth||!this.scrollerHeight){return}if(this.options.snap===true){cx=Math.round(stepX/2);cy=Math.round(stepY/2);while(x>-this.scrollerWidth){this.pages[i]=[];l=0;y=0;while(y>-this.scrollerHeight){this.pages[i][l]={x:Math.max(x,this.maxScrollX),y:Math.max(y,this.maxScrollY),width:stepX,height:stepY,cx:x-cx,cy:y-cy};y-=stepY;l++}x-=stepX;i++}}else{el=this.options.snap;l=el.length;n=-1;for(;i<l;i++){if(i===0||el[i].offsetLeft<=el[i-1].offsetLeft){m=0;n++}if(!this.pages[m]){this.pages[m]=[]}x=Math.max(-el[i].offsetLeft,this.maxScrollX);y=Math.max(-el[i].offsetTop,this.maxScrollY);cx=x-Math.round(el[i].offsetWidth/2);cy=y-Math.round(el[i].offsetHeight/2);this.pages[m][n]={x:x,y:y,width:el[i].offsetWidth,height:el[i].offsetHeight,cx:cx,cy:cy};if(x>this.maxScrollX){m++}}}this.goToPage(this.currentPage.pageX||0,this.currentPage.pageY||0,0);if(this.options.snapThreshold%1===0){this.snapThresholdX=this.options.snapThreshold;this.snapThresholdY=this.options.snapThreshold}else{this.snapThresholdX=Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width*this.options.snapThreshold);this.snapThresholdY=Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height*this.options.snapThreshold)}});this.on("flick",function(){var time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(this.x-this.startX),1e3),Math.min(Math.abs(this.y-this.startY),1e3)),300);this.goToPage(this.currentPage.pageX+this.directionX,this.currentPage.pageY+this.directionY,time)})},_nearestSnap:function(x,y){if(!this.pages.length){return{x:0,y:0,pageX:0,pageY:0}}var i=0,l=this.pages.length,m=0;if(Math.abs(x-this.absStartX)<this.snapThresholdX&&Math.abs(y-this.absStartY)<this.snapThresholdY){return this.currentPage}if(x>0){x=0}else if(x<this.maxScrollX){x=this.maxScrollX}if(y>0){y=0}else if(y<this.maxScrollY){y=this.maxScrollY}for(;i<l;i++){if(x>=this.pages[i][0].cx){x=this.pages[i][0].x;break}}l=this.pages[i].length;for(;m<l;m++){if(y>=this.pages[0][m].cy){y=this.pages[0][m].y;break}}if(i==this.currentPage.pageX){i+=this.directionX;if(i<0){i=0}else if(i>=this.pages.length){i=this.pages.length-1}x=this.pages[i][0].x}if(m==this.currentPage.pageY){m+=this.directionY;if(m<0){m=0}else if(m>=this.pages[0].length){m=this.pages[0].length-1}y=this.pages[0][m].y}return{x:x,y:y,pageX:i,pageY:m}},goToPage:function(x,y,time,easing){easing=easing||this.options.bounceEasing;if(x>=this.pages.length){x=this.pages.length-1}else if(x<0){x=0}if(y>=this.pages[x].length){y=this.pages[x].length-1}else if(y<0){y=0}var posX=this.pages[x][y].x,posY=this.pages[x][y].y;time=time===undefined?this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(posX-this.x),1e3),Math.min(Math.abs(posY-this.y),1e3)),300):time;this.currentPage={x:posX,y:posY,pageX:x,pageY:y};this.scrollTo(posX,posY,time,easing)},next:function(time,easing){var x=this.currentPage.pageX,y=this.currentPage.pageY;x++;if(x>=this.pages.length&&this.hasVerticalScroll){x=0;y++}this.goToPage(x,y,time,easing)},prev:function(time,easing){var x=this.currentPage.pageX,y=this.currentPage.pageY;x--;if(x<0&&this.hasVerticalScroll){x=0;y--}this.goToPage(x,y,time,easing)},_initKeys:function(e){var keys={pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40};var i;if(typeof this.options.keyBindings=="object"){for(i in this.options.keyBindings){if(typeof this.options.keyBindings[i]=="string"){this.options.keyBindings[i]=this.options.keyBindings[i].toUpperCase().charCodeAt(0)}}}else{this.options.keyBindings={}}for(i in keys){this.options.keyBindings[i]=this.options.keyBindings[i]||keys[i]}utils.addEvent(window,"keydown",this);this.on("destroy",function(){utils.removeEvent(window,"keydown",this)})},_key:function(e){if(!this.enabled){return}var snap=this.options.snap,newX=snap?this.currentPage.pageX:this.x,newY=snap?this.currentPage.pageY:this.y,now=utils.getTime(),prevTime=this.keyTime||0,acceleration=.25,pos;if(this.options.useTransition&&this.isInTransition){pos=this.getComputedPosition();this._translate(Math.round(pos.x),Math.round(pos.y));this.isInTransition=false}this.keyAcceleration=now-prevTime<200?Math.min(this.keyAcceleration+acceleration,50):0;switch(e.keyCode){case this.options.keyBindings.pageUp:if(this.hasHorizontalScroll&&!this.hasVerticalScroll){newX+=snap?1:this.wrapperWidth}else{newY+=snap?1:this.wrapperHeight}break;case this.options.keyBindings.pageDown:if(this.hasHorizontalScroll&&!this.hasVerticalScroll){newX-=snap?1:this.wrapperWidth}else{newY-=snap?1:this.wrapperHeight}break;case this.options.keyBindings.end:newX=snap?this.pages.length-1:this.maxScrollX;newY=snap?this.pages[0].length-1:this.maxScrollY;break;case this.options.keyBindings.home:newX=0;newY=0;break;case this.options.keyBindings.left:newX+=snap?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.up:newY+=snap?1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.right:newX-=snap?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.down:newY-=snap?1:5+this.keyAcceleration>>0;break;default:return}if(snap){this.goToPage(newX,newY);return}if(newX>0){newX=0;this.keyAcceleration=0}else if(newX<this.maxScrollX){newX=this.maxScrollX;this.keyAcceleration=0}if(newY>0){newY=0;this.keyAcceleration=0}else if(newY<this.maxScrollY){newY=this.maxScrollY;this.keyAcceleration=0}this.scrollTo(newX,newY,0);this.keyTime=now},_animate:function(destX,destY,duration,easingFn){var that=this,startX=this.x,startY=this.y,startTime=utils.getTime(),destTime=startTime+duration;function step(){var now=utils.getTime(),newX,newY,easing;if(now>=destTime){that.isAnimating=false;that._translate(destX,destY);if(!that.resetPosition(that.options.bounceTime)){that._execEvent("scrollEnd")}return}now=(now-startTime)/duration;easing=easingFn(now);newX=(destX-startX)*easing+startX;newY=(destY-startY)*easing+startY;that._translate(newX,newY);if(that.isAnimating){rAF(step)}}this.isAnimating=true;step()},handleEvent:function(e){switch(e.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(e);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(e);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(e);break;case"keydown":this._key(e);break;case"click":if(this.enabled&&!e._constructed){e.preventDefault();e.stopPropagation()}break}}};function createDefaultScrollbar(direction,interactive,type){var scrollbar=document.createElement("div"),indicator=document.createElement("div");if(type===true){scrollbar.style.cssText="position:absolute;z-index:9999";indicator.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"}indicator.className="iScrollIndicator";if(direction=="h"){if(type===true){scrollbar.style.cssText+=";height:7px;left:2px;right:2px;bottom:0";indicator.style.height="100%"}scrollbar.className="iScrollHorizontalScrollbar"}else{if(type===true){scrollbar.style.cssText+=";width:7px;bottom:2px;top:2px;right:1px";indicator.style.width="100%"}scrollbar.className="iScrollVerticalScrollbar"}scrollbar.style.cssText+=";overflow:hidden";if(!interactive){scrollbar.style.pointerEvents="none"}scrollbar.appendChild(indicator);return scrollbar}function Indicator(scroller,options){this.wrapper=typeof options.el=="string"?document.querySelector(options.el):options.el;this.wrapperStyle=this.wrapper.style;this.indicator=this.wrapper.children[0];this.indicatorStyle=this.indicator.style;this.scroller=scroller;this.options={listenX:true,listenY:true,interactive:false,resize:true,defaultScrollbars:false,shrink:false,fade:false,speedRatioX:0,speedRatioY:0};for(var i in options){this.options[i]=options[i]}this.sizeRatioX=1;this.sizeRatioY=1;this.maxPosX=0;this.maxPosY=0;if(this.options.interactive){if(!this.options.disableTouch){utils.addEvent(this.indicator,"touchstart",this);utils.addEvent(window,"touchend",this)}if(!this.options.disablePointer){utils.addEvent(this.indicator,utils.prefixPointerEvent("pointerdown"),this);utils.addEvent(window,utils.prefixPointerEvent("pointerup"),this)}if(!this.options.disableMouse){utils.addEvent(this.indicator,"mousedown",this);utils.addEvent(window,"mouseup",this)}}if(this.options.fade){this.wrapperStyle[utils.style.transform]=this.scroller.translateZ;var durationProp=utils.style.transitionDuration;this.wrapperStyle[durationProp]=utils.isBadAndroid?"0.0001ms":"0ms";var self=this;if(utils.isBadAndroid){rAF(function(){if(self.wrapperStyle[durationProp]==="0.0001ms"){self.wrapperStyle[durationProp]="0s"}})}this.wrapperStyle.opacity="0"}}Indicator.prototype={handleEvent:function(e){switch(e.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(e);break}},destroy:function(){if(this.options.fadeScrollbars){clearTimeout(this.fadeTimeout);this.fadeTimeout=null}if(this.options.interactive){utils.removeEvent(this.indicator,"touchstart",this);utils.removeEvent(this.indicator,utils.prefixPointerEvent("pointerdown"),this);utils.removeEvent(this.indicator,"mousedown",this);utils.removeEvent(window,"touchmove",this);utils.removeEvent(window,utils.prefixPointerEvent("pointermove"),this);utils.removeEvent(window,"mousemove",this);utils.removeEvent(window,"touchend",this);utils.removeEvent(window,utils.prefixPointerEvent("pointerup"),this);utils.removeEvent(window,"mouseup",this)}if(this.options.defaultScrollbars){this.wrapper.parentNode.removeChild(this.wrapper)}},_start:function(e){var point=e.touches?e.touches[0]:e;e.preventDefault();e.stopPropagation();this.transitionTime();this.initiated=true;this.moved=false;this.lastPointX=point.pageX;this.lastPointY=point.pageY;this.startTime=utils.getTime();if(!this.options.disableTouch){utils.addEvent(window,"touchmove",this)}if(!this.options.disablePointer){utils.addEvent(window,utils.prefixPointerEvent("pointermove"),this)}if(!this.options.disableMouse){utils.addEvent(window,"mousemove",this)}this.scroller._execEvent("beforeScrollStart")},_move:function(e){var point=e.touches?e.touches[0]:e,deltaX,deltaY,newX,newY,timestamp=utils.getTime();if(!this.moved){this.scroller._execEvent("scrollStart")}this.moved=true;deltaX=point.pageX-this.lastPointX;this.lastPointX=point.pageX;deltaY=point.pageY-this.lastPointY;this.lastPointY=point.pageY;newX=this.x+deltaX;newY=this.y+deltaY;this._pos(newX,newY);e.preventDefault();e.stopPropagation()},_end:function(e){if(!this.initiated){return}this.initiated=false;e.preventDefault();e.stopPropagation();utils.removeEvent(window,"touchmove",this);utils.removeEvent(window,utils.prefixPointerEvent("pointermove"),this);utils.removeEvent(window,"mousemove",this);if(this.scroller.options.snap){var snap=this.scroller._nearestSnap(this.scroller.x,this.scroller.y);var time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(this.scroller.x-snap.x),1e3),Math.min(Math.abs(this.scroller.y-snap.y),1e3)),300);if(this.scroller.x!=snap.x||this.scroller.y!=snap.y){this.scroller.directionX=0;this.scroller.directionY=0;this.scroller.currentPage=snap;this.scroller.scrollTo(snap.x,snap.y,time,this.scroller.options.bounceEasing)}}if(this.moved){this.scroller._execEvent("scrollEnd")}},transitionTime:function(time){time=time||0;var durationProp=utils.style.transitionDuration;this.indicatorStyle[durationProp]=time+"ms";if(!time&&utils.isBadAndroid){this.indicatorStyle[durationProp]="0.0001ms";var self=this;rAF(function(){if(self.indicatorStyle[durationProp]==="0.0001ms"){self.indicatorStyle[durationProp]="0s"}})}},transitionTimingFunction:function(easing){this.indicatorStyle[utils.style.transitionTimingFunction]=easing},refresh:function(){this.transitionTime();if(this.options.listenX&&!this.options.listenY){this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none"}else if(this.options.listenY&&!this.options.listenX){this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none"}else{this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none"}if(this.scroller.hasHorizontalScroll&&this.scroller.hasVerticalScroll){utils.addClass(this.wrapper,"iScrollBothScrollbars");utils.removeClass(this.wrapper,"iScrollLoneScrollbar");if(this.options.defaultScrollbars&&this.options.customStyle){if(this.options.listenX){this.wrapper.style.right="8px"}else{this.wrapper.style.bottom="8px"}}}else{utils.removeClass(this.wrapper,"iScrollBothScrollbars");utils.addClass(this.wrapper,"iScrollLoneScrollbar");if(this.options.defaultScrollbars&&this.options.customStyle){if(this.options.listenX){this.wrapper.style.right="2px"}else{this.wrapper.style.bottom="2px"}}}var r=this.wrapper.offsetHeight;if(this.options.listenX){this.wrapperWidth=this.wrapper.clientWidth;if(this.options.resize){this.indicatorWidth=Math.max(Math.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8);this.indicatorStyle.width=this.indicatorWidth+"px"}else{this.indicatorWidth=this.indicator.clientWidth}this.maxPosX=this.wrapperWidth-this.indicatorWidth;if(this.options.shrink=="clip"){this.minBoundaryX=-this.indicatorWidth+8;this.maxBoundaryX=this.wrapperWidth-8}else{this.minBoundaryX=0;this.maxBoundaryX=this.maxPosX}this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX}if(this.options.listenY){this.wrapperHeight=this.wrapper.clientHeight;if(this.options.resize){this.indicatorHeight=Math.max(Math.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8);this.indicatorStyle.height=this.indicatorHeight+"px"}else{this.indicatorHeight=this.indicator.clientHeight}this.maxPosY=this.wrapperHeight-this.indicatorHeight;if(this.options.shrink=="clip"){this.minBoundaryY=-this.indicatorHeight+8;this.maxBoundaryY=this.wrapperHeight-8}else{this.minBoundaryY=0;this.maxBoundaryY=this.maxPosY}this.maxPosY=this.wrapperHeight-this.indicatorHeight;this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY}this.updatePosition()},updatePosition:function(){var x=this.options.listenX&&Math.round(this.sizeRatioX*this.scroller.x)||0,y=this.options.listenY&&Math.round(this.sizeRatioY*this.scroller.y)||0;if(!this.options.ignoreBoundaries){if(x<this.minBoundaryX){if(this.options.shrink=="scale"){this.width=Math.max(this.indicatorWidth+x,8);this.indicatorStyle.width=this.width+"px"}x=this.minBoundaryX}else if(x>this.maxBoundaryX){if(this.options.shrink=="scale"){this.width=Math.max(this.indicatorWidth-(x-this.maxPosX),8);this.indicatorStyle.width=this.width+"px";x=this.maxPosX+this.indicatorWidth-this.width}else{x=this.maxBoundaryX}}else if(this.options.shrink=="scale"&&this.width!=this.indicatorWidth){this.width=this.indicatorWidth;this.indicatorStyle.width=this.width+"px"}if(y<this.minBoundaryY){if(this.options.shrink=="scale"){this.height=Math.max(this.indicatorHeight+y*3,8);this.indicatorStyle.height=this.height+"px"}y=this.minBoundaryY}else if(y>this.maxBoundaryY){if(this.options.shrink=="scale"){this.height=Math.max(this.indicatorHeight-(y-this.maxPosY)*3,8);this.indicatorStyle.height=this.height+"px";y=this.maxPosY+this.indicatorHeight-this.height}else{y=this.maxBoundaryY}}else if(this.options.shrink=="scale"&&this.height!=this.indicatorHeight){this.height=this.indicatorHeight;this.indicatorStyle.height=this.height+"px"}}this.x=x;this.y=y;if(this.scroller.options.useTransform){this.indicatorStyle[utils.style.transform]="translate("+x+"px,"+y+"px)"+this.scroller.translateZ}else{this.indicatorStyle.left=x+"px";this.indicatorStyle.top=y+"px"}},_pos:function(x,y){if(x<0){x=0}else if(x>this.maxPosX){x=this.maxPosX}if(y<0){y=0}else if(y>this.maxPosY){y=this.maxPosY}x=this.options.listenX?Math.round(x/this.sizeRatioX):this.scroller.x;y=this.options.listenY?Math.round(y/this.sizeRatioY):this.scroller.y;this.scroller.scrollTo(x,y)},fade:function(val,hold){if(hold&&!this.visible){return}clearTimeout(this.fadeTimeout);this.fadeTimeout=null;var time=val?250:500,delay=val?0:300;val=val?"1":"0";this.wrapperStyle[utils.style.transitionDuration]=time+"ms";this.fadeTimeout=setTimeout(function(val){this.wrapperStyle.opacity=val;this.visible=+val}.bind(this,val),delay)}};IScroll.utils=utils;if(typeof module!="undefined"&&module.exports){module.exports=IScroll}else if(typeof define=="function"&&define.amd){define(function(){return IScroll})}else{window.IScroll=IScroll}})(window,document,Math);"use strict";$.widget("wm.datatable",{options:{data:[],statusMsg:"",colDefs:[],rowActions:[],headerConfig:[],sortInfo:{field:"",direction:""},isMobile:false,enableSort:true,filtermode:"",filteronkeypress:false,caseinsensitive:false,activeRow:undefined,isrowselectable:false,allowpagesizechange:false,height:"100%",showHeader:true,selectFirstRow:false,showNewRow:true,showRowIndex:false,enableRowSelection:true,enableColumnSelection:false,multiselect:false,headerselectall:false,multiselecttitle:"",multiselectarialabel:"",radioselecttitle:"",radioselectarialabel:"",filterNullRecords:true,navigation:"",isdynamictable:"",cssClassNames:{tableRow:"app-datagrid-row",headerCell:"app-datagrid-header-cell",groupHeaderCell:"app-datagrid-group-header-cell",tableCell:"app-datagrid-cell",grid:"",gridDefault:"table",gridBody:"app-datagrid-body",gridFooter:"app-datagrid-footer",deleteRow:"danger",ascIcon:"wi wi-long-arrow-up",descIcon:"wi wi-long-arrow-down",selectedColumn:"selected-column",rowExpandIcon:"wi wi-minus-square",rowCollapseIcon:"wi wi-plus-square",gridRowExpansionClass:"table-row-expansion",expandedRowClass:"expanded"},dataStates:{loading:"Loading...",ready:"",error:"An error occurred in loading the data.",nodata:"No data found."},messages:{selectField:"Select Field"},loadingicon:"",startRowIndex:1,editmode:"",actionsEnabled:{edit:true,new:true},rowExpansionEnabled:false,rowDef:{position:"0",closeothers:false,columnwidth:"50px"},summaryRow:false,summaryRowDefs:[],summaryRowDefsObject:[],searchHandler:function(){},sortHandler:function(){}},customColumnDefs:{checkbox:{field:"checkbox",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"width: 50px; text-align: center;",textAlignment:"center",isMultiSelectCol:true,show:true,multiselecttitle:"",multiselectarialabel:""},radio:{field:"radio",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"width: 50px; text-align: center;",textAlignment:"center",show:true,radioselecttitle:"",radioselectarialabel:""},__expand:{field:"__expand",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"text-align: center;",textAlignment:"center",show:true,width:"50px"},rowIndex:{field:"rowIndex",type:"custom",displayName:"S. No.",sortable:false,searchable:false,selectable:false,readonly:true,style:"text-align: left;",textAlignment:"left",show:true}},CONSTANTS:{QUICK_EDIT:"quickedit",INLINE:"inline",FORM:"form",DIALOG:"dialog",SEARCH:"search",MULTI_COLUMN:"multicolumn"},Utils:{random:function(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)},isDefined:function(value){return value!==undefined},isObject:function(value){return value!==null&&typeof value==="object"},getObjectIndex:function(data,obj){var matchIndex=-1;if(!Array.isArray(data)){return-1}data.some(function(data,index){if(_.isEqual(data,obj)){matchIndex=index;return true}});return matchIndex},generateGuid:function(){var random=this.random;return random()+random()+"-"+random()+"-"+random()+"-"+random()+"-"+random()+random()+random()},isValidHtml:function(htm){var validHtmlRegex=/<[a-z][\s\S]*>/i;return validHtmlRegex.test(htm)},isMac:function(){return navigator.platform.toUpperCase().indexOf("MAC")>=0},isDeleteKey:function(event){return this.isMac()&&event.which===8||event.which===46}},_setStyles:function($el,styleString){if(!styleString){return}var styles=styleString.split(";");styles.forEach(function(styleBit){var parts=styleBit.split(":");var property,value;if(parts.length===2){property=parts[0].trim();value=parts[1].trim();$el.css(property,value)}});return styleString},_getColumnSortDirection:function(field){var sortInfo=this.options.sortInfo;return field===sortInfo.field?sortInfo.direction:""},_toggleSpacingClasses:function(value){switch(value){case"normal":this.tableContainer.removeClass("table-condensed");if(this.gridSearch){this.gridSearch.find(".form-group").removeClass("form-group-sm");this.gridSearch.find("select").removeClass("input-sm");this.gridSearch.find(".input-group").removeClass("input-group-sm")}break;case"condensed":this.tableContainer.addClass("table-condensed");if(this.gridSearch){this.gridSearch.find(".form-group").addClass("form-group-sm");this.gridSearch.find("select").addClass("input-sm");this.gridSearch.find(".input-group").addClass("input-group-sm")}break}},_getColSpan:function(cols){var colSpan=0,self=this;_.forEach(cols,function(col){var colDef;if(col.isGroup){colSpan+=self._getColSpan(col.columns)}else{colDef=_.find(self.preparedHeaderData,{field:col.field});colSpan=!_.isUndefined(colDef.show)&&!colDef.show?colSpan:colSpan+1}});return colSpan},_setColSpan:function(config){var self=this;_.forEach(config,function(col){if(col.isGroup){col.colspan=self._getColSpan(col.columns);self.gridHeaderElement.find('th[data-col-group="'+col.field+'"]').attr("colspan",col.colspan);self._setColSpan(col.columns)}})},_getHeaderTemplate:function(){var $colgroup=$("<colgroup></colgroup>"),$htm=this.gridHeaderElement.empty(),isDefined=this.Utils.isDefined,sortInfo=this.options.sortInfo,sortField=sortInfo.field,self=this,rowTemplates=[],headerConfig=this.options.headerConfig,headerGroupClass=self.options.cssClassNames.groupHeaderCell,$row;function generateHeaderCell(value,index){var id=index,field=value.field,headerLabel=self.Utils.isDefined(value.displayName)?value.displayName:field||"",titleLabel=headerLabel,sortEnabled=self.options.enableSort&&(_.isUndefined(value.show)||value.show)&&(_.isUndefined(value.sortable)||value.sortable),headerClasses=self.options.cssClassNames.headerCell,sortClass,tl="",$th,$col,$sortSpan,$sortIcon;headerLabel=!self.Utils.isDefined(headerLabel)||headerLabel===""?" ":headerLabel;$col=$("<col/>");if(value.style){self._setStyles($col,value.style)}$colgroup.append($col);if(isDefined(value.class)){headerClasses+=" "+value.class}if(value.selected){headerClasses+=" "+self.options.cssClassNames.selectedColumn+" "}if(field==="checkbox"||field==="radio"){headerClasses+=" grid-col-small"}tl+="<th";if((_.isUndefined(value.resizable)||value.resizable)&&(_.isUndefined(value.show)||value.show)){tl+=" data-col-resizable"}if(self.options.enableColumnSelection&&(_.isUndefined(value.selectable)||value.selectable)){tl+=" data-col-selectable"}if(sortEnabled){tl+=" data-col-sortable"}tl+="></th>";$th=$(tl);$th.attr({"data-col-id":id,"data-col-field":field,title:titleLabel,tabindex:0,scope:"col",role:"columnheader"});self._setStyles($th,"text-align: "+value.textAlignment);$th.addClass(headerClasses);if(field==="checkbox"){$th.append(self._getCheckbox())}if(field==="radio"){$th.attr("aria-label","Select row")}$th.append('<span class="header-data">'+headerLabel+"</span>");if(sortEnabled){$sortSpan=$('<span class="sort-buttons-container"></span>');$sortIcon=$('<i class="sort-icon"></i>');if(sortField&&sortField===value.field&&sortInfo.direction){sortClass=sortInfo.direction==="asc"?self.options.cssClassNames.ascIcon:self.options.cssClassNames.descIcon;$sortSpan.addClass("active");$sortIcon.addClass(sortClass+" "+sortInfo.direction)}$th.append($sortSpan.append($sortIcon))}return $th}function generateRow(cols,i){var $thList=[];_.forEach(cols,function(col){var index,value,classes,styles,$groupTl;if(col.columns&&col.columns.length){$groupTl=$("<th></th>");classes=headerGroupClass+" "+(col.class||"");styles="text-align: "+col.textAlignment+";background-color: "+(col.backgroundColor||"")+";";$groupTl.attr({"data-col-group":col.field,class:classes,title:col.displayName,tabindex:0});self._setStyles($groupTl,styles);$groupTl.append('<span class="header-data">'+col.displayName+"</span>");$thList.push($groupTl);generateRow(col.columns,i+1)}else{index=_.findIndex(self.preparedHeaderData,{field:col.field});value=self.preparedHeaderData[index];if(value){$thList.push(generateHeaderCell(value,index))}}});rowTemplates[i]=rowTemplates[i]||[];rowTemplates[i]=rowTemplates[i].concat($thList)}if(_.isEmpty(headerConfig)){$row=$("<tr></tr>");self.preparedHeaderData.forEach(function(value,index){$row.append(generateHeaderCell(value,index))});$htm.append($row)}else{generateRow(headerConfig,0);rowTemplates.forEach(function($thList,index){$row=$('<tr role="row" tabindex="0"></tr>');var rowSpan=rowTemplates.length-index;$thList.forEach(function($th){if(rowSpan>1&&$th.hasClass("app-datagrid-header-cell")){$th.attr("rowspan",rowSpan)}$row.append($th)});$htm.append($row)})}return{colgroup:$colgroup,header:$htm}},_getSearchEl:function(){var htm,sel='<select name="wm-datatable" data-element="dgFilterValue" '+'class="form-control app-select">'+'<option value="" selected class="placeholder">'+this.options.messages.selectField+"</option>",searchLabel=this.Utils.isDefined(this.options.searchLabel)&&this.options.searchLabel.length?this.options.searchLabel:"";this.options.colDefs.forEach(function(colDef,index){if(colDef.field!=="none"&&colDef.field!=="rowOperations"&&colDef.searchable&&_.toString(colDef.showinfilter)!=="false"){sel+='<option value="'+colDef.field+'" data-coldef-index="'+index+'">'+(colDef.displayName||colDef.field)+"</option>"}});sel+="</select>";htm='<form class="form-search form-inline" onsubmit="return false;"><div class="form-group">'+'<input type="text" data-element="dgSearchText" class="form-control app-textbox" value="" placeholder="'+searchLabel+'"/>'+'</div><div class="input-append input-group">'+sel+'<span class="input-group-addon"><button type="button" data-element="dgSearchButton" class="app-search-button" title="'+searchLabel+'">'+'<i class="wi wi-search"></i>'+"</button></span>"+"</div>"+"</div></form>";var $htm=$(htm);this._setStyles($htm.find('[data-element="dgSearchText"]'),"display: inline-block;");return $htm},_appendRowExpansionButtons:function($htm){var self=this;$htm.find("[data-identifier='rowExpansionButtons']").each(function(index){var _rowData,$row,rowId,rowIndex=index;$row=$(this).closest("tr.app-datagrid-row");rowId=parseInt($row.attr("data-row-id"),10);_rowData=_.clone(self.options.data[rowId]);_rowData.$index=rowIndex+1;self.options.generateRowExpansionCell(_rowData,rowIndex);$(this).empty().append(self.options.getRowExpansionAction(rowIndex));var expandtitleExpr=$(this).children()[0].getAttribute("expandtitle.bind"),collapsetitleExpr=$(this).children()[0].getAttribute("collapsetitle.bind");if(expandtitleExpr){self.options.registerCollapseOrExpandTitleWatch(expandtitleExpr,_rowData,rowIndex,"expandtitle",$(this).children()[0])}if(collapsetitleExpr){self.options.registerCollapseOrExpandTitleWatch(collapsetitleExpr,_rowData,rowIndex,"collapsetitle",$(this).children()[0])}})},setSummaryRowDef:function(key,data,rowIndex,refreshIndicator){this.options.summaryRow=true;if(this.options.summaryRowDefs[rowIndex]==undefined){this.options.summaryRowDefs[rowIndex]={};this.options.summaryRowDefsObject[rowIndex]={}}this.options.summaryRowDefsObject[rowIndex][key]=data;this.options.summaryRowDefs[rowIndex][key]=data&&data.value?data.value:data;if(refreshIndicator)this.refreshGridData()},_getSummaryRowTemplate:function(){var self=this,$tfoot=$('<tfoot class="'+this.options.cssClassNames.gridFooter+'"></tfoot>');this._setStyles($tfoot,"border-top: 3px solid #eee;");_.forEach(this.options.summaryRowDefs,function(row,index){row.$$pk=index;$tfoot.append(self._getRowTemplate(row,index,true))});return $tfoot},getPageStartIndex:function(){var currentPage=this.options.getCurrentPage(),pagesize=this.options.getPageSize();var isPrevPageUpdated=this.options.actionRowPage<currentPage;var pageIndex=isPrevPageUpdated?this.options.actionRowPage:currentPage;return(pageIndex-1)*pagesize},_getPreparedDataForInfiniteScroll:function($tbody,preparedData){preparedData=preparedData.filter(function(row,index){var isExists=$tbody.find("tr.app-datagrid-row[data-row-id="+row.$$pk+"]");if(!isExists.length){return row}});return preparedData},_updateTrData:function($tbody){var editedRow,updatedRowData,self=this;editedRow=$tbody.find("tr.app-datagrid-row[data-row-id="+self.options.actionRowIndex+"]");updatedRowData=self.preparedData[self.options.actionRowIndex];self.options.generateCustomExpressions(updatedRowData,self.options.actionRowIndex);var rowTemplate=self._getRowTemplate(updatedRowData,self.options.actionRowIndex);editedRow.replaceWith(rowTemplate[0])},_handleCRUDForInfiniteScroll:function($tbody){var self=this;if((self.options.lastActionPerformed===self.options.ACTIONS.SEARCH_OR_SORT||self.options.lastActionPerformed===self.options.ACTIONS.FILTER_CRITERIA||self.options.lastActionPerformed===self.options.ACTIONS.DATASET_UPDATE)&&(self.options.isSearchTrigerred||self.options.isDatasetUpdated||self.options.isDataUpdatedByUser)){$tbody.html("");if(this.options.navigation==="On-Demand"&&!this.options.isLastPage)this.element.find(".on-demand-datagrid").show();self.options.clearCustomExpression();self.options.clearRowDetailExpression();self.options.setIsSearchTrigerred(false);self.options.setIsDatasetUpdated(false)}else if(self.options.lastActionPerformed===self.options.ACTIONS.EDIT&&self.options.actionRowIndex!==undefined&&self.options.editmode!==this.CONSTANTS.QUICK_EDIT){self._updateTrData($tbody)}},_getGridTemplate:function(){var self=this,preparedData,$tbody,pageStartIndex=self.getPageStartIndex(),startRowIndex=self.options.startRowIndex,isScrollorOnDemand=self.options.isNavTypeScrollOrOndemand();if(isScrollorOnDemand){$tbody=this.gridElement;if(this.renderTableOnViewLess){$tbody=this.gridElement.empty();this.hideLoadingIndicator();this.renderTableOnViewLess=false}}else{$tbody=this.gridElement.empty()}if(isScrollorOnDemand){this._handleCRUDForInfiniteScroll($tbody);if(self.options.lastActionPerformed===self.options.ACTIONS.DELETE){startRowIndex=self.options.actionRowIndex+1}preparedData=this._getPreparedDataForInfiniteScroll($tbody,this.preparedData.slice(pageStartIndex))}else{this.options.clearCustomExpression();this.options.clearRowDetailExpression();preparedData=this.preparedData}_.forEach(preparedData,function(row,index){var _row=_.clone(row),rowIndex=isScrollorOnDemand?startRowIndex+index-1:index,rowTemplate;_row.$index=rowIndex+1;self.options.generateCustomExpressions(_row,rowIndex);self.options.registerRowNgClassWatcher(_row,rowIndex);rowTemplate=self._getRowTemplate(row,rowIndex);$tbody.append(rowTemplate);if(self.options.rowExpansionEnabled){var rowHeight=self.options.rowDef.height;var colSpanLength=_.filter(self.preparedHeaderData,function(c){return c.show}).length;var $tr=$('<tr class="app-datagrid-detail-row" tabindex="0" role="row" data-row-id="'+row.$$pk+'"><td colspan="'+colSpanLength+'" class="app-datagrid-row-details-cell">'+'<div class="row-overlay"><div class="row-status"><i class="'+self.options.loadingicon+'"></i></div></div><div class="details-section"></div>'+"</td></tr>");if(rowHeight){$tr.find("div.row-overlay").css("min-height",rowHeight)}$tr.css("display","none");$tr.find(".details-section").css("display","none");$tbody.append($tr)}});if(!this.options.isdynamictable){this.options.setLastActionPerformed(this.options.ACTIONS.DEFAULT);this.options.setIsDataUpdatedByUser(false);this.options.clearActionRowIndex()}return $tbody},_getRowTemplate:function(row,rowIndex,summaryRow){var $htm,self=this,gridOptions=self.options;$htm=$('<tr role="row" tabindex="0" class="'+gridOptions.cssClassNames.tableRow+" "+(gridOptions.rowClass||"")+'" data-row-id="'+row.$$pk+'"></tr>');this.preparedHeaderData.forEach(function(current,colIndex){$htm.append(self._getColumnTemplate(row,colIndex,current,rowIndex,summaryRow))});return $htm},_getRowActionsColumnDefIndex:function(){var i,len=this.preparedHeaderData.length;for(i=0;i<len;i+=1){if(this.preparedHeaderData[i].field==="rowOperations"){return i}}return-1},_getRowActionsColumnDef:function(){var index=this._getRowActionsColumnDefIndex();if(index!==-1){return this.preparedHeaderData[index]}return null},_getCheckboxTemplate:function(row,isMultiSelectCol){var checked=row._checked===true?" checked":"",disabled=row.disabed?" disabled":"",chkBoxName=isMultiSelectCol?"gridMultiSelect":"",labelClass=row._checked===true?"":"unchecked";return this._getCheckbox(labelClass,chkBoxName,checked,disabled)},_getCheckbox:function(labelClass="",chkBoxName="",checked="",disabled=""){return`<div class="app-checkbox checkbox">\n <label class="${labelClass}">\n <span class="sr-only" aria-live="assertive">${this._getCheckboxLabel(chkBoxName)}</span>\n <input type="checkbox" name="${chkBoxName}" ${checked} ${disabled} role="checkbox">\n <span class="caption"></span>\n </label>\n </div>`},_getCheckboxLabel:function(chkBoxName){if(chkBoxName){return"Select row"}else{return"Select all rows"}},_getRadioTemplate:function(row){var checked=row._checked===true?" checked":"",disabled=row.disabed?" disabled":"";return`<div class="radio app-radio">\n <label>\n <input type="radio" rowSelectInput name="" value="" ${checked} ${disabled}>\n <span class="caption"></span>\n </label>\n </div>`},_getColumnTemplate:function(row,colId,colDef,rowIndex,summaryRow){var $htm,columnValue,columnValueObject,cellPreloader='<div class="overlay"><span aria-hidden="true" class="form-field-spinner fa fa-circle-o-notch fa-spin form-control-feedback"></span></div>',customExpressionHtml,innerTmpl,classes=this.options.cssClassNames.tableCell+" "+(colDef.class||""),colExpression=colDef.customExpression,styles="text-align: "+colDef.textAlignment+";position: relative;";$htm=$('<td class="'+classes+'" data-col-id="'+colId+'" role="cell" tabindex="0"></td>');this._setStyles($htm,styles);columnValue=_.get(row,colDef.field);if(summaryRow){columnValueObject=this.options.summaryRowDefsObject[rowIndex][colDef.field];if(columnValueObject instanceof Object){if(columnValueObject.class){$htm.addClass(columnValueObject.class)}}if(columnValue instanceof Promise){customExpressionHtml=cellPreloader;$htm.html(customExpressionHtml)}else{innerTmpl=_.isUndefined(columnValue)||columnValue===null?"":columnValue;$htm.html(innerTmpl)}}else if(colExpression){$htm.html(this.options.getCustomExpression(colDef.field,rowIndex))}else{if(colDef.type!=="custom"){columnValue=_.get(row,colDef.field);if(this.options.filterNullRecords&&columnValue===null||_.isUndefined(columnValue)){columnValue=""}$htm.attr("title",columnValue);$htm.text(""+columnValue)}else{switch(colDef.field){case"checkbox":if(Array.isArray(this.options.multiselecttitle)){$htm.attr("title",this.options.multiselecttitle[row.$$index-1])}else{$htm.attr("title",this.options.multiselecttitle)}if(Array.isArray(this.options.multiselectarialabel)){$htm.attr("aria-label",this.options.multiselectarialabel[row.$$index-1])}else{$htm.attr("aria-label",this.options.multiselectarialabel)}innerTmpl=this._getCheckboxTemplate(row,colDef.isMultiSelectCol);break;case"__expand":innerTmpl='<span class="row-expansion-column" data-identifier="rowExpansionButtons"></span>';break;case"radio":if(Array.isArray(this.options.radioselecttitle)){$htm.attr("title",this.options.radioselecttitle[row.$$index-1])}else{$htm.attr("title",this.options.radioselecttitle)}if(Array.isArray(this.options.radioselectarialabel)){$htm.attr("aria-label",this.options.radioselectarialabel[row.$$index-1])}else{$htm.attr("aria-label",this.options.radioselectarialabel)}innerTmpl=this._getRadioTemplate(row);break;case"rowOperations":innerTmpl='<span class="actions-column" data-identifier="actionButtons"></span>';break;case"rowIndex":innerTmpl=row.$$index;break;case"none":innerTmpl="";break;default:innerTmpl=_.isUndefined(columnValue)||columnValue===null?"":columnValue}$htm.html(innerTmpl)}}row.$index=rowIndex+1;this.options.registerColNgClassWatcher(row,colDef,rowIndex,colId,summaryRow);return $htm},_getEventTemplate:function(colDef){var events=_.filter(_.keys(colDef),function(key){return _.startsWith(key,"on")}),changeEvt,template="";changeEvt=colDef.editWidgetType==="autocomplete"?"onSubmit":"onChange";events=_.union(events,[changeEvt]);_.forEach(events,function(eventName){template+=" "+_.kebabCase(eventName)+'="';if(eventName==="onSubmit"||eventName==="onChange"){template+="_"+eventName+"Field($event, $scope, newVal, oldVal);"}template+=(colDef[eventName]||"")+'" '});return template},_insertFieldInHeaderConfig:function(headerConfig,fieldName,position){var index=_.findIndex(headerConfig,{field:position}),self=this;if(index===-1){_.forEach(headerConfig,function(config){if(config.isGroup){self._insertFieldInHeaderConfig(config.columns,fieldName,position)}})}else{headerConfig.splice(index+1,0,{field:fieldName,isPredefined:true})}},setHeaderConfigForDefaultFields:function(name,position){if(_.isEmpty(this.options.headerConfig)){return}var fieldName=this.customColumnDefs[name].field;_.remove(this.options.headerConfig,{field:fieldName});if(position==="0"){this.options.headerConfig.unshift({field:fieldName,isPredefined:true})}else if(position==="-1"){this.options.headerConfig.push({field:fieldName,isPredefined:true})}else{this._insertFieldInHeaderConfig(this.options.headerConfig,fieldName,position)}},setDefaultColsData:function(header){if(_.isEmpty(this.preparedHeaderData)){return}var rowExpandPosition,rowExpandCol;if(this.options.rowExpansionEnabled){rowExpandPosition=this.options.rowDef.position;rowExpandCol=_.clone(this.customColumnDefs.__expand);rowExpandCol.width=this.options.rowDef.columnwidth;if(header){if(rowExpandPosition==="-1"){this.preparedHeaderData.push(rowExpandCol)}else if(rowExpandPosition==="0"){this.preparedHeaderData.unshift(rowExpandCol)}else{var index=_.findIndex(this.preparedHeaderData,{field:rowExpandPosition});this.preparedHeaderData.splice(index+1,0,rowExpandCol)}}this.setHeaderConfigForDefaultFields("__expand",rowExpandPosition)}if(this.options.showRowIndex){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.rowIndex)}this.setHeaderConfigForDefaultFields("rowIndex","0")}if(this.options.multiselect){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.checkbox)}this.setHeaderConfigForDefaultFields("checkbox","0")}if(!this.options.multiselect&&this.options.showRadioColumn){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.radio)}this.setHeaderConfigForDefaultFields("radio","0")}},_prepareHeaderData:function(){this.preparedHeaderData=[];$.extend(this.preparedHeaderData,this.options.colDefs);this.setDefaultColsData(true)},_generateCustomColDefs:function(){var colDefs=[],generatedColDefs={};function generateColumnDef(key){if(!generatedColDefs[key]){var colDef={type:"string",field:key};colDefs.push(colDef);generatedColDefs[key]=true}}this.options.data.forEach(function(item){_.keys(item).forEach(generateColumnDef)});this.options.colDefs=colDefs;this._prepareHeaderData()},_prepareData:function(){var data=[],colDefs=this.options.colDefs,self=this,gridData=[],pageStartIndex=self.getPageStartIndex(),isObject=this.Utils.isObject,isDefined=this.Utils.isDefined;if(!this.options.colDefs.length&&this.options.data.length){this._generateCustomColDefs()}gridData=this.options.isNavTypeScrollOrOndemand()?this.options.data.slice(pageStartIndex):this.options.data;gridData.forEach(function(item,i){var rowData=$.extend(true,{},item);colDefs.forEach(function(colDef){if(!colDef.field){return}var fields=colDef.field.split("."),text=item,j,len=fields.length,key,isArray;for(j=0;j<len;j++){key=fields[j];isArray=undefined;if(key.indexOf("[0]")!==-1){key=key.replace("[0]","");isArray=true}if(isObject(text)&&!isArray){text=_.get(text,key)}else if(isArray){text=_.get(text,key+"[0]")}else{text=undefined;break}}if(isDefined(text)){rowData[colDef.field]=text}else if(fields.length>1&&_.has(item,colDef.field)){rowData[colDef.field]=item[colDef.field]}});rowData.$$index=pageStartIndex+i+1;rowData.$$pk=self.options.isNavTypeScrollOrOndemand()?pageStartIndex+i:i;data.push(rowData)});if(self.options.isNavTypeScrollOrOndemand()){if(self.options.isSearchTrigerred&&!self.emptySearch||self.options.isDatasetUpdated){self.preparedData=data}else if(self.preparedData.length){data.forEach(function(rowData,index){var rowId=pageStartIndex+index;if(self.preparedData[rowId]&&rowData.$$index===self.preparedData[rowId].$$index){self.preparedData[rowId]=rowData}else{self.preparedData.push(rowData)}})}else{self.preparedData.push(...data)}}else{self.preparedData=data}},_reselectColumns:function(){var selectedColumns=[],self=this;if(this.gridHeaderElement&&this.options.enableColumnSelection){selectedColumns=this.gridHeaderElement.find("th."+this.options.cssClassNames.selectedColumn);if(selectedColumns.length){selectedColumns.each(function(){self.columnSelectionHandler(undefined,$(this))})}}if(this.options.multiselect){this.updateSelectAllCheckboxState()}},_create:function(){$.extend(this,{dataStatus:{message:"",state:"ready"},preparedData:[],preparedHeaderData:[],dataStatusContainer:null,gridContainer:null,gridElement:null,gridHeader:null,gridBody:null,columnClickInfo:{},gridFooter:null,gridSearch:null,tableId:null,searchObj:{field:"",value:"",event:null},compiledCellTemplates:{}});this._setStatus=_.debounce(function(isCreated){this.__setStatus(isCreated)},100);this._debounceOnEnter=_.debounce(function($target,$row,quickEdit,event){this._onEnter($target,$row,quickEdit,event)},150);this.options.summaryRow=false;this.options.summaryRowDefs=[];this._prepareHeaderData();this._prepareData();this._render(true)},_setGridEditMode:function(val){if(_.isFunction(this.options.setGridEditMode)){this.options.setGridEditMode(val)}},_refreshGrid:function(){this._prepareHeaderData();this._prepareData();this._render();this.addOrRemoveScroll();this._setGridEditMode(false)},refreshGrid:function(){window.clearTimeout(this.refreshGridTimeout);this.refreshGridTimeout=window.setTimeout(this._refreshGrid.bind(this),50)},callRenderGridForInfiniteScroll:function(){this.gridFooter.remove();var $alwaysNewRow=this.gridElement.find("> tr.app-datagrid-row.always-new-row");if($alwaysNewRow.length){$alwaysNewRow.remove()}this._renderGrid(undefined)},refreshGridData:function(){this._prepareData();if(!this.options.isNavTypeScrollOrOndemand()){this.gridFooter.remove();this._renderGrid()}else{this.callRenderGridForInfiniteScroll()}this._reselectColumns();this.addOrRemoveScroll();this._setGridEditMode(false);this.toggleNewRowActions(false)},setDefaultRowData:function(rowData){_.forEach(this.preparedHeaderData,function(colDef){rowData[colDef.field]=colDef.defaultvalue})},addNewRow:function(skipFocus,alwaysNewRow){var rowId=this.gridElement.find("> tr.app-datagrid-row:visible").length||99999,self=this,rowData={},$row,$gridBody,$alwaysNewRow;if(!alwaysNewRow&&_.isFunction(this.options.beforeRowInsert)){this.options.beforeRowInsert()}$gridBody=this.gridElement;$alwaysNewRow=$gridBody.find("> tr.app-datagrid-row.always-new-row");if($alwaysNewRow.length){this.setFocusOnElement(undefined,$alwaysNewRow);if(this.options.editmode===this.CONSTANTS.QUICK_EDIT){var $qTarget=$alwaysNewRow.find("input").length>0?$($alwaysNewRow.find("input")[0]):null;if($qTarget!==null){var event=$.Event("keydown");event.which=13;$qTarget.trigger(event)}}return}rowData.$index=rowId;rowData.$$pk=rowId;if(this.options.editmode!==this.CONSTANTS.FORM&&this.options.editmode!==this.CONSTANTS.DIALOG){$row=$(this._getRowTemplate(rowData,rowData.$index));if(!this.preparedData.length){this.setStatus("ready",this.dataStatus.ready)}if(this.options.formPosition==="top"){$gridBody.prepend($row)}else{$gridBody.append($row)}this._appendRowActions($row,true,rowData);this.attachEventHandlers($row);if(alwaysNewRow||this.options.editmode!==this.CONSTANTS.QUICK_EDIT){$row.find(".delete-row-button").hide();if(alwaysNewRow){$row.find(".edit-row-button").hide()}}this._findAndReplaceCompiledTemplates();if(alwaysNewRow){this.setDefaultRowData(rowData);$row.addClass("always-new-row").addClass("row-editing");this.options.runInNgZone(function(){self.makeRowEditable($row,rowData,true)})}else{$row.trigger("click",[undefined,{action:"edit",operation:"new",skipFocus:skipFocus}])}this.updateSelectAllCheckboxState();this.addOrRemoveScroll();this.options.timeoutCall(function(){self.setColGroupWidths()},100)}},addLoadMoreBtn:function(onDemandMsg,loadingdatamsg,cb,infScroll){var $btnEl;if(!this.options.isLastPage||infScroll){var self=this;var $parenEl=$('<div class="on-demand-datagrid"><a class="app-button btn btn-block on-demand-load-btn"></a></div>');$btnEl=$parenEl.find("a");$btnEl.append(onDemandMsg);this.element.find(".app-grid-header-inner").append($parenEl);if(infScroll){if(this.element.find(".on-demand-load-btn").length){this.element.find(".on-demand-load-btn").text(this.options.viewlessmessage)}}$btnEl.on("click",function(e){var lastPage=self.options.getCurrentPage()==self.options.getPageCount();if(!lastPage){self.showLoadingIndicator(loadingdatamsg,false)}if(!self.options.showviewlessbutton){$btnEl.hide()}if(infScroll){if(lastPage){self.element.find(".on-demand-datagrid").remove()}}if(lastPage&&self.options.showviewlessbutton){$btnEl.hide();self.renderTableOnViewLess=true;self.renderPaginationOnViewLess=true;self.options.enableNavigation();self._renderGrid()}if(cb&&typeof cb==="function"){cb(e)}})}},showLoadingIndicator:function(loadingdatamsg,infScroll){var hasLoadingEl=this.element.find(".loading-data-msg");var $dataGrid=this.element.find(".on-demand-datagrid");if(hasLoadingEl.length&&!infScroll){hasLoadingEl.show()}else if(infScroll&&$dataGrid.length){$dataGrid.show()}else{var $loadingEl=$('<div class="loading-data-msg spin-icon-in-center"><span><i class="app-icon panel-icon fa-spin '+this.options.loadingicon+'"></i>'+'<span class="sr-only">Loading</span><span class="loading-text"></span></span></div>');$loadingEl.find(".loading-text").html(loadingdatamsg);if($dataGrid.length){$dataGrid.append($loadingEl)}else{var gridEl=$('<div class="on-demand-datagrid">'+$loadingEl[0].outerHTML+"</div>");this.element.find(".app-grid-header-inner").append(gridEl)}}},hideLoadingIndicator:function(showLoadBtn,infScroll){if(!showLoadBtn&&!infScroll){this.element.find(".loading-data-msg").hide();this.element.find(".on-demand-load-btn").text(this.options.ondemandmessage);this.element.find(".on-demand-load-btn").show()}else if(this.options.getCurrentPage()==this.options.getPageCount()&&this.options.showviewlessbutton){this.element.find(".on-demand-load-btn").show().text(this.options.viewlessmessage);this.element.find(".loading-data-msg").hide();if(infScroll){if(!this.element.find(".on-demand-load-btn").length){this.options.addLoadMoreBtn()}this.element.find(".loading-data-msg").hide()}}else{this.element.find(".on-demand-datagrid").hide()}},getSelectedRows:function(){this.getSelectedColumns();var selectedRowsData=[],self=this;this.preparedData.forEach(function(data,i){if(data._selected){selectedRowsData.push(self.options.data[i])}});return selectedRowsData},selectRows:function(rows){var self=this;var _rows=_.isArray(rows)?rows.slice():[rows];self.gridElement.find("tr.app-datagrid-row").each(function(index){if(self.preparedData[index]&&self.preparedData[index]._selected===true){$(this).trigger("click",[$(this),{skipSingleCheck:true}])}});if(_.isArray(_rows)){_.forEach(_rows,function(row){self.selectRow(row,true)})}else{self.selectRow(_rows,true)}},toggleRowFilter:function(show){if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN&&this.gridSearch){if(show){this.gridSearch.show()}else{this.gridSearch.hide()}}},setColGroupWidths:function(){var self=this,headerCols=this.options.isMobile?this.tableContainer.find("col"):this.tableContainer.find("col"),bodyCols=this.tableContainer.find("col"),headerCells=this.options.showHeader?this.gridContainer.find("th.app-datagrid-header-cell"):this.gridElement.find("tr.app-datagrid-row").first().find("td"),colLength=this.preparedHeaderData.length,scrollLeft=this.gridElement.parent().prop("scrollLeft");if(!headerCols.length&&!headerCells.length){return}this._setColSpan(this.options.headerConfig);this.toggleRowFilter();var definedColWidth=0;var colsLen=headerCols.length;headerCols.each(function(){var eachColWidth=$(this).width();if(eachColWidth){definedColWidth=definedColWidth+eachColWidth;colsLen=colsLen-1}});headerCells.each(function(){var id=Number($(this).attr("data-col-id")),colDef=self.preparedHeaderData[id],$headerCell=self.gridContainer.find('th[data-col-id="'+id+'"]'),$tdCell=self.gridElement.find('td.app-datagrid-cell[data-col-id="'+id+'"]'),$footCell=self.tableContainer.find('tfoot tr.app-datagrid-row td.app-datagrid-cell[data-col-id="'+id+'"]'),$headerCol=$(headerCols[id]),$bodyCol=$(bodyCols[id]),definedWidth,width;if(!colDef){return}definedWidth=colDef.width;if(!_.isUndefined(colDef.show)&&!colDef.show){$headerCell.hide();$tdCell.hide();$headerCol.hide();$bodyCol.hide();$footCell.hide()}else{$headerCell.show();$tdCell.show();$headerCol.show();$bodyCol.show();$footCell.show()}if($headerCol.length&&$headerCol[0].style.width==="90px"){width=_.isUndefined(definedWidth)?"":definedWidth;$headerCol.css("width",width);$bodyCol.css("width",width)}});headerCells.each(function(){var $header=$(this),id=Number($header.attr("data-col-id")),colDef=self.preparedHeaderData[id],definedWidth,width,tempWidth,$headerCol;if(!colDef){return}definedWidth=colDef.width;if(!_.isUndefined(colDef.show)&&!colDef.show){width=0}else{if($header.hasClass("grid-col-small")){width=50}else{if(_.isUndefined(definedWidth)||definedWidth===""||_.includes(definedWidth,"%")){$headerCol=$(headerCols[id]);if($headerCol.length){tempWidth=$headerCol[0].style.width;if(tempWidth===""||tempWidth==="0px"||tempWidth==="90px"||_.includes(tempWidth,"%")){width=$header.width();if(width<=0){var currentNode=$header;var elemWidth=width;var padding=0;while(elemWidth<=0){currentNode=currentNode.parent();elemWidth=currentNode.width();if(currentNode.find("table").length&¤tNode.prop("style")){padding=padding+parseFloat(currentNode.css("padding-left"))+parseFloat(currentNode.css("padding-right"))}}if(elemWidth>0){if(padding){elemWidth=elemWidth-padding}if(_.includes(tempWidth,"%")){var widthPercent=parseInt(tempWidth);var pixelWidth=elemWidth*(widthPercent/100);width=pixelWidth}else{var parentWidth=definedColWidth&&definedColWidth>0?elemWidth-definedColWidth:elemWidth;var totalCols=colsLen?colsLen:headerCols.length;width=parentWidth/totalCols;width=width>90?colLength===id+1?width-17:width:90}}else{width=width>90?colLength===id+1?width-17:width:90}}else{width=width>90?colLength===id+1?width-17:width:90}}else{width=tempWidth}}}else{width=definedWidth}}}$(headerCols[id]).css("width",width);$(bodyCols[id]).css("width",width)});this.toggleRowFilter(true);this.gridElement.parent().prop("scrollLeft",scrollLeft);this.gridHeaderElement.parent().prop("scrollLeft",scrollLeft)},getSelectedColumns:function(){var selectedColsData={},headerData=[],self=this,multiSelectColIndex,radioColIndex,colIndex;$.extend(headerData,this.preparedHeaderData);if(this.options.multiselect){headerData.some(function(item,i){if(item.field==="checkbox"){multiSelectColIndex=i;return true}});headerData.splice(multiSelectColIndex,1)}else if(this.options.showRadioColumn){headerData.some(function(item,i){if(item.field==="radio"){radioColIndex=i;return true}});headerData.splice(radioColIndex,1)}if(this.options.showRowIndex){headerData.some(function(item,i){if(item.field==="rowIndex"){colIndex=i;return true}});headerData.splice(colIndex,1)}headerData.forEach(function(colDef){var field=colDef.field;if(colDef.selected){selectedColsData[field]={colDef:colDef,colData:self.options.data.map(function(data){return data[field]})}}});return selectedColsData},_setOption:function(key,value){this._super(key,value);switch(key){case"showHeader":this._toggleHeader();this._toggleSearch();this.setColGroupWidths();this.addOrRemoveScroll();break;case"filtermode":this._toggleSearch();break;case"searchLabel":if(this.gridSearch){this.gridSearch.find('[data-element="dgSearchText"]').attr("placeholder",value);this.gridSearch.find('[data-element="dgSearchButton"]').attr("title",value)}break;case"selectFirstRow":this.selectFirstRow(value);break;case"data":if(!this.isResetSortIconsDone){this.setSortIconDefault()}this.refreshGridData();break;case"dataStates":if(this.dataStatus.state==="nodata"){this.setStatus("nodata",this.dataStatus.nodata)}else if(this.dataStatus.state==="loading"){this.setStatus("loading")}break;case"loadingicon":this.dataStatusContainer.find("i").removeClass().addClass(this.options.loadingicon);break;case"colDefs":if(this.options.isNavTypeScrollOrOndemand()&&this.options.isNextPageData){this.tableContainer.find("colgroup").remove();this._prepareHeaderData();this.setColGroupWidths();this._renderHeader();this._renderSearch();this.attachEventHandlers(this.gridElement);this._reselectColumns();this.addOrRemoveScroll();break}case"multiselecttitle":case"multiselectarialabel":case"radioselecttitle":case"radioselectarialabel":case"multiselect":case"showRadioColumn":case"isrowselectable":case"rowActions":case"filterNullRecords":case"showRowIndex":this.refreshGrid();break;case"cssClassNames":var gridClass=this.options.cssClassNames.gridDefault+" "+this.options.cssClassNames.grid;if(this.options.rowExpansionEnabled){gridClass=gridClass+" "+this.options.cssClassNames.gridRowExpansionClass}this.tableContainer.attr("class",gridClass);if(this.options.spacing==="condensed"){this._toggleSpacingClasses("condensed")}break;case"spacing":this._toggleSpacingClasses(value);break;case"messages":this.gridSearch&&this.gridSearch.find("option.placeholder").text(value&&value.selectField);break}},getOptions:function(){return this.options},_toggleHeader:function(){if(this.gridHeaderElement){this.gridHeaderElement.empty()}if(this.tableContainer){this.tableContainer.find("colgroup").remove();this.tableContainer.find("thead").remove()}this.setDefaultColsData();if(this.options.showHeader){this._renderHeader()}},_toggleSearch:function(){if(this.gridSearch){this.gridSearch.remove()}if(this.options.filtermode===this.CONSTANTS.SEARCH){this._renderSearch()}else if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN){this._renderRowFilter();this.setColGroupWidths()}},selectFirstRow:function(value,visible){var $row,id;if(visible&&this.gridElement.find("tr").is(":visible")){this.__setStatus();$row=this.gridElement.find("tr.app-datagrid-row:visible:not(.always-new-row)").first()}else{$row=this.gridElement.find("tr.app-datagrid-row:not(.always-new-row)").first()}id=$row.attr("data-row-id");if($row.length&&this.preparedData.length){this.preparedData[id]._selected=!value;$row[0].click()}},selectRow:function(row,value){var rowIndex=_.isNumber(row)?row:this.Utils.getObjectIndex(this.options.data,row),selector,$row;if(rowIndex!==-1){selector="tr.app-datagrid-row[data-row-id="+rowIndex+"]";$row=this.gridElement.find(selector);if($row.length){this.preparedData[rowIndex]._selected=!value}if(value){$row.trigger("click")}else{this.toggleRowSelection($row,value);this.options.callOnRowDeselectEvent(this.preparedData[rowIndex])}}},deselectRow:function(row){this.selectRow(row,false)},toggleRowSelection:function($row,selected,e,isSelectAll){if(!$row.length){return}var rowId=$row.attr("data-row-id"),$checkbox,$radio;if(!this.preparedData[rowId]){return}this.preparedData[rowId]._selected=selected;if(selected){$row.addClass("active")}else{$row.removeClass("active")}if(this.options.showRadioColumn){$radio=$row.find("td input[rowSelectInput]:radio:not(:disabled)");$radio.prop("checked",selected);this.preparedData[rowId]._checked=selected}if(this.options.multiselect){$checkbox=$row.find('td input[name="gridMultiSelect"]:checkbox:not(:disabled)');$checkbox.prop("checked",selected);$checkbox.siblings("span.sr-only").text(selected?"Row Selected":"Row Deselected");this.preparedData[rowId]._checked=selected;if(!isSelectAll){this.updateSelectAllCheckboxState()}}else{this._deselectPreviousSelection($row,e)}},updateSelectAllCheckboxState:function(){if(!this.options.showHeader||!this.options.multiselect){return}this.__setStatus();var $headerCheckbox=this.gridHeaderElement.find("th.app-datagrid-header-cell input:checkbox"),$tbody=this.gridElement,checkedItemsLength=$tbody.find('tr.app-datagrid-row:visible input[name="gridMultiSelect"]:checkbox:checked').length,visibleRowsLength=$tbody.find("tr.app-datagrid-row:visible").length;if(!visibleRowsLength){$headerCheckbox.prop("checked",false);return}if(checkedItemsLength===visibleRowsLength){$headerCheckbox.prop("checked",true)}else{$headerCheckbox.prop("checked",false)}},rowClickHandlerOnCapture:function(e,$row,options){if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable){if(Number(this.getColInfo(e))){e.stopPropagation();this.closeDropdown(e);return}}}$row=$row||$(e.target).closest("tr.app-datagrid-row");var gridRow=this.gridElement.find($row);if(gridRow.length&&gridRow.closest("tbody").attr("id")===this.gridElement.attr("id")){var rowId=$row.attr("data-row-id");var rowData=this.preparedData[rowId];var data=this.options.data[rowId];this.options.assignSelectedItems(data,e,{rowId:rowId,_selected:rowData?._selected})}},rowSelectionHandler:function(e,$row,options){if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable){if(Number(this.getColInfo(e))){e.stopPropagation();this.closeDropdown(e);return}}}options=options||{};var rowId,rowData,data,selected,self=this,action=options.action,$target=$(e.target),isQuickEdit=this.options.editmode===this.CONSTANTS.QUICK_EDIT;function callRowSelectionEvents(){if(selected&&_.isFunction(self.options.onRowSelect)){self.options.onRowSelect(data,e)}if(!selected&&_.isFunction(self.options.onRowDeselect)){self.options.onRowDeselect(data,e)}}$row=$row||$target.closest("tr.app-datagrid-row");if(action||isQuickEdit&&($target.hasClass("app-datagrid-cell")||$target.closest("td.app-datagrid-cell").length)&&!$row.hasClass("always-new-row")){options.action=options.action||"edit";if(options.operation==="new"||self.options.actionsEnabled.edit){self.toggleEditRow(e,options)}if(options.skipSelect){return}}rowId=$row.attr("data-row-id");rowData=this.preparedData[rowId];data=this.options.data[rowId];selected=rowData&&rowData._selected||false;if(!options.skipSingleCheck&&($row.hasClass("active")&&!this.options.multiselect||!rowData)){if(!isQuickEdit&&options.operation!=="new"){callRowSelectionEvents()}return}this.options.callOnRowClickEvent(data,e);selected=!selected;this.options.assignSelectedItems(data,e,{rowId:rowId,_selected:selected});this.toggleRowSelection($row,selected,e);callRowSelectionEvents()},rowDblClickHandler:function(e,$row){e.stopPropagation();$row=$row||$(e.target).closest("tr.app-datagrid-row");var rowData,rowId=$row.attr("data-row-id");rowData=this.preparedData[rowId];if(!rowData){return}if(_.isFunction(this.options.onRowDblClick)){this.options.onRowDblClick(rowData,e)}},closePopover:function(){this.options.closePopover(this.element)},closeDropdown:function(e){this.element[0].querySelectorAll(".app-menu").forEach(el=>{if(el&&el.classList.contains("open")&&el.getAttribute("autoclose")==="outsideClick"&&e?.originalEvent?.isTrusted&&e.target!==el.querySelector("[dropdowntoggle]")&&e.target.parentElement!==el.querySelector("[dropdowntoggle]")){el?.widget?.bsDropdown?.hide()}})},headerClickHandler:function(e){var $th=$(e.target).closest("th.app-datagrid-header-cell"),id=$th.attr("data-col-id");this.closePopover();this.options.onHeaderClick(this.preparedHeaderData[id],e)},columnSelectionHandler:function(e,$headerCell){if(e){e.stopImmediatePropagation()}var $th=e?$(e.target).closest("th.app-datagrid-header-cell"):$headerCell,id=$th.attr("data-col-id"),colDef=this.preparedHeaderData[id],field=colDef.field,selector='td[data-col-id="'+id+'"]',$column=this.gridElement.find(selector),selected=$column.data("selected")||false,colInfo={colDef:colDef,data:this.options.data.map(function(data){return data[field]}),sortDirection:this._getColumnSortDirection(colDef.field)},selectedClass=this.options.cssClassNames.selectedColumn;selected=!selected;colDef.selected=selected;$column.data("selected",selected);if(selected){$column.addClass(selectedClass);$th.addClass(selectedClass);if(_.isFunction(this.options.onColumnSelect)&&e){this.options.onColumnSelect(colInfo,e)}}else{$column.removeClass(selectedClass);$th.removeClass(selectedClass);if(_.isFunction(this.options.onColumnDeselect)&&e){this.options.onColumnDeselect(colInfo,e)}}},getTextValue:function(fieldName,alwaysNewRow){return this.options.getFieldValue(alwaysNewRow?fieldName+"_new":fieldName)},getUploadedFiles:function($el,fieldName){return _.get(document.forms,[$el.find("form").attr("name"),fieldName,"files",0])},isDataModified:function($editableElements,rowData,alwaysNewRow){var isDataChanged=false,self=this;function getEpoch(val){return val?moment(val).valueOf():val}$editableElements.each(function(){var $el=$(this),colId=$el.attr("data-col-id"),colDef=self.preparedHeaderData[colId],text=self.getTextValue(colDef.field,alwaysNewRow),originalData=_.get(rowData,colDef.field);if(colDef.editWidgetType==="upload"){isDataChanged=self.getUploadedFiles($el,colDef.field)instanceof File}else{if(!self.Utils.isDefined(text)&&(originalData===null||originalData===undefined)){isDataChanged=false}else{if(colDef.editWidgetType==="datetime"){isDataChanged=!(getEpoch(originalData)===getEpoch(text))}else{isDataChanged=!(originalData==text)}}}if(isDataChanged){return!isDataChanged}});return isDataChanged},focusActiveRow:function(){this.gridElement.find("tr.app-datagrid-row.active").focus()},focusNewRow:function(){var newRow=this.gridElement.find("tr.always-new-row");var newRowInputs=newRow&&newRow.find("input")||[];newRowInputs.length&&newRowInputs[0].focus()},disableActions:function(val){var $deleteBtns=this.gridElement.find(".delete-row-button"),$editBtns=this.gridElement.find(".edit-row-button");if(val){$editBtns.addClass("disabled-action");$deleteBtns.addClass("disabled-action")}else{$editBtns.removeClass("disabled-action");$deleteBtns.removeClass("disabled-action")}},setFocusOnElement:function(e,$el,skipDelay){var $firstEl,$target=e&&$(e.target),$focusEl;if($target&&$target.hasClass("app-datagrid-cell")){$firstEl=$target.find("input")}else{if(!$el){$el=$target.closest("tr.app-datagrid-row").find("td.cell-editing")}else if($el.hasClass("app-datagrid-row")){$el=$el.find("td.cell-editing")}$firstEl=$($el).first().find("input");if(!$firstEl.length){$firstEl=$($el).first().find("textarea")}if(!$firstEl.length){$firstEl=$($el).first().find("select")}if(!$(e.target).find("td").first().hasClass("td.cell-editing")){$firstEl=$el.find("td")}}if($firstEl.length){$focusEl=$firstEl.first();if(skipDelay){$focusEl.focus();$focusEl.select()}else{this.options.timeoutCall(function(){$focusEl.focus();$focusEl.select()})}}},removeNewRow:function($row){this.disableActions(false);this._setGridEditMode(false);if($row.hasClass("always-new-row")){return}$row.attr("data-removed",true);$row.remove();if(!this.preparedData.length){this.setStatus("nodata",this.dataStatus.nodata)}this.addOrRemoveScroll();this.toggleNewRowActions(false)},saveRow:function(callBack){this.gridElement.find("tr.app-datagrid-row.row-editing:not(.always-new-row)").each(function(){$(this).trigger("click",[undefined,{action:"save",skipSelect:true,noMsg:true,success:callBack}])})},makeRowEditable:function($row,rowData,alwaysNewRow){var self=this,$originalElements=$row.find("td.app-datagrid-cell"),rowId=parseInt($row.attr("data-row-id"),10),$editableElements,_rowData=_.clone(rowData);_rowData.$index=rowId+1;this.options.removeValidations(alwaysNewRow);this.options.generateInlineEditRow(_rowData,alwaysNewRow);$originalElements.each(function(){var $el=$(this),cellText=$el.text(),id=$el.attr("data-col-id"),colDef=self.preparedHeaderData[id],value,editableTemplate;if(!colDef.readonly){value=_.get(rowData,colDef.field);editableTemplate=self.options.getInlineEditWidget(colDef.field,value,alwaysNewRow);$el.removeAttr("title");$el.removeAttr("tabindex");if(!(colDef.customExpression||colDef.formatpattern&&colDef.formatpattern!=="None")){$el.addClass("cell-editing").html(editableTemplate).data("originalText",cellText)}else{$el.addClass("cell-editing editable-expression").data("originalValue",{rowIndex:rowId,fieldName:colDef.field});$el.addClass("cell-editing editable-expression").html(editableTemplate).data("originalText",cellText)}$el.addClass("form-group");if(colDef.binding!=="rowOperations"){self.options.timeoutCall(function(){self.options.applyValidations(colDef,alwaysNewRow);if(colDef.required){$el.addClass("required-field")}})}else if(colDef.required){$el.addClass("required-field")}}});$editableElements=$row.find("td.cell-editing");$editableElements.on("click",function(e){e.stopPropagation()});$editableElements.on("keydown",function(e){if((e.which===38||e.which===40)&&(e.currentTarget&&!e.currentTarget.closest(".always-new-row"))){e.stopPropagation()}})},toggleNewRowActions:function(saveInd){var self=this,$gridActions=$(this.element).siblings("div.panel-footer, div.panel-heading").find("div.app-datagrid-actions"),$newRow=this.gridElement.find("tr.app-datagrid-row.row-editing"),$newRowButton=$gridActions.find("i.wi-plus").closest(".app-button");if(this.options.editmode===this.CONSTANTS.INLINE&&(this.options.rowActions.length===0||!_.some(this.options.rowActions,{action:"editRow($event)"}))){if(saveInd){$gridActions.append('<button type="button" wmbutton="" class="btn app-button btn-default cancelNewRow" tabindex="0" accesskey="" title="Cancel">'+'<i aria-hidden="true" class="app-icon wi wi-cancel"></i>'+'<span class="sr-only">Cancel Icon</span><span class="btn-caption">Cancel</span>'+"</button>"+'<button type="button" wmbutton="" class="btn app-button btn-primary saveNewRow" tabindex="0" accesskey="" title="Save">'+'<i aria-hidden="true" class="app-icon wi wi-done"></i>'+'<span class="sr-only">Save Icon</span><span class="btn-caption">Save</span>'+"</button>");$gridActions.find(".cancelNewRow").on("click",function(event){self.toggleEditRow(event,{action:"cancel",$row:$newRow})});$gridActions.find(".saveNewRow").on("click",function(event){self.toggleEditRow(event,{action:"save",$row:$newRow})});$newRowButton.hide()}else{$("typeahead-container").removeClass("open");$gridActions.find(".cancelNewRow").remove();$gridActions.find(".saveNewRow").remove();$newRowButton.show()}}},_isNewRow:function($row){var rowId=parseInt($row.attr("data-row-id"),10);return rowId>=this.preparedData.length||$row.hasClass("always-new-row")},toggleEditRow:function(e,options){if($(e.target).closest(".app-menu").length){return}options=options||{};this.closeDropdown(e);if(e){e.stopPropagation()}this.closePopover();var $row=options.$row||$(e.target).closest("tr.app-datagrid-row"),$editButton=$row.find(".edit-row-button"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),$deleteButton=$row.find(".delete-row-button"),rowData=_.cloneDeep(this.options.data[$row.attr("data-row-id")])||{},self=this,action,isNewRow,$editableElements,isDataChanged=false,isValid,$requiredEls,alwaysNewRow=$row.hasClass("always-new-row"),advancedEdit=self.options.editmode===self.CONSTANTS.QUICK_EDIT,editOptions={};this.options.setActionRowIndex($row.attr("data-row-id"));this.options.setLastActionPerformed(this.options.ACTIONS.EDIT);function onSaveSuccess(skipFocus,error){if(_.isFunction(options.success)){options.success(skipFocus,error)}if(!advancedEdit||self.options.actionsEnabled.edit){self.focusActiveRow()}}if($row.attr("data-removed")==="true"){return}if(options.selectRow){this.selectRow(rowData,true)}e=e||{};e.data=e.data||{};action=e.data.action||options.action;if(action==="edit"){if(this.options.editmode===this.CONSTANTS.INLINE){this.options.callLoadInlineWidgetData()}if(advancedEdit&&self.gridElement.find("tr.app-datagrid-row.row-editing:not(.always-new-row)").length){self.saveRow(function(skipFocus,error){self.editSuccessHandler(skipFocus,error,e,$row,true)});return}$row.addClass("row-editing");if(_.isFunction(this.options.beforeRowUpdate)){this.options.beforeRowUpdate(rowData,e)}if(self.options.editmode===self.CONSTANTS.FORM||self.options.editmode===self.CONSTANTS.DIALOG){return}if(options.operation==="new"){self.setDefaultRowData(rowData);self.toggleNewRowActions(true)}if(_.isFunction(this.options.onBeforeFormRender)){isValid=this.options.onBeforeFormRender(rowData,e,options.operation||action);if(isValid===false){return}}this._setGridEditMode(true);this.disableActions(true);$deleteButton.removeClass("disabled-action");this.options.runInNgZone(function(){self.makeRowEditable($row,rowData)});$editButton.addClass("hidden");$cancelButton.removeClass("hidden");$saveButton.removeClass("hidden");$editableElements=$row.find("td.cell-editing");if(!options.skipFocus&&$editableElements){this.options.timeoutCall(function(){self.setFocusOnElement(e,$editableElements)})}if(_.isFunction(this.options.onFormRender)){this.options.onFormRender($row,e,options.operation||action,$row.hasClass("always-new-row"))}}else{$editableElements=$row.find("td.cell-editing");isNewRow=self._isNewRow($row);if(action==="save"){if(isNewRow){isDataChanged=true}else{isDataChanged=this.isDataModified($editableElements,rowData,alwaysNewRow)}if(isDataChanged){$editableElements.each(function(){var $el=$(this),colId=$el.attr("data-col-id"),colDef=self.preparedHeaderData[colId],fields=_.split(colDef.field,"."),text;text=self.getTextValue(colDef.field,alwaysNewRow);if(fields.length===1&&colDef.editWidgetType==="upload"){_.set(rowData,colDef.field,self.getUploadedFiles($el,colDef.field))}else{text=(fields.length===1||isNewRow)&&text===""?undefined:text;if(self.Utils.isDefined(text)){text=text==="null"?null:text;if(text===null){if(fields.length>1){_.set(rowData,fields[0],text)}else{if(!isNewRow){_.set(rowData,colDef.field,"")}}}else{_.set(rowData,colDef.field,text)}}else{if(fields.length===1&&!isNewRow){_.set(rowData,colDef.field,text)}}}});if($editableElements.find(".ng-pending").length>0){setTimeout(this.toggleEditRow.bind(this,e,options),200);return}$requiredEls=$editableElements.find(".ng-invalid");if($requiredEls.length>0){$requiredEls.each(function(index){var $invalidTd=$(this).closest("td.app-datagrid-cell");if(index===0){$invalidTd.find("[focus-target]").focus()}self.options.setTouched($invalidTd.find("[formcontrolname]").attr("formcontrolname"))});if(_.isFunction(options.success)){options.success(false,true)}return}if(isNewRow&&advancedEdit&&_.isEmpty(rowData)){self.removeNewRow($row);if(_.isFunction(options.success)){options.success(false,undefined,true)}return}if(isNewRow){if(_.isFunction(this.options.onBeforeRowInsert)){isValid=this.options.onBeforeRowInsert(rowData,e,editOptions);if(isValid===false){return}}this.options.onRowInsert(rowData,e,onSaveSuccess,editOptions);self.toggleNewRowActions(false);if(!$row.hasClass("always-new-row")&&self.options.isNavTypeScrollOrOndemand()){self.removeNewRow($row)}}else{if(_.isFunction(this.options.onBeforeRowUpdate)){isValid=this.options.onBeforeRowUpdate(rowData,e,editOptions);if(isValid===false){return}}this.options.afterRowUpdate(rowData,e,onSaveSuccess,editOptions)}}else{this.cancelEdit($row);if(!options.noMsg){this.options.noChangesDetected()}if(_.isFunction(options.success)){options.success(false)}}}else{if(isNewRow){$("typeahead-container").removeClass("open");self.removeNewRow($row);return}this.cancelEdit($row)}}this.addOrRemoveScroll()},cancelEdit:function($row){var self=this,$editableElements=$row.find("td.cell-editing"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),$editButton=$row.find(".edit-row-button");this.options.clearActionRowIndex();this.disableActions(false);$row.removeClass("row-editing");$editableElements.off("click");$editableElements.each(function(){var $el=$(this),value=$el.data("originalValue");$el.attr("tabindex",0);$el.removeClass("datetime-wrapper cell-editing required-field form-group");if(!value){$el.text($el.data("originalText")||"");$el.attr("title",$el.text())}else{$el.html(self.options.getCustomExpression(value.fieldName,value.rowIndex))}});$("typeahead-container").removeClass("open");$editButton.removeClass("hidden");$cancelButton.addClass("hidden");$saveButton.addClass("hidden");this._setGridEditMode(false)},closeEditedRow:function(){var $row=this.gridElement.find("tr.app-datagrid-row.row-editing");if($row.length){if(this._isNewRow($row)){this.removeNewRow($row)}else{this.cancelEdit($row)}}},hideRowEditMode:function($row){if($row.hasClass("always-new-row")&&this.options.isNavTypeScrollOrOndemand()){this.resetNewRow($row);return}var $editableElements=$row.find("td.cell-editing"),$editButton=$row.find(".edit-row-button"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),self=this;$row.removeClass("row-editing");$editableElements.off("click");this.disableActions(false);this._setGridEditMode(false);$editableElements.each(function(){var $el=$(this),value=$el.data("originalValue"),text,colDef;$el.attr("tabindex",0);$el.removeClass("datetime-wrapper cell-editing required-field form-group");if(!value){colDef=self.preparedHeaderData[$el.attr("data-col-id")];text=self.getTextValue(colDef.field);$el.text(self.Utils.isDefined(text)?text:"");$el.attr("title",$el.text())}else{$el.html(self.options.getCustomExpression(value.fieldName,value.rowIndex))}});$editButton.removeClass("hidden");$cancelButton.addClass("hidden");$saveButton.addClass("hidden");this.addOrRemoveScroll()},deleteRow:function(e){e.stopPropagation();var $row=$(e.target).closest("tr.app-datagrid-row"),rowId=$row.attr("data-row-id"),rowData=this.options.data[rowId],isNewRow=this._isNewRow($row),className,isActiveRow,isValid,options={},self=this;this.options.setActionRowIndex(rowId);this.options.setLastActionPerformed(this.options.ACTIONS.DELETE);if(_.isFunction(this.options.beforeRowDelete)){this.options.beforeRowDelete(rowData,e)}if(isNewRow){this.disableActions(false);this._setGridEditMode(false);$row.attr("data-removed",true);$row.remove();if(!this.preparedData.length){this.setStatus("nodata",this.dataStatus.nodata)}this.addOrRemoveScroll();return}if(_.isFunction(this.options.onBeforeRowDelete)){isValid=this.options.onBeforeRowDelete(rowData,e,options);if(isValid===false){return}}if(_.isFunction(this.options.onRowDelete)){className=this.options.cssClassNames.deleteRow;isActiveRow=$row.attr("class").indexOf("active")!==-1;if(isActiveRow){$row.removeClass("active")}$row.addClass(className);this.options.onRowDelete(rowData,function(){if(isActiveRow){$row.addClass("active")}$row.removeClass(className);self.addOrRemoveScroll()},e,function(skipFocus,error){if(self.options.isNavTypeScrollOrOndemand()){var rowId=+$(e.target).closest("tr.app-datagrid-row").attr("data-row-id");var $row=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowId+'"]');self.options.setDeletedRowIndex(rowId);self.preparedData.splice(rowId,1);self.options.data.splice(rowId,1);self.gridElement.find("tr.app-datagrid-row:gt("+rowId+")").each(function(index,row){if(!$row.is(":last-child")&&!$(row).hasClass("always-new-row")){$(row).attr("data-row-id",rowId);self.preparedData[rowId].$$pk--;self.preparedData[rowId].$$index--;self.preparedData[rowId].$index--;rowId++}});$row.remove()}if(self.options.editmode!==self.CONSTANTS.QUICK_EDIT||!($(e.target).hasClass("delete-row-button")||self.Utils.isDeleteKey(e))){return}self.__setStatus();var rowID,$nextRow;if(error){return}rowID=+$(e.target).closest("tr.app-datagrid-row").attr("data-row-id");$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if(!$nextRow.length){$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+(rowID-1)+'"]')}$nextRow.trigger("click",[undefined,{action:"edit",skipFocus:skipFocus}])},options)}},deleteRowAndUpdateSelectAll:function(e){this.deleteRow(e);this.updateSelectAllCheckboxState()},_deselectPreviousSelection:function($row,e){var selectedRows=this.gridElement.find("tr.app-datagrid-row.active"),rowId=$row.attr("data-row-id"),self=this;selectedRows.each(function(){var id=$(this).attr("data-row-id"),preparedData=self.preparedData[id];if(id!==rowId&&preparedData){$(this).find("input[rowSelectInput]:radio").prop("checked",false);preparedData._selected=preparedData._checked=false;$(this).removeClass("active");self.options.callOnRowDeselectEvent(preparedData,e)}})},resetSortIcons:function($el){this.isResetSortIconsDone=true;var $sortContainer;if(!$el&&this.gridHeaderElement){$sortContainer=this.gridHeaderElement.find(".sort-buttons-container.active");$el=$sortContainer.find("i.sort-icon");$sortContainer.removeClass("active")}$el.removeClass("desc asc").removeClass(this.options.cssClassNames.descIcon).removeClass(this.options.cssClassNames.ascIcon)},setSortIconDefault:function(){const sortInfo=this.options.sortInfo,$e=this.tableContainer,$th=$e.find("[data-col-field='"+sortInfo.field+"']"),$sortContainer=$th.find(".sort-buttons-container"),$sortIcon=$sortContainer.find("i.sort-icon"),direction=sortInfo.direction;if(direction==="asc"){$sortIcon.addClass(direction+" "+this.options.cssClassNames.ascIcon);$sortContainer.addClass("active")}else if(direction==="desc"){$sortIcon.addClass(direction+" "+this.options.cssClassNames.descIcon);$sortContainer.addClass("active")}},sortHandler:function(e){e.stopImmediatePropagation();if($(e.target).hasClass("header-data")&&this.options.enableColumnSelection){this.headerClickHandler(e)}var $e=$(e.target),$th=$e.closest("th.app-datagrid-header-cell"),id=$th.attr("data-col-id"),$sortContainer=$th.find(".sort-buttons-container"),$sortIcon=$sortContainer.find("i.sort-icon"),direction=$sortIcon.hasClass("asc")?"desc":"asc",sortInfo=this.options.sortInfo,$previousSortMarker=this.gridHeaderElement.find(".sort-buttons-container.active"),field=$th.attr("data-col-field"),$previousSortedColumn,$previousSortIcon,colId,colDef;this.resetSortIcons($sortIcon);$sortIcon.addClass(direction);if(direction==="asc"){$sortIcon.addClass(this.options.cssClassNames.ascIcon);$sortContainer.addClass("active")}else if(direction==="desc"){$sortIcon.addClass(this.options.cssClassNames.descIcon);$sortContainer.addClass("active")}if($previousSortMarker.length){$previousSortedColumn=$previousSortMarker.closest("th.app-datagrid-header-cell");colId=$previousSortedColumn.attr("data-col-id");colDef=this.preparedHeaderData[colId];$previousSortIcon=$previousSortMarker.find("i.sort-icon");if(colDef.field!==field){$previousSortMarker.removeClass("active");this.resetSortIcons($previousSortIcon)}colDef.sortInfo={sorted:false,direction:""}}sortInfo.direction=direction;sortInfo.field=this.preparedHeaderData&&this.preparedHeaderData[e.currentTarget.getAttribute("data-col-id")].sortby||field;sortInfo.sortBy=this.preparedHeaderData&&this.preparedHeaderData[e.currentTarget.getAttribute("data-col-id")].sortby?field:"";if(direction!==""){this.preparedHeaderData[id].sortInfo={sorted:true,direction:direction}}this._setGridEditMode(false);this.closeEditedRow();this.options.sortHandler.call(this,this.options.sortInfo,e,"sort")},processUpDownKeys:function(event,$row,direction){var self=this;var rowData=$row.find("input").val();if($row.hasClass("row-editing")&&self.options.editmode===self.CONSTANTS.QUICK_EDIT&&rowData){self.toggleEditRow(event,{action:"save",noMsg:true,success:function(skipFocus,error){self.editSuccessHandler(skipFocus,error,event,$row,true,direction)}})}else{$row=direction==="down"?$row.next():$row.prev();if(this.options.rowExpansionEnabled&&!$row.is(":visible")){$row=direction==="down"?$row.next():$row.prev()}$row.focus()}},resetNewRow:function($row){var rowData={},self=this;this.options.clearForm(true);self.setDefaultRowData(rowData);$row.find("[data-field-name]").each(function(){var $input=$(this),fieldName=$input.attr("data-field-name")+"_new";self.options.setFieldValue(fieldName,rowData[$input.attr("data-field-name")]||"")});self.options.safeApply();self.setFocusOnElement(undefined,$row,true)},_onEnter:function($target,$row,quickEdit,event){var self=this;if($target.is("button")){return}if(quickEdit&&$target.hasClass("app-datagrid-row")&&!$target.hasClass("row-editing")){$row.trigger("click",[undefined,{action:"edit"}])}else{if($row.hasClass("row-editing")&&$target.closest("[data-field-name]").length){const $editingRow=$row;$target.blur();self.toggleEditRow(event,{action:"save",success:function(skipFocus,error){if(error){$target.focus()}else{if(!quickEdit){self.focusActiveRow()}self.options.timeoutCall(function(){if(quickEdit){var rowId=$editingRow[0]?.getAttribute("data-row-id");if($editingRow.hasClass("always-new-row")){rowId=self.gridElement[0].querySelector("tr.always-new-row")?.getAttribute("data-row-id")-1}var matchingRow=self.gridElement[0].querySelector("tr[data-row-id='"+rowId+"']");if($(matchingRow).hasClass("always-new-row")){return}if(matchingRow){if(!self.options.multiselect){$(self.gridElement).find("tr.app-datagrid-row.active").removeClass("active")}matchingRow.classList.remove("active");self.hideRowEditMode($(matchingRow))}}self.focusNewRow()},400)}}})}else{$row.trigger("click");if(quickEdit&&$target.hasClass("always-new-row")&&$target.hasClass("row-editing")){self.focusNewRow()}}}if(!$target.is("button")){event.stopPropagation()}},onKeyDown:function(event){var $target=$(event.target),$row=$target.closest("tr.app-datagrid-row"),self=this,quickEdit=this.options.editmode===this.CONSTANTS.QUICK_EDIT,isNewRow;if(this.options.rowExpansionEnabled&&!$row.length){$row=$target.closest("tr.app-datagrid-detail-row")}if(this.Utils.isDeleteKey(event)){if(!this.options.actionsEnabled.delete||$target.is("input")||$target.hasClass("form-control")){return}this.deleteRow(event);return}if(event.which===27){isNewRow=this._isNewRow($row);if(isNewRow&&$row.hasClass("always-new-row")){$target.blur();self.resetNewRow($row)}else{$row.trigger("click",[undefined,{action:"cancel"}])}if(!isNewRow&&self.options.editmode!==this.CONSTANTS.QUICK_EDIT){$row.focus()}return}if(event.which===13){event.stopPropagation();if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT&&!$row.hasClass("row-editing")){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable&&Number(this.getColInfo(event))){return}}this._debounceOnEnter($target,$row,quickEdit,event);return}if(event.which===38){this.processUpDownKeys(event,$row,"up");return}if(event.which===40){this.processUpDownKeys(event,$row,"down")}},editSuccessHandler:function(skipFocus,error,e,$row,isSameRow,direction){var self=this,rowID,$nextRow;self.__setStatus();if(error){self.setFocusOnElement(e);return}rowID=+$row.attr("data-row-id");if(direction){rowID=direction==="down"?++rowID:--rowID;$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if($nextRow.length){$nextRow.focus()}else{$row.focus()}return}if(!isSameRow&&!_.isUndefined(isSameRow)){rowID++}$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if($nextRow.hasClass("always-new-row")){if(self.options.formPosition!=="top"||$row.hasClass("always-new-row")){self.addNewRow(skipFocus)}}else if($nextRow.length){$nextRow.trigger("click",[undefined,{action:"edit",skipFocus:skipFocus,skipSelect:self.options.multiselect}])}else if(self.options.actionsEnabled.new){self.addNewRow(skipFocus)}},isLastColumn:function($target){var $cell=$target.closest("td.app-datagrid-cell"),$editCells;if($cell.is(":last-child")){return true}if($cell.hasClass("cell-editing")){$editCells=$cell.closest("tr.app-datagrid-row").find(".cell-editing").has('> :not([disabled="disabled"])');return $cell.attr("data-col-id")===$editCells.last().attr("data-col-id")}return false},getColInfo:function(event){var column=$(event.target).closest("td.app-datagrid-cell");var colId=column.attr("data-col-id");return colId},keydownHandler:function(event){if(event&&event.key==="Enter"){this.sortHandler(event)}},attachEventHandlers:function($htm){var $header=this.gridHeaderElement,self=this;if(this.options.enableRowSelection){$htm[0].removeEventListener("click",this.rowClickHandlerOnCapture.bind(this));$htm.off();$htm[0].addEventListener("click",this.rowClickHandlerOnCapture.bind(this));$htm.on("click",this.rowSelectionHandler.bind(this));$htm.on("dblclick",this.rowDblClickHandler.bind(this));$htm.on("keydown",this.onKeyDown.bind(this))}if($header){if(this.options.enableColumnSelection){$header.find("th[data-col-selectable]").off("click",this.columnSelectionHandler.bind(this));$header.find("th[data-col-selectable]").on("click",this.columnSelectionHandler.bind(this))}else{$header.find("th[data-col-selectable]").off("click")}if(this.options.enableSort){if(this.options.enableColumnSelection){$header.find("th[data-col-sortable] .header-data").off("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable] .header-data").on("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").off("keydown",this.keydownHandler.bind(this));$header.find("th[data-col-sortable]").on("keydown",this.keydownHandler.bind(this))}else{$header.find("th[data-col-sortable]").off("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").on("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").off("keydown",this.keydownHandler.bind(this));$header.find("th[data-col-sortable]").on("keydown",this.keydownHandler.bind(this))}}else{if(this.options.enableColumnSelection){$header.find("th[data-col-sortable] .header-data").off("click")}else{$header.find("th[data-col-sortable]").off("click")}}}if(this.options.rowActions.length){$htm.find(".cancel-edit-row-button").off("click");$htm.find(".save-edit-row-button").off("click");$htm.find(".cancel-edit-row-button").on("click",{action:"cancel"},this.toggleEditRow.bind(this));$htm.find(".save-edit-row-button").on("click",{action:"save"},this.toggleEditRow.bind(this))}if(self.options.editmode===self.CONSTANTS.QUICK_EDIT){$htm.on("focus","tr.app-datagrid-row",function(e){var $row=$(e.currentTarget);if(!$row.hasClass("row-editing")){self.toggleEditRow(e,{$row:$row,action:"edit"})}});$htm.on("focusout","tr.app-datagrid-row","thead.table-header",function(e){var $target=$(e.target),$row=$target.closest("tr.app-datagrid-row"),$relatedTarget=$(e.relatedTarget),isLastColumn=self.isLastColumn($target,$relatedTarget),isTargetRowAction=$target.closest("span.actions-column").length>0,isRelatedTargetRowAction=$relatedTarget.closest("span.actions-column").length>0,isTargetGridAction=$relatedTarget.closest("div.app-datagrid-actions").length>0,isRelatedTargetGridAction=$relatedTarget.closest("div.app-datagrid-actions").length>0,invalidTargets='.row-editing:not(".always-new-row"), .row-action-button, .app-datagrid-cell, .caption, button.btn-time, button.btn-date';function isInvalidTarget(){if(!$relatedTarget.closest(".app-grid").length){return true}return $relatedTarget.is(invalidTargets)}if($relatedTarget.is("tr.app-datagrid-row")){if($relatedTarget.attr("data-row-id")===$row.attr("data-row-id")){return}}if(isRelatedTargetRowAction||$row.hasClass("danger")||isRelatedTargetGridAction||isTargetRowAction&&isRelatedTargetRowAction||isTargetRowAction&&e.relatedTarget===null||isInvalidTarget()||$relatedTarget.attr("focus-target")===""){return}if(!isTargetGridAction&&!isTargetRowAction){if(!isLastColumn||isLastColumn&&e.relatedTarget===null||$target.hasClass("file-upload")){return}}self.options.timeoutCall(function(){self.toggleEditRow(e,{action:"save",noMsg:true,success:function(skipFocus,error,isNewRow){if(!isNewRow){self.editSuccessHandler(skipFocus,error,e,$row,false)}}})})})}$htm.find('[data-identifier="rowExpansionButtons"]').off("click");$htm.find('[data-identifier="rowExpansionButtons"]').on("click",function(e){var $row=$(e.target).closest("tr.app-datagrid-row");if($(this).find(".app-button").attr("disabled")){return}self.toggleExpandRow(+$row.attr("data-row-id"),undefined,e)})},expandRow:function(rowId){this.toggleExpandRow(rowId,true)},collapseRow:function(rowId){this.toggleExpandRow(rowId,false)},hasAllClasses:function(element,classNames){return classNames&&classNames.every(cls=>element.hasClass(cls))},_collapseRow:function(e,rowData,rowId,$nextDetailRow,$icon){var self=this,$tbody=self.gridElement,$row=$($tbody.find('> tr.app-datagrid-row[data-row-id="'+rowId+'"]'));$row.removeClass(self.options.cssClassNames.expandedRowClass);$row.find("button, a").attr("aria-expanded","false").attr("aria-live","polite");if(this.options.onBeforeRowCollapse(e,rowData,rowId)===false){return}if($icon.length&&this.hasAllClasses($icon,this.options.cssClassNames.rowExpandIcon?.split(" "))){$icon.removeClass(this.options.cssClassNames.rowExpandIcon).addClass(this.options.cssClassNames.rowCollapseIcon)}$nextDetailRow.hide();this.options.onRowCollapse(e,rowData)},toggleExpandRow:function(rowId,isExpand,e){var self=this,$tbody=self.gridElement,$row=$($tbody.find('> tr.app-datagrid-row[data-row-id="'+rowId+'"]')),rowData=_.clone(self.options.data[rowId]),$nextDetailRow=$row.next("tr.app-datagrid-detail-row"),isClosed=!$nextDetailRow.is(":visible"),$icon=$row.find('[data-identifier="rowExpansionButtons"] i.app-icon'),expandRowBtn=$row.find("button, a");rowData.$index=rowId+1;if(isExpand&&!isClosed){return}if(isExpand===false&&isClosed){return}if(isClosed){$row.addClass(self.options.cssClassNames.expandedRowClass);if(self.options.rowDef.collapsetitle)expandRowBtn.attr("title",self.options.rowDef.collapsetitle);else{expandRowBtn.attr("title",expandRowBtn.attr("collapsetitle"))}$row.find("button, a").attr("aria-expanded","true");if(e&&self.preparedData[rowId]._selected){e.stopPropagation()}if(self.options.rowDef.closeothers){$tbody.find("> tr.app-datagrid-detail-row:visible").each(function(){var $otherDetailRow=$(this),$otherIcon=$otherDetailRow.prev("tr.app-datagrid-row").find('[data-identifier="rowExpansionButtons"] i.app-icon'),otherRowId=+$otherDetailRow.attr("data-row-id"),otherRowData=self.options.data[otherRowId];$otherDetailRow.hide();self._collapseRow(e,otherRowData,otherRowId,$otherDetailRow,$otherIcon)})}self.options.generateRowDetailView(e,rowData,rowId,$nextDetailRow.find("td.app-datagrid-row-details-cell .details-section"),$nextDetailRow.find("td.app-datagrid-row-details-cell .row-overlay"),function(){if($icon.length&&self.hasAllClasses($icon,self.options.cssClassNames.rowCollapseIcon?.split(" "))){$icon.removeClass(self.options.cssClassNames.rowCollapseIcon).addClass(self.options.cssClassNames.rowExpandIcon)}$nextDetailRow.show()})}else{if(self.options.rowDef.expandtitle)expandRowBtn.attr("title",self.options.rowDef.expandtitle);else{expandRowBtn.attr("title",expandRowBtn.attr("expandtitle"))}self._collapseRow(e,rowData,rowId,$nextDetailRow,$icon)}},_findAndReplaceCompiledTemplates:function(){if(!this.gridElement){return}var $compiledCells=this.gridElement.find("td[data-compiled-template]"),self=this;$compiledCells.each(function(){var $cell=$(this),id=$cell.attr("data-compiled-template");$cell.replaceWith(self.compiledCellTemplates[id])})},_renderSearch:function(){var $htm=$(this._getSearchEl()),self=this,$searchBox;function search(e){e.stopPropagation();var searchText=$htm.find('[data-element="dgSearchText"]')[0].value,$filterField=$htm.find('[data-element="dgFilterValue"]'),field=$filterField[0].value,colDefIndex=$htm.find("option:selected").attr("data-coldef-index"),colDef=self.options.colDefs[colDefIndex],type=colDef&&colDef.type?colDef.type:"";self.searchObj={field:field,value:searchText,type:type,event:e};self.options.searchHandler.call(self,self.searchObj,e,"search")}this.element.find(".form-search").remove();$htm.insertBefore(this.gridContainer);this.gridSearch=this.element.find(".form-search");$searchBox=this.gridSearch.find('[data-element="dgSearchText"]');this.gridSearch.find(".app-search-button").on("click",search);this.gridSearch.find('[data-element="dgFilterValue"]').on("change",function(e){if(self.dataStatusContainer.find(".status").text()===self.options.dataStates.nodata){search(e)}});$searchBox.on("keyup",function(e){e.stopPropagation();if(!$(this).val()){self.emptySearch=true;if(self.searchObj.value){self.searchObj.value="";search(e)}}else{self.emptySearch=false}if(e.which===13||self.options.filteronkeypress){search(e)}})},_renderRowFilter:function(){var $row=$('<tr class="filter-row"></tr>'),self=this,$headerElement=this.options.isMobile&&!this.options.showHeader?this.gridElement:this.gridHeaderElement;$headerElement.find(".filter-row").remove();this.options.generateFilterRow();this.preparedHeaderData.forEach(function(field,index){var fieldName=field.field,$th=$('<th data-col-id="'+index+'"></th>');if(!field.searchable){$row.append($th);return}$th.append(self.options.getFilterWidget(fieldName));$row.append($th)},this);if(this.options.showHeader){this.gridHeaderElement.append($row)}else{if(this.options.isMobile){$headerElement.empty().append($row)}else{$headerElement.empty().append($row)}}this.gridSearch=$headerElement.find(".filter-row")},_renderHeader:function(){var headerTemplate=this._getHeaderTemplate(),$colgroup=headerTemplate.colgroup,self=this,$header;this.gridElement.parent().scroll(function(){self.gridHeaderElement.parent().prop("scrollLeft",this.scrollLeft)});if(!this.options.showHeader){this.tableContainer.append($colgroup);this.gridHeaderElement.hide();return}else{this.gridHeaderElement.show()}$header=headerTemplate.header;function toggleSelectAll(e){var $checkboxes=$('tr.app-datagrid-row:not(.always-new-row):visible td input[name="gridMultiSelect"]:checkbox',self.gridElement),checked=this.checked,$headerCheckbox=self.gridHeaderElement.find("th.app-datagrid-header-cell input:checkbox");$headerCheckbox.siblings("span.sr-only").text(checked?"All Rows Selected":"All Rows Deselected");$checkboxes.prop("checked",checked);$checkboxes.each(function(){var $row=$(this).closest("tr.app-datagrid-row"),rowId=$row.attr("data-row-id"),rowData=self.options.data[rowId];self.toggleRowSelection($row,checked,e,true);self.options.assignSelectedItems(rowData,e,{rowId:rowId,_selected:self.preparedData[rowId]?._selected});if(!(self.options.headerselectall&&self.options.multiselect)){if(checked&&_.isFunction(self.options.onRowSelect)){self.options.onRowSelect(rowData,e)}if(!checked&&_.isFunction(self.options.onRowDeselect)){self.options.onRowDeselect(rowData,e)}}});self.options.selectAllRows(checked,e)}var headerCells=$header.find("th.app-datagrid-header-cell");var headerCols=$colgroup.find("col");headerCells.each(function(){var id=Number($(this).attr("data-col-id")),colDef=self.preparedHeaderData[id],$headerCol=$(headerCols[id]);if(!colDef){return}if(!_.isUndefined(colDef.show)&&!colDef.show){$(this).hide();$headerCol.hide()}});if(this.options.isMobile){this.tableContainer.append($colgroup)}else{this.tableContainer.append($colgroup)}$header.on("click",".app-datagrid-header-cell input:checkbox",toggleSelectAll);$header.on("keydown",".app-datagrid-header-cell input:checkbox",function(event){if(event.key==="Enter"||event.keyCode===13){event.preventDefault();const checkbox=this;setTimeout(()=>checkbox.click(),0)}});if(_.isFunction(this.options.onHeaderClick)){this.gridHeaderElement.find("th.app-datagrid-header-cell").on("click",this.headerClickHandler.bind(this));this.gridHeaderElement.find("th.app-datagrid-header-cell").on("keydown",function(e){if(e.key==="Enter"||e.keyCode===13){var $target=$(e.target);if($target.attr("data-col-field")==="checkbox"){e.preventDefault();$target.find('input[type="checkbox"]').trigger("click")}}})}if(!this.options.isMobile&&this.gridHeaderElement.length){this.gridHeaderElement.find("th[data-col-resizable]").resizable({handles:"e",minWidth:50,resize:function(evt,ui){var $colElement,$colHeaderElement,$cellElements,colIndex=+ui.helper.attr("data-col-id")+1,originalWidth=ui.helper.width(),newWidth=ui.size.width,originalTableWidth,newTableWidth;$colHeaderElement=self.tableContainer.find("colgroup > col:nth-child("+colIndex+")");$colElement=self.tableContainer.find("colgroup > col:nth-child("+colIndex+")");$cellElements=self.gridElement.find("tr.app-datagrid-row > td:nth-child("+colIndex+") > div");$colElement.width(newWidth);$colHeaderElement.width(newWidth);$cellElements.width(newWidth);$(this).css("height","auto");if(newWidth>ui.originalSize.width){originalTableWidth=self.gridHeaderElement.width();newTableWidth=originalTableWidth+newWidth-originalWidth;self.gridHeaderElement.width(newTableWidth);self.gridElement.width(newTableWidth)}self.addOrRemoveScroll();self.options.redrawWidgets()}})}if(!this.isResetSortIconsDone){this.setSortIconDefault()}},addOrRemoveScroll:function(){var gridContent=this.gridContainer.find("tbody"),gridHeader=this.gridContainer.find(".table-header");if(gridContent.scrollHeight>gridContent.clientHeight&&!this.Utils.isMac()){gridHeader.addClass("scroll-visible")}else{gridHeader.removeClass("scroll-visible")}},_handleCustomEvents:function(e,options){this.options.handleCustomEvents(e,options)},_setActionsEnabled:function(){var self=this;_.forEach(this.options.rowActions,function(def){if(_.includes(def.action,"editRow(")){self.options.actionsEnabled.edit=true}else if(_.includes(def.action,"deleteRow(")){self.options.actionsEnabled.delete=true}})},_appendRowActions:function($htm,isNewRow,rowData){var self,rowOperationsCol=this._getRowActionsColumnDef();if(this.options.rowActions.length||rowOperationsCol){this._setActionsEnabled();self=this;$htm.find("[data-identifier='actionButtons']").each(function(index){var _rowData,$row,rowId,rowIndex=index;if(isNewRow){_rowData=rowData}else{$row=$(this).closest("tr.app-datagrid-row");rowId=parseInt($row.attr("data-row-id"),10);_rowData=_.clone(self.options.data[rowId]);_rowData.$index=rowIndex+1}self.options.generateRowActions(_rowData,rowIndex);$(this).empty().append(self.options.getRowAction(rowIndex))})}},_renderGrid:function(isCreated){var $htm,isScrollorOnDemand=this.options.isNavTypeScrollOrOndemand(),pageStartIndex=this.getPageStartIndex();$("table.table-bordered").parents(".app-grid-header-inner").addClass("table_border");if(isScrollorOnDemand){var $tbody=this.gridElement;var template=this._getGridTemplate();$htm=$(template);if(template&&!$tbody.length){this.gridElement.append($htm)}}else{var templates=this._getGridTemplate();$htm=$(templates);if(templates){this.gridElement.append($htm)}}if(this.options.summaryRow){var $summaryRowHtm=$(this._getSummaryRowTemplate());this.tableContainer.find("tfoot").remove();if(this.options.data.length){this.tableContainer.append($summaryRowHtm)}}if(!this.options.data.length&&this.dataStatus.state==="nodata"){this.setStatus("nodata")}else{this.dataStatus.state=this.dataStatus.state||"loading";this.dataStatus.message=this.dataStatus.message||this.options.dataStates.loading;this.setStatus(this.dataStatus.state,this.dataStatus.message,isCreated)}this.gridBody=this.gridElement.find("tbody");this.gridFooter=this.tableContainer.find("tfoot");this._findAndReplaceCompiledTemplates();this.options.clearRowActions();this._appendRowExpansionButtons($htm);this._appendRowActions($htm);this.attachEventHandlers($htm);this.__setStatus(isCreated);if(this.options.editmode===this.CONSTANTS.QUICK_EDIT&&this.options.showNewRow){this.addNewRow(false,true)}if(isCreated){this._setColSpan(this.options.headerConfig)}if(_.isFunction(this.options.onDataRender)){this.options.onDataRender()}if(!isCreated&&this.options.selectFirstRow){if(this.options.multiselect){this.options.selectFirstRow=false}if(this.gridElement.find("tr.app-datagrid-row.active").length<=0){this.selectFirstRow(true,true)}}},_render:function(isCreated){if(!this.tableId){this.tableId=this.Utils.generateGuid()}var overflow=this.options.isNavTypeScrollOrOndemand()&&(this.options.height==="100%"||this.options.height==="auto")?"hidden":"auto";var statusContainer='<div class="overlay">'+'<div class="status"><i class="'+this.options.loadingicon+'"></i><span class="message"></span></div>'+"</div>",table='<div class="table-container table-responsive">'+'<div class="app-grid-header">'+'<div class="app-grid-header-inner">'+'<table tabindex="0" class="'+this.options.cssClassNames.gridDefault+" "+this.options.cssClassNames.grid+'">'+'<thead class="table-header thead-sticky" id="table_header_'+this.tableId+'" role="rowgroup">'+'</thead><tbody class="app-grid-content app-datagrid-body" id="table_'+this.tableId+'" role="rowgroup">'+"</tbody></table>"+"</div></div></div>",$statusContainer=$(statusContainer),$tableContainer=this.element.find(".table-container");this.gridContainer=$(table);this.gridHeaderElement=this.gridContainer.find(".table-header");this._setStyles($statusContainer.find("div.overlay"),"display:none");this._setStyles(this.gridContainer.find("div.app-grid-header-inner"),"height:"+this.options.height+"; overflow: auto;");this.tableContainer=this.gridContainer.find("table");this.gridElement=this.gridContainer.find(".app-grid-content");if(this.options.isNavTypeScrollOrOndemand()&&(!$tableContainer.length||!this.options.isNextPageData)||!this.options.isNavTypeScrollOrOndemand()){this.element.find(".table-container").remove();this.element.append(this.gridContainer)}this.options.setIsNextPageData(false);if(!this.gridContainer.find(".overlay").length){this.dataStatusContainer=$(statusContainer);this.gridContainer.append(this.dataStatusContainer)}if(this.gridHeaderElement){this.gridHeaderElement.empty();this.gridElement.find("colgroup").remove()}this._renderHeader();if(this.options.filtermode===this.CONSTANTS.SEARCH&&(_.isEmpty(this.searchObj)||this.searchObj&&!this.searchObj.field&&!this.searchObj.value)){this._renderSearch()}else if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN){this._renderRowFilter()}if(this.options.spacing==="condensed"){this._toggleSpacingClasses("condensed")}this._renderGrid(isCreated);this.addNavigationControls()},addNavigationControls:function(){if(this.options.isdynamictable){this.element.find(".on-demand-datagrid").remove();if(this.options.navigation==="On-Demand"&&!this.element.find(".on-demand-datagrid").length){this.options.addLoadMoreBtn()}else if(this.options.navigation==="Scroll"){this.options.bindScrollEvt()}}},__setStatus:function(isCreated){var loadingIndicator=this.dataStatusContainer.find("i"),state=this.dataStatus.state,isScrollOrOndemand=this.options.isNavTypeScrollOrOndemand();this.dataStatusContainer.find(".message").text(this.dataStatus.message);if(state==="loading"){loadingIndicator.removeClass("hidden")}else{loadingIndicator.addClass("hidden")}if(state==="ready"){this.dataStatusContainer.hide()}else{if(this.options.isNavTypeScrollOrOndemand()&&(state==="nodata"||this.options.getCurrentPage()==this.options.getPageCount()&&!this.options.showviewlessbutton)){this.element.find(".on-demand-datagrid a").hide()}this.dataStatusContainer.show()}if(state==="nodata"||state==="loading"||state==="error"){if(this.options.height==="100%"||this.options.height==="auto"){if(state==="nodata"){this.dataStatusContainer.css("height","auto");this.dataStatus.contentHeight=0}else if(this.options.isNavTypeScrollOrOndemand()&&this.options.getCurrentPage()>1){this.dataStatusContainer.hide()}else{this.dataStatus.height=this.dataStatus.height||this.dataStatusContainer.outerHeight();this.dataStatus.contentHeight=this.gridElement.outerHeight()||this.dataStatus.contentHeight;this.dataStatusContainer.css("height",this.dataStatus.height>this.dataStatus.contentHeight?"auto":this.dataStatus.contentHeight)}}if(!isScrollOrOndemand||isScrollOrOndemand&&this.options.getCurrentPage()===1){this.gridContainer.addClass("show-msg")}}else{this.gridContainer.removeClass("show-msg");if(this.options.editmode===this.CONSTANTS.QUICK_EDIT){if(this.options.activeRow){this.attachHandlersToActiveRow(this.options.activeRow)}this.options.activeRow=undefined}}if(!isCreated){this.setColGroupWidths()}this.addOrRemoveScroll()},attachHandlersToActiveRow(rowObj){var rowIndex=this.Utils.getObjectIndex(this.options.data,rowObj);var row=this.gridElement.find("tr.app-datagrid-row[data-row-id="+rowIndex+"]");if(!row.length){return}else if(!row.hasClass("active")){row.addClass("active")}this.focusActiveRow();this.attachEventHandlers(row)},setActiveRow(row){this.options.activeRow=row},setStatus:function(state,message,isCreated){var $newRow;if(state==="nodata"){$newRow=this.gridElement&&this.gridElement.find("tr.app-datagrid-row.always-new-row");state=$newRow&&$newRow.length?"ready":state}this.dataStatus.state=state;this.options.setGridState(state);this.dataStatus.message=message||this.options.dataStates[state];if(this._setStatusCalled){this._setStatus(isCreated)}else{this.__setStatus(isCreated);this._setStatusCalled=true}},setGridDimensions:function(key,value){if(value.indexOf("px")===-1&&value.indexOf("%")===-1&&value.indexOf("em")===-1&&value!="auto"){value=value+"px"}this.options[key]=value;if(key==="height"){var elements=this.gridHeaderElement.find("th");this.gridContainer.find(".app-grid-header-inner").css(key,value);if(this.options.isNavTypeScrollOrOndemand()&&(this.options.height!="100%"&&this.options.height!="auto")){this.gridContainer.find(".app-grid-header-inner").css("overflow","auto")}this.dataStatusContainer.css(key,value)}this.addOrRemoveScroll()},setColumnProp:function(fieldName,property,val,isGroup){var $col;if(property==="displayName"){if(isGroup){$col=this.gridHeaderElement.find('th[data-col-group="'+fieldName+'"]')}else{$col=this.gridHeaderElement.find('th[data-col-field="'+fieldName+'"]')}$col.attr("title",val);$col.find(".header-data").html(val);if(this.options.filtermode===this.CONSTANTS.SEARCH&&this.gridSearch){this.gridSearch.find('select option[value="'+fieldName+'"]').text(val)}}},applyRowNgClass:function(val,index){var $row=this.gridElement.find('tr.app-datagrid-row[data-row-id="'+index+'"]');$row.removeClass(val.toRemove);$row.addClass(val.toAdd)},applyColNgClass:function(val,rowIndex,colIndex){var $cell=this.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowIndex+'"] td.app-datagrid-cell[data-col-id="'+colIndex+'"]');var $head=this.tableContainer.find('thead tr th.app-datagrid-header-cell[data-col-id="'+colIndex+'"]');$cell.removeClass(val.toRemove);$cell.addClass(val.toAdd);$head.removeClass(val.toRemove);$head.addClass(val.toAdd)},_destroy:function(){this.element.text("");window.clearTimeout(this.refreshGridTimeout)}});"use strict";window.requestAnimationFrame=function(){"use strict";return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimaitonFrame||function(callback){window.setTimeout(callback,1e3/60)}}();(function($){"use strict";var DIRECTIONS={NONE:0,HORIZONTAL:1,LEFT_TO_RIGHT:2,RIGHT_TO_LEFT:3,VERTICAL:4,TOP_TO_DOWN:5,DOWN_TO_TOP:6};var abs=Math.abs;var max=Math.max;var TAG_WHITE_LIST=["INPUT","SELECT","OPTION"];var SwipeTracer;var activeEventProcessor;var swipeMask=$("<div></div>");swipeMask.css({"background-color":"rgba(0, 0, 0, 0)",position:"fixed",top:0,width:"100vw",height:"100vh","z-index":1e5});var touchMoveListeners=[];var touchEndListeners=[];var pointerId=null;var onTouch=function(e){if(e&&(e.pointerId&&e.pointerId!==pointerId||e.touches&&e.touches.length>1)){onTouchEnd(e)}$.each(touchMoveListeners,function(i,fn){return fn(e)})};var onTouchEnd=function(e){pointerId=null;$.each(touchEndListeners,function(i,fn){return fn(e)});touchMoveListeners.length=0;touchEndListeners.length=0};function addEventListener(target,event,callback){(target.__zone_symbol__addEventListener||target.addEventListener).call(target,event,callback,{passive:true})}function iOSversion(){if(/iP(hone|od|ad)/.test(navigator.platform)){var v=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return parseInt(v[1],10)}}if(window["PointerEvent"]&&iOSversion()>=13){addEventListener(document,"pointerdown",function(e){if(pointerId&&pointerId!==e.pointerId){onTouchEnd(e)}else{pointerId=e.pointerId}});addEventListener(document,"pointermove",onTouch);addEventListener(document,"pointerup",onTouchEnd);addEventListener(document,"pointercancel",onTouchEnd)}else{addEventListener(document,"mousemove",onTouch);addEventListener(document,"touchmove",onTouch);addEventListener(document,"mouseup",onTouchEnd);addEventListener(document,"touchcancel",onTouchEnd);addEventListener(document,"touchend",onTouchEnd)}function ScrollObserver(parent,child,direction){var elementsToObserve=function(array){var iter=child;while(iter){array.push({$ele:$(iter),last:{scrollLeft:iter.iscroll?iter.iscroll.x:iter.scrollLeft,scrollTop:iter.iscroll?iter.iscroll.y:iter.scrollTop}});iter=iter.parentElement}return array}([]);function isVerticalScroll(){var result;$.each(elementsToObserve,function(){if(this.$ele[0].iscroll){if(!isNaN(this.$ele[0].iscroll.y)&&this.$ele[0].iscroll.y!==0){result=true}}else if(this.$ele[0].scrollTop!==0){result=true}});return result}function isHorizontalScroll(){var result;$.each(elementsToObserve,function(){if(this.$ele[0].iscroll){if(!isNaN(this.$ele[0].iscroll.x)&&this.$ele[0].iscroll.x!==0){result=true}}else if(this.$ele[0].scrollLeft!==0){result=true}});return result}this.hasSrcolled=function(){if(direction===$.fn.swipey.DIRECTIONS.VERTICAL){return isVerticalScroll()}if(direction===$.fn.swipey.DIRECTIONS.HORIZONTAL){return isHorizontalScroll()}}}function SwipeEventSmoother(){var queue=[];var isProcessing=false;var time;function process(){if(queue.length>0){try{queue.shift()()}catch(e){console.error("Function invocation failed",e)}window.requestAnimationFrame(process)}else{isProcessing=false}}this.push=function(fn){queue.push(fn)};this.process=function(){if(!isProcessing){isProcessing=true;process()}}}activeEventProcessor=new SwipeEventSmoother;function getTouchEvent(event){if(event.originalEvent&&event.originalEvent.pointerType!=="mouse"){return event.originalEvent}return event.originalEvent&&event.originalEvent.touches&&event.originalEvent.touches[0]||event&&event.touches&&event.touches[0]||event}function computeDistance(startPoint,endPoint,direction){var distance=0,deltaX,deltaY;if(direction===DIRECTIONS.HORIZONTAL){distance=endPoint.x-startPoint.x}else if(direction===DIRECTIONS.LEFT_TO_RIGHT){distance=max(endPoint.x-startPoint.x,0)}else if(direction===DIRECTIONS.RIGHT_TO_LEFT){distance=max(startPoint.x-endPoint.x,0)}else if(direction===DIRECTIONS.VERTICAL){distance=endPoint.y-startPoint.y}else if(direction===DIRECTIONS.TOP_TO_DOWN){distance=max(endPoint.y-startPoint.y,0)}else if(direction===DIRECTIONS.DOWN_TO_TOP){distance=max(startPoint.y-endPoint.y,0)}else{deltaX=endPoint.x-startPoint.x;deltaY=endPoint.y-startPoint.y;distance=max(abs(deltaX),abs(deltaY));if(deltaX<0&&abs(deltaX)===distance||deltaY<0&&abs(deltaY)===distance){distance=-distance}}return distance}function onActiveSwipe(event,settings){var touch=getTouchEvent(event);var startPoint=settings.data.path[0];var point={x:touch.pageX,y:touch.pageY};var distance=computeDistance(startPoint,point,settings.direction);var eventSplits=[];var increment;var limit;settings.renderInProgress=false;if(distance!==settings.lastDistance){increment=(distance<settings.lastDistance?-1:1)*30;limit=distance-settings.lastDistance;for(var i=increment;increment>0&&i<=limit||increment<0&&i>=limit;i+=increment){eventSplits.push(i+settings.lastDistance)}if(limit%increment!==0){eventSplits.push(limit%abs(increment)+(eventSplits.length===0?settings.lastDistance:eventSplits[eventSplits.length-1]))}settings.lastDistance=distance;$.each(eventSplits,function(){var d=this;activeEventProcessor.push(function(){settings.data.length=d;settings.data.totalLength+=abs(d);settings.data.velocity=abs(settings.data.totalLength/(Date.now()-settings.data.startTime));settings.data.path.push(point);if(settings.onSwipe.call(settings.target,event,settings.data)===false){onActiveSwipeEnd(event,settings)}SwipeTracer.onSwipe(event,settings.data)})});activeEventProcessor.process()}}function onActiveSwipeEnd(event,settings){var touch=getTouchEvent(event);if(touch){settings.data.path.push({x:touch.pageX,y:touch.pageY})}activeEventProcessor.push(function(){SwipeTracer.onSwipeEnd(event,settings.data);settings.onSwipeEnd.call(settings.target,event,settings.data)});activeEventProcessor.process()}function listenActiveSwipe(event,settings){var touch=getTouchEvent(event);var swipeHandler;var swipeEndHandler;var passiveDistance;var passiveSwipeStartPoint=settings.data.path[0];var activeSwipeStartPoint={x:touch.pageX,y:touch.pageY};passiveDistance=computeDistance(passiveSwipeStartPoint,activeSwipeStartPoint,settings.direction);settings.data.length=passiveDistance<0?-1:1;settings.lastDistance=settings.data.length;settings.data.path=[activeSwipeStartPoint];settings.data.totalLength=abs(settings.data.length);settings.data.startTime=Date.now();if(settings.onSwipeStart.call(settings.target,event,settings.data)===false){return false}swipeMask.appendTo($("body"));swipeHandler=function(em){onActiveSwipe(em,settings)};swipeEndHandler=function(ee){swipeMask.remove();onActiveSwipeEnd(ee,settings)};touchMoveListeners=[];touchMoveListeners.push(swipeHandler);touchEndListeners=[];touchEndListeners.push(swipeEndHandler);SwipeTracer.onSwipeStart(event,settings.data);return true}function isThresholdAngleReached(startPoint,endPoint,direction){if(direction===DIRECTIONS.HORIZONTAL){if(Math.abs((endPoint.y-startPoint.y)/(endPoint.x-startPoint.x))<=.36397023426){return true}}else if(direction===DIRECTIONS.VERTICAL){if(Math.abs((endPoint.y-startPoint.y)/(endPoint.x-startPoint.x))>=2.74747741945){return true}}return false}function isThresholdReached(touch,settings){var startPoint=settings.data.path[0];var endPoint={x:touch.pageX,y:touch.pageY};var distance=computeDistance(startPoint,endPoint,settings.direction);return abs(distance)>settings.threshold&&isThresholdAngleReached(startPoint,endPoint,settings.direction)}function listenPassiveSwipe(touch,settings){var passiveSwipeHandler;settings.scrollObserver=new ScrollObserver(event.currentTarget,event.target,settings.direction);passiveSwipeHandler=function(em){if(isThresholdReached(getTouchEvent(em),settings)){if(settings.scrollObserver.hasSrcolled()||listenActiveSwipe(em,settings)){return false}}};touchMoveListeners.push(passiveSwipeHandler);settings.data={path:[{x:touch.pageX,y:touch.pageY}]}}function bind(settings){var events=settings.bindEvents;var listenFor="";if(_.includes(events,"touch")){listenFor+="touchstart"}else if(_.includes(events,"mouse")){listenFor+="mousedown"}else if(_.includes(events,"pointer")){listenFor+="pointerdown"}if(!listenFor){return}addEventListener(settings.target[0],listenFor,function(es){if(settings.disableMouse&&es.pointerType==="mouse"){return}if(es.pointerType!=="mouse"&&es.MSPOINTER_TYPE_MOUSE&&es.pointerType!==es.MSPOINTER_TYPE_MOUSE){if(TAG_WHITE_LIST.indexOf(es.target.tagName)<0){es.preventDefault()}else{return}}var touch=getTouchEvent(es);if(touch){listenPassiveSwipe(touch,settings)}})}$.fn.swipey=function(settings){this.each(function(){bind($.extend({direction:DIRECTIONS.NONE,target:$(this),bindEvents:["touch","mouse"],swipeTarget:document,threshold:30,onSwipeStart:$.noop,onSwipe:$.noop,onSwipeEnd:$.noop,disableMouse:true},settings))});return this};SwipeTracer={onSwipeStart:function(e,data){if($.fn.swipey.trace){var $svg='<svg height="100vh" width="100vw" id ="canvas">'+' <path stroke="rgba(0, 0, 0, 0.5)" stroke-linecap="round" stroke-width="20" fill-opacity="0" '+' stroke-opacity="0.8" d="M'+data.path[0].x+" "+data.path[0].y+' " />'+" </svg>";$svg.css({position:"fixed",top:0,left:0,width:"100vw",height:"100vh","z-index":1e4});$("body").append($svg);data.tracer={pathd:$("#canvas path")}}},onSwipe:function(e,data){if(data.tracer){var d=data.tracer.pathd.attr("d");var p=data.path[data.path.length-1];data.tracer.pathd.attr("d",d+" L"+p.x+" "+p.y+" ")}},onSwipeEnd:function(e,data){if(data.tracer){var firstPoint=data.path[0];var expected_1=[firstPoint,{y:firstPoint.y-50},{x:firstPoint.x+50},{y:firstPoint.y+50}];var trace_1=0;_.forEach(data.path,function(p){var ep;if(trace_1!==expected_1.length){ep=expected_1[trace_1];if((!ep.x||ep.x<=p.x)&&(!ep.y||ep.y<=p.y)){trace_1++}}});setTimeout(function(){$("body >#canvas").remove()},500)}}};$.fn.swipey.DIRECTIONS=DIRECTIONS})(jQuery);(function($){var $parse;var expressionRegex=/\$\{\{[a-zA-Z\+-/%\.\*\s\(\)\d,\\'"\$_]*\}\}/;function getParseService(){if($.fn.swipeAnimation.expressionEvaluator){return $.fn.swipeAnimation.expressionEvaluator}if(window.exprEval&&window.exprEval.Parser){return function(exp){var parser=(new window.exprEval.Parser).parse(exp);return function(context){return parser.evaluate(context)}}}}function compile(script){var tArr=[];var match;$parse=$parse||getParseService();if(_.isFunction(script)){return script}else if($parse){while((match=expressionRegex.exec(script))!==null){var expression=match[0];var prefix=script.substring(0,match.index);script=script.substring(match.index+expression.length);expression=expression.substring(3,expression.length-2);tArr.push(prefix);tArr.push($parse(expression).bind({}))}tArr.push(script);return function(){var args=arguments;return _.map(tArr,function(v){return _.isFunction(v)?v.apply(undefined,args):v}).join("")}}}function getObject(obj,$ele,args){if(_.isFunction(obj)){return obj.apply($ele,args)}return obj}function VelocityComputator(){var lastDistance=0;var lastTime=0;var v=0;return{addDistance:function(d){var currentTime=Date.now();if(Math.abs(d-lastDistance)>10&¤tTime!==lastTime){v=(d-lastDistance)/(currentTime-lastTime);lastDistance=d;lastTime=currentTime}if(v<0){v=Math.min(v,-1)}else{v=Math.max(v,1)}return this},getVelocity:function(){return v},getTime:function(d){return Math.abs(d/v)}}}function calculateBounds($el,settings,args){var centerVal=0;var bounds=getObject(settings.bounds,$el,args);if(!_.isUndefined(bounds.center)){centerVal=bounds.center}if(!_.isUndefined(bounds.lower)){bounds.lower=bounds.lower+centerVal}if(!_.isUndefined(bounds.upper)){bounds.upper=bounds.upper+centerVal}return bounds}function retrieveTargets(settings){_.forEach(settings.animation,function(a){if(_.isFunction(a.target)||a.targetFn){a.targetFn=_.isUndefined(a.targetFn)?a.target:a.targetFn;a.target=a.targetFn()}})}function SettingsProperty(){this.setSettings=function(settings,$el){$el.data("swipeAnimationDefaults",settings)};this.getSettings=function($el){return $el.data("swipeAnimationDefaults")}}function animate(settings,metaData,time,$el,distanceMoved,e){_.forEach(settings.animation,function(a){if(!a.target){return}if(a.target.length>1){a.target.each(function(i){metaData.$i=i;$(this).css(_.mapValues(a.css,function(v,k){return v(metaData)}))})}else{metaData.$i=0;a.target.css(_.mapValues(a.css,function(v,k){return v(metaData)}))}a.target.css({transition:"all ease-out "+time+"ms"});a.target.one("webkitTransitionEnd transitionend",function(){a.target.css({transition:""})})});setTimeout(function(){window.requestAnimationFrame(function(){if(metaData.$D===metaData.bounds.lower){settings.onLower.call($el,e)}else if(metaData.$D===metaData.bounds.upper){settings.onUpper.call($el,e)}settings.onAnimation(e,distanceMoved)})},time)}var methods={gotoUpper:function(){swipeToEnd(this,"upper",arguments[1])},gotoLower:function(time){swipeToEnd(this,"lower",arguments[1])}};function swipeToEnd($ele,moveTo,time){var settingsObj=new SettingsProperty;var settings=settingsObj.getSettings($ele);var metaData={};var bounds=calculateBounds($ele,settings);var context;retrieveTargets(settings);time=time||300;context=getObject(settings.context,$ele);metaData=_.extend({},context);metaData.$d=0;metaData.$D=moveTo==="lower"?bounds.lower:bounds.upper;metaData.bounds=bounds;animate(settings,metaData,time,$ele)}function addSwipey($ele,settings){var state={$D:0};var baseContext={max:Math.max,min:Math.min,abs:Math.abs};if(!_.isArray(settings.animation)){var target=settings.animation.target||$ele;var css=settings.animation.css||settings.animation;delete css[$ele];settings.animation=[{target:target,css:css}]}_.forEach(settings.animation,function(a){a.css=_.mapValues(a.css,function(v,k){return compile(v)})});var settingsObj=new SettingsProperty;settingsObj.setSettings(settings,$ele);$ele.swipey({direction:settings.direction,threshold:settings.threshold,bindEvents:settings.bindEvents,target:settings.target,onSwipeStart:function(e,data){var cd;state.$d=0;state.bounds=calculateBounds(this,settings,[e,data.length]);if(!_.isUndefined(state.bounds.center)){state.$D=state.bounds.center}else{state.$D=0}cd=state.$D+data.length;state.bounds.strictLower=!(state.bounds.strict===false||state.bounds.strictLower===false);state.bounds.strictUpper=!(state.bounds.strict===false||state.bounds.strictUpper===false);if(!settings.enableGestures()||state.bounds.strictLower&&(_.isUndefined(state.bounds.lower)&&data.length<0||!_.isUndefined(state.bounds.lower)&&state.bounds.lower>cd)||state.bounds.strictUpper&&(_.isUndefined(state.bounds.upper)&&data.length>0||!_.isUndefined(state.bounds.upper)&&state.bounds.upper<cd)){return false}state.vc=VelocityComputator();state.context=_.extend(baseContext,getObject(settings.context,$ele));state.localState=_.extend({},state.context);retrieveTargets(settings);_.forEach(settings.animation,function(a){if(a.target){a.target.css({transition:"none"})}})},onSwipe:function(e,data){var localState=state.localState;var cd=state.$D+data.length;localState.$d=data.length;localState.$D=state.$D;if(state.bounds.strictLower&&!_.isUndefined(state.bounds.lower)&&state.bounds.lower>cd){localState.$d=state.bounds.lower-state.$D}else if(state.bounds.strictUpper&&!_.isUndefined(state.bounds.upper)&&state.bounds.upper<cd){localState.$d=state.bounds.upper-state.$D}state.vc.addDistance(data.length);_.forEach(settings.animation,function(a){if(a.target){if(a.target.length>1){a.target.each(function(i){localState.$i=i;$(this).css(_.mapValues(a.css,function(v,k){return v(localState)}))})}else{localState.$i=0;a.target.css(_.mapValues(a.css,function(v,k){return v(localState)}))}}})},onSwipeEnd:function(e,data){var localState=state.localState;var cd=state.$D+data.length;var v=state.vc.getVelocity();var time;localState.$d=data.length;localState.$D=state.$D;if(!_.isUndefined(state.bounds.lower)&&v<=0&&state.$D>cd){localState.$D=state.bounds.lower}else if(!_.isUndefined(state.bounds.upper)&&v>=0&&state.$D<cd){localState.$D=state.bounds.upper}localState.$d=0;localState.bounds=state.bounds;state.$D=localState.$D;time=state.vc.getTime(localState.$D-cd);animate(settings,localState,time,$ele,cd,e)}})}$.fn.swipeAnimation=function(settings){if(methods[settings]){return methods[settings].apply(this,arguments)}this.each(function(){addSwipey($(this),$.extend({direction:$.fn.swipey.DIRECTIONS.HORIZONTAL,target:$(this),threshold:30,enableGestures:function(){return true},bindEvents:["touch"],bounds:{},context:{},animation:{},onLower:$.noop,onUpper:$.noop,onAnimation:$.noop},settings))});return this}})(jQuery);
|
|
688
|
+
(function(window,document,Math){var rAF=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(callback){window.setTimeout(callback,1e3/60)};var utils=function(){var me={};var _elementStyle=document.createElement("div").style;var _vendor=function(){var vendors=["t","webkitT","MozT","msT","OT"],transform,i=0,l=vendors.length;for(;i<l;i++){transform=vendors[i]+"ransform";if(transform in _elementStyle)return vendors[i].substr(0,vendors[i].length-1)}return false}();function _prefixStyle(style){if(_vendor===false)return false;if(_vendor==="")return style;return _vendor+style.charAt(0).toUpperCase()+style.substr(1)}me.getTime=Date.now||function getTime(){return(new Date).getTime()};me.extend=function(target,obj){for(var i in obj){target[i]=obj[i]}};me.addEvent=function(el,type,fn,capture){el.addEventListener(type,fn,!!capture)};me.removeEvent=function(el,type,fn,capture){el.removeEventListener(type,fn,!!capture)};me.prefixPointerEvent=function(pointerEvent){return window.MSPointerEvent?"MSPointer"+pointerEvent.charAt(7).toUpperCase()+pointerEvent.substr(8):pointerEvent};me.momentum=function(current,start,time,lowerMargin,wrapperSize,deceleration){var distance=current-start,speed=Math.abs(distance)/time,destination,duration;deceleration=deceleration===undefined?6e-4:deceleration;destination=current+speed*speed/(2*deceleration)*(distance<0?-1:1);duration=speed/deceleration;if(destination<lowerMargin){destination=wrapperSize?lowerMargin-wrapperSize/2.5*(speed/8):lowerMargin;distance=Math.abs(destination-current);duration=distance/speed}else if(destination>0){destination=wrapperSize?wrapperSize/2.5*(speed/8):0;distance=Math.abs(current)+destination;duration=distance/speed}return{destination:Math.round(destination),duration:duration}};var _transform=_prefixStyle("transform");me.extend(me,{hasTransform:_transform!==false,hasPerspective:_prefixStyle("perspective")in _elementStyle,hasTouch:"ontouchstart"in window,hasPointer:!!(window.PointerEvent||window.MSPointerEvent),hasTransition:_prefixStyle("transition")in _elementStyle});me.isBadAndroid=function(){var appVersion=window.navigator.appVersion;if(/Android/.test(appVersion)&&!/Chrome\/\d/.test(appVersion)){var safariVersion=appVersion.match(/Safari\/(\d+.\d)/);if(safariVersion&&typeof safariVersion==="object"&&safariVersion.length>=2){return parseFloat(safariVersion[1])<535.19}else{return true}}else{return false}}();me.extend(me.style={},{transform:_transform,transitionTimingFunction:_prefixStyle("transitionTimingFunction"),transitionDuration:_prefixStyle("transitionDuration"),transitionDelay:_prefixStyle("transitionDelay"),transformOrigin:_prefixStyle("transformOrigin")});me.hasClass=function(e,c){var re=new RegExp("(^|\\s)"+c+"(\\s|$)");return re.test(e.className)};me.addClass=function(e,c){if(me.hasClass(e,c)){return}var newclass=e.className.split(" ");newclass.push(c);e.className=newclass.join(" ")};me.removeClass=function(e,c){if(!me.hasClass(e,c)){return}var re=new RegExp("(^|\\s)"+c+"(\\s|$)","g");e.className=e.className.replace(re," ")};me.offset=function(el){var left=-el.offsetLeft,top=-el.offsetTop;while(el=el.offsetParent){left-=el.offsetLeft;top-=el.offsetTop}return{left:left,top:top}};me.preventDefaultException=function(el,exceptions){for(var i in exceptions){if(exceptions[i].test(el[i])){return true}}return false};me.extend(me.eventType={},{touchstart:1,touchmove:1,touchend:1,mousedown:2,mousemove:2,mouseup:2,pointerdown:3,pointermove:3,pointerup:3,MSPointerDown:3,MSPointerMove:3,MSPointerUp:3});me.extend(me.ease={},{quadratic:{style:"cubic-bezier(0.25, 0.46, 0.45, 0.94)",fn:function(k){return k*(2-k)}},circular:{style:"cubic-bezier(0.1, 0.57, 0.1, 1)",fn:function(k){return Math.sqrt(1- --k*k)}},back:{style:"cubic-bezier(0.175, 0.885, 0.32, 1.275)",fn:function(k){var b=4;return(k=k-1)*k*((b+1)*k+b)+1}},bounce:{style:"",fn:function(k){if((k/=1)<1/2.75){return 7.5625*k*k}else if(k<2/2.75){return 7.5625*(k-=1.5/2.75)*k+.75}else if(k<2.5/2.75){return 7.5625*(k-=2.25/2.75)*k+.9375}else{return 7.5625*(k-=2.625/2.75)*k+.984375}}},elastic:{style:"",fn:function(k){var f=.22,e=.4;if(k===0){return 0}if(k==1){return 1}return e*Math.pow(2,-10*k)*Math.sin((k-f/4)*(2*Math.PI)/f)+1}}});me.tap=function(e,eventName){var ev=document.createEvent("Event");ev.initEvent(eventName,true,true);ev.pageX=e.pageX;ev.pageY=e.pageY;e.target.dispatchEvent(ev)};me.click=function(e){var target=e.target,ev;if(!/(SELECT|INPUT|TEXTAREA)/i.test(target.tagName)){ev=document.createEvent("MouseEvents");ev.initMouseEvent("click",true,true,e.view,1,target.screenX,target.screenY,target.clientX,target.clientY,e.ctrlKey,e.altKey,e.shiftKey,e.metaKey,0,null);ev._constructed=true;target.dispatchEvent(ev)}};return me}();function IScroll(el,options){this.wrapper=typeof el=="string"?document.querySelector(el):el;this.scroller=this.wrapper.children[0];this.scrollerStyle=this.scroller.style;this.options={resizeScrollbars:true,mouseWheelSpeed:20,snapThreshold:.334,disablePointer:!utils.hasPointer,disableTouch:utils.hasPointer||!utils.hasTouch,disableMouse:utils.hasPointer||utils.hasTouch,startX:0,startY:0,scrollY:true,directionLockThreshold:5,momentum:true,bounce:true,bounceTime:600,bounceEasing:"",preventDefault:true,preventDefaultException:{tagName:/^(INPUT|TEXTAREA|BUTTON|SELECT)$/},HWCompositing:true,useTransition:true,useTransform:true,bindToWrapper:typeof window.onmousedown==="undefined"};for(var i in options){this.options[i]=options[i]}this.translateZ=this.options.HWCompositing&&utils.hasPerspective?" translateZ(0)":"";this.options.useTransition=utils.hasTransition&&this.options.useTransition;this.options.useTransform=utils.hasTransform&&this.options.useTransform;this.options.eventPassthrough=this.options.eventPassthrough===true?"vertical":this.options.eventPassthrough;this.options.preventDefault=!this.options.eventPassthrough&&this.options.preventDefault;this.options.scrollY=this.options.eventPassthrough=="vertical"?false:this.options.scrollY;this.options.scrollX=this.options.eventPassthrough=="horizontal"?false:this.options.scrollX;this.options.freeScroll=this.options.freeScroll&&!this.options.eventPassthrough;this.options.directionLockThreshold=this.options.eventPassthrough?0:this.options.directionLockThreshold;this.options.bounceEasing=typeof this.options.bounceEasing=="string"?utils.ease[this.options.bounceEasing]||utils.ease.circular:this.options.bounceEasing;this.options.resizePolling=this.options.resizePolling===undefined?60:this.options.resizePolling;if(this.options.tap===true){this.options.tap="tap"}if(this.options.shrinkScrollbars=="scale"){this.options.useTransition=false}this.options.invertWheelDirection=this.options.invertWheelDirection?-1:1;this.x=0;this.y=0;this.directionX=0;this.directionY=0;this._events={};this._init();this.refresh();this.scrollTo(this.options.startX,this.options.startY);this.enable()}IScroll.prototype={version:"5.2.0",_init:function(){this._initEvents();if(this.options.scrollbars||this.options.indicators){this._initIndicators()}if(this.options.mouseWheel){this._initWheel()}if(this.options.snap){this._initSnap()}if(this.options.keyBindings){this._initKeys()}},destroy:function(){this._initEvents(true);clearTimeout(this.resizeTimeout);this.resizeTimeout=null;this._execEvent("destroy")},_transitionEnd:function(e){if(e.target!=this.scroller||!this.isInTransition){return}this._transitionTime();if(!this.resetPosition(this.options.bounceTime)){this.isInTransition=false;this._execEvent("scrollEnd")}},_start:function(e){if(utils.eventType[e.type]!=1){var button;if(!e.which){button=e.button<2?0:e.button==4?1:2}else{button=e.button}if(button!==0){return}}if(!this.enabled||this.initiated&&utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!utils.isBadAndroid&&!utils.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var point=e.touches?e.touches[0]:e,pos;this.initiated=utils.eventType[e.type];this.moved=false;this.distX=0;this.distY=0;this.directionX=0;this.directionY=0;this.directionLocked=0;this.startTime=utils.getTime();if(this.options.useTransition&&this.isInTransition){this._transitionTime();this.isInTransition=false;pos=this.getComputedPosition();this._translate(Math.round(pos.x),Math.round(pos.y));this._execEvent("scrollEnd")}else if(!this.options.useTransition&&this.isAnimating){this.isAnimating=false;this._execEvent("scrollEnd")}this.startX=this.x;this.startY=this.y;this.absStartX=this.x;this.absStartY=this.y;this.pointX=point.pageX;this.pointY=point.pageY;this._execEvent("beforeScrollStart")},_move:function(e){if(!this.enabled||utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault){e.preventDefault()}var point=e.touches?e.touches[0]:e,deltaX=point.pageX-this.pointX,deltaY=point.pageY-this.pointY,timestamp=utils.getTime(),newX,newY,absDistX,absDistY;this.pointX=point.pageX;this.pointY=point.pageY;this.distX+=deltaX;this.distY+=deltaY;absDistX=Math.abs(this.distX);absDistY=Math.abs(this.distY);if(timestamp-this.endTime>300&&(absDistX<10&&absDistY<10)){return}if(!this.directionLocked&&!this.options.freeScroll){if(absDistX>absDistY+this.options.directionLockThreshold){this.directionLocked="h"}else if(absDistY>=absDistX+this.options.directionLockThreshold){this.directionLocked="v"}else{this.directionLocked="n"}}if(this.directionLocked=="h"){if(this.options.eventPassthrough=="vertical"){e.preventDefault()}else if(this.options.eventPassthrough=="horizontal"){this.initiated=false;return}deltaY=0}else if(this.directionLocked=="v"){if(this.options.eventPassthrough=="horizontal"){e.preventDefault()}else if(this.options.eventPassthrough=="vertical"){this.initiated=false;return}deltaX=0}deltaX=this.hasHorizontalScroll?deltaX:0;deltaY=this.hasVerticalScroll?deltaY:0;newX=this.x+deltaX;newY=this.y+deltaY;if(newX>0||newX<this.maxScrollX){newX=this.options.bounce?this.x+deltaX/3:newX>0?0:this.maxScrollX}if(newY>0||newY<this.maxScrollY){newY=this.options.bounce?this.y+deltaY/3:newY>0?0:this.maxScrollY}this.directionX=deltaX>0?-1:deltaX<0?1:0;this.directionY=deltaY>0?-1:deltaY<0?1:0;if(!this.moved){this._execEvent("scrollStart")}this.moved=true;this._translate(newX,newY);if(timestamp-this.startTime>300){this.startTime=timestamp;this.startX=this.x;this.startY=this.y}},_end:function(e){if(!this.enabled||utils.eventType[e.type]!==this.initiated){return}if(this.options.preventDefault&&!utils.preventDefaultException(e.target,this.options.preventDefaultException)){e.preventDefault()}var point=e.changedTouches?e.changedTouches[0]:e,momentumX,momentumY,duration=utils.getTime()-this.startTime,newX=Math.round(this.x),newY=Math.round(this.y),distanceX=Math.abs(newX-this.startX),distanceY=Math.abs(newY-this.startY),time=0,easing="";this.isInTransition=0;this.initiated=0;this.endTime=utils.getTime();if(this.resetPosition(this.options.bounceTime)){return}this.scrollTo(newX,newY);if(!this.moved){if(this.options.tap){utils.tap(e,this.options.tap)}if(this.options.click){utils.click(e)}this._execEvent("scrollCancel");return}if(this._events.flick&&duration<200&&distanceX<100&&distanceY<100){this._execEvent("flick");return}if(this.options.momentum&&duration<300){momentumX=this.hasHorizontalScroll?utils.momentum(this.x,this.startX,duration,this.maxScrollX,this.options.bounce?this.wrapperWidth:0,this.options.deceleration):{destination:newX,duration:0};momentumY=this.hasVerticalScroll?utils.momentum(this.y,this.startY,duration,this.maxScrollY,this.options.bounce?this.wrapperHeight:0,this.options.deceleration):{destination:newY,duration:0};newX=momentumX.destination;newY=momentumY.destination;time=Math.max(momentumX.duration,momentumY.duration);this.isInTransition=1}if(this.options.snap){var snap=this._nearestSnap(newX,newY);this.currentPage=snap;time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(newX-snap.x),1e3),Math.min(Math.abs(newY-snap.y),1e3)),300);newX=snap.x;newY=snap.y;this.directionX=0;this.directionY=0;easing=this.options.bounceEasing}if(newX!=this.x||newY!=this.y){if(newX>0||newX<this.maxScrollX||newY>0||newY<this.maxScrollY){easing=utils.ease.quadratic}this.scrollTo(newX,newY,time,easing);return}this._execEvent("scrollEnd")},_resize:function(){var that=this;clearTimeout(this.resizeTimeout);this.resizeTimeout=setTimeout(function(){that.refresh()},this.options.resizePolling)},resetPosition:function(time){var x=this.x,y=this.y;time=time||0;if(!this.hasHorizontalScroll||this.x>0){x=0}else if(this.x<this.maxScrollX){x=this.maxScrollX}if(!this.hasVerticalScroll||this.y>0){y=0}else if(this.y<this.maxScrollY){y=this.maxScrollY}if(x==this.x&&y==this.y){return false}this.scrollTo(x,y,time,this.options.bounceEasing);return true},disable:function(){this.enabled=false},enable:function(){this.enabled=true},refresh:function(){var rf=this.wrapper.offsetHeight;this.wrapperWidth=this.wrapper.clientWidth;this.wrapperHeight=this.wrapper.clientHeight;this.scrollerWidth=this.scroller.offsetWidth;this.scrollerHeight=this.scroller.offsetHeight;this.maxScrollX=this.wrapperWidth-this.scrollerWidth;this.maxScrollY=this.wrapperHeight-this.scrollerHeight;this.hasHorizontalScroll=this.options.scrollX&&this.maxScrollX<0;this.hasVerticalScroll=this.options.scrollY&&this.maxScrollY<0;if(!this.hasHorizontalScroll){this.maxScrollX=0;this.scrollerWidth=this.wrapperWidth}if(!this.hasVerticalScroll){this.maxScrollY=0;this.scrollerHeight=this.wrapperHeight}this.endTime=0;this.directionX=0;this.directionY=0;this.wrapperOffset=utils.offset(this.wrapper);this._execEvent("refresh");this.resetPosition()},on:function(type,fn){if(!this._events[type]){this._events[type]=[]}this._events[type].push(fn)},off:function(type,fn){if(!this._events[type]){return}var index=this._events[type].indexOf(fn);if(index>-1){this._events[type].splice(index,1)}},_execEvent:function(type){if(!this._events[type]){return}var i=0,l=this._events[type].length;if(!l){return}for(;i<l;i++){this._events[type][i].apply(this,[].slice.call(arguments,1))}},scrollBy:function(x,y,time,easing){x=this.x+x;y=this.y+y;time=time||0;this.scrollTo(x,y,time,easing)},scrollTo:function(x,y,time,easing){easing=easing||utils.ease.circular;this.isInTransition=this.options.useTransition&&time>0;var transitionType=this.options.useTransition&&easing.style;if(!time||transitionType){if(transitionType){this._transitionTimingFunction(easing.style);this._transitionTime(time)}this._translate(x,y)}else{this._animate(x,y,time,easing.fn)}},scrollToElement:function(el,time,offsetX,offsetY,easing){el=el.nodeType?el:this.scroller.querySelector(el);if(!el){return}var pos=utils.offset(el);pos.left-=this.wrapperOffset.left;pos.top-=this.wrapperOffset.top;if(offsetX===true){offsetX=Math.round(el.offsetWidth/2-this.wrapper.offsetWidth/2)}if(offsetY===true){offsetY=Math.round(el.offsetHeight/2-this.wrapper.offsetHeight/2)}pos.left-=offsetX||0;pos.top-=offsetY||0;pos.left=pos.left>0?0:pos.left<this.maxScrollX?this.maxScrollX:pos.left;pos.top=pos.top>0?0:pos.top<this.maxScrollY?this.maxScrollY:pos.top;time=time===undefined||time===null||time==="auto"?Math.max(Math.abs(this.x-pos.left),Math.abs(this.y-pos.top)):time;this.scrollTo(pos.left,pos.top,time,easing)},_transitionTime:function(time){time=time||0;var durationProp=utils.style.transitionDuration;this.scrollerStyle[durationProp]=time+"ms";if(!time&&utils.isBadAndroid){this.scrollerStyle[durationProp]="0.0001ms";var self=this;rAF(function(){if(self.scrollerStyle[durationProp]==="0.0001ms"){self.scrollerStyle[durationProp]="0s"}})}if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].transitionTime(time)}}},_transitionTimingFunction:function(easing){this.scrollerStyle[utils.style.transitionTimingFunction]=easing;if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].transitionTimingFunction(easing)}}},_translate:function(x,y){if(this.options.useTransform){this.scrollerStyle[utils.style.transform]="translate("+x+"px,"+y+"px)"+this.translateZ}else{x=Math.round(x);y=Math.round(y);this.scrollerStyle.left=x+"px";this.scrollerStyle.top=y+"px"}this.x=x;this.y=y;if(this.indicators){for(var i=this.indicators.length;i--;){this.indicators[i].updatePosition()}}},_initEvents:function(remove){var eventType=remove?utils.removeEvent:utils.addEvent,target=this.options.bindToWrapper?this.wrapper:window;eventType(window,"orientationchange",this);eventType(window,"resize",this);if(this.options.click){eventType(this.wrapper,"click",this,true)}if(!this.options.disableMouse){eventType(this.wrapper,"mousedown",this);eventType(target,"mousemove",this);eventType(target,"mousecancel",this);eventType(target,"mouseup",this)}if(utils.hasPointer&&!this.options.disablePointer){eventType(this.wrapper,utils.prefixPointerEvent("pointerdown"),this);eventType(target,utils.prefixPointerEvent("pointermove"),this);eventType(target,utils.prefixPointerEvent("pointercancel"),this);eventType(target,utils.prefixPointerEvent("pointerup"),this)}if(utils.hasTouch&&!this.options.disableTouch){eventType(this.wrapper,"touchstart",this);eventType(target,"touchmove",this);eventType(target,"touchcancel",this);eventType(target,"touchend",this)}eventType(this.scroller,"transitionend",this);eventType(this.scroller,"webkitTransitionEnd",this);eventType(this.scroller,"oTransitionEnd",this);eventType(this.scroller,"MSTransitionEnd",this)},getComputedPosition:function(){var matrix=window.getComputedStyle(this.scroller,null),x,y;if(this.options.useTransform){matrix=matrix[utils.style.transform].split(")")[0].split(", ");x=+(matrix[12]||matrix[4]);y=+(matrix[13]||matrix[5])}else{x=+matrix.left.replace(/[^-\d.]/g,"");y=+matrix.top.replace(/[^-\d.]/g,"")}return{x:x,y:y}},_initIndicators:function(){var interactive=this.options.interactiveScrollbars,customStyle=typeof this.options.scrollbars!="string",indicators=[],indicator;var that=this;this.indicators=[];if(this.options.scrollbars){if(this.options.scrollY){indicator={el:createDefaultScrollbar("v",interactive,this.options.scrollbars),interactive:interactive,defaultScrollbars:true,customStyle:customStyle,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenX:false};this.wrapper.appendChild(indicator.el);indicators.push(indicator)}if(this.options.scrollX){indicator={el:createDefaultScrollbar("h",interactive,this.options.scrollbars),interactive:interactive,defaultScrollbars:true,customStyle:customStyle,resize:this.options.resizeScrollbars,shrink:this.options.shrinkScrollbars,fade:this.options.fadeScrollbars,listenY:false};this.wrapper.appendChild(indicator.el);indicators.push(indicator)}}if(this.options.indicators){indicators=indicators.concat(this.options.indicators)}for(var i=indicators.length;i--;){this.indicators.push(new Indicator(this,indicators[i]))}function _indicatorsMap(fn){if(that.indicators){for(var i=that.indicators.length;i--;){fn.call(that.indicators[i])}}}if(this.options.fadeScrollbars){this.on("scrollEnd",function(){_indicatorsMap(function(){this.fade()})});this.on("scrollCancel",function(){_indicatorsMap(function(){this.fade()})});this.on("scrollStart",function(){_indicatorsMap(function(){this.fade(1)})});this.on("beforeScrollStart",function(){_indicatorsMap(function(){this.fade(1,true)})})}this.on("refresh",function(){_indicatorsMap(function(){this.refresh()})});this.on("destroy",function(){_indicatorsMap(function(){this.destroy()});delete this.indicators})},_initWheel:function(){utils.addEvent(this.wrapper,"wheel",this);utils.addEvent(this.wrapper,"mousewheel",this);utils.addEvent(this.wrapper,"DOMMouseScroll",this);this.on("destroy",function(){clearTimeout(this.wheelTimeout);this.wheelTimeout=null;utils.removeEvent(this.wrapper,"wheel",this);utils.removeEvent(this.wrapper,"mousewheel",this);utils.removeEvent(this.wrapper,"DOMMouseScroll",this)})},_wheel:function(e){if(!this.enabled){return}e.preventDefault();var wheelDeltaX,wheelDeltaY,newX,newY,that=this;if(this.wheelTimeout===undefined){that._execEvent("scrollStart")}clearTimeout(this.wheelTimeout);this.wheelTimeout=setTimeout(function(){if(!that.options.snap){that._execEvent("scrollEnd")}that.wheelTimeout=undefined},400);if("deltaX"in e){if(e.deltaMode===1){wheelDeltaX=-e.deltaX*this.options.mouseWheelSpeed;wheelDeltaY=-e.deltaY*this.options.mouseWheelSpeed}else{wheelDeltaX=-e.deltaX;wheelDeltaY=-e.deltaY}}else if("wheelDeltaX"in e){wheelDeltaX=e.wheelDeltaX/120*this.options.mouseWheelSpeed;wheelDeltaY=e.wheelDeltaY/120*this.options.mouseWheelSpeed}else if("wheelDelta"in e){wheelDeltaX=wheelDeltaY=e.wheelDelta/120*this.options.mouseWheelSpeed}else if("detail"in e){wheelDeltaX=wheelDeltaY=-e.detail/3*this.options.mouseWheelSpeed}else{return}wheelDeltaX*=this.options.invertWheelDirection;wheelDeltaY*=this.options.invertWheelDirection;if(!this.hasVerticalScroll){wheelDeltaX=wheelDeltaY;wheelDeltaY=0}if(this.options.snap){newX=this.currentPage.pageX;newY=this.currentPage.pageY;if(wheelDeltaX>0){newX--}else if(wheelDeltaX<0){newX++}if(wheelDeltaY>0){newY--}else if(wheelDeltaY<0){newY++}this.goToPage(newX,newY);return}newX=this.x+Math.round(this.hasHorizontalScroll?wheelDeltaX:0);newY=this.y+Math.round(this.hasVerticalScroll?wheelDeltaY:0);this.directionX=wheelDeltaX>0?-1:wheelDeltaX<0?1:0;this.directionY=wheelDeltaY>0?-1:wheelDeltaY<0?1:0;if(newX>0){newX=0}else if(newX<this.maxScrollX){newX=this.maxScrollX}if(newY>0){newY=0}else if(newY<this.maxScrollY){newY=this.maxScrollY}this.scrollTo(newX,newY,0)},_initSnap:function(){this.currentPage={};if(typeof this.options.snap=="string"){this.options.snap=this.scroller.querySelectorAll(this.options.snap)}this.on("refresh",function(){var i=0,l,m=0,n,cx,cy,x=0,y,stepX=this.options.snapStepX||this.wrapperWidth,stepY=this.options.snapStepY||this.wrapperHeight,el;this.pages=[];if(!this.wrapperWidth||!this.wrapperHeight||!this.scrollerWidth||!this.scrollerHeight){return}if(this.options.snap===true){cx=Math.round(stepX/2);cy=Math.round(stepY/2);while(x>-this.scrollerWidth){this.pages[i]=[];l=0;y=0;while(y>-this.scrollerHeight){this.pages[i][l]={x:Math.max(x,this.maxScrollX),y:Math.max(y,this.maxScrollY),width:stepX,height:stepY,cx:x-cx,cy:y-cy};y-=stepY;l++}x-=stepX;i++}}else{el=this.options.snap;l=el.length;n=-1;for(;i<l;i++){if(i===0||el[i].offsetLeft<=el[i-1].offsetLeft){m=0;n++}if(!this.pages[m]){this.pages[m]=[]}x=Math.max(-el[i].offsetLeft,this.maxScrollX);y=Math.max(-el[i].offsetTop,this.maxScrollY);cx=x-Math.round(el[i].offsetWidth/2);cy=y-Math.round(el[i].offsetHeight/2);this.pages[m][n]={x:x,y:y,width:el[i].offsetWidth,height:el[i].offsetHeight,cx:cx,cy:cy};if(x>this.maxScrollX){m++}}}this.goToPage(this.currentPage.pageX||0,this.currentPage.pageY||0,0);if(this.options.snapThreshold%1===0){this.snapThresholdX=this.options.snapThreshold;this.snapThresholdY=this.options.snapThreshold}else{this.snapThresholdX=Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].width*this.options.snapThreshold);this.snapThresholdY=Math.round(this.pages[this.currentPage.pageX][this.currentPage.pageY].height*this.options.snapThreshold)}});this.on("flick",function(){var time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(this.x-this.startX),1e3),Math.min(Math.abs(this.y-this.startY),1e3)),300);this.goToPage(this.currentPage.pageX+this.directionX,this.currentPage.pageY+this.directionY,time)})},_nearestSnap:function(x,y){if(!this.pages.length){return{x:0,y:0,pageX:0,pageY:0}}var i=0,l=this.pages.length,m=0;if(Math.abs(x-this.absStartX)<this.snapThresholdX&&Math.abs(y-this.absStartY)<this.snapThresholdY){return this.currentPage}if(x>0){x=0}else if(x<this.maxScrollX){x=this.maxScrollX}if(y>0){y=0}else if(y<this.maxScrollY){y=this.maxScrollY}for(;i<l;i++){if(x>=this.pages[i][0].cx){x=this.pages[i][0].x;break}}l=this.pages[i].length;for(;m<l;m++){if(y>=this.pages[0][m].cy){y=this.pages[0][m].y;break}}if(i==this.currentPage.pageX){i+=this.directionX;if(i<0){i=0}else if(i>=this.pages.length){i=this.pages.length-1}x=this.pages[i][0].x}if(m==this.currentPage.pageY){m+=this.directionY;if(m<0){m=0}else if(m>=this.pages[0].length){m=this.pages[0].length-1}y=this.pages[0][m].y}return{x:x,y:y,pageX:i,pageY:m}},goToPage:function(x,y,time,easing){easing=easing||this.options.bounceEasing;if(x>=this.pages.length){x=this.pages.length-1}else if(x<0){x=0}if(y>=this.pages[x].length){y=this.pages[x].length-1}else if(y<0){y=0}var posX=this.pages[x][y].x,posY=this.pages[x][y].y;time=time===undefined?this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(posX-this.x),1e3),Math.min(Math.abs(posY-this.y),1e3)),300):time;this.currentPage={x:posX,y:posY,pageX:x,pageY:y};this.scrollTo(posX,posY,time,easing)},next:function(time,easing){var x=this.currentPage.pageX,y=this.currentPage.pageY;x++;if(x>=this.pages.length&&this.hasVerticalScroll){x=0;y++}this.goToPage(x,y,time,easing)},prev:function(time,easing){var x=this.currentPage.pageX,y=this.currentPage.pageY;x--;if(x<0&&this.hasVerticalScroll){x=0;y--}this.goToPage(x,y,time,easing)},_initKeys:function(e){var keys={pageUp:33,pageDown:34,end:35,home:36,left:37,up:38,right:39,down:40};var i;if(typeof this.options.keyBindings=="object"){for(i in this.options.keyBindings){if(typeof this.options.keyBindings[i]=="string"){this.options.keyBindings[i]=this.options.keyBindings[i].toUpperCase().charCodeAt(0)}}}else{this.options.keyBindings={}}for(i in keys){this.options.keyBindings[i]=this.options.keyBindings[i]||keys[i]}utils.addEvent(window,"keydown",this);this.on("destroy",function(){utils.removeEvent(window,"keydown",this)})},_key:function(e){if(!this.enabled){return}var snap=this.options.snap,newX=snap?this.currentPage.pageX:this.x,newY=snap?this.currentPage.pageY:this.y,now=utils.getTime(),prevTime=this.keyTime||0,acceleration=.25,pos;if(this.options.useTransition&&this.isInTransition){pos=this.getComputedPosition();this._translate(Math.round(pos.x),Math.round(pos.y));this.isInTransition=false}this.keyAcceleration=now-prevTime<200?Math.min(this.keyAcceleration+acceleration,50):0;switch(e.keyCode){case this.options.keyBindings.pageUp:if(this.hasHorizontalScroll&&!this.hasVerticalScroll){newX+=snap?1:this.wrapperWidth}else{newY+=snap?1:this.wrapperHeight}break;case this.options.keyBindings.pageDown:if(this.hasHorizontalScroll&&!this.hasVerticalScroll){newX-=snap?1:this.wrapperWidth}else{newY-=snap?1:this.wrapperHeight}break;case this.options.keyBindings.end:newX=snap?this.pages.length-1:this.maxScrollX;newY=snap?this.pages[0].length-1:this.maxScrollY;break;case this.options.keyBindings.home:newX=0;newY=0;break;case this.options.keyBindings.left:newX+=snap?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.up:newY+=snap?1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.right:newX-=snap?-1:5+this.keyAcceleration>>0;break;case this.options.keyBindings.down:newY-=snap?1:5+this.keyAcceleration>>0;break;default:return}if(snap){this.goToPage(newX,newY);return}if(newX>0){newX=0;this.keyAcceleration=0}else if(newX<this.maxScrollX){newX=this.maxScrollX;this.keyAcceleration=0}if(newY>0){newY=0;this.keyAcceleration=0}else if(newY<this.maxScrollY){newY=this.maxScrollY;this.keyAcceleration=0}this.scrollTo(newX,newY,0);this.keyTime=now},_animate:function(destX,destY,duration,easingFn){var that=this,startX=this.x,startY=this.y,startTime=utils.getTime(),destTime=startTime+duration;function step(){var now=utils.getTime(),newX,newY,easing;if(now>=destTime){that.isAnimating=false;that._translate(destX,destY);if(!that.resetPosition(that.options.bounceTime)){that._execEvent("scrollEnd")}return}now=(now-startTime)/duration;easing=easingFn(now);newX=(destX-startX)*easing+startX;newY=(destY-startY)*easing+startY;that._translate(newX,newY);if(that.isAnimating){rAF(step)}}this.isAnimating=true;step()},handleEvent:function(e){switch(e.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(e);break;case"orientationchange":case"resize":this._resize();break;case"transitionend":case"webkitTransitionEnd":case"oTransitionEnd":case"MSTransitionEnd":this._transitionEnd(e);break;case"wheel":case"DOMMouseScroll":case"mousewheel":this._wheel(e);break;case"keydown":this._key(e);break;case"click":if(this.enabled&&!e._constructed){e.preventDefault();e.stopPropagation()}break}}};function createDefaultScrollbar(direction,interactive,type){var scrollbar=document.createElement("div"),indicator=document.createElement("div");if(type===true){scrollbar.style.cssText="position:absolute;z-index:9999";indicator.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;position:absolute;background:rgba(0,0,0,0.5);border:1px solid rgba(255,255,255,0.9);border-radius:3px"}indicator.className="iScrollIndicator";if(direction=="h"){if(type===true){scrollbar.style.cssText+=";height:7px;left:2px;right:2px;bottom:0";indicator.style.height="100%"}scrollbar.className="iScrollHorizontalScrollbar"}else{if(type===true){scrollbar.style.cssText+=";width:7px;bottom:2px;top:2px;right:1px";indicator.style.width="100%"}scrollbar.className="iScrollVerticalScrollbar"}scrollbar.style.cssText+=";overflow:hidden";if(!interactive){scrollbar.style.pointerEvents="none"}scrollbar.appendChild(indicator);return scrollbar}function Indicator(scroller,options){this.wrapper=typeof options.el=="string"?document.querySelector(options.el):options.el;this.wrapperStyle=this.wrapper.style;this.indicator=this.wrapper.children[0];this.indicatorStyle=this.indicator.style;this.scroller=scroller;this.options={listenX:true,listenY:true,interactive:false,resize:true,defaultScrollbars:false,shrink:false,fade:false,speedRatioX:0,speedRatioY:0};for(var i in options){this.options[i]=options[i]}this.sizeRatioX=1;this.sizeRatioY=1;this.maxPosX=0;this.maxPosY=0;if(this.options.interactive){if(!this.options.disableTouch){utils.addEvent(this.indicator,"touchstart",this);utils.addEvent(window,"touchend",this)}if(!this.options.disablePointer){utils.addEvent(this.indicator,utils.prefixPointerEvent("pointerdown"),this);utils.addEvent(window,utils.prefixPointerEvent("pointerup"),this)}if(!this.options.disableMouse){utils.addEvent(this.indicator,"mousedown",this);utils.addEvent(window,"mouseup",this)}}if(this.options.fade){this.wrapperStyle[utils.style.transform]=this.scroller.translateZ;var durationProp=utils.style.transitionDuration;this.wrapperStyle[durationProp]=utils.isBadAndroid?"0.0001ms":"0ms";var self=this;if(utils.isBadAndroid){rAF(function(){if(self.wrapperStyle[durationProp]==="0.0001ms"){self.wrapperStyle[durationProp]="0s"}})}this.wrapperStyle.opacity="0"}}Indicator.prototype={handleEvent:function(e){switch(e.type){case"touchstart":case"pointerdown":case"MSPointerDown":case"mousedown":this._start(e);break;case"touchmove":case"pointermove":case"MSPointerMove":case"mousemove":this._move(e);break;case"touchend":case"pointerup":case"MSPointerUp":case"mouseup":case"touchcancel":case"pointercancel":case"MSPointerCancel":case"mousecancel":this._end(e);break}},destroy:function(){if(this.options.fadeScrollbars){clearTimeout(this.fadeTimeout);this.fadeTimeout=null}if(this.options.interactive){utils.removeEvent(this.indicator,"touchstart",this);utils.removeEvent(this.indicator,utils.prefixPointerEvent("pointerdown"),this);utils.removeEvent(this.indicator,"mousedown",this);utils.removeEvent(window,"touchmove",this);utils.removeEvent(window,utils.prefixPointerEvent("pointermove"),this);utils.removeEvent(window,"mousemove",this);utils.removeEvent(window,"touchend",this);utils.removeEvent(window,utils.prefixPointerEvent("pointerup"),this);utils.removeEvent(window,"mouseup",this)}if(this.options.defaultScrollbars){this.wrapper.parentNode.removeChild(this.wrapper)}},_start:function(e){var point=e.touches?e.touches[0]:e;e.preventDefault();e.stopPropagation();this.transitionTime();this.initiated=true;this.moved=false;this.lastPointX=point.pageX;this.lastPointY=point.pageY;this.startTime=utils.getTime();if(!this.options.disableTouch){utils.addEvent(window,"touchmove",this)}if(!this.options.disablePointer){utils.addEvent(window,utils.prefixPointerEvent("pointermove"),this)}if(!this.options.disableMouse){utils.addEvent(window,"mousemove",this)}this.scroller._execEvent("beforeScrollStart")},_move:function(e){var point=e.touches?e.touches[0]:e,deltaX,deltaY,newX,newY,timestamp=utils.getTime();if(!this.moved){this.scroller._execEvent("scrollStart")}this.moved=true;deltaX=point.pageX-this.lastPointX;this.lastPointX=point.pageX;deltaY=point.pageY-this.lastPointY;this.lastPointY=point.pageY;newX=this.x+deltaX;newY=this.y+deltaY;this._pos(newX,newY);e.preventDefault();e.stopPropagation()},_end:function(e){if(!this.initiated){return}this.initiated=false;e.preventDefault();e.stopPropagation();utils.removeEvent(window,"touchmove",this);utils.removeEvent(window,utils.prefixPointerEvent("pointermove"),this);utils.removeEvent(window,"mousemove",this);if(this.scroller.options.snap){var snap=this.scroller._nearestSnap(this.scroller.x,this.scroller.y);var time=this.options.snapSpeed||Math.max(Math.max(Math.min(Math.abs(this.scroller.x-snap.x),1e3),Math.min(Math.abs(this.scroller.y-snap.y),1e3)),300);if(this.scroller.x!=snap.x||this.scroller.y!=snap.y){this.scroller.directionX=0;this.scroller.directionY=0;this.scroller.currentPage=snap;this.scroller.scrollTo(snap.x,snap.y,time,this.scroller.options.bounceEasing)}}if(this.moved){this.scroller._execEvent("scrollEnd")}},transitionTime:function(time){time=time||0;var durationProp=utils.style.transitionDuration;this.indicatorStyle[durationProp]=time+"ms";if(!time&&utils.isBadAndroid){this.indicatorStyle[durationProp]="0.0001ms";var self=this;rAF(function(){if(self.indicatorStyle[durationProp]==="0.0001ms"){self.indicatorStyle[durationProp]="0s"}})}},transitionTimingFunction:function(easing){this.indicatorStyle[utils.style.transitionTimingFunction]=easing},refresh:function(){this.transitionTime();if(this.options.listenX&&!this.options.listenY){this.indicatorStyle.display=this.scroller.hasHorizontalScroll?"block":"none"}else if(this.options.listenY&&!this.options.listenX){this.indicatorStyle.display=this.scroller.hasVerticalScroll?"block":"none"}else{this.indicatorStyle.display=this.scroller.hasHorizontalScroll||this.scroller.hasVerticalScroll?"block":"none"}if(this.scroller.hasHorizontalScroll&&this.scroller.hasVerticalScroll){utils.addClass(this.wrapper,"iScrollBothScrollbars");utils.removeClass(this.wrapper,"iScrollLoneScrollbar");if(this.options.defaultScrollbars&&this.options.customStyle){if(this.options.listenX){this.wrapper.style.right="8px"}else{this.wrapper.style.bottom="8px"}}}else{utils.removeClass(this.wrapper,"iScrollBothScrollbars");utils.addClass(this.wrapper,"iScrollLoneScrollbar");if(this.options.defaultScrollbars&&this.options.customStyle){if(this.options.listenX){this.wrapper.style.right="2px"}else{this.wrapper.style.bottom="2px"}}}var r=this.wrapper.offsetHeight;if(this.options.listenX){this.wrapperWidth=this.wrapper.clientWidth;if(this.options.resize){this.indicatorWidth=Math.max(Math.round(this.wrapperWidth*this.wrapperWidth/(this.scroller.scrollerWidth||this.wrapperWidth||1)),8);this.indicatorStyle.width=this.indicatorWidth+"px"}else{this.indicatorWidth=this.indicator.clientWidth}this.maxPosX=this.wrapperWidth-this.indicatorWidth;if(this.options.shrink=="clip"){this.minBoundaryX=-this.indicatorWidth+8;this.maxBoundaryX=this.wrapperWidth-8}else{this.minBoundaryX=0;this.maxBoundaryX=this.maxPosX}this.sizeRatioX=this.options.speedRatioX||this.scroller.maxScrollX&&this.maxPosX/this.scroller.maxScrollX}if(this.options.listenY){this.wrapperHeight=this.wrapper.clientHeight;if(this.options.resize){this.indicatorHeight=Math.max(Math.round(this.wrapperHeight*this.wrapperHeight/(this.scroller.scrollerHeight||this.wrapperHeight||1)),8);this.indicatorStyle.height=this.indicatorHeight+"px"}else{this.indicatorHeight=this.indicator.clientHeight}this.maxPosY=this.wrapperHeight-this.indicatorHeight;if(this.options.shrink=="clip"){this.minBoundaryY=-this.indicatorHeight+8;this.maxBoundaryY=this.wrapperHeight-8}else{this.minBoundaryY=0;this.maxBoundaryY=this.maxPosY}this.maxPosY=this.wrapperHeight-this.indicatorHeight;this.sizeRatioY=this.options.speedRatioY||this.scroller.maxScrollY&&this.maxPosY/this.scroller.maxScrollY}this.updatePosition()},updatePosition:function(){var x=this.options.listenX&&Math.round(this.sizeRatioX*this.scroller.x)||0,y=this.options.listenY&&Math.round(this.sizeRatioY*this.scroller.y)||0;if(!this.options.ignoreBoundaries){if(x<this.minBoundaryX){if(this.options.shrink=="scale"){this.width=Math.max(this.indicatorWidth+x,8);this.indicatorStyle.width=this.width+"px"}x=this.minBoundaryX}else if(x>this.maxBoundaryX){if(this.options.shrink=="scale"){this.width=Math.max(this.indicatorWidth-(x-this.maxPosX),8);this.indicatorStyle.width=this.width+"px";x=this.maxPosX+this.indicatorWidth-this.width}else{x=this.maxBoundaryX}}else if(this.options.shrink=="scale"&&this.width!=this.indicatorWidth){this.width=this.indicatorWidth;this.indicatorStyle.width=this.width+"px"}if(y<this.minBoundaryY){if(this.options.shrink=="scale"){this.height=Math.max(this.indicatorHeight+y*3,8);this.indicatorStyle.height=this.height+"px"}y=this.minBoundaryY}else if(y>this.maxBoundaryY){if(this.options.shrink=="scale"){this.height=Math.max(this.indicatorHeight-(y-this.maxPosY)*3,8);this.indicatorStyle.height=this.height+"px";y=this.maxPosY+this.indicatorHeight-this.height}else{y=this.maxBoundaryY}}else if(this.options.shrink=="scale"&&this.height!=this.indicatorHeight){this.height=this.indicatorHeight;this.indicatorStyle.height=this.height+"px"}}this.x=x;this.y=y;if(this.scroller.options.useTransform){this.indicatorStyle[utils.style.transform]="translate("+x+"px,"+y+"px)"+this.scroller.translateZ}else{this.indicatorStyle.left=x+"px";this.indicatorStyle.top=y+"px"}},_pos:function(x,y){if(x<0){x=0}else if(x>this.maxPosX){x=this.maxPosX}if(y<0){y=0}else if(y>this.maxPosY){y=this.maxPosY}x=this.options.listenX?Math.round(x/this.sizeRatioX):this.scroller.x;y=this.options.listenY?Math.round(y/this.sizeRatioY):this.scroller.y;this.scroller.scrollTo(x,y)},fade:function(val,hold){if(hold&&!this.visible){return}clearTimeout(this.fadeTimeout);this.fadeTimeout=null;var time=val?250:500,delay=val?0:300;val=val?"1":"0";this.wrapperStyle[utils.style.transitionDuration]=time+"ms";this.fadeTimeout=setTimeout(function(val){this.wrapperStyle.opacity=val;this.visible=+val}.bind(this,val),delay)}};IScroll.utils=utils;if(typeof module!="undefined"&&module.exports){module.exports=IScroll}else if(typeof define=="function"&&define.amd){define(function(){return IScroll})}else{window.IScroll=IScroll}})(window,document,Math);"use strict";$.widget("wm.datatable",{options:{data:[],statusMsg:"",colDefs:[],rowActions:[],headerConfig:[],sortInfo:{field:"",direction:""},isMobile:false,enableSort:true,filtermode:"",filteronkeypress:false,caseinsensitive:false,activeRow:undefined,isrowselectable:false,allowpagesizechange:false,height:"100%",showHeader:true,selectFirstRow:false,showNewRow:true,showRowIndex:false,enableRowSelection:true,enableColumnSelection:false,multiselect:false,headerselectall:false,multiselecttitle:"",multiselectarialabel:"",radioselecttitle:"",radioselectarialabel:"",filterNullRecords:true,navigation:"",isdynamictable:"",cssClassNames:{tableRow:"app-datagrid-row",headerCell:"app-datagrid-header-cell",groupHeaderCell:"app-datagrid-group-header-cell",tableCell:"app-datagrid-cell",grid:"",gridDefault:"table",gridBody:"app-datagrid-body",gridFooter:"app-datagrid-footer",deleteRow:"danger",ascIcon:"wi wi-long-arrow-up",descIcon:"wi wi-long-arrow-down",selectedColumn:"selected-column",rowExpandIcon:"wi wi-minus-square",rowCollapseIcon:"wi wi-plus-square",gridRowExpansionClass:"table-row-expansion",expandedRowClass:"expanded"},dataStates:{loading:"Loading...",ready:"",error:"An error occurred in loading the data.",nodata:"No data found."},messages:{selectField:"Select Field"},loadingicon:"",startRowIndex:1,editmode:"",actionsEnabled:{edit:true,new:true},rowExpansionEnabled:false,rowDef:{position:"0",closeothers:false,columnwidth:"50px"},summaryRow:false,summaryRowDefs:[],summaryRowDefsObject:[],searchHandler:function(){},sortHandler:function(){}},customColumnDefs:{checkbox:{field:"checkbox",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"width: 50px; text-align: center;",textAlignment:"center",isMultiSelectCol:true,show:true,multiselecttitle:"",multiselectarialabel:""},radio:{field:"radio",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"width: 50px; text-align: center;",textAlignment:"center",show:true,radioselecttitle:"",radioselectarialabel:""},__expand:{field:"__expand",type:"custom",displayName:"",sortable:false,searchable:false,resizable:false,selectable:false,readonly:true,style:"text-align: center;",textAlignment:"center",show:true,width:"50px"},rowIndex:{field:"rowIndex",type:"custom",displayName:"S. No.",sortable:false,searchable:false,selectable:false,readonly:true,style:"text-align: left;",textAlignment:"left",show:true}},CONSTANTS:{QUICK_EDIT:"quickedit",INLINE:"inline",FORM:"form",DIALOG:"dialog",SEARCH:"search",MULTI_COLUMN:"multicolumn"},Utils:{random:function(){return Math.floor((1+Math.random())*65536).toString(16).substring(1)},isDefined:function(value){return value!==undefined},isObject:function(value){return value!==null&&typeof value==="object"},getObjectIndex:function(data,obj){var matchIndex=-1;if(!Array.isArray(data)){return-1}data.some(function(data,index){if(_.isEqual(data,obj)){matchIndex=index;return true}});return matchIndex},generateGuid:function(){var random=this.random;return random()+random()+"-"+random()+"-"+random()+"-"+random()+"-"+random()+random()+random()},isValidHtml:function(htm){var validHtmlRegex=/<[a-z][\s\S]*>/i;return validHtmlRegex.test(htm)},isMac:function(){return navigator.platform.toUpperCase().indexOf("MAC")>=0},isDeleteKey:function(event){return this.isMac()&&event.which===8||event.which===46}},_setStyles:function($el,styleString){if(!styleString){return}var styles=styleString.split(";");styles.forEach(function(styleBit){var parts=styleBit.split(":");var property,value;if(parts.length===2){property=parts[0].trim();value=parts[1].trim();$el.css(property,value)}});return styleString},_getColumnSortDirection:function(field){var sortInfo=this.options.sortInfo;return field===sortInfo.field?sortInfo.direction:""},_toggleSpacingClasses:function(value){switch(value){case"normal":this.tableContainer.removeClass("table-condensed");if(this.gridSearch){this.gridSearch.find(".form-group").removeClass("form-group-sm");this.gridSearch.find("select").removeClass("input-sm");this.gridSearch.find(".input-group").removeClass("input-group-sm")}break;case"condensed":this.tableContainer.addClass("table-condensed");if(this.gridSearch){this.gridSearch.find(".form-group").addClass("form-group-sm");this.gridSearch.find("select").addClass("input-sm");this.gridSearch.find(".input-group").addClass("input-group-sm")}break}},_getColSpan:function(cols){var colSpan=0,self=this;_.forEach(cols,function(col){var colDef;if(col.isGroup){colSpan+=self._getColSpan(col.columns)}else{colDef=_.find(self.preparedHeaderData,{field:col.field});colSpan=!_.isUndefined(colDef.show)&&!colDef.show?colSpan:colSpan+1}});return colSpan},_setColSpan:function(config){var self=this;_.forEach(config,function(col){if(col.isGroup){col.colspan=self._getColSpan(col.columns);self.gridHeaderElement.find('th[data-col-group="'+col.field+'"]').attr("colspan",col.colspan);self._setColSpan(col.columns)}})},_getHeaderTemplate:function(){var $colgroup=$("<colgroup></colgroup>"),$htm=this.gridHeaderElement.empty(),isDefined=this.Utils.isDefined,sortInfo=this.options.sortInfo,sortField=sortInfo.field,self=this,rowTemplates=[],headerConfig=this.options.headerConfig,headerGroupClass=self.options.cssClassNames.groupHeaderCell,$row;function generateHeaderCell(value,index){var id=index,field=value.field,headerLabel=self.Utils.isDefined(value.displayName)?value.displayName:field||"",titleLabel=headerLabel,sortEnabled=self.options.enableSort&&(_.isUndefined(value.show)||value.show)&&(_.isUndefined(value.sortable)||value.sortable),headerClasses=self.options.cssClassNames.headerCell,sortClass,tl="",$th,$col,$sortSpan,$sortIcon;headerLabel=!self.Utils.isDefined(headerLabel)||headerLabel===""?" ":headerLabel;$col=$("<col/>");if(value.style){self._setStyles($col,value.style)}$colgroup.append($col);if(isDefined(value.class)){headerClasses+=" "+value.class}if(value.selected){headerClasses+=" "+self.options.cssClassNames.selectedColumn+" "}if(field==="checkbox"||field==="radio"){headerClasses+=" grid-col-small"}tl+="<th";if((_.isUndefined(value.resizable)||value.resizable)&&(_.isUndefined(value.show)||value.show)){tl+=" data-col-resizable"}if(self.options.enableColumnSelection&&(_.isUndefined(value.selectable)||value.selectable)){tl+=" data-col-selectable"}if(sortEnabled){tl+=" data-col-sortable"}tl+="></th>";$th=$(tl);$th.attr({"data-col-id":id,"data-col-field":field,title:titleLabel,tabindex:0,scope:"col",role:"columnheader"});self._setStyles($th,"text-align: "+value.textAlignment);$th.addClass(headerClasses);if(field==="checkbox"){$th.append(self._getCheckbox())}if(field==="radio"){$th.attr("aria-label","Select row")}$th.append('<span class="header-data">'+headerLabel+"</span>");if(sortEnabled){$sortSpan=$('<span class="sort-buttons-container"></span>');$sortIcon=$('<i class="sort-icon"></i>');if(sortField&&sortField===value.field&&sortInfo.direction){sortClass=sortInfo.direction==="asc"?self.options.cssClassNames.ascIcon:self.options.cssClassNames.descIcon;$sortSpan.addClass("active");$sortIcon.addClass(sortClass+" "+sortInfo.direction)}$th.append($sortSpan.append($sortIcon))}return $th}function generateRow(cols,i){var $thList=[];_.forEach(cols,function(col){var index,value,classes,styles,$groupTl;if(col.columns&&col.columns.length){$groupTl=$("<th></th>");classes=headerGroupClass+" "+(col.class||"");styles="text-align: "+col.textAlignment+";background-color: "+(col.backgroundColor||"")+";";$groupTl.attr({"data-col-group":col.field,class:classes,title:col.displayName,tabindex:0});self._setStyles($groupTl,styles);$groupTl.append('<span class="header-data">'+col.displayName+"</span>");$thList.push($groupTl);generateRow(col.columns,i+1)}else{index=_.findIndex(self.preparedHeaderData,{field:col.field});value=self.preparedHeaderData[index];if(value){$thList.push(generateHeaderCell(value,index))}}});rowTemplates[i]=rowTemplates[i]||[];rowTemplates[i]=rowTemplates[i].concat($thList)}if(_.isEmpty(headerConfig)){$row=$("<tr></tr>");self.preparedHeaderData.forEach(function(value,index){$row.append(generateHeaderCell(value,index))});$htm.append($row)}else{generateRow(headerConfig,0);rowTemplates.forEach(function($thList,index){$row=$('<tr role="row" tabindex="0"></tr>');var rowSpan=rowTemplates.length-index;$thList.forEach(function($th){if(rowSpan>1&&$th.hasClass("app-datagrid-header-cell")){$th.attr("rowspan",rowSpan)}$row.append($th)});$htm.append($row)})}return{colgroup:$colgroup,header:$htm}},_getSearchEl:function(){var htm,sel='<select name="wm-datatable" data-element="dgFilterValue" '+'class="form-control app-select">'+'<option value="" selected class="placeholder">'+this.options.messages.selectField+"</option>",searchLabel=this.Utils.isDefined(this.options.searchLabel)&&this.options.searchLabel.length?this.options.searchLabel:"";this.options.colDefs.forEach(function(colDef,index){if(colDef.field!=="none"&&colDef.field!=="rowOperations"&&colDef.searchable&&_.toString(colDef.showinfilter)!=="false"){sel+='<option value="'+colDef.field+'" data-coldef-index="'+index+'">'+(colDef.displayName||colDef.field)+"</option>"}});sel+="</select>";htm='<form class="form-search form-inline" onsubmit="return false;"><div class="form-group">'+'<input type="text" data-element="dgSearchText" class="form-control app-textbox" value="" placeholder="'+searchLabel+'"/>'+'</div><div class="input-append input-group">'+sel+'<span class="input-group-addon"><button type="button" data-element="dgSearchButton" class="app-search-button" title="'+searchLabel+'">'+'<i class="wi wi-search"></i>'+"</button></span>"+"</div>"+"</div></form>";var $htm=$(htm);this._setStyles($htm.find('[data-element="dgSearchText"]'),"display: inline-block;");return $htm},_appendRowExpansionButtons:function($htm){var self=this;$htm.find("[data-identifier='rowExpansionButtons']").each(function(index){var _rowData,$row,rowId,rowIndex=index;$row=$(this).closest("tr.app-datagrid-row");rowId=parseInt($row.attr("data-row-id"),10);_rowData=_.clone(self.options.data[rowId]);_rowData.$index=rowIndex+1;self.options.generateRowExpansionCell(_rowData,rowIndex);$(this).empty().append(self.options.getRowExpansionAction(rowIndex));var expandtitleExpr=$(this).children()[0].getAttribute("expandtitle.bind"),collapsetitleExpr=$(this).children()[0].getAttribute("collapsetitle.bind");if(expandtitleExpr){self.options.registerCollapseOrExpandTitleWatch(expandtitleExpr,_rowData,rowIndex,"expandtitle",$(this).children()[0])}if(collapsetitleExpr){self.options.registerCollapseOrExpandTitleWatch(collapsetitleExpr,_rowData,rowIndex,"collapsetitle",$(this).children()[0])}})},setSummaryRowDef:function(key,data,rowIndex,refreshIndicator){this.options.summaryRow=true;if(this.options.summaryRowDefs[rowIndex]==undefined){this.options.summaryRowDefs[rowIndex]={};this.options.summaryRowDefsObject[rowIndex]={}}this.options.summaryRowDefsObject[rowIndex][key]=data;this.options.summaryRowDefs[rowIndex][key]=data&&data.value?data.value:data;if(refreshIndicator)this.refreshGridData()},_getSummaryRowTemplate:function(){var self=this,$tfoot=$('<tfoot class="'+this.options.cssClassNames.gridFooter+'"></tfoot>');this._setStyles($tfoot,"border-top: 3px solid #eee;");_.forEach(this.options.summaryRowDefs,function(row,index){row.$$pk=index;$tfoot.append(self._getRowTemplate(row,index,true))});return $tfoot},getPageStartIndex:function(){var getCurrentPageFn=this.options.getCurrentPage;var getPageSizeFn=this.options.getPageSize;var currentPage,pagesize;if(!getCurrentPageFn||typeof getCurrentPageFn!=="function"){currentPage=1}else{currentPage=getCurrentPageFn()}if(!getPageSizeFn||typeof getPageSizeFn!=="function"){pagesize=10}else{pagesize=getPageSizeFn()}var isPrevPageUpdated=this.options.actionRowPage<currentPage;var pageIndex=isPrevPageUpdated?this.options.actionRowPage:currentPage;return(pageIndex-1)*pagesize},_getPreparedDataForInfiniteScroll:function($tbody,preparedData){preparedData=preparedData.filter(function(row,index){var isExists=$tbody.find("tr.app-datagrid-row[data-row-id="+row.$$pk+"]");if(!isExists.length){return row}});return preparedData},_updateTrData:function($tbody){var editedRow,updatedRowData,self=this;editedRow=$tbody.find("tr.app-datagrid-row[data-row-id="+self.options.actionRowIndex+"]");updatedRowData=self.preparedData[self.options.actionRowIndex];self.options.generateCustomExpressions(updatedRowData,self.options.actionRowIndex);var rowTemplate=self._getRowTemplate(updatedRowData,self.options.actionRowIndex);editedRow.replaceWith(rowTemplate[0])},_handleCRUDForInfiniteScroll:function($tbody){var self=this;if((self.options.lastActionPerformed===self.options.ACTIONS.SEARCH_OR_SORT||self.options.lastActionPerformed===self.options.ACTIONS.FILTER_CRITERIA||self.options.lastActionPerformed===self.options.ACTIONS.DATASET_UPDATE)&&(self.options.isSearchTrigerred||self.options.isDatasetUpdated||self.options.isDataUpdatedByUser)){$tbody.html("");if(this.options.navigation==="On-Demand"&&!this.options.isLastPage)this.element.find(".on-demand-datagrid").show();self.options.clearCustomExpression();self.options.clearRowDetailExpression();self.options.setIsSearchTrigerred(false);self.options.setIsDatasetUpdated(false)}else if(self.options.lastActionPerformed===self.options.ACTIONS.EDIT&&self.options.actionRowIndex!==undefined&&self.options.editmode!==this.CONSTANTS.QUICK_EDIT){self._updateTrData($tbody)}},_getGridTemplate:function(){var self=this,preparedData,$tbody,pageStartIndex=self.getPageStartIndex(),startRowIndex=self.options.startRowIndex,isScrollorOnDemand=self.options.isNavTypeScrollOrOndemand();var $activeRow=self.gridElement.find("tr.row-editing:not(.always-new-row)").first();var index=$activeRow.index();if(isScrollorOnDemand){$tbody=this.gridElement;if(this.renderTableOnViewLess){$tbody=this.gridElement.empty();this.hideLoadingIndicator();this.renderTableOnViewLess=false}}else{$tbody=this.gridElement.empty()}if(isScrollorOnDemand){this._handleCRUDForInfiniteScroll($tbody);if(self.options.lastActionPerformed===self.options.ACTIONS.DELETE){startRowIndex=self.options.actionRowIndex+1}preparedData=this._getPreparedDataForInfiniteScroll($tbody,this.preparedData.slice(pageStartIndex))}else{this.options.clearCustomExpression();this.options.clearRowDetailExpression();preparedData=this.preparedData}_.forEach(preparedData,function(row,index){var _row=_.clone(row),rowIndex=isScrollorOnDemand?startRowIndex+index-1:index,rowTemplate;_row.$index=rowIndex+1;self.options.generateCustomExpressions(_row,rowIndex);self.options.registerRowNgClassWatcher(_row,rowIndex);rowTemplate=self._getRowTemplate(row,rowIndex);$tbody.append(rowTemplate);if(self.options.rowExpansionEnabled){var rowHeight=self.options.rowDef.height;var colSpanLength=_.filter(self.preparedHeaderData,function(c){return c.show}).length;var $tr=$('<tr class="app-datagrid-detail-row" tabindex="0" role="row" data-row-id="'+row.$$pk+'"><td colspan="'+colSpanLength+'" class="app-datagrid-row-details-cell">'+'<div class="row-overlay"><div class="row-status"><i class="'+self.options.loadingicon+'"></i></div></div><div class="details-section"></div>'+"</td></tr>");if(rowHeight){$tr.find("div.row-overlay").css("min-height",rowHeight)}$tr.css("display","none");$tr.find(".details-section").css("display","none");$tbody.append($tr)}});if(!this.options.isdynamictable){this.options.setLastActionPerformed(this.options.ACTIONS.DEFAULT);this.options.setIsDataUpdatedByUser(false);this.options.clearActionRowIndex()}if(this.options.editmode===this.CONSTANTS.QUICK_EDIT){if(index>=0){const $newActiveRow=self.gridElement.find("tr").eq(index);if($newActiveRow&&$newActiveRow.length){$newActiveRow.addClass("active");$newActiveRow.trigger("click",[undefined,{action:"edit",skipFocus:false}]);self.setActiveRow($newActiveRow);self.focusActiveRow()}}}return $tbody},_getRowTemplate:function(row,rowIndex,summaryRow){var $htm,self=this,gridOptions=self.options;$htm=$('<tr role="row" tabindex="0" class="'+gridOptions.cssClassNames.tableRow+" "+(gridOptions.rowClass||"")+'" data-row-id="'+row.$$pk+'"></tr>');this.preparedHeaderData.forEach(function(current,colIndex){$htm.append(self._getColumnTemplate(row,colIndex,current,rowIndex,summaryRow))});return $htm},_getRowActionsColumnDefIndex:function(){var i,len=this.preparedHeaderData.length;for(i=0;i<len;i+=1){if(this.preparedHeaderData[i].field==="rowOperations"){return i}}return-1},_getRowActionsColumnDef:function(){var index=this._getRowActionsColumnDefIndex();if(index!==-1){return this.preparedHeaderData[index]}return null},_getCheckboxTemplate:function(row,isMultiSelectCol){var checked=row._checked===true?" checked":"",disabled=row.disabed?" disabled":"",chkBoxName=isMultiSelectCol?"gridMultiSelect":"",labelClass=row._checked===true?"":"unchecked";return this._getCheckbox(labelClass,chkBoxName,checked,disabled)},_getCheckbox:function(labelClass="",chkBoxName="",checked="",disabled=""){return`<div class="app-checkbox checkbox">\n <label class="${labelClass}">\n <span class="sr-only" aria-live="assertive">${this._getCheckboxLabel(chkBoxName)}</span>\n <input type="checkbox" name="${chkBoxName}" ${checked} ${disabled} role="checkbox">\n <span class="caption"></span>\n </label>\n </div>`},_getCheckboxLabel:function(chkBoxName){if(chkBoxName){return"Select row"}else{return"Select all rows"}},_getRadioTemplate:function(row){var checked=row._checked===true?" checked":"",disabled=row.disabed?" disabled":"";return`<div class="radio app-radio">\n <label>\n <input type="radio" rowSelectInput name="" value="" ${checked} ${disabled}>\n <span class="caption"></span>\n </label>\n </div>`},_getColumnTemplate:function(row,colId,colDef,rowIndex,summaryRow){var $htm,columnValue,columnValueObject,cellPreloader='<div class="overlay"><span aria-hidden="true" class="form-field-spinner fa fa-circle-o-notch fa-spin form-control-feedback"></span></div>',customExpressionHtml,innerTmpl,classes=this.options.cssClassNames.tableCell+" "+(colDef.class||""),colExpression=colDef.customExpression,styles="text-align: "+colDef.textAlignment+";position: relative;";$htm=$('<td class="'+classes+'" data-col-id="'+colId+'" role="cell" tabindex="0"></td>');this._setStyles($htm,styles);columnValue=_.get(row,colDef.field);if(summaryRow){columnValueObject=this.options.summaryRowDefsObject[rowIndex][colDef.field];if(columnValueObject instanceof Object){if(columnValueObject.class){$htm.addClass(columnValueObject.class)}}if(columnValue instanceof Promise){customExpressionHtml=cellPreloader;$htm.html(customExpressionHtml)}else{innerTmpl=_.isUndefined(columnValue)||columnValue===null?"":columnValue;$htm.html(innerTmpl)}}else if(colExpression){$htm.html(this.options.getCustomExpression(colDef.field,rowIndex))}else{if(colDef.type!=="custom"){columnValue=_.get(row,colDef.field);if(this.options.filterNullRecords&&columnValue===null||_.isUndefined(columnValue)){columnValue=""}$htm.attr("title",columnValue);$htm.text(""+columnValue)}else{switch(colDef.field){case"checkbox":if(Array.isArray(this.options.multiselecttitle)){$htm.attr("title",this.options.multiselecttitle[row.$$index-1])}else{$htm.attr("title",this.options.multiselecttitle)}if(Array.isArray(this.options.multiselectarialabel)){$htm.attr("aria-label",this.options.multiselectarialabel[row.$$index-1])}else{$htm.attr("aria-label",this.options.multiselectarialabel)}innerTmpl=this._getCheckboxTemplate(row,colDef.isMultiSelectCol);break;case"__expand":innerTmpl='<span class="row-expansion-column" data-identifier="rowExpansionButtons"></span>';break;case"radio":if(Array.isArray(this.options.radioselecttitle)){$htm.attr("title",this.options.radioselecttitle[row.$$index-1])}else{$htm.attr("title",this.options.radioselecttitle)}if(Array.isArray(this.options.radioselectarialabel)){$htm.attr("aria-label",this.options.radioselectarialabel[row.$$index-1])}else{$htm.attr("aria-label",this.options.radioselectarialabel)}innerTmpl=this._getRadioTemplate(row);break;case"rowOperations":innerTmpl='<span class="actions-column" data-identifier="actionButtons"></span>';break;case"rowIndex":innerTmpl=row.$$index;break;case"none":innerTmpl="";break;default:innerTmpl=_.isUndefined(columnValue)||columnValue===null?"":columnValue}$htm.html(innerTmpl)}}row.$index=rowIndex+1;this.options.registerColNgClassWatcher(row,colDef,rowIndex,colId,summaryRow);return $htm},_getEventTemplate:function(colDef){var events=_.filter(_.keys(colDef),function(key){return _.startsWith(key,"on")}),changeEvt,template="";changeEvt=colDef.editWidgetType==="autocomplete"?"onSubmit":"onChange";events=_.union(events,[changeEvt]);_.forEach(events,function(eventName){template+=" "+_.kebabCase(eventName)+'="';if(eventName==="onSubmit"||eventName==="onChange"){template+="_"+eventName+"Field($event, $scope, newVal, oldVal);"}template+=(colDef[eventName]||"")+'" '});return template},_insertFieldInHeaderConfig:function(headerConfig,fieldName,position){var index=_.findIndex(headerConfig,{field:position}),self=this;if(index===-1){_.forEach(headerConfig,function(config){if(config.isGroup){self._insertFieldInHeaderConfig(config.columns,fieldName,position)}})}else{headerConfig.splice(index+1,0,{field:fieldName,isPredefined:true})}},setHeaderConfigForDefaultFields:function(name,position){if(_.isEmpty(this.options.headerConfig)){return}var fieldName=this.customColumnDefs[name].field;_.remove(this.options.headerConfig,{field:fieldName});if(position==="0"){this.options.headerConfig.unshift({field:fieldName,isPredefined:true})}else if(position==="-1"){this.options.headerConfig.push({field:fieldName,isPredefined:true})}else{this._insertFieldInHeaderConfig(this.options.headerConfig,fieldName,position)}},setDefaultColsData:function(header){if(_.isEmpty(this.preparedHeaderData)){return}var rowExpandPosition,rowExpandCol;if(this.options.rowExpansionEnabled){rowExpandPosition=this.options.rowDef.position;rowExpandCol=_.clone(this.customColumnDefs.__expand);rowExpandCol.width=this.options.rowDef.columnwidth;if(header){if(rowExpandPosition==="-1"){this.preparedHeaderData.push(rowExpandCol)}else if(rowExpandPosition==="0"){this.preparedHeaderData.unshift(rowExpandCol)}else{var index=_.findIndex(this.preparedHeaderData,{field:rowExpandPosition});this.preparedHeaderData.splice(index+1,0,rowExpandCol)}}this.setHeaderConfigForDefaultFields("__expand",rowExpandPosition)}if(this.options.showRowIndex){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.rowIndex)}this.setHeaderConfigForDefaultFields("rowIndex","0")}if(this.options.multiselect){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.checkbox)}this.setHeaderConfigForDefaultFields("checkbox","0")}if(!this.options.multiselect&&this.options.showRadioColumn){if(header){this.preparedHeaderData.unshift(this.customColumnDefs.radio)}this.setHeaderConfigForDefaultFields("radio","0")}},_prepareHeaderData:function(){this.preparedHeaderData=[];$.extend(this.preparedHeaderData,this.options.colDefs);this.setDefaultColsData(true)},_generateCustomColDefs:function(){var colDefs=[],generatedColDefs={};function generateColumnDef(key){if(!generatedColDefs[key]){var colDef={type:"string",field:key};colDefs.push(colDef);generatedColDefs[key]=true}}this.options.data.forEach(function(item){_.keys(item).forEach(generateColumnDef)});this.options.colDefs=colDefs;this._prepareHeaderData()},_prepareData:function(){var data=[],colDefs=this.options.colDefs,self=this,gridData=[],pageStartIndex=self.getPageStartIndex(),isObject=this.Utils.isObject,isDefined=this.Utils.isDefined;if(!this.options.colDefs.length&&this.options.data.length){this._generateCustomColDefs()}gridData=this.options.isNavTypeScrollOrOndemand()?this.options.data.slice(pageStartIndex):this.options.data;gridData.forEach(function(item,i){var rowData=$.extend(true,{},item);colDefs.forEach(function(colDef){if(!colDef.field){return}var fields=colDef.field.split("."),text=item,j,len=fields.length,key,isArray;for(j=0;j<len;j++){key=fields[j];isArray=undefined;if(key.indexOf("[0]")!==-1){key=key.replace("[0]","");isArray=true}if(isObject(text)&&!isArray){text=_.get(text,key)}else if(isArray){text=_.get(text,key+"[0]")}else{text=undefined;break}}if(isDefined(text)){rowData[colDef.field]=text}else if(fields.length>1&&_.has(item,colDef.field)){rowData[colDef.field]=item[colDef.field]}});rowData.$$index=pageStartIndex+i+1;rowData.$$pk=self.options.isNavTypeScrollOrOndemand()?pageStartIndex+i:i;data.push(rowData)});if(self.options.isNavTypeScrollOrOndemand()){if(self.options.isSearchTrigerred&&!self.emptySearch||self.options.isDatasetUpdated){self.preparedData=data}else if(self.preparedData.length){data.forEach(function(rowData,index){var rowId=pageStartIndex+index;if(self.preparedData[rowId]&&rowData.$$index===self.preparedData[rowId].$$index){self.preparedData[rowId]=rowData}else{self.preparedData.push(rowData)}})}else{self.preparedData.push(...data)}}else{self.preparedData=data}},_reselectColumns:function(){var selectedColumns=[],self=this;if(this.gridHeaderElement&&this.options.enableColumnSelection){selectedColumns=this.gridHeaderElement.find("th."+this.options.cssClassNames.selectedColumn);if(selectedColumns.length){selectedColumns.each(function(){self.columnSelectionHandler(undefined,$(this))})}}if(this.options.multiselect){this.updateSelectAllCheckboxState()}},_create:function(){$.extend(this,{dataStatus:{message:"",state:"ready"},preparedData:[],preparedHeaderData:[],dataStatusContainer:null,gridContainer:null,gridElement:null,gridHeader:null,gridBody:null,columnClickInfo:{},gridFooter:null,gridSearch:null,tableId:null,searchObj:{field:"",value:"",event:null},compiledCellTemplates:{},boundRowClickHandlerOnCapture:null});this._setStatus=_.debounce(function(isCreated){this.__setStatus(isCreated)},100);this._debounceOnEnter=_.debounce(function($target,$row,quickEdit,event){this._onEnter($target,$row,quickEdit,event)},150);this.options.summaryRow=false;this.options.summaryRowDefs=[];this._prepareHeaderData();this._prepareData();this._render(true)},_setGridEditMode:function(val){if(_.isFunction(this.options.setGridEditMode)){this.options.setGridEditMode(val)}},_refreshGrid:function(){this._prepareHeaderData();this._prepareData();this._render();this.addOrRemoveScroll();this._setGridEditMode(false)},refreshGrid:function(){window.clearTimeout(this.refreshGridTimeout);this.refreshGridTimeout=window.setTimeout(this._refreshGrid.bind(this),50)},callRenderGridForInfiniteScroll:function(){this.gridFooter.remove();var $alwaysNewRow=this.gridElement.find("> tr.app-datagrid-row.always-new-row");if($alwaysNewRow.length){$alwaysNewRow.remove()}this._renderGrid(undefined)},refreshGridData:function(){this._prepareData();if(!this.options.isNavTypeScrollOrOndemand()){this.gridFooter.remove();this._renderGrid()}else{this.callRenderGridForInfiniteScroll()}this._reselectColumns();this.addOrRemoveScroll();this._setGridEditMode(false);this.toggleNewRowActions(false)},setDefaultRowData:function(rowData){_.forEach(this.preparedHeaderData,function(colDef){rowData[colDef.field]=colDef.defaultvalue})},addNewRow:function(skipFocus,alwaysNewRow){var rowId=this.gridElement.find("> tr.app-datagrid-row:visible").length||99999,self=this,rowData={},$row,$gridBody,$alwaysNewRow;if(!alwaysNewRow&&_.isFunction(this.options.beforeRowInsert)){this.options.beforeRowInsert()}$gridBody=this.gridElement;$alwaysNewRow=$gridBody.find("> tr.app-datagrid-row.always-new-row");if($alwaysNewRow.length){this.setFocusOnElement(undefined,$alwaysNewRow);if(this.options.editmode===this.CONSTANTS.QUICK_EDIT){var $qTarget=$alwaysNewRow.find("input").length>0?$($alwaysNewRow.find("input")[0]):null;if($qTarget!==null){var event=$.Event("keydown");event.which=13;$qTarget.trigger(event)}}return}rowData.$index=rowId;rowData.$$pk=rowId;if(this.options.editmode!==this.CONSTANTS.FORM&&this.options.editmode!==this.CONSTANTS.DIALOG){$row=$(this._getRowTemplate(rowData,rowData.$index));if(!this.preparedData.length){this.setStatus("ready",this.dataStatus.ready)}if(this.options.formPosition==="top"){$gridBody.prepend($row)}else{$gridBody.append($row)}this._appendRowActions($row,true,rowData);this.attachEventHandlers($row);if(alwaysNewRow||this.options.editmode!==this.CONSTANTS.QUICK_EDIT){$row.find(".delete-row-button").hide();if(alwaysNewRow){$row.find(".edit-row-button").hide()}}this._findAndReplaceCompiledTemplates();if(alwaysNewRow){this.setDefaultRowData(rowData);$row.addClass("always-new-row").addClass("row-editing");this.options.runInNgZone(function(){self.makeRowEditable($row,rowData,true)})}else{$row.trigger("click",[undefined,{action:"edit",operation:"new",skipFocus:skipFocus}])}this.updateSelectAllCheckboxState();this.addOrRemoveScroll();this.options.timeoutCall(function(){self.setColGroupWidths()},100)}},addLoadMoreBtn:function(onDemandMsg,loadingdatamsg,cb,infScroll){var $btnEl;if(!this.options.isLastPage||infScroll){var self=this;var $parenEl=$('<div class="on-demand-datagrid"><a class="app-button btn btn-block on-demand-load-btn"></a></div>');$btnEl=$parenEl.find("a");$btnEl.append(onDemandMsg);this.element.find(".app-grid-header-inner").append($parenEl);if(infScroll){if(this.element.find(".on-demand-load-btn").length){this.element.find(".on-demand-load-btn").text(this.options.viewlessmessage)}}$btnEl.on("click",function(e){var lastPage=self.options.getCurrentPage()==self.options.getPageCount();if(!lastPage){self.showLoadingIndicator(loadingdatamsg,false)}if(!self.options.showviewlessbutton){$btnEl.hide()}if(infScroll){if(lastPage){self.element.find(".on-demand-datagrid").remove()}}if(lastPage&&self.options.showviewlessbutton){$btnEl.hide();self.renderTableOnViewLess=true;self.renderPaginationOnViewLess=true;self.options.enableNavigation();self._renderGrid()}if(cb&&typeof cb==="function"){cb(e)}})}},showLoadingIndicator:function(loadingdatamsg,infScroll){var hasLoadingEl=this.element.find(".loading-data-msg");var $dataGrid=this.element.find(".on-demand-datagrid");if(hasLoadingEl.length&&!infScroll){hasLoadingEl.show()}else if(infScroll&&$dataGrid.length){$dataGrid.show()}else{var $loadingEl=$('<div class="loading-data-msg spin-icon-in-center"><span><i class="app-icon panel-icon fa-spin '+this.options.loadingicon+'"></i>'+'<span class="sr-only">Loading</span><span class="loading-text"></span></span></div>');$loadingEl.find(".loading-text").html(loadingdatamsg);if($dataGrid.length){$dataGrid.append($loadingEl)}else{var gridEl=$('<div class="on-demand-datagrid">'+$loadingEl[0].outerHTML+"</div>");this.element.find(".app-grid-header-inner").append(gridEl)}}},hideLoadingIndicator:function(showLoadBtn,infScroll){if(!showLoadBtn&&!infScroll){this.element.find(".loading-data-msg").hide();this.element.find(".on-demand-load-btn").text(this.options.ondemandmessage);this.element.find(".on-demand-load-btn").show()}else if(this.options.getCurrentPage&&typeof this.options.getCurrentPage==="function"&&this.options.getPageCount&&typeof this.options.getPageCount==="function"&&this.options.getCurrentPage()==this.options.getPageCount()&&this.options.showviewlessbutton){this.element.find(".on-demand-load-btn").show().text(this.options.viewlessmessage);this.element.find(".loading-data-msg").hide();if(infScroll){if(!this.element.find(".on-demand-load-btn").length){this.options.addLoadMoreBtn()}this.element.find(".loading-data-msg").hide()}}else{this.element.find(".on-demand-datagrid").hide()}},getSelectedRows:function(){this.getSelectedColumns();var selectedRowsData=[],self=this;this.preparedData.forEach(function(data,i){if(data._selected){selectedRowsData.push(self.options.data[i])}});return selectedRowsData},selectRows:function(rows){var self=this;var _rows=_.isArray(rows)?rows.slice():[rows];self.gridElement.find("tr.app-datagrid-row").each(function(index){if(self.preparedData[index]&&self.preparedData[index]._selected===true){$(this).trigger("click",[$(this),{skipSingleCheck:true}])}});if(_.isArray(_rows)){_.forEach(_rows,function(row){self.selectRow(row,true)})}else{self.selectRow(_rows,true)}},toggleRowFilter:function(show){if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN&&this.gridSearch){if(show){this.gridSearch.show()}else{this.gridSearch.hide()}}},setColGroupWidths:function(){var self=this,headerCols=this.options.isMobile?this.tableContainer.find("col"):this.tableContainer.find("col"),bodyCols=this.tableContainer.find("col"),headerCells=this.options.showHeader?this.gridContainer.find("th.app-datagrid-header-cell"):this.gridElement.find("tr.app-datagrid-row").first().find("td"),colLength=this.preparedHeaderData.length,scrollLeft=this.gridElement.parent().prop("scrollLeft");if(!headerCols.length&&!headerCells.length){return}this._setColSpan(this.options.headerConfig);this.toggleRowFilter();var definedColWidth=0;var colsLen=headerCols.length;headerCols.each(function(){var eachColWidth=$(this).width();if(eachColWidth){definedColWidth=definedColWidth+eachColWidth;colsLen=colsLen-1}});headerCells.each(function(){var id=Number($(this).attr("data-col-id")),colDef=self.preparedHeaderData[id],$headerCell=self.gridContainer.find('th[data-col-id="'+id+'"]'),$tdCell=self.gridElement.find('td.app-datagrid-cell[data-col-id="'+id+'"]'),$footCell=self.tableContainer.find('tfoot tr.app-datagrid-row td.app-datagrid-cell[data-col-id="'+id+'"]'),$headerCol=$(headerCols[id]),$bodyCol=$(bodyCols[id]),definedWidth,width;if(!colDef){return}definedWidth=colDef.width;if(!_.isUndefined(colDef.show)&&!colDef.show){$headerCell.hide();$tdCell.hide();$headerCol.hide();$bodyCol.hide();$footCell.hide()}else{$headerCell.show();$tdCell.show();$headerCol.show();$bodyCol.show();$footCell.show()}if($headerCol.length&&$headerCol[0].style.width==="90px"){width=_.isUndefined(definedWidth)?"":definedWidth;$headerCol.css("width",width);$bodyCol.css("width",width)}});headerCells.each(function(){var $header=$(this),id=Number($header.attr("data-col-id")),colDef=self.preparedHeaderData[id],definedWidth,width,tempWidth,$headerCol;if(!colDef){return}definedWidth=colDef.width;if(!_.isUndefined(colDef.show)&&!colDef.show){width=0}else{if($header.hasClass("grid-col-small")){width=50}else{if(_.isUndefined(definedWidth)||definedWidth===""||_.includes(definedWidth,"%")){$headerCol=$(headerCols[id]);if($headerCol.length){tempWidth=$headerCol[0].style.width;if(tempWidth===""||tempWidth==="0px"||tempWidth==="90px"||_.includes(tempWidth,"%")){width=$header.width();if(width<=0){var currentNode=$header;var elemWidth=width;var padding=0;while(elemWidth<=0){currentNode=currentNode.parent();elemWidth=currentNode.width();if(currentNode.find("table").length&¤tNode.prop("style")){padding=padding+parseFloat(currentNode.css("padding-left"))+parseFloat(currentNode.css("padding-right"))}}if(elemWidth>0){if(padding){elemWidth=elemWidth-padding}if(_.includes(tempWidth,"%")){var widthPercent=parseInt(tempWidth);var pixelWidth=elemWidth*(widthPercent/100);width=pixelWidth}else{var parentWidth=definedColWidth&&definedColWidth>0?elemWidth-definedColWidth:elemWidth;var totalCols=colsLen?colsLen:headerCols.length;width=parentWidth/totalCols;width=width>90?colLength===id+1?width-17:width:90}}else{width=width>90?colLength===id+1?width-17:width:90}}else{width=width>90?colLength===id+1?width-17:width:90}}else{width=tempWidth}}}else{width=definedWidth}}}$(headerCols[id]).css("width",width);$(bodyCols[id]).css("width",width)});this.toggleRowFilter(true);this.gridElement.parent().prop("scrollLeft",scrollLeft);this.gridHeaderElement.parent().prop("scrollLeft",scrollLeft)},getSelectedColumns:function(){var selectedColsData={},headerData=[],self=this,multiSelectColIndex,radioColIndex,colIndex;$.extend(headerData,this.preparedHeaderData);if(this.options.multiselect){headerData.some(function(item,i){if(item.field==="checkbox"){multiSelectColIndex=i;return true}});headerData.splice(multiSelectColIndex,1)}else if(this.options.showRadioColumn){headerData.some(function(item,i){if(item.field==="radio"){radioColIndex=i;return true}});headerData.splice(radioColIndex,1)}if(this.options.showRowIndex){headerData.some(function(item,i){if(item.field==="rowIndex"){colIndex=i;return true}});headerData.splice(colIndex,1)}headerData.forEach(function(colDef){var field=colDef.field;if(colDef.selected){selectedColsData[field]={colDef:colDef,colData:self.options.data.map(function(data){return data[field]})}}});return selectedColsData},_setOption:function(key,value){this._super(key,value);switch(key){case"showHeader":this._toggleHeader();this._toggleSearch();this.setColGroupWidths();this.addOrRemoveScroll();break;case"filtermode":this._toggleSearch();break;case"searchLabel":if(this.gridSearch){this.gridSearch.find('[data-element="dgSearchText"]').attr("placeholder",value);this.gridSearch.find('[data-element="dgSearchButton"]').attr("title",value)}break;case"selectFirstRow":this.selectFirstRow(value);break;case"data":if(!this.isResetSortIconsDone){this.setSortIconDefault()}this.refreshGridData();break;case"dataStates":if(this.dataStatus.state==="nodata"){this.setStatus("nodata",this.dataStatus.nodata)}else if(this.dataStatus.state==="loading"){this.setStatus("loading")}break;case"loadingicon":this.dataStatusContainer.find("i").removeClass().addClass(this.options.loadingicon);break;case"colDefs":if(this.options.isNavTypeScrollOrOndemand()&&this.options.isNextPageData){this.tableContainer.find("colgroup").remove();this._prepareHeaderData();this.setColGroupWidths();this._renderHeader();this._renderSearch();this.attachEventHandlers(this.gridElement);this._reselectColumns();this.addOrRemoveScroll();break}case"multiselecttitle":case"multiselectarialabel":case"radioselecttitle":case"radioselectarialabel":case"multiselect":case"showRadioColumn":case"isrowselectable":case"rowActions":case"filterNullRecords":case"showRowIndex":this.refreshGrid();break;case"cssClassNames":var gridClass=this.options.cssClassNames.gridDefault+" "+this.options.cssClassNames.grid;if(this.options.rowExpansionEnabled){gridClass=gridClass+" "+this.options.cssClassNames.gridRowExpansionClass}this.tableContainer.attr("class",gridClass);if(this.options.spacing==="condensed"){this._toggleSpacingClasses("condensed")}break;case"spacing":this._toggleSpacingClasses(value);break;case"messages":this.gridSearch&&this.gridSearch.find("option.placeholder").text(value&&value.selectField);break}},getOptions:function(){return this.options},_toggleHeader:function(){if(this.gridHeaderElement){this.gridHeaderElement.empty()}if(this.tableContainer){this.tableContainer.find("colgroup").remove();this.tableContainer.find("thead").remove()}this.setDefaultColsData();if(this.options.showHeader){this._renderHeader()}},_toggleSearch:function(){if(this.gridSearch){this.gridSearch.remove()}if(this.options.filtermode===this.CONSTANTS.SEARCH){this._renderSearch()}else if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN){this._renderRowFilter();this.setColGroupWidths()}},selectFirstRow:function(value,visible){var $row,id;if(visible&&this.gridElement.find("tr").is(":visible")){this.__setStatus();$row=this.gridElement.find("tr.app-datagrid-row:visible:not(.always-new-row)").first()}else{$row=this.gridElement.find("tr.app-datagrid-row:not(.always-new-row)").first()}id=$row.attr("data-row-id");if($row.length&&this.preparedData.length){this.preparedData[id]._selected=!value;$row[0].click()}},selectRow:function(row,value,index){var rowIndex=index?index:_.isNumber(row)?row:this.Utils.getObjectIndex(this.options.data,row),selector,$row;if(rowIndex!==-1){selector="tr.app-datagrid-row[data-row-id="+rowIndex+"]";$row=this.gridElement.find(selector);if($row.length){this.preparedData[rowIndex]._selected=!value}if(value){$row.trigger("click")}else{this.toggleRowSelection($row,value);this.options.callOnRowDeselectEvent(this.preparedData[rowIndex])}}},deselectRow:function(row){this.selectRow(row,false)},toggleRowSelection:function($row,selected,e,isSelectAll){if(!$row.length){return}var rowId=$row.attr("data-row-id"),$checkbox,$radio;if(!this.preparedData[rowId]){return}this.preparedData[rowId]._selected=selected;if(selected){$row.addClass("active")}else{$row.removeClass("active")}if(this.options.showRadioColumn){$radio=$row.find("td input[rowSelectInput]:radio:not(:disabled)");$radio.prop("checked",selected);this.preparedData[rowId]._checked=selected}if(this.options.multiselect){$checkbox=$row.find('td input[name="gridMultiSelect"]:checkbox:not(:disabled)');$checkbox.prop("checked",selected);$checkbox.siblings("span.sr-only").text(selected?"Row Selected":"Row Deselected");this.preparedData[rowId]._checked=selected;if(!isSelectAll){this.updateSelectAllCheckboxState()}}else{this._deselectPreviousSelection($row,e)}},updateSelectAllCheckboxState:function(){if(!this.options.showHeader||!this.options.multiselect){return}this.__setStatus();var $headerCheckbox=this.gridHeaderElement.find("th.app-datagrid-header-cell input:checkbox"),$tbody=this.gridElement,checkedItemsLength=$tbody.find('tr.app-datagrid-row:visible input[name="gridMultiSelect"]:checkbox:checked').length,visibleRowsLength=$tbody.find("tr.app-datagrid-row:visible").length;if(!visibleRowsLength){$headerCheckbox.prop("checked",false);return}if(checkedItemsLength===visibleRowsLength){$headerCheckbox.prop("checked",true)}else{$headerCheckbox.prop("checked",false)}},rowClickHandlerOnCapture:function(e,$row,options){if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable){if(Number(this.getColInfo(e))){e.stopPropagation();this.closeDropdown(e);return}}}$row=$row||$(e.target).closest("tr.app-datagrid-row");var gridRow=this.gridElement.find($row);if(gridRow.length&&gridRow.closest("tbody").attr("id")===this.gridElement.attr("id")){var rowId=$row.attr("data-row-id");var rowData=this.preparedData[rowId];var data=this.options.data[rowId];this.options.assignSelectedItems(data,e,{rowId:rowId,_selected:rowData?._selected})}},rowSelectionHandler:function(e,$row,options){if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable){if(Number(this.getColInfo(e))){e.stopPropagation();this.closeDropdown(e);return}}}options=options||{};var rowId,rowData,data,selected,self=this,action=options.action,$target=$(e.target),isQuickEdit=this.options.editmode===this.CONSTANTS.QUICK_EDIT;function callRowSelectionEvents(){if(selected&&_.isFunction(self.options.onRowSelect)){self.options.onRowSelect(data,e)}if(!selected&&_.isFunction(self.options.onRowDeselect)){self.options.onRowDeselect(data,e)}}$row=$row||$target.closest("tr.app-datagrid-row");if(action||isQuickEdit&&($target.hasClass("app-datagrid-cell")||$target.closest("td.app-datagrid-cell").length)&&!$row.hasClass("always-new-row")){options.action=options.action||"edit";if(options.operation==="new"||self.options.actionsEnabled.edit){self.toggleEditRow(e,options)}if(options.skipSelect){return}}rowId=$row.attr("data-row-id");rowData=this.preparedData[rowId];data=this.options.data[rowId];selected=rowData&&rowData._selected||false;if(!options.skipSingleCheck&&($row.hasClass("active")&&!this.options.multiselect||!rowData)){if(!isQuickEdit&&options.operation!=="new"){callRowSelectionEvents()}return}this.options.callOnRowClickEvent(data,e);selected=!selected;this.options.assignSelectedItems(data,e,{rowId:rowId,_selected:selected});this.toggleRowSelection($row,selected,e);callRowSelectionEvents()},rowDblClickHandler:function(e,$row){e.stopPropagation();$row=$row||$(e.target).closest("tr.app-datagrid-row");var rowData,rowId=$row.attr("data-row-id");rowData=this.preparedData[rowId];if(!rowData){return}if(_.isFunction(this.options.onRowDblClick)){this.options.onRowDblClick(rowData,e)}},closePopover:function(){this.options.closePopover(this.element)},closeDropdown:function(e){this.element[0].querySelectorAll(".app-menu").forEach(el=>{if(el&&el.classList.contains("open")&&el.getAttribute("autoclose")==="outsideClick"&&e?.originalEvent?.isTrusted&&e.target!==el.querySelector("[dropdowntoggle]")&&e.target.parentElement!==el.querySelector("[dropdowntoggle]")){el?.widget?.bsDropdown?.hide()}})},headerClickHandler:function(e){var $th=$(e.target).closest("th.app-datagrid-header-cell"),id=$th.attr("data-col-id");this.closePopover();this.options.onHeaderClick(this.preparedHeaderData[id],e)},columnSelectionHandler:function(e,$headerCell){if(e){e.stopImmediatePropagation()}var $th=e?$(e.target).closest("th.app-datagrid-header-cell"):$headerCell,id=$th.attr("data-col-id"),colDef=this.preparedHeaderData[id],field=colDef.field,selector='td[data-col-id="'+id+'"]',$column=this.gridElement.find(selector),selected=$column.data("selected")||false,colInfo={colDef:colDef,data:this.options.data.map(function(data){return data[field]}),sortDirection:this._getColumnSortDirection(colDef.field)},selectedClass=this.options.cssClassNames.selectedColumn;selected=!selected;colDef.selected=selected;$column.data("selected",selected);if(selected){$column.addClass(selectedClass);$th.addClass(selectedClass);if(_.isFunction(this.options.onColumnSelect)&&e){this.options.onColumnSelect(colInfo,e)}}else{$column.removeClass(selectedClass);$th.removeClass(selectedClass);if(_.isFunction(this.options.onColumnDeselect)&&e){this.options.onColumnDeselect(colInfo,e)}}},getTextValue:function(fieldName,alwaysNewRow){return this.options.getFieldValue(alwaysNewRow?fieldName+"_new":fieldName)},getUploadedFiles:function($el,fieldName){return _.get(document.forms,[$el.find("form").attr("name"),fieldName,"files",0])},isDataModified:function($editableElements,rowData,alwaysNewRow){var isDataChanged=false,self=this;function getEpoch(val){return val?moment(val).valueOf():val}$editableElements.each(function(){var $el=$(this),colId=$el.attr("data-col-id"),colDef=self.preparedHeaderData[colId],text=self.getTextValue(colDef.field,alwaysNewRow),originalData=_.get(rowData,colDef.field);if(colDef.editWidgetType==="upload"){isDataChanged=self.getUploadedFiles($el,colDef.field)instanceof File}else{if(!self.Utils.isDefined(text)&&(originalData===null||originalData===undefined)){isDataChanged=false}else{if(colDef.editWidgetType==="datetime"){isDataChanged=!(getEpoch(originalData)===getEpoch(text))}else{isDataChanged=!(originalData==text)}}}if(isDataChanged){return!isDataChanged}});return isDataChanged},focusActiveRow:function(){this.gridElement.find("tr.app-datagrid-row.active").focus()},focusNewRow:function(){var newRow=this.gridElement.find("tr.always-new-row");var newRowInputs=newRow&&newRow.find("input")||[];newRowInputs.length&&newRowInputs[0].focus()},disableActions:function(val){var $deleteBtns=this.gridElement.find(".delete-row-button"),$editBtns=this.gridElement.find(".edit-row-button");if(val){$editBtns.addClass("disabled-action");$deleteBtns.addClass("disabled-action")}else{$editBtns.removeClass("disabled-action");$deleteBtns.removeClass("disabled-action")}},setFocusOnElement:function(e,$el,skipDelay){var $firstEl,$target=e&&$(e.target),$focusEl;if($target&&$target.hasClass("app-datagrid-cell")){$firstEl=$target.find("input")}else{if(!$el){$el=$target.closest("tr.app-datagrid-row").find("td.cell-editing")}else if($el.hasClass("app-datagrid-row")){$el=$el.find("td.cell-editing")}$firstEl=$($el).first().find("input");if(!$firstEl.length){$firstEl=$($el).first().find("textarea")}if(!$firstEl.length){$firstEl=$($el).first().find("select")}if(!$(e.target).find("td").first().hasClass("td.cell-editing")){$firstEl=$el.find("td")}}if($firstEl.length){$focusEl=$firstEl.first();if(skipDelay){$focusEl.focus();$focusEl.select()}else{this.options.timeoutCall(function(){$focusEl.focus();$focusEl.select()})}}},removeNewRow:function($row){this.disableActions(false);this._setGridEditMode(false);if($row.hasClass("always-new-row")){return}$row.attr("data-removed",true);$row.remove();if(!this.preparedData.length){this.setStatus("nodata",this.dataStatus.nodata)}this.addOrRemoveScroll();this.toggleNewRowActions(false)},saveRow:function(callBack){this.gridElement.find("tr.app-datagrid-row.row-editing:not(.always-new-row)").each(function(){$(this).trigger("click",[undefined,{action:"save",skipSelect:true,noMsg:true,success:callBack}])})},makeRowEditable:function($row,rowData,alwaysNewRow){var self=this,$originalElements=$row.find("td.app-datagrid-cell"),rowId=parseInt($row.attr("data-row-id"),10),$editableElements,_rowData=_.clone(rowData);_rowData.$index=rowId+1;this.options.removeValidations(alwaysNewRow);this.options.generateInlineEditRow(_rowData,alwaysNewRow);$originalElements.each(function(){var $el=$(this),cellText=$el.text(),id=$el.attr("data-col-id"),colDef=self.preparedHeaderData[id],value,editableTemplate;if(!colDef.readonly){value=_.get(rowData,colDef.field);editableTemplate=self.options.getInlineEditWidget(colDef.field,value,alwaysNewRow);$el.removeAttr("title");$el.removeAttr("tabindex");if(!(colDef.customExpression||colDef.formatpattern&&colDef.formatpattern!=="None")){$el.addClass("cell-editing").html(editableTemplate).data("originalText",cellText)}else{$el.addClass("cell-editing editable-expression").data("originalValue",{rowIndex:rowId,fieldName:colDef.field});$el.addClass("cell-editing editable-expression").html(editableTemplate).data("originalText",cellText)}$el.addClass("form-group");if(colDef.binding!=="rowOperations"){self.options.timeoutCall(function(){self.options.applyValidations(colDef,alwaysNewRow);if(colDef.required){$el.addClass("required-field")}})}else if(colDef.required){$el.addClass("required-field")}}});$editableElements=$row.find("td.cell-editing");$row.on("click.cellEdit","td.cell-editing",function(e){e.stopPropagation()});$row.on("keydown.cellEdit","td.cell-editing",function(e){if((e.which===38||e.which===40)&&(e.currentTarget&&!e.currentTarget.closest(".always-new-row"))){e.stopPropagation()}})},toggleNewRowActions:function(saveInd){var self=this,$gridActions=$(this.element).siblings("div.panel-footer, div.panel-heading").find("div.app-datagrid-actions"),$newRow=this.gridElement.find("tr.app-datagrid-row.row-editing"),$newRowButton=$gridActions.find("i.wi-plus").closest(".app-button");if(this.options.editmode===this.CONSTANTS.INLINE&&(this.options.rowActions.length===0||!_.some(this.options.rowActions,{action:"editRow($event)"}))){if(saveInd){$gridActions.append('<button type="button" wmbutton="" class="btn app-button btn-default cancelNewRow" tabindex="0" accesskey="" title="Cancel">'+'<i aria-hidden="true" class="app-icon wi wi-cancel"></i>'+'<span class="sr-only">Cancel Icon</span><span class="btn-caption">Cancel</span>'+"</button>"+'<button type="button" wmbutton="" class="btn app-button btn-primary saveNewRow" tabindex="0" accesskey="" title="Save">'+'<i aria-hidden="true" class="app-icon wi wi-done"></i>'+'<span class="sr-only">Save Icon</span><span class="btn-caption">Save</span>'+"</button>");$gridActions.find(".cancelNewRow").on("click",function(event){self.toggleEditRow(event,{action:"cancel",$row:$newRow})});$gridActions.find(".saveNewRow").on("click",function(event){self.toggleEditRow(event,{action:"save",$row:$newRow})});$newRowButton.hide()}else{$("typeahead-container").removeClass("open");$gridActions.find(".cancelNewRow").remove();$gridActions.find(".saveNewRow").remove();$newRowButton.show()}}},_isNewRow:function($row){var rowId=parseInt($row.attr("data-row-id"),10);return rowId>=this.preparedData.length||$row.hasClass("always-new-row")},toggleEditRow:function(e,options){if($(e.target).closest(".app-menu").length){return}options=options||{};this.closeDropdown(e);if(e){e.stopPropagation()}this.closePopover();var $row=options.$row||$(e.target).closest("tr.app-datagrid-row"),$editButton=$row.find(".edit-row-button"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),$deleteButton=$row.find(".delete-row-button"),rowData=_.cloneDeep(this.options.data[$row.attr("data-row-id")])||{},self=this,action,isNewRow,$editableElements,isDataChanged=false,isValid,$requiredEls,alwaysNewRow=$row.hasClass("always-new-row"),advancedEdit=self.options.editmode===self.CONSTANTS.QUICK_EDIT,editOptions={},rowindex=$row.attr("data-row-id");this.options.setActionRowIndex($row.attr("data-row-id"));this.options.setLastActionPerformed(this.options.ACTIONS.EDIT);function onSaveSuccess(skipFocus,error){if(_.isFunction(options.success)){options.success(skipFocus,error)}if(!advancedEdit||self.options.actionsEnabled.edit){self.focusActiveRow()}}if($row.attr("data-removed")==="true"){return}if(options.selectRow){this.selectRow(rowData,true,rowindex)}e=e||{};e.data=e.data||{};action=e.data.action||options.action;if(action==="edit"){if(this.options.editmode===this.CONSTANTS.INLINE){this.options.callLoadInlineWidgetData()}if(advancedEdit&&self.gridElement.find("tr.app-datagrid-row.row-editing:not(.always-new-row)").length){self.saveRow(function(skipFocus,error){self.editSuccessHandler(skipFocus,error,e,$row,true)});return}$row.addClass("row-editing");if(_.isFunction(this.options.beforeRowUpdate)){this.options.beforeRowUpdate(rowData,e)}if(self.options.editmode===self.CONSTANTS.FORM||self.options.editmode===self.CONSTANTS.DIALOG){return}if(options.operation==="new"){self.setDefaultRowData(rowData);self.toggleNewRowActions(true)}if(_.isFunction(this.options.onBeforeFormRender)){isValid=this.options.onBeforeFormRender(rowData,e,options.operation||action);if(isValid===false){return}}this._setGridEditMode(true);this.disableActions(true);$deleteButton.removeClass("disabled-action");this.options.runInNgZone(function(){self.makeRowEditable($row,rowData)});$editButton.addClass("hidden");$cancelButton.removeClass("hidden");$saveButton.removeClass("hidden");$editableElements=$row.find("td.cell-editing");if(!options.skipFocus&&$editableElements){this.options.timeoutCall(function(){self.setFocusOnElement(e,$editableElements)})}if(_.isFunction(this.options.onFormRender)){this.options.onFormRender($row,e,options.operation||action,$row.hasClass("always-new-row"))}}else{$editableElements=$row.find("td.cell-editing");isNewRow=self._isNewRow($row);if(action==="save"){if(isNewRow){isDataChanged=true}else{isDataChanged=this.isDataModified($editableElements,rowData,alwaysNewRow)}if(isDataChanged){$editableElements.each(function(){var $el=$(this),colId=$el.attr("data-col-id"),colDef=self.preparedHeaderData[colId],fields=_.split(colDef.field,"."),text;text=self.getTextValue(colDef.field,alwaysNewRow);if(fields.length===1&&colDef.editWidgetType==="upload"){_.set(rowData,colDef.field,self.getUploadedFiles($el,colDef.field))}else{text=(fields.length===1||isNewRow)&&text===""?undefined:text;if(self.Utils.isDefined(text)){text=text==="null"?null:text;if(text===null){if(fields.length>1){_.set(rowData,fields[0],text)}else{if(!isNewRow){_.set(rowData,colDef.field,"")}}}else{_.set(rowData,colDef.field,text)}}else{if(fields.length===1&&!isNewRow){_.set(rowData,colDef.field,text)}}}});if($editableElements.find(".ng-pending").length>0){setTimeout(this.toggleEditRow.bind(this,e,options),200);return}$requiredEls=$editableElements.find(".ng-invalid");if($requiredEls.length>0){$requiredEls.each(function(index){var $invalidTd=$(this).closest("td.app-datagrid-cell");if(index===0){$invalidTd.find("[focus-target]").focus()}self.options.setTouched($invalidTd.find("[formcontrolname]").attr("formcontrolname"))});if(_.isFunction(options.success)){options.success(false,true)}return}if(isNewRow&&advancedEdit&&_.isEmpty(rowData)){self.removeNewRow($row);if(_.isFunction(options.success)){options.success(false,undefined,true)}return}if(isNewRow){if(_.isFunction(this.options.onBeforeRowInsert)){isValid=this.options.onBeforeRowInsert(rowData,e,editOptions);if(isValid===false){return}}this.options.onRowInsert(rowData,e,onSaveSuccess,editOptions);self.toggleNewRowActions(false);if(!$row.hasClass("always-new-row")&&self.options.isNavTypeScrollOrOndemand()){self.removeNewRow($row)}}else{if(_.isFunction(this.options.onBeforeRowUpdate)){isValid=this.options.onBeforeRowUpdate(rowData,e,editOptions);if(isValid===false){return}}if(this.options?.getDataSource()?.category=="wm.Variable"){editOptions.rowindex=rowindex}this.options.afterRowUpdate(rowData,e,onSaveSuccess,editOptions)}}else{this.cancelEdit($row);if(!options.noMsg){this.options.noChangesDetected()}if(_.isFunction(options.success)){options.success(false)}}}else{if(isNewRow){$("typeahead-container").removeClass("open");self.removeNewRow($row);return}this.cancelEdit($row)}}this.addOrRemoveScroll()},cancelEdit:function($row){var self=this,$editableElements=$row.find("td.cell-editing"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),$editButton=$row.find(".edit-row-button");this.options.clearActionRowIndex();this.disableActions(false);$row.removeClass("row-editing");$row.off(".cellEdit");$editableElements.off("click");$editableElements.each(function(){var $el=$(this),value=$el.data("originalValue");$el.attr("tabindex",0);$el.removeClass("datetime-wrapper cell-editing required-field form-group");if(!value){$el.text($el.data("originalText")||"");$el.attr("title",$el.text())}else{$el.html(self.options.getCustomExpression(value.fieldName,value.rowIndex))}});$("typeahead-container").removeClass("open");$editButton.removeClass("hidden");$cancelButton.addClass("hidden");$saveButton.addClass("hidden");this._setGridEditMode(false)},closeEditedRow:function(){var $row=this.gridElement.find("tr.app-datagrid-row.row-editing");if($row.length){if(this._isNewRow($row)){this.removeNewRow($row)}else{this.cancelEdit($row)}}},hideRowEditMode:function($row){if($row.hasClass("always-new-row")&&this.options.isNavTypeScrollOrOndemand()){this.resetNewRow($row);return}var $editableElements=$row.find("td.cell-editing"),$editButton=$row.find(".edit-row-button"),$cancelButton=$row.find(".cancel-edit-row-button"),$saveButton=$row.find(".save-edit-row-button"),self=this;$row.removeClass("row-editing");$row.off(".cellEdit");$editableElements.off("click");this.disableActions(false);this._setGridEditMode(false);$editableElements.each(function(){var $el=$(this),value=$el.data("originalValue"),text,colDef;$el.attr("tabindex",0);$el.removeClass("datetime-wrapper cell-editing required-field form-group");if(!value){colDef=self.preparedHeaderData[$el.attr("data-col-id")];text=self.getTextValue(colDef.field);$el.text(self.Utils.isDefined(text)?text:"");$el.attr("title",$el.text())}else{$el.html(self.options.getCustomExpression(value.fieldName,value.rowIndex))}});$editButton.removeClass("hidden");$cancelButton.addClass("hidden");$saveButton.addClass("hidden");this.addOrRemoveScroll()},deleteRow:function(e){e.stopPropagation();var $row=$(e.target).closest("tr.app-datagrid-row"),rowId=$row.attr("data-row-id"),rowData=this.options.data[rowId],isNewRow=this._isNewRow($row),className,isActiveRow,isValid,options={},self=this;this.options.setActionRowIndex(rowId);this.options.setLastActionPerformed(this.options.ACTIONS.DELETE);if(_.isFunction(this.options.beforeRowDelete)){this.options.beforeRowDelete(rowData,e)}if(isNewRow){this.disableActions(false);this._setGridEditMode(false);$row.attr("data-removed",true);$row.remove();if(!this.preparedData.length){this.setStatus("nodata",this.dataStatus.nodata)}this.addOrRemoveScroll();return}if(_.isFunction(this.options.onBeforeRowDelete)){isValid=this.options.onBeforeRowDelete(rowData,e,options);if(isValid===false){return}}if(_.isFunction(this.options.onRowDelete)){className=this.options.cssClassNames.deleteRow;isActiveRow=$row.attr("class").indexOf("active")!==-1;if(isActiveRow){$row.removeClass("active")}$row.addClass(className);this.options.onRowDelete(rowData,function(){if(isActiveRow){$row.addClass("active")}$row.removeClass(className);self.addOrRemoveScroll()},e,function(skipFocus,error){if(self.options.isNavTypeScrollOrOndemand()){var rowId=+$(e.target).closest("tr.app-datagrid-row").attr("data-row-id");var $row=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowId+'"]');self.options.setDeletedRowIndex(rowId);self.preparedData.splice(rowId,1);self.options.data.splice(rowId,1);self.gridElement.find("tr.app-datagrid-row:gt("+rowId+")").each(function(index,row){if(!$row.is(":last-child")&&!$(row).hasClass("always-new-row")){$(row).attr("data-row-id",rowId);self.preparedData[rowId].$$pk--;self.preparedData[rowId].$$index--;self.preparedData[rowId].$index--;rowId++}});$row.remove()}if(self.options.editmode!==self.CONSTANTS.QUICK_EDIT||!($(e.target).hasClass("delete-row-button")||self.Utils.isDeleteKey(e))){return}self.__setStatus();var rowID,$nextRow;if(error){return}rowID=+$(e.target).closest("tr.app-datagrid-row").attr("data-row-id");$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if(!$nextRow.length){$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+(rowID-1)+'"]')}$nextRow.trigger("click",[undefined,{action:"edit",skipFocus:skipFocus}])},options)}},deleteRowAndUpdateSelectAll:function(e){this.deleteRow(e);this.updateSelectAllCheckboxState()},_deselectPreviousSelection:function($row,e){var selectedRows=this.gridElement.find("tr.app-datagrid-row.active"),rowId=$row.attr("data-row-id"),self=this;selectedRows.each(function(){var id=$(this).attr("data-row-id"),preparedData=self.preparedData[id];if(id!==rowId&&preparedData){$(this).find("input[rowSelectInput]:radio").prop("checked",false);preparedData._selected=preparedData._checked=false;$(this).removeClass("active");self.options.callOnRowDeselectEvent(preparedData,e)}})},resetSortIcons:function($el){this.isResetSortIconsDone=true;var $sortContainer;if(!$el&&this.gridHeaderElement){$sortContainer=this.gridHeaderElement.find(".sort-buttons-container.active");$el=$sortContainer.find("i.sort-icon");$sortContainer.removeClass("active")}$el.removeClass("desc asc").removeClass(this.options.cssClassNames.descIcon).removeClass(this.options.cssClassNames.ascIcon)},setSortIconDefault:function(){const sortInfo=this.options.sortInfo,$e=this.tableContainer,$th=$e.find("[data-col-field='"+sortInfo.field+"']"),$sortContainer=$th.find(".sort-buttons-container"),$sortIcon=$sortContainer.find("i.sort-icon"),direction=sortInfo.direction;if(direction==="asc"){$sortIcon.addClass(direction+" "+this.options.cssClassNames.ascIcon);$sortContainer.addClass("active")}else if(direction==="desc"){$sortIcon.addClass(direction+" "+this.options.cssClassNames.descIcon);$sortContainer.addClass("active")}},sortHandler:function(e){e.stopImmediatePropagation();if($(e.target).hasClass("header-data")&&this.options.enableColumnSelection){this.headerClickHandler(e)}var $e=$(e.target),$th=$e.closest("th.app-datagrid-header-cell"),id=$th.attr("data-col-id"),$sortContainer=$th.find(".sort-buttons-container"),$sortIcon=$sortContainer.find("i.sort-icon"),direction=$sortIcon.hasClass("asc")?"desc":"asc",sortInfo=this.options.sortInfo,$previousSortMarker=this.gridHeaderElement.find(".sort-buttons-container.active"),field=$th.attr("data-col-field"),$previousSortedColumn,$previousSortIcon,colId,colDef;this.resetSortIcons($sortIcon);$sortIcon.addClass(direction);if(direction==="asc"){$sortIcon.addClass(this.options.cssClassNames.ascIcon);$sortContainer.addClass("active")}else if(direction==="desc"){$sortIcon.addClass(this.options.cssClassNames.descIcon);$sortContainer.addClass("active")}if($previousSortMarker.length){$previousSortedColumn=$previousSortMarker.closest("th.app-datagrid-header-cell");colId=$previousSortedColumn.attr("data-col-id");colDef=this.preparedHeaderData[colId];$previousSortIcon=$previousSortMarker.find("i.sort-icon");if(colDef.field!==field){$previousSortMarker.removeClass("active");this.resetSortIcons($previousSortIcon)}colDef.sortInfo={sorted:false,direction:""}}sortInfo.direction=direction;sortInfo.field=this.preparedHeaderData&&this.preparedHeaderData[e.currentTarget.getAttribute("data-col-id")].sortby||field;sortInfo.sortBy=this.preparedHeaderData&&this.preparedHeaderData[e.currentTarget.getAttribute("data-col-id")].sortby?field:"";if(direction!==""){this.preparedHeaderData[id].sortInfo={sorted:true,direction:direction}}this._setGridEditMode(false);this.closeEditedRow();this.options.sortHandler.call(this,this.options.sortInfo,e,"sort")},processUpDownKeys:function(event,$row,direction){var self=this;var rowData=$row.find("input").val();if($row.hasClass("row-editing")&&self.options.editmode===self.CONSTANTS.QUICK_EDIT&&rowData){self.toggleEditRow(event,{action:"save",noMsg:true,success:function(skipFocus,error){self.editSuccessHandler(skipFocus,error,event,$row,true,direction)}})}else{$row=direction==="down"?$row.next():$row.prev();if(this.options.rowExpansionEnabled&&!$row.is(":visible")){$row=direction==="down"?$row.next():$row.prev()}$row.focus()}},resetNewRow:function($row){var rowData={},self=this;this.options.clearForm(true);self.setDefaultRowData(rowData);$row.find("[data-field-name]").each(function(){var $input=$(this),fieldName=$input.attr("data-field-name")+"_new";self.options.setFieldValue(fieldName,rowData[$input.attr("data-field-name")]||"")});self.options.safeApply();self.setFocusOnElement(undefined,$row,true)},_onEnter:function($target,$row,quickEdit,event){var self=this;if($target.is("button")){return}if(quickEdit&&$target.hasClass("app-datagrid-row")&&!$target.hasClass("row-editing")){$row.trigger("click",[undefined,{action:"edit"}])}else{if($row.hasClass("row-editing")&&$target.closest("[data-field-name]").length){const $editingRow=$row;$target.blur();self.toggleEditRow(event,{action:"save",success:function(skipFocus,error){if(error){$target.focus()}else{if(!quickEdit){self.focusActiveRow()}self.options.timeoutCall(function(){if(quickEdit){var rowId=$editingRow[0]?.getAttribute("data-row-id");if($editingRow.hasClass("always-new-row")){rowId=self.gridElement[0].querySelector("tr.always-new-row")?.getAttribute("data-row-id")-1}var matchingRow=self.gridElement[0].querySelector("tr[data-row-id='"+rowId+"']");if($(matchingRow).hasClass("always-new-row")){return}if(matchingRow){if(!self.options.multiselect){$(self.gridElement).find("tr.app-datagrid-row.active").removeClass("active")}matchingRow.classList.remove("active");self.hideRowEditMode($(matchingRow))}}self.focusNewRow()},400)}}})}else{$row.trigger("click");if(quickEdit&&$target.hasClass("always-new-row")&&$target.hasClass("row-editing")){self.focusNewRow()}}}if(!$target.is("button")){event.stopPropagation()}},onKeyDown:function(event){var $target=$(event.target),$row=$target.closest("tr.app-datagrid-row"),self=this,quickEdit=this.options.editmode===this.CONSTANTS.QUICK_EDIT,isNewRow;if(this.options.rowExpansionEnabled&&!$row.length){$row=$target.closest("tr.app-datagrid-detail-row")}if(this.Utils.isDeleteKey(event)){if(!this.options.actionsEnabled.delete||$target.is("input")||$target.hasClass("form-control")){return}this.deleteRow(event);return}if(event.which===27){isNewRow=this._isNewRow($row);if(isNewRow&&$row.hasClass("always-new-row")){$target.blur();self.resetNewRow($row)}else{$row.trigger("click",[undefined,{action:"cancel"}])}if(!isNewRow&&self.options.editmode!==this.CONSTANTS.QUICK_EDIT){$row.focus()}return}if(event.which===13){event.stopPropagation();if(this.options.editmode!==this.CONSTANTS.QUICK_EDIT&&!$row.hasClass("row-editing")){if((this.options.multiselect||this.options.showRadioColumn)&&!this.options.isrowselectable&&Number(this.getColInfo(event))){return}}this._debounceOnEnter($target,$row,quickEdit,event);return}if(event.which===38){this.processUpDownKeys(event,$row,"up");return}if(event.which===40){this.processUpDownKeys(event,$row,"down")}},editSuccessHandler:function(skipFocus,error,e,$row,isSameRow,direction){var self=this,rowID,$nextRow;self.__setStatus();if(error){self.setFocusOnElement(e);return}rowID=+$row.attr("data-row-id");if(direction){rowID=direction==="down"?++rowID:--rowID;$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if($nextRow.length){$nextRow.focus()}else{$row.focus()}return}if(!isSameRow&&!_.isUndefined(isSameRow)){rowID++}$nextRow=self.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowID+'"]');if($nextRow.hasClass("always-new-row")){if(self.options.formPosition!=="top"||$row.hasClass("always-new-row")){self.addNewRow(skipFocus)}}else if($nextRow.length){$nextRow.trigger("click",[undefined,{action:"edit",skipFocus:skipFocus,skipSelect:self.options.multiselect}])}else if(self.options.actionsEnabled.new){self.addNewRow(skipFocus)}},isLastColumn:function($target){var $cell=$target.closest("td.app-datagrid-cell"),$editCells;if($cell.is(":last-child")){return true}if($cell.hasClass("cell-editing")){$editCells=$cell.closest("tr.app-datagrid-row").find(".cell-editing").has('> :not([disabled="disabled"])');return $cell.attr("data-col-id")===$editCells.last().attr("data-col-id")}return false},getColInfo:function(event){var column=$(event.target).closest("td.app-datagrid-cell");var colId=column.attr("data-col-id");return colId},keydownHandler:function(event){if(event&&event.key==="Enter"){this.sortHandler(event)}},attachEventHandlers:function($htm){var $header=this.gridHeaderElement,self=this;if(this.options.enableRowSelection){if(this.boundRowClickHandlerOnCapture&&$htm[0]){$htm[0].removeEventListener("click",this.boundRowClickHandlerOnCapture,true)}$htm.off();this.boundRowClickHandlerOnCapture=this.rowClickHandlerOnCapture.bind(this);$htm[0].addEventListener("click",this.boundRowClickHandlerOnCapture,true);$htm.on("click",this.rowSelectionHandler.bind(this));$htm.on("dblclick",this.rowDblClickHandler.bind(this));$htm.on("keydown",this.onKeyDown.bind(this))}if($header){if(this.options.enableColumnSelection){$header.find("th[data-col-selectable]").off("click",this.columnSelectionHandler.bind(this));$header.find("th[data-col-selectable]").on("click",this.columnSelectionHandler.bind(this))}else{$header.find("th[data-col-selectable]").off("click")}if(this.options.enableSort){if(this.options.enableColumnSelection){$header.find("th[data-col-sortable] .header-data").off("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable] .header-data").on("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").off("keydown",this.keydownHandler.bind(this));$header.find("th[data-col-sortable]").on("keydown",this.keydownHandler.bind(this))}else{$header.find("th[data-col-sortable]").off("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").on("click",this.sortHandler.bind(this));$header.find("th[data-col-sortable]").off("keydown",this.keydownHandler.bind(this));$header.find("th[data-col-sortable]").on("keydown",this.keydownHandler.bind(this))}}else{if(this.options.enableColumnSelection){$header.find("th[data-col-sortable] .header-data").off("click")}else{$header.find("th[data-col-sortable]").off("click")}}}if(this.options.rowActions.length){$htm.find(".cancel-edit-row-button").off("click");$htm.find(".save-edit-row-button").off("click");$htm.find(".cancel-edit-row-button").on("click",{action:"cancel"},this.toggleEditRow.bind(this));$htm.find(".save-edit-row-button").on("click",{action:"save"},this.toggleEditRow.bind(this))}if(self.options.editmode===self.CONSTANTS.QUICK_EDIT){$htm.on("focus","tr.app-datagrid-row",function(e){var $row=$(e.currentTarget);if(!$row.hasClass("row-editing")){if(e.target===e.currentTarget&&(e.which===0||!e.which)){return}self.toggleEditRow(e,{$row:$row,action:"edit"})}});$htm.on("focusout","tr.app-datagrid-row","thead.table-header",function(e){var $target=$(e.target),$row=$target.closest("tr.app-datagrid-row"),$relatedTarget=$(e.relatedTarget),isLastColumn=self.isLastColumn($target,$relatedTarget),isTargetRowAction=$target.closest("span.actions-column").length>0,isRelatedTargetRowAction=$relatedTarget.closest("span.actions-column").length>0,isTargetGridAction=$relatedTarget.closest("div.app-datagrid-actions").length>0,isRelatedTargetGridAction=$relatedTarget.closest("div.app-datagrid-actions").length>0,invalidTargets='.row-editing:not(".always-new-row"), .row-action-button, .app-datagrid-cell, .caption, button.btn-time, button.btn-date';function isInvalidTarget(){if(!$relatedTarget.closest(".app-grid").length){return true}return $relatedTarget.is(invalidTargets)}if($relatedTarget.is("tr.app-datagrid-row")){if($relatedTarget.attr("data-row-id")===$row.attr("data-row-id")){return}}if(isRelatedTargetRowAction||$row.hasClass("danger")||isRelatedTargetGridAction||isTargetRowAction&&isRelatedTargetRowAction||isTargetRowAction&&e.relatedTarget===null||isInvalidTarget()||$relatedTarget.attr("focus-target")===""){return}if(!isTargetGridAction&&!isTargetRowAction){if(!isLastColumn||isLastColumn&&e.relatedTarget===null||$target.hasClass("file-upload")){return}}self.options.timeoutCall(function(){self.toggleEditRow(e,{action:"save",noMsg:true,success:function(skipFocus,error,isNewRow){if(!isNewRow){self.editSuccessHandler(skipFocus,error,e,$row,false)}}})})})}$htm.find('[data-identifier="rowExpansionButtons"]').off("click");$htm.find('[data-identifier="rowExpansionButtons"]').on("click",function(e){var $row=$(e.target).closest("tr.app-datagrid-row");if($(this).find(".app-button").attr("disabled")){return}self.toggleExpandRow(+$row.attr("data-row-id"),undefined,e)})},expandRow:function(rowId){this.toggleExpandRow(rowId,true)},collapseRow:function(rowId){this.toggleExpandRow(rowId,false)},hasAllClasses:function(element,classNames){return classNames&&classNames.every(cls=>element.hasClass(cls))},_collapseRow:function(e,rowData,rowId,$nextDetailRow,$icon){var self=this,$tbody=self.gridElement,$row=$($tbody.find('> tr.app-datagrid-row[data-row-id="'+rowId+'"]'));$row.removeClass(self.options.cssClassNames.expandedRowClass);$row.find("button, a").attr("aria-expanded","false").attr("aria-live","polite");if(this.options.onBeforeRowCollapse(e,rowData,rowId)===false){return}if($icon.length&&this.hasAllClasses($icon,this.options.cssClassNames.rowExpandIcon?.split(" "))){$icon.removeClass(this.options.cssClassNames.rowExpandIcon).addClass(this.options.cssClassNames.rowCollapseIcon)}$nextDetailRow.hide();this.options.onRowCollapse(e,rowData)},toggleExpandRow:function(rowId,isExpand,e){var self=this,$tbody=self.gridElement,$row=$($tbody.find('> tr.app-datagrid-row[data-row-id="'+rowId+'"]')),rowData=_.clone(self.options.data[rowId]),$nextDetailRow=$row.next("tr.app-datagrid-detail-row"),isClosed=!$nextDetailRow.is(":visible"),$icon=$row.find('[data-identifier="rowExpansionButtons"] i.app-icon'),expandRowBtn=$row.find("button, a");rowData.$index=rowId+1;if(isExpand&&!isClosed){return}if(isExpand===false&&isClosed){return}if(isClosed){$row.addClass(self.options.cssClassNames.expandedRowClass);if(self.options.rowDef.collapsetitle)expandRowBtn.attr("title",self.options.rowDef.collapsetitle);else{expandRowBtn.attr("title",expandRowBtn.attr("collapsetitle"))}$row.find("button, a").attr("aria-expanded","true");if(e&&self.preparedData[rowId]._selected){e.stopPropagation()}if(self.options.rowDef.closeothers){$tbody.find("> tr.app-datagrid-detail-row:visible").each(function(){var $otherDetailRow=$(this),$otherIcon=$otherDetailRow.prev("tr.app-datagrid-row").find('[data-identifier="rowExpansionButtons"] i.app-icon'),otherRowId=+$otherDetailRow.attr("data-row-id"),otherRowData=self.options.data[otherRowId];$otherDetailRow.hide();self._collapseRow(e,otherRowData,otherRowId,$otherDetailRow,$otherIcon)})}self.options.generateRowDetailView(e,rowData,rowId,$nextDetailRow.find("td.app-datagrid-row-details-cell .details-section"),$nextDetailRow.find("td.app-datagrid-row-details-cell .row-overlay"),function(){if($icon.length&&self.hasAllClasses($icon,self.options.cssClassNames.rowCollapseIcon?.split(" "))){$icon.removeClass(self.options.cssClassNames.rowCollapseIcon).addClass(self.options.cssClassNames.rowExpandIcon)}$nextDetailRow.show()})}else{if(self.options.rowDef.expandtitle)expandRowBtn.attr("title",self.options.rowDef.expandtitle);else{expandRowBtn.attr("title",expandRowBtn.attr("expandtitle"))}self._collapseRow(e,rowData,rowId,$nextDetailRow,$icon)}},_findAndReplaceCompiledTemplates:function(){if(!this.gridElement){return}var $compiledCells=this.gridElement.find("td[data-compiled-template]"),self=this;$compiledCells.each(function(){var $cell=$(this),id=$cell.attr("data-compiled-template");$cell.replaceWith(self.compiledCellTemplates[id])})},_renderSearch:function(){var $htm=$(this._getSearchEl()),self=this,$searchBox;function search(e){e.stopPropagation();var searchText=$htm.find('[data-element="dgSearchText"]')[0].value,$filterField=$htm.find('[data-element="dgFilterValue"]'),field=$filterField[0].value,colDefIndex=$htm.find("option:selected").attr("data-coldef-index"),colDef=self.options.colDefs[colDefIndex],type=colDef&&colDef.type?colDef.type:"";self.searchObj={field:field,value:searchText,type:type,event:e};self.options.searchHandler.call(self,self.searchObj,e,"search")}this.element.find(".form-search").remove();$htm.insertBefore(this.gridContainer);this.gridSearch=this.element.find(".form-search");$searchBox=this.gridSearch.find('[data-element="dgSearchText"]');this.gridSearch.find(".app-search-button").on("click",search);this.gridSearch.find('[data-element="dgFilterValue"]').on("change",function(e){if(self.dataStatusContainer.find(".status").text()===self.options.dataStates.nodata){search(e)}});$searchBox.on("keyup",function(e){e.stopPropagation();if(!$(this).val()){self.emptySearch=true;if(self.searchObj.value){self.searchObj.value="";search(e)}}else{self.emptySearch=false}if(e.which===13||self.options.filteronkeypress){search(e)}})},_renderRowFilter:function(){var $row=$('<tr class="filter-row"></tr>'),self=this,$headerElement=this.options.isMobile&&!this.options.showHeader?this.gridElement:this.gridHeaderElement;$headerElement.find(".filter-row").remove();this.options.generateFilterRow();this.preparedHeaderData.forEach(function(field,index){var fieldName=field.field,$th=$('<th data-col-id="'+index+'"></th>');if(!field.searchable){$row.append($th);return}$th.append(self.options.getFilterWidget(fieldName));$row.append($th)},this);if(this.options.showHeader){this.gridHeaderElement.append($row)}else{if(this.options.isMobile){$headerElement.empty().append($row)}else{$headerElement.empty().append($row)}}this.gridSearch=$headerElement.find(".filter-row")},_renderHeader:function(){var headerTemplate=this._getHeaderTemplate(),$colgroup=headerTemplate.colgroup,self=this,$header;this.gridElement.parent().scroll(function(){self.gridHeaderElement.parent().prop("scrollLeft",this.scrollLeft)});if(!this.options.showHeader){this.tableContainer.append($colgroup);this.gridHeaderElement.hide();return}else{this.gridHeaderElement.show()}$header=headerTemplate.header;function toggleSelectAll(e){var $checkboxes=$('tr.app-datagrid-row:not(.always-new-row):visible td input[name="gridMultiSelect"]:checkbox',self.gridElement),checked=this.checked,$headerCheckbox=self.gridHeaderElement.find("th.app-datagrid-header-cell input:checkbox");$headerCheckbox.siblings("span.sr-only").text(checked?"All Rows Selected":"All Rows Deselected");$checkboxes.prop("checked",checked);$checkboxes.each(function(){var $row=$(this).closest("tr.app-datagrid-row"),rowId=$row.attr("data-row-id"),rowData=self.options.data[rowId];self.toggleRowSelection($row,checked,e,true);self.options.assignSelectedItems(rowData,e,{rowId:rowId,_selected:self.preparedData[rowId]?._selected});if(!(self.options.headerselectall&&self.options.multiselect)){if(checked&&_.isFunction(self.options.onRowSelect)){self.options.onRowSelect(rowData,e)}if(!checked&&_.isFunction(self.options.onRowDeselect)){self.options.onRowDeselect(rowData,e)}}});self.options.selectAllRows(checked,e)}var headerCells=$header.find("th.app-datagrid-header-cell");var headerCols=$colgroup.find("col");headerCells.each(function(){var id=Number($(this).attr("data-col-id")),colDef=self.preparedHeaderData[id],$headerCol=$(headerCols[id]);if(!colDef){return}if(!_.isUndefined(colDef.show)&&!colDef.show){$(this).hide();$headerCol.hide()}});if(this.options.isMobile){this.tableContainer.append($colgroup)}else{this.tableContainer.append($colgroup)}$header.on("click",".app-datagrid-header-cell input:checkbox",toggleSelectAll);$header.on("keydown",".app-datagrid-header-cell input:checkbox",function(event){if(event.key==="Enter"||event.keyCode===13){event.preventDefault();const checkbox=this;setTimeout(()=>checkbox.click(),0)}});if(_.isFunction(this.options.onHeaderClick)){this.gridHeaderElement.find("th.app-datagrid-header-cell").on("click",this.headerClickHandler.bind(this));this.gridHeaderElement.find("th.app-datagrid-header-cell").on("keydown",function(e){if(e.key==="Enter"||e.keyCode===13){var $target=$(e.target);if($target.attr("data-col-field")==="checkbox"){e.preventDefault();$target.find('input[type="checkbox"]').trigger("click")}}})}if(!this.options.isMobile&&this.gridHeaderElement.length){this.gridHeaderElement.find("th[data-col-resizable]").resizable({handles:"e",minWidth:50,resize:function(evt,ui){var $colElement,$colHeaderElement,$cellElements,colIndex=+ui.helper.attr("data-col-id")+1,originalWidth=ui.helper.width(),newWidth=ui.size.width,originalTableWidth,newTableWidth;$colHeaderElement=self.tableContainer.find("colgroup > col:nth-child("+colIndex+")");$colElement=self.tableContainer.find("colgroup > col:nth-child("+colIndex+")");$cellElements=self.gridElement.find("tr.app-datagrid-row > td:nth-child("+colIndex+") > div");$colElement.width(newWidth);$colHeaderElement.width(newWidth);$cellElements.width(newWidth);$(this).css("height","auto");if(newWidth>ui.originalSize.width){originalTableWidth=self.gridHeaderElement.width();newTableWidth=originalTableWidth+newWidth-originalWidth;self.gridHeaderElement.width(newTableWidth);self.gridElement.width(newTableWidth)}self.addOrRemoveScroll();self.options.redrawWidgets()}})}if(!this.isResetSortIconsDone){this.setSortIconDefault()}},addOrRemoveScroll:function(){var gridContent=this.gridContainer.find("tbody"),gridHeader=this.gridContainer.find(".table-header");if(gridContent.scrollHeight>gridContent.clientHeight&&!this.Utils.isMac()){gridHeader.addClass("scroll-visible")}else{gridHeader.removeClass("scroll-visible")}},_handleCustomEvents:function(e,options){this.options.handleCustomEvents(e,options)},_setActionsEnabled:function(){var self=this;_.forEach(this.options.rowActions,function(def){if(_.includes(def.action,"editRow(")){self.options.actionsEnabled.edit=true}else if(_.includes(def.action,"deleteRow(")){self.options.actionsEnabled.delete=true}})},_appendRowActions:function($htm,isNewRow,rowData){var self,rowOperationsCol=this._getRowActionsColumnDef();if(this.options.rowActions.length||rowOperationsCol){this._setActionsEnabled();self=this;$htm.find("[data-identifier='actionButtons']").each(function(index){var _rowData,$row,rowId,rowIndex=index;if(isNewRow){_rowData=rowData}else{$row=$(this).closest("tr.app-datagrid-row");rowId=parseInt($row.attr("data-row-id"),10);_rowData=_.clone(self.options.data[rowId]);_rowData.$index=rowIndex+1}self.options.generateRowActions(_rowData,rowIndex);$(this).empty().append(self.options.getRowAction(rowIndex))})}},_renderGrid:function(isCreated){var $htm,isScrollorOnDemand=this.options.isNavTypeScrollOrOndemand(),pageStartIndex=this.getPageStartIndex();$("table.table-bordered").parents(".app-grid-header-inner").addClass("table_border");if(isScrollorOnDemand){var $tbody=this.gridElement;var template=this._getGridTemplate();$htm=$(template);if(template&&!$tbody.length){this.gridElement.append($htm)}}else{var templates=this._getGridTemplate();$htm=$(templates);if(templates){this.gridElement.append($htm)}}if(this.options.summaryRow){var $summaryRowHtm=$(this._getSummaryRowTemplate());this.tableContainer.find("tfoot").remove();if(this.options.data.length){this.tableContainer.append($summaryRowHtm)}}if(!this.options.data.length&&this.dataStatus.state==="nodata"){this.setStatus("nodata")}else{this.dataStatus.state=this.dataStatus.state||"loading";this.dataStatus.message=this.dataStatus.message||this.options.dataStates.loading;this.setStatus(this.dataStatus.state,this.dataStatus.message,isCreated)}this.gridBody=this.gridElement.find("tbody");this.gridFooter=this.tableContainer.find("tfoot");this._findAndReplaceCompiledTemplates();this.options.clearRowActions();this._appendRowExpansionButtons($htm);this._appendRowActions($htm);this.attachEventHandlers($htm);this.__setStatus(isCreated);if(this.options.editmode===this.CONSTANTS.QUICK_EDIT&&this.options.showNewRow){this.addNewRow(false,true)}if(isCreated){this._setColSpan(this.options.headerConfig)}if(_.isFunction(this.options.onDataRender)){this.options.onDataRender()}if(!isCreated&&this.options.selectFirstRow){if(this.options.multiselect){this.options.selectFirstRow=false}if(this.gridElement.find("tr.app-datagrid-row.active").length<=0){this.selectFirstRow(true,true)}}},_render:function(isCreated){if(!this.tableId){this.tableId=this.Utils.generateGuid()}var overflow=this.options.isNavTypeScrollOrOndemand()&&(this.options.height==="100%"||this.options.height==="auto")?"hidden":"auto";var statusContainer='<div class="overlay">'+'<div class="status"><i class="'+this.options.loadingicon+'"></i><span class="message"></span></div>'+"</div>",table='<div class="table-container table-responsive">'+'<div class="app-grid-header">'+'<div class="app-grid-header-inner">'+'<table tabindex="0" class="'+this.options.cssClassNames.gridDefault+" "+this.options.cssClassNames.grid+'">'+'<thead class="table-header thead-sticky" id="table_header_'+this.tableId+'" role="rowgroup">'+'</thead><tbody class="app-grid-content app-datagrid-body" id="table_'+this.tableId+'" role="rowgroup">'+"</tbody></table>"+"</div></div></div>",$statusContainer=$(statusContainer),$tableContainer=this.element.find(".table-container");this.gridContainer=$(table);this.gridHeaderElement=this.gridContainer.find(".table-header");this._setStyles($statusContainer.find("div.overlay"),"display:none");this._setStyles(this.gridContainer.find("div.app-grid-header-inner"),"height:"+this.options.height+"; overflow: auto;");this.tableContainer=this.gridContainer.find("table");this.gridElement=this.gridContainer.find(".app-grid-content");if(this.options.isNavTypeScrollOrOndemand()&&(!$tableContainer.length||!this.options.isNextPageData)||!this.options.isNavTypeScrollOrOndemand()){this.element.find(".table-container").remove();this.element.append(this.gridContainer)}this.options.setIsNextPageData(false);if(!this.gridContainer.find(".overlay").length){this.dataStatusContainer=$(statusContainer);this.gridContainer.append(this.dataStatusContainer)}if(this.gridHeaderElement){this.gridHeaderElement.empty();this.gridElement.find("colgroup").remove()}this._renderHeader();if(this.options.filtermode===this.CONSTANTS.SEARCH&&(_.isEmpty(this.searchObj)||this.searchObj&&!this.searchObj.field&&!this.searchObj.value)){this._renderSearch()}else if(this.options.filtermode===this.CONSTANTS.MULTI_COLUMN){this._renderRowFilter()}if(this.options.spacing==="condensed"){this._toggleSpacingClasses("condensed")}this._renderGrid(isCreated);this.addNavigationControls()},addNavigationControls:function(){if(this.options.isdynamictable){this.element.find(".on-demand-datagrid").remove();if(this.options.navigation==="On-Demand"&&!this.element.find(".on-demand-datagrid").length){this.options.addLoadMoreBtn()}else if(this.options.navigation==="Scroll"){this.options.bindScrollEvt()}}},__setStatus:function(isCreated){var loadingIndicator=this.dataStatusContainer.find("i"),state=this.dataStatus.state,isScrollOrOndemand=this.options.isNavTypeScrollOrOndemand();this.dataStatusContainer.find(".message").text(this.dataStatus.message);if(state==="loading"){loadingIndicator.removeClass("hidden")}else{loadingIndicator.addClass("hidden")}if(state==="ready"){this.dataStatusContainer.hide()}else{if(this.options.isNavTypeScrollOrOndemand()&&(state==="nodata"||this.options.getCurrentPage&&typeof this.options.getCurrentPage==="function"&&this.options.getPageCount&&typeof this.options.getPageCount==="function"&&this.options.getCurrentPage()==this.options.getPageCount()&&!this.options.showviewlessbutton)){this.element.find(".on-demand-datagrid a").hide()}this.dataStatusContainer.show()}if(state==="nodata"||state==="loading"||state==="error"){if(this.options.height==="100%"||this.options.height==="auto"){if(state==="nodata"){this.dataStatusContainer.css("height","auto");this.dataStatus.contentHeight=0}else if(this.options.isNavTypeScrollOrOndemand()&&this.options.getCurrentPage&&typeof this.options.getCurrentPage==="function"&&this.options.getCurrentPage()>1){this.dataStatusContainer.hide()}else{this.dataStatus.height=this.dataStatus.height||this.dataStatusContainer.outerHeight();this.dataStatus.contentHeight=this.gridElement.outerHeight()||this.dataStatus.contentHeight;this.dataStatusContainer.css("height",this.dataStatus.height>this.dataStatus.contentHeight?"auto":this.dataStatus.contentHeight)}}if(!isScrollOrOndemand||isScrollOrOndemand&&this.options.getCurrentPage&&typeof this.options.getCurrentPage==="function"&&this.options.getCurrentPage()===1){this.gridContainer.addClass("show-msg")}}else{this.gridContainer.removeClass("show-msg");if(this.options.editmode===this.CONSTANTS.QUICK_EDIT){if(this.options.activeRow){this.attachHandlersToActiveRow(this.options.activeRow)}this.options.activeRow=undefined}}if(!isCreated){this.setColGroupWidths()}this.addOrRemoveScroll()},attachHandlersToActiveRow(rowObj){var rowIndex=this.Utils.getObjectIndex(this.options.data,rowObj);var row=this.gridElement.find("tr.app-datagrid-row[data-row-id="+rowIndex+"]");if(!row.length){return}else if(!row.hasClass("active")){row.addClass("active")}this.focusActiveRow();this.attachEventHandlers(row)},setActiveRow(row){this.options.activeRow=row},setStatus:function(state,message,isCreated){var $newRow;if(state==="nodata"){$newRow=this.gridElement&&this.gridElement.find("tr.app-datagrid-row.always-new-row");state=$newRow&&$newRow.length?"ready":state}this.dataStatus.state=state;this.options.setGridState(state);this.dataStatus.message=message||this.options.dataStates[state];if(this._setStatusCalled){this._setStatus(isCreated)}else{this.__setStatus(isCreated);this._setStatusCalled=true}},setGridDimensions:function(key,value){if(value.indexOf("px")===-1&&value.indexOf("%")===-1&&value.indexOf("em")===-1&&value!="auto"){value=value+"px"}this.options[key]=value;if(key==="height"){var elements=this.gridHeaderElement.find("th");this.gridContainer.find(".app-grid-header-inner").css(key,value);if(this.options.isNavTypeScrollOrOndemand()&&(this.options.height!="100%"&&this.options.height!="auto")){this.gridContainer.find(".app-grid-header-inner").css("overflow","auto")}this.dataStatusContainer.css(key,value)}this.addOrRemoveScroll()},setColumnProp:function(fieldName,property,val,isGroup){var $col;if(property==="displayName"){if(isGroup){$col=this.gridHeaderElement.find('th[data-col-group="'+fieldName+'"]')}else{$col=this.gridHeaderElement.find('th[data-col-field="'+fieldName+'"]')}$col.attr("title",val);$col.find(".header-data").html(val);if(this.options.filtermode===this.CONSTANTS.SEARCH&&this.gridSearch){this.gridSearch.find('select option[value="'+fieldName+'"]').text(val)}}},applyRowNgClass:function(val,index){var $row=this.gridElement.find('tr.app-datagrid-row[data-row-id="'+index+'"]');$row.removeClass(val.toRemove);$row.addClass(val.toAdd)},applyColNgClass:function(val,rowIndex,colIndex){var $cell=this.gridElement.find('tr.app-datagrid-row[data-row-id="'+rowIndex+'"] td.app-datagrid-cell[data-col-id="'+colIndex+'"]');var $head=this.tableContainer.find('thead tr th.app-datagrid-header-cell[data-col-id="'+colIndex+'"]');$cell.removeClass(val.toRemove);$cell.addClass(val.toAdd);$head.removeClass(val.toRemove);$head.addClass(val.toAdd)},_destroy:function(){if(this.gridElement&&this.gridElement[0]&&this.boundRowClickHandlerOnCapture){this.gridElement[0].removeEventListener("click",this.boundRowClickHandlerOnCapture,true);this.boundRowClickHandlerOnCapture=null}if(this.gridHeaderElement){this.gridHeaderElement.off()}if(this.gridElement){this.gridElement.off()}if(this.gridSearch){this.gridSearch.off()}if(this.tableContainer){this.tableContainer.off()}if(this.gridContainer){this.gridContainer.off()}this.preparedData=[];this.preparedHeaderData=[];this.compiledCellTemplates={};this.element.text("");window.clearTimeout(this.refreshGridTimeout)}});"use strict";window.requestAnimationFrame=function(){"use strict";return window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimaitonFrame||function(callback){window.setTimeout(callback,1e3/60)}}();(function($){"use strict";var DIRECTIONS={NONE:0,HORIZONTAL:1,LEFT_TO_RIGHT:2,RIGHT_TO_LEFT:3,VERTICAL:4,TOP_TO_DOWN:5,DOWN_TO_TOP:6};var abs=Math.abs;var max=Math.max;var TAG_WHITE_LIST=["INPUT","SELECT","OPTION"];var SwipeTracer;var activeEventProcessor;var swipeMask=$("<div></div>");swipeMask.css({"background-color":"rgba(0, 0, 0, 0)",position:"fixed",top:0,width:"100vw",height:"100vh","z-index":1e5});var touchMoveListeners=[];var touchEndListeners=[];var pointerId=null;var onTouch=function(e){if(e&&(e.pointerId&&e.pointerId!==pointerId||e.touches&&e.touches.length>1)){onTouchEnd(e)}$.each(touchMoveListeners,function(i,fn){return fn(e)})};var onTouchEnd=function(e){pointerId=null;$.each(touchEndListeners,function(i,fn){return fn(e)});touchMoveListeners.length=0;touchEndListeners.length=0};function addEventListener(target,event,callback){(target.__zone_symbol__addEventListener||target.addEventListener).call(target,event,callback,{passive:true})}function iOSversion(){if(/iP(hone|od|ad)/.test(navigator.platform)){var v=navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/);return parseInt(v[1],10)}}if(window["PointerEvent"]&&iOSversion()>=13){addEventListener(document,"pointerdown",function(e){if(pointerId&&pointerId!==e.pointerId){onTouchEnd(e)}else{pointerId=e.pointerId}});addEventListener(document,"pointermove",onTouch);addEventListener(document,"pointerup",onTouchEnd);addEventListener(document,"pointercancel",onTouchEnd)}else{addEventListener(document,"mousemove",onTouch);addEventListener(document,"touchmove",onTouch);addEventListener(document,"mouseup",onTouchEnd);addEventListener(document,"touchcancel",onTouchEnd);addEventListener(document,"touchend",onTouchEnd)}function ScrollObserver(parent,child,direction){var elementsToObserve=function(array){var iter=child;while(iter){array.push({$ele:$(iter),last:{scrollLeft:iter.iscroll?iter.iscroll.x:iter.scrollLeft,scrollTop:iter.iscroll?iter.iscroll.y:iter.scrollTop}});iter=iter.parentElement}return array}([]);function isVerticalScroll(){var result;$.each(elementsToObserve,function(){if(this.$ele[0].iscroll){if(!isNaN(this.$ele[0].iscroll.y)&&this.$ele[0].iscroll.y!==0){result=true}}else if(this.$ele[0].scrollTop!==0){result=true}});return result}function isHorizontalScroll(){var result;$.each(elementsToObserve,function(){if(this.$ele[0].iscroll){if(!isNaN(this.$ele[0].iscroll.x)&&this.$ele[0].iscroll.x!==0){result=true}}else if(this.$ele[0].scrollLeft!==0){result=true}});return result}this.hasSrcolled=function(){if(direction===$.fn.swipey.DIRECTIONS.VERTICAL){return isVerticalScroll()}if(direction===$.fn.swipey.DIRECTIONS.HORIZONTAL){return isHorizontalScroll()}}}function SwipeEventSmoother(){var queue=[];var isProcessing=false;var time;function process(){if(queue.length>0){try{queue.shift()()}catch(e){console.error("Function invocation failed",e)}window.requestAnimationFrame(process)}else{isProcessing=false}}this.push=function(fn){queue.push(fn)};this.process=function(){if(!isProcessing){isProcessing=true;process()}}}activeEventProcessor=new SwipeEventSmoother;function getTouchEvent(event){if(event.originalEvent&&event.originalEvent.pointerType!=="mouse"){return event.originalEvent}return event.originalEvent&&event.originalEvent.touches&&event.originalEvent.touches[0]||event&&event.touches&&event.touches[0]||event}function computeDistance(startPoint,endPoint,direction){var distance=0,deltaX,deltaY;if(direction===DIRECTIONS.HORIZONTAL){distance=endPoint.x-startPoint.x}else if(direction===DIRECTIONS.LEFT_TO_RIGHT){distance=max(endPoint.x-startPoint.x,0)}else if(direction===DIRECTIONS.RIGHT_TO_LEFT){distance=max(startPoint.x-endPoint.x,0)}else if(direction===DIRECTIONS.VERTICAL){distance=endPoint.y-startPoint.y}else if(direction===DIRECTIONS.TOP_TO_DOWN){distance=max(endPoint.y-startPoint.y,0)}else if(direction===DIRECTIONS.DOWN_TO_TOP){distance=max(startPoint.y-endPoint.y,0)}else{deltaX=endPoint.x-startPoint.x;deltaY=endPoint.y-startPoint.y;distance=max(abs(deltaX),abs(deltaY));if(deltaX<0&&abs(deltaX)===distance||deltaY<0&&abs(deltaY)===distance){distance=-distance}}return distance}function onActiveSwipe(event,settings){var touch=getTouchEvent(event);var startPoint=settings.data.path[0];var point={x:touch.pageX,y:touch.pageY};var distance=computeDistance(startPoint,point,settings.direction);var eventSplits=[];var increment;var limit;settings.renderInProgress=false;if(distance!==settings.lastDistance){increment=(distance<settings.lastDistance?-1:1)*30;limit=distance-settings.lastDistance;for(var i=increment;increment>0&&i<=limit||increment<0&&i>=limit;i+=increment){eventSplits.push(i+settings.lastDistance)}if(limit%increment!==0){eventSplits.push(limit%abs(increment)+(eventSplits.length===0?settings.lastDistance:eventSplits[eventSplits.length-1]))}settings.lastDistance=distance;$.each(eventSplits,function(){var d=this;activeEventProcessor.push(function(){settings.data.length=d;settings.data.totalLength+=abs(d);settings.data.velocity=abs(settings.data.totalLength/(Date.now()-settings.data.startTime));settings.data.path.push(point);if(settings.onSwipe.call(settings.target,event,settings.data)===false){onActiveSwipeEnd(event,settings)}SwipeTracer.onSwipe(event,settings.data)})});activeEventProcessor.process()}}function onActiveSwipeEnd(event,settings){var touch=getTouchEvent(event);if(touch){settings.data.path.push({x:touch.pageX,y:touch.pageY})}activeEventProcessor.push(function(){SwipeTracer.onSwipeEnd(event,settings.data);settings.onSwipeEnd.call(settings.target,event,settings.data)});activeEventProcessor.process()}function listenActiveSwipe(event,settings){var touch=getTouchEvent(event);var swipeHandler;var swipeEndHandler;var passiveDistance;var passiveSwipeStartPoint=settings.data.path[0];var activeSwipeStartPoint={x:touch.pageX,y:touch.pageY};passiveDistance=computeDistance(passiveSwipeStartPoint,activeSwipeStartPoint,settings.direction);settings.data.length=passiveDistance<0?-1:1;settings.lastDistance=settings.data.length;settings.data.path=[activeSwipeStartPoint];settings.data.totalLength=abs(settings.data.length);settings.data.startTime=Date.now();if(settings.onSwipeStart.call(settings.target,event,settings.data)===false){return false}swipeMask.appendTo($("body"));swipeHandler=function(em){onActiveSwipe(em,settings)};swipeEndHandler=function(ee){swipeMask.remove();onActiveSwipeEnd(ee,settings)};touchMoveListeners=[];touchMoveListeners.push(swipeHandler);touchEndListeners=[];touchEndListeners.push(swipeEndHandler);SwipeTracer.onSwipeStart(event,settings.data);return true}function isThresholdAngleReached(startPoint,endPoint,direction){if(direction===DIRECTIONS.HORIZONTAL){if(Math.abs((endPoint.y-startPoint.y)/(endPoint.x-startPoint.x))<=.36397023426){return true}}else if(direction===DIRECTIONS.VERTICAL){if(Math.abs((endPoint.y-startPoint.y)/(endPoint.x-startPoint.x))>=2.74747741945){return true}}return false}function isThresholdReached(touch,settings){var startPoint=settings.data.path[0];var endPoint={x:touch.pageX,y:touch.pageY};var distance=computeDistance(startPoint,endPoint,settings.direction);return abs(distance)>settings.threshold&&isThresholdAngleReached(startPoint,endPoint,settings.direction)}function listenPassiveSwipe(touch,settings){var passiveSwipeHandler;settings.scrollObserver=new ScrollObserver(event.currentTarget,event.target,settings.direction);passiveSwipeHandler=function(em){if(isThresholdReached(getTouchEvent(em),settings)){if(settings.scrollObserver.hasSrcolled()||listenActiveSwipe(em,settings)){return false}}};touchMoveListeners.push(passiveSwipeHandler);settings.data={path:[{x:touch.pageX,y:touch.pageY}]}}function bind(settings){var events=settings.bindEvents;var listenFor="";if(_.includes(events,"touch")){listenFor+="touchstart"}else if(_.includes(events,"mouse")){listenFor+="mousedown"}else if(_.includes(events,"pointer")){listenFor+="pointerdown"}if(!listenFor){return}addEventListener(settings.target[0],listenFor,function(es){if(settings.disableMouse&&es.pointerType==="mouse"){return}if(es.pointerType!=="mouse"&&es.MSPOINTER_TYPE_MOUSE&&es.pointerType!==es.MSPOINTER_TYPE_MOUSE){if(TAG_WHITE_LIST.indexOf(es.target.tagName)<0){es.preventDefault()}else{return}}var touch=getTouchEvent(es);if(touch){listenPassiveSwipe(touch,settings)}})}$.fn.swipey=function(settings){this.each(function(){bind($.extend({direction:DIRECTIONS.NONE,target:$(this),bindEvents:["touch","mouse"],swipeTarget:document,threshold:30,onSwipeStart:$.noop,onSwipe:$.noop,onSwipeEnd:$.noop,disableMouse:true},settings))});return this};SwipeTracer={onSwipeStart:function(e,data){if($.fn.swipey.trace){var $svg='<svg height="100vh" width="100vw" id ="canvas">'+' <path stroke="rgba(0, 0, 0, 0.5)" stroke-linecap="round" stroke-width="20" fill-opacity="0" '+' stroke-opacity="0.8" d="M'+data.path[0].x+" "+data.path[0].y+' " />'+" </svg>";$svg.css({position:"fixed",top:0,left:0,width:"100vw",height:"100vh","z-index":1e4});$("body").append($svg);data.tracer={pathd:$("#canvas path")}}},onSwipe:function(e,data){if(data.tracer){var d=data.tracer.pathd.attr("d");var p=data.path[data.path.length-1];data.tracer.pathd.attr("d",d+" L"+p.x+" "+p.y+" ")}},onSwipeEnd:function(e,data){if(data.tracer){var firstPoint=data.path[0];var expected_1=[firstPoint,{y:firstPoint.y-50},{x:firstPoint.x+50},{y:firstPoint.y+50}];var trace_1=0;_.forEach(data.path,function(p){var ep;if(trace_1!==expected_1.length){ep=expected_1[trace_1];if((!ep.x||ep.x<=p.x)&&(!ep.y||ep.y<=p.y)){trace_1++}}});setTimeout(function(){$("body >#canvas").remove()},500)}}};$.fn.swipey.DIRECTIONS=DIRECTIONS})(jQuery);(function($){var $parse;var expressionRegex=/\$\{\{[a-zA-Z\+-/%\.\*\s\(\)\d,\\'"\$_]*\}\}/;function getParseService(){if($.fn.swipeAnimation.expressionEvaluator){return $.fn.swipeAnimation.expressionEvaluator}if(window.exprEval&&window.exprEval.Parser){return function(exp){var parser=(new window.exprEval.Parser).parse(exp);return function(context){return parser.evaluate(context)}}}}function compile(script){var tArr=[];var match;$parse=$parse||getParseService();if(_.isFunction(script)){return script}else if($parse){while((match=expressionRegex.exec(script))!==null){var expression=match[0];var prefix=script.substring(0,match.index);script=script.substring(match.index+expression.length);expression=expression.substring(3,expression.length-2);tArr.push(prefix);tArr.push($parse(expression).bind({}))}tArr.push(script);return function(){var args=arguments;return _.map(tArr,function(v){return _.isFunction(v)?v.apply(undefined,args):v}).join("")}}}function getObject(obj,$ele,args){if(_.isFunction(obj)){return obj.apply($ele,args)}return obj}function VelocityComputator(){var lastDistance=0;var lastTime=0;var v=0;return{addDistance:function(d){var currentTime=Date.now();if(Math.abs(d-lastDistance)>10&¤tTime!==lastTime){v=(d-lastDistance)/(currentTime-lastTime);lastDistance=d;lastTime=currentTime}if(v<0){v=Math.min(v,-1)}else{v=Math.max(v,1)}return this},getVelocity:function(){return v},getTime:function(d){return Math.abs(d/v)}}}function calculateBounds($el,settings,args){var centerVal=0;var bounds=getObject(settings.bounds,$el,args);if(!_.isUndefined(bounds.center)){centerVal=bounds.center}if(!_.isUndefined(bounds.lower)){bounds.lower=bounds.lower+centerVal}if(!_.isUndefined(bounds.upper)){bounds.upper=bounds.upper+centerVal}return bounds}function retrieveTargets(settings){_.forEach(settings.animation,function(a){if(_.isFunction(a.target)||a.targetFn){a.targetFn=_.isUndefined(a.targetFn)?a.target:a.targetFn;a.target=a.targetFn()}})}function SettingsProperty(){this.setSettings=function(settings,$el){$el.data("swipeAnimationDefaults",settings)};this.getSettings=function($el){return $el.data("swipeAnimationDefaults")}}function animate(settings,metaData,time,$el,distanceMoved,e){_.forEach(settings.animation,function(a){if(!a.target){return}if(a.target.length>1){a.target.each(function(i){metaData.$i=i;$(this).css(_.mapValues(a.css,function(v,k){return v(metaData)}))})}else{metaData.$i=0;a.target.css(_.mapValues(a.css,function(v,k){return v(metaData)}))}a.target.css({transition:"all ease-out "+time+"ms"});a.target.one("webkitTransitionEnd transitionend",function(){a.target.css({transition:""})})});setTimeout(function(){window.requestAnimationFrame(function(){if(metaData.$D===metaData.bounds.lower){settings.onLower.call($el,e)}else if(metaData.$D===metaData.bounds.upper){settings.onUpper.call($el,e)}settings.onAnimation(e,distanceMoved)})},time)}var methods={gotoUpper:function(){swipeToEnd(this,"upper",arguments[1])},gotoLower:function(time){swipeToEnd(this,"lower",arguments[1])}};function swipeToEnd($ele,moveTo,time){var settingsObj=new SettingsProperty;var settings=settingsObj.getSettings($ele);var metaData={};var bounds=calculateBounds($ele,settings);var context;retrieveTargets(settings);time=time||300;context=getObject(settings.context,$ele);metaData=_.extend({},context);metaData.$d=0;metaData.$D=moveTo==="lower"?bounds.lower:bounds.upper;metaData.bounds=bounds;animate(settings,metaData,time,$ele)}function addSwipey($ele,settings){var state={$D:0};var baseContext={max:Math.max,min:Math.min,abs:Math.abs};if(!_.isArray(settings.animation)){var target=settings.animation.target||$ele;var css=settings.animation.css||settings.animation;delete css[$ele];settings.animation=[{target:target,css:css}]}_.forEach(settings.animation,function(a){a.css=_.mapValues(a.css,function(v,k){return compile(v)})});var settingsObj=new SettingsProperty;settingsObj.setSettings(settings,$ele);$ele.swipey({direction:settings.direction,threshold:settings.threshold,bindEvents:settings.bindEvents,target:settings.target,onSwipeStart:function(e,data){var cd;state.$d=0;state.bounds=calculateBounds(this,settings,[e,data.length]);if(!_.isUndefined(state.bounds.center)){state.$D=state.bounds.center}else{state.$D=0}cd=state.$D+data.length;state.bounds.strictLower=!(state.bounds.strict===false||state.bounds.strictLower===false);state.bounds.strictUpper=!(state.bounds.strict===false||state.bounds.strictUpper===false);if(!settings.enableGestures()||state.bounds.strictLower&&(_.isUndefined(state.bounds.lower)&&data.length<0||!_.isUndefined(state.bounds.lower)&&state.bounds.lower>cd)||state.bounds.strictUpper&&(_.isUndefined(state.bounds.upper)&&data.length>0||!_.isUndefined(state.bounds.upper)&&state.bounds.upper<cd)){return false}state.vc=VelocityComputator();state.context=_.extend(baseContext,getObject(settings.context,$ele));state.localState=_.extend({},state.context);retrieveTargets(settings);_.forEach(settings.animation,function(a){if(a.target){a.target.css({transition:"none"})}})},onSwipe:function(e,data){var localState=state.localState;var cd=state.$D+data.length;localState.$d=data.length;localState.$D=state.$D;if(state.bounds.strictLower&&!_.isUndefined(state.bounds.lower)&&state.bounds.lower>cd){localState.$d=state.bounds.lower-state.$D}else if(state.bounds.strictUpper&&!_.isUndefined(state.bounds.upper)&&state.bounds.upper<cd){localState.$d=state.bounds.upper-state.$D}state.vc.addDistance(data.length);_.forEach(settings.animation,function(a){if(a.target){if(a.target.length>1){a.target.each(function(i){localState.$i=i;$(this).css(_.mapValues(a.css,function(v,k){return v(localState)}))})}else{localState.$i=0;a.target.css(_.mapValues(a.css,function(v,k){return v(localState)}))}}})},onSwipeEnd:function(e,data){var localState=state.localState;var cd=state.$D+data.length;var v=state.vc.getVelocity();var time;localState.$d=data.length;localState.$D=state.$D;if(!_.isUndefined(state.bounds.lower)&&v<=0&&state.$D>cd){localState.$D=state.bounds.lower}else if(!_.isUndefined(state.bounds.upper)&&v>=0&&state.$D<cd){localState.$D=state.bounds.upper}localState.$d=0;localState.bounds=state.bounds;state.$D=localState.$D;time=state.vc.getTime(localState.$D-cd);animate(settings,localState,time,$ele,cd,e)}})}$.fn.swipeAnimation=function(settings){if(methods[settings]){return methods[settings].apply(this,arguments)}this.each(function(){addSwipey($(this),$.extend({direction:$.fn.swipey.DIRECTIONS.HORIZONTAL,target:$(this),threshold:30,enableGestures:function(){return true},bindEvents:["touch"],bounds:{},context:{},animation:{},onLower:$.noop,onUpper:$.noop,onAnimation:$.noop},settings))});return this}})(jQuery);
|
|
689
689
|
/*!
|
|
690
690
|
* jQuery UI Touch Punch 0.2.3
|
|
691
691
|
*
|