UNPKG

@patternfly/patternfly

Version:

Assets, source, tooling, and content for PatternFly 4

863 lines (824 loc) • 53.8 kB
--- id: Data list section: components cssPrefix: pf-c-data-list --- ## Examples ### Basic ```html <ul class="pf-c-data-list" role="list" aria-label="Basic data list example" id="data-list-basic"> <li class="pf-c-data-list__item" aria-labelledby="data-list-basic-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-basic-item1">Primary content</span> </div> <div class="pf-c-data-list__cell">Secondary content</div> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-basic-item2"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-no-fill"> <span id="data-list-basic-item2">Secondary content (pf-m-no-fill)</span> </div> <div class="pf-c-data-list__cell pf-m-no-fill pf-m-align-right">Secondary content (pf-m-align-right pf-m-no-fill)</div> </div> </div> </li> </ul> ``` ### Accessibility | Attribute | Applied to | Outcome | | ----------------- | -------------------------------------------------- | ------------------------------------------------------------------- | | `role="list"` | `.pf-c-data-list` | Indicates that the data list is a list. **Required** | | `aria-label` | `.pf-c-data-list` | Provides an accessible name for the data list. **Required** | | `aria-labelledby` | `.pf-c-data-list__item` | Provides an accessible description for data list item. **Required** | | `id` | `.pf-c-data-list__cell`, `.pf-c-data-list__cell *` | Provides a reference for data list item description. **Required** | ### Usage | Class | Applied to | Outcome | | ------------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------- | | `.pf-c-data-list` | `<ul>` | Initiates a data list. **Required** | | `.pf-c-data-list__item` | `<li>` | Initiates a data list item. **Required** | | `.pf-c-data-list__item-row` | `<div>` | Initiates a data list item row. **Required** | | `.pf-c-data-list__item-content` | `<div>` | Initiates a container for data list content. **Required** | | `.pf-c-data-list__cell` | `*` | Initiates a data list content cell. **Required** | | `.pf-m-align-left` | `.pf-c-data-list__cell` | Modifies a data list cell to not grow and align-left when its the first data-list\_\_cell element. | | `.pf-m-no-fill` | `.pf-c-data-list__cell` | Modifies a data list cell to not fill the available horizontal space. | | `.pf-m-align-right` | `.pf-c-data-list__cell` | Modifies a data list cell to align-right. | ### With headings ```html <ul class="pf-c-data-list" role="list" aria-label="With headings data list example" id="data-list-with-headings"> <li class="pf-c-data-list__item" aria-labelledby="data-list-with-headings-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <h2 id="data-list-with-headings-item1">Primary content</h2> </div> <div class="pf-c-data-list__cell">Secondary content</div> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-with-headings-item2"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-no-fill"> <h2 id="data-list-with-headings-item2">Secondary content (pf-m-no-fill)</h2> </div> <div class="pf-c-data-list__cell pf-m-no-fill pf-m-align-right">Secondary content (pf-m-align-right pf-m-no-fill)</div> </div> </div> </li> </ul> ``` ### Usage When a list item includes more than one block of content, it can be difficult for some screen reader users to discern where one list item ends and the next one begins. A simple way to provide better separation of list items is to define the primary content section as a heading. Headings are useful for indicating a new section of contents, but also provide an easy way for screen reader users to navigate to specific sections on the page. The heading level should be based on the context in which the DataList component is being used. For example, if the heading for the section that contains the DataList is a level 3, then `h4` elements should be used in the DataList list items. ### Checkboxes, actions, and additional cells ```html <ul class="pf-c-data-list" role="list" aria-label="Checkbox and action data list example" id="data-list-checkboxes-actions-addl-cells"> <li class="pf-c-data-list__item" aria-labelledby="data-list-checkboxes-actions-addl-cells-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-checkboxes-actions-addl-cells-check-action-check1" aria-labelledby="data-list-checkboxes-actions-addl-cells-item1" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-checkboxes-actions-addl-cells-item1">Primary content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>Tertiary Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>More Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>More Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-checkboxes-actions-addl-cells-action1-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-checkboxes-actions-addl-cells-action1-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-checkboxes-actions-addl-cells-item2"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-checkboxes-actions-addl-cells-check-action-check2" aria-labelledby="data-list-checkboxes-actions-addl-cells-item2" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-checkboxes-actions-addl-cells-item2">Primary content - lorem ipsum</span>dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action pf-m-hidden-on-lg"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-checkboxes-actions-addl-cells-action2-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-checkboxes-actions-addl-cells-action2-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> <div class="pf-c-data-list__item-action pf-m-hidden pf-m-visible-on-lg"> <button class="pf-c-button pf-m-primary" type="button">Primary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-checkboxes-actions-addl-cells-item3"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-checkboxes-actions-addl-cells-check-action-check3" aria-labelledby="data-list-checkboxes-actions-addl-cells-item3" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-checkboxes-actions-addl-cells-item3">Primary content - lorem ipsum</span>dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action pf-m-hidden-on-xl"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-checkboxes-actions-addl-cells-action3-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-checkboxes-actions-addl-cells-action3-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> <div class="pf-c-data-list__item-action pf-m-hidden pf-m-visible-on-xl"> <button class="pf-c-button pf-m-primary" type="button">Primary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> </div> </div> </li> </ul> ``` ### Accessibility | Attribute | Applied to | Outcome | | --------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- | | `aria-label="[descriptive text]"` | `.pf-c-data-list__action` > `.pf-c-button` | Provides an accessible label buttons. **Required** | | `aria-labelledby="{title_cell_id}"` | `.pf-c-data-list__check` > `.pf-c-check__input` | Creates an accessible label for the checkbox based on the title cell. **Required** | | `aria-labelledby="{title_cell_id} {data_list_action_id}"` | `.pf-c-data-list__action` > `.pf-c-button` | Creates an accessible label for the action button using the title cell and button label **Required** | | `id` | `.pf-c-data-list__cell > *`, `.pf-c-data-list__check` > `.pf-c-check__input`, `.pf-c-data-list__action` > `.pf-c-button` | Provides a reference for interactive elements. **Required** | ### Usage | Class | Applied to | Outcome | | --------------------------------- | ------------------------------ | -------------------------------------------------------------------------------------------------------------- | | `.pf-c-data-list__item-control` | `<div>` | Initiates a container for data list controls. For example, add `.pf-c-data-list__check` here. **Required** | | `.pf-c-data-list__item-action` | `<div>` | Initiates a container for the data list actions. For example, add `.pf-c-data-list__action` here. **Required** | | `.pf-c-data-list__check` | `<div>` | Initiates a data list check cell. **Required** | | `.pf-c-data-list__action` | `<div>` | Initiates a data list action button cell. **Required** | | `.pf-m-hidden{-on-[breakpoint]}` | `.pf-c-data-list__item-action` | Hides an actions container at a given breakpoint, or hides it at all breakpoints with `.pf-m-hidden`. | | `.pf-m-visible{-on-[breakpoint]}` | `.pf-c-data-list__item-action` | Shows an actions container at a given breakpoint. | ### Expandable ```html <ul class="pf-c-data-list" role="list" aria-label="Expandable data list example" id="data-list-expandable"> <li class="pf-c-data-list__item pf-m-expanded" aria-labelledby="data-list-expandable-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-expandable-toggle1 data-list-expandable-item1" id="data-list-expandable-toggle1" aria-label="Toggle details for" aria-expanded="true" aria-controls="data-list-expandable-content1"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-icon"> <i class="fas fa-code-branch" aria-hidden="true"></i> </div> <div class="pf-c-data-list__cell"> <div id="data-list-expandable-item1">Primary content</div> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> <a href="#">link</a> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-expandable-action1-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-expandable-action1-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> <section class="pf-c-data-list__expandable-content" id="data-list-expandable-content1" aria-label="Primary content details"> <div class="pf-c-data-list__expandable-content-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> </section> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-expandable-item2"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-expandable-toggle2 data-list-expandable-item2" id="data-list-expandable-toggle2" aria-label="Toggle details for" aria-expanded="false" aria-controls="data-list-expandable-content2"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-icon"> <i class="fas fa-code-branch" aria-hidden="true"></i> </div> <div class="pf-c-data-list__cell"> <div id="data-list-expandable-item2">Secondary content</div> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet.</span> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-expandable-action2-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-expandable-action2-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> <section class="pf-c-data-list__expandable-content" id="data-list-expandable-content2" aria-label="Secondary content details" hidden> <div class="pf-c-data-list__expandable-content-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> </section> </li> <li class="pf-c-data-list__item pf-m-expanded" aria-labelledby="data-list-expandable-item3"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-expandable-toggle3 data-list-expandable-item3" id="data-list-expandable-toggle3" aria-label="Toggle details for" aria-expanded="true" aria-controls="data-list-expandable-content3"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-icon"> <i class="fas fa-code-branch" aria-hidden="true"></i> </div> <div class="pf-c-data-list__cell"> <div id="data-list-expandable-item3">Tertiary content</div> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet.</span> </div> <div class="pf-c-data-list__cell"> <span>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</span> </div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-expandable-action3-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-expandable-action3-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> <section class="pf-c-data-list__expandable-content" id="data-list-expandable-content3" aria-label="Tertiary content details"> <div class="pf-c-data-list__expandable-content-body pf-m-no-padding">This expanded section has no padding.</div> </section> </li> </ul> ``` ### Compact ```html <ul class="pf-c-data-list pf-m-compact" role="list" aria-label="Compact data list example" id="data-list-compact"> <li class="pf-c-data-list__item" aria-labelledby="data-list-compact-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-compact-check-action-check1" aria-labelledby="data-list-compact-item1" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-compact-item1">Primary content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>Tertiary Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>More Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell"> <span>More Content</span>Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-compact-action1-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-compact-action1-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-compact-item2"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-compact-check-action-check2" aria-labelledby="data-list-compact-item2" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-compact-item2">Primary content - lorem ipsum</span>dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action pf-m-hidden-on-lg"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-compact-action2-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-compact-action2-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> <div class="pf-c-data-list__item-action pf-m-hidden pf-m-visible-on-lg"> <button class="pf-c-button pf-m-primary" type="button">Primary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> </div> </div> </li> <li class="pf-c-data-list__item" aria-labelledby="data-list-compact-item3"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-compact-check-action-check3" aria-labelledby="data-list-compact-item3" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-compact-item3">Primary content - lorem ipsum</span>dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> <div class="pf-c-data-list__cell">Secondary content. Dolor sit amet, consectetur adipisicing elit, sed do eiusmod.</div> </div> <div class="pf-c-data-list__item-action pf-m-hidden-on-xl"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-compact-action3-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-compact-action3-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> <div class="pf-c-data-list__item-action pf-m-hidden pf-m-visible-on-xl"> <button class="pf-c-button pf-m-primary" type="button">Primary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> <button class="pf-c-button pf-m-secondary" type="button">Secondary</button> </div> </div> </li> </ul> ``` ### Accessibility | Attribute | Applied to | Outcome | | ----------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------------------- | | `aria-expanded="true"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Indicates that the expandable content is visible. **Required** | | `hidden` | `.pf-c-data-list__expandable-content` | Indicates that the expandable content is hidden. **Required** | | `aria-label="[descriptive text]"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Provides an accessible name for toggle button. **Required** | | `aria-labelledby="{title_cell_id} {button_id}"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Establishes relationship between aria-label text and toggle button. **Required** | | `id="{button_id}"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Provides a reference for toggle button description. **Required** | | `aria-controls="[id of element controlled]"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Identifies the section controlled by the toggle button. **Required** | ### Usage | Class | Applied to | Outcome | | ------------------------------------------ | ------------------------------------------ | ---------------------------------------------------------------------------------------------------------------- | | `.pf-c-data-list__item-control` | `<div>` | Initiates a container for data list controls. For example, add `.pf-c-data-list__toggle` here. **Required** | | `.pf-c-data-list__toggle` | `<div>` | Initiates a toggle button. | | `.pf-c-data-list__toggle-icon` | `<span>` | Initiates a toggle icon. | | `.pf-c-data-list__expandable-content` | `<div>` | Initiates an expandable content container. | | `.pf-c-data-list__expandable-content-body` | `<div>` | Initiates an expandable content container body. **Required** when `.pf-c-data-list__expandable-content` is used. | | `.pf-m-expanded` | `.pf-c-data-list__item` | Modifies for expanded state. | | `.pf-m-compact` | `.pf-c-data-list` | Modifies for compact variation. | | `.pf-m-no-padding` | `.pf-c-data-list__expandable-content-body` | Removes padding for the expandable content body. | | `.pf-m-icon` | `.pf-c-data-list__cell` | Modifies a data list cell to not grow and align-left when its the first data-list\_\_cell element. | ### Modifiers ```html <h2 class="Preview__section-title">Default fitting - example 1</h2> <ul class="pf-c-data-list" role="list" aria-label="Width modifier data list example 1" id="data-list-default-fitting"> <li class="pf-c-data-list__item" aria-labelledby="data-list-default-fitting-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-default-fittingcheck-action-check1" aria-labelledby="data-list-default-fitting-item1" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <div class="Preview__placeholder"> <b id="data-list-default-fitting-item1">default</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div class="pf-c-data-list__cell"> <div class="Preview__placeholder"> <b>default</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</p> </div> </div> </div> </div> </li> </ul> <h2 class="Preview__section-title">Flex modifiers - example 2</h2> <ul class="pf-c-data-list" role="list" aria-label="Width modifier data list example 2" id="data-list-flex-modifiers"> <li class="pf-c-data-list__item" aria-labelledby="data-list-flex-modifiers-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-flex-modifierscheck-action-check1" aria-labelledby="data-list-flex-modifiers-item1" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-flex-2"> <div class="Preview__placeholder"> <b id="data-list-flex-modifiers-item1">.pf-m-flex-2</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.</p> </div> </div> <div class="pf-c-data-list__cell pf-m-flex-4"> <div class="Preview__placeholder"> <b>.pf-m-flex-4</b> <p>Lorem ipsum dolor sit amet.</p> </div> </div> <div class="pf-c-data-list__cell pf-m-flex-6"> <div class="Preview__placeholder"> <b>.pf-m-flex-6</b> <p>Lorem ipsum dolor sit amet.</p> </div> </div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-flex-modifiers-action1-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-flex-modifiers-action1-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> </li> </ul> <h2 class="Preview__section-title">Flex modifiers - example 3</h2> <ul class="pf-c-data-list" role="list" aria-label="Width modifier data list example 3" id="data-list-flex-modifiers-2"> <li class="pf-c-data-list__item pf-m-expanded" aria-labelledby="data-list-flex-modifiers-2-item1"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-flex-modifiers-2-toggle1 data-list-flex-modifiers-2-item1" id="data-list-flex-modifiers-2-toggle1" aria-label="Toggle details for" aria-expanded="true" aria-controls="data-list-flex-modifiers-2-content1"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> </div> <div class="pf-c-data-list__check"> <input type="checkbox" name="data-list-flex-modifiers-2check-action-check1" aria-labelledby="data-list-flex-modifiers-2-item1" /> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell pf-m-flex-5"> <div class="Preview__placeholder"> <b id="data-list-flex-modifiers-2-item1">.pf-m-flex-5</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div class="pf-c-data-list__cell pf-m-flex-2"> <div class="Preview__placeholder"> <b>.pf-m-flex-2</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div class="pf-c-data-list__cell pf-m-flex-3"> <div class="Preview__placeholder"> <b>.pf-m-flex-3</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> <div class="pf-c-data-list__cell pf-m-flex-3"> <div class="Preview__placeholder"> <b>.pf-m-flex-3</b> <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit.</p> </div> </div> </div> <div class="pf-c-data-list__item-action"> <div class="pf-c-data-list__action"> <div class="pf-c-dropdown"> <button class="pf-c-dropdown__toggle pf-m-plain" type="button" id="data-list-flex-modifiers-2-action1-button" aria-expanded="false" aria-label="Actions"> <i class="fas fa-ellipsis-v" aria-hidden="true"></i> </button> <ul class="pf-c-dropdown__menu pf-m-align-right" aria-labelledby="data-list-flex-modifiers-2-action1-button" hidden> <li> <a class="pf-c-dropdown__menu-item" href="#">Link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button">Action</button> </li> <li> <a class="pf-c-dropdown__menu-item pf-m-disabled" href="#" aria-disabled="true" tabindex="-1">Disabled link</a> </li> <li> <button class="pf-c-dropdown__menu-item" type="button" disabled>Disabled action</button> </li> <li class="pf-c-divider" role="separator"></li> <li> <a class="pf-c-dropdown__menu-item" href="#">Separated link</a> </li> </ul> </div> </div> </div> </div> <section class="pf-c-data-list__expandable-content" id="data-list-flex-modifiers-2-content1" aria-label="Primary content details"> <div class="pf-c-data-list__expandable-content-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> </section> </li> </ul> ``` ### Accessibility | Attribute | Applied to | Outcome | | -------------------------------------------- | ------------------------------------------ | -------------------------------------------------------------------- | | `aria-controls="[id of element controlled]"` | `.pf-c-data-list__toggle` > `.pf-c-button` | Identifies the section controlled by the toggle button. **Required** | ### Usage | Class | Applied to | Outcome | | ---------------------------- | ----------------------- | ------------------------------------------------------------- | | `.pf-m-flex-{1, 2, 3, 4, 5}` | `.pf-c-data-list__cell` | Percentage based modifier for `.pf-c-data-list__cell` widths. | ### Selectable rows ```html <ul class="pf-c-data-list" role="list" aria-label="Selectable rows data list example" id="data-list-selectable-rows"> <li class="pf-c-data-list__item pf-m-selectable" aria-labelledby="data-list-selectable-rows-item1" tabindex="0"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-selectable-rows-item1">Primary content</span> </div> </div> </div> </li> <li class="pf-c-data-list__item pf-m-selectable pf-m-selected" aria-labelledby="data-list-selectable-rows-item2" tabindex="0"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-selectable-rows-item2">Secondary content (selected)</span> </div> </div> </div> </li> <li class="pf-c-data-list__item pf-m-selectable" aria-labelledby="data-list-selectable-rows-item3" tabindex="0"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-selectable-rows-item3">Tertiary content</span> </div> </div> </div> </li> </ul> ``` ### Accessibility | Attribute | Applied to | Outcome | | -------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------- | | `tabindex="0"` | `.pf-c-data-list__item.pf-m-selectable` | Inserts the selectable row into the tab order of the page so that it is focusable. **Required** | ### Usage | Class | Applied to | Outcome | | ------------------ | ----------------------- | --------------------------------------------------- | | `.pf-m-selectable` | `.pf-c-data-list__item` | Modifies a data list item so that it is selectable. | | `.pf-m-selected` | `.pf-c-data-list__item` | Modifies a data list item for the selected state. | ### Selectable expandable rows ```html <ul class="pf-c-data-list" role="list" aria-label="Selectable, expandable data list example" id="data-list-selectable-expandable-rows"> <li class="pf-c-data-list__item pf-m-selectable pf-m-selected pf-m-expanded" aria-labelledby="data-list-selectable-expandable-rows-item1" tabindex="0"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-selectable-expandable-rows-toggle1 data-list-selectable-expandable-rows-item1" id="data-list-selectable-expandable-rows-toggle1" aria-label="Toggle details for" aria-expanded="true" aria-controls="data-list-selectable-expandable-rows-content1"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i> </div> </button> </div> </div> <div class="pf-c-data-list__item-content"> <div class="pf-c-data-list__cell"> <span id="data-list-selectable-expandable-rows-item1">Primary content (selected, expanded)</span> </div> </div> </div> <section class="pf-c-data-list__expandable-content" id="data-list-selectable-expandable-rows-content1" aria-label="Primary content details"> <div class="pf-c-data-list__expandable-content-body">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</div> </section> </li> <li class="pf-c-data-list__item pf-m-selectable" aria-labelledby="data-list-selectable-expandable-rows-item2" tabindex="0"> <div class="pf-c-data-list__item-row"> <div class="pf-c-data-list__item-control"> <div class="pf-c-data-list__toggle"> <button class="pf-c-button pf-m-plain" type="button" aria-labelledby="data-list-selectable-expandable-rows-toggle2 data-list-selectable-expandable-rows-item2" id="data-list-selectable-expandable-rows-toggle2" aria-label="Toggle details for" aria-expanded="false" aria-controls="data-list-selectable-expandable-rows-content2"> <div class="pf-c-data-list__toggle-icon"> <i class="fas fa-angle-right" aria-hidden="true"></i>