Tree List View
Tree List View
The Tree List View is used to display hierarchical data (parent-child relationships) in an easy to understand, clean view.
A Tree List View displays data in rows. Each row displays the same set of attributes, although not necessarily displayed in columns, and the attributes may wrap. The Tree List View may omit column headers and other visual noise, making it a cleaner visualization than a data table.
Jump to Standard Tree List View, Tree List View with Single Child Expansion or Tree List View with Multiple Child Expansion
Standard Tree List View
Tree List View with Single Child Expansion
Use a Tree List View with Single Child expansion when you want to display child elements in a list. This is useful when you want to allow users to view an element that may be linked to another item, or when you want to quickly see the relationship between two items. Single Child expansion and Multi-Child expansion are two variants of this pattern.
Tree List View with Multiple Child Expansion
Use a Tree List View with Multi-Child expansion when you want to display multiple child elements in a list. This will give you an expanded view of the relationship between elements.
Optional: Tree List View with Checkboxes
Use a Tree List View with checkboxes when you want the ability to expand or collapse multiple parent/child elements at once.
Tree List View
Standard Tree List View
- Show/Hide Child Elements:
- Click the element’s caret to expand the closed element and show any child elements.
- Click the element’s caret to collapse the open element and hide any child elements.
- Row:
- Clicking on the row will be expand it, displaying any child elements.
- Each item in the Tree List View should have the same layout. Even if child elements do not have all of the same information as their parent elements, they should be laid out in the same manner.
- When including titles, make the title bold, rather than appending a colon between it and a description.
- Links may be displayed only on the item title. Clicking this link can do one of two things, depending on your usage:
- If you have a Detail Panel, clicking the row will show that Detail Panel with details of the selected row.
- If you do not have a Detail Panel, it will navigate per standard link procedures. - Responsiveness:
- When the viewport is decreased, the content should wrap, expanding the row height. If Titles and/or Descriptions are truncated, they must include tooltips.
- Toolbar:
As the Tree List View has the ability to expand or collapse multiple elements, the toolbar has been updated to support expansion and collapsing of all elements via a single action.
- Click the action ‘Expand All’ to expand all closed elements, showing all child elements in the list. This should not affect any currently expanded elements.
- Click the action ‘Collapse All’ to collapse all open elements. This should not affect any current collapsed elements.
- Hovering Rows:
- Hovering over any row will highlight it. Clicking the caret will open the next set of child elements, while keeping previously opened parent elements open.
Tree List View with Single Child Expansion
- Show Child Elements:
- Hovering over the row highlights it.
- Clicking on either the caret icon or row body will show all of the child elements associated with that particular row. Once a row is opened, clicking on the caret or row body will close that element.
Tree List View with Multi-Child Expansion
The Tree List View with Multi-Child Expansion performs similarly to the Single Child Tree List View.
- Show Child Elements:
- When clicking the caret, if there are child elements of the initial row’s children, those elements are not opened.
- Hovering over another expandable attribute will highlight it.
- Show Multiple Child Elements:
- If an element has already been expanded, clicking the caret on the child element will open the next set of child elements, while keeping previously opened elements (now parents) open with their highlight and active border.
Optional: Tree List View with Checkboxes
- Checkbox:
- If desired, checkboxes can be added to the Tree List View. They will be placed between the expansion caret and the pipe, and will allow for multi-selections in accordance with the toolbar.
- Select Row(s):
- Click on the checkbox to select multiple rows in order to perform bulk actions on those rows simultaneously. Selecting a checkbox activates and highlights the row.
Additional Notes about Behavior
- Recommendations: We recommend that you use this pattern to go six layers deep. Any more than that will exceed the design expectations and cause rendering issues.
- Empty State: If no items exist, display an Empty State page. See the Empty State pattern for more details. If there are no items to display as the result of a null filter result, see the Filter pattern for more information about how to display this.
- Vertical Scroll: Use a vertical scrollbar as needed. A horizontal scrollbar should NOT be used. Instead, the page containing the Tree List View should be responsive.
- Pagination: The Tree List View can also support pagination. See Pagination for more details.
- View Selector: If alternate views are supported, a View Selector will be displayed in the top right corner. This will allow the user to switch to another view.
What’s not covered in the current design:
- Drag and drop.
- View Angular PatternFly Example
- View PatternFly NG Example
- View PatternFly React Example
PatternFly Core Example
Jump to Tree List View - Single Child Expansion, Tree List View - Multiple Child Expansion
Tree List View - Single Child Expansion
<nav class="navbar navbar-default navbar-pf" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/"> <img src="/assets/img/brand.svg" alt="PatternFly Enterprise Application" /> </a> </div> <div class="collapse navbar-collapse navbar-collapse-1"> <ul class="nav navbar-nav navbar-utility"> <li class="dropdown"> <button class="btn btn-link nav-item-iconic" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span title="Help" class="fa pficon-help dropdown-title"></span> </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#0">Help</a></li> <li><a href="#0">About</a></li> </ul> </li> <li class="dropdown"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <span class="pficon pficon-user"></span> <span class="dropdown-title"> Brian Johnson <b class="caret"></b> </span> </button> <ul class="dropdown-menu"> <li> <a href="#0">Link</a> </li> <li> <a href="#0">Another link</a> </li> <li> <a href="#0">Something else here</a> </li> <li class="divider"></li> <li class="dropdown-submenu"> <a tabindex="-1" href="#0">More options</a> <ul class="dropdown-menu"> <li> <a href="#0">Link</a> </li> <li> <a href="#0">Another link</a> </li> <li> <a href="#0">Something else here</a> </li> <li class="divider"></li> <li class="dropdown-header">Nav header</li> <li> <a href="#0">Separated link</a> </li> <li class="divider"></li> <li> <a href="#0">One more separated link</a> </li> </ul> </li> <li class="divider"></li> <li> <a href="#0">One more separated link</a> </li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-primary"> </ul> </div> </nav> <div class="container-fluid"> <div class="row toolbar-pf"> <div class="col-sm-12"> <form class="toolbar-pf-actions"> <div class="form-group toolbar-pf-filter"> <label class="sr-only" for="filter">Name</label> <div class="input-group"> <div class="input-group-btn"> <button type="button" class="btn btn-default dropdown-toggle" id="input-filter-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Name <span class="caret"></span></button> <ul class="dropdown-menu"> <li class="selected"><a href="#">Name</a></li> <li><a href="#">Type</a></li> <li><a href="#">Color</a></li> </ul> </div><!-- /btn-group --> <input type="text" class="form-control" id="filter" placeholder="Filter By Name..."> </div><!-- /input-group --> </div> <div class="form-group"> <div class="dropdown btn-group"> <button type="button" class="btn btn-default dropdown-toggle" id="filter-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Name <span class="caret"></span></button> <ul class="dropdown-menu"> <li class="selected"><a href="#">Name</a></li> <li><a href="#">Type</a></li> <li><a href="#">Last Modified</a></li> </ul> </div> <button class="btn btn-link" type="button"> <span class="fa fa-sort-alpha-asc"></span> </button> </div> <div class="form-group"> <button class="btn btn-default" type="button">Action</button> <button class="btn btn-default" type="button">Action</button> <div class="dropdown btn-group dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="dropdownKebab" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu " aria-labelledby="dropdownKebab"> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="form-group"> <button class="btn btn-default" id="expand-tree" type="button">Expand All</button> <button class="btn btn-default" id="collapse-tree" type="button">Collapse All</button> </div> <div class="toolbar-pf-action-right"> <div class="form-group toolbar-pf-find"> <button class="btn btn-link btn-find" type="button"> <span class="fa fa-search"></span> </button> <div class="find-pf-dropdown-container"> <input type="text" class="form-control" id="find" placeholder="Find By Keyword..."> <div class="find-pf-buttons"> <span class="find-pf-nums">1 of 3</span> <button class="btn btn-link" type="button"> <span class="fa fa-angle-up"></span> </button> <button class="btn btn-link" type="button"> <span class="fa fa-angle-down"></span> </button> <button class="btn btn-link btn-find-close" type="button"> <span class="pficon pficon-close"></span> </button> </div> </div> </div> <div class="form-group toolbar-pf-view-selector"> <button class="btn btn-link "><i class="fa fa-th"></i></button> <button class="btn btn-link "><i class="fa fa-th-large"></i></button> <button class="btn btn-link "><i class="fa fa-th-list"></i></button> </div> </div> </form> <div class="row toolbar-pf-results"> <div class="col-sm-12"> <h5>40 Results</h5> <p>Active filters:</p> <ul class="list-inline"> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> </ul> <p><a href="#">Clear All Filters</a></p> </div><!-- /col --> </div><!-- /row --> </div><!-- /col --> </div><!-- /row --> </div><!-- /container --> <div class="container-fluid"> <div class="list-group tree-list-view-pf"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event One </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event Two </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event Three </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> </div> <script> $(document).ready(function () { // expand all child rows $('#expand-tree').on('click', function() { $('.tree-list-view-pf').find(".list-group-item-container").filter(function () { return $(this).children().length > 0; }).removeClass('hidden'); }); // collapse all child rows $('#collapse-tree').on('click', function() { $('.tree-list-view-pf').find(".list-group-item-container").addClass('hidden'); }); // row checkbox selection $('.tree-list-view-pf').on('change', ':checkbox', function (e) { if ($(this).is(':checked')) { $(this).closest('.list-group-item').addClass('active'); } else { $(this).closest('.list-group-item').removeClass('active'); } }); // toggle dropdown menu $('.list-view-pf-actions').on('show.bs.dropdown', function () { var $this = $(this); var $dropdown = $this.find('.dropdown'); var space = $(window).height() - $dropdown[0].getBoundingClientRect().top - $this.find('.dropdown-menu').outerHeight(true); $dropdown.toggleClass('dropup', space < 10); }); // click the list-view heading then expand a row $('.list-group-item-header').click(function (event) { if(!$(event.target).is('button, a, input, .fa-ellipsis-v')) { var $this = $(this); $this.find('.fa-angle-right').toggleClass('fa-angle-down'); var $itemContainer = $this.siblings('.list-group-item-container'); if ($itemContainer.children().length) { $itemContainer.toggleClass('hidden'); } } }); }); </script> </div>
Tree List View - multiple Child Expansion
<nav class="navbar navbar-default navbar-pf" role="navigation"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse-1"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="/"> <img src="/assets/img/brand.svg" alt="PatternFly Enterprise Application" /> </a> </div> <div class="collapse navbar-collapse navbar-collapse-1"> <ul class="nav navbar-nav navbar-utility"> <li class="dropdown"> <button class="btn btn-link nav-item-iconic" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span title="Help" class="fa pficon-help dropdown-title"></span> </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenu1"> <li><a href="#0">Help</a></li> <li><a href="#0">About</a></li> </ul> </li> <li class="dropdown"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <span class="pficon pficon-user"></span> <span class="dropdown-title"> Brian Johnson <b class="caret"></b> </span> </button> <ul class="dropdown-menu"> <li> <a href="#0">Link</a> </li> <li> <a href="#0">Another link</a> </li> <li> <a href="#0">Something else here</a> </li> <li class="divider"></li> <li class="dropdown-submenu"> <a tabindex="-1" href="#0">More options</a> <ul class="dropdown-menu"> <li> <a href="#0">Link</a> </li> <li> <a href="#0">Another link</a> </li> <li> <a href="#0">Something else here</a> </li> <li class="divider"></li> <li class="dropdown-header">Nav header</li> <li> <a href="#0">Separated link</a> </li> <li class="divider"></li> <li> <a href="#0">One more separated link</a> </li> </ul> </li> <li class="divider"></li> <li> <a href="#0">One more separated link</a> </li> </ul> </li> </ul> <ul class="nav navbar-nav navbar-primary"> </ul> </div> </nav> <div class="container-fluid"> <div class="row toolbar-pf"> <div class="col-sm-12"> <form class="toolbar-pf-actions"> <div class="form-group toolbar-pf-filter"> <label class="sr-only" for="filter">Name</label> <div class="input-group"> <div class="input-group-btn"> <button type="button" class="btn btn-default dropdown-toggle" id="input-filter-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Name <span class="caret"></span></button> <ul class="dropdown-menu"> <li class="selected"><a href="#">Name</a></li> <li><a href="#">Type</a></li> <li><a href="#">Color</a></li> </ul> </div><!-- /btn-group --> <input type="text" class="form-control" id="filter" placeholder="Filter By Name..."> </div><!-- /input-group --> </div> <div class="form-group"> <div class="dropdown btn-group"> <button type="button" class="btn btn-default dropdown-toggle" id="filter-button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Name <span class="caret"></span></button> <ul class="dropdown-menu"> <li class="selected"><a href="#">Name</a></li> <li><a href="#">Type</a></li> <li><a href="#">Last Modified</a></li> </ul> </div> <button class="btn btn-link" type="button"> <span class="fa fa-sort-alpha-asc"></span> </button> </div> <div class="form-group"> <button class="btn btn-default" type="button">Action</button> <button class="btn btn-default" type="button">Action</button> <div class="dropdown btn-group dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="dropdownKebab" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu " aria-labelledby="dropdownKebab"> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="form-group"> <button class="btn btn-default" id="expand-tree" type="button">Expand All</button> <button class="btn btn-default" id="collapse-tree" type="button">Collapse All</button> </div> <div class="toolbar-pf-action-right"> <div class="form-group toolbar-pf-find"> <button class="btn btn-link btn-find" type="button"> <span class="fa fa-search"></span> </button> <div class="find-pf-dropdown-container"> <input type="text" class="form-control" id="find" placeholder="Find By Keyword..."> <div class="find-pf-buttons"> <span class="find-pf-nums">1 of 3</span> <button class="btn btn-link" type="button"> <span class="fa fa-angle-up"></span> </button> <button class="btn btn-link" type="button"> <span class="fa fa-angle-down"></span> </button> <button class="btn btn-link btn-find-close" type="button"> <span class="pficon pficon-close"></span> </button> </div> </div> </div> <div class="form-group toolbar-pf-view-selector"> <button class="btn btn-link "><i class="fa fa-th"></i></button> <button class="btn btn-link "><i class="fa fa-th-large"></i></button> <button class="btn btn-link "><i class="fa fa-th-list"></i></button> </div> </div> </form> <div class="row toolbar-pf-results"> <div class="col-sm-12"> <h5>40 Results</h5> <p>Active filters:</p> <ul class="list-inline"> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> <li> <span class="label label-info"> Name: nameofthething <a href="#"><span class="fa fa-times"></span></a> </span> </li> </ul> <p><a href="#">Clear All Filters</a></p> </div><!-- /col --> </div><!-- /row --> </div><!-- /col --> </div><!-- /row --> </div><!-- /container --> <div class="container-fluid"> <div class="list-group tree-list-view-pf"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event One </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1.1.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 1-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event Two </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2.1.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 2-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event Three </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-expand"> <span class="fa fa-angle-right"></span> </div> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3.1.1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> </div> </div> <div class="list-group-item"> <div class="list-group-item-header"> <div class="list-view-pf-checkbox"> <input type="checkbox" autocomplete="off"> </div> <div class="list-view-pf-actions"> <button class="btn btn-default">Action</button> <div class="dropdown pull-right dropdown-kebab-pf"> <button class="btn btn-link dropdown-toggle" type="button" id="" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"> <span class="fa fa-ellipsis-v"></span> </button> <ul class="dropdown-menu dropdown-menu-right" aria-labelledby=""> <li><a href="#">Action</a></li> <li><a href="#">Another Action</a></li> <li><a href="#">Something Else Here</a></li> <li role="separator" class="divider"></li> <li><a href="#">Separated Link</a></li> </ul> </div> </div> <div class="list-view-pf-main-info"> <div class="list-view-pf-left"> <span class="fa fa-plane list-view-pf-icon-sm"></span> </div> <div class="list-view-pf-body"> <div class="list-view-pf-description"> <div class="list-group-item-heading"> Event 3-1 </div> <div class="list-group-item-text"> The following snippet of text is <a href="#">rendered as link text</a>. </div> </div> <div class="list-view-pf-additional-info"> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-screen"></span> <strong>8</strong> Hosts </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-cluster"></span> <strong>6</strong> Clusters </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-container-node"></span> <strong>10</strong> Nodes </div> <div class="list-view-pf-additional-info-item"> <span class="pficon pficon-image"></span> <strong>8</strong> Images </div> </div> </div> </div> </div> <div class="list-group-item-container container-fluid hidden"></div> </div> </div> </div> </div> <script> $(document).ready(function () { // expand all child rows $('#expand-tree').on('click', function() { $('.tree-list-view-pf').find(".list-group-item-container").filter(function () { return $(this).children().length > 0; }).removeClass('hidden'); }); // collapse all child rows $('#collapse-tree').on('click', function() { $('.tree-list-view-pf').find(".list-group-item-container").addClass('hidden'); }); // row checkbox selection $('.tree-list-view-pf').on('change', ':checkbox', function (e) { if ($(this).is(':checked')) { $(this).closest('.list-group-item').addClass('active'); } else { $(this).closest('.list-group-item').removeClass('active'); } }); // toggle dropdown menu $('.list-view-pf-actions').on('show.bs.dropdown', function () { var $this = $(this); var $dropdown = $this.find('.dropdown'); var space = $(window).height() - $dropdown[0].getBoundingClientRect().top - $this.find('.dropdown-menu').outerHeight(true); $dropdown.toggleClass('dropup', space < 10); }); // click the list-view heading then expand a row $('.list-group-item-header').click(function (event) { if(!$(event.target).is('button, a, input, .fa-ellipsis-v')) { var $this = $(this); $this.find('.fa-angle-right').toggleClass('fa-angle-down'); var $itemContainer = $this.siblings('.list-group-item-container'); if ($itemContainer.children().length) { $itemContainer.toggleClass('hidden'); } } }); }); </script> </div>