Class ComponentSelect<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,T,T,ComponentSelect<C,T>>
org.vaadin.miki.superfields.componentselect.ComponentSelect<C,T>
- Type Parameters:
C- Type of the component.T- Type of value.
- All Implemented Interfaces:
com.vaadin.flow.component.AttachNotifier,com.vaadin.flow.component.BlurNotifier<com.vaadin.flow.component.customfield.CustomField<T>>,com.vaadin.flow.component.DetachNotifier,com.vaadin.flow.component.Focusable<com.vaadin.flow.component.customfield.CustomField<T>>,com.vaadin.flow.component.FocusNotifier<com.vaadin.flow.component.customfield.CustomField<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<T>,,T>, T> com.vaadin.flow.component.HasValueAndElement<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,,T>, 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<T>,,T>, T> com.vaadin.flow.data.binder.HasItems<T>,Serializable,HasHelperPositionable,HasId,HasLabelPositionable,HasNullValueOptionallyAllowed<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,,T>, T> WithHelperMixin<ComponentSelect<C,,T>> WithHelperPositionableMixin<ComponentSelect<C,,T>> WithIdMixin<ComponentSelect<C,,T>> WithItemsMixin<T,,ComponentSelect<C, T>> WithLabelMixin<ComponentSelect<C,,T>> WithLabelPositionableMixin<ComponentSelect<C,,T>> WithNullValueOptionallyAllowedMixin<ComponentSelect<C,,T>, com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>, T>, T> WithValueMixin<com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,T>, T, ComponentSelect<C, T>>
- Direct Known Subclasses:
ButtonSelect
@Tag("component-select")
@JsModule("./component-select.js")
public class ComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T>
extends AbstractComponentSelect<C,T,T,ComponentSelect<C,T>>
implements WithNullValueOptionallyAllowedMixin<ComponentSelect<C,T>,com.vaadin.flow.component.AbstractField.ComponentValueChangeEvent<com.vaadin.flow.component.customfield.CustomField<T>,T>,T>
A selection component that shows options as
ClickNotifiers.- Since:
- 2023-11-14
- 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_SELECTIONFields inherited from interface org.vaadin.miki.markers.HasHelperPositionable
HELPER_ABOVE_THEME_VARIANTFields inherited from interface org.vaadin.miki.markers.HasLabelPositionable
LABEL_POSITION_ATTRIBUTE, LABEL_POSITION_DETAILS_ATTRIBUTE -
Constructor Summary
ConstructorsConstructorDescriptionComponentSelect(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.ComponentSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer, T, C> componentFactory, T... options) Creates the select with given options, but without any action to perform on selection and deselection. -
Method Summary
Modifier and TypeMethodDescriptionprotected TintReturns the index of the currently selected component.booleanChecks whethernullis allowed as a value of the component.booleanChecks if any component is selected.protected booleanisSelected(int index) Checks if the item at the given index is currently selected.protected booleanitemClicked(int index) Clicks an item at the given index.voidsetNullValueAllowed(boolean allowingNullValue) Sets allowance ofnullas this component's value.protected voidvoidsetSelectedIndex(int index) Sets selection index.Methods inherited from class org.vaadin.miki.superfields.componentselect.AbstractComponentSelect
deselect, ensureValidIndex, focus, getComponentDeselectedAction, getComponentFactory, getComponentIndex, getComponentSelectedAction, getOptions, noOp, rebuildComponents, select, setComponentDeselectedAction, setComponentFactory, setComponentSelectedAction, setItems, withComponentDeselectedAction, withComponentFactory, withComponentSelectedActionMethods inherited from class com.vaadin.flow.component.customfield.CustomField
add, addThemeVariants, getLabel, onAttach, remove, removeThemeVariants, setLabel, updateValueMethods inherited from class com.vaadin.flow.component.AbstractField
addValueChangeListener, getEmptyValue, getValue, isEmpty, setModelValue, setValue, valueEqualsMethods 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, setVisibleMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface com.vaadin.flow.component.AttachNotifier
addAttachListenerMethods inherited from interface com.vaadin.flow.component.BlurNotifier
addBlurListenerMethods inherited from interface com.vaadin.flow.component.DetachNotifier
addDetachListenerMethods inherited from interface com.vaadin.flow.component.Focusable
addFocusShortcut, blur, getTabIndex, setTabIndexMethods inherited from interface com.vaadin.flow.component.FocusNotifier
addFocusListenerMethods inherited from interface com.vaadin.flow.component.HasElement
getElementMethods inherited from interface com.vaadin.flow.component.HasEnabled
isEnabled, setEnabledMethods inherited from interface com.vaadin.flow.component.HasHelper
getHelperComponent, getHelperText, setHelperComponent, setHelperTextMethods inherited from interface org.vaadin.miki.markers.HasHelperPositionable
isHelperAbove, setHelperAbove, setHelperAbove, setHelperBelowMethods inherited from interface com.vaadin.flow.data.binder.HasItems
setItems, setItemsMethods inherited from interface com.vaadin.flow.component.HasLabel
getLabel, setLabelMethods inherited from interface org.vaadin.miki.markers.HasLabelPositionable
getLabelPosition, setLabelPositionMethods 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, setWidthFullMethods inherited from interface com.vaadin.flow.component.HasStyle
addClassName, addClassNames, getClassName, getClassNames, getStyle, hasClassName, removeClassName, removeClassNames, setClassName, setClassNameMethods inherited from interface com.vaadin.flow.component.HasTheme
addThemeName, addThemeNames, getThemeName, getThemeNames, hasThemeName, removeThemeName, removeThemeNames, setThemeName, setThemeNameMethods inherited from interface com.vaadin.flow.component.shared.HasTooltip
getTooltip, setTooltipTextMethods inherited from interface com.vaadin.flow.component.HasValidation
setManualValidationMethods inherited from interface com.vaadin.flow.component.shared.HasValidationProperties
getErrorMessage, isInvalid, setErrorMessage, setInvalidMethods inherited from interface com.vaadin.flow.component.HasValue
addValueChangeListener, clear, getEmptyValue, getOptionalValue, getValue, isEmpty, setValueMethods inherited from interface com.vaadin.flow.component.HasValueAndElement
isReadOnly, isRequiredIndicatorVisible, setReadOnly, setRequiredIndicatorVisibleMethods inherited from interface org.vaadin.miki.markers.WithHelperMixin
withHelperComponent, withHelperTextMethods inherited from interface org.vaadin.miki.markers.WithHelperPositionableMixin
withHelperAbove, withHelperAbove, withHelperBelowMethods inherited from interface org.vaadin.miki.markers.WithIdMixin
withIdMethods inherited from interface org.vaadin.miki.markers.WithItemsMixin
withItems, withItems, withItemsMethods inherited from interface org.vaadin.miki.markers.WithLabelMixin
withLabelMethods inherited from interface org.vaadin.miki.markers.WithLabelPositionableMixin
withLabelPositionMethods inherited from interface org.vaadin.miki.markers.WithNullValueOptionallyAllowedMixin
withNullValueAllowed, withNullValueAllowed, withoutNullValueAllowedMethods inherited from interface org.vaadin.miki.markers.WithValueMixin
withValue
-
Constructor Details
-
ComponentSelect
@SafeVarargs public ComponentSelect(Supplier<L> layoutSupplier, com.vaadin.flow.function.SerializableBiFunction<Integer, T, C> componentFactory, T... options) Creates the select with given options, but without any action to perform on selection and deselection.- Type Parameters:
L- Layout type.- Parameters:
layoutSupplier- Provides layout for the component.componentFactory- A function that creates components for theoptions.options- Items to select from.
-
ComponentSelect
@SafeVarargs public ComponentSelect(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.- Type Parameters:
L- Layout type.- Parameters:
layoutSupplier- Provides layout for the component.componentFactory- A function that creates components for theoptions.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
public boolean isSelected()Checks if any component is selected.- Returns:
- Whether
getSelectedIndex()is different fromAbstractComponentSelect.NO_SELECTION.
-
isSelected
protected boolean isSelected(int index) Description copied from class:AbstractComponentSelectChecks if the item at the given index is currently selected.- Specified by:
isSelectedin classAbstractComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T, T, ComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>, T>> - Parameters:
index- Index of an item.- Returns:
truewhen the item is selected,falseotherwise.
-
itemClicked
protected boolean itemClicked(int index) Description copied from class:AbstractComponentSelectClicks an item at the given index.- Specified by:
itemClickedin classAbstractComponentSelect<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T, T, ComponentSelect<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.
-
setSelectedIndex
public void setSelectedIndex(int index) Sets selection index. Note that when null value is not allowed and passed index isAbstractComponentSelect.NO_SELECTION, nothing will happen.- Parameters:
index- New index.
-
getSelectedIndex
public int getSelectedIndex()Returns the index of the currently selected component.- Returns:
- Index of the currently selected component. Can be
AbstractComponentSelect.NO_SELECTION.
-
generateModelValue
- Specified by:
generateModelValuein classcom.vaadin.flow.component.customfield.CustomField<T>
-
setPresentationValue
- Specified by:
setPresentationValuein classcom.vaadin.flow.component.customfield.CustomField<T>
-
isNullValueAllowed
public boolean isNullValueAllowed()Description copied from interface:HasNullValueOptionallyAllowedChecks whethernullis allowed as a value of the component.- Specified by:
isNullValueAllowedin interfaceHasNullValueOptionallyAllowed<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T> - Returns:
- Whether
nullis allowed as a value. Should default tofalse.
-
setNullValueAllowed
public void setNullValueAllowed(boolean allowingNullValue) Description copied from interface:HasNullValueOptionallyAllowedSets allowance ofnullas this component's value.- Specified by:
setNullValueAllowedin interfaceHasNullValueOptionallyAllowed<C extends com.vaadin.flow.component.Component & com.vaadin.flow.component.ClickNotifier<C>,T> - Parameters:
allowingNullValue- Whether to allownullas a value.
-