blob: 96ca8708bf4586ac1ae4abedcc3912059b22197d [file] [log] [blame]
<table class="bmc-table {{$ctrl.size}}">
<thead class="bmc-table__head">
<!-- Header row (non-sortable) -->
<tr ng-if="!$ctrl.sortable">
<th ng-repeat="headerItem in $ctrl.header"
class="bmc-table__column-header">
{{headerItem.label}}
</th>
</tr>
<!-- Header row (sortable) -->
<tr ng-if="$ctrl.sortable">
<th ng-repeat="headerItem in $ctrl.header track by $index"
class="bmc-table__column-header">
<span ng-if="!headerItem.sortable">
{{headerItem.label}}
</span>
<span ng-if="headerItem.sortable"
ng-click="$ctrl.onClickSort($index)"
class="bmc-table__column-header--sortable">
{{headerItem.label}}
<!-- Sort icons -->
<button class="sort-icon"
type="button"
aria-label="sort {{headerItem.label}}">
<icon file="icon-arrow--up.svg"
ng-if="$index === $ctrl.activeSort"
ng-class="{
'sort-icon--descending': !$ctrl.sortAscending,
'sort-icon--ascending' : $ctrl.sortAscending }"
class="sort-icon--active"
aria-hidden="true"></icon>
<span ng-if="$index !== $ctrl.activeSort"
class="sort-icon--inactive"
aria-hidden="true">
<icon file="icon-arrow--up.svg"></icon>
<icon file="icon-arrow--down.svg"></icon>
</span>
</button>
</span>
</th>
</tr>
</thead>
<tbody class="bmc-table__body">
<!-- Data rows -->
<tr ng-if="$ctrl.data.length > 0"
ng-repeat-start="row in $ctrl.data track by $index"
class="bmc-table__row"
ng-class="{
'bmc-table__row--expanded': $ctrl.expandedRows.has($index)
}">
<!-- Row expansion trigger -->
<td ng-if="$ctrl.expandable"
class="bmc-table__cell">
<button type="button"
class="btn btn--expand"
aria-label="expand row"
ng-click="$ctrl.onClickExpand($index)">
<icon file="icon-chevron-right.svg" aria-hidden="true"></icon>
</button>
</td>
<!-- Row item -->
<td ng-repeat="item in row.uiData track by $index"
class="bmc-table__cell">
<ng-bind-html ng-bind-html="item"></ng-bind-html>
</td>
<!-- Row Actions -->
<td ng-if="$ctrl.rowActionsEnabled"
class="bmc-table__cell bmc-table__row-actions">
<table-actions
actions="row.actions"
emit-action="$ctrl.onEmitTableAction(action, row)">
</table-actions>
</td>
</tr>
<!-- Expansion row -->
<tr ng-repeat-end
ng-if="$ctrl.expandedRows.has($index)"
class="bmc-table__expansion-row">
<td class="bmc-table__cell"></td>
<td class="bmc-table__cell"
colspan="{{$ctrl.header.length - 1}}">
<ng-bind-html
ng-bind-html="row.expandContent || 'No data'">
</ng-bind-html>
</td>
</tr>
<!-- Empty table -->
<tr ng-if="$ctrl.data.length === 0"
class="bmc-table__expansion-row">
<td class="bmc-table__cell"
colspan="{{$ctrl.header.length}}">No data</td>
</tr>
</tbody>
</table>