Sure, ember-light-table is so good.
In my opinion;
- table should do minimal things, such as rendering table, tbody, thead, tr, td tags… Table shouldn’t care whether data is loaded or not. Even pagining shouldn’t be the responsibility of table. It should be other components responsibility. If any feature needed, users (programmers) can be able to extend/compose the component. So our table must be open for extending.
- column definitions should be given in templates, not as json objects. It is more declerative. If you give your column definitions in a json, that means you are providing an API to the user. Users need to “describe” what they want to. Table need to understand this description and render the content. If any new feature requested, the table need to be modified so that new description can be meaningful. But we want our table close for modification. We design our table according to Open/Close Principle. Just a simple table, that renders table, thead, tbody, tfoot, th, tr, td tags… Thanks to contextual components concept, makes Open/Closed Principle to be easiliy applied.