ngxsmk-datepicker 2.3.0 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1246 -0
- package/LICENSE +21 -0
- package/MIGRATION.md +1794 -0
- package/README.md +11 -4
- package/docs/API.md +8 -1
- package/docs/COMPATIBILITY.md +2 -1
- package/docs/INTEGRATION.md +2 -1
- package/docs/IONIC_INTEGRATION.md +2 -1
- package/docs/IONIC_TESTING.md +2 -1
- package/docs/LOCALE-GUIDE.md +2 -1
- package/docs/PLUGIN-ARCHITECTURE.md +2 -1
- package/docs/SEO.md +2 -1
- package/docs/SSR-EXAMPLE.md +2 -1
- package/docs/THEME-TOKENS.md +2 -1
- package/docs/TIMEZONE.md +14 -1
- package/docs/extension-points.md +2 -1
- package/docs/signal-forms.md +2 -1
- package/docs/signals.md +2 -1
- package/docs/ssr.md +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -25,15 +25,15 @@
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
**Last updated:**
|
|
28
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
29
29
|
|
|
30
30
|
### **Overview**
|
|
31
31
|
|
|
32
32
|
**ngxsmk-datepicker** is a high-performance, enterprise-ready date and range picker engineered for the modern Angular ecosystem (v17+). Built from the ground up with **Angular Signals**, it delivers a seamless, zoneless-ready experience for both desktop and mobile (Ionic) applications.
|
|
33
33
|
|
|
34
|
-
> **Stable Release**: `v2.
|
|
34
|
+
> **Stable Release**: `v2.3.1` is the current stable release with compiled `fesm2022` output and type declarations.
|
|
35
35
|
>
|
|
36
|
-
> **Stable line**: v2.
|
|
36
|
+
> **Stable line**: v2.3.x includes side-by-side **`calendars`**, **natural language input**, searchable **timezone selection dropdown UI**, dynamic range presets, and warning range highlighting. Versions **2.0.10** and **2.0.11** were broken and have been **unpublished**; use **v2.1.1+** or current **v2.3.1** on npm.
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
@@ -518,6 +518,10 @@ By default, the datepicker input is `readonly` to prevent invalid date strings a
|
|
|
518
518
|
| classes | object | undefined | Tailwind-friendly class overrides (wrapper, input, popover, etc.). |
|
|
519
519
|
| enableGoogleCalendar| boolean | false | Enable seamless Google Calendar integration and sync. |
|
|
520
520
|
| googleClientId | string \| null | null | Google API OAuth 2.0 Web Client ID for authentication. |
|
|
521
|
+
| calendars | number | 1 | Multi-calendar display layout (supports 1, 2, or 3 side-by-side calendars). |
|
|
522
|
+
| rangePresetFactory | (today: Date) => DatePreset[] | null | Callback function supplying dynamic rolling range presets. |
|
|
523
|
+
| showTimezoneSelector | boolean | false | Enables searchable IANA timezone selection dropdown UI. |
|
|
524
|
+
| enableNaturalLanguage | boolean | false | Enables manual relative keyboard typing input (e.g. "today", "in 3 days"). |
|
|
521
525
|
|
|
522
526
|
### **Outputs**
|
|
523
527
|
|
|
@@ -526,6 +530,9 @@ By default, the datepicker input is `readonly` to prevent invalid date strings a
|
|
|
526
530
|
| valueChange | DatepickerValue | Emits the newly selected date, range, or array of dates. |
|
|
527
531
|
| action | { type: string; payload?: any } | Emits various events like `dateSelected`, `timeChanged`, etc. |
|
|
528
532
|
| googleSyncClick | void | Emitted when the user clicks the Google Calendar sync button. |
|
|
533
|
+
| invalidRange | { start: Date; end: Date; disabledDatesInside: Date[] } | Emitted when selected date range contains disabled dates. |
|
|
534
|
+
| naturalLanguageResolved | Date \| { start: Date; end: Date } | Emitted when user types relative natural language date input. |
|
|
535
|
+
| timezoneChange | string | Emitted when timezone selection is changed. |
|
|
529
536
|
|
|
530
537
|
## **🎨 Theming**
|
|
531
538
|
|
|
@@ -850,7 +857,7 @@ We welcome and appreciate contributions from the community! Whether it's reporti
|
|
|
850
857
|
|
|
851
858
|
For a full list of changes, please refer to the [CHANGELOG.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/CHANGELOG.md) file.
|
|
852
859
|
|
|
853
|
-
### **v2.
|
|
860
|
+
### **v2.3.1** (Current Stable)`r`n`r`n- **npm**: Published tarballs include compiled `fesm2022/` output and type declarations.
|
|
854
861
|
|
|
855
862
|
### **Earlier Versions**
|
|
856
863
|
|
package/docs/API.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
This document describes the stable public API of ngxsmk-datepicker with comprehensive real-world examples. APIs marked as **stable** are guaranteed to remain backward-compatible within the same major version. APIs marked as **experimental** may change in future releases.
|
|
4
4
|
|
|
5
|
-
**Version**: 2.
|
|
5
|
+
**Version**: 2.3.1+ | **Last updated**: June 3, 2026
|
|
6
6
|
|
|
7
7
|
## Stable vs experimental
|
|
8
8
|
|
|
@@ -102,6 +102,10 @@ import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
|
|
|
102
102
|
| `enableHapticFeedback` | `boolean` | `false` | Stable | Trigger haptic feedback on supported devices when selecting/clearing. | `[enableHapticFeedback]="true"` |
|
|
103
103
|
| `enablePullToRefresh` | `boolean` | `false` | Experimental | Reserve for future pull-to-refresh on mobile. | — |
|
|
104
104
|
| `enableVoiceInput` | `boolean` | `false` | Experimental | Reserve for future voice input. | — |
|
|
105
|
+
| `calendars` | `number` | `1` | Stable | Multi-calendar display layout (1, 2, or 3 months side-by-side) | `[calendars]="2"` |
|
|
106
|
+
| `rangePresetFactory` | `(today: Date) => DatePreset[]` | `null` | Stable | Callback function supplying dynamic range presets | `[rangePresetFactory]="myPresetFactory"` |
|
|
107
|
+
| `showTimezoneSelector` | `boolean` | `false` | Stable | Enables searchable timezone selection dropdown UI | `[showTimezoneSelector]="true"` |
|
|
108
|
+
| `enableNaturalLanguage` | `boolean` | `false` | Stable | Enables relative natural language input parsing (e.g. "today", "tomorrow") | `[enableNaturalLanguage]="true"` |
|
|
105
109
|
|
|
106
110
|
##### Outputs
|
|
107
111
|
|
|
@@ -111,6 +115,9 @@ import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
|
|
|
111
115
|
| `action` | `EventEmitter<{ type: string; payload?: any }>` | Stable | Emitted on user actions (dateSelected, timeChanged, etc.) | `(action)="handleAction($event)"` |
|
|
112
116
|
| `googleSyncClick` | `EventEmitter<void>` | Stable | Emitted when the user clicks the Google Calendar sync button. | `(googleSyncClick)="onSyncClick()"` |
|
|
113
117
|
| `validationError` | `EventEmitter<{ code: string; message: string }>` | Stable | Emitted when validation fails (e.g. invalid typed date, date before min, after max). Message is translated. | `(validationError)="onValidationError($event)"` |
|
|
118
|
+
| `invalidRange` | `EventEmitter<{ start: Date; end: Date; disabledDatesInside: Date[] }>` | Stable | Emitted when selected date range contains disabled dates | `(invalidRange)="onInvalidRange($event)"` |
|
|
119
|
+
| `naturalLanguageResolved` | `EventEmitter<Date \| { start: Date; end: Date }>` | Stable | Emitted when natural language input is parsed successfully | `(naturalLanguageResolved)="onResolved($event)"` |
|
|
120
|
+
| `timezoneChange` | `EventEmitter<string>` | Stable | Emitted when timezone is changed via selector UI | `(timezoneChange)="onTimezoneChange($event)"` |
|
|
114
121
|
|
|
115
122
|
#### Methods
|
|
116
123
|
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Version Compatibility Matrix
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This document provides comprehensive compatibility information for `ngxsmk-datepicker` across different Angular versions, Zone.js configurations, and SSR/CSR setups.
|
|
6
6
|
|
|
@@ -468,3 +468,4 @@ Recommended validation before tagging a release:
|
|
|
468
468
|
**Ionic/Capacitor sample**: The `examples/ionic-test-app` project may require `npm install --legacy-peer-deps` when Ionic’s peers lag Angular—see [examples/ionic-test-app/README.md](../../../examples/ionic-test-app/README.md).
|
|
469
469
|
|
|
470
470
|
|
|
471
|
+
|
package/docs/INTEGRATION.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Integration Guides
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This document provides integration examples for using ngxsmk-datepicker with popular frameworks and libraries.
|
|
6
6
|
|
|
@@ -700,3 +700,4 @@ See the demo app **Integrations** page for a full "Datepicker in a modal" exampl
|
|
|
700
700
|
- [Locale Guide](./LOCALE-GUIDE.md)
|
|
701
701
|
|
|
702
702
|
|
|
703
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ionic Framework Integration Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This guide provides step-by-step instructions for integrating ngxsmk-datepicker with Ionic Angular applications.
|
|
6
6
|
|
|
@@ -225,3 +225,4 @@ export class DatepickerPage {
|
|
|
225
225
|
- [Capacitor Keyboard Plugin](https://capacitorjs.com/docs/apis/keyboard)
|
|
226
226
|
|
|
227
227
|
|
|
228
|
+
|
package/docs/IONIC_TESTING.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Ionic Integration Testing Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This document provides comprehensive testing instructions for verifying ngxsmk-datepicker compatibility with Ionic Framework.
|
|
6
6
|
|
|
@@ -145,3 +145,4 @@ jobs:
|
|
|
145
145
|
4. **Report issues** with detailed information
|
|
146
146
|
|
|
147
147
|
|
|
148
|
+
|
package/docs/LOCALE-GUIDE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Locale Packs & i18n Contributor Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
Guide for adding locale support and contributing translations to ngxsmk-datepicker.
|
|
6
6
|
|
|
@@ -297,3 +297,4 @@ If you encounter issues with a specific locale or want to contribute improvement
|
|
|
297
297
|
**Thank you for contributing to ngxsmk-datepicker's internationalization!**
|
|
298
298
|
|
|
299
299
|
|
|
300
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plugin Architecture
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
ngxsmk-datepicker features a powerful **plugin architecture** that allows you to extend and customize the component's behavior without modifying its core code. This architecture is built on a **hook-based system** that provides extension points throughout the component's lifecycle.
|
|
6
6
|
|
|
@@ -927,3 +927,4 @@ The plugin architecture in ngxsmk-datepicker provides:
|
|
|
927
927
|
For more examples and detailed hook documentation, see [Extension Points Guide](./extension-points.md).
|
|
928
928
|
|
|
929
929
|
|
|
930
|
+
|
package/docs/SEO.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# SEO Optimization Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This document outlines the SEO optimizations implemented for ngxsmk-datepicker to improve search engine visibility and discoverability.
|
|
6
6
|
|
|
@@ -211,3 +211,4 @@ ngxsmk-datepicker has been optimized for search engines with comprehensive meta
|
|
|
211
211
|
- [Web.dev SEO Guide](https://web.dev/learn/seo/)
|
|
212
212
|
|
|
213
213
|
|
|
214
|
+
|
package/docs/SSR-EXAMPLE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Server-Side Rendering (SSR) Example
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
Complete example demonstrating ngxsmk-datepicker with Angular Universal (SSR).
|
|
6
6
|
|
|
@@ -424,3 +424,4 @@ test('datepicker works after SSR hydration', async ({ page }) => {
|
|
|
424
424
|
- [Platform Detection](https://angular.io/api/common/isPlatformBrowser)
|
|
425
425
|
|
|
426
426
|
|
|
427
|
+
|
package/docs/THEME-TOKENS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Theme Tokens & CSS Custom Properties
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
Complete reference for all CSS custom properties (CSS variables) available in ngxsmk-datepicker.
|
|
6
6
|
|
|
@@ -321,3 +321,4 @@ CSS custom properties are supported in all modern browsers:
|
|
|
321
321
|
For older browsers, consider using a CSS custom properties polyfill or provide fallback values.
|
|
322
322
|
|
|
323
323
|
|
|
324
|
+
|
package/docs/TIMEZONE.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Timezone Support
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
## Overview
|
|
6
6
|
|
|
@@ -258,6 +258,19 @@ const date = new Date(serverResponse.dateString.replace('Z', '')); // Don't remo
|
|
|
258
258
|
- **Description**: IANA timezone name for date formatting
|
|
259
259
|
- **Example**: `'America/New_York'`, `'UTC'`, `'Europe/London'`
|
|
260
260
|
|
|
261
|
+
### Input: `showTimezoneSelector`
|
|
262
|
+
|
|
263
|
+
- **Type**: `boolean`
|
|
264
|
+
- **Default**: `false`
|
|
265
|
+
- **Description**: Enables a searchable timezone selection dropdown UI in the datepicker header.
|
|
266
|
+
- **Example**: `[showTimezoneSelector]="true"`
|
|
267
|
+
|
|
268
|
+
### Output: `timezoneChange`
|
|
269
|
+
|
|
270
|
+
- **Type**: `EventEmitter<string>`
|
|
271
|
+
- **Description**: Emitted when the user changes the active timezone via the selector UI.
|
|
272
|
+
- **Example**: `(timezoneChange)="onTimezoneChange($event)"`
|
|
273
|
+
|
|
261
274
|
### Utility Functions
|
|
262
275
|
|
|
263
276
|
The library exports timezone utility functions:
|
package/docs/extension-points.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Extension Points and Hooks
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
ngxsmk-datepicker provides comprehensive extension points through the `hooks` input, allowing you to customize rendering, validation, keyboard shortcuts, formatting, and event handling.
|
|
6
6
|
|
|
@@ -416,3 +416,4 @@ import {
|
|
|
416
416
|
```
|
|
417
417
|
|
|
418
418
|
|
|
419
|
+
|
package/docs/signal-forms.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Signal Forms Integration
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
This guide covers using ngxsmk-datepicker with Angular 21+ Signal Forms API.
|
|
6
6
|
|
|
@@ -597,3 +597,4 @@ If `form().dirty()` returns `false` after selecting a date:
|
|
|
597
597
|
4. **Check dev console warnings**: In development mode, the datepicker logs warnings if it falls back to direct signal mutation, which may not track dirty state correctly.
|
|
598
598
|
|
|
599
599
|
|
|
600
|
+
|
package/docs/signals.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Signals Integration Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
ngxsmk-datepicker is fully compatible with Angular Signals, providing seamless integration with both traditional reactive forms and modern signal-based patterns.
|
|
6
6
|
|
|
@@ -263,3 +263,4 @@ dateSignal = signal<DatepickerValue>(null);
|
|
|
263
263
|
The datepicker supports both patterns simultaneously, so you can migrate gradually.
|
|
264
264
|
|
|
265
265
|
|
|
266
|
+
|
package/docs/ssr.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Server-Side Rendering (SSR) Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
3
|
+
**Last updated:** June 3, 2026 - **Current stable:** v2.3.1
|
|
4
4
|
|
|
5
5
|
ngxsmk-datepicker is fully compatible with Angular Universal and server-side rendering. This guide covers SSR setup, best practices, and troubleshooting.
|
|
6
6
|
|
|
@@ -302,3 +302,4 @@ export class SSRExampleComponent {
|
|
|
302
302
|
- [Platform Detection](https://angular.dev/api/common/isPlatformBrowser)
|
|
303
303
|
|
|
304
304
|
|
|
305
|
+
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngxsmk-datepicker",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.1",
|
|
4
4
|
"description": "Lightweight, accessible date and range picker for Angular 17+. Standalone component, Signals, SSR and zoneless-ready, Luxon-based i18n and timezones.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Sachin Dilshan",
|