UNPKG

ng-table

Version:

Table + AngularJS ================= [![Build Status](https://travis-ci.org/esvit/ng-table.svg)](https://travis-ci.org/esvit/ng-table) [![Coverage Status](https://coveralls.io/repos/esvit/ng-table/badge.png)](https://coveralls.io/r/esvit/ng-table) [![seman

69 lines 2.56 kB
/** * ngTable: Table + Angular JS * * @author Vitalii Savchuk <esvit666@gmail.com> * @url https://github.com/esvit/ng-table/ * @license New BSD License <http://creativecommons.org/licenses/BSD/> */ import * as ng1 from 'angular'; ngTableDynamic.$inject = []; /** * A dynamic version of the {@link ngTable ngTable} directive that accepts a dynamic list of columns * definitions to render * @ngdoc directive * * @example * ```html * <table ng-table-dynamic="$ctrl.tableParams with $ctrl.cols" class="table"> * <tr ng-repeat="row in $data"> * <td ng-repeat="col in $columns">{{row[col.field]}}</td> * </tr> * </table> * ``` */ export function ngTableDynamic() { return { restrict: 'A', priority: 1001, scope: true, controller: 'ngTableController', compile: function (tElement) { var row; // IE 8 fix :not(.ng-table-group) selector ng1.forEach(tElement.find('tr'), function (tr) { tr = ng1.element(tr); if (!tr.hasClass('ng-table-group') && !row) { row = tr; } }); if (!row) { return undefined; } ng1.forEach(row.find('td'), function (item) { var el = ng1.element(item); var getAttrValue = function (attr) { return el.attr('x-data-' + attr) || el.attr('data-' + attr) || el.attr(attr); }; // this used in responsive table var titleExpr = getAttrValue('title'); if (!titleExpr) { el.attr('data-title-text', '{{$columns[$index].titleAlt(this) || $columns[$index].title(this)}}'); } var showExpr = el.attr('ng-if'); if (!showExpr) { el.attr('ng-if', '$columns[$index].show(this)'); } }); return function (scope, element, attrs, controller) { var expr = controller.parseNgTableDynamicExpr(attrs.ngTableDynamic); controller.setupBindingsToInternalScope(expr.tableParams); controller.compileDirectiveTemplates(); scope.$watchCollection(expr.columns, function (newCols /*, oldCols*/) { scope.$columns = controller.buildColumns(newCols); controller.loadFilterData(scope.$columns); }); }; } }; } //# sourceMappingURL=ngTableDynamic.directive.js.map