<tr ng-repeat="(rowIndex, row) in $ctrl.results" data-entity-id="{{:: row.key }}" ng-if="!row.hidden">
  <td ng-if=":: $ctrl.hasExtraFirstColumn()" class="crm-search-ctrl-column {{:: $ctrl.getRowClass(row) }}">
    <span ng-if=":: $ctrl.settings.draggable" class="crm-draggable" title="{{:: ts('Drag to reposition') }}">
      <i class="crm-i fa-arrows-v"></i>
    </span>
    <input ng-if=":: $ctrl.settings.actions" type="checkbox" ng-checked="$ctrl.isRowSelected(row)" ng-click="$ctrl.toggleRow(row, $event)" ng-disabled="!!$ctrl.loadingAllRows">
    <crm-search-display-toggle-collapse ng-if=":: $ctrl.settings.collapsible" default-collapsed="$ctrl.settings.collapsible" rows="$ctrl.results" row-index="rowIndex"></crm-search-display-toggle-collapse>
    <div class="btn-group" ng-if="$ctrl.settings.editableRow.full && $ctrl.editing === row.key">
      <button type="button" class="btn btn-sm btn-success" ng-click="$ctrl.saveEditing(row)">
        <span class="sr-only">{{:: ts('Save') }}</span>
        <i class="crm-i fa-check"></i>
      </button>
      <button type="button" class="btn btn-sm btn-danger" ng-click="$ctrl.cancelEditing(row)">
        <span class="sr-only">{{:: ts('Cancel') }}</span>
        <i class="crm-i fa-times"></i>
      </button>
    </div>
  </td>
  <td ng-repeat="(colIndex, colData) in row.columns" ng-include=":: $ctrl.getFieldTemplate(colIndex, colData)" title="{{:: colData.title }}" class="crm-search-col-type-{{:: $ctrl.settings.columns[colIndex].type }} {{:: $ctrl.getRowClass(row) }} {{:: colData.cssClass }}" data-field-name="{{:: $ctrl.settings.columns[colIndex].key }}">
  </td>
</tr>
<tr ng-if="$ctrl.rowCount === 0">
  <td colspan="{{ $ctrl.settings.columns.length + 2 }}">
    <p class="alert alert-info text-center">
      {{ $ctrl.settings.noResultsText || ts('None Found') }}
    </p>
  </td>
</tr>
