var app = angular.module('agApp', []);
app.controller('mainCtrl', function($scope) {
$scope.data = _.times(10, n=>{
return { header: n };
});
});
class TableCtrl {
$onChanges(chg){
let vm = this;
if (chg.data && chg.data.currentValue) {
console.log('Data:', vm.data[0]);
}
}
}
app.component('agTable', {
template: `
<style>
ag-table {
border: 1px solid black;
display: grid;
grid-template-columns: repeat(11, 1fr);
overflow:scroll;
}
ag-column.main{
background-color: grey;
color: white;
}
ag-column > * {
display: grid;
grid-template-columns: 1fr;
}
ag-header, ag-row {
border-bottom: 1px solid black;
border-right: 1px solid black;
padding: 4px;
}
ag-row:last-child {
border-bottom: none;
}
ag-column:last-child ag-row, ag-column:last-child ag-header{
border-right: none;
}
ag-column:nth-child(2) ag-row, ag-column:nth-child(2) ag-header{
border-right: none;
}
ag-column:nth-child(3) ag-row, ag-column:nth-child(3) ag-header{
border-left: 1px solid black;
}
</style>
<ag-column class="main">
<ag-header>Title0</ag-header>
<ag-row>
Title1
</ag-row>
<ag-row>
Title2
</ag-row>
</ag-column>
<ag-column ng-repeat="d in $ctrl.data">
<ag-header>{{d.header}}</ag-header>
<ag-row>
hi
</ag-row>
<ag-row>
<button>Action</button>
</ag-row>
<ag-row>
<button>Action</button>
</ag-row>
<ag-row>
<select>Action</select>
</ag-row>
</ag-column>
`,
bindings: {
data: '<'
},
controller: TableCtrl
});
app.component('agColumn', {
transclude: true,
template: `
<ng-transclude></ng-transclude>
`,
bindings: {
name: '<',
title: '@'
}
});
<!DOCTYPE html>
<html ng-app="agApp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.6.x" src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.6/angular.min.js" data-semver="1.6.6"></script>
<script data-require="lodash.js@*" data-semver="4.17.4" src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<script src="app.js"></script>
</head>
<body ng-controller="mainCtrl">
<ag-table data="data"></ag-table>
</body>
</html>
/* Put your css in here */
body {
font-family: 'Open Sans', sans-serif;
}