@@ -106,7 +106,7 @@ angular.module( 'patternfly.utils', ['ui.bootstrap'] );
106106 * Views module for patternfly.
107107 *
108108 */
109- angular . module ( 'patternfly.views' , [ 'patternfly.utils' , 'patternfly.filters' , 'patternfly.sort' ] ) ;
109+ angular . module ( 'patternfly.views' , [ 'patternfly.utils' , 'patternfly.filters' , 'patternfly.sort' , 'patternfly.charts' ] ) ;
110110; /**
111111 * @name PatternFly Wizard
112112 *
@@ -7977,6 +7977,7 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
79777977 * Pass a customScope object containing any scope variables/functions you need to access from the transcluded source, access these
79787978 * via 'customScope' in your transcluded hmtl.
79797979 * <br><br>
7980+ * If using expanding rows, use a list-expanded-content element containing expandable content for each row. For each item in the items array, the expansion can be disabled by setting disableRowExpansion to true on the item.
79807981 *
79817982 * @param {array } items Array of items to display in the list view. If an item in the array has a 'rowClass' field, the value of this field will be used as a class specified on the row (list-group-item).
79827983 * @param {object } config Configuration settings for the list view:
@@ -7985,6 +7986,7 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
79857986 * <li>.selectItems - (boolean) Allow row selection, default is false
79867987 * <li>.dlbClick - (boolean) Handle double clicking (item remains selected on a double click). Default is false.
79877988 * <li>.multiSelect - (boolean) Allow multiple row selections, selectItems must also be set, not applicable when dblClick is true. Default is false
7989+ * <li>.useExpandingRows - (boolean) Allow row expansion for each list item.
79887990 * <li>.selectionMatchProp - (string) Property of the items to use for determining matching, default is 'uuid'
79897991 * <li>.selectedItems - (array) Current set of selected items
79907992 * <li>.checkDisabled - ( function(item) ) Function to call to determine if an item is disabled, default is none
@@ -8046,6 +8048,36 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
80468048 {{item.state}}
80478049 </div>
80488050 </div>
8051+ <list-expanded-content>
8052+ {{item.city}}
8053+ <div class="row">
8054+ <div class="col-md-3">
8055+ <div pf-donut-pct-chart config="exampleChartConfig" data="{'used': '350','total': '1000'}" center-label="'Percent Used'"></div>
8056+ </div>
8057+ <div class="col-md-9">
8058+ <dl class="dl-horizontal">
8059+ <dt>Host Name</dt>
8060+ <dd>Hostceph1</dd>
8061+ <dt>Device Path</dt>
8062+ <dd>/dev/disk/pci-0000.05:00-sas-0.2-part1</dd>
8063+ <dt>Time</dt>
8064+ <dd>January 15, 2016 10:45:11 AM</dd>
8065+ <dt>Severity</dt>
8066+ <dd>Warning</dd>
8067+ <dt>Cluster</dt>
8068+ <dd>Cluster 1</dd>
8069+ </dl>
8070+ <p>
8071+ Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
8072+ tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
8073+ quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
8074+ consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
8075+ cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
8076+ proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
8077+ </p>
8078+ </div>
8079+ </div>
8080+ </list-expanded-content>
80498081 </div>
80508082 </div>
80518083 <hr class="col-md-12">
@@ -8084,6 +8116,9 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
80848116 <label class="checkbox-inline">
80858117 <input type="checkbox" ng-model="showDisabled">Show Disabled Rows</input>
80868118 </label>
8119+ <label class="checkbox-inline">
8120+ <input type="checkbox" ng-model="config.useExpandingRows">Show Expanding Rows</input>
8121+ </label>
80878122 </div>
80888123 </form>
80898124 </div>
@@ -8131,6 +8166,15 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
81318166 }
81328167 };
81338168
8169+ $scope.exampleChartConfig = {
8170+ 'chartId': 'pctChart',
8171+ 'units': 'GB',
8172+ 'thresholds': {
8173+ 'warning':'60',
8174+ 'error':'90'
8175+ }
8176+ };
8177+
81348178 $scope.selectType = 'checkbox';
81358179 $scope.updateSelectionType = function() {
81368180 if ($scope.selectType === 'checkbox') {
@@ -8155,6 +8199,7 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
81558199 selectedItems: [],
81568200 checkDisabled: checkDisabledItem,
81578201 showSelectBox: true,
8202+ useExpandingRows: false,
81588203 onSelect: handleSelect,
81598204 onSelectionChange: handleSelectionChange,
81608205 onCheckBoxChange: handleCheckBoxChange,
@@ -8173,7 +8218,8 @@ angular.module('patternfly.views').directive('pfCardView', ["pfUtils", function
81738218 name: "John Smith",
81748219 address: "415 East Main Street",
81758220 city: "Norfolk",
8176- state: "Virginia"
8221+ state: "Virginia",
8222+ disableRowExpansion: true
81778223 },
81788224 {
81798225 name: "Frank Livingston",
@@ -8323,7 +8369,9 @@ angular.module('patternfly.views').directive('pfListView', ["$timeout", "$window
83238369 updateActionForItemFn : '=?' ,
83248370 customScope : '=?'
83258371 } ,
8326- transclude : true ,
8372+ transclude : {
8373+ expandedContent : '?listExpandedContent'
8374+ } ,
83278375 templateUrl : 'views/listview/list-view.html' ,
83288376 controller :
83298377 [ "$scope" , "$element" , function ( $scope , $element ) {
@@ -8350,6 +8398,7 @@ angular.module('patternfly.views').directive('pfListView', ["$timeout", "$window
83508398 selectionMatchProp : 'uuid' ,
83518399 selectedItems : [ ] ,
83528400 checkDisabled : false ,
8401+ useExpandingRows : false ,
83538402 showSelectBox : true ,
83548403 onSelect : null ,
83558404 onSelectionChange : null ,
@@ -8412,6 +8461,10 @@ angular.module('patternfly.views').directive('pfListView', ["$timeout", "$window
84128461 return hideMenu ;
84138462 } ;
84148463
8464+ $scope . toggleItemExpansion = function ( item ) {
8465+ item . isExpanded = ! item . isExpanded ;
8466+ } ;
8467+
84158468 $scope . setupActions = function ( item , event ) {
84168469 // Ignore disabled items completely
84178470 if ( $scope . checkDisabled ( item ) ) {
@@ -10047,7 +10100,7 @@ angular.module('patternfly.wizard').directive('pfWizardSubstep', function () {
1004710100
1004810101
1004910102 $templateCache . put ( 'views/listview/list-view.html' ,
10050- "<div class=list-view-pf><div class=\"list-group-item {{item.rowClass}}\" ng-repeat=\"item in items track by $index\" ng-class=\"{'pf-selectable': selectItems, 'active': isSelected(item), 'disabled': checkDisabled(item)}\"><div class=list-view-pf-checkbox ng-if=config.showSelectBox><input type=checkbox value=item.selected ng-model=item.selected ng-disabled=checkDisabled(item) ng-change=\"checkBoxChange(item)\"></div><div class=list-view-pf-actions ng-if=\"(actionButtons && actionButtons.length > 0) || (menuActions && menuActions.length > 0)\"><button class=\"btn btn-default {{actionButton.class}}\" ng-repeat=\"actionButton in actionButtons\" title={{actionButton.title}} ng-class=\"{'disabled' : checkDisabled(item) || !enableButtonForItem(actionButton, item)}\" ng-click=\"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 class=\"{{dropdownClass}} pull-right dropdown-kebab-pf {{getMenuClassForItem(item)}} {{hideMenuForItem(item) ? 'invisible' : ''}}\" id=kebab_{{$index}} ng-if=\"menuActions && menuActions.length > 0\"><button class=\"btn btn-link dropdown-toggle\" type=button id=dropdownKebabRight_{{$index}} ng-class=\"{'disabled': checkDisabled(item)}\" ng-click=\"setupActions(item, $event)\" data-toggle=dropdown aria-haspopup=true aria-expanded=true><span class=\"fa fa-ellipsis-v\"></span></button><ul class=\"dropdown-menu dropdown-menu-right {{$index}}\" aria-labelledby=dropdownKebabRight_{{$index}}><li ng-repeat=\"menuAction in 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=\"handleMenuAction(menuAction, item)\">{{menuAction.name}}</a></li></ul></div></div><div pf-transclude=parent class=list-view-pf-main-info ng-click=\"itemClick($event, item)\" ng-dblclick=\"dblClick($event, item)\"></div></div></div>"
10103+ "<div class=\"list-group list-view-pf\"><div class=\"list-group-item {{item.rowClass}}\" ng-repeat=\"item in items track by $index\" ng-class=\"{'pf-selectable': selectItems, 'active': isSelected(item), 'disabled': checkDisabled(item), 'list-view-pf-expand-active': item.isExpanded}\"><div class=list-group-item-header><div class=list-view-pf-expand ng-if=config.useExpandingRows><span class=\"fa fa-angle-right\" ng-show=!item.disableRowExpansion ng-click=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=config.showSelectBox><input type=checkbox value=item.selected ng-model=item.selected ng-disabled=checkDisabled(item) ng-change=\"checkBoxChange(item)\"></div><div class=list-view-pf-actions ng-if=\"(actionButtons && actionButtons.length > 0) || (menuActions && menuActions.length > 0)\"><button class=\"btn btn-default {{actionButton.class}}\" ng-repeat=\"actionButton in actionButtons\" title={{actionButton.title}} ng-class=\"{'disabled' : checkDisabled(item) || !enableButtonForItem(actionButton, item)}\" ng-click=\"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 class=\"{{dropdownClass}} pull-right dropdown-kebab-pf {{getMenuClassForItem(item)}} {{hideMenuForItem(item) ? 'invisible' : ''}}\" id=kebab_{{$index}} ng-if=\"menuActions && menuActions.length > 0\"><button class=\"btn btn-link dropdown-toggle\" type=button id=dropdownKebabRight_{{$index}} ng-class=\"{'disabled': checkDisabled(item)}\" ng-click=\"setupActions(item, $event)\" data-toggle=dropdown aria-haspopup=true aria-expanded=true><span class=\"fa fa-ellipsis-v\"></span></button><ul class=\"dropdown-menu dropdown-menu-right {{$index}}\" aria-labelledby=dropdownKebabRight_{{$index}}><li ng-repeat=\"menuAction in 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=\"handleMenuAction(menuAction, item)\">{{menuAction.name}}</a></li></ul></div></div><div pf-transclude=parent class=list-view-pf-main-info ng-click=\"itemClick($event, item)\" ng-dblclick=\"dblClick($event, item)\"></div></div><div class=\"list-group-item-container container-fluid\" ng-transclude=expandedContent ng-if=\"config.useExpandingRows && item.isExpanded\"></div></div></div>"
1005110104 ) ;
1005210105
1005310106} ] ) ;
0 commit comments