Skip to content
This repository was archived by the owner on Mar 14, 2025. It is now read-only.

ankurk91/vue-flatpickr-component

Repository files navigation

Vue FlatPickr Component

downloads jsdelivr npm-version github-tag build codecov license ts

Vue.js component for Flatpickr date-time picker.

Version matrix

Vue.js version Package version Branch
2.x 8.x 8.x
3.x 12.x main

Features

  • Reactive v-model value
    • You can change flatpickr value programmatically
  • Reactive config options
    • You can change config options dynamically
    • Component will watch for any changes and redraw itself
  • Can emit all possible events
  • Compatible with Bootstrap or any other CSS framework
  • Supports wrapped mode
  • Works with validation libraries

Installation

npm install vue-flatpickr-component@^11

Usage

Minimal example

<template> <flat-pickr v-model="date"/> </template> <script setup> import {ref} from 'vue'; import flatPickr from 'vue-flatpickr-component'; import 'flatpickr/dist/flatpickr.css'; const date = ref(null); </script>

Detailed example

Using Bootstrap input group and Font Awesome icons

<template> <section> <div class="form-group"> <label>Select a date</label> <div class="input-group"> <flat-pickr v-model="date" :config="config" class="form-control" placeholder="Select date" name="date"/> <div class="input-group-append"> <button class="btn btn-default" type="button" title="Toggle" data-toggle> <i class="fa fa-calendar"/> <span aria-hidden="true" class="sr-only">Toggle</span> </button> <button class="btn btn-default" type="button" title="Clear" data-clear> <i class="fa fa-times"/> <span aria-hidden="true" class="sr-only">Clear</span> </button> </div> </div> </div> <pre>Selected date is - {{date}}</pre> </section> </template> <script setup> import {ref} from 'vue'; import 'bootstrap/dist/css/bootstrap.css'; // import this component import flatPickr from 'vue-flatpickr-component'; import 'flatpickr/dist/flatpickr.css'; // theme is optional // try more themes at - https://flatpickr.js.org/themes/ import 'flatpickr/dist/themes/material_blue.css'; // localization is optional import {Hindi} from 'flatpickr/dist/l10n/hi.js'; const date = ref('2022-10-28'); // Read more at https://flatpickr.js.org/options/ const config = ref({ wrap: true, // set wrap to true only when using 'input-group' altFormat: 'M j, Y', altInput: true, dateFormat: 'Y-m-d', locale: Hindi, // locale for this instance only  }); </script>

Events

  • The component can emit all possible events, you can listen to them in your component
<flat-pickr v-model="date" @on-change="doSomethingOnChange" @on-close="doSomethingOnClose"/>
  • Event names has been converted to kebab-case.
  • You can still pass your callback methods in :config like original flatpickr do.

Available props

The component accepts these props:

Attribute Type Default Description
v-model String / Date Object / Array / Timestamp / null null Set or Get date-picker value (required)
config Object { wrap: false } Flatpickr configuration options
events Array Array of sensible events Customise the events to be emitted

Use in browser with CDN

<!-- Flatpickr related files --> <link href="https://cdn.jsdelivr.net/npm/flatpickr@4/dist/flatpickr.min.css" rel="stylesheet"> <script src="https://cdn.jsdelivr.net/npm/flatpickr@4/dist/flatpickr.min.js"></script> <!-- Vue.js --> <script src="https://cdn.jsdelivr.net/npm/vue@3.3"></script> <!-- Lastly add this package --> <script src="https://cdn.jsdelivr.net/npm/vue-flatpickr-component@11"></script> <script> const app = Vue.createApp({}) app.component('flat-pickr', VueFlatpickr.default); app.mount("#app"); </script>

Run examples on your localhost

  • Clone this repo
  • Make sure you have node-js >=20.11 and pnpm >=9.x pre-installed
  • Install dependencies pnpm install
  • Run webpack dev server npm start
  • This should open the demo page in your default web browser

Testing

  • This package is using Jest and vue-test-utils for testing.
  • Tests can be found in __test__ folder.
  • Execute tests with this command npm test

Changelog

Please see CHANGELOG for more information what has changed recently.

License

MIT License

Contributors 14