- Grid: Force scroll to 100% when necessary (3bcbe72d, closes #3772)
- Tests: All e2e tests working in Firefox (b9cc39f1)
- core:
- edit: fix lost focus and cell scrolling into view on edit (e9a6d4eb)
- grouping: grouping a pinned column was broken (acb7e7b6)
- i18n: Replace ZWNJ with \u200c in Persian (2f2936ae, closes #3842)
- Edit: Allow COL_FIELD in editable templates (fa9066b2)
- Selection: Prevent IE from selecting text (a1bbc0c5, closes #3392)
- cellNav:
- #3528 handle focus into grid from other controls (92477c7a)
- IE was scrolling the viewPort to the end when the focuser div received focus. S (aa563554)
- focuser element should not have width or height or else the window will scroll t (6997d2b7)
- was processing left and right renderContainers where there is no need fix(edit): (6f5d503d)
- add an empty element to focus on instead of focusing on the viewport (6937d4d5)
- edit:
- #3128 remove grid scrollbars when in deepedit to prevent any scrolling of parent (91077e82)
- deep edit keydown logic wasn't right (9e995e9e)
- tweak the deep edit keydown logic so that Enter and Tab stops editing (fbc38cb1)
- #3742 dropdown was not calling out to cellNav for cellNav keys. also refactored (2edc4d66)
- Edit events were being attached in gridCell directive even if edit was not enabl (13ab0945)
- gridEdit:
- gridUtil: rtlScrollType using wrong method (15ee480e, closes #3637)
- moveColumn: account for width of left container when positioning moving column header. (06f223bb, closes #3417, #3395)
- saveState: Saving state was storing rowHeader columns, causing issues on restore. (c9ce96af)
- treeBase: Change calculation of number of levels in tree (26ca6215)
- uiGrid:
- uiGridColumns: Fix auto-incrementing of column names (a10f1414)
- uiGridHeader:
- grouping: Add option groupingNullLabel, to group null and undefined values together. (9fbb1b87, closes #3271)
- Expandable: Run with lower priority than ngIf (949013c3, closes #2804)
- RTL:
- cellNav: fix null ref issue in navigate event for oldRowColumn scrollTo should not setF (02b05cae)
- pinning: restore correct width state (4ffaaf26)
- scrolling: Fix for #3260 atTop/Bottom/Left/Right needed tweaking (89461bcb)
- selection:
- uiGrid:
- uiGridColumnMenu: Position relatively (9d918052, closes #2319)
- uiGridFooter: Watch for col change (1f9100de, closes #2686)
- uiGridHeader:
- saveState: add pinning to save state (b0d943a8)
- gridUtil will no longer calculate dimensions of hidden elements (e7dfb8c2)
- Two events are now emitted on scroll:
grid.api.core.ScrollBegin grid.api.core.ScrollEnd
Before: grid.api.core.ScrollEvent After: grid.api.core.ScrollBegin
ScrollToIfNecessary and ScrollTo moved from cellNav to core and grid removed from arguments Before: grid.api.cellNav.ScrollToIfNecessary(grid, gridRow, gridCol) grid.api.cellNav.ScrollTo(grid, rowEntity, colDef)
After: grid.api.core.ScrollToIfNecessary(gridRow, gridCol) grid.api.core.ScrollTo(rowEntity, colDef)
GridEdit/cellNav When using cellNav, a cell no longer receives focus. Instead the viewport always receives focus. This eliminated many bugs associated with scrolling and focus.
If you have a custom editor, you will no longer receive keyDown/Up events from the readonly cell. Use the cellNav api viewPortKeyDown to capture any needed keydown events. see GridEdit.js for an example (052c2321)
- Edit: Wrong arguments on scrollToIfNecessary (0fc6b21c)
- Filtering: Redraw grid properly when scrolled (4c32e3d7, closes #2557)
- Grid:
- Pinning: Move rowStyle() to uiGridViewport (09f478c2, closes #2821)
- Scrolling: Don't trap scroll at 100% down (78a4b433)
- cellNav: Allow tabbing out of grid (aabcd4da, closes #2339)
- uiGridHeader:
- uiGridRenderContainer:
-
Filtering: Let mobile devices tap filter box (01c22acf)
-
Grid:
-
GridColumn: Allow for duplicate field coldefs (82a72130, closes #2364)
-
GridRenderContainer: Redraw with scroll % (bc2c68ab, closes #2357)
-
Mobile:
-
Selection: Fix selection w/ row templates (b1a57b69)
-
Tests:
-
Tutorials: Point back to angular 1.2.26 (96625e2a)
-
cellNav: If cellNav api exists, turn on stuff (14264540, closes #2294) *refactor(cellNav) remove unused $scope parameter from api methods
-
uiGridHeaderCell:
-
uiGridRow:
-
edit: edit cell scope was not being destroyed when element was removed
-
gridApi add ability to pass _this variable in api.feature.on.eventName
- Grid encapsulate the renderContainer canvasHeight and GridRow.height properties Changes getCanvasHeight function to only recalculate all the row heights when needed. Adds a CanvasH eightChanged event to api.core
-
Core: Implementation for #2483. Adds a showGridFooter option that will create a grid (d0233601) * Adds a showGridFooter option that will create a grid footer with the Total Items and Shown Items displayed. Also shows Selected Items if using Selection feature.
-
cellnav: provide row option to disallow all cells from having focus (1bc05ebc)
-
uiGridRow: Allow dynamic row templates (a547a52e)
-
getExternalScopes() function is removed. Use grid.appScope instead. external-scopes attribute is removed. Use gridOptions.appScopeProvider to assign values other than $scope.$parent to appScope
-
removed scope parameter from grid.api.cellNav methods old: scrollTo($scope, rowEntity, colDef) scrollToFocus($scope, rowEntity, colDef) scrollToIfNecessary($scope, row, col) new: scrollTo(rowEntity, colDef) scrollToFocus(rowEntity, colDef) scrollToIfNecessary(row, col
-
scrollbars.WHEN_NEEDED no longer an option
-
showFooter option renamed to showColumnFooter; footerRowHeight option renamed to columnFooterHeight (d0233601)
-
On mobile devices the user will have to long-click to edit a cell instead of double-clicking (654e0ce8)
-
rowEdit: * remove grid from all method signatures
-
importer: * remove grid from importFile signature
-
core: * remove grid from notifyDataChange signature
- Builds: Switch to websockets to get SauceLabs tests running again
- Aggregation: Refactor introduced bug (a54c6639)
- Builds: Turn off Safari 5 for SL (3cf645ea)
- Edit: Remove leftover console.log() (3b707584)
- Header: Hidden header height misplacement (783fefbd, closes #1995)
- Pinning: Add left border for right container (e409c54b)
- RTL: Put filter cancel on left for RTL (0885e509, closes #2058)
- Tests: Accidentally left in a ddescribe (e6cf438a)
- cellNav: Don't setup when directive not there (9bfa6e3f, closes #2128)
- The
hideHeader
option has been changed toshowHeader
To migrate, change your code from the following:
hideHeader: true
To:
showHeader: false
(783fefbd)
- Edit: Retain "focus" in endEdit() (f3a45ef5)
- Filter: Watch running w/o change check (79f6c21a)
- Grid: Avoid too-early header height calc (a335b922)
- GridRenderContainer: Correct prevScroll* (1182b059)
- Selection: Change api for getSelectAllState() (5ffefafc, closes #2086)
- cellNav:
- gridUtil: Allow multiple logDebug params (c903ecc8)
- uiGrid:
- uiGridMenu: Only run applyHide when not shown (91bf06f2)
- bower: Use right angular version spec (6bd917a0)
- AutoResize: Redraw all of grid on resize. (1bb5367c, closes #1770)
- Importer: Account for older browsers properly (52823249)
- Customizer: Update column menu style (ffa80002)
- Grid: Fix a few mobile-browser issues (4bb2d699)
- Pinning: Fix pinning when col has dyanmic width (9e022bab, closes #1634)
- RTL: Unfixed .css() call post-jquery (8d31f6a1, closes #1620)
- Selection: Remove IE11 ellipsis in header (a8ac76c6)
- Site: Fix version select box height (d2699092)
- Tests: Date() usage failing on Safari 5 (6440d81c)
- Travis: Make travis run saucelabs tests (3bc3f272)
- grunt: Use correct version of grunt-jscs (e88600a0)
- uiGridCell: Use promises for tmpl processing (9fb29cce, closes #1712)
- uiGridHeader: Fix height calculations (cfc24442, closes #1639, #NaN)
- uiGridHeaderCell: Use hasClass() for IE9 (7923f229)
- uiGridMenu: Set box-sizing: content box (ee418f0d)
- uiGridUtil: getBorderSize() missing "width" (174f2521)
- cellTemplates: add MODEL_COL_FIELD to cellTemplate parsing so it can be used in ng-model #1633 (66f3404a)
- editableCellTemplates should use MODEL_COL_FIELD instead of COL_FIELD. angular-ui#1633 MODEL_COL_FIELD variable was added to the cellTemplate and editCellTemplate for utilizing the bound field in ng-model. Edit feature was changed to use MODEL_COL_FIELD instead of COL_FIELD for consistency.
- typo (1272cf65)
- CHANGELOG: anchor tag for v2.0.7 was wrong (d0ecd310)
- column-resizing: 100% width/height not needed on ui-grid-cell-contents, just ui-grid-inner-cell-c (6912d14f)
- customizer: point to ui-grid-unstable.css at top of page (4892fbc4)
- grunt:
- less: header variables were in file twice (f93f675c)
- travis:
- ui-grid-body:
- uiGrid:
- uiGridCell: re-compile if template changes (7485e6ef)
- uiGridHeader:
- uiGridStyle:
s were being needlessly added (ade12ec9)
- AutoResize: Adding auto-resize feature. (d0bdd829)
- RTL: Adding RTL support and fixing virtualization (d5a9982d)
- Selection: Updates (b20c41c1)
- e2e: protractor testing of docs now works properly with 'grunt dev' (08787be4)
- filtering: Add row filtering (16161643)
- row-hashing: Add new row hashing feature (da87ff9a)
- rowSort: Added row sorting (ce330978)
- uiGridStyle: Added ui-grid-style directive (5687723f)
This release is mainly focused on fixing the grid layout/column widths:
- Removed border-left and border-right from columns. Now we are using vertical bars so if someone sets a width to be 400px for a column, the column will actually be 400px, not 401-402px due to the border. This caused the horizontal overflowing to happen producing a horizontal scrollbar. This also fixed issues like angular-ui#411 where you would see columns not extend all the way to the edge and you would get double borders
- Percent calculation is handled before asterisks calculations because percent calculation should take higher priority, and the asterisks calculations will then be able to fill the remaining space instead of horizontally overflowing the viewport
A fix contributed by @swalters for #436:
When editing a cell, the ng-cell-has-focus directive will broadcast a message named ngGridEventStartCellEdit to let all children know that you can now give yourself focus. When the editable cell template is done with editing (usually on a blur event) you need to emit ngGridEventEndCellEdit to let ng-cell-has-focus know that you are done editing and it will then show the non-editable cell template. The reasoning for this is (good quote): "Now I can wrap my input elements in divs/spans, whatever and control exactly what element's blur triggers the end edit" - @swalters. An example (used for ng-input directive):
scope.$on('ngGridEventStartCellEdit', function () { elm.focus(); });
angular.element(elm).bind('blur', function () { scope.$emit('ngGridEventEndCellEdit'); });
Also, there is another option now which is enableCellEditOnFocus (yes, it's coming back) so now you can choose between excel-like editing or enabling edit mode on focus.
Also some fixes contributed by @ebbe-brandstrup are:
- Columns sized with * or % now expand / shrink as other * or %-based columns are hidden / shown
- Note: the changes auto-expand/shrink only take effect on-the-fly
- Works with grouping and when enabling the selection checkbox row (showSelectionCheckbox)
- Bugfixes in configureColumnWidths
- Re-ordered columns now keep their width setup
- Fixed "asteriskNum" so it no longer includes hidden columns (was checking .visible on a columnDefs column instead of the matching ngColumn)
- Fixed "totalWidth" so it no longer includes hidden columns when using px values for width (was checking .visible on a columnDefs column instead of the matching ngColumn)
- Fixed ngColumn width being initialized to undefined when using "auto" for width, regardless of "minWidth" settings (was checking .minWidth on a columnDefs column instead of the matching ngColumn)
Renamed "col" to "colDef" in configureColumnWidths() in the places where "col" was a column from "columnDefs". It made it clearer for me whether I was referring to a ngColumn or a column from columnDefs. There were a couple of bugs caused by that (col.visible incorrectly accessed on columnDefs objects instead of ngColumns, and the like).
- Bugfixes in ng-grid-flexible-height
- The plugin couldn't shrink the grid, only grow it
- Using domUtilityService.UpdateGridLayout instead of grid.refreshDomSizes which correctly grows the grid if it's been shrunk (e.g. when paging to the last page and it has few rows + the plugin has a smaller min. height than what's needed on the other pages)
Too many to list. Here is the pull request angular-ui#511
-
Development
- Continuous integration testing with Travis CI. A few tests that were looking for pixel perfection had to be relaxed due to rendering differences between browsers and OSes.
- Moved this changelog to CHANGELOG.md!
- Added tests for i18n languages. Any new language must cover all the properties that the default language (English) has.
- CSS files compiling with less (24bb173)
- Added optional --browsers flag for test tasks.
grunt test --browsers=Chrome,Firefox,PhantomJS
will test in all 3 browsers at once.
-
Sorting
-
i18n
- Added Brazilian Portugeuse (thanks @dipold) (ab0f207)
- Allow column
displayName
to be an empty string. (#363, 46a992f) - Fix for
totalServerItems
not updating (#332, #369, fcfe316) - Fixed regression in 2.0.5 that used Array.forEach, which isn't supported in IE8. Moved to angular.forEach (e4b08a7)
- Fixed and added tests for wysiwyg-export plugin (57df36f)
- Fixed extraneous trailing comma (#449, 2c655c7)
- Cell editing - various attempts at fixing broken cell editing eventually resulted in using NgModelController (thanks @swalters). (#442, 050a1ba, 5c82f9b, 5c82f9b, f244363, ee2a5f1)
- Moving to $http for external template fetching. Should fix issues with grid rendering before templates are retrieved, as well as fetching the same template multiple times.
- Fixed bug that prevented the grid from maintaining row selections post-sort thanks to sum4me
- Fixing some more minor bugs
- Changed default multiSelect behavior, updating some plugins and making some more minor bugfixes.
- minor bugfixes, updating some plugins.
- Moved to grunt build system. No more international version; all languages are included by default. Fixed minor grouping display issue. Using $templateCache for templates instead of global namespace.
- Breaking Changes: see documentation (showSelectionBox, enableRowSelection, showFooter). Column Virtualization added. Row virtualization performance improved. Excel-like editing instead of enableFocusedCellEdit.
- Aggregates now display correctly. Added more option methods to select and group data (see wiki), Added column pinning.
- Fixes for multi-level grouping and adding the gridId to both the grid options and as argument to the "ngGridEventData" so you can identify what grid it came from.
- Major architectural changes which greatly improves performance. virtualizationThreshold now controlls when virtualization is force-enabled and is user-specified in options.
- Fixed bug with selections and multiple grids. New emit message for notifying when hitting bottom of viewport. Can disable virtualization. ng-grid virtualization is on by default, but can be disabled if there are less than 50 rows in the grid. Anything > 50 rows virtualization is forced on for performance considerations.
- BREAKING CHANGES: Will add examples. Adding cell selection, navigation, and edit on focus. Added programmatic selections. Improved scrolling. ngGridEvents changed/added: see wiki.
- Can now highlight/copy text in grid. Fixed multiple issues when using multiselect along with shift key. Refactored key events so now they are all in the same directive for viewport. Hovering over highlightable text will change cursors in viewport. Fixed #93.
- Merged changes to have two-way data-binding work in templates, so if you're using a celltemplate, you can now use COL_FIELD instead of row.getProperty(col.field). row.getProperty is still in the row class for accessing other row values.
- Adding ability to preselect rows. Can deselect when multiSelect:false. Bug fixes/merging pull requests. Bower now works. Can now sync external search with ng-grid internal search. Check out other examples on examples page.
- Adding i18n support and support for different angularjs interpolation symbols (requires building from source).
- Modifying the way we watch for array changes. Added groupable column definition option. Bugfixes for #58, #59.
- jslint reformat, minor bugfixes, performance improvements while keydown navigating, adding "use strict" to script.
- Massive improvements to search thanks to iNeedFat!
- Refactored and removed unneeded code. Added scope events.
- Improving template compilation and fixing jquery theme support. Improving comments on grid options.
- sortInfo can now be set to default sort the grid. Improvements to the beforeSelectionChange callback mechanism when multi-selecting.
- Improved template rendering when using external template files. columnDefs can now be a $scope object which can be push/pop/spliced. Fixed box model for cells and header cells.
- Improved aggregate grouping, minor bugfixes. Auto-width works!
- Changed default width behavior to use *s and added option to maintain column ratios while resizing
- Added layout plugin. Support for uri templates. Performance improvements.
- Major code refactoring, can now group-by using column menu, changes to build
- Built-in filtering support, numerous perfomance enhancements and minor code refactoring
- Added ability to specify property "paths" as fields and for grid options.
- Added Server-Side Paging support and minor bug fixes.
- Added ability to hide/show columns and various bug fixes/performance enhancements.
- Release