Class Finder

java.lang.Object
org.patternfly.component.BaseComponent<HTMLElement, Finder>
org.patternfly.extension.finder.Finder
All Implemented Interfaces:
Iterable<FinderColumn>, Attachable, ElementAttributeMethods<HTMLElement, Finder>, ElementClassListMethods<HTMLElement, Finder>, ElementConsumerMethods<HTMLElement, Finder>, ElementContainerMethods<HTMLElement, Finder>, ElementEventMethods<HTMLElement, Finder>, ElementIdMethods<HTMLElement, Finder>, ElementQueryMethods<HTMLElement>, HTMLElementAttributeMethods<HTMLElement, Finder>, HTMLElementDataMethods<HTMLElement, Finder>, HTMLElementStyleMethods<HTMLElement, Finder>, HTMLElementVisibilityMethods<HTMLElement, Finder>, IsElement<HTMLElement>, TypedBuilder<HTMLElement, Finder>, org.patternfly.component.Component, org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>, org.patternfly.core.OuiaSupport<HTMLElement, Finder>, org.patternfly.style.Modifiers.Bordered<HTMLElement, Finder>

public class Finder extends org.patternfly.component.BaseComponent<HTMLElement, Finder> implements Attachable, org.patternfly.style.Modifiers.Bordered<HTMLElement, Finder>, org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
A finder provides column-based hierarchical navigation inspired by the macOS Finder. Each column displays a list of items, and selecting an item populates the next column with its children or shows a preview.
  • Method Details

    • finder

      public static Finder finder()
    • attach

      public void attach(MutationRecord mutationRecord)
      Specified by:
      attach in interface Attachable
    • detach

      public void detach(MutationRecord mutationRecord)
      Specified by:
      detach in interface Attachable
    • addColumns

      public <T> Finder addColumns(Iterable<T> items, Function<T, FinderColumn> display)
      Same as HasItems.addItems(Iterable, Function)
    • addColumn

      public Finder addColumn(FinderColumn column)
      Same as HasItems.addItem(HasIdentifier)
    • add

      public Finder add(FinderColumn item)
      Specified by:
      add in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • addPreview

      public Finder addPreview(FinderPreview preview)
      Adds the specified FinderPreview instance to the finder. This method ensures that any previously added preview is safely removed before adding the new one.
      Parameters:
      preview - the FinderPreview instance to add. Represents the preview component to be added to the finder.
      Returns:
      the current Finder instance, allowing for method chaining.
    • add

      public Finder add(FinderPreview preview)
      Adds the specified FinderPreview instance to the finder. This method ensures that any previously added preview is safely removed before adding the new one.

      Preview can be managed on a column basis by using FinderColumn.onPreview(PreviewHandler) or on an item basis by using FinderItem.onPreview(PreviewHandler).

      Parameters:
      preview - the FinderPreview instance to add. Represents the preview component to be added to the finder.
      Returns:
      the current Finder instance, allowing for method chaining.
    • that

      public Finder that()
      Specified by:
      that in interface TypedBuilder<HTMLElement, Finder>
    • onAdd

      public Finder onAdd(org.patternfly.component.AddItemHandler<Finder, FinderColumn> onAdd)
      Specified by:
      onAdd in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • onUpdate

      public Finder onUpdate(org.patternfly.component.UpdateItemHandler<Finder, FinderColumn> onUpdate)
      Specified by:
      onUpdate in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • onRemove

      public Finder onRemove(org.patternfly.component.RemoveItemHandler<Finder, FinderColumn> onRemove)
      Specified by:
      onRemove in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • path

      public ResolvedFinderPath path()
      Returns the full selection path across all columns, regardless of which column is currently active. The path includes a segment for every column that has a selected item, stopping at the first column without a selection.

      Use this method when you need the complete selection state of the finder. If you need the path only up to the currently active (focused) column — for example to synchronise the browser URL during keyboard navigation — use activePath() instead.

      See Also:
    • activePath

      public ResolvedFinderPath activePath()
      Returns the selection path up to and including the currently active (focused) column. Columns to the right of the active column are excluded even if they still have selected items. This is useful for synchronising the browser URL during arrow-left keyboard navigation, where columns to the right are preserved in the DOM but should no longer be reflected in the URL.

      When no arrow-left navigation has occurred, the active column is the deepest column with a selection, so this method returns the same result as path().

      See Also:
    • select

      public Promise<ResolvedFinderPath> select(String path)
      Parses and selects items along the given finder path string, handling async column loading at each level. The path must use the format produced by FinderPath.toString(): col1=item1/col2=item2/col3. The last segment may omit the item identifier to represent a column with no selected item.
      Parameters:
      path - the encoded finder path string
      Returns:
      a Promise that resolves with the ResolvedFinderPath of successfully selected items
      See Also:
    • select

      public Promise<ResolvedFinderPath> select(FinderPath path)
      Selects items along the given finder path, handling async column loading at each level. The first column in the path must already be present in this finder. Each item selection may trigger creation and async loading of the next column (via FinderItem.nextColumn(java.util.function.Supplier)).

      Select and preview events are fired only for the deepest successfully resolved item, not for intermediate segments. If a segment cannot be resolved (column not found, item not found after loading), the promise resolves with a partial ResolvedFinderPath containing only the successfully selected segments, and events are fired for the last resolved item.

      Parameters:
      path - the finder path to select
      Returns:
      a Promise that resolves with the ResolvedFinderPath of successfully selected items
    • iterator

      public Iterator<FinderColumn> iterator()
      Specified by:
      iterator in interface Iterable<FinderColumn>
    • size

      public int size()
      Specified by:
      size in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • isEmpty

      public boolean isEmpty()
      Specified by:
      isEmpty in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • contains

      public boolean contains(String identifier)
      Specified by:
      contains in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • item

      public FinderColumn item(String identifier)
      Specified by:
      item in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • updateItem

      public void updateItem(FinderColumn item)
      Specified by:
      updateItem in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • removeItem

      public void removeItem(String identifier)
      Specified by:
      removeItem in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>
    • clear

      public void clear()
      Specified by:
      clear in interface org.patternfly.component.HasItems<HTMLElement, Finder, FinderColumn>