Skip to content

Datepicker

Base input type date

Usage

Simple Usage

preview
vue
<template>
  <p-datepicker />
</template>

Sizing

Datepicker has 4 variants size: xs, sm, md, lg, default is md.

preview
vue
<template>
  <p-datepicker size="xs" />
  <p-datepicker size="sm" />
  <p-datepicker size="md" />
  <p-datepicker size="lg" />
</template>

Placement

You can customize the datepicker position using the placement prop. This flexibility ensures that the datepicker fits seamlessly within your user interface. The placement prop determines where the datepicker will appear in relation to the input field.

preview
vue
<template>
  <p-datepicker placement="left" />
</template>

Combining Placement

You can further refine the placement by combining it with a suffix to adjust vertical/horizontal alignment. This suffix is useful for aligning the datepicker with the start (*-start) or end (*-end) of the input field.

preview
vue
<template>
  <p-datepicker placement="bottom-end" />
</template>

Placeholder

You can set input placeholder via placeholder props

preview
vue
<template>
  <p-datepicker placeholder="Pick A Date" />
</template>

Display Format

You can date via prop format. default is dd/MM/yyyy

preview
vue
<template>
  <p-datepicker
    v-model="value"
    format="yyyy-MM-dd" />
</template>

Limiting Date

You can limit the date via min or max props

preview
vue
<template>
  <!-- Limit this year only -->
  <p-datepicker
    :min="min"
    :max="max" />
</template>

<script lang="ts" setup>
  import { startOfYear, endOfYear } from 'date-fns'

  const min = startOfYear(new Date())
  const max = endOfYear(new Date())
</script>

Mode Variant

There 3 available mode: date , month, year. default is date. it will limit user input the date.

for example, mode month make user can only select the month, but can't select what spesific date.

preview
vue
<template>
  <p-datepicker
    format="dd MMM yyyy"
    mode="date" />
  <p-datepicker
    format="MMM yyyy"
    mode="month" />
  <p-datepicker
    format="yyyy"
    mode="year" />
</template>

Range Picker

Set prop range to true to enable date range picker mode.

preview
vue
<template>
  <p-datepicker range />
</template>

Min and Max Range

You can limit minimal and maximal date range to pick using prop min-range and max-range.

preview
vue
<template>
  <!-- Limit min 3 days and max 7 days -->
  <p-datepicker range min-range="3D" max-range="7D" />
</template>

👉 See here to more information about range format value.

Disabled State

preview
vue
<template>
  <p-datepicker disabled />
</template>

Readonly state

preview
vue
<template>
  <p-datepicker readonly />
</template>

Error state

preview
vue
<template>
  <p-datepicker error />
</template>

Clearable

Add clear button to input with prop clearable.

preview
vue
<template>
  <p-datepicker clearable />
</template>

Binding v-model

preview
vue
<template>
  <p-datepicker v-vmodel="value" />
</template>

Result :

-

v-model in range mode

There are 2 ways to use v-model in range mode.

1. Using basic v-model

You can use basic v-model to handle date range input, The value will be tuple of Date, [start, end]

preview

result:

-
vue
<template>
  <p-datepicker v-model="result" range />
</template>

2. using v-model:start and v-model:end

You can specific binding the value using v-model:start or v-model:end

preview

start:

-

end:

-
vue
<template>
  <p-datepicker
    v-model:start="start"
    v-model:end="end"
    range />
</template>

API

Props

PropsTypeDefaultDescription
modelValueDate-v-model value
sizeStringmdInput size variant, valid value: xs, sm, md, lg
startDate-v-model:start value
endDate-v-model:end value
placeholderString-Input placeholder
formatStringdd/MM/yyyyDate format
disabledBooleanfalseDisabled state
readonlyBooleanfalseReadonly state
errorBooleanfalseError state
clearableBooleanfalseEnable clear
modeString-Calendar mode valid value: date, month, year
minDate-Minimum date can be selected
maxDate-Maximum date can be selected
rangeBooleanfalseEnable range picker mode
minRangeString-Minimum range date should be selected
maxRangeString-Maximum range date should be selected
container-classString or Array or Object-CSS class to add in the input container

Slots

NameDescription
There no slots here

Events

NameArgumentsDescription
changeNative Date objectEvent when date selected

See Also

Released under the MIT License.