ngxsmk-datepicker 3.0.4-beta.0 → 3.0.5-beta.0

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 CHANGED
@@ -2,12 +2,22 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
- **Last updated:** August 18, 2026 - **Current stable:** v3.0.4
5
+ **Last updated:** August 22, 2026 - **Current stable:** v3.0.5
6
6
 
7
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
8
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
9
9
 
10
- ## [Unreleased]
10
+ ## [3.0.5] - 2026-08-22
11
+
12
+ ### Added
13
+
14
+ - **Model Context Protocol (MCP) Server (`@ngxsmk/datepicker-mcp`)**: Standalone MCP server in `mcp-server/` with standardized date intelligence tools (`parse_date`, `calculate_date_range`, `convert_timezone`, `get_holidays`, `validate_date_selection`) and resource endpoints (`datepicker://docs/api`, `datepicker://timezones`) over standard I/O (stdio).
15
+ - **Datepicker UI AI Assistant Widget**: Added `[enableAi]`, `[aiPlaceholder]`, and `[aiResolver]` inputs with `(aiPromptSubmitted)` output on `<ngxsmk-datepicker>` allowing natural language prompt-based date selection with custom asynchronous backend support and automatic fallback parsing.
16
+ - **Developer Workspace Configurations**: Integrated `.vscode/mcp.json` (Cursor IDE), `.gemini/mcp_config.json` (Antigravity/Gemini CLI), and complete documentation in `docs/MCP_INTEGRATION.md`.
17
+
18
+ ### Fixed
19
+
20
+ - **Focus Loss on Keyboard Navigation via Shortcuts (Issue #313)**: Fixed issue where keyboard shortcut navigation (`PageUp`, `PageDown`, `Shift+PageUp`, `Shift+PageDown`, `Home`, `End`, cross-month arrow navigation, and letter shortcuts) caused focus loss due to calendar grid re-rendering without restoring DOM focus. Now automatically refocuses the target date cell, updates `focusedDate` with day-clamping and validity fallback, and forwards body-appended popover keydown events seamlessly ([#313](https://github.com/NGXSMK/ngxsmk-datepicker/issues/313)).
11
21
 
12
22
  ## [3.0.4] - 2026-08-18
13
23
 
package/MIGRATION.md CHANGED
@@ -2,10 +2,11 @@
2
2
 
3
3
  This document provides migration instructions for upgrading between major versions of ngxsmk-datepicker.
4
4
 
5
- **Last updated:** August 18, 2026 - **Current stable:** v3.0.4
5
+ **Last updated:** August 22, 2026 - **Current stable:** v3.0.5
6
6
 
7
7
  ## Table of Contents
8
8
 
9
+ - [v3.0.4 → v3.0.5](#v304---v305)
9
10
  - [v3.0.3 → v3.0.4](#v303---v304)
10
11
  - [v2.4.0 → v3.0.3](#v240---v303)
11
12
  - [v2.2.15 → v2.3.1](#v2215---v231)
@@ -61,6 +62,17 @@ This document provides migration instructions for upgrading between major versio
61
62
  - [v1.8.0 → v1.9.0](#v180---v190)
62
63
  - [v1.7.0 → v1.8.0](#v170---v180)
63
64
 
65
+ ## v3.0.4 → v3.0.5
66
+
67
+ ### Changes
68
+
69
+ This release includes major AI & Model Context Protocol (MCP) integrations alongside bugfixes:
70
+
71
+ - **Model Context Protocol (MCP) Server (`@ngxsmk/datepicker-mcp`)**: Standalone MCP server in `mcp-server/` with standardized date intelligence tools (`parse_date`, `calculate_date_range`, `convert_timezone`, `get_holidays`, `validate_date_selection`), prompts (`schedule_meeting`, `plan_time_off`), and resources (`datepicker://docs/api`, `datepicker://timezones`).
72
+ - **Multi-LLM Native Adapters**: Native support for **Claude** (`--export-claude`), **Google Gemini** (`--export-gemini`), **OpenAI** (`--export-openai`), and **Cursor/Windsurf** (Stdio MCP).
73
+ - **Datepicker UI AI Assistant Widget**: Added `[enableAi]`, `[aiPlaceholder]`, `[aiSuggestions]`, `[showAiSuggestions]`, and `[aiResolver]` (Promise/Observable) inputs with `(aiPromptSubmitted)` output, async resolving micro-spinner (`isAiResolving`), screen reader announcements, and a `/` keyboard shortcut to focus the prompt bar.
74
+ - **Focus Retention on Keyboard Navigation (Issue #313)**: Fixed issue where keyboard shortcut navigation (`PageUp`, `PageDown`, `Shift+PageUp`, `Shift+PageDown`, `Home`, `End`, cross-month arrow navigation, and letter shortcuts) caused focus loss due to calendar grid re-rendering without restoring DOM focus. Now automatically refocuses the target date cell, updates `focusedDate` with day-clamping and validity fallback, and forwards body-appended popover keydown events.
75
+
64
76
  ## v3.0.3 → v3.0.4
65
77
 
66
78
  ### Changes
package/README.md CHANGED
@@ -30,15 +30,15 @@
30
30
 
31
31
  ---
32
32
 
33
- **Last updated:** August 18, 2026 - **Current stable:** v3.0.4
33
+ **Last updated:** August 22, 2026 - **Current stable:** v3.0.5
34
34
 
35
35
  ### **Overview**
36
36
 
37
37
  **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.
38
38
 
39
- > **Stable Release**: `v3.0.4` is the current stable release with compiled `fesm2022` output and type declarations.
39
+ > **Stable Release**: `v3.0.5` is the current stable release with compiled `fesm2022` output and type declarations.
40
40
  >
41
- > **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 **v3.0.4** on npm.
41
+ > **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 **v3.0.5** on npm.
42
42
 
43
43
  ---
44
44
 
@@ -89,6 +89,7 @@
89
89
  - 🏨 **Availability Calendars**: Per-day prices, indicator dots, and classes via `[dayMetadata]`; server-driven blocked dates via `[asyncDateFilter]`.
90
90
  - 🎛️ **Custom Action Bars**: `[calendarHeaderTemplate]` / `[calendarFooterTemplate]` slots with `clear()`/`close()` actions.
91
91
  - 🛠️ **Plugin Architecture**: Extend functionality via hooks for rendering, validation, and shortcuts.
92
+ - 🤖 **Model Context Protocol (MCP) & AI Assistant**: Standalone MCP server (`@ngxsmk/datepicker-mcp`) with date intelligence tools, plus embedded UI AI prompt bar (`[enableAi]`). See [MCP Integration Guide](docs/MCP_INTEGRATION.md).
92
93
  - 🧪 **Signal Forms Native**: Direct integration with Angular 21's new Signal Forms API.
93
94
  - 🚀 **Zoneless Ready**: Optimized for the future of Angular—works perfectly without zone.js.
94
95
  - ♿ **Full Accessibility**: WAI-ARIA compliant with extensive keyboard navigation support.
@@ -188,7 +189,7 @@ ng add ngxsmk-datepicker
188
189
  The `ng add` schematic installs the package, adds the `luxon` peer dependency if it is missing, and prints a getting-started snippet. Plain npm works too:
189
190
 
190
191
  ```bash
191
- npm install ngxsmk-datepicker@3.0.4
192
+ npm install ngxsmk-datepicker@3.0.5
192
193
  ```
193
194
 
194
195
  ### Alternative installation
@@ -197,12 +198,12 @@ You can install without npm using any of these methods (peer dependencies must s
197
198
 
198
199
  | Method | Command |
199
200
  |--------|--------|
200
- | **Yarn** | `yarn add ngxsmk-datepicker@3.0.4` |
201
- | **pnpm** | `pnpm add ngxsmk-datepicker@3.0.4` |
202
- | **Bun** | `bun add ngxsmk-datepicker@3.0.4` |
203
- | **From Git** | `npm install github:NGXSMK/ngxsmk-datepicker#v3.0.4` (requires the repo to have built output or you build from source) |
201
+ | **Yarn** | `yarn add ngxsmk-datepicker@3.0.5` |
202
+ | **pnpm** | `pnpm add ngxsmk-datepicker@3.0.5` |
203
+ | **Bun** | `bun add ngxsmk-datepicker@3.0.5` |
204
+ | **From Git** | `npm install github:NGXSMK/ngxsmk-datepicker#v3.0.5` (requires the repo to have built output or you build from source) |
204
205
  | **Local path** | Build the library in the repo (`npx ng build ngxsmk-datepicker`), then `npm install /path/to/ngxsmk-datepicker/dist/ngxsmk-datepicker` |
205
- | **CDN (ESM)** | Use [unpkg](https://unpkg.com/ngxsmk-datepicker@3.0.4/) or [jsDelivr](https://cdn.jsdelivr.net/npm/ngxsmk-datepicker@3.0.4/) in your bundler or import map; peer dependencies (Angular, etc.) must be installed in your app. |
206
+ | **CDN (ESM)** | Use [unpkg](https://unpkg.com/ngxsmk-datepicker@3.0.5/) or [jsDelivr](https://cdn.jsdelivr.net/npm/ngxsmk-datepicker@3.0.5/) in your bundler or import map; peer dependencies (Angular, etc.) must be installed in your app. |
206
207
 
207
208
  For all options and caveats, see [docs/INSTALLATION.md](docs/INSTALLATION.md).
208
209
 
@@ -963,7 +964,7 @@ We welcome and appreciate contributions from the community! Whether it's reporti
963
964
 
964
965
  ## **📄 Changelog**
965
966
 
966
- **Recent:** Use **v3.0.4** on npm. The v2.3.x line adds side-by-side multi-calendar layouts, natural language typing, timezone selector UI dropdown, warning style selections, and strict TypeScript/AOT stability. Versions 2.0.10 and 2.0.11 are unpublished; use v2.1.1+ or **v3.0.4**.
967
+ **Recent:** Use **v3.0.5** on npm. The v2.3.x line adds side-by-side multi-calendar layouts, natural language typing, timezone selector UI dropdown, warning style selections, and strict TypeScript/AOT stability. Versions 2.0.10 and 2.0.11 are unpublished; use v2.1.1+ or **v3.0.5**.
967
968
 
968
969
  For the full list of changes, see [CHANGELOG.md](https://github.com/NGXSMK/ngxsmk-datepicker/blob/main/CHANGELOG.md).
969
970
 
@@ -1,8 +1,8 @@
1
- # Ionic Framework Integration Guide
1
+ # Ionic Framework Integration Guide
2
2
 
3
- **Last updated:** July 29, 2026 - **Current stable:** v3.0.3
3
+ **Last updated:** August 22, 2026 - **Current stable:** v3.0.5
4
4
 
5
- This guide provides step-by-step instructions for integrating ngxsmk-datepicker with Ionic Angular applications.
5
+ This guide provides step-by-step instructions for integrating `ngxsmk-datepicker` with modern **Ionic 7, 8, & 9+** and **Angular 17–21+** applications.
6
6
 
7
7
  ## Quick Start
8
8
 
@@ -26,55 +26,64 @@ Or import directly in your component:
26
26
  import 'ngxsmk-datepicker/styles/ionic-integration.css';
27
27
  ```
28
28
 
29
- ### 3. Use Inline Mode (Recommended)
29
+ ### 3. Use with Modern Standalone Ionic + Angular Signals
30
30
 
31
31
  ```typescript
32
- import { Component } from '@angular/core';
32
+ import { Component, signal } from '@angular/core';
33
33
  import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
34
- import { IonContent, IonItem, IonLabel } from '@ionic/angular/standalone';
34
+ import { IonContent, IonItem, IonLabel, IonList } from '@ionic/angular/standalone';
35
35
 
36
36
  @Component({
37
37
  selector: 'app-datepicker',
38
38
  standalone: true,
39
- imports: [NgxsmkDatepickerComponent, IonContent, IonItem, IonLabel],
39
+ imports: [NgxsmkDatepickerComponent, IonContent, IonItem, IonLabel, IonList],
40
40
  template: `
41
- <ion-content>
42
- <ion-item>
43
- <ion-label>Select Date</ion-label>
44
- <ngxsmk-datepicker
45
- [inline]="true"
46
- mode="single"
47
- [locale]="'en-US'">
48
- </ngxsmk-datepicker>
49
- </ion-item>
41
+ <ion-content [fullscreen]="true">
42
+ <ion-list [inset]="true">
43
+ <ion-item>
44
+ <ion-label position="stacked">Booking Date</ion-label>
45
+ <ngxsmk-datepicker
46
+ [(ngModel)]="selectedDate"
47
+ [inline]="true"
48
+ mode="single"
49
+ [locale]="'en-US'"
50
+ [enableAi]="true"
51
+ [showAiSuggestions]="true"
52
+ >
53
+ </ngxsmk-datepicker>
54
+ </ion-item>
55
+ </ion-list>
50
56
  </ion-content>
51
57
  `
52
58
  })
53
- export class DatepickerPage {}
59
+ export class DatepickerPage {
60
+ selectedDate = signal<Date | null>(new Date());
61
+ }
54
62
  ```
55
63
 
56
- ## Configuration Options
64
+ ## Configuration & Mobile Best Practices
57
65
 
58
66
  ### Disable Focus Trap (for Ionic Modals)
59
67
 
60
- When using datepicker inside `ion-modal`, disable focus trapping to avoid conflicts:
68
+ When using datepicker inside `ion-modal`, disable focus trapping to prevent focus loops:
61
69
 
62
- ```typescript
70
+ ```html
63
71
  <ngxsmk-datepicker
64
72
  [inline]="true"
65
73
  [disableFocusTrap]="true"
66
- mode="single">
67
- </ngxsmk-datepicker>
74
+ mode="single"
75
+ ></ngxsmk-datepicker>
68
76
  ```
69
77
 
70
- ### Ionic Theme Integration
78
+ ### Ionic 8 Dark Mode (`.ion-palette-dark`)
71
79
 
72
- The integration styles automatically map Ionic theme variables:
80
+ The integration stylesheet automatically detects Ionic 8's `.ion-palette-dark` and legacy `.ion-theme-dark`:
73
81
 
74
82
  - `--ion-color-primary` → `--datepicker-primary-color`
75
83
  - `--ion-background-color` → `--datepicker-background`
76
84
  - `--ion-text-color` → `--datepicker-text-color`
77
85
  - `--ion-border-color` → `--datepicker-border-color`
86
+ - `--ion-font-family` → `--datepicker-font-family`
78
87
 
79
88
  ## Usage Patterns
80
89