UNPKG

@eform/ng-formio-builder

Version:

The Angular.js form builder component.

52 lines (50 loc) 1.92 kB
/** * A directive for a table builder */ var _merge = require('lodash/merge'); module.exports = function() { return { restrict: 'E', replace: true, template: function() { return '<div class="form-builder-table">' + ' <div class="form-group">' + ' <label for="label">Number of Rows</label>' + ' <input type="number" class="form-control" id="numRows" name="numRows" placeholder="Number of Rows" ng-model="component.numRows">' + ' </div>' + ' <div class="form-group">' + ' <label for="label">Number of Columns</label>' + ' <input type="number" class="form-control" id="numCols" name="numCols" placeholder="Number of Columns" ng-model="component.numCols">' + ' </div>' + '</div>'; }, controller: [ '$scope', function($scope) { $scope.builder = true; var changeTable = function() { /*eslint-disable max-depth */ if ($scope.component.numRows && $scope.component.numCols) { var tmpTable = []; $scope.component.rows.splice($scope.component.numRows); for (var row = 0; row < $scope.component.numRows; row++) { if ($scope.component.rows[row]) { $scope.component.rows[row].splice($scope.component.numCols); } for (var col = 0; col < $scope.component.numCols; col++) { if (!tmpTable[row]) { tmpTable[row] = []; } tmpTable[row][col] = {components:[]}; } } $scope.component.rows = _merge(tmpTable, $scope.component.rows); /*eslint-enable max-depth */ } }; $scope.$watch('component.numRows', changeTable); $scope.$watch('component.numCols', changeTable); } ] }; };