| <div class="bmc-table__container"> |
| <table-toolbar ng-if="$ctrl.selectable" |
| selection-count="$ctrl.selectedRows.size" |
| active="$ctrl.selectedRows.size > 0" |
| actions="$ctrl.batchActions" |
| emit-action="$ctrl.onEmitBatchAction(action)" |
| emit-close="$ctrl.onToolbarClose()" |
| ng-animate-children="true"> |
| </table-toolbar> |
| <table class="bmc-table {{$ctrl.size}}" |
| ng-class="{ |
| 'bmc-table--sortable': $ctrl.sortable, |
| 'bmc-table--expandable': $ctrl.expandable, |
| 'bmc-table--selectable': $ctrl.selectable, |
| 'bmc-table--row-actions-enabled': '$ctrl.rowActionsEnabled', |
| }"> |
| <thead class="bmc-table__head"> |
| <!-- Header row --> |
| <tr> |
| <!-- Expandable empty cell --> |
| <th ng-if="$ctrl.expandable" |
| class="bmc-table__column-header"></th> |
| <!-- Select checkbox --> |
| <th ng-if="$ctrl.selectable" |
| class="bmc-table__column-header"> |
| <table-checkbox ng-model="$ctrl.selectHeaderCheckbox" |
| indeterminate="$ctrl.someSelected" |
| emit-change="$ctrl.onHeaderSelectChange(checked)"> |
| </table-checkbox> |
| </th> |
| <!-- Header items --> |
| <th ng-repeat="headerItem in $ctrl.header track by $index" |
| class="bmc-table__column-header"> |
| <span ng-if="!$ctrl.sortable || !headerItem.sortable"> |
| {{headerItem.label}} |
| </span> |
| <span ng-if="$ctrl.sortable && 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> |
| <!-- Row actions empty cell --> |
| <th ng-if="$ctrl.rowActionsEnabled" |
| class="bmc-table__column-header"></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), |
| 'bmc-table__row--selected': $ctrl.selectedRows.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 checkbox --> |
| <td ng-if="$ctrl.selectable" |
| class="bmc-table__cell"> |
| <table-checkbox ng-if="row.selectable" |
| ng-model="row.selected" |
| emit-change="$ctrl.onRowSelectChange($index)"> |
| </table-checkbox> |
| </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 |
| ng-if="row.actions" |
| actions="row.actions" |
| emit-action="$ctrl.onEmitRowAction(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 + $ctrl.sortable + |
| $ctrl.expandable + $ctrl.rowActionsEnabled}}"> |
| <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 + $ctrl.sortable + |
| $ctrl.expandable + $ctrl.rowActionsEnabled}}"> |
| No data |
| </td> |
| </tr> |
| </tbody> |
| </table> |
| </div> |