1*5b8cef81SYoshie Muranaka<div class="bmc-table__container"> 2*5b8cef81SYoshie Muranaka <table-toolbar ng-if="$ctrl.selectable" 3*5b8cef81SYoshie Muranaka selection-count="$ctrl.selectedRows.size" 4*5b8cef81SYoshie Muranaka active="$ctrl.selectedRows.size > 0" 5*5b8cef81SYoshie Muranaka actions="$ctrl.batchActions" 6*5b8cef81SYoshie Muranaka emit-action="$ctrl.onEmitBatchAction(action)" 7*5b8cef81SYoshie Muranaka emit-close="$ctrl.onToolbarClose()" 8*5b8cef81SYoshie Muranaka ng-animate-children="true"> 9*5b8cef81SYoshie Muranaka </table-toolbar> 10*5b8cef81SYoshie Muranaka <table class="bmc-table {{$ctrl.size}}" 11*5b8cef81SYoshie Muranaka ng-class="{ 12*5b8cef81SYoshie Muranaka 'bmc-table--sortable': $ctrl.sortable, 13*5b8cef81SYoshie Muranaka 'bmc-table--expandable': $ctrl.expandable, 14*5b8cef81SYoshie Muranaka 'bmc-table--selectable': $ctrl.selectable, 15*5b8cef81SYoshie Muranaka 'bmc-table--row-actions-enabled': '$ctrl.rowActionsEnabled', 16*5b8cef81SYoshie Muranaka }"> 17b1f64248SYoshie Muranaka <thead class="bmc-table__head"> 18*5b8cef81SYoshie Muranaka <!-- Header row --> 19*5b8cef81SYoshie Muranaka <tr> 20*5b8cef81SYoshie Muranaka <!-- Expandable empty cell --> 21*5b8cef81SYoshie Muranaka <th ng-if="$ctrl.expandable" 22*5b8cef81SYoshie Muranaka class="bmc-table__column-header"></th> 23*5b8cef81SYoshie Muranaka <!-- Select checkbox --> 24*5b8cef81SYoshie Muranaka <th ng-if="$ctrl.selectable" 25fa56273dSYoshie Muranaka class="bmc-table__column-header"> 26*5b8cef81SYoshie Muranaka <table-checkbox ng-model="$ctrl.selectHeaderCheckbox" 27*5b8cef81SYoshie Muranaka indeterminate="$ctrl.someSelected" 28*5b8cef81SYoshie Muranaka emit-change="$ctrl.onHeaderSelectChange(checked)"> 29*5b8cef81SYoshie Muranaka </table-checkbox> 30b1f64248SYoshie Muranaka </th> 31*5b8cef81SYoshie Muranaka <!-- Header items --> 32b1f64248SYoshie Muranaka <th ng-repeat="headerItem in $ctrl.header track by $index" 33b1f64248SYoshie Muranaka class="bmc-table__column-header"> 34*5b8cef81SYoshie Muranaka <span ng-if="!$ctrl.sortable || !headerItem.sortable"> 35b1f64248SYoshie Muranaka {{headerItem.label}} 36b1f64248SYoshie Muranaka </span> 37*5b8cef81SYoshie Muranaka <span ng-if="$ctrl.sortable && headerItem.sortable" 38b1f64248SYoshie Muranaka ng-click="$ctrl.onClickSort($index)" 39b1f64248SYoshie Muranaka class="bmc-table__column-header--sortable"> 40b1f64248SYoshie Muranaka {{headerItem.label}} 41b1f64248SYoshie Muranaka <!-- Sort icons --> 42b1f64248SYoshie Muranaka <button class="sort-icon" 43b1f64248SYoshie Muranaka type="button" 44b1f64248SYoshie Muranaka aria-label="sort {{headerItem.label}}"> 45b1f64248SYoshie Muranaka <icon file="icon-arrow--up.svg" 46b1f64248SYoshie Muranaka ng-if="$index === $ctrl.activeSort" 47b1f64248SYoshie Muranaka ng-class="{ 48b1f64248SYoshie Muranaka 'sort-icon--descending': !$ctrl.sortAscending, 49b1f64248SYoshie Muranaka 'sort-icon--ascending' : $ctrl.sortAscending }" 50b1f64248SYoshie Muranaka class="sort-icon--active" 51b1f64248SYoshie Muranaka aria-hidden="true"></icon> 52b1f64248SYoshie Muranaka <span ng-if="$index !== $ctrl.activeSort" 53b1f64248SYoshie Muranaka class="sort-icon--inactive" 54b1f64248SYoshie Muranaka aria-hidden="true"> 55b1f64248SYoshie Muranaka <icon file="icon-arrow--up.svg"></icon> 56b1f64248SYoshie Muranaka <icon file="icon-arrow--down.svg"></icon> 57b1f64248SYoshie Muranaka </span> 58b1f64248SYoshie Muranaka </button> 59b1f64248SYoshie Muranaka </span> 60fa56273dSYoshie Muranaka </th> 61*5b8cef81SYoshie Muranaka <!-- Row actions empty cell --> 62*5b8cef81SYoshie Muranaka <th ng-if="$ctrl.rowActionsEnabled" 63*5b8cef81SYoshie Muranaka class="bmc-table__column-header"></th> 64fa56273dSYoshie Muranaka </tr> 65fa56273dSYoshie Muranaka </thead> 66b1f64248SYoshie Muranaka <tbody class="bmc-table__body"> 67fa56273dSYoshie Muranaka <!-- Data rows --> 68b1f64248SYoshie Muranaka <tr ng-if="$ctrl.data.length > 0" 691d83af07SYoshie Muranaka ng-repeat-start="row in $ctrl.data track by $index" 701d83af07SYoshie Muranaka class="bmc-table__row" 711d83af07SYoshie Muranaka ng-class="{ 72*5b8cef81SYoshie Muranaka 'bmc-table__row--expanded': $ctrl.expandedRows.has($index), 73*5b8cef81SYoshie Muranaka 'bmc-table__row--selected': $ctrl.selectedRows.has($index), 741d83af07SYoshie Muranaka }"> 751d83af07SYoshie Muranaka <!-- Row expansion trigger --> 761d83af07SYoshie Muranaka <td ng-if="$ctrl.expandable" 771d83af07SYoshie Muranaka class="bmc-table__cell"> 781d83af07SYoshie Muranaka <button type="button" 791d83af07SYoshie Muranaka class="btn btn--expand" 801d83af07SYoshie Muranaka aria-label="expand row" 811d83af07SYoshie Muranaka ng-click="$ctrl.onClickExpand($index)"> 821d83af07SYoshie Muranaka <icon file="icon-chevron-right.svg" aria-hidden="true"></icon> 831d83af07SYoshie Muranaka </button> 841d83af07SYoshie Muranaka </td> 85*5b8cef81SYoshie Muranaka <!-- Row checkbox --> 86*5b8cef81SYoshie Muranaka <td ng-if="$ctrl.selectable" 87*5b8cef81SYoshie Muranaka class="bmc-table__cell"> 88*5b8cef81SYoshie Muranaka <table-checkbox ng-if="row.selectable" 89*5b8cef81SYoshie Muranaka ng-model="row.selected" 90*5b8cef81SYoshie Muranaka emit-change="$ctrl.onRowSelectChange($index)"> 91*5b8cef81SYoshie Muranaka </table-checkbox> 92*5b8cef81SYoshie Muranaka </td> 93fa56273dSYoshie Muranaka <!-- Row item --> 948c80dbd9SYoshie Muranaka <td ng-repeat="item in row.uiData track by $index" 95fa56273dSYoshie Muranaka class="bmc-table__cell"> 968c80dbd9SYoshie Muranaka <ng-bind-html ng-bind-html="item"></ng-bind-html> 97fa56273dSYoshie Muranaka </td> 98fa56273dSYoshie Muranaka <!-- Row Actions --> 99bb688795SYoshie Muranaka <td ng-if="$ctrl.rowActionsEnabled" 100fa56273dSYoshie Muranaka class="bmc-table__cell bmc-table__row-actions"> 101bb688795SYoshie Muranaka <table-actions 102bb688795SYoshie Muranaka actions="row.actions" 103*5b8cef81SYoshie Muranaka emit-action="$ctrl.onEmitRowAction(action, row)"> 104bb688795SYoshie Muranaka </table-actions> 105fa56273dSYoshie Muranaka </td> 106fa56273dSYoshie Muranaka </tr> 1071d83af07SYoshie Muranaka <!-- Expansion row --> 1081d83af07SYoshie Muranaka <tr ng-repeat-end 1091d83af07SYoshie Muranaka ng-if="$ctrl.expandedRows.has($index)" 1101d83af07SYoshie Muranaka class="bmc-table__expansion-row"> 1111d83af07SYoshie Muranaka <td class="bmc-table__cell"></td> 1121d83af07SYoshie Muranaka <td class="bmc-table__cell" 113*5b8cef81SYoshie Muranaka colspan="{{$ctrl.header.length + $ctrl.sortable + 114*5b8cef81SYoshie Muranaka $ctrl.expandable + $ctrl.rowActionsEnabled}}"> 1151d83af07SYoshie Muranaka <ng-bind-html 1161d83af07SYoshie Muranaka ng-bind-html="row.expandContent || 'No data'"> 1171d83af07SYoshie Muranaka </ng-bind-html> 1181d83af07SYoshie Muranaka </td> 1191d83af07SYoshie Muranaka </tr> 120fa56273dSYoshie Muranaka <!-- Empty table --> 1211d83af07SYoshie Muranaka <tr ng-if="$ctrl.data.length === 0" 1221d83af07SYoshie Muranaka class="bmc-table__expansion-row"> 1231d83af07SYoshie Muranaka <td class="bmc-table__cell" 124*5b8cef81SYoshie Muranaka colspan="{{$ctrl.header.length + $ctrl.sortable + 125*5b8cef81SYoshie Muranaka $ctrl.expandable + $ctrl.rowActionsEnabled}}"> 126*5b8cef81SYoshie Muranaka No data 127*5b8cef81SYoshie Muranaka </td> 128fa56273dSYoshie Muranaka </tr> 129fa56273dSYoshie Muranaka </tbody> 130fa56273dSYoshie Muranaka </table> 131*5b8cef81SYoshie Muranaka</div>