← All @molecule/* packages · App templates
@molecule/app-date-range-picker-defaultProvider bond · date-range-picker · App (browser) · v1.0.1 · Apache-2.0
Default provider for @molecule/app-date-range-picker
npm install @molecule/app-date-range-picker-defaultnpm · Source on GitHub · Implements @molecule/app-date-range-picker
@molecule/app-date-range-picker-default is a provider bond on the app (browser) side: it implements the date-range-picker core interface (@molecule/app-date-range-picker) with a concrete vendor or library behind it.
Your code calls the core; you wire this provider once at startup. Swapping vendors later is one line in that wiring, not a rewrite.
import { provider } from '@molecule/app-date-range-picker-default'
import { setProvider } from '@molecule/app-date-range-picker'
setProvider(provider)Works with: @molecule/app-date-range-picker
Auto-generated, AI-first package reference for the molecule.dev ecosystem. It is written to be read by coding agents as much as by people, and is generated from this package's source — edit
src/index.tsJSDoc, not this file.
Default provider for @molecule/app-date-range-picker.
Provides an in-memory date range picker implementation conforming to the molecule date range picker provider interface.
import { provider } from '@molecule/app-date-range-picker-default'
import { setProvider } from '@molecule/app-date-range-picker'
setProvider(provider)
provider
npm install @molecule/app-date-range-picker-default @molecule/app-date-range-picker
DefaultDateRangeConfigProvider-specific configuration options.
There is intentionally no locale field: this default provider is a pure
value store of Date objects and produces no formatted/labelled output, so a
locale knob would be inert. Format displayed dates in your rendering layer via
@molecule/app-i18n.
interface DefaultDateRangeConfig {
/**
* Provider-wide default for single-date mode. When `true`, every picker that
* does not pass its own `options.singleDate` collapses a selection to a
* single-day range (`startDate === endDate`). Defaults to `false`.
*/
singleDate?: boolean
}
createProvider(config)Creates a default date range picker provider.
function createProvider(config?: DefaultDateRangeConfig): DateRangePickerProvider
config — Optional provider configuration. config.singleDate supplies the default single-date mode for every picker that does not pass its own per-call options.singleDate.Returns: A configured DateRangePickerProvider.
providerDefault date range picker provider instance.
const provider: DateRangePickerProvider
Implements @molecule/app-date-range-picker interface.
Setup function to register this provider with the core interface:
import { setProvider } from '@molecule/app-date-range-picker'
import { provider } from '@molecule/app-date-range-picker-default'
export function setupDateRangePickerDefault(): void {
setProvider(provider)
}
Peer dependencies:
@molecule/app-date-range-picker ^1.0.1@molecule/app-date-range-pickerThis default instance is an in-memory range store that honors its options:
minDate/maxDate clamp every stored selection (initial value and
setValue) into range — a start below minDate becomes minDate, an end
above maxDate becomes maxDate. This is client UX, not a security
boundary; re-validate ranges on the server.singleDate: true collapses a selection to a single-day range
(startDate === endDate = the picked day) on one setValue; no second
click. createProvider({ singleDate: true }) sets this as a provider-wide
default that per-call options.singleDate overrides.clear() resets the value WITHOUT firing onChange (only setValue()
notifies) — trigger your own refresh after clearing.locale knob (removed as inert): this store emits no
formatted output, so format dates with @molecule/app-i18n in your
rendering layer.Integration checklist — drive the real UI (live preview, no mocks), adapt each item to this app's actual calendar/preset UI and whatever the selected range filters, and check every box off one by one. A box you can't check is an integration bug to fix — not a skip:
startDate <= endDate, that exact range shows in the input/display, and it
fires once via onChange with a { startDate, endDate } payload.onChange payload.minDate/maxDate bounds hold in the UI — a date outside the allowed
window can't be picked (it renders out-of-range/greyed), and any disabled
dates are non-selectable.singleDate: true), picking one day
sets startDate and endDate to that same day and onChange fires with a
same-day range — no second click required.getValue() returns
null, and the dependent view returns to its unfiltered/default state.