Class ComponentMultiSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T>

java.lang.Object
com.vaadin.flow.component.Component
com.vaadin.flow.component.AbstractField<com.vaadin.flow.component.customfield.CustomField<T>,T>
com.vaadin.flow.component.customfield.CustomField<T>
org.vaadin.miki.superfields.componentselect.AbstractComponentSelect<C,Set<T>,T,ComponentMultiSelect<C,T>>
org.vaadin.miki.superfields.componentselect.ComponentMultiSelect<C,T>
All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier, com.vaadin.flow.component.BlurNotifier<com.vaadin.flow.component.customfield.CustomField<Set<T>>>, com.vaadin.flow.component.DetachNotifier, com.vaadin.flow.component.Focusable<com.vaadin.flow.component.customfield.CustomField<Set<T>>>, com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.customfield.CustomField<Set<T>>>, com.vaadin.flow.component.HasElement, com.vaadin.flow.component.HasEnabled, com.vaadin.flow.component.HasHelper, com.vaadin.flow.component.HasLabel, com.vaadin.flow.component.HasSize, com.vaadin.flow.component.HasStyle, com.vaadin.flow.component.HasTheme, com.vaadin.flow.component.HasValidation, com.vaadin.flow.component.HasValue<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Set<T>>,Set<T>>,Set<T>>, com.vaadin.flow.component.HasValueAndElement<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Set<T>>,Set<T>>,Set<T>>, com.vaadin.flow.component.shared.HasTooltip, com.vaadin.flow.component.shared.HasValidationProperties, com.vaadin.flow.component.shared.InputField<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Set<T>>,Set<T>>,Set<T>>, com.vaadin.flow.data.binder.HasItems<T>, Serializable, HasHelperPositionable, HasId, HasLabelPositionable, HasMaximumSelectionSize, WithHelperMixin<ComponentMultiSelect<C,T>>, WithHelperPositionableMixin<ComponentMultiSelect<C,T>>, WithIdMixin<ComponentMultiSelect<C,T>>, WithItemsMixin<T,ComponentMultiSelect<C,T>>, WithLabelMixin<ComponentMultiSelect<C,T>>, WithLabelPositionableMixin<ComponentMultiSelect<C,T>>, WithMaximumSelectionSizeMixin<ComponentMultiSelect<C,T>>, WithValueMixin<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<Set<T>>,Set<T>>,Set<T>,ComponentMultiSelect<C,T>>
Direct Known Subclasses:
ButtonMultiSelect

