Skip to content

0.5.0

Compare
Choose a tag to compare
@christianacca christianacca released this 15 Feb 23:07
· 320 commits to master since this release

Bug Fixes

  • ngTableController:
    • fix regression in recent rename of ngTableParmas to NgTableParams
      (c7f2ac89)
    • prevent "stackoverflow" exception when data items are recursive data structures
      (4a344db0)

Features

  • filters:
    • filter expression now has access to scope
      (c2f83b98)
    • specify the filter template url using the filter value rather than a separate templateUrl field
      (7955f12b)
  • header:
    • add data-title-text attribute to table cells
      (43e5c4bf)
    • title and sortable expression now has access to the column definition
      (699b2a58)
    • header-title
      (502b717b)
    • header-class attribute is now a data binding expression
      (60de2066)
  • ngTable:
    • getter methods declared on $column no longer require a $scope to be supplied
      (f9090b47)
    • add title-alt for displaying an alternative header title for responsive tables
      (afc14234)
  • ngTableDynamic: new directive that accepts dynamic array of columns
    (03854d33)

Breaking Changes

  • column: due to 7e8448dc,

  • Binding expressions used for generating thead>th attributes that reference the current column will need modifying

    Previously:

 <td title="getTitle(column)">

Now:

  <td title="getTitle($column)">
  • directive: due to 3113e340,
  • Fields previously stored directly on a column object are now only available via the prototype chain

This will affect you only if you are enumerating / specifically checking for "own properties" of the column object.

Custom header.html templates will need to pass the current scope as a parameter to column.filter.

Previously:

<!-- snip -->
<div ng-repeat="(name, filter) in column.filter">
<!-- snip -->

... now becomes:

 <!-- snip -->
 <div ng-repeat="(name, filter) in column.filter(this)">
 <!-- snip -->
  • filters:
  • $$name field on filter definitions is not supported.

Previously:

<td filter="{'username': 'text', $$name: 'username'}"</td>

... now becomes:

<td filter="{'username': 'text'}"</td>
  • column.filterName has been dropped as this is no longer applicable. Custom filter templates will need to change.

Previously:

        <input type="text" name="{{column.filterName}}"

... now becomes:

        <input type="text" name="{{name}}"
  • Multiple filters defined by the same filter definition will now render each input with a seperate name.
  • filters:
  • column.filterTemplateURL has been dropped as this is no longer applicable. Custom header.html
    templates will need to change.

Previously:

        <tr class="ng-table-filters" ng-init="tableParams">
            <th ng-repeat="column in columns" ng-show="column.visible" class="filter">
                <div ng-repeat="(name, filter) in column.filter">
                    <div ng-if="column.filterTemplateURL" ng-show="column.filterTemplateURL">
                        <div ng-include="column.filterTemplateURL"></div>
                    </div>
                    <div ng-if="!column.filterTemplateURL" ng-show="!column.filterTemplateURL">
                        <div ng-include="'ng-table/filters/' + filter + '.html'"></div>
                    </div>
                </div>
            </th>
        </tr>

... now becomes:

        <tr class="ng-table-filters" ng-init="tableParams">
            <th ng-repeat="column in columns" ng-show="column.visible" class="filter">
                <div ng-repeat="(name, filter) in column.filter">
                    <div ng-if="filter.indexOf('/') !== -1" ng-include="filter"></div>
                    <div ng-if="filter.indexOf('/') === -1" ng-include="'ng-table/filters/' + filter + '.html'"></div>
                </div>
            </th>
        </tr>
  • Specifying the url to a filter template has changed.

Previously:

<td filter="{ 'name': 'text', templateURL: 'path/to/textFilter.html'}"</td>

... now becomes:

<td filter="{ 'name': 'path/to/textFilter.html'}"</td>
  • Multiple filters defined by the same filter definition will now specify their own url.

Previously:

<td filter="{
    'fname': 'text',
    'lname': 'text',
    templateURL: 'path/to/textFilter.html'}"</td>

... now becomes:

<td filter="{
    'fname': 'path/to/textFilter.html',
    'lname': 'path/to/textFilter.html'}"</td>

parse method on the ngTable scope has been removed as it's no longer required

Previously, a css class was added to TH elements thusly:

<tr ng-repeat="row in $data">
    <td header-class="myHeaderClass"></td>
</tr>

Now:

<tr ng-repeat="row in $data">
    <td header-class="'myHeaderClass'"></td>
</tr>