UNPKG

angular-ui-grid

Version:

A data grid for Angular

908 lines (699 loc) 1.22 MB
/*! * ui-grid - v4.12.0-9c6a9c83 - 2023-01-19 * http://ui-grid.info/ * Copyright (c) 2023 UI Grid Team; License: MIT */ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ /***/ 4134: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-filter-container\"\n ng-style=\"col.extraStyle\"\n ng-repeat=\"colFilter in col.filters\"\n ng-class=\"{'ui-grid-filter-cancel-button-hidden' : colFilter.disableCancelFilterButton === true }\">\n <div\n ng-if=\"colFilter.type !== 'select'\">\n <input\n type=\"text\"\n class=\"ui-grid-filter-input ui-grid-filter-input-{{$index}}\"\n ng-model=\"colFilter.term\"\n ng-attr-placeholder=\"{{colFilter.placeholder || ''}}\"\n aria-label=\"{{colFilter.ariaLabel || aria.defaultFilterLabel}}\" />\n\n <div\n role=\"button\"\n class=\"ui-grid-filter-button\"\n ng-click=\"removeFilter(colFilter, $index)\"\n ng-if=\"!colFilter.disableCancelFilterButton\"\n ng-disabled=\"colFilter.term === undefined || colFilter.term === null || colFilter.term === ''\"\n ng-show=\"colFilter.term !== undefined && colFilter.term !== null && colFilter.term !== ''\">\n <i\n class=\"ui-grid-icon-cancel\"\n ui-grid-one-bind-aria-label=\"aria.removeFilter\">\n &nbsp;\n </i>\n </div>\n </div>\n\n <div\n ng-if=\"colFilter.type === 'select'\">\n <select\n class=\"ui-grid-filter-select ui-grid-filter-input-{{$index}}\"\n ng-model=\"colFilter.term\"\n ng-show=\"colFilter.selectOptions.length > 0\"\n ng-attr-placeholder=\"{{colFilter.placeholder || aria.defaultFilterLabel}}\"\n aria-label=\"{{colFilter.ariaLabel || ''}}\"\n ng-options=\"option.value as option.label for option in colFilter.selectOptions\">\n <option value=\"\"></option>\n </select>\n\n <div\n role=\"button\"\n class=\"ui-grid-filter-button-select\"\n ng-click=\"removeFilter(colFilter, $index)\"\n ng-if=\"!colFilter.disableCancelFilterButton\"\n ng-disabled=\"colFilter.term === undefined || colFilter.term === null || colFilter.term === ''\"\n ng-show=\"colFilter.term !== undefined && colFilter.term != null\">\n <i\n class=\"ui-grid-icon-cancel\"\n ui-grid-one-bind-aria-label=\"aria.removeFilter\">\n &nbsp;\n </i>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 5790: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-footer-panel ui-grid-footer-aggregates-row\"> <!-- tfooter -->\n <div\n class=\"ui-grid-footer ui-grid-footer-viewport\">\n <div\n class=\"ui-grid-footer-canvas\">\n <div\n class=\"ui-grid-footer-cell-wrapper\"\n ng-style=\"colContainer.headerCellWrapperStyle()\">\n <div\n role=\"row\"\n class=\"ui-grid-footer-cell-row\">\n <div\n ui-grid-footer-cell\n role=\"gridcell\"\n ng-repeat=\"col in colContainer.renderedColumns track by col.uid\"\n col=\"col\"\n render-index=\"$index\"\n class=\"ui-grid-footer-cell ui-grid-clearfix\">\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 8325: /***/ ((module) => { module.exports = "<div class=\"ui-grid-footer-info ui-grid-grid-footer\">\n <span>{{'search.totalItems' | t}} {{grid.rows.length}}</span>\n <span\n ng-if=\"grid.renderContainers.body.visibleRowCache.length !== grid.rows.length\"\n class=\"ngLabel\">\n ({{\"search.showingItems\" | t}} {{grid.renderContainers.body.visibleRowCache.length}})\n </span>\n</div>\n" /***/ }), /***/ 9974: /***/ ((module) => { module.exports = "<div\n role=\"rowgroup\"\n class=\"ui-grid-header\"> <!-- theader -->\n <div\n class=\"ui-grid-top-panel\">\n <div\n class=\"ui-grid-header-viewport\">\n <div\n class=\"ui-grid-header-canvas\">\n <div\n class=\"ui-grid-header-cell-wrapper\"\n ng-style=\"colContainer.headerCellWrapperStyle()\">\n <div\n role=\"row\"\n class=\"ui-grid-header-cell-row\">\n <div\n role=\"columnheader\"\n class=\"ui-grid-header-cell ui-grid-clearfix\"\n ng-repeat=\"col in colContainer.renderedColumns track by col.uid\"\n ui-grid-header-cell\n col=\"col\"\n render-index=\"$index\">\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 6502: /***/ ((module) => { module.exports = "<div class=\"ui-grid-menu-button\">\n <div role='button'\n ui-grid-one-bind-id-grid=\"'grid-menu'\"\n ui-grid-one-bind-aria-label=\"i18n.aria.buttonLabel\"\n tabindex=\"0\"\n class=\"ui-grid-icon-container\"\n ng-click=\"toggleMenu()\"\n ng-keydown=\"toggleOnKeydown($event)\"\n aria-expanded=\"{{shown}}\"\n aria-haspopup=\"true\">\n <i class=\"ui-grid-icon-menu\"\n ui-grid-one-bind-aria-label=\"i18n.aria.buttonLabel\">&nbsp;</i>\n </div>\n <div ui-grid-menu menu-items=\"menuItems\"></div>\n</div>\n" /***/ }), /***/ 6674: /***/ ((module) => { module.exports = "<li role=\"menuitem\">\n\t<div\n\t\tclass=\"ui-grid-menu-item\"\n\t\trole=\"heading\"\n\t\taria-level=\"2\"\n\t\tng-show=\"itemShown()\">\n\t\t<i aria-hidden='true'>\n\t\t\t&nbsp;\n\t\t</i>\n\t\t<span ng-bind=\"label()\"></span>\n\t</div>\n</li>" /***/ }), /***/ 2509: /***/ ((module) => { module.exports = "<div class=\"ui-grid-top-panel\">\n</div>" /***/ }), /***/ 965: /***/ ((module) => { module.exports = " <div\n ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.uid\"\n ui-grid-one-bind-id-grid=\"rowRenderIndex + '-' + col.uid + '-cell'\"\n class=\"ui-grid-cell\"\n ng-class=\"{ 'ui-grid-row-header-cell': col.isRowHeader }\"\n role=\"{{col.isRowHeader ? 'rowheader' : 'gridcell'}}\"\n ui-grid-cell>\n</div>\n" /***/ }), /***/ 1947: /***/ ((module) => { module.exports = "<div ui-i18n=\"en\" class=\"ui-grid\">\n <!-- TODO (c0bra): add \"scoped\" attr here, eventually? -->\n <style ui-grid-style>\n .grid{{ grid.id }} {\n /* Styles for the grid */\n }\n\n .grid{{ grid.id }} .ui-grid-row, .grid{{ grid.id }} .ui-grid-cell, .grid{{ grid.id }} .ui-grid-cell .ui-grid-vertical-bar {\n height: {{ grid.options.rowHeight }}px;\n }\n\n .grid{{ grid.id }} .ui-grid-row:last-child .ui-grid-cell {\n border-bottom-width: {{ (((grid.getVisibleRowCount() * grid.options.rowHeight) < grid.getViewportHeight()) && '1') || '0' }}px;\n }\n\n {{ grid.verticalScrollbarStyles }}\n {{ grid.horizontalScrollbarStyles }}\n\n /*\n .ui-grid[dir=rtl] .ui-grid-viewport {\n padding-left: {{ grid.verticalScrollbarWidth }}px;\n }\n */\n\n {{ grid.customStyles }}\n </style>\n\n <div class=\"ui-grid-contents-wrapper\" role=\"grid\">\n <div ui-grid-menu-button ng-if=\"grid.options.enableGridMenu\"></div>\n\n <div ng-if=\"grid.hasLeftContainer()\" style=\"width: 0\" ui-grid-pinned-container=\"'left'\"></div>\n\n <div ui-grid-render-container\n container-id=\"'body'\"\n col-container-name=\"'body'\"\n row-container-name=\"'body'\"\n bind-scroll-horizontal=\"true\"\n bind-scroll-vertical=\"true\"\n enable-horizontal-scrollbar=\"grid.options.enableHorizontalScrollbar\"\n enable-vertical-scrollbar=\"grid.options.enableVerticalScrollbar\">\n </div>\n\n <div ng-if=\"grid.hasRightContainer()\" style=\"width: 0\" ui-grid-pinned-container=\"'right'\"></div>\n\n\n <div ui-grid-grid-footer ng-if=\"grid.options.showGridFooter\"></div>\n\n <div ui-grid-column-menu ng-if=\"grid.options.enableColumnMenus\"></div>\n\n <div ng-transclude></div>\n </div>\n</div>\n" /***/ }), /***/ 5069: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-cell-contents\"\n title=\"TOOLTIP\">\n {{COL_FIELD CUSTOM_FILTERS}}\n</div>\n" /***/ }), /***/ 4282: /***/ ((module) => { module.exports = "<div class=\"ui-grid-column-menu\">\n <div ui-grid-menu menu-items=\"menuItems\" col=\"col\">\n <!-- <div class=\"ui-grid-column-menu\">\n <div class=\"inner\" ng-show=\"menuShown\">\n <ul>\n <div ng-show=\"grid.options.enableSorting\">\n <li ng-click=\"sortColumn($event, asc)\" ng-class=\"{ 'selected' : col.sort.direction == asc }\"><i class=\"ui-grid-icon-sort-alt-up\"></i> Sort Ascending</li>\n <li ng-click=\"sortColumn($event, desc)\" ng-class=\"{ 'selected' : col.sort.direction == desc }\"><i class=\"ui-grid-icon-sort-alt-down\"></i> Sort Descending</li>\n <li ng-show=\"col.sort.direction\" ng-click=\"unsortColumn()\"><i class=\"ui-grid-icon-cancel\"></i> Remove Sort</li>\n </div>\n </ul>\n </div>\n </div> -->\n </div>\n</div>" /***/ }), /***/ 8224: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-cell-contents\"\n col-index=\"renderIndex\">\n <div>\n {{ col.getAggregationText() + ( col.getAggregationValue() CUSTOM_FILTERS ) }}\n </div>\n</div>\n" /***/ }), /***/ 8997: /***/ ((module) => { module.exports = "<div\n role=\"columnheader\"\n ng-class=\"{ 'sortable': sortable, 'ui-grid-header-cell-last-col': isLastCol }\"\n ui-grid-one-bind-aria-labelledby-grid=\"col.uid + '-header-text ' + col.uid + '-sortdir-text'\"\n aria-sort=\"{{col.sort.direction == asc ? 'ascending' : ( col.sort.direction == desc ? 'descending' : (!col.sort.direction ? 'none' : 'other'))}}\">\n <div\n role=\"button\"\n tabindex=\"0\"\n ng-keydown=\"handleKeyDown($event)\"\n class=\"ui-grid-cell-contents ui-grid-header-cell-primary-focus\"\n col-index=\"renderIndex\"\n title=\"TOOLTIP\">\n <span class=\"ui-grid-header-cell-label\" ui-grid-one-bind-id-grid=\"col.uid + '-header-text'\">{{ col.displayName CUSTOM_FILTERS }}</span>\n\n <span\n ui-grid-one-bind-id-grid=\"col.uid + '-sortdir-text'\"\n ui-grid-visible=\"col.sort.direction\"\n aria-label=\"{{getSortDirectionAriaLabel()}}\">\n <i\n ng-class=\"{ 'ui-grid-icon-up-dir': col.sort.direction == asc, 'ui-grid-icon-down-dir': col.sort.direction == desc, 'ui-grid-icon-blank': !col.sort.direction }\"\n title=\"{{isSortPriorityVisible() ? i18n.headerCell.priority + ' ' + ( col.sort.priority + 1 ) : null}}\"\n aria-hidden=\"true\">\n </i>\n <sub\n ui-grid-visible=\"isSortPriorityVisible()\"\n class=\"ui-grid-sort-priority-number\">\n {{col.sort.priority + 1}}\n </sub>\n </span>\n </div>\n\n <div\n role=\"button\"\n tabindex=\"0\"\n ui-grid-one-bind-id-grid=\"col.uid + '-menu-button'\"\n class=\"ui-grid-column-menu-button\"\n ng-if=\"grid.options.enableColumnMenus && !col.isRowHeader && col.colDef.enableColumnMenu !== false\"\n ng-click=\"toggleMenu($event)\"\n ng-keydown=\"headerCellArrowKeyDown($event)\"\n ui-grid-one-bind-aria-label=\"i18n.headerCell.aria.columnMenuButtonLabel\"\n aria-expanded=\"{{col.menuShown}}\"\n aria-haspopup=\"true\">\n <i\n class=\"ui-grid-icon-angle-down\"\n aria-hidden=\"true\">\n &nbsp;\n </i>\n </div>\n\n <div ui-grid-filter ng-hide=\"col.filterContainer === 'columnMenu'\"></div>\n</div>\n" /***/ }), /***/ 2243: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-menu\"\n ng-keydown=\"checkKeyDown($event)\"\n ng-show=\"shown\">\n <style ui-grid-style>\n {{dynamicStyles}}\n </style>\n <div\n class=\"ui-grid-menu-mid\"\n ng-show=\"shownMid\">\n <div\n class=\"ui-grid-menu-inner\"\n ng-if=\"shown\">\n <ul\n role=\"menu\"\n class=\"ui-grid-menu-items\">\n <li\n ng-repeat=\"item in menuItems\"\n role=\"menuitem\"\n ui-grid-menu-item\n ui-grid-one-bind-id=\"'menuitem-'+$index\"\n action=\"item.action\"\n name=\"item.title\"\n active=\"item.active\"\n icon=\"item.icon\"\n shown=\"item.shown\"\n context=\"item.context\"\n template-url=\"item.templateUrl\"\n leave-open=\"item.leaveOpen\"\n screen-reader-only=\"item.screenReaderOnly\">\n </li>\n <li ng-if=\"col.filterable && col.filterContainer === 'columnMenu'\">\n <div ui-grid-filter></div>\n </li>\n </ul>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 6747: /***/ ((module) => { module.exports = "<button\n type=\"button\"\n class=\"ui-grid-menu-item\"\n ng-click=\"itemAction($event, title)\"\n ng-show=\"itemShown()\"\n ng-class=\"{ 'ui-grid-menu-item-active': active(), 'ui-grid-sr-only': (!focus && screenReaderOnly) }\"\n aria-pressed=\"{{active()}}\"\n tabindex=\"0\"\n ng-focus=\"focus=true\"\n ng-blur=\"focus=false\">\n <i\n ng-class=\"icon\"\n aria-hidden='true'>\n &nbsp;\n </i>\n {{ label() }}\n</button>\n" /***/ }), /***/ 8372: /***/ ((module) => { module.exports = "<div\n role=\"presentation\"\n ui-grid-one-bind-id-grid=\"containerId + '-grid-container'\"\n class=\"ui-grid-render-container\"\n ng-style=\"{ 'margin-left': colContainer.getMargin('left') + 'px', 'margin-right': colContainer.getMargin('right') + 'px' }\">\n <!-- All of these dom elements are replaced in place -->\n <div ui-grid-header></div>\n <div ui-grid-viewport></div>\n <div\n ng-if=\"colContainer.needsHScrollbarPlaceholder()\"\n class=\"ui-grid-scrollbar-placeholder\"\n ng-style=\"{height: colContainer.grid.scrollbarHeight + 'px'}\">\n </div>\n <ui-grid-footer\n ng-if=\"grid.options.showColumnFooter\">\n </ui-grid-footer>\n</div>\n" /***/ }), /***/ 2504: /***/ ((module) => { module.exports = "<div\n role=\"rowgroup\"\n class=\"ui-grid-viewport\"\n ng-style=\"colContainer.getViewportStyle()\"><!-- tbody -->\n <div\n class=\"ui-grid-canvas\">\n <div\n ng-repeat=\"(rowRenderIndex, row) in rowContainer.renderedRows track by $index\"\n class=\"ui-grid-row\"\n ng-style=\"Viewport.rowStyle(rowRenderIndex)\">\n <div\n role=\"row\"\n ui-grid-row=\"row\"\n row-render-index=\"rowRenderIndex\">\n </div>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 1405: /***/ ((module) => { module.exports = "<div>\n <form\n name=\"inputForm\">\n <input\n type=\"INPUT_TYPE\"\n ng-class=\"'colt' + col.uid\"\n ui-grid-editor\n ng-model=\"MODEL_COL_FIELD\" />\n </form>\n</div>\n" /***/ }), /***/ 439: /***/ ((module) => { module.exports = "<div>\n <form\n name=\"inputForm\">\n <select\n ng-class=\"'colt' + col.uid\"\n ui-grid-edit-dropdown\n ng-model=\"MODEL_COL_FIELD\"\n ng-options=\"field[editDropdownIdLabel] as field[editDropdownValueLabel] CUSTOM_FILTERS for field in editDropdownOptionsArray\">\n </select>\n </form>\n</div>\n" /***/ }), /***/ 6527: /***/ ((module) => { module.exports = "<div>\n <form\n name=\"inputForm\">\n <input\n ng-class=\"'colt' + col.uid\"\n ui-grid-edit-file-chooser\n type=\"file\"\n id=\"files\"\n name=\"files[]\"\n ng-model=\"MODEL_COL_FIELD\"/>\n </form>\n</div>\n" /***/ }), /***/ 1258: /***/ ((module) => { module.exports = "<div class=\"ui-grid-empty-base-layer-container ui-grid-canvas\">\n <div class=\"ui-grid-row\"\n ng-repeat=\"(rowRenderIndex, row) in grid.baseLayer.emptyRows track by $index\"\n ng-style=\"Viewport.rowStyle(rowRenderIndex)\">\n <div>\n <div>\n <div ng-repeat=\"(colRenderIndex, col) in colContainer.renderedColumns track by col.colDef.name\"\n class=\"ui-grid-cell {{ col.getColClass(false) }}\">\n </div>\n </div>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 6167: /***/ ((module) => { module.exports = "<div\n ui-grid-expandable-row\n ng-if=\"expandableRow.shouldRenderExpand()\"\n class=\"expandableRow\"\n style=\"float:left; margin-top: 1px; margin-bottom: 1px\"\n ng-style=\"{width: (grid.renderContainers.body.getCanvasWidth()) + 'px', height: row.expandedRowHeight + 'px'}\">\n</div>\n" /***/ }), /***/ 8761: /***/ ((module) => { module.exports = "<div class=\"ui-grid-row-header-cell ui-grid-expandable-buttons-cell\">\n <div class=\"ui-grid-cell-contents\">\n <i class=\"clickable\"\n ng-if=\"!(row.groupHeader==true || row.entity.subGridOptions.disableRowExpandable)\"\n ng-class=\"{ 'ui-grid-icon-plus-squared' : !row.isExpanded, 'ui-grid-icon-minus-squared' : row.isExpanded }\"\n ng-click=\"grid.api.expandable.toggleRowExpansion(row.entity, $event)\"\n aria-expanded=\"{{!!row.isExpanded}}\">\n </i>\n </div>\n</div>\n" /***/ }), /***/ 2503: /***/ ((module) => { module.exports = "<div\n ng-if=\"expandableRow.shouldRenderFiller()\"\n ng-class=\"{scrollFiller: true, scrollFillerClass:(colContainer.name === 'body')}\"\n ng-style=\"{ width: (grid.getViewportWidth()) + 'px', height: row.expandedRowHeight + 2 + 'px', 'margin-left': grid.options.rowHeader.rowHeaderWidth + 'px' }\">\n &nbsp;\n</div>\n" /***/ }), /***/ 9170: /***/ ((module) => { module.exports = "<div class=\"ui-grid-row-header-cell ui-grid-expandable-buttons-cell\">\n <div class=\"ui-grid-cell-contents\">\n <span class=\"ui-grid-cell-empty\" ng-if=\"!grid.options.showExpandAllButton\"></span>\n <button type=\"button\" class=\"ui-grid-icon-button clickable\"\n ng-if=\"grid.options.showExpandAllButton\"\n ng-class=\"{ 'ui-grid-icon-plus-squared' : !grid.expandable.expandedAll, 'ui-grid-icon-minus-squared' : grid.expandable.expandedAll }\"\n ng-click=\"grid.api.expandable.toggleAllRows()\"\n aria-expanded=\"{{grid.expandable.expandedAll}}\">\n </button>\n </div>\n</div>\n" /***/ }), /***/ 5867: /***/ ((module) => { module.exports = "<span\n class=\"ui-grid-exporter-csv-link-span\">\n <a\n href=\"data:text/csv;charset=UTF-8,CSV_CONTENT\"\n download=\"FILE_NAME\">\n LINK_LABEL\n </a>\n</span>\n" /***/ }), /***/ 8424: /***/ ((module) => { module.exports = "<li\n class=\"ui-grid-menu-item\">\n <form>\n <input\n class=\"ui-grid-importer-file-chooser\"\n type=\"file\"\n id=\"files\"\n name=\"files[]\"/>\n </form>\n</li>\n" /***/ }), /***/ 9187: /***/ ((module) => { module.exports = "<div ui-grid-importer-menu-item></div>" /***/ }), /***/ 9031: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-pager-panel\"\n ui-grid-pager\n ng-show=\"grid.options.enablePaginationControls\">\n <div\n role=\"navigation\"\n class=\"ui-grid-pager-container\">\n <div\n class=\"ui-grid-pager-control\">\n <button\n type=\"button\"\n class=\"ui-grid-pager-first\"\n ui-grid-one-bind-title=\"aria.pageToFirst\"\n ui-grid-one-bind-aria-label=\"aria.pageToFirst\"\n ng-click=\"pageFirstPageClick()\"\n ng-disabled=\"cantPageBackward()\">\n <div\n ng-class=\"grid.isRTL() ? 'last-triangle' : 'first-triangle'\">\n <div\n ng-class=\"grid.isRTL() ? 'last-bar-rtl' : 'first-bar'\">\n </div>\n </div>\n </button>\n <button\n type=\"button\"\n class=\"ui-grid-pager-previous\"\n ui-grid-one-bind-title=\"aria.pageBack\"\n ui-grid-one-bind-aria-label=\"aria.pageBack\"\n ng-click=\"pagePreviousPageClick()\"\n ng-disabled=\"cantPageBackward()\">\n <div ng-class=\"grid.isRTL() ? 'last-triangle prev-triangle' : 'first-triangle prev-triangle'\"></div>\n </button>\n <input\n type=\"number\"\n ui-grid-one-bind-title=\"aria.pageSelected\"\n ui-grid-one-bind-aria-label=\"aria.pageSelected\"\n class=\"ui-grid-pager-control-input\"\n ng-model=\"grid.options.paginationCurrentPage\"\n min=\"1\"\n max=\"{{ paginationApi.getTotalPages() }}\"\n step=\"1\"\n required />\n <span\n class=\"ui-grid-pager-max-pages-number\"\n ng-show=\"paginationApi.getTotalPages() > 0\">\n <abbr\n ui-grid-one-bind-title=\"paginationOf\">\n /\n </abbr>\n {{ paginationApi.getTotalPages() }}\n </span>\n <button\n type=\"button\"\n class=\"ui-grid-pager-next\"\n ui-grid-one-bind-title=\"aria.pageForward\"\n ui-grid-one-bind-aria-label=\"aria.pageForward\"\n ng-click=\"pageNextPageClick()\"\n ng-disabled=\"cantPageForward()\">\n <div ng-class=\"grid.isRTL() ? 'first-triangle next-triangle' : 'last-triangle next-triangle'\"></div>\n </button>\n <button\n type=\"button\"\n class=\"ui-grid-pager-last\"\n ui-grid-one-bind-title=\"aria.pageToLast\"\n ui-grid-one-bind-aria-label=\"aria.pageToLast\"\n ng-click=\"pageLastPageClick()\"\n ng-disabled=\"cantPageToLast()\">\n <div ng-class=\"grid.isRTL() ? 'first-triangle' : 'last-triangle'\">\n <div ng-class=\"grid.isRTL() ? 'first-bar-rtl' : 'last-bar'\">\n </div>\n </div>\n </button>\n </div>\n <div\n class=\"ui-grid-pager-row-count-picker\"\n ng-if=\"grid.options.paginationPageSizes.length > 1 && !grid.options.useCustomPagination\">\n <select\n ui-grid-one-bind-aria-labelledby-grid=\"'items-per-page-label'\"\n ng-model=\"grid.options.paginationPageSize\"\n ng-options=\"o as o for o in grid.options.paginationPageSizes\"></select>\n <span\n ui-grid-one-bind-id-grid=\"'items-per-page-label'\"\n class=\"ui-grid-pager-row-count-label\">\n &nbsp;{{sizesLabel}}\n </span>\n </div>\n <span\n ng-if=\"grid.options.paginationPageSizes.length <= 1\"\n class=\"ui-grid-pager-row-count-label\">\n {{grid.options.paginationPageSize}}&nbsp;{{sizesLabel}}\n </span>\n </div>\n <div\n class=\"ui-grid-pager-count-container\">\n <div\n class=\"ui-grid-pager-count\">\n <span\n ng-show=\"grid.options.totalItems > 0\">\n {{ 1 + paginationApi.getFirstRowIndex() }}\n <abbr\n ui-grid-one-bind-title=\"paginationThrough\">\n -\n </abbr>\n {{ 1 + paginationApi.getLastRowIndex() }} {{paginationOf}} {{grid.options.totalItems}} {{totalItemsLabel}}\n </span>\n </div>\n </div>\n</div>\n" /***/ }), /***/ 9973: /***/ ((module) => { module.exports = "<div\n ui-grid-column-resizer\n ng-if=\"grid.options.enableColumnResizing\"\n class=\"ui-grid-column-resizer\"\n col=\"col\"\n position=\"right\"\n render-index=\"renderIndex\"\n unselectable=\"on\">\n</div>" /***/ }), /***/ 765: /***/ ((module) => { module.exports = "<span\n ng-if=\"grid.selection.selectedCount !== 0 && grid.options.enableFooterTotalSelected\">\n ({{\"search.selectedItems\" | t}} {{grid.selection.selectedCount}})\n</span>\n" /***/ }), /***/ 8882: /***/ ((module) => { module.exports = "<div>\n <!-- <div class=\"ui-grid-vertical-bar\">&nbsp;</div> -->\n <div\n class=\"ui-grid-cell-contents\"\n col-index=\"renderIndex\">\n <ui-grid-selection-select-all-buttons\n ng-if=\"grid.options.enableSelectAll\"\n role=\"checkbox\"\n ng-model=\"grid.selection.selectAll\">\n </ui-grid-selection-select-all-buttons>\n </div>\n</div>\n" /***/ }), /***/ 7274: /***/ ((module) => { module.exports = "<div class=\"ui-grid-cell-contents ui-grid-disable-selection clickable\">\n <ui-grid-selection-row-header-buttons>\n </ui-grid-selection-row-header-buttons>\n</div>\n" /***/ }), /***/ 3098: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-selection-row-header-buttons ui-grid-icon-ok clickable\"\n ng-class=\"{'ui-grid-row-selected': row.isSelected}\"\n tabindex=\"0\"\n ng-click=\"selectButtonClick(row, $event)\"\n ng-keydown=\"selectButtonKeyDown(row, $event)\"\n ng-attr-aria-label=\"{{('selection.aria.row' | t) + ' ' + (row.index + 1) + ', ' + col.displayName}}\"\n aria-checked=\"{{row.isSelected}}\"\n role=\"checkbox\"\n ng-model=\"row.isSelected\">\n &nbsp;\n</div>\n" /***/ }), /***/ 3626: /***/ ((module) => { module.exports = "<div\n\trole=\"checkbox\"\n tabindex=\"0\"\n class=\"ui-grid-selection-row-header-buttons ui-grid-icon-ok\"\n ui-grid-one-bind-aria-label=\"'selection.selectAll' | t\"\n aria-checked=\"{{grid.selection.selectAll}}\"\n ng-class=\"{'ui-grid-all-selected': grid.selection.selectAll}\"\n ng-click=\"headerButtonClick($event)\"\n ng-keydown=\"headerButtonKeyDown($event)\">\n</div>\n" /***/ }), /***/ 1067: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-tree-base-row-header-buttons\"\n tabindex=\"0\"\n ng-class=\"headerButtonClass()\"\n ng-click=\"headerButtonClick($event)\"\n ng-keydown=\"headerButtonKeyDown($event)\">\n</div>\n" /***/ }), /***/ 8058: /***/ ((module) => { module.exports = "<div>\n <div\n class=\"ui-grid-cell-contents\"\n col-index=\"renderIndex\">\n <ui-grid-tree-base-expand-all-buttons\n ng-if=\"grid.options.enableExpandAll\">\n </ui-grid-tree-base-expand-all-buttons>\n </div>\n</div>\n" /***/ }), /***/ 4462: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-cell-contents\">\n <ui-grid-tree-base-row-header-buttons>\n </ui-grid-tree-base-row-header-buttons>\n</div>\n" /***/ }), /***/ 2132: /***/ ((module) => { module.exports = "<div\n class=\"ui-grid-tree-base-row-header-buttons\"\n ng-class=\"{'ui-grid-tree-base-header': row.treeLevel > -1 }\"\n tabindex=\"0\"\n ng-keydown=\"treeButtonKeyDown(row, $event)\"\n ng-click=\"treeButtonClick(row, $event)\">\n <i\n ng-class=\"treeButtonClass(row)\"\n ng-style=\"{'padding-left': grid.options.treeIndent * row.treeLevel + 'px'}\">\n </i>\n &nbsp;\n</div>\n" /***/ }), /***/ 3833: /***/ ((module) => { module.exports = "<div class=\"ui-grid-cell-contents\"\n ng-class=\"{invalid:grid.validate.isInvalid(row.entity,col.colDef)}\"\n title={{grid.validate.getTitleFormattedErrors(row.entity,col.colDef)}}>\n {{COL_FIELD CUSTOM_FILTERS}}\n</div>" /***/ }), /***/ 672: /***/ ((module) => { module.exports = "<div class=\"ui-grid-cell-contents\"\n ng-class=\"{invalid:grid.validate.isInvalid(row.entity,col.colDef)}\"\n tooltip-html-unsafe={{grid.validate.getFormattedErrors(row.entity,col.colDef)}}\n tooltip-enable=\"grid.validate.isInvalid(row.entity,col.colDef)\"\n tooltip-append-to-body=\"true\"\n tooltip-placement=\"top\"\n title=\"TOOLTIP\">\n {{COL_FIELD CUSTOM_FILTERS}}\n</div>" /***/ }), /***/ 7486: /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { __webpack_require__(8241); /***/ }), /***/ 8241: /***/ (() => { (function() { 'use strict'; /** * @ngdoc overview * @name ui.grid.autoResize * * @description * * #ui.grid.autoResize * * <div class="alert alert-warning" role="alert"><strong>Beta</strong> This feature is ready for testing, but it either hasn't seen a lot of use or has some known bugs.</div> * * This module provides auto-resizing functionality to UI-Grid. */ var module = angular.module('ui.grid.autoResize', ['ui.grid']); /** * @ngdoc directive * @name ui.grid.autoResize.directive:uiGridAutoResize * @element div * @restrict A * * @description Stacks on top of the ui-grid directive and * adds the a watch to the grid's height and width which refreshes * the grid content whenever its dimensions change. * */ module.directive('uiGridAutoResize', ['gridUtil', function(gridUtil) { return { require: 'uiGrid', scope: false, link: function($scope, $elm, $attrs, uiGridCtrl) { var debouncedRefresh; function getDimensions() { return { width: gridUtil.elementWidth($elm), height: gridUtil.elementHeight($elm) }; } function refreshGrid(prevWidth, prevHeight, width, height) { if ($elm[0].offsetParent !== null) { uiGridCtrl.grid.gridWidth = width; uiGridCtrl.grid.gridHeight = height; uiGridCtrl.grid.queueGridRefresh() .then(function() { uiGridCtrl.grid.api.core.raise.gridDimensionChanged(prevHeight, prevWidth, height, width); }); } } debouncedRefresh = gridUtil.debounce(refreshGrid, 400); $scope.$watchCollection(getDimensions, function(newValues, oldValues) { if (!angular.equals(newValues, oldValues)) { debouncedRefresh(oldValues.width, oldValues.height, newValues.width, newValues.height); } }); } }; }]); })(); /***/ }), /***/ 1848: /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { __webpack_require__(734); /***/ }), /***/ 734: /***/ (() => { (function () { 'use strict'; /** * @ngdoc overview * @name ui.grid.cellNav * * @description #ui.grid.cellNav <div class="alert alert-success" role="alert"><strong>Stable</strong> This feature is stable. There should no longer be breaking api changes without a deprecation warning.</div> This module provides cell navigation functionality to UI-Grid. */ var module = angular.module('ui.grid.cellNav', ['ui.grid']); /** * @ngdoc object * @name ui.grid.cellNav.constant:uiGridCellNavConstants * * @description constants available in cellNav */ module.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 } }); module.factory('uiGridCellNavFactory', ['gridUtil', 'uiGridConstants', 'uiGridCellNavConstants', 'GridRowColumn', '$q', function (gridUtil, uiGridConstants, uiGridCellNavConstants, GridRowColumn, $q) { /** * @ngdoc object * @name ui.grid.cellNav.object:CellNav * @description returns a CellNav prototype function * @param {object} rowContainer container for rows * @param {object} colContainer parent column container * @param {object} leftColContainer column container to the left of parent * @param {object} rightColContainer column container to the right of parent */ var UiGridCellNav = function UiGridCellNav(rowContainer, colContainer, leftColContainer, rightColContainer) { this.rows = rowContainer.visibleRowCache; this.columns = colContainer.visibleColumnCache; this.leftColumns = leftColContainer ? leftColContainer.visibleColumnCache : []; this.rightColumns = rightColContainer ? rightColContainer.visibleColumnCache : []; this.bodyContainer = rowContainer; }; /** returns focusable columns of all containers */ UiGridCellNav.prototype.getFocusableCols = function () { var allColumns = this.leftColumns.concat(this.columns, this.rightColumns); return allColumns.filter(function (col) { return col.colDef.allowCellFocus; }); }; /** * @ngdoc object * @name ui.grid.cellNav.api:GridRow * * @description GridRow settings for cellNav feature, these are available to be * set only internally (for example, by other features) */ /** * @ngdoc object * @name allowCellFocus * @propertyOf ui.grid.cellNav.api:GridRow * @description Enable focus on a cell within this row. If set to false then no cells * in this row can be focused - group header rows as an example would set this to false. * <br/>Defaults to true */ /** returns focusable rows */ UiGridCellNav.prototype.getFocusableRows = function () { return this.rows.filter(function(row) { return row.allowCellFocus !== false; }); }; UiGridCellNav.prototype.getNextRowCol = function (direction, curRow, curCol) { switch (direction) { case uiGridCellNavConstants.direction.LEFT: return this.getRowColLeft(curRow, curCol); case uiGridCellNavConstants.direction.RIGHT: return this.getRowColRight(curRow, curCol); case uiGridCellNavConstants.direction.UP: return this.getRowColUp(curRow, curCol); case uiGridCellNavConstants.direction.DOWN: return this.getRowColDown(curRow, curCol); case uiGridCellNavConstants.direction.PG_UP: return this.getRowColPageUp(curRow, curCol); case uiGridCellNavConstants.direction.PG_DOWN: return this.getRowColPageDown(curRow, curCol); } }; UiGridCellNav.prototype.initializeSelection = function () { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); if (focusableCols.length === 0 || focusableRows.length === 0) { return null; } return new GridRowColumn(focusableRows[0], focusableCols[0]); // return same row }; UiGridCellNav.prototype.getRowColLeft = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 1 if (curColIndex === -1) { curColIndex = 1; } var nextColIndex = curColIndex === 0 ? focusableCols.length - 1 : curColIndex - 1; // get column to left if (nextColIndex >= curColIndex) { // On the first row // if (curRowIndex === 0 && curColIndex === 0) { // return null; // } if (curRowIndex === 0) { return new GridRowColumn(curRow, focusableCols[nextColIndex]); // return same row } else { // up one row and far right column return new GridRowColumn(focusableRows[curRowIndex - 1], focusableCols[nextColIndex]); } } else { return new GridRowColumn(curRow, focusableCols[nextColIndex]); } }; UiGridCellNav.prototype.getRowColRight = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 0 if (curColIndex === -1) { curColIndex = 0; } var nextColIndex = curColIndex === focusableCols.length - 1 ? 0 : curColIndex + 1; if (nextColIndex <= curColIndex) { if (curRowIndex === focusableRows.length - 1) { return new GridRowColumn(curRow, focusableCols[nextColIndex]); // return same row } else { // down one row and far left column return new GridRowColumn(focusableRows[curRowIndex + 1], focusableCols[nextColIndex]); } } else { return new GridRowColumn(curRow, focusableCols[nextColIndex]); } }; UiGridCellNav.prototype.getRowColDown = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 0 if (curColIndex === -1) { curColIndex = 0; } if (curRowIndex === focusableRows.length - 1) { return new GridRowColumn(curRow, focusableCols[curColIndex]); // return same row } else { // down one row return new GridRowColumn(focusableRows[curRowIndex + 1], focusableCols[curColIndex]); } }; UiGridCellNav.prototype.getRowColPageDown = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 0 if (curColIndex === -1) { curColIndex = 0; } var pageSize = this.bodyContainer.minRowsToRender(); if (curRowIndex >= focusableRows.length - pageSize) { return new GridRowColumn(focusableRows[focusableRows.length - 1], focusableCols[curColIndex]); // return last row } else { // down one page return new GridRowColumn(focusableRows[curRowIndex + pageSize], focusableCols[curColIndex]); } }; UiGridCellNav.prototype.getRowColUp = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 0 if (curColIndex === -1) { curColIndex = 0; } if (curRowIndex === 0) { return new GridRowColumn(curRow, focusableCols[curColIndex]); // return same row } else { // up one row return new GridRowColumn(focusableRows[curRowIndex - 1], focusableCols[curColIndex]); } }; UiGridCellNav.prototype.getRowColPageUp = function (curRow, curCol) { var focusableCols = this.getFocusableCols(); var focusableRows = this.getFocusableRows(); var curColIndex = focusableCols.indexOf(curCol); var curRowIndex = focusableRows.indexOf(curRow); // could not find column in focusable Columns so set it to 0 if (curColIndex === -1) { curColIndex = 0; } var pageSize = this.bodyContainer.minRowsToRender(); if (curRowIndex - pageSize < 0) { return new GridRowColumn(focusableRows[0], focusableCols[curColIndex]); // return first row } else { // up one page return new GridRowColumn(focusableRows[curRowIndex - pageSize], focusableCols[curColIndex]); } }; return UiGridCellNav; }]); /** * @ngdoc service * @name ui.grid.cellNav.service:uiGridCellNavService * * @description Services for cell navigation features. If you don't like the key maps we use, * or the direction cells navigation, override with a service decorator (see angular docs) */ module.service('uiGridCellNavService', ['gridUtil', 'uiGridConstants', 'uiGridCellNavConstants', '$q', 'uiGridCellNavFactory', 'GridRowColumn', 'ScrollEvent', function (gridUtil, uiGridConstants, uiGridCellNavConstants, $q, UiGridCellNav, GridRowColumn, ScrollEvent) { var service = { initializeGrid: function (grid) { grid.registerColumnBuilder(service.cellNavColumnBuilder); /** * @ngdoc object * @name ui.grid.cellNav.Grid:cellNav * @description cellNav properties added to grid class */ grid.cellNav = {}; grid.cellNav.lastRowCol = null; grid.cellNav.focusedCells = []; service.defaultGridOptions(grid.options); /** * @ngdoc object * @name ui.grid.cellNav.api:PublicApi * * @description Public Api for cellNav feature */ var publicApi = { events: { cellNav: { /** * @ngdoc event * @name navigate * @eventOf ui.grid.cellNav.api:PublicApi * @description raised when the active cell is changed * <pre> * gridApi.cellNav.on.navigate(scope,function(newRowcol, oldRowCol) {}) * </pre> * @param {object} newRowCol new position * @param {object} oldRowCol old position */ navigate: function (newRowCol, oldRowCol) {}, /** * @ngdoc event * @name viewPortKeyDown * @eventOf ui.grid.cellNav.api:PublicApi * @description is raised when the viewPort receives a keyDown event. Cells never get focus in uiGrid * due to the difficulties of setting focus on a cell that is not visible in the viewport. Use this * event whenever you need a keydown event on a cell * <br/> * @param {object} event keydown event * @param {object} rowCol current rowCol position */ viewPortKeyDown: function (event, rowCol) {}, /** * @ngdoc event * @name viewPortKeyPress * @eventOf ui.grid.cellNav.api:PublicApi * @description is raised when the viewPort receives a keyPress event. Cells never get focus in uiGrid * due to the difficulties of setting focus on a cell that is not visible in the viewport. Use this * event whenever you need a keypress event on a cell * <br/> * @param {object} event keypress event * @param {object} rowCol current rowCol position */ viewPortKeyPress: function (event, rowCol) {} } }, methods: { cellNav: { /** * @ngdoc function * @name scrollToFocus * @methodOf ui.grid.cellNav.api:PublicApi * @description brings the specified row and column into view, and sets focus * to that cell * @param {object} rowEntity gridOptions.data[] array instance to make visible and set focus * @param {object} colDef to make visible and set focus * @returns {promise} a promise that is resolved after any scrolling is finished */ scrollToFocus: function (rowEntity, colDef) { return service.scrollToFocus(grid, rowEntity, colDef); }, /** * @ngdoc function * @name getFocusedCell * @methodOf ui.grid.cellNav.api:PublicApi * @description returns the current (or last if Grid does not have focus) focused row and column * <br> value is null if no selection has occurred */ getFocusedCell: function () { return grid.cellNav.lastRowCol; }, /** * @ngdoc function * @name getCurrentSelection * @methodOf ui.grid.cellNav.api:PublicApi * @description returns an array containing the current selection * <br> array is empty if no selection has occurred */ getCurrentSelection: function () { return grid.cellNav.focusedCells; }, /** * @ngdoc function * @name rowColSelectIndex * @methodOf ui.grid.cellNav.api:PublicApi * @description returns the index in the order in which the GridRowColumn was selected, returns -1 if the GridRowColumn * isn't selected * @param {object} rowCol the rowCol to evaluate */ rowColSelectIndex: function (rowCol) { // return gridUtil.arrayContainsObjectWithProperty(grid.cellNav.focusedCells, 'col.uid', rowCol.col.uid) && var index = -1; for (var i = 0; i < grid.cellNav.focusedCells.length; i++) { if (grid.cellNav.focusedCells[i].col.uid === rowCol.col.uid && grid.cellNav.focusedCells[i].row.uid === rowCol.row.uid) { index = i; break; } } return index; } } } }; grid.api.registerEventsFromObject(publicApi.events); grid.api.registerMethodsFromObject(publicApi.methods); }, defaultGridOptions: function (gridOptions) { /** * @ngdoc object * @name ui.grid.cellNav.api:GridOptions * * @description GridOptions for cellNav feature, these are available to be * set using the ui-grid {@link ui.grid.class:GridOptions gridOptions} */ /** * @ngdoc object * @name modifierKeysToMultiSelectCells * @propertyOf ui.grid.cellNav.api:GridOptions * @description Enable multiple cell selection only when using the ctrlKey or shiftKey. * <br/>Defaults to false */ gridOptions.modifierKeysToMultiSelectCells = gridOptions.modifierKeysToMultiSelectCells === true; /** * @ngdoc array * @name keyDownOverrides * @propertyOf ui.grid.cellNav.api:GridOptions * @description An array of event objects to override on keydown. If an event is overridden, the viewPortKeyDown event will * be raised with the overridden events, allowing custom keydown behavior. * <br/>Defaults to [] */ gridOptions.keyDownOverrides = gridOptions.keyDownOverrides || []; }, /** * @ngdoc service * @name decorateRenderContainers * @methodOf ui.grid.cellNav.service:uiGridCellNavService * @description decorates grid renderContainers with cellNav functions */ decorateRenderContainers: function (grid) { var rightContainer = grid.hasRightContainer() ? grid.renderContainers.right : null; var leftContainer = grid.hasLeftContainer() ? grid.renderContainers.left : null; if (leftContainer !== null) { grid.renderContainers.left.cellNav = new UiGridCellNav(grid.renderContainers.body, leftContainer, rightContainer, grid.renderContainers.body); } if (rightContainer !== null) { grid.renderContainers.right.cellNav = new UiGridCellNav(grid.renderContainers.body, rightContainer, grid.renderContainers.body, leftContainer); } grid.renderContainers.body.cellNav = new UiGridCellNav(grid.renderContainers.body, grid.renderContainers.body, leftContainer, rightContainer); }, /** * @ngdoc service * @name getDirection * @methodOf ui.grid.cellNav.service:uiGridCellNavService * @description determines which direction to for a given keyDown event * @returns {uiGridCellNavConstants.direction} direction */ getDirection: function (evt) { if (evt.keyCode === uiGridConstants.keymap.LEFT || (evt.keyCode === uiGridConstants.keymap.TAB && evt.shiftKey)) { return uiGridCellNavConstants.direction.LEFT; } if (evt.keyCode === uiGridConstants.keymap.RIGHT || evt.keyCode === uiGridConstants.keymap.TAB) { return uiGridCellNavConstants.direction.RIGHT; } if (evt.keyCode === uiGridConstants.keymap.UP || (evt.keyCode === uiGridConstants.keymap.ENTER && evt.shiftKey) ) { return uiGridCellNavConstants.direction.UP; } if (evt.keyCode === uiGridConstants.keymap.PG_UP) { return uiGridCellNavConstants.direction.PG_UP; } if (evt.keyCode === uiGridConstants.keymap.DOWN || evt.keyCode === uiGridConstants.keymap.ENTER && !(evt.ctrlKey || evt.altKey)) { return uiGridCellNavConstants.direction.DOWN; } if (evt.keyCode === uiGridConstants.keymap.PG_DOWN) { return uiGridCellNavConstants.direction.PG_DOWN; } return null; }, /** * @ngdoc service * @name cellNavColumnBuilder * @methodOf ui.grid.cellNav.service:uiGridCellNavService * @description columnBuilder function that adds cell navigation properties to grid column * @returns {promise} promise that will load any needed templates when resolved */ cellNavColumnBuilder: function (colDef, col, gridOptions) { var promises = []; /** * @ngdoc object * @name ui.grid.cellNav.api:ColumnDef * * @description Column Definitions for cellNav feature, these are available to be * set using the ui-grid {@link ui.grid.class:GridOptions.columnDef gridOptions.columnDefs} */ /** * @ngdoc object * @name allowCellFocus * @propertyOf ui.grid.cellNav.api:ColumnDef * @description Enable focus on a cell within this column. * <br/>Defaults to true */ colDef.allowCellFocus = colDef.allowCellFocus === undefined ? true : colDef.allowCellFocus; return $q.all(promises); }, /** * @ngdoc method * @methodOf ui.grid.cellNav.service:uiGridCellNavService * @name scrollToFocus * @description Scroll the grid such that the specified * row and column is in view, and set focus to the cell in that row and colu