Date Spinner
The component enables merchants to select dates using a spinner interface with scrollable columns for month, day, and year. Use it for compact date selection in space-constrained layouts or when selecting dates close to the current date.
For visual calendar context, consider using instead. For text date entry, use .
Supported targets
- pos.
cart. line-item-details. action. render - pos.
customer-details. action. render - pos.
customer-details. block. render - pos.
draft-order-details. action. render - pos.
draft-order-details. block. render - pos.
exchange. post. action. render - pos.
exchange. post. block. render - pos.
home. modal. render - pos.
order-details. action. render - pos.
order-details. block. render - pos.
product-details. action. render - pos.
product-details. block. render - pos.
purchase. post. action. render - pos.
purchase. post. block. render - pos.
register-details. action. render - pos.
register-details. block. render - pos.
return. post. action. render - pos.
return. post. block. render
Supported targets
- pos.
cart. line-item-details. action. render - pos.
customer-details. action. render - pos.
customer-details. block. render - pos.
draft-order-details. action. render - pos.
draft-order-details. block. render - pos.
exchange. post. action. render - pos.
exchange. post. block. render - pos.
home. modal. render - pos.
order-details. action. render - pos.
order-details. block. render - pos.
product-details. action. render - pos.
product-details. block. render - pos.
purchase. post. action. render - pos.
purchase. post. block. render - pos.
register-details. action. render - pos.
register-details. block. render - pos.
return. post. action. render - pos.
return. post. block. render
Use cases
- Compact selection: Provide compact date selection in space-constrained interfaces.
- Quick navigation: Enable quick date selection by scrolling through nearby dates.
- Modal dialogs: Support date input in modal dialogs where a spinner is more appropriate.
- Touch optimization: Offer touch-optimized scrolling date selection for POS devices.
Anchor to examplesExamples
Anchor to example-select-dates-with-a-spinnerSelect dates with a spinner
Enable compact date selection using a component with scrollable columns for month, day, and year. This example shows a basic date spinner for space-constrained layouts.
Select dates with a spinner

Select dates with a spinner
Anchor to example-control-spinner-visibilityControl spinner visibility
Control visibility programmatically using the command system with show and hide methods. This example demonstrates using button commands to display or dismiss the spinner picker, enabling custom trigger patterns for date selection in constrained layouts.
Control spinner visibility
Anchor to example-handle-date-selection-eventsHandle date selection events
Subscribe to date selection events to respond when merchants pick a date from the spinner columns. This example shows how to handle events to capture selected dates, enabling validation, scheduling logic, or dynamic updates based on the chosen date.
Handle date selection events
Examples
Select dates with a spinner
Description
Enable compact date selection using a `DateSpinner` component with scrollable columns for month, day, and year. This example shows a basic date spinner for space-constrained layouts.
Default
<s-button command="--show" commandFor="date-spinner"> Show </s-button> <s-date-spinner id="date-spinner" value="2021-09-17" />Control spinner visibility
Description
Control `DateSpinner` visibility programmatically using the command system with `show` and `hide` methods. This example demonstrates using button commands to display or dismiss the spinner picker, enabling custom trigger patterns for date selection in constrained layouts.
Default
<> <s-button command="--show" commandFor="date-spinner"> Select Date </s-button> <s-date-spinner id="date-spinner" value="2024-10-26" onChange={(event) => console.log('Date selected:', event.currentTarget.value)} /> </>;Handle date selection events
Description
Subscribe to date selection events to respond when merchants pick a date from the spinner columns. This example shows how to handle `onChange` events to capture selected dates, enabling validation, scheduling logic, or dynamic updates based on the chosen date.
Default
<s-date-spinner value="2024-10-26" onInput={(event) => console.log('Input:', event.currentTarget.value)} onChange={(event) => console.log('Change:', event.currentTarget.value)} onFocus={(event) => console.log('Focus')} onBlur={(event) => console.log('Blur')} />
Anchor to propertiesProperties
Configure the following properties on the component.
- Anchor to idididstringstring
A unique identifier for the element.
- Anchor to valuevaluevaluestringstringDefault: ""Default: ""
Current selected value for the spinner.
This uses a date in
format.
Anchor to eventsEvents
The component provides event callbacks for handling user interactions. Learn more about handling events.
- Anchor to blurblurblur(event: CallbackEvent<"s-date-spinner">) => void(event: CallbackEvent<"s-date-spinner">) => void
Callback when the date spinner is dismissed.
- Anchor to changechangechange(event: CallbackEvent<"s-date-spinner">) => void(event: CallbackEvent<"s-date-spinner">) => void
Callback when the value changes. Only called when a different value is selected.
- Anchor to focusfocusfocus(event: CallbackEvent<"s-date-spinner">) => void(event: CallbackEvent<"s-date-spinner">) => void
Callback when the date spinner is revealed.
- Anchor to inputinputinput(event: CallbackEvent<"s-date-spinner">) => void(event: CallbackEvent<"s-date-spinner">) => void
Callback when the user makes a selection.
CallbackEvent
- bubbles
boolean - cancelable
boolean - composed
boolean - currentTarget
HTMLElementTagNameMap[T] - detail
any - eventPhase
number - target
HTMLElementTagNameMap[T] | null
interface CallbackEvent<T extends keyof HTMLElementTagNameMap> {
currentTarget: HTMLElementTagNameMap[T];
bubbles?: boolean;
cancelable?: boolean;
composed?: boolean;
detail?: any;
eventPhase: number;
target: HTMLElementTagNameMap[T] | null;
}Anchor to best-practicesBest practices
- Use for space-constrained layouts: Choose
for narrow layouts or split-screen interfaces where a calendar view would be impractical. - Best for nearby dates: Use when selecting dates close to the current date. For distant dates,
provides faster navigation. - Provide interaction cues: Consider labels or instructions to help first-time users understand the scrollable column interface.