pub struct DateRangePickerProps {
pub bind: DateRangePickerBind,
pub appearance: DateRangePickerAppearance,
pub class: MaybeProp<String>,
pub picker_field_slot: Option<PickerFieldSlot>,
pub open_trigger_slot: Option<OpenTriggerSlot>,
}Expand description
Props for the DateRangePicker component.
Range field with an anchored dual-month calendar panel, bound to [DateTimeRange].
DateRangePicker composes DateRangeField and
DateRangeCalendar in a click popover. See
See the crate README for when to pick range pickers vs fields.
§When to use
- Flight or hotel booking flows that need a visible calendar span
- Report filters where users pick start and end days in one control
§Usage
- Wrap the tree in
DatetimeLocalewhen timezone or format vary. - Bind
Option<DateTimeRange>throughDateRangePickerBind. - Document the feature with [
DatePickerFeatures::RANGE_PICKERS] — there is no runtime license check.
§Best Practices
§Do’s
- Wrap in
Fieldwith a clear label like “Travel dates”.
§Don’ts
- Do not submit until both endpoints are set —
Nonemeans an incomplete range.
§Examples
§Flight booking range
Default range field with two-month calendar panel and bind readout.
use crate::DateTimeRange;
use orbital_base_components::ToUnixSeconds;
use crate::preview::{PickerPreviewExample, PickerPreviewKnobs};
let value = RwSignal::new(None::<DateTimeRange>);
view! {
<PickerPreviewExample data_testid="date-range-picker-preview">
<PickerPreviewKnobs />
<DateRangePicker bind=value />
<div data-testid="date-range-picker-preview-VALUE">{move || match value.get() {
Some(range) => [range.start.to_unix_seconds().to_string(), range.end.to_unix_seconds().to_string()].join(","),
None => "none".to_string(),
}}</div>
</PickerPreviewExample>
}§Bind readout
Completing a calendar range updates the bound value.
use crate::DateTimeRange;
use orbital_base_components::ToUnixSeconds;
use crate::preview::PickerPreviewExample;
let value = RwSignal::new(None::<DateTimeRange>);
view! {
<PickerPreviewExample data_testid="DRP-02">
<DateRangePicker bind=value />
<div data-testid="DRP-02-VALUE">{move || match value.get() {
Some(range) => [range.start.to_unix_seconds().to_string(), range.end.to_unix_seconds().to_string()].join(","),
None => "none".to_string(),
}}</div>
</PickerPreviewExample>
}§Optional Props
- bind:
impl Into<DateRangePickerBind>- Value binding for the range field and calendar.
- appearance:
impl Into<DateRangePickerAppearance>- Field format, panel count, and popover options.
- class:
impl Into<MaybeProp<String>>- Optional CSS class on the layout wrapper.
- picker_field_slot:
PickerFieldSlot- Optional custom range field slot replacing the default
DateRangeField.
- Optional custom range field slot replacing the default
- open_trigger_slot:
OpenTriggerSlot- Optional custom open button slot replacing the calendar icon.
Fields§
§bind: DateRangePickerBindValue binding for the range field and calendar.
appearance: DateRangePickerAppearanceField format, panel count, and popover options.
class: MaybeProp<String>Optional CSS class on the layout wrapper.
picker_field_slot: Option<PickerFieldSlot>Optional custom range field slot replacing the default DateRangeField.
open_trigger_slot: Option<OpenTriggerSlot>Optional custom open button slot replacing the calendar icon.
Implementations§
Source§impl DateRangePickerProps
impl DateRangePickerProps
Sourcepub fn builder() -> DateRangePickerPropsBuilder<((), (), (), (), ())>
pub fn builder() -> DateRangePickerPropsBuilder<((), (), (), (), ())>
Create a builder for building DateRangePickerProps.
On the builder, call .bind(...)(optional), .appearance(...)(optional), .class(...)(optional), .picker_field_slot(...)(optional), .open_trigger_slot(...)(optional) to set the values of the fields.
Finally, call .build() to create the instance of DateRangePickerProps.
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for DateRangePickerProps
impl !UnwindSafe for DateRangePickerProps
impl Freeze for DateRangePickerProps
impl Send for DateRangePickerProps
impl Sync for DateRangePickerProps
impl Unpin for DateRangePickerProps
impl UnsafeUnpin for DateRangePickerProps
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T> SerializableKey for T
impl<T> SerializableKey for T
Source§impl<T> StorageAccess<T> for T
impl<T> StorageAccess<T> for T
Source§fn as_borrowed(&self) -> &T
fn as_borrowed(&self) -> &T
Source§fn into_taken(self) -> T
fn into_taken(self) -> T
Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more