pub struct DateTimeWithTimezoneFieldOptions {
pub max: Option<DateTime<FixedOffset>>,
pub min: Option<DateTime<FixedOffset>>,
pub readonly: Option<bool>,
pub step: Option<Step<Duration>>,
pub timezone: Option<Tz>,
pub prefer_latest: Option<bool>,
}Expand description
Custom options for DateTimeWithTimezoneField
Specifies the HTML attributes applied to a datetime‐local input, plus
a user‐specified timezone and DST‐disambiguation policy.
§Example
use chrono::Duration;
use chrono_tz::Tz;
use cot::form::fields::{
DateTimeWithTimezoneField, DateTimeWithTimezoneFieldOptions, Step,
};
use cot::form::{FormField, FormFieldOptions};
// Suppose we want America/New_York timezone with DST handling, and if there's a DST fold,
// we choose the later offset (i.e. `prefer_latest = true`).
let tz: Tz = "America/New_York".parse().unwrap();
let options = DateTimeWithTimezoneFieldOptions {
min: None,
max: None,
readonly: Some(false),
step: Some(Step::Value(Duration::seconds(60))),
timezone: Some(tz),
// If the given local time is ambiguous (DST fall‐back), pick the later of the two possibilities.
prefer_latest: Some(true),
};
let field = DateTimeWithTimezoneField::with_options(
FormFieldOptions {
id: "dt".into(),
name: "dt".into(),
required: true,
},
options,
);Fields§
§max: Option<DateTime<FixedOffset>>The maximum allowed datetime (with offset) for this field.
When present, sets the max attribute on <input type="datetime-local">, and also enforces datetime > max at
validation time.
min: Option<DateTime<FixedOffset>>The minimum allowed datetime (with offset) for this field.
When present, sets the min attribute on <input type="datetime-local">, and also enforces datetime < min at
validation time.
readonly: Option<bool>Whether the field should be read‐only.
When Some(true), we render readonly="true" on the HTML tag,
preventing user edits. When None or Some(false), the input is
editable.
step: Option<Step<Duration>>The increment (in seconds) between valid datetimes.
Corresponds to the step attribute on <input type="datetime-local">.
If None, the browser’s default (60 seconds) is used. To override,
supply Step::Value(Duration) where Duration indicates the number
of seconds per “tick.”
timezone: Option<Tz>The timezone to use when parsing the browser‐supplied string.
Browsers send a naive “YYYY-MM-DDThh:mm” (no offset). If timezone is
Some(tz), we convert that naive time into a DateTime<FixedOffset>
using tz.from_local_datetime(...). The timezone should be a
Tz which is capable of handling true DST transitions and
timezone rules. If None, defaults to UTC.
prefer_latest: Option<bool>Choose how to handle ambiguous local time conversion (e.g. during a DST fall-back).
Some(true): always pick the later of the two possible instants (DST time).Some(false): always pick the earlier of the two possible instants (standard time).None: treat an ambiguous local time as a validation error.
Trait Implementations§
Source§impl Clone for DateTimeWithTimezoneFieldOptions
impl Clone for DateTimeWithTimezoneFieldOptions
Source§fn clone(&self) -> DateTimeWithTimezoneFieldOptions
fn clone(&self) -> DateTimeWithTimezoneFieldOptions
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Default for DateTimeWithTimezoneFieldOptions
impl Default for DateTimeWithTimezoneFieldOptions
Source§fn default() -> DateTimeWithTimezoneFieldOptions
fn default() -> DateTimeWithTimezoneFieldOptions
impl Copy for DateTimeWithTimezoneFieldOptions
Auto Trait Implementations§
impl Freeze for DateTimeWithTimezoneFieldOptions
impl RefUnwindSafe for DateTimeWithTimezoneFieldOptions
impl Send for DateTimeWithTimezoneFieldOptions
impl Sync for DateTimeWithTimezoneFieldOptions
impl Unpin for DateTimeWithTimezoneFieldOptions
impl UnwindSafe for DateTimeWithTimezoneFieldOptions
Blanket Implementations§
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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> IntoField<Auto<T>> for T
impl<T> IntoField<Auto<T>> for T
Source§fn into_field(self) -> Auto<T>
fn into_field(self) -> Auto<T>
db only.