@Tag("component-multi-select") @JsModule("./component-multi-select.js") public class ComponentMultiSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T> extends AbstractComponentSelect<C,Set<T>,T,ComponentMultiSelect<C,T>> implements WithMaximumSelectionSizeMixin<ComponentMultiSelect<C,T>>
A multi-select that displays each option as a ClickNotifiers and then selects/deselects it on click.
Since:
2023-12-01
Author:
miki
See Also:
  • Nested Class Summary

    Nested classes/interfaces inherited from class com.vaadin.flow.component.AbstractField

    com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<C extends com.vaadin.flow.component.Component,V extends Object>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.BlurNotifier

    com.vaadin.flow.component.BlurNotifier.BlurEvent<C extends com.vaadin.flow.component.Component>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.FocusNotifier

    com.vaadin.flow.component.FocusNotifier.FocusEvent<C extends com.vaadin.flow.component.Component>

    Nested classes/interfaces inherited from interface com.vaadin.flow.component.HasValue

    com.vaadin.flow.component.HasValue.ValueChangeEvent<V extends Object>, com.vaadin.flow.component.HasValue.ValueChangeListener<E extends com.vaadin.flow.component.HasValue.ValueChangeEvent<?>>
  • Field Summary

    Fields inherited from class org.vaadin.miki.superfields.componentselect.AbstractComponentSelect

    NO_SELECTION

    Fields inherited from interface org.vaadin.miki.markers.HasHelperPositionable

    HELPER_ABOVE_THEME_VARIANT

    Fields inherited from interface org.vaadin.miki.markers.HasLabelPositionable

    LABEL_POSITION_ATTRIBUTE, LABEL_POSITION_DETAILS_ATTRIBUTE

    Fields inherited from interface org.vaadin.miki.markers.HasMaximumSelectionSize

    UNLIMITED
  • Constructor Summary

    Constructors
    Constructor
    Description
    ComponentMultiSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer,T,C> componentFactory, com.vaadin.flow.function.SerializableBiConsumer<Integer,C> selectionModifier, com.vaadin.flow.function.SerializableBiConsumer<Integer,C> deselectionModifier, T... options)
    Creates the select with given options.
    ComponentMultiSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer,T,C> componentFactory, T... options)
    Creates the select with given options.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Set<T>
     
    int
    Returns the current maximum selection size.
    protected boolean
    isSelected(int index)
    Checks if the item at the given index is currently selected.
    protected boolean
    itemClicked(int index)
    Clicks an item at the given index.
    void
    setMaximumSelectionSize(int maximumSelectionSize)
    Defines the new maximum selection size.
    protected void
    setPresentationValue(Set<T> newPresentationValue)
     

    Methods inherited from class com.vaadin.flow.component.customfield.CustomField

    add, addThemeVariants, getLabel, onAttach, remove, removeThemeVariants, setLabel, updateValue

    Methods inherited from class com.vaadin.flow.component.AbstractField

    addValueChangeListener, getEmptyValue, getValue, isEmpty, setModelValue, setValue, valueEquals

    Methods inherited from class com.vaadin.flow.component.Component

    addListener, findAncestor, fireEvent, from, get, getChildren, getElement, getEventBus, getId, getListeners, getLocale, getParent, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getTranslation, getUI, hasListener, isAttached, isTemplateMapped, isVisible, onDetach, onEnabledStateChanged, removeFromParent, scrollIntoView, scrollIntoView, set, setElement, setId, setVisible

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface com.vaadin.flow.component.AttachNotifier

    addAttachListener

    Methods inherited from interface com.vaadin.flow.component.BlurNotifier

    addBlurListener

    Methods inherited from interface com.vaadin.flow.component.DetachNotifier

    addDetachListener

    Methods inherited from interface com.vaadin.flow.component.Focusable

    addFocusShortcut, blur, getTabIndex, setTabIndex

    Methods inherited from interface com.vaadin.flow.component.FocusNotifier

    addFocusListener

    Methods inherited from interface com.vaadin.flow.component.HasElement

    getElement

    Methods inherited from interface com.vaadin.flow.component.HasEnabled

    isEnabled, setEnabled

    Methods inherited from interface com.vaadin.flow.component.HasHelper

    getHelperComponent, getHelperText, setHelperComponent, setHelperText

    Methods inherited from interface org.vaadin.miki.markers.HasHelperPositionable

    isHelperAbove, setHelperAbove, setHelperAbove, setHelperBelow

    Methods inherited from interface org.vaadin.miki.markers.HasId

    getId, setId

    Methods inherited from interface com.vaadin.flow.data.binder.HasItems

    setItems, setItems

    Methods inherited from interface com.vaadin.flow.component.HasLabel

    getLabel, setLabel

    Methods inherited from interface org.vaadin.miki.markers.HasLabelPositionable

    getLabelPosition, setLabelPosition

    Methods inherited from interface com.vaadin.flow.component.HasSize

    getHeight, getHeightUnit, getMaxHeight, getMaxWidth, getMinHeight, getMinWidth, getWidth, getWidthUnit, setHeight, setHeight, setHeightFull, setMaxHeight, setMaxHeight, setMaxWidth, setMaxWidth, setMinHeight, setMinHeight, setMinWidth, setMinWidth, setSizeFull, setSizeUndefined, setWidth, setWidth, setWidthFull

    Methods inherited from interface com.vaadin.flow.component.HasStyle

    addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassName

    Methods inherited from interface com.vaadin.flow.component.HasTheme

    addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeName

    Methods inherited from interface com.vaadin.flow.component.shared.HasTooltip

    getTooltip, setTooltipText

    Methods inherited from interface com.vaadin.flow.component.HasValidation

    setManualValidation

    Methods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties

    getErrorMessage, isInvalid, setErrorMessage, setInvalid

    Methods inherited from interface com.vaadin.flow.component.HasValue

    addValueChangeListener, clear, getEmptyValue, getOptionalValue, getValue, isEmpty, setValue

    Methods inherited from interface com.vaadin.flow.component.HasValueAndElement

    isReadOnly, isRequiredIndicatorVisible, setReadOnly, setRequiredIndicatorVisible

    Methods inherited from interface org.vaadin.miki.markers.WithHelperMixin

    withHelperComponent, withHelperText

    Methods inherited from interface org.vaadin.miki.markers.WithHelperPositionableMixin

    withHelperAbove, withHelperAbove, withHelperBelow

    Methods inherited from interface org.vaadin.miki.markers.WithIdMixin

    withId

    Methods inherited from interface org.vaadin.miki.markers.WithItemsMixin

    withItems, withItems, withItems

    Methods inherited from interface org.vaadin.miki.markers.WithLabelMixin

    withLabel

    Methods inherited from interface org.vaadin.miki.markers.WithLabelPositionableMixin

    withLabelPosition

    Methods inherited from interface org.vaadin.miki.markers.WithMaximumSelectionSizeMixin

    withMaximumSelectionSize

    Methods inherited from interface org.vaadin.miki.markers.WithValueMixin

    withValue
  • Constructor Details

    • ComponentMultiSelect

      @SafeVarargs public ComponentMultiSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer,T,C> componentFactory, T... options)
      Creates the select with given options.
      Parameters:
      layoutSupplier - Provides layout for the component.
      componentFactory - A function that creates components for the options.
      options - Items to select from.
    • ComponentMultiSelect

      @SafeVarargs public ComponentMultiSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer,T,C> componentFactory, com.vaadin.flow.function.SerializableBiConsumer<Integer,C> selectionModifier, com.vaadin.flow.function.SerializableBiConsumer<Integer,C> deselectionModifier, T... options)
      Creates the select with given options.
      Parameters:
      layoutSupplier - Provides layout for the component.
      componentFactory - A function that creates components for the options.
      selectionModifier - Action to perform on a component when it is selected.
      deselectionModifier - Action to perform on a component when it is deselected.
      options - Items to select from.
  • Method Details

    • isSelected

      protected boolean isSelected(int index)
      Description copied from class: AbstractComponentSelect
      Checks if the item at the given index is currently selected.
      Specified by:
      isSelected in class AbstractComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,Set<T>,T,ComponentMultiSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T>>
      Parameters:
      index - Index of an item.
      Returns:
      true when the item is selected, false otherwise.
    • itemClicked

      protected boolean itemClicked(int index)
      Description copied from class: AbstractComponentSelect
      Clicks an item at the given index.
      Specified by:
      itemClicked in class AbstractComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,Set<T>,T,ComponentMultiSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T>>
      Parameters:
      index - Index of an item to be clicked.
      Returns:
      Whether value should be updated.
    • generateModelValue

      protected Set<T> generateModelValue()
      Specified by:
      generateModelValue in class com.vaadin.flow.component.customfield.CustomField<Set<T>>
    • setPresentationValue

      protected void setPresentationValue(Set<T> newPresentationValue)
      Specified by:
      setPresentationValue in class com.vaadin.flow.component.customfield.CustomField<Set<T>>
    • setMaximumSelectionSize

      public void setMaximumSelectionSize(int maximumSelectionSize)
      Description copied from interface: HasMaximumSelectionSize
      Defines the new maximum selection size. When current selection is above the new limit, the selection should change so that it fits the new limit.
      Specified by:
      setMaximumSelectionSize in interface HasMaximumSelectionSize
      Parameters:
      maximumSelectionSize - Maximum selection size.
    • getMaximumSelectionSize

      public int getMaximumSelectionSize()
      Description copied from interface: HasMaximumSelectionSize
      Returns the current maximum selection size.
      Specified by:
      getMaximumSelectionSize in interface HasMaximumSelectionSize
      Returns:
      Maximum allowed selection size; HasMaximumSelectionSize.UNLIMITED by default.