angular-ui-grid
Version:
A data grid for Angular
908 lines (699 loc) • 1.22 MB
JavaScript
/*!
* 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 \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 \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\"> </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 \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 \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 \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 \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 {{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}} {{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\"> </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 \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 \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