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/README.md CHANGED
@@ -25,15 +25,15 @@
25
25
 
26
26
  ---
27
27
 
28
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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.2.15` is the current stable release with compiled `fesm2022` output and type declarations.
34
+ > **Stable Release**: `v2.3.1` is the current stable release with compiled `fesm2022` output and type declarations.
35
35
  >
36
- > **Stable line**: v2.2.x includes **`allowSameDay`**, **IANA timezone** support, validation fixes, and strict TypeScript improvements. Versions **2.0.10** and **2.0.11** were **unpublished**; use **v2.1.1+** or **v2.2.15** on npm.
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.2.15** (Current Stable)`r`n`r`n- **npm**: Published tarballs include compiled `fesm2022/` output and type declarations.
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.2.15+ | **Last updated**: March 21, 2026
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
 
@@ -1,6 +1,6 @@
1
1
  # Version Compatibility Matrix
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Integration Guides
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Ionic Integration Testing Guide
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Locale Packs & i18n Contributor Guide
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Server-Side Rendering (SSR) Example
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Theme Tokens & CSS Custom Properties
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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:
@@ -1,6 +1,6 @@
1
1
  # Extension Points and Hooks
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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
+
@@ -1,6 +1,6 @@
1
1
  # Signal Forms Integration
2
2
 
3
- **Last updated:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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:** May 19, 2026 - **Current stable:** v2.2.15
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.0",
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",