Documentation Index
Fetch the complete documentation index at: https://anvil.servicetitan.com/llms.txt
Use this file to discover all available pages before exploring further.
Implementation
DateFieldRange Props
DateFieldRangeChange
Common Examples
import { DateFieldRange } from "@servicetitan/anvil2";
function ExampleComponent() {
return (
<DateFieldRange
defaultValue={{
startDate: "1999-12-25",
endDate: new Date().toISOString(),
}}
/>
);
}
Default values
Default values can be included in DateFieldRange to use the field in an uncontrolled mode.Controlled usage
The DateFieldRange can be controlled. This means you can maintain the state outside the component. Listen for new dates with onChange and supply dates into the value prop.Disabled hint text
The hint text can be disabled. If the hint text is disabled, ensure that the date format is displayed on the page.Timezone
The timezone prop controls the meaning of the “Today” button and which month-year the calendar initially displays. When the timezone differs from the user’s locale, a disambiguation message appears below the calendar.Disable calendar popover
The display of the Calendar can be prevented by passing disableCalendar.Markdown in labels
The label prop supports inline markdown: bold (**text**), italic (*text*), bold and italic (***text***), highlight (==text==), and code (`text`).Hide the label
Use hideLabel to visually hide the label. The label string is converted to an aria-label on the input so it remains accessible to screen readers — any inline markdown is stripped to plain text.import { DateFieldRange } from "@servicetitan/anvil2";
function ExampleComponent() {
return (
<DateFieldRange
defaultValue={{
startDate: "1999-12-25",
endDate: new Date().toISOString(),
}}
mode="mm/dd/yyyy"
disableHint={false}
disableCalendar={false}
required={false}
/>
); }
DateFieldRange Props
defaultValue
"{ startDate: string" | "null; endDate: string" | "null }" | "null"
Uncontrolled initial value for the date range.
onChange
(change: DateFieldRangeChange) => void
Callback fired when the value changes.
value
"{ startDate: string" | "null; endDate: string" | "null }" | "null"
Controlled value for the date range (ISO 8601 strings)
If true, disables the calendar popover.
If true, disables the format hint below the field.
Maximum selectable date (ISO 8601).
Minimum selectable date (ISO 8601).
mode
"mm/dd/yyyy" | "dd/mm/yyyy"
default:"mm/dd/yyyy"
Date input format.
If true, the field is required.
IANA timezone identifier (e.g., “America/Los_Angeles”). Controls the “Today” button behavior and initial calendar display. Shows a disambiguation message when different from the user’s locale timezone.
unavailable
{ dates?: string[]; daysOfWeek?: (1 | 2 | 3 | 4 | 5 | 6 | 7)[] }
Dates or days of week that are unavailable for selection.
Additional field props
The DateFieldRange also supports the following props which are common to most field components:Additional description below the field.
If true, disables the field.
error
ReactElement | string | boolean
Error message or state.
errorAriaLive
"off" | "polite" | "assertive"
default:"assertive"
ARIA live region setting for error messages.
Visually hides the label while keeping it accessible to screen readers via aria-label.
Label for the field. Supports inline markdown formatting.Omitting label is deprecated and will be required in v4.0.0. Use hideLabel to visually hide it. Passing ReactNode is also deprecated — use a plain string with inline markdown instead.
If true, shows a loading spinner.
Additional info icon or content for the label.
size
"small" | "medium" | "large"
default:"medium"
Input size
Suffix element to display inside the input.
type
"text" | "email" | "tel" | "url" | "password" | "number"
default:"text"
Input type.
DateFieldRangeChange
The following object is passed back to you in the onChange handler.The end date in ISO 8601 format. Example: “2025-07-02”.
Whether the start and end dates are valid according to the constraints
(required, unavailable dates/days, min/max date).
Whether the input field is empty.
Whether the input field contains two parsable dates. This is not the same as
the date range being valid.
The start date in ISO 8601 format. Example: “2025-03-22”.