angular-ui-grid
Version:
A data grid for Angular
6 lines • 350 kB
JavaScript
/*!
* ui-grid - v4.12.7 - 2024-04-12
* http://ui-grid.info/
* Copyright (c) 2024 ; License: MIT
*/
!function(){"use strict";angular.module("ui.grid.i18n",[]),angular.module("ui.grid",["ui.grid.i18n"])}(),function(){"use strict";angular.module("ui.grid.autoResize",["ui.grid"]).directive("uiGridAutoResize",["gridUtil",function(r){return{require:"uiGrid",scope:!1,link:function(e,n,t,o){var i;i=r.debounce(function(e,t,i,r){null!==n[0].offsetParent&&(o.grid.gridWidth=i,o.grid.gridHeight=r,o.grid.queueGridRefresh().then(function(){o.grid.api.core.raise.gridDimensionChanged(t,e,r,i)}))},400),e.$watchCollection(function(){return{width:r.elementWidth(n),height:r.elementHeight(n)}},function(e,t){angular.equals(e,t)||i(t.width,t.height,e.width,e.height)})}}}])}(),function(){"use strict";var e=angular.module("ui.grid.cellNav",["ui.grid"]);e.constant("uiGridCellNavConstants",{FEATURE_NAME:"gridCellNav",CELL_NAV_EVENT:"cellNav",direction:{LEFT:0,RIGHT:1,UP:2,DOWN:3,PG_UP:4,PG_DOWN:5},EVENT_TYPE:{KEYDOWN:0,CLICK:1,CLEAR:2}}),e.factory("uiGridCellNavFactory",["uiGridCellNavConstants","GridRowColumn",function(r,a){function e(e,t,i,r){this.rows=e.visibleRowCache,this.columns=t.visibleColumnCache,this.leftColumns=i?i.visibleColumnCache:[],this.rightColumns=r?r.visibleColumnCache:[],this.bodyContainer=e}return e.prototype.getFocusableCols=function(){return this.leftColumns.concat(this.columns,this.rightColumns).filter(function(e){return e.colDef.allowCellFocus})},e.prototype.getFocusableRows=function(){return this.rows.filter(function(e){return!1!==e.allowCellFocus})},e.prototype.getNextRowCol=function(e,t,i){switch(e){case r.direction.LEFT:return this.getRowColLeft(t,i);case r.direction.RIGHT:return this.getRowColRight(t,i);case r.direction.UP:return this.getRowColUp(t,i);case r.direction.DOWN:return this.getRowColDown(t,i);case r.direction.PG_UP:return this.getRowColPageUp(t,i);case r.direction.PG_DOWN:return this.getRowColPageDown(t,i)}},e.prototype.initializeSelection=function(){var e=this.getFocusableCols(),t=this.getFocusableRows();return 0===e.length||0===t.length?null:new a(t[0],e[0])},e.prototype.getRowColLeft=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),n=r.indexOf(e),o=0===(t=-1===t?1:t)?i.length-1:t-1;return new a(!(t<=o)||0===n?e:r[n-1],i[o])},e.prototype.getRowColRight=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),n=r.indexOf(e),o=(t=-1===t?0:t)===i.length-1?0:t+1;return!(o<=t)||n===r.length-1?new a(e,i[o]):new a(r[n+1],i[o])},e.prototype.getRowColDown=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),n=r.indexOf(e);return-1===t&&(t=0),n===r.length-1?new a(e,i[t]):new a(r[n+1],i[t])},e.prototype.getRowColPageDown=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),e=r.indexOf(e),n=(-1===t&&(t=0),this.bodyContainer.minRowsToRender());return e>=r.length-n?new a(r[r.length-1],i[t]):new a(r[e+n],i[t])},e.prototype.getRowColUp=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),n=r.indexOf(e);return new a(0===n?e:r[n-1],i[t=-1===t?0:t])},e.prototype.getRowColPageUp=function(e,t){var i=this.getFocusableCols(),r=this.getFocusableRows(),t=i.indexOf(t),e=r.indexOf(e),n=(-1===t&&(t=0),this.bodyContainer.minRowsToRender());return new a(e-n<0?r[0]:r[e-n],i[t])},e}]),e.service("uiGridCellNavService",["uiGridConstants","uiGridCellNavConstants","$q","uiGridCellNavFactory",function(t,i,r,n){var o={initializeGrid:function(r){r.registerColumnBuilder(o.cellNavColumnBuilder),r.cellNav={},r.cellNav.lastRowCol=null,r.cellNav.focusedCells=[],o.defaultGridOptions(r.options);var e={cellNav:{navigate:function(e,t){},viewPortKeyDown:function(e,t){},viewPortKeyPress:function(e,t){}}},t={cellNav:{scrollToFocus:function(e,t){return o.scrollToFocus(r,e,t)},getFocusedCell:function(){return r.cellNav.lastRowCol},getCurrentSelection:function(){return r.cellNav.focusedCells},rowColSelectIndex:function(e){for(var t=-1,i=0;i<r.cellNav.focusedCells.length;i++)if(r.cellNav.focusedCells[i].col.uid===e.col.uid&&r.cellNav.focusedCells[i].row.uid===e.row.uid){t=i;break}return t}}};r.api.registerEventsFromObject(e),r.api.registerMethodsFromObject(t)},defaultGridOptions:function(e){e.modifierKeysToMultiSelectCells=!0===e.modifierKeysToMultiSelectCells,e.keyDownOverrides=e.keyDownOverrides||[]},decorateRenderContainers:function(e){var t=e.hasRightContainer()?e.renderContainers.right:null,i=e.hasLeftContainer()?e.renderContainers.left:null;null!==i&&(e.renderContainers.left.cellNav=new n(e.renderContainers.body,i,t,e.renderContainers.body)),null!==t&&(e.renderContainers.right.cellNav=new n(e.renderContainers.body,t,e.renderContainers.body,i)),e.renderContainers.body.cellNav=new n(e.renderContainers.body,e.renderContainers.body,i,t)},getDirection:function(e){return e.keyCode===t.keymap.LEFT||e.keyCode===t.keymap.TAB&&e.shiftKey?i.direction.LEFT:e.keyCode===t.keymap.RIGHT||e.keyCode===t.keymap.TAB?i.direction.RIGHT:e.keyCode===t.keymap.UP||e.keyCode===t.keymap.ENTER&&e.shiftKey?i.direction.UP:e.keyCode===t.keymap.PG_UP?i.direction.PG_UP:e.keyCode===t.keymap.DOWN||e.keyCode===t.keymap.ENTER&&!e.ctrlKey&&!e.altKey?i.direction.DOWN:e.keyCode===t.keymap.PG_DOWN?i.direction.PG_DOWN:null},cellNavColumnBuilder:function(e,t,i){return e.allowCellFocus=void 0===e.allowCellFocus||e.allowCellFocus,r.all([])},scrollToFocus:function(t,e,i){var r=null,n=null;return null!=e&&(r=t.getRow(e)),null!=i&&(n=t.getColumn(i.name||i.field)),t.api.core.scrollToIfNecessary(r,n).then(function(){var e={row:r,col:n};null!==r&&null!==n&&t.cellNav.broadcastCellNav(e,null,null)})},getLeftWidth:function(e,t){var i,r=0;return t&&(i=e.renderContainers.body.visibleColumnCache.indexOf(t),e.renderContainers.body.visibleColumnCache.forEach(function(e,t){t<i&&(r+=e.drawnWidth)}),e=0===i?0:(i+1)/e.renderContainers.body.visibleColumnCache.length,r+=t.drawnWidth*e),r}};return o}]),e.directive("uiGridCellnav",["uiGridCellNavService","uiGridCellNavConstants","uiGridConstants","GridRowColumn","$compile","i18nService",function(s,u,d,c,o,g){return{replace:!0,priority:-150,require:"^uiGrid",scope:!1,controller:function(){},compile:function(){return{pre:function(e,t,i,a){var r=e,l=a.grid;s.initializeGrid(l),a.cellNav={},a.cellNav.makeRowCol=function(e){return e=e instanceof c?e:new c(e.row,e.col)},a.cellNav.getActiveCell=function(){var e=t[0].getElementsByClassName("ui-grid-cell-focus");if(0<e.length)return e[0]},a.cellNav.broadcastCellNav=l.cellNav.broadcastCellNav=function(e,t,i){t=!(void 0===t||!t),e=a.cellNav.makeRowCol(e),a.cellNav.broadcastFocus(e,t,i),r.$broadcast(u.CELL_NAV_EVENT,e,t,i)},a.cellNav.clearFocus=l.cellNav.clearFocus=function(){l.cellNav.focusedCells=[],r.$broadcast(u.CELL_NAV_EVENT)},a.cellNav.broadcastFocus=function(e,t,i){t=!(void 0===t||!t);var r=(e=a.cellNav.makeRowCol(e)).row,n=e.col,o=a.grid.api.cellNav.rowColSelectIndex(e);null===l.cellNav.lastRowCol||-1===o||l.cellNav.lastRowCol.col===n&&l.cellNav.lastRowCol.row===r?(r=new c(r,n),null!==l.cellNav.lastRowCol&&l.cellNav.lastRowCol.row===r.row&&l.cellNav.lastRowCol.col===r.col&&!l.options.enableCellEditOnFocus||(l.api.cellNav.raise.navigate(r,l.cellNav.lastRowCol,i),l.cellNav.lastRowCol=r),a.grid.options.modifierKeysToMultiSelectCells&&t?l.cellNav.focusedCells.push(e):l.cellNav.focusedCells=[e]):l.options.modifierKeysToMultiSelectCells&&t&&0<=o&&l.cellNav.focusedCells.splice(o,1)},a.cellNav.handleKeyDown=function(e){var t,i,r,n,o=s.getDirection(e);return null===o?null:(r="body",e.uiGridTargetRenderContainerId&&(r=e.uiGridTargetRenderContainerId),(t=a.grid.api.cellNav.getFocusedCell())?(i=a.grid.renderContainers[r].cellNav.getNextRowCol(o,t.row,t.col),r=a.grid.renderContainers[r].cellNav.getFocusableCols(),n=a.grid.api.cellNav.rowColSelectIndex(i),(o!==u.direction.LEFT||i.col!==r[r.length-1]||i.row!==t.row||e.keyCode!==d.keymap.TAB||!e.shiftKey)&&(o!==u.direction.RIGHT||i.col!==r[0]||i.row!==t.row||e.keyCode!==d.keymap.TAB||e.shiftKey)?(l.scrollToIfNecessary(i.row,i.col).then(function(){a.cellNav.broadcastCellNav(i,null,e)}),e.stopPropagation(),e.preventDefault(),!1):(l.cellNav.focusedCells.splice(n,1),a.cellNav.clearFocus(),!0)):void 0)}},post:function(t,i,e,r){var c=r.grid,r=!0;try{angular.module("ngAria")}catch(e){r=!1}function n(){var e='<div id="'+c.id+'-aria-speakable" class="ui-grid-a11y-ariascreenreader-speakable ui-grid-offscreen" aria-live="assertive" role="alert" aria-atomic="true" aria-hidden="false" aria-relevant="additions" > </div>',d=o(e)(t);i.prepend(d),t.$on(u.CELL_NAV_EVENT,function(e,t,i,r){if(!r||"focus"!==r.type){for(var n,o=[],a=c.api.cellNav.getCurrentSelection(),l=0;l<a.length;l++){s=a[l],n="";var s=(n="selectionRowHeaderCol"===s.col.field?(s.row.isSelected?g.getSafeText("search.aria.selected"):g.getSafeText("search.aria.notSelected"))+", ":n)+c.getCellDisplayValue(s.row,s.col)+(n=a[l].col,", "+g.getSafeText("headerCell.aria.column")+" "+n.displayName);o.push(s)}(r=o.toString())!==d.text().trim()&&(d[0].style.clip="rect(0px,0px,0px,0px)",d[0].innerHTML="",d[0].style.visibility="hidden",d[0].style.visibility="visible",""!==r)&&(d[0].style.clip="auto",d[0].appendChild(document.createTextNode(r+" ")),d[0].style.visibility="hidden",d[0].style.visibility="visible")}})}r&&n()}}}}}]),e.directive("uiGridRenderContainer",["$timeout","gridUtil","uiGridCellNavService","$compile","uiGridCellNavConstants",function(d,c,u,g,p){return{replace:!0,priority:-99999,require:["^uiGrid","uiGridRenderContainer","?^uiGridCellnav"],scope:!1,compile:function(){return{post:function(e,t,i,r){var n,o,a,l=r[0],s=r[1],r=r[2];l.grid.api.cellNav&&(n=s.containerId,s=l.grid,u.decorateRenderContainers(s),"body"===n)&&(l.grid.options.modifierKeysToMultiSelectCells?t.attr("aria-multiselectable",!0):t.attr("aria-multiselectable",!1),o=g('<div class="ui-grid-focuser" role="region" aria-live="assertive" aria-atomic="false" tabindex="0" aria-controls="'+s.id+"-aria-speakable "+s.id+'-grid-container" aria-owns="'+s.id+'-grid-container"></div>')(e),t.append(o),o.on("focus",function(e){e.uiGridTargetRenderContainerId=n,null===l.grid.api.cellNav.getFocusedCell()&&(e=l.grid.renderContainers[n].cellNav.getNextRowCol(p.direction.DOWN,null,null)).row&&e.col&&l.cellNav.broadcastCellNav(e)}),r.setAriaActivedescendant=function(e){t.attr("aria-activedescendant",e)},r.removeAriaActivedescendant=function(e){t.attr("aria-activedescendant")===e&&t.attr("aria-activedescendant","")},l.focus=function(){c.focus.byElement(o[0])},a=null,o.on("keydown",function(i){i.uiGridTargetRenderContainerId=n;var e=l.grid.api.cellNav.getFocusedCell();null===(l.grid.options.keyDownOverrides.some(function(t){return Object.keys(t).every(function(e){return t[e]===i[e]})})?null:l.cellNav.handleKeyDown(i))&&(l.grid.api.cellNav.raise.viewPortKeyDown(i,e,l.cellNav.handleKeyDown),a=e)}),o.on("keypress",function(e){a&&(d(function(){l.grid.api.cellNav.raise.viewPortKeyPress(e,a)},4),a=null)}),e.$on("$destroy",function(){o.off()}))}}}}}]),e.directive("uiGridViewport",function(){return{replace:!0,priority:-99999,require:["^uiGrid","^uiGridRenderContainer","?^uiGridCellnav"],scope:!1,compile:function(){return{pre:function(e,t,i,r){},post:function(e,t,i,r){var n=r[0],o=r[1];n.grid.api.cellNav&&"body"===o.containerId&&((r=n.grid).api.core.on.scrollBegin(e,function(){var e=n.grid.api.cellNav.getFocusedCell();null!==e&&o.colContainer.containsColumn(e.col)&&n.cellNav.clearFocus()}),r.api.core.on.scrollEnd(e,function(e){var t=n.grid.api.cellNav.getFocusedCell();null!==t&&o.colContainer.containsColumn(t.col)&&n.cellNav.broadcastCellNav(t)}),r.api.cellNav.on.navigate(e,function(){n.focus()}))}}}}}),e.directive("uiGridCell",["uiGridCellNavConstants","uiGridConstants","GridRowColumn",function(u,g,p){return{priority:-150,restrict:"A",require:["^uiGrid","?^uiGridCellnav"],scope:!1,link:function(i,e,t,r){var n,o,a=r[0],l=r[1];function s(e){e.preventDefault()}function d(){n.cellNav.focusedCells.some(function(e,t){return e.row===i.row&&e.col===i.col})?i.focused||(e.find("div").addClass("ui-grid-cell-focus"),e.attr("aria-selected",!0),l.setAriaActivedescendant(e.attr("id")),i.focused=!0):c()}function c(){i.focused&&(e.find("div").removeClass("ui-grid-cell-focus"),e.attr("aria-selected",!1),l.removeAriaActivedescendant(e.attr("id")),i.focused=!1)}a.grid.api.cellNav&&i.col.colDef.allowCellFocus&&(n=a.grid,i.focused=!1,e.attr("tabindex",-1),e.find("div").on("click",function(e){a.cellNav.broadcastCellNav(new p(i.row,i.col),e.ctrlKey||e.metaKey,e),e.stopPropagation(),i.$apply()}),e.on("mousedown",s),a.grid.api.edit&&(a.grid.api.edit.on.beginCellEdit(i,function(){e.off("mousedown",s)}),a.grid.api.edit.on.afterCellEdit(i,function(){e.on("mousedown",s)}),a.grid.api.edit.on.cancelCellEdit(i,function(){e.on("mousedown",s)})),d(),e.on("focus",function(e){a.cellNav.broadcastCellNav(new p(i.row,i.col),!1,e),e.stopPropagation(),i.$apply()}),i.$on(u.CELL_NAV_EVENT,d),o=a.grid.registerDataChangeCallback(function(e){c(),i.$applyAsync(d)},[g.dataChange.ROW]),i.$on("$destroy",function(){o(),e.find("div").off(),e.off()}))}}}])}(),function(){"use strict";angular.module("ui.grid").constant("uiGridConstants",{LOG_DEBUG_MESSAGES:!0,LOG_WARN_MESSAGES:!0,LOG_ERROR_MESSAGES:!0,CUSTOM_FILTERS:/CUSTOM_FILTERS/g,COL_FIELD:/COL_FIELD/g,MODEL_COL_FIELD:/MODEL_COL_FIELD/g,TOOLTIP:/title=\"TOOLTIP\"/g,DISPLAY_CELL_TEMPLATE:/DISPLAY_CELL_TEMPLATE/g,TEMPLATE_REGEXP:/<.+>/,FUNC_REGEXP:/(\([^)]*\))?$/,DOT_REGEXP:/\./g,APOS_REGEXP:/'/g,BRACKET_REGEXP:/^(.*)((?:\s*\[\s*\d+\s*\]\s*)|(?:\s*\[\s*"(?:[^"\\]|\\.)*"\s*\]\s*)|(?:\s*\[\s*'(?:[^'\\]|\\.)*'\s*\]\s*))(.*)$/,COL_CLASS_PREFIX:"ui-grid-col",ENTITY_BINDING:"$$this",events:{GRID_SCROLL:"uiGridScroll",COLUMN_MENU_SHOWN:"uiGridColMenuShown",ITEM_DRAGGING:"uiGridItemDragStart",COLUMN_HEADER_CLICK:"uiGridColumnHeaderClick"},keymap:{TAB:9,STRG:17,CAPSLOCK:20,CTRL:17,CTRLRIGHT:18,CTRLR:18,SHIFT:16,RETURN:13,ENTER:13,BACKSPACE:8,BCKSP:8,ALT:18,ALTR:17,ALTRIGHT:17,SPACE:32,WIN:91,MAC:91,FN:null,PG_UP:33,PG_DOWN:34,UP:38,DOWN:40,LEFT:37,RIGHT:39,ESC:27,DEL:46,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123},ASC:"asc",DESC:"desc",filter:{STARTS_WITH:2,ENDS_WITH:4,EXACT:8,CONTAINS:16,GREATER_THAN:32,GREATER_THAN_OR_EQUAL:64,LESS_THAN:128,LESS_THAN_OR_EQUAL:256,NOT_EQUAL:512,SELECT:"select",INPUT:"input"},aggregationTypes:{sum:2,count:4,avg:8,min:16,max:32},CURRENCY_SYMBOLS:["¤","؋","Ar","Ƀ","฿","B/.","Br","Bs.","Bs.F.","GH₵","¢","c","Ch.","₡","C$","D","ден","دج",".د.ب","د.ع","JD","د.ك","ل.د","дин","د.ت","د.م.","د.إ","Db","$","₫","Esc","€","ƒ","Ft","FBu","FCFA","CFA","Fr","FRw","G","gr","₲","h","₴","₭","Kč","kr","kn","MK","ZK","Kz","K","L","Le","лв","E","lp","M","KM","MT","₥","Nfk","₦","Nu.","UM","T$","MOP$","₱","Pt.","£","ج.م.","LL","LS","P","Q","q","R","R$","ر.ع.","ر.ق","ر.س","៛","RM","p","Rf.","₹","₨","SRe","Rp","₪","Ksh","Sh.So.","USh","S/","SDR","сом","৳\t","WS$","₮","VT","₩","¥","zł"],scrollDirection:{UP:"up",DOWN:"down",LEFT:"left",RIGHT:"right",NONE:"none"},dataChange:{ALL:"all",EDIT:"edit",ROW:"row",COLUMN:"column",OPTIONS:"options"},scrollbars:{NEVER:0,ALWAYS:1,WHEN_NEEDED:2}})}(),angular.module("ui.grid").directive("uiGridCell",["$compile","$parse","gridUtil","uiGridConstants",function(n,e,o,s){return{priority:0,scope:!1,require:"?^uiGrid",compile:function(){return{pre:function(t,i,e,r){r&&t.col.compiledElementFn?(0,t.col.compiledElementFn)(t,function(e,t){i.append(e)}):r&&!t.col.compiledElementFn?t.col.getCompiledElementFn().then(function(e){e(t,function(e,t){i.append(e)})}).catch(angular.noop):(r=t.col.cellTemplate.replace(s.MODEL_COL_FIELD,"row.entity."+o.preEval(t.col.field)).replace(s.COL_FIELD,"grid.getCellValue(row, col)"),r=n(r)(t),i.append(r))},post:function(i,r){var n,o=i.col.getColClass(!1);function a(e){var t=r;n&&(t.removeClass(n),n=null),n=angular.isFunction(i.col.cellClass)?i.col.cellClass(i.grid,i.row,i.col,i.rowRenderIndex,i.colRenderIndex):i.col.cellClass,t.addClass(n)}r.addClass(o),i.col.cellClass&&a();var e=i.grid.registerDataChangeCallback(a,[s.dataChange.COLUMN,s.dataChange.EDIT]);var t=i.$watch("row",function(e,t){e!==t&&((n||i.col.cellClass)&&a(),(e=i.col.getColClass(!1))!==o)&&(r.removeClass(o),r.addClass(e),o=e)});function l(){e(),t()}i.$on("$destroy",l),r.on("$destroy",l)}}}}}]),angular.module("ui.grid").service("uiGridColumnMenuService",["i18nService","uiGridConstants","gridUtil",function(e,i,d){var r={initialize:function(e,t){e.grid=t.grid,(t.columnMenuScope=e).menuShown=!1},setColMenuItemWatch:function(t){var e=t.$watch("col.menuItems",function(e){void 0!==e&&e&&angular.isArray(e)?(e.forEach(function(e){void 0!==e.context&&e.context||(e.context={}),e.context.col=t.col}),t.menuItems=t.defaultMenuItems.concat(e)):t.menuItems=t.defaultMenuItems});t.$on("$destroy",e)},getGridOption:function(e,t){return void 0!==e.grid&&e.grid&&e.grid.options&&e.grid.options[t]},sortable:function(e){return Boolean(this.getGridOption(e,"enableSorting")&&void 0!==e.col&&e.col&&e.col.enableSorting)},isActiveSort:function(e,t){return Boolean(void 0!==e.col&&void 0!==e.col.sort&&void 0!==e.col.sort.direction&&e.col.sort.direction===t)},suppressRemoveSort:function(e){return Boolean(e.col&&e.col.suppressRemoveSort)},hideable:function(e){return Boolean(this.getGridOption(e,"enableHiding")&&void 0!==e.col&&e.col&&(e.col.colDef&&!1!==e.col.colDef.enableHiding||!e.col.colDef)||!this.getGridOption(e,"enableHiding")&&e.col&&e.col.colDef&&e.col.colDef.enableHiding)},getDefaultMenuItems:function(t){return[{title:function(){return e.getSafeText("sort.ascending")},icon:"ui-grid-icon-sort-alt-up",action:function(e){e.stopPropagation(),t.sortColumn(e,i.ASC)},shown:function(){return r.sortable(t)},active:function(){return r.isActiveSort(t,i.ASC)}},{title:function(){return e.getSafeText("sort.descending")},icon:"ui-grid-icon-sort-alt-down",action:function(e){e.stopPropagation(),t.sortColumn(e,i.DESC)},shown:function(){return r.sortable(t)},active:function(){return r.isActiveSort(t,i.DESC)}},{title:function(){return e.getSafeText("sort.remove")},icon:"ui-grid-icon-cancel",action:function(e){e.stopPropagation(),t.unsortColumn()},shown:function(){return r.sortable(t)&&void 0!==t.col&&void 0!==t.col.sort&&void 0!==t.col.sort.direction&&null!==t.col.sort.direction&&!r.suppressRemoveSort(t)}},{title:function(){return e.getSafeText("column.hide")},icon:"ui-grid-icon-cancel",shown:function(){return r.hideable(t)},action:function(e){e.stopPropagation(),t.hideColumn()}}]},getColumnElementPosition:function(e,t,i){var r={};return r.left=i[0].offsetLeft,r.top=i[0].offsetTop,r.parentLeft=i[0].offsetParent.offsetLeft,r.offset=0,t.grid.options.offsetLeft&&(r.offset=t.grid.options.offsetLeft),r.height=d.elementHeight(i,!0),r.width=d.elementWidth(i,!0),r},repositionMenu:function(e,t,i,r,n){var o=r[0].querySelectorAll(".ui-grid-menu"),n=d.closestElm(n,".ui-grid-render-container"),a=n.getBoundingClientRect().left-e.grid.element[0].getBoundingClientRect().left,n=n.querySelectorAll(".ui-grid-viewport")[0].scrollLeft,l=d.elementWidth(o,!0),s=t.lastMenuPaddingRight||e.lastMenuPaddingRight||10,o=(0!==o.length&&0!==o[0].querySelectorAll(".ui-grid-menu-mid").length&&(s=parseInt(d.getStyles(angular.element(o)[0]).paddingRight,10),e.lastMenuPaddingRight=s,t.lastMenuPaddingRight=s),i.left+a-n+i.parentLeft+i.width+s);o<i.offset+l&&(o=Math.max(i.left-n+i.parentLeft-s+l,i.offset+l)),r.css("left",o+"px"),r.css("top",i.top+i.height+"px")}};return r}]).directive("uiGridColumnMenu",["$timeout","gridUtil","uiGridConstants","uiGridColumnMenuService","$document",function(n,a,l,s,d){return{priority:0,scope:!0,require:"^uiGrid",templateUrl:"ui-grid/uiGridColumnMenu",replace:!0,link:function(o,i,e,t){function r(e){o.col&&(o.col.menuShown=e)}s.initialize(o,t),o.defaultMenuItems=s.getDefaultMenuItems(o),o.menuItems=o.defaultMenuItems,s.setColMenuItemWatch(o),o.showMenu=function(e,t,i){r(!1),o.col=e,r(!0);e=s.getColumnElementPosition(o,e,t);o.menuShown?(o.colElement=t,o.colElementPosition=e,o.hideThenShow=!0,o.$broadcast("hide-menu",{originalEvent:i})):(o.menuShown=!0,o.colElement=t,o.colElementPosition=e,o.$broadcast("show-menu",{originalEvent:i}))},o.hideMenu=function(e){o.menuShown=!1,r(!1),e||o.$broadcast("hide-menu")},o.$on("menu-hidden",function(){var e=angular.element(i[0].querySelector(".ui-grid-menu-items"))[0];i[0].removeAttribute("style"),o.hideThenShow?(delete o.hideThenShow,o.$broadcast("show-menu"),o.menuShown=!0):(o.hideMenu(!0),o.col&&o.col.visible&&a.focus.bySelector(d,".ui-grid-header-cell."+o.col.getColClass()+" .ui-grid-column-menu-button",o.col.grid,!1).catch(angular.noop)),e&&(e.onkeydown=null,angular.forEach(e.children,function(e){e.onkeydown=null}))}),o.$on("menu-shown",function(){n(function(){var e,n;function t(e,t,i,r){e.keyCode===l.keymap.TAB&&(t?e.preventDefault():i&&(e.preventDefault(),n[r].focus()))}s.repositionMenu(o,o.col,o.colElementPosition,i,o.colElement),o.menuItems.some(function(e){return e.shown()})&&a.focus.bySelector(d,".ui-grid-menu-items .ui-grid-menu-item:not(.ng-hide)",!0).catch(angular.noop),delete o.colElementPosition,delete o.columnElement,e=angular.element(i[0].querySelector(".ui-grid-menu-items"))[0],n=[],e&&(e.onkeydown=function(e){e.keyCode===l.keymap.ESC&&(e.preventDefault(),o.hideMenu())},e=e.querySelectorAll(".ui-grid-menu-item:not(.ng-hide)"),angular.forEach(e,function(e){null!==e.offsetParent&&this.push(e)},n),n.length)&&(1===n.length?n[0].onkeydown=function(e){t(e,!0)}:(n[0].onkeydown=function(e){t(e,!1,e.shiftKey,n.length-1)},n[n.length-1].onkeydown=function(e){t(e,!1,!e.shiftKey,0)}))})}),o.sortColumn=function(e,t){e.stopPropagation(),o.grid.sortColumn(o.col,t,!0).then(function(){o.grid.refresh(),o.hideMenu()}).catch(angular.noop)},o.unsortColumn=function(){o.col.unsort(),o.grid.refresh(),o.hideMenu()};o.hideColumn=function(){o.col.colDef.visible=!1,o.col.visible=!1,o.grid.queueGridRefresh(),o.hideMenu(),o.grid.api.core.notifyDataChange(l.dataChange.COLUMN),o.grid.api.core.raise.columnVisibilityChanged(o.col),n(function(){function t(){return a.focus.byId("grid-menu",o.grid)}var i,r,e;o.grid.columns.some(function(e,t){if(angular.equals(e,o.col))return i=t,!0}),o.grid.columns.some(function(e,t){return!!e.visible&&(t<i?void(r=e):i<t&&!r?(r=e,!0):!!(i<t&&r)||void 0)}),r?(e=r.getColClass(),a.focus.bySelector(d,".ui-grid-header-cell."+e+" .ui-grid-header-cell-primary-focus",!0).then(angular.noop,function(e){if("canceled"!==e)return t()}).catch(angular.noop)):t()})}},controller:["$scope",function(e){var t=this;e.$watch("menuItems",function(e){t.menuItems=e})}]}}]),function(){"use strict";angular.module("ui.grid").directive("uiGridFilter",["$compile","$templateCache","i18nService","gridUtil",function(n,e,t,r){return{compile:function(){return{pre:function(i,r){i.col.updateFilters=function(e){var t;r.children().remove(),e&&(void 0===(t=i.col.filterHeaderTemplate)&&""!==i.col.providedFilterHeaderTemplate?i.col.filterHeaderTemplatePromise&&i.col.filterHeaderTemplatePromise.then(function(){t=i.col.filterHeaderTemplate,r.append(n(t)(i))}):r.append(n(t)(i)))},i.$on("$destroy",function(){delete i.col.filterable,delete i.col.updateFilters})},post:function(e,i){e.aria=t.getSafeText("headerCell.aria"),e.removeFilter=function(e,t){e.term=null,r.focus.bySelector(i,".ui-grid-filter-input-"+t)}}}}}}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridFooterCell",["$timeout","gridUtil","uiGridConstants","$compile",function(e,t,a,r){return{priority:0,scope:{col:"=",row:"=",renderIndex:"="},replace:!0,require:"^uiGrid",compile:function(){return{pre:function(e,t){var i=e.col.footerCellTemplate;void 0===i&&""!==e.col.providedFooterCellTemplate?e.col.footerCellTemplatePromise&&e.col.footerCellTemplatePromise.then(function(){i=e.col.footerCellTemplate,t.append(r(i)(e))}):t.append(r(i)(e))},post:function(t,i,e,r){t.grid=r.grid;function n(){var e=i;o&&(e.removeClass(o),o=null),o=angular.isFunction(t.col.footerCellClass)?t.col.footerCellClass(t.grid,t.row,t.col,t.rowRenderIndex,t.colRenderIndex):t.col.footerCellClass,e.addClass(o)}var o,r=t.col.getColClass(!1),r=(i.addClass(r),t.col.footerCellClass&&n(),t.col.updateAggregationValue(),t.grid.registerDataChangeCallback(n,[a.dataChange.COLUMN]));t.grid.api.core.on.rowsRendered(t,t.col.updateAggregationValue),t.grid.api.core.on.rowsRendered(t,n),t.$on("$destroy",r)}}}}}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridFooter",["$templateCache","$compile","uiGridConstants","gridUtil","$timeout",function(e,a,t,l,i){return{restrict:"EA",replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:!0,compile:function(e,t){return{pre:function(t,i,e,r){var n=r[0],o=r[1],r=(t.grid=n.grid,t.colContainer=o.colContainer,o.footer=i,t.grid.options.footerTemplate);l.getTemplate(r).then(function(e){var e=angular.element(e),e=a(e)(t);i.append(e),o&&(e=i[0].getElementsByClassName("ui-grid-footer-viewport")[0])&&(o.footerViewport=e)}).catch(angular.noop)},post:function(e,t,i,r){var n=r[0],r=r[1],n=(n.grid,l.disableAnimations(t),(r.footer=t)[0].getElementsByClassName("ui-grid-footer-viewport")[0]);n&&(r.footerViewport=n)}}}}}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridGridFooter",["$templateCache","$compile","uiGridConstants","gridUtil",function(e,n,t,o){return{restrict:"EA",replace:!0,require:"^uiGrid",scope:!0,compile:function(){return{pre:function(t,i,e,r){t.grid=r.grid;r=t.grid.options.gridFooterTemplate;o.getTemplate(r).then(function(e){e=angular.element(e),e=n(e)(t);i.append(e)}).catch(angular.noop)}}}}}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridHeaderCell",["$compile","$timeout","$window","$document","gridUtil","uiGridConstants","ScrollEvent","i18nService","$rootScope",function(r,u,e,g,t,p,i,f,m){return{priority:0,scope:{col:"=",row:"=",renderIndex:"="},require:["^uiGrid","^uiGridRenderContainer"],replace:!0,compile:function(){return{pre:function(e,t){var i=e.col.headerCellTemplate;void 0===i&&""!==e.col.providedHeaderCellTemplate?e.col.headerCellTemplatePromise&&e.col.headerCellTemplatePromise.then(function(){i=e.col.headerCellTemplate,t.append(r(i)(e))}):t.append(r(i)(e))},post:function(i,t,e,r){function n(e){e&&(void 0!==i.col.updateFilters&&i.col.updateFilters(i.col.filterable),i.col.filterable?(i.col.filters.forEach(function(e,t){c.push(i.$watch("col.filters["+t+"].term",function(e,t){e!==t&&(s.grid.api.core.raise.filterChanged(i.col),s.grid.api.core.notifyDataChange(p.dataChange.COLUMN),s.grid.queueGridRefresh())}))}),i.$on("$destroy",function(){c.forEach(function(e){e()})})):c.forEach(function(e){e()}))}function o(){var e=t,e=(a&&(e.removeClass(a),a=null),a=angular.isFunction(i.col.headerCellClass)?i.col.headerCellClass(i.grid,i.row,i.col,i.rowRenderIndex,i.colRenderIndex):i.col.headerCellClass,e.addClass(a),i.$applyAsync(function(){var e=i.grid.renderContainers.right&&i.grid.renderContainers.right.visibleColumnCache.length?i.grid.renderContainers.right:i.grid.renderContainers.body;i.isLastCol=s.grid.options&&s.grid.options.enableGridMenu&&i.col===e.visibleColumnCache[e.visibleColumnCache.length-1]}),i.sortable=Boolean(i.col.enableSorting),i.col.filterable);i.col.filterable=Boolean(s.grid.options.enableFiltering&&i.col.enableFiltering),n(e!==i.col.filterable),i.colMenu=i.col.grid.options&&!1!==i.col.grid.options.enableColumnMenus&&i.col.colDef&&!1!==i.col.colDef.enableColumnMenu,i.offAllEvents(),(i.sortable||i.colMenu)&&(i.onDownEvents(),i.$on("$destroy",function(){i.offAllEvents()}))}var a,l,s=r[0],r=r[1],r=(i.i18n={headerCell:f.getSafeText("headerCell"),sort:f.getSafeText("sort")},i.isSortPriorityVisible=function(){return i.col&&i.col.sort&&angular.isNumber(i.col.sort.priority)&&i.grid.columns.some(function(e,t){return angular.isNumber(e.sort.priority)&&e!==i.col})},i.getSortDirectionAriaLabel=function(){var e=i.col,t=e.sort&&e.sort.direction===p.ASC?i.i18n.sort.ascending:e.sort&&e.sort.direction===p.DESC?i.i18n.sort.descending:i.i18n.sort.none;return t=i.isSortPriorityVisible()?t+". "+i.i18n.headerCell.priority+" "+(e.sort.priority+1):t},i.grid=s.grid,i.renderContainer=s.grid.renderContainers[r.containerId],i.col.getColClass(!1)),d=(t.addClass(r),i.menuShown=!1,i.col.menuShown=!1,i.asc=p.ASC,i.desc=p.DESC,angular.element(t[0].querySelectorAll(".ui-grid-cell-contents"))),c=[],r=(i.downFn=function(e){e.stopPropagation(),(e=void 0!==e.originalEvent&&void 0!==e.originalEvent?e.originalEvent:e).button&&0!==e.button||(l=e.pageX,i.mousedownStartTime=(new Date).getTime(),i.mousedownTimeout=u(function(){},500),i.mousedownTimeout.then(function(){i.colMenu&&s.columnMenuScope.showMenu(i.col,t,e)}).catch(angular.noop),s.fireEvent(p.events.COLUMN_HEADER_CLICK,{event:e,columnName:i.col.colDef.name}),i.offAllEvents(),"touchstart"===e.type?(g.on("touchend",i.upFn),g.on("touchmove",i.moveFn)):"mousedown"===e.type&&(g.on("mouseup",i.upFn),g.on("mousemove",i.moveFn)))},i.upFn=function(e){e.stopPropagation(),u.cancel(i.mousedownTimeout),i.offAllEvents(),i.onDownEvents(e.type),500<(new Date).getTime()-i.mousedownStartTime||i.sortable&&i.handleClick(e)},i.handleKeyDown=function(e){32!==e.keyCode&&13!==e.keyCode||(e.preventDefault(),i.handleClick(e))},i.moveFn=function(e){0!=e.pageX-l&&(u.cancel(i.mousedownTimeout),i.offAllEvents(),i.onDownEvents(e.type))},i.clickFn=function(e){e.stopPropagation(),d.off("click",i.clickFn)},i.offAllEvents=function(){d.off("touchstart",i.downFn),d.off("mousedown",i.downFn),g.off("touchend",i.upFn),g.off("mouseup",i.upFn),g.off("touchmove",i.moveFn),g.off("mousemove",i.moveFn),d.off("click",i.clickFn)},i.onDownEvents=function(e){switch(e){case"touchmove":case"touchend":d.on("click",i.clickFn),d.on("touchstart",i.downFn),u(function(){d.on("mousedown",i.downFn)},500);break;case"mousemove":case"mouseup":d.on("click",i.clickFn),d.on("mousedown",i.downFn),u(function(){d.on("touchstart",i.downFn)},500);break;default:d.on("click",i.clickFn),d.on("touchstart",i.downFn),d.on("mousedown",i.downFn)}},o(),"columnMenu"===i.col.filterContainer&&i.col.filterable&&m.$on("menu-shown",function(){i.$applyAsync(function(){n(i.col.filterable)})}),i.grid.registerDataChangeCallback(o,[p.dataChange.COLUMN]));i.$on("$destroy",r),i.handleClick=function(e){s.grid.sortColumn(i.col,e.shiftKey).then(function(){s.columnMenuScope&&s.columnMenuScope.hideMenu(),s.grid.refresh()}).catch(angular.noop)},i.headerCellArrowKeyDown=function(e){e.keyCode!==p.keymap.SPACE&&e.keyCode!==p.keymap.ENTER||(e.preventDefault(),i.toggleMenu(e))},i.toggleMenu=function(e){e.stopPropagation(),s.columnMenuScope.menuShown&&s.columnMenuScope.col===i.col?s.columnMenuScope.hideMenu():s.columnMenuScope.showMenu(i.col,t)}}}}}}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridHeader",["$templateCache","$compile","uiGridConstants","gridUtil","$timeout","ScrollEvent",function(e,s,t,d,i,c){return{restrict:"EA",replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:!0,compile:function(){return{pre:function(i,r,e,t){var n=t[0],o=t[1];function a(){var e=(o.header=o.colContainer.header=r)[0].getElementsByClassName("ui-grid-header-canvas");0<e.length?o.headerCanvas=o.colContainer.headerCanvas=e[0]:o.headerCanvas=null}function l(){var e,t,i;n.grid.isScrollingHorizontally||(e=d.normalizeScrollLeft(o.headerViewport,n.grid),t=o.colContainer.scrollHorizontal(e),(i=new c(n.grid,null,o.colContainer,c.Sources.ViewPortScroll)).newScrollLeft=e,-1<t&&(i.x={percentage:t}),n.grid.scrollContainers(null,i))}i.grid=n.grid,i.colContainer=o.colContainer,a(),t=i.grid.options.showHeader?i.grid.options.headerTemplate||"ui-grid/ui-grid-header":"ui-grid/ui-grid-no-header",d.getTemplate(t).then(function(e){var t,e=angular.element(e),e=s(e)(i);r.replaceWith(e),r=e,a(),o&&(t=r[0].getElementsByClassName("ui-grid-header-viewport")[0])&&(o.headerViewport=t,angular.element(t).on("scroll",l),i.$on("$destroy",function(){angular.element(t).off("scroll",l)})),i.grid.queueRefresh()}).catch(angular.noop)},post:function(e,t,i,r){var n=r[0],o=r[1];n.grid;d.disableAnimations(t);r=(o.header=t)[0].getElementsByClassName("ui-grid-header-viewport")[0];r&&(o.headerViewport=r),n&&n.grid.registerStyleComputation({priority:15,func:function(){var e=o.colContainer.visibleColumnCache,t="",i=0;return e.forEach(function(e){t+=e.getColClassDefinition(),i+=e.drawnWidth}),o.colContainer.canvasWidth=i,t}})}}}}}])}(),angular.module("ui.grid").service("uiGridGridMenuService",["gridUtil","i18nService","uiGridConstants",function(n,o,t){var a={initialize:function(e,t){(t.gridMenuScope=e).grid=t,e.registeredMenuItems=[],e.$on("$destroy",function(){e.grid&&e.grid.gridMenuScope&&(e.grid.gridMenuScope=null),e.grid&&(e.grid=null),e.registeredMenuItems&&(e.registeredMenuItems=null)}),e.registeredMenuItems=[],t.api.registerMethod("core","addToGridMenu",a.addToGridMenu),t.api.registerMethod("core","removeFromGridMenu",a.removeFromGridMenu)},addToGridMenu:function(e,t){angular.isArray(t)?e.gridMenuScope?(e.gridMenuScope.registeredMenuItems=e.gridMenuScope.registeredMenuItems||[],e.gridMenuScope.registeredMenuItems=e.gridMenuScope.registeredMenuItems.concat(t)):n.logError("Asked to addToGridMenu, but gridMenuScope not present. Timing issue? Please log issue with ui-grid"):n.logError("addToGridMenu: menuItems must be an array, and is not, not adding any items")},removeFromGridMenu:function(e,i){var r=-1;e&&e.gridMenuScope&&e.gridMenuScope.registeredMenuItems.forEach(function(e,t){e.id===i&&(-1<r?n.logError("removeFromGridMenu: found multiple items with the same id, removing only the last"):r=t)}),-1<r&&e.gridMenuScope.registeredMenuItems.splice(r,1)},getMenuItems:function(t){var e=[],i=(t.grid.options.gridMenuCustomItems&&(angular.isArray(t.grid.options.gridMenuCustomItems)?e=e.concat(t.grid.options.gridMenuCustomItems):n.logError("gridOptions.gridMenuCustomItems must be an array, and is not")),[{title:o.getSafeText("gridMenu.clearAllFilters"),action:function(e){t.grid.clearAllFilters()},shown:function(){return t.grid.options.enableFiltering},order:100}]);return e=(e=e.concat(i)).concat(t.registeredMenuItems),(e=!1!==t.grid.options.gridMenuShowHideColumns?e.concat(a.showHideColumns(t)):e).sort(function(e,t){return e.order-t.order}),e},showHideColumns:function(i){var r=[];return i.grid.options.columnDefs&&0!==i.grid.options.columnDefs.length&&0!==i.grid.columns.length&&(i.grid.options.gridMenuTitleFilter=i.grid.options.gridMenuTitleFilter||function(e){return e},i.grid.options.columnDefs.forEach(function(e,t){(!1!==i.grid.options.enableHiding&&!1!==e.enableHiding||e.enableHiding)&&(t={icon:n(e),action:function(e){e.stopPropagation(),a.toggleColumnVisibility(this.context.gridCol),e.target&&e.target.firstChild&&("I"===angular.element(e.target)[0].nodeName?e.target.className=n(this.context.gridCol.colDef):e.target.firstChild.className=n(this.context.gridCol.colDef))},shown:function(){return!1!==this.context.gridCol.colDef.enableHiding},context:{gridCol:i.grid.getColumn(e.name||e.field)},leaveOpen:!0,order:301+t},a.setMenuItemTitle(t,e,i.grid),r.push(t))}),r.length)&&r.unshift({title:o.getSafeText("gridMenu.columns"),order:300,templateUrl:"ui-grid/ui-grid-menu-header-item"}),r;function n(e){return!0===(e=e).visible||void 0===e.visible?"ui-grid-icon-ok":"ui-grid-icon-cancel"}},setMenuItemTitle:function(t,e,i){i=i.options.gridMenuTitleFilter(e.displayName||n.readableColumnName(e.name)||e.field);"string"==typeof i?t.title=i:i.then?(t.title="",i.then(function(e){t.title=e},function(e){t.title=e}).catch(angular.noop)):(n.logError("Expected gridMenuTitleFilter to return a string or a promise, it has returned neither, bad config"),t.title="badconfig")},toggleColumnVisibility:function(e){e.colDef.visible=!(!0===e.colDef.visible||void 0===e.colDef.visible),e.grid.refresh(),e.grid.api.core.notifyDataChange(t.dataChange.COLUMN),e.grid.api.core.raise.columnVisibilityChanged(e)}};return a}]).directive("uiGridMenuButton",["gridUtil","uiGridConstants","uiGridGridMenuService","i18nService",function(n,o,a,l){return{priority:0,scope:!0,require:["^uiGrid"],templateUrl:"ui-grid/ui-grid-menu-button",replace:!0,link:function(t,e,i,r){r=r[0];t.i18n={aria:l.getSafeText("gridMenu.aria")},a.initialize(t,r.grid),t.shown=!1,t.toggleOnKeydown=function(e){(e.keyCode===o.keymap.ENTER||e.keyCode===o.keymap.SPACE||e.keyCode===o.keymap.ESC&&t.shown)&&t.toggleMenu()},t.toggleMenu=function(){t.shown?(t.$broadcast("hide-menu"),t.shown=!1):(t.menuItems=a.getMenuItems(t),t.$broadcast("show-menu"),t.shown=!0)},t.$on("menu-hidden",function(){t.shown=!1,n.focus.bySelector(e,".ui-grid-icon-container")})}}}]),angular.module("ui.grid").directive("uiGridMenu",["$compile","$timeout","$window","$document","gridUtil","uiGridConstants","i18nService",function(l,s,d,e,c,u,g){return{priority:0,scope:{menuItems:"=",autoHide:"=?",col:"=?"},require:"?^uiGrid",templateUrl:"ui-grid/uiGridMenu",replace:!1,link:function(n,o,e,i){function a(e){e=e-i.grid.headerHeight-20,n.dynamicStyles=[".grid"+i.grid.id+" .ui-grid-menu-mid {","max-height: "+e+"px;","}"].join(" ")}n.dynamicStyles="",i&&i.grid&&i.grid.options&&i.grid.options.gridMenuTemplate&&(t=i.grid.options.gridMenuTemplate,c.getTemplate(t).then(function(e){e=angular.element(e),e=l(e)(n);o.replaceWith(e)}).catch(angular.noop));i&&(a(i.grid.gridHeight),i.grid.api.core.on.gridDimensionChanged(n,function(e,t,i,r){a(i)})),n.i18n={close:g.getSafeText("columnMenu.close")},n.showMenu=function(e,t){n.shown?n.shownMid||(n.shownMid=!0,n.$emit("menu-shown")):(n.shown=!0,s(function(){n.shownMid=!0,n.$emit("menu-shown")}));var i="click";t&&t.originalEvent&&t.originalEvent.type&&"touchstart"===t.originalEvent.type&&(i=t.originalEvent.type),angular.element(document).off("click touchstart",r),s(function(){angular.element(document).on(i,r)})},n.hideMenu=function(e){n.shown&&(n.shownMid=!1,s(function(){n.shownMid||(n.shown=!1,n.$emit("menu-hidden"))},40)),angular.element(document).off("click touchstart",r)},n.$on("hide-menu",function(e,t){n.hideMenu(e,t)}),n.$on("show-menu",function(e,t){n.showMenu(e,t)});var t,r=function(e){if(n.shown){var t=i&&i.grid&&i.grid.options?i.grid.options.disableGridMenuHideOnScroll:null;if("scroll"!==e.type||!t){if(n.col&&"columnMenu"===n.col.filterContainer){t=document.querySelector(".ui-grid-column-menu").querySelector("[ui-grid-filter]");if(t&&t.contains(e.target))return!1}n.$apply(function(){n.hideMenu()})}}};n.checkKeyDown=function(t){function e(e){e.focus(),t.preventDefault()}var i,r;t.keyCode===u.keymap.ESC?n.hideMenu():t.keyCode===u.keymap.TAB&&0<(r=o[0].querySelectorAll("button:not(.ng-hide)")).length&&(i=r[0],r=r[r.length-1],t.target.parentElement.id!==r.parentElement.id||t.shiftKey?t.target.parentElement.id===i.parentElement.id&&t.shiftKey&&e(r):e(i))},void 0!==n.autoHide&&void 0!==n.autoHide||(n.autoHide=!0),n.autoHide&&angular.element(d).on("resize",r),n.$on("$destroy",function(){angular.element(d).off("resize",r),angular.element(document).off("click touchstart",r)}),i&&n.$on("$destroy",i.grid.api.core.on.scrollBegin(n,r)),n.$on("$destroy",n.$on(u.events.ITEM_DRAGGING,r))}}}]).directive("uiGridMenuItem",["gridUtil","$compile","i18nService",function(o,r,a){return{priority:0,scope:{name:"=",active:"=",action:"=",icon:"=",shown:"=",context:"=",templateUrl:"=",leaveOpen:"=",screenReaderOnly:"="},require:["?^uiGrid"],templateUrl:"ui-grid/uiGridMenuItem",replace:!1,compile:function(){return{pre:function(t,i){t.templateUrl&&o.getTemplate(t.templateUrl).then(function(e){e=angular.element(e),e=r(e)(t);i.replaceWith(e)}).catch(angular.noop)},post:function(r,e,t,i){var n=i[0];void 0!==r.shown&&null!==r.shown||(r.shown=function(){return!0}),r.itemShown=function(){var e={};return r.context&&(e.context=r.context),void 0!==n&&n&&(e.grid=n.grid),r.shown.call(e)},r.itemAction=function(e,t){var i;e.stopPropagation(),"function"==typeof r.action&&(i={},r.context&&(i.context=r.context),void 0!==n&&n&&(i.grid=n.grid),r.action.call(i,e,t),r.leaveOpen?(i=e.target.parentElement,"I"===angular.element(e.target)[0].nodeName&&(i=i.parentElement),o.focus.bySelector(i,"button[type=button]",!0)):r.$emit("hide-menu"))},r.label=function(){var e=r.name;return e="function"==typeof r.name?r.name.call():e},r.i18n=a.get()}}}}}]),function(){"use strict";var t=angular.module("ui.grid");angular.forEach([{tag:"Src",method:"attr"},{tag:"Text",method:"text"},{tag:"Href",method:"attr"},{tag:"Class",method:"addClass"},{tag:"Html",method:"html"},{tag:"Alt",method:"attr"},{tag:"Style",method:"css"},{tag:"Value",method:"attr"},{tag:"Id",method:"attr"},{tag:"Id",directiveName:"IdGrid",method:"attr",appendGridId:!0},{tag:"Title",method:"attr"},{tag:"Label",method:"attr",aria:!0},{tag:"Labelledby",method:"attr",aria:!0},{tag:"Labelledby",directiveName:"LabelledbyGrid",appendGridId:!0,method:"attr",aria:!0},{tag:"Describedby",method:"attr",aria:!0},{tag:"Describedby",directiveName:"DescribedbyGrid",appendGridId:!0,method:"attr",aria:!0}],function(d){var e="uiGridOneBind",c=(d.aria?e+"Aria":e)+(d.directiveName||d.tag);t.directive(c,["gridUtil",function(s){return{restrict:"A",require:["?uiGrid","?^uiGrid"],link:function(n,o,e,a){var l=n.$watch(e[c],function(e){if(e){var t;switch(d.appendGridId&&(t=null,angular.forEach(e.split(" "),function(e){t=(t?t+" ":"")+function(e){var t;if(n.grid)t=n.grid;else if(n.col&&n.col.grid)t=n.col.grid;else if(!a.some(function(e){if(e&&e.grid)return t=e.grid,!0}))throw s.logError("["+c+"] A valid grid could not be found to bind id. Are you using this directive within the correct scope? Trying to generate id: [gridID]-"+e),new Error("No valid grid could be found");return e=t&&!new RegExp(t.id.toString()).test(e)?t.id.toString()+"-"+e:e}(e)}),e=t),d.method){case"attr":d.aria?o[d.method]("aria-"+d.tag.toLowerCase(),e):o[d.method](d.tag.toLowerCase(),e);break;case"addClass":if(angular.isObject(e)&&!angular.isArray(e)){var i=[],r=!1;if(angular.forEach(e,function(e,t){null!=e&&(r=!0,e)&&i.push(t)}),!r)return;e=i}if(!e)return;o.addClass(angular.isArray(e)?e.join(" "):e);break;default:o[d.method](e)}l()}},!0)}}}])})}(),function(){"use strict";var e=angular.module("ui.grid");e.directive("uiGridRenderContainer",["$timeout","$document","uiGridConstants","gridUtil","ScrollEvent",function(e,t,i,p,f){return{replace:!0,transclude:!0,templateUrl:"ui-grid/uiGridRenderContainer",require:["^uiGrid","uiGridRenderContainer"],scope:{containerId:"=",rowContainerName:"=",colContainerName:"=",bindScrollHorizontal:"=",bindScrollVertical:"=",enableVerticalScrollbar:"=",enableHorizontalScrollbar:"="},controller:"uiGridRenderContainer as RenderContainer",compile:function(){return{pre:function(e,t,i,r){var n,o=r[0],r=r[1],o=e.grid=o.grid;if(!e.rowContainerName)throw new Error("No row render container name specified");if(!e.colContainerName)throw new Error("No column render container name specified");if(!o.renderContainers[e.rowContainerName])throw new Error('Row render container "'+e.rowContainerName+'" is not registered.');if(!o.renderContainers[e.colContainerName])throw new Error('Column render container "'+e.colContainerName+'" is not registered.');n=e.rowContainer=o.renderContainers[e.rowContainerName],o=e.colContainer=o.renderContainers[e.colContainerName],r.containerId=e.containerId,r.rowContainer=n,r.colContainer=o},post:function(l,t,e,i){var s=i[0],n=i[1],d=s.grid,c=n.rowContainer,u=n.colContainer,o=null,a=null,g=d.renderContainers[l.containerId];t.addClass("ui-grid-render-container-"+l.containerId),p.on.mousewheel(t,function(e){var t,i,r=new f(d,c,u,f.Sources.RenderContainerMouseWheel);0!==e.deltaY&&(i=-1*e.deltaY*e.deltaFactor,o=n.viewport[0].scrollTop,r.verticalScrollLength=c.getVerticalScrollLength(),1<=(t=(o+i)/r.verticalScrollLength)&&o<r.verticalScrollLength&&(n.viewport[0].scrollTop=r.verticalScrollLength),t<0?t=0:1<t&&(t=1),r.y={percentage:t,pixels:i}),0!==e.deltaX&&(t=e.deltaX*e.deltaFactor,a=p.normalizeScrollLeft(n.viewport,d),r.horizontalScrollLength=u.getCanvasWidth()-u.getViewportWidth(),(i=(a+t)/r.horizontalScrollLength)<0?i=0:1<i&&(i=1),r.x={percentage:i,pixels:t}),0!==e.deltaY&&(r.atTop(o)||r.atBottom(o))||0!==e.deltaX&&(r.atLeft(a)||r.atRight(a))||(e.preventDefault(),e.stopPropagation(),r.fireThrottledScrollingEvent("",r))}),t.bind("$destroy",function(){t.unbind("keydown"),["touchstart","touchmove","touchend","keydown","wheel","mousewheel","DomMouseScroll","MozMousePixelScroll"].forEach(function(e){t.unbind(e)})}),s.grid.registerStyleComputation({priority:6,func:function(){var e,t,i="",r=u.canvasWidth,n=u.getViewportWidth(),o=c.getCanvasHeight(),a=c.getViewportHeight();return u.needsHScrollbarPlaceholder()&&(a-=d.scrollbarHeight),e=t=u.getHeaderViewportWidth(),i=(i+="\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-canvas { width: "+r+"px; height: "+o+"px; }")+("\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-header-canvas { width: "+(r+d.scrollbarWidth)+"px; }"),g.explicitHeaderCanvasHeight?((o=document.querySelector(".grid"+s.grid.id+" .ui-grid-render-container-body .ui-grid-header-canvas"))&&(g.explicitHeaderCanvasHeight=o.offsetHeight),i+="\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-header-canvas { height: "+g.explicitHeaderCanvasHeight+"px; }"):i+="\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-header-canvas { height: inherit; }",i=(i=(i=(i+="\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-viewport { width: "+n+"px; height: "+a+"px; }")+("\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-header-viewport { width: "+e+"px; }"))+("\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-footer-canvas { width: "+(r+d.scrollbarWidth)+"px; }"))+("\n .grid"+s.grid.id+" .ui-grid-render-container-"+l.containerId+" .ui-grid-footer-viewport { width: "+t+"px; }")}})}}}}}]),e.controller("uiGridRenderContainer",["$scope","gridUtil",function(e,t){}])}(),function(){"use strict";angular.module("ui.grid").directive("uiGridRow",function(){return{replace:!0,require:["^uiGrid","^uiGridRenderContainer"],scope:{row:"=uiGridRow",rowRenderIndex:"="},compile:function(){return{pre:function(t,r,e,i){var n,o,a=i[0],i=i[1];function l(){t.row.getRowTemplateFn.then(function(e){var i=t.$new();e(i,function(e,t){n&&(n.remove(),o.$destroy()),r.empty().append(e),n=e,o=i})}).catch(angular.noop)}t.grid=a.grid,t.colContainer=i.colContainer,l(),t.$watch("row.getRowTemplateFn",function(e,t){e!==t&&l()})},post:function(e,t){e.row.element=t}}}}})}(),angular.module("ui.grid").directive("uiGridStyle",["gridUtil","$interpolate",function(e,r){return{link:function(e,i){var t=r(i.text(),!0);t&&e.$watch(t,function(e){for(var t=0;t<i.length;t++)i[t].textContent=e})}}}]),function(){"use strict";angular.module("ui.grid").directive("uiGridViewport",["gridUtil","ScrollEvent",function(c,u){return{replace:!0,scope:{},controllerAs:"Viewport",templateUrl:"ui-grid/uiGridViewport",require:["^uiGrid","^uiGridRenderContainer"],link:function(o,a,e,t){var i=t[0],r=t[1],l=(o.containerCtrl=r).rowContainer,s=r.colContainer,d=i.grid;o.grid=i.grid,o.rowContainer=r.rowContainer,o.colContainer=r.colContainer,r.viewport=a,d&&d.options&&d.options.customScroller?d.options.customScroller(a,n):a.on("scroll",n);function n(){var e=a[0].scrollTop,t=c.normalizeScrollLeft(a,d),i=l.scrollVertical(e),r=s.scrollHorizontal(t),n=new u(d,l,s,u.Sources.ViewPortScroll);n.newScrollLeft=t,n.newScrollTop=e,-1<r&&(n.x={percentage:r}),-1<i&&(n.y={percentage:i}),d.scrollContainers(o.$parent.containerId,n)}o.$parent.bindScrollVertical&&d.addVerticalScrollSync(o.$parent.containerId,function(e){r.prevScrollArgs=e,a[0].scrollTop=e.getNewScrollTop(l,r.viewport)}),o.$parent.bindScrollHorizontal&&(d.addHorizontalScrollSync(o.$parent.containerId,function(e){e=(r.prevScrollArgs=e).getNewScrollLeft(s,r.viewport);a[0].scrollLeft=c.denormalizeScrollLeft(r.viewport,e,d)}),d.addHorizontalScrollSync(o.$parent.containerId+"header",function(e){e=e.getNewScrollLeft(s,r.viewport);r.headerViewport&&(r.headerViewport.scrollLeft=c.denormalizeScrollLeft(r.viewport,e,d))}),d.addHorizontalScrollSync(o.$parent.containerId+"footer",function(e){e=e.getNewScrollLeft(s,r.viewport);r.footerViewport&&(r.footerViewport.scrollLeft=c.denormalizeScrollLeft(r.viewport,e,d))})),o.$on("$destroy",function(){a.off()})},controller:["$scope",function(r){this.rowStyle=function(){var e=r.rowContainer,t=r.colContainer,i={};return 0!==e.currentTopRow&&(e="translateY("+e.currentTopRow*e.grid.options.rowHeight+"px)",i.transform=e,i["-webkit-transform"]=e,i["-ms-transform"]=e),0!==t.currentFirstColumn&&(t.grid.isRTL()?i["margin-right"]=t.columnOffset+"px":i["margin-left"]=t.columnOffset+"px"),i}}]}}])}(),angular.module("ui.grid").directive("uiGridVisible",function(){return function(e,t,i){e.$watch(i.uiGridVisible,function(e){t[e?"removeClass":"addClass"]("ui-grid-invisible")})}}),function(){"use strict";function e(g,p,f){return{templateUrl:"ui-grid/ui-grid",scope:{uiGrid:"="},replace:!0,transclude:!0,controller:"uiGridController",compile:function(){return{post:function(o,a,e,l){var t,i,s=l.grid,r=(l.scrollbars=[],s.element=a,100),n=20,d=0;function c(){var e,t,i,r,n;s.gridWidth=o.gridWidth=p.elementWidth(a),s.canvasWidth=l.grid.gridWidth,s.gridHeight=o.gridHeight=p.elementHeight(a),s.gridHeight-s.scrollbarHeight<=s.options.rowHeight&&s.options.enableMinHeightCheck&&(e=s.options.minRowsToShow*s.options.rowHeight,t=s.options.showHeader?s.options.headerRowHeight:0,i=s.calcFooterHeight(),r=0,s.options.enableHorizontalScrollbar===f.scrollbars.ALWAYS&&(r=p.getScrollbarWidth()),n=0,angular.forEach(s.options.columnDefs,function(e){e.hasOwnProperty("filter")?n<1&&(n=1):e.hasOwnProperty("filters")&&n<e.filters.length&&(n=e.filters.length)}),!s.options.enableFiltering||n||s.options.columnDefs.length&&s.options.columnDefs.every(function(e){return!1===e.enableFiltering})||(n=1),e=t+e+i+r+n*t,a.css("height",e+"px"),s.gridHeight=o.gridHeight=p.elementHeight(a)),s.refreshCanvas(!0)}fun