Class TimePicker

    • Method Detail

      • getLabel

        public String getLabel()
        Gets the label of the time picker.
        Specified by:
        getLabel in interface HasLabel
        Returns:
        the label property of the time picker
      • getErrorMessage

        public String getErrorMessage()
        Gets the current error message from the time picker.
        Specified by:
        getErrorMessage in interface HasValidation
        Returns:
        the current error message
      • isInvalid

        public boolean isInvalid()
        Gets the validity of the time picker output.

        return true, if the value is invalid.

        Specified by:
        isInvalid in interface HasValidation
        Returns:
        the validity property from the time picker
      • getDefaultValidator

        public Validator<LocalTime> getDefaultValidator()
        Description copied from interface: HasValidator
        Returns a validator that checks the state of the Value. This should be overridden for components with internal value conversion or validation, e.g. when the user is providing a string that has to be parsed into a date. An invalid input from user will be exposed to a Binder and can be seen as a validation failure.
        Specified by:
        getDefaultValidator in interface HasValidator<LocalTime>
        Returns:
        state validator
      • addValidationStatusChangeListener

        public Registration addValidationStatusChangeListener​(ValidationStatusChangeListener<LocalTime> listener)
        Description copied from interface: HasValidator
        Enables the implementing components to notify changes in their validation status to the observers.

        Note: This method can be overridden by the implementing classes e.g. components, to enable the associated Binder.Binding instance subscribing for their validation change events and revalidate itself.

        This method primarily designed for notifying the Binding about the validation status changes of a bound component at the client-side. WebComponents such as <vaadin-date-picker> or any other component that accept a formatted text as input should be able to communicate their invalid status to their server-side instance, and a bound server-side component instance must notify its binding about this validation status change as well. When the binding instance revalidates, a chain of validators and convertors get executed one of which is the default validator provided by HasValidator.getDefaultValidator(). Thus, In order for the binding to be able to show/clear errors for its associated bound field, it is important that implementing components take that validation status into account while implementing any validator and converter including HasValidator.getDefaultValidator(). Here is an example:

         @Tag("date-picker-demo")
         public class DatePickerDemo implements HasValidator<LocalDate> {
        
             // Each web component has a way to communicate its validation status
             // to its server-side component instance. The following clientSideValid
             // state is introduced here just for the sake of simplicity of this code
             // snippet:
             boolean clientSideValid = true;
        
             /**
              * Note how clientSideValid engaged in the definition
              * of this method. It is important to reflect this status either
              * in the returning validation result of this method or any other
              * validation that is associated with this component.
              */
             @Override
             public Validator getDefaultValidator() {
                  return (value, valueContext) -> clientSideValid ? ValidationResult.ok()
                         : ValidationResult.error("Invalid date format");
             }
        
             private final Collection<ValidationStatusChangeListener<LocalDate>>
                 validationStatusListeners = new ArrayList<>();
        
             /**
              * This enables the binding to subscribe for the validation status
              * change events that are fired by this component and revalidate
              * itself respectively.
              */
             @Override
             public Registration addValidationStatusChangeListener(
                     ValidationStatusChangeListener<LocalDate> listener) {
                 validationStatusListeners.add(listener);
                 return () -> validationStatusListeners.remove(listener);
             }
        
             private void fireValidationStatusChangeEvent(
                     boolean newValidationStatus) {
                 if (this.clientSideValid != newValidationStatus) {
                     this.clientSideValid = newValidationStatus;
                     var event = new ValidationStatusChangeEvent<>(this,
                             newValidationStatus);
                     validationStatusListeners.forEach(
                             listener -> listener.validationStatusChanged(event));
                 }
             }
         }
         
        Specified by:
        addValidationStatusChangeListener in interface HasValidator<LocalTime>
        Returns:
        Registration of the added listener.
        See Also:
        Binder.BindingBuilderImpl.bind(ValueProvider, Setter)
      • getPlaceholder

        public String getPlaceholder()
        Gets the placeholder of the time picker.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:
        the placeholder property of the time picker
      • setRequiredIndicatorVisible

        public void setRequiredIndicatorVisible​(boolean requiredIndicatorVisible)
        Description copied from interface: HasValue
        Sets the required indicator visible or not.

        If set visible, it is visually indicated in the user interface.

        The method is intended to be used with Binder which does server-side validation. In case HTML element has its own (client-side) validation it should be disabled when setRequiredIndicatorVisible(true) is called and re-enabled back on setRequiredIndicatorVisible(false). It's responsibility of each component implementation to follow the contract so that the method call doesn't do anything else than show/hide the "required" indication. Usually components provide their own setRequired method which should be called in case the client-side validation is required.

        Specified by:
        setRequiredIndicatorVisible in interface HasValue<AbstractField.ComponentValueChangeEvent<TimePicker,​LocalTime>,​LocalTime>
        Specified by:
        setRequiredIndicatorVisible in interface HasValueAndElement<AbstractField.ComponentValueChangeEvent<TimePicker,​LocalTime>,​LocalTime>
        Parameters:
        requiredIndicatorVisible - true to make the required indicator visible, false if not
      • isRequired

        public boolean isRequired()
        Determines whether the time picker is marked as input required.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:
        true if the input is required, false otherwise
      • setStep

        public void setStep​(Duration step)
        Sets the step property of the time picker using duration. It specifies the intervals for the displayed items in the time picker dropdown and also the displayed time format.

        The set step needs to evenly divide a day or an hour and has to be larger than 0 milliseconds. By default, the format is hh:mm (same as * Duration.ofHours(1)

        If the step is less than 60 seconds, the format will be changed to hh:mm:ss and it can be in hh:mm:ss.fff format, when the step is less than 1 second.

        NOTE: If the step is less than 900 seconds, the dropdown is hidden.

        NOTE: changing the step to a larger duration can cause a new HasValue.ValueChangeEvent to be fired if some parts (eg. seconds) is discarded from the value.

        Parameters:
        step - the step to set, not null and should divide a day or an hour evenly
      • getStep

        public Duration getStep()
        Gets the step of the time picker.

        This property is not synchronized automatically from the client side, so the returned value may not be the same as in client side.

        Returns:
        the step property from the picker, unit seconds
      • addThemeVariants

        public void addThemeVariants​(TimePickerVariant... variants)
        Adds theme variants to the component.
        Parameters:
        variants - theme variants to add
      • removeThemeVariants

        public void removeThemeVariants​(TimePickerVariant... variants)
        Removes theme variants from the component.
        Parameters:
        variants - theme variants to remove
      • validate

        protected void validate()
        Performs server-side validation of the current value. This is needed because it is possible to circumvent the client-side validation constraints using browser development tools.
        Overrides:
        validate in class GeneratedVaadinTimePicker<TimePicker,​LocalTime>
      • onAttach

        protected void onAttach​(AttachEvent attachEvent)
        Description copied from class: Component
        Called when the component is attached to a UI.

        The default implementation does nothing.

        This method is invoked before the AttachEvent is fired for the component.

        Overrides:
        onAttach in class Component
        Parameters:
        attachEvent - the attach event
      • setLocale

        public void setLocale​(Locale locale)
        Set the Locale for the Time Picker. The displayed time will be formatted by the browser using the given locale.

        By default, the locale is null until the component is attached to an UI, and then locale is set to UI.getLocale(), unless a locale has been explicitly set before that.

        The time formatting is done in the browser using the Date.toLocaleTimeString() function.

        If for some reason the browser doesn't support the given locale, the en-US locale is used.

        NOTE: only the language + country/region codes are used. This means that the script and variant information is not used and supported. NOTE: timezone related data is not supported. NOTE: changing the locale does not cause a new HasValue.ValueChangeEvent to be fired.

        Parameters:
        locale - the locale set to the time picker, cannot be [@code null}
      • getLocale

        public Locale getLocale()
        Gets the Locale for this time picker.

        By default, the locale is null until the component is attached to an UI, and then locale is set to UI.getLocale(), unless setLocale(Locale) has been explicitly called before that.

        Overrides:
        getLocale in class Component
        Returns:
        the locale used for this time picker
      • setMin

        public void setMin​(LocalTime min)
        Sets the minimum time in the time picker. Times before that will be disabled in the popup.
        Parameters:
        min - the minimum time that is allowed to be selected, or null to remove any minimum constraints
      • setMinTime

        @Deprecated
        public void setMinTime​(LocalTime min)
        Deprecated.
        Since 22.0, this API is deprecated in favor of setMin(LocalTime)
        Sets the minimum time in the time picker. Times before that will be disabled in the popup.
        Parameters:
        min - the minimum time that is allowed to be selected, or null to remove any minimum constraints
      • getMin

        public LocalTime getMin()
        Gets the minimum time in the time picker. Time before that will be disabled in the popup.
        Returns:
        the minimum time that is allowed to be selected, or null if there's no minimum
      • getMinTime

        @Deprecated
        public LocalTime getMinTime()
        Deprecated.
        Since 22.0, this API is deprecated in favor of getMin()
        Gets the minimum time in the time picker. Time before that will be disabled in the popup.
        Returns:
        the minimum time that is allowed to be selected, or null if there's no minimum
      • setMax

        public void setMax​(LocalTime max)
        Sets the maximum time in the time picker. Times after that will be disabled in the popup.
        Parameters:
        max - the maximum time that is allowed to be selected, or null to remove any maximum constraints
      • setMaxTime

        @Deprecated
        public void setMaxTime​(LocalTime max)
        Deprecated.
        Since 22.0, this API is deprecated in favor of setMax(LocalTime)
        Sets the maximum time in the time picker. Times after that will be disabled in the popup.
        Parameters:
        max - the maximum time that is allowed to be selected, or null to remove any maximum constraints
      • getMax

        public LocalTime getMax()
        Gets the maximum time in the time picker. Times after that will be disabled in the popup.
        Returns:
        the maximum time that is allowed to be selected, or null if there's no maximum
      • getMaxTime

        @Deprecated
        public LocalTime getMaxTime()
        Deprecated.
        Since 22.0, this API is deprecated in favor of getMax()
        Gets the maximum time in the time picker. Times after that will be disabled in the popup.
        Returns:
        the maximum time that is allowed to be selected, or null if there's no maximum
      • setAutoOpen

        public void setAutoOpen​(boolean autoOpen)
        Enables or disables the dropdown opening automatically. If false the dropdown is only opened when clicking the toggle button or pressing Up or Down arrow keys.
        Parameters:
        autoOpen - false to prevent the dropdown from opening automatically
      • isAutoOpen

        public boolean isAutoOpen()
        Gets whether dropdown will open automatically or not.
        Returns:
        true if enabled, false otherwise
      • isFeatureFlagEnabled

        protected boolean isFeatureFlagEnabled​(Feature feature)
        Returns true if the given feature flag is enabled, false otherwise.

        Exposed with protected visibility to support mocking

        The method requires the VaadinService instance to obtain the available feature flags, otherwise, the feature is considered disabled.

        Parameters:
        feature - the feature flag.
        Returns:
        whether the feature flag is enabled.