patternfly/angular-patternfly

View on GitHub
src/views/listview/list-view.html

Summary

Maintainability
Test Coverage
<span>
  <div class="list-group list-view-pf list-view-pf-view"
       dnd-list="$ctrl.items"
       ng-class="{'list-view-pf-dnd': $ctrl.config.dragEnabled === true}"
       ng-if="$ctrl.config.itemsAvailable !== false">
    <div class='dndPlaceholder'></div>
    <div class="list-group-item {{item.rowClass}}"
         ng-repeat="item in $ctrl.items | startFrom:($ctrl.pageConfig.pageNumber - 1)*$ctrl.pageConfig.pageSize | limitTo:$ctrl.pageConfig.pageSize track by $index"
         dnd-draggable="item"
         dnd-effect-allowed="move"
         dnd-disable-if="$ctrl.config.dragEnabled !== true"
         dnd-dragstart="$ctrl.dragStart(item)"
         dnd-moved="$ctrl.dragMoved()"
         dnd-dragend="$ctrl.dragEnd()"
         ng-class="{'drag-original': $ctrl.isDragOriginal(item), 'pf-selectable': $ctrl.selectItems, 'active': $ctrl.isSelected(item), 'disabled': $ctrl.checkDisabled(item), 'list-view-pf-expand-active': item.isExpanded}">
      <div class="list-group-item-header" ng-class="{'list-group-item-not-selectable' : !$ctrl.config.selectItems && (!$ctrl.config.useExpandingRows || $ctrl.config.compoundExpansionOnly)}">
        <div class="list-view-pf-dnd-drag-items" ng-if="$ctrl.config.dragEnabled === true">
          <div pf-transclude="parent" class="list-view-pf-main-info"></div>
        </div>
        <div ng-class="{'list-view-pf-dnd-original-items': $ctrl.config.dragEnabled === true}">
          <div class="list-view-pf-expand" ng-if="$ctrl.config.useExpandingRows && !$ctrl.config.compoundExpansionOnly">
            <span class="fa fa-angle-right" ng-show="!item.disableRowExpansion" ng-click="$ctrl.toggleItemExpansion(item)" ng-class="{'fa-angle-down': item.isExpanded}"></span>
            <span class="pf-expand-placeholder" ng-show="item.disableRowExpansion"></span>
          </div>
          <div class="list-view-pf-checkbox" ng-if="$ctrl.config.showSelectBox" >
            <input type="checkbox" value="item.selected" ng-model="item.selected" ng-disabled="$ctrl.checkDisabled(item)" ng-change="$ctrl.checkBoxChange(item)"/>
          </div>

          <div class="list-view-pf-actions"
               ng-if="($ctrl.actionButtons && $ctrl.actionButtons.length > 0) || ($ctrl.menuActions && $ctrl.menuActions.length > 0)">
            <button class="btn {{actionButton.class || 'btn-default'}}" ng-repeat="actionButton in $ctrl.actionButtons"
                    title="{{actionButton.title}}"
                    ng-class="{'disabled' : $ctrl.checkDisabled(item) || !$ctrl.enableButtonForItem(actionButton, item)}"
                    ng-click="$ctrl.handleButtonAction(actionButton, item)">
              <div ng-if="actionButton.include" class="actionButton.includeClass" ng-include src="actionButton.include"></div>
              <span ng-if="!actionButton.include">{{actionButton.name}}</span>
            </button>
            <div uib-dropdown class="{{$ctrl.dropdownClass}} pull-right dropdown-kebab-pf {{$ctrl.getMenuClassForItem(item)}} {{$ctrl.hideMenuForItem(item) ? 'invisible' : ''}}"
                 id="kebab_{{$index}}"
                 ng-if="$ctrl.menuActions && $ctrl.menuActions.length > 0">
              <button uib-dropdown-toggle class="btn btn-link" type="button"
                      id="dropdownKebabRight_{{$index}}"
                      ng-class="{'disabled': $ctrl.checkDisabled(item)}"
                      ng-click="$ctrl.setupActions(item, $event)">
                <span class="fa fa-ellipsis-v"></span>
              </button>
              <ul uib-dropdown-menu class="dropdown-menu dropdown-menu-right {{$index}}" ng-class="{'invisible': !$ctrl.kebabMenuReady}" aria-labelledby="dropdownKebabRight_{{$index}}" >
                <li ng-repeat="menuAction in $ctrl.menuActions"
                    ng-if="menuAction.isVisible !== false"
                    role="{{menuAction.isSeparator === true ? 'separator' : 'menuitem'}}"
                    ng-class="{'divider': (menuAction.isSeparator === true), 'disabled': (menuAction.isDisabled === true)}">
                  <a ng-if="menuAction.isSeparator !== true" title="{{menuAction.title}}" ng-click="$ctrl.handleMenuAction(menuAction, item)">
                    {{menuAction.name}}
                  </a>
                </li>
              </ul>
            </div>
          </div>
          <div pf-transclude="parent"
               class="list-view-pf-main-info"
               ng-click="$ctrl.itemClick($event, item)"
               ng-dblclick="$ctrl.dblClick($event, item)">
          </div>
        </div>
      </div>
      <div class="list-group-item-container container-fluid" ng-transclude="expandedContent" ng-if="$ctrl.config.useExpandingRows && item.isExpanded"></div>
    </div>
    <pf-pagination ng-if="$ctrl.pageConfig.showPaginationControls && $ctrl.config.itemsAvailable === true"
      page-size="$ctrl.pageConfig.pageSize"
      page-size-increments="$ctrl.pageConfig.pageSizeIncrements"
      page-number="$ctrl.pageConfig.pageNumber"
      num-total-items="$ctrl.pageConfig.numTotalItems">
    </pf-pagination>
  </div>
  <pf-empty-state ng-if="$ctrl.config.itemsAvailable === false" config="$ctrl.emptyStateConfig" action-buttons="$ctrl.emptyStateActionButtons"></pf-empty-state>
</span>