A lightweight Angular wrapper for flatpickr with full reactive forms support
- π― Angular Native - Built specifically for Angular 17-20
- π Reactive Forms - Full integration with Angular reactive forms
- π¨ Customizable - All flatpickr options supported
- π± Mobile Friendly - Touch-optimized date selection
- π i18n Support - Multiple locale support
- β‘ Lightweight - Minimal bundle impact
- π§ TypeScript - Full type safety and IntelliSense
- π Standalone - Works with standalone components
npm install flatpickr ngx-flatpickr-wrapper
# or
yarn add flatpickr ngx-flatpickr-wrapper
# or
pnpm add flatpickr ngx-flatpickr-wrapperAdd flatpickr CSS to your angular.json:
{
"styles": ["node_modules/flatpickr/dist/flatpickr.min.css"]
}Or import in your global styles.css:
@import 'flatpickr/dist/flatpickr.min.css';import { NgxFlatpickrWrapperComponent } from 'ngx-flatpickr-wrapper';
@Component({
selector: 'app-example',
standalone: true,
imports: [NgxFlatpickrWrapperComponent, ReactiveFormsModule],
template: `
<form [formGroup]="form">
<ngx-flatpickr-wrapper formControlName="date" placeholder="Select a date"> </ngx-flatpickr-wrapper>
</form>
`,
})
export class ExampleComponent {
form = this.fb.group({
date: [''],
});
constructor(private fb: FormBuilder) {}
}<ngx-flatpickr-wrapper formControlName="date" placeholder="Pick a date"> </ngx-flatpickr-wrapper>import { FlatpickrOptions } from 'ngx-flatpickr-wrapper';
export class MyComponent {
dateTimeOptions: FlatpickrOptions = {
enableTime: true,
dateFormat: 'Y-m-d H:i',
};
}<ngx-flatpickr-wrapper [config]="dateTimeOptions" formControlName="datetime" placeholder="Pick date and time">
</ngx-flatpickr-wrapper>dateRangeOptions: FlatpickrOptions = {
mode: 'range',
dateFormat: 'Y-m-d',
};<ngx-flatpickr-wrapper [config]="dateRangeOptions" formControlName="dateRange" placeholder="Select date range">
</ngx-flatpickr-wrapper><ngx-flatpickr-wrapper addClass="custom-input-class" formControlName="date"> </ngx-flatpickr-wrapper>import { FlatpickrOptions } from 'ngx-flatpickr-wrapper';
import { Spanish } from 'flatpickr/dist/l10n/es.js';
export class MyComponent {
spanishOptions: FlatpickrOptions = {
locale: Spanish,
};
}export class MyComponent {
currentDate = new Date();
updateDate() {
this.currentDate = new Date();
}
}<ngx-flatpickr-wrapper [setDate]="currentDate" formControlName="date"> </ngx-flatpickr-wrapper>| Property | Type | Default | Description |
|---|---|---|---|
config |
FlatpickrOptions |
{} |
Flatpickr configuration options |
placeholder |
string |
'' |
Input placeholder text |
addClass |
string |
'' |
Additional CSS classes |
setDate |
string | Date |
undefined |
Programmatically set date |
tabindex |
number |
0 |
Tab index for accessibility |
hideButton |
boolean |
false |
Hide the calendar button |
All flatpickr options are supported through the config input:
interface FlatpickrOptions {
altFormat?: string;
altInput?: boolean;
allowInput?: boolean;
dateFormat?: string;
defaultDate?: string | Date;
disable?: Array<string | Date | Function>;
enable?: Array<string | Date | Function>;
enableTime?: boolean;
enableSeconds?: boolean;
hourIncrement?: number;
inline?: boolean;
locale?: Object;
maxDate?: string | Date;
minDate?: string | Date;
minuteIncrement?: number;
mode?: 'single' | 'multiple' | 'range';
noCalendar?: boolean;
time_24hr?: boolean;
weekNumbers?: boolean;
// ... and many more
}- Chrome (latest)
- Firefox (latest)
- Safari (latest)
- Edge (latest)
- Mobile browsers
- Node.js 18+
- Angular CLI 17+
git clone https://github.com/AngelCareaga/ngx-flatpickr-wrapper.git
cd ngx-flatpickr-wrapper
npm installnpm startnpm run buildThis project uses Prettier for code formatting:
npm run formatnpm testContributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature) - Commit your Changes (
git commit -m 'Add some AmazingFeature') - Push to the Branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- Flatpickr - The excellent date picker library this wrapper is built around
- ng2-flatpickr - Created by MezΕ IstvΓ‘n, which served as inspiration for this project
- Angular Team - For the amazing framework
- π§ Email: dev.angelcareaga@gmail.com
- π Issues: GitHub Issues
- π¬ Discussions: GitHub Discussions
- π Website: angelcareaga.com
Made with β€οΈ by Angel Careaga
β Star this repo if you found it helpful!