---
title: 'Input Datepicker: Use Cases'
parts:
  - Input Datepicker
  - Use Cases
eleventyNavigation:
  key: 'Input Datepicker: Use Cases'
  order: 20
  parent: Input Datepicker
  title: Use Cases
---

# Input Datepicker: Use Cases

```js script
import { html } from '@mdjs/mdjs-preview';
import { MinMaxDate, IsDateDisabled } from '@lion/ui/form-core.js';
import { loadDefaultFeedbackMessages } from '@lion/ui/validate-messages.js';
import { formatDate } from '@lion/ui/localize.js';
import '@lion/ui/define/lion-input-datepicker.js';
loadDefaultFeedbackMessages();
```

## Minimum and maximum date

Below are examples of different validators for dates.

```js preview-story
export const minimumAndMaximumDate = () => html`
  <lion-input-datepicker
    label="MinMaxDate"
    .modelValue="${new Date('2018/05/30')}"
    .validators="${[new MinMaxDate({ min: new Date('2018/05/24'), max: new Date('2018/06/24') })]}"
  >
    <div slot="help-text">
      Enter a date between ${formatDate(new Date('2018/05/24'))} and
      ${formatDate(new Date('2018/06/24'))}.
    </div>
  </lion-input-datepicker>
`;
```

## Disable specific dates

```js preview-story
export const disableSpecificDates = () => html`
  <lion-input-datepicker
    label="IsDateDisabled"
    help-text="You're not allowed to choose any 15th."
    .modelValue="${new Date('2023/06/15')}"
    .validators="${[new IsDateDisabled(d => d.getDate() === 15)]}"
  ></lion-input-datepicker>
`;
```

## Calendar heading

You can modify the heading of the calendar with the `.calendarHeading` property or `calendar-heading` attribute for simple values.

By default, it will take the label value.

```js preview-story
export const calendarHeading = () => html`
  <lion-input-datepicker
    label="Date"
    .calendarHeading="${'Custom heading'}"
    .modelValue="${new Date()}"
  ></lion-input-datepicker>
`;
```

## Disabled

You can disable datepicker inputs.

```js preview-story
export const disabled = () => html`
  <lion-input-datepicker label="Disabled" disabled></lion-input-datepicker>
`;
```

## Read only

You can set datepicker inputs to `readonly`, which will prevent the user from opening the calendar popup.

```js preview-story
export const readOnly = () => html`
  <lion-input-datepicker label="Readonly" readonly .modelValue="${new Date()}">
  </lion-input-datepicker>
`;
```

## Faulty prefilled

Faulty prefilled input will be cleared

```js preview-story
export const faultyPrefilled = () => html`
  <lion-input-datepicker label="Faulty prefilled" .modelValue="${new Date('30/01/2022')}">
  </lion-input-datepicker>
`;
```

## Accessibility

To ensure an accessible experience for all users, including those using screen readers, provide a descriptive label for your datepicker. An aria-label will be build based on it: "Open {label} picker". In case your label doesn't fit, you can replace it with the `fieldName` property.

### Using fieldName property

If your label is too long for the aria-label text "Open {label} picker", provide a shorter `fieldName` to keep the picker button's aria-label concise:

```js preview-story
export const ariaLabelFieldName = () => html`
  <lion-input-datepicker label="Event start date and time" .fieldName="${'StartDate'}">
  </lion-input-datepicker>
`;
```
