ngxsmk-datepicker 2.1.4 → 2.1.6

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,9 +2,38 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
6
+
5
7
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
8
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
9
 
10
+ ## [2.1.6] - 2026-02-17
11
+
12
+ ### Changed
13
+
14
+ - **Version**: Bump to 2.1.6 (current stable release).
15
+
16
+ ## [2.1.5] - 2026-02-17
17
+
18
+ ### Added
19
+
20
+ - **Validation messages (i18n)**: New user-facing validation strings in `DatepickerTranslations`—`invalidDateFormat`, `dateBeforeMin`, `dateAfterMax`, `invalidDate`—with full translation support across all 8 languages. The component shows a translated error message when input is invalid, before min, or after max, and emits `validationError` with `code` and `message`.
21
+ - **Calendar loading state**: Visual loading state (spinner + text) while the calendar is opening or generating. Loading state is announced to screen readers via `AriaLiveService`. A public getter is available for templates to reflect "calendar is loading."
22
+ - **Installation options**: New `docs/INSTALLATION.md` documenting all install methods (npm, Yarn, pnpm, Bun, Git, local path, CDN, tarball). Demo Installation page updated with alternative install commands and a link to the full guide.
23
+ - **Issue-reproduction app**: New minimal Angular app `angular-issue-test` (routes: Home, month-navigation, range-reselection) for manually verifying reported issues. Served via `npx ng serve angular-issue-test`.
24
+
25
+ ### Changed
26
+
27
+ - **Version**: Bump to 2.1.5 (stable release).
28
+ - **Demo app – light/dark theme**: Theme toggle now correctly switches the UI. `data-theme` is synced on the document when theme changes; `html[data-theme='light']` CSS overrides added for the light palette. Nav-link hover uses `var(--color-text-main)` for both themes. Responsive spacing variables use `clamp()`.
29
+ - **Library refactors**: Calendar grid generation and input parsing/formatting logic extracted into `CalendarGenerationService` and `DatepickerParsingService` respectively.
30
+ - **Demo styles**: New utility classes (e.g. `.link`, `.no-underline`, `.text-dim`, `.gap-xs`) and tip label layout tweak.
31
+ - **Docs**: README and library README reference `docs/INSTALLATION.md`. CHANGELOG, MIGRATION, ROADMAP, SECURITY, API_REFERENCE, BUNDLE_SIZE_REPORT, and API.md updated for 2.1.5.
32
+
33
+ ### Fixed
34
+
35
+ - **Demo theme**: Fixed light/dark theme toggle not applying—demo now correctly reflects the active theme (header toggle and system preference).
36
+
8
37
  ## [2.1.4] - 2026-02-13
9
38
 
10
39
  ### Added
package/MIGRATION.md CHANGED
@@ -2,8 +2,12 @@
2
2
 
3
3
  This document provides migration instructions for upgrading between major versions of ngxsmk-datepicker.
4
4
 
5
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
6
+
5
7
  ## Table of Contents
6
8
 
9
+ - [v2.1.5 → v2.1.6](#v215---v216)
10
+ - [v2.1.4 → v2.1.5](#v214---v215)
7
11
  - [v2.1.3 → v2.1.4](#v213---v214)
8
12
  - [v2.1.2 → v2.1.3](#v212---v213)
9
13
  - [v2.1.1 → v2.1.2](#v211---v212)
@@ -48,6 +52,37 @@ This document provides migration instructions for upgrading between major versio
48
52
  - [v1.9.0 → v2.0.0](#v190---v200) (Future)
49
53
  - [v1.7.0 → v1.8.0](#v170---v180)
50
54
 
55
+ ## v2.1.5 → v2.1.6
56
+
57
+ ### Changes
58
+
59
+ - **Version Update**: Updated to version 2.1.6.
60
+ - No breaking changes.
61
+
62
+ ### Migration Steps
63
+
64
+ No migration steps required.
65
+
66
+ ```bash
67
+ npm install ngxsmk-datepicker@2.1.6
68
+ ```
69
+
70
+ ## v2.1.4 → v2.1.5
71
+
72
+ ### Changes
73
+
74
+ - **Version Update**: Updated to version 2.1.5.
75
+ - **New**: User-facing validation messages (i18n) for invalid date, date before min, date after max; calendar loading state (visual + a11y); installation options doc and demo page updates; demo light/dark theme fix; optional issue-reproduction app. Service refactors (calendar generation, parsing) are internal.
76
+ - No breaking changes.
77
+
78
+ ### Migration Steps
79
+
80
+ No migration steps required.
81
+
82
+ ```bash
83
+ npm install ngxsmk-datepicker@2.1.5
84
+ ```
85
+
51
86
  ## v2.1.3 → v2.1.4
52
87
 
53
88
  ### Changes
@@ -160,7 +195,7 @@ npm install ngxsmk-datepicker@2.0.8
160
195
  ### Changes
161
196
 
162
197
  - **Version Update**: Updated to version 2.0.7
163
- - **Stable Release**: Version 2.1.2 is the current stable version
198
+ - **Stable Release**: Version 2.1.6 is the current stable version
164
199
  - No breaking changes.
165
200
 
166
201
  ### Migration Steps
package/README.md CHANGED
@@ -24,13 +24,15 @@
24
24
 
25
25
  ---
26
26
 
27
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
28
+
27
29
  ### **Overview**
28
30
 
29
31
  **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.
30
32
 
31
- > **Stable Release**: `v2.1.4` is live! This major update introduces a significant **UI Refresh (Border Detox)**, **Mobile Stability** improvements, and fixes for circular dependencies.
33
+ > **Stable Release**: `v2.1.6` is live! This release adds **validation messages (i18n)**, **calendar loading state**, **demo light/dark theme fix**, **installation options** doc, and an **issue-reproduction app**. No breaking changes.
32
34
  >
33
- > ⚠️ **Important**: Versions 2.0.10 and 2.0.11 are broken and have been unpublished. Please use v2.1.4 or later.
35
+ > ⚠️ **Important**: Versions 2.0.10 and 2.0.11 are broken and have been unpublished. Please use v2.1.6 or later.
34
36
 
35
37
  ---
36
38
 
@@ -136,9 +138,24 @@ For details, see [CONTRIBUTING.md](https://github.com/NGXSMK/ngxsmk-datepicker/b
136
138
  ## **📦 Installation**
137
139
 
138
140
  ```bash
139
- npm install ngxsmk-datepicker@2.1.4
141
+ npm install ngxsmk-datepicker@2.1.6
140
142
  ```
141
143
 
144
+ ### Alternative installation
145
+
146
+ You can install without npm using any of these methods (peer dependencies must still be installed in your app):
147
+
148
+ | Method | Command |
149
+ |--------|--------|
150
+ | **Yarn** | `yarn add ngxsmk-datepicker@2.1.6` |
151
+ | **pnpm** | `pnpm add ngxsmk-datepicker@2.1.6` |
152
+ | **Bun** | `bun add ngxsmk-datepicker@2.1.6` |
153
+ | **From Git** | `npm install github:NGXSMK/ngxsmk-datepicker#v2.1.6` (requires the repo to have built output or you build from source) |
154
+ | **Local path** | Build the library in the repo (`npx ng build ngxsmk-datepicker`), then `npm install /path/to/ngxsmk-datepicker/dist/ngxsmk-datepicker` |
155
+ | **CDN (ESM)** | Use [unpkg](https://unpkg.com/ngxsmk-datepicker@2.1.6/) or [jsDelivr](https://cdn.jsdelivr.net/npm/ngxsmk-datepicker@2.1.6/) in your bundler or import map; peer dependencies (Angular, etc.) must be installed in your app. |
156
+
157
+ For all options and caveats, see [docs/INSTALLATION.md](docs/INSTALLATION.md).
158
+
142
159
  ## **Usage**
143
160
 
144
161
  ngxsmk-datepicker is a standalone component, so you can import it directly into your component or module.
@@ -211,7 +228,7 @@ For detailed Signal Forms integration including dirty state tracking, see the [S
211
228
 
212
229
  #### **1. Import the Component**
213
230
 
214
- In your component file (e.g., app.component.ts), import NgxsmkDatepickerComponent.
231
+ In your component file (e.g., app.component.ts), import the component (or the module—see troubleshooting below).
215
232
 
216
233
  import { Component } from '@angular/core';
217
234
  import { NgxsmkDatepickerComponent, DateRange, HolidayProvider } from 'ngxsmk-datepicker';
@@ -241,6 +258,8 @@ In your component file (e.g., app.component.ts), import NgxsmkDatepickerComponen
241
258
  }
242
259
  }
243
260
 
261
+ **If you see NG1010** (`'imports' must be an array... Value could not be determined statically`) when using the Angular compiler plugin or in strict AOT builds, use the wrapper module instead: `import { NgxsmkDatepickerModule } from 'ngxsmk-datepicker'` and set `imports: [NgxsmkDatepickerModule]`. The template stays the same (`<ngxsmk-datepicker>`).
262
+
244
263
  #### **2. Add it to Your Template**
245
264
 
246
265
  Use the `<ngxsmk-datepicker>` selector in your HTML template.
@@ -562,7 +581,7 @@ The `locale` input controls all internationalization. It automatically formats m
562
581
 
563
582
  ### **Global Language Support**
564
583
 
565
- ngxsmk-datepicker v2.1.4 now features **full localization synchronization** for:
584
+ ngxsmk-datepicker v2.1.6 now features **full localization synchronization** for:
566
585
 
567
586
  - �� English (`en`)
568
587
  - �� German (`de`)
package/docs/API.md CHANGED
@@ -2,6 +2,8 @@
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.1.6+ | **Last updated**: February 17, 2026
6
+
5
7
  ## Versioning Policy
6
8
 
7
9
  ngxsmk-datepicker follows [Semantic Versioning](https://semver.org/):
@@ -59,6 +61,9 @@ import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
59
61
  | `displayFormat` | `string` | `null` | Stable | Custom date format string (e.g., 'MM/DD/YYYY'). | `displayFormat="DD.MM.YYYY"` |
60
62
  | `showCalendarButton` | `boolean` | `true` | Stable | Show/hide the calendar icon button. When `false`, users can still open calendar by clicking the input field. | `[showCalendarButton]="false"` |
61
63
  | `minuteInterval` | `number` | `1` | Stable | Minute selection interval | `[minuteInterval]="15"` |
64
+ | `showSeconds` | `boolean` | `false` | Stable | Show seconds in time selection | `[showSeconds]="true"` |
65
+ | `secondInterval` | `number` | `1` | Stable | Second selection interval (e.g. 1, 5, 15) | `[secondInterval]="5"` |
66
+ | `use24Hour` | `boolean` | `false` | Stable | Use 24-hour time format (no AM/PM) | `[use24Hour]="true"` |
62
67
  | `showRanges` | `boolean` | `true` | Stable | Show predefined ranges (range mode) | `[showRanges]="true"` |
63
68
  | `ranges` | `DateRange` | `null` | Stable | Predefined date ranges | `[ranges]="quickRanges"` |
64
69
  | `holidayProvider` | `HolidayProvider \| null` | `null` | Stable | Custom holiday provider | `[holidayProvider]="myHolidayProvider"` |
@@ -79,6 +84,17 @@ import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
79
84
  | `closeAriaLabel` | `string` | `'Close calendar'` | Stable | ARIA label for close button | `closeAriaLabel="Close date picker"` |
80
85
  | `rtl` | `boolean \| null` | `null` | Stable | Right-to-left layout (auto-detects from locale or document.dir) | `[rtl]="true"` |
81
86
  | `userAriaDescribedBy` | `string` | `''` | Stable | Aria describedby ID provided by the user or the parent form field. Required for seamless Angular Material integration. | `[userAriaDescribedBy]="'my-help-id'"` |
87
+ | `timeRangeMode` | `boolean` | `false` | Stable | In range mode with `showTime`, show separate start/end time pickers (from/to). | `[timeRangeMode]="true"` |
88
+ | `timezone` | `string` | `undefined` | Stable | IANA timezone name for display and value handling (e.g. `America/New_York`, `UTC`). | `timezone="Europe/London"` |
89
+ | `useNativePicker` | `boolean` | `false` | Stable | Use the browser native date/time input when supported (e.g. on mobile). | `[useNativePicker]="true"` |
90
+ | `autoDetectMobile` | `boolean` | `true` | Stable | When true, append popover to body and use mobile styles on small/touch devices. | `[autoDetectMobile]="false"` |
91
+ | `appendToBody` | `boolean` | `false` | Stable | Append calendar popover to `document.body` (e.g. to avoid overflow clipping). | `[appendToBody]="true"` |
92
+ | `mobileModalStyle` | `'bottom-sheet' \| 'center' \| 'fullscreen'` | `'bottom-sheet'` | Stable | How the calendar is shown on mobile (when detected). | `mobileModalStyle="fullscreen"` |
93
+ | `mobileTimePickerStyle` | `'wheel' \| 'slider' \| 'native'` | `'slider'` | Stable | Time picker style on mobile. | `mobileTimePickerStyle="wheel"` |
94
+ | `mobileTheme` | `'compact' \| 'comfortable' \| 'spacious'` | `'comfortable'` | Stable | Density of the calendar on mobile. | `mobileTheme="compact"` |
95
+ | `enableHapticFeedback` | `boolean` | `false` | Stable | Trigger haptic feedback on supported devices when selecting/clearing. | `[enableHapticFeedback]="true"` |
96
+ | `enablePullToRefresh` | `boolean` | `false` | Experimental | Reserve for future pull-to-refresh on mobile. | — |
97
+ | `enableVoiceInput` | `boolean` | `false` | Experimental | Reserve for future voice input. | — |
82
98
 
83
99
  ##### Outputs
84
100
 
@@ -86,6 +102,7 @@ import { NgxsmkDatepickerComponent } from 'ngxsmk-datepicker';
86
102
  |--------|------|--------|-------------|---------|
87
103
  | `valueChange` | `EventEmitter<DatepickerValue>` | Stable | Emitted when value changes | `(valueChange)="onDateChange($event)"` |
88
104
  | `action` | `EventEmitter<{ type: string; payload?: any }>` | Stable | Emitted on user actions (dateSelected, timeChanged, etc.) | `(action)="handleAction($event)"` |
105
+ | `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)"` |
89
106
 
90
107
  #### Methods
91
108
 
@@ -1,5 +1,7 @@
1
1
  # Version Compatibility Matrix
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This document provides comprehensive compatibility information for `ngxsmk-datepicker` across different Angular versions, Zone.js configurations, and SSR/CSR setups.
4
6
 
5
7
  ## 📋 Angular Version Compatibility
@@ -1,5 +1,7 @@
1
1
  # Integration Guides
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This document provides integration examples for using ngxsmk-datepicker with popular frameworks and libraries.
4
6
 
5
7
  ## Table of Contents
@@ -1,5 +1,7 @@
1
1
  # Ionic Framework Integration Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This guide provides step-by-step instructions for integrating ngxsmk-datepicker with Ionic Angular applications.
4
6
 
5
7
  ## Quick Start
@@ -1,5 +1,7 @@
1
1
  # Ionic Integration Testing Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This document provides comprehensive testing instructions for verifying ngxsmk-datepicker compatibility with Ionic Framework.
4
6
 
5
7
  ## Automated Tests
@@ -1,5 +1,7 @@
1
1
  # Locale Packs & i18n Contributor Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  Guide for adding locale support and contributing translations to ngxsmk-datepicker.
4
6
 
5
7
  ## Overview
@@ -1,5 +1,7 @@
1
1
  # Plugin Architecture
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
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.
4
6
 
5
7
  ## Table of Contents
package/docs/SEO.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # SEO Optimization Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This document outlines the SEO optimizations implemented for ngxsmk-datepicker to improve search engine visibility and discoverability.
4
6
 
5
7
  ## Overview
@@ -1,5 +1,7 @@
1
1
  # Server-Side Rendering (SSR) Example
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  Complete example demonstrating ngxsmk-datepicker with Angular Universal (SSR).
4
6
 
5
7
  ## Overview
@@ -1,5 +1,7 @@
1
1
  # Theme Tokens & CSS Custom Properties
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  Complete reference for all CSS custom properties (CSS variables) available in ngxsmk-datepicker.
4
6
 
5
7
  ## Overview
package/docs/TIMEZONE.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Timezone Support
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  ## Overview
4
6
 
5
7
  The `ngxsmk-datepicker` library provides timezone-aware date formatting and parsing. This document explains how timezones work in the context of JavaScript Date objects and how to use the library's timezone features.
@@ -1,5 +1,7 @@
1
1
  # Extension Points and Hooks
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  ngxsmk-datepicker provides comprehensive extension points through the `hooks` input, allowing you to customize rendering, validation, keyboard shortcuts, formatting, and event handling.
4
6
 
5
7
  > **📚 For a complete understanding of the plugin architecture, see the [Plugin Architecture Guide](./PLUGIN-ARCHITECTURE.md)** which covers architecture principles, plugin patterns, lifecycle, and advanced use cases.
@@ -1,5 +1,7 @@
1
1
  # Signal Forms Integration
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  This guide covers using ngxsmk-datepicker with Angular 21+ Signal Forms API.
4
6
 
5
7
  ## Overview
package/docs/signals.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Signals Integration Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  ngxsmk-datepicker is fully compatible with Angular Signals, providing seamless integration with both traditional reactive forms and modern signal-based patterns.
4
6
 
5
7
  ## Basic Signal Binding
package/docs/ssr.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # Server-Side Rendering (SSR) Guide
2
2
 
3
+ **Last updated:** February 2026 · **Current stable:** v2.1.6
4
+
3
5
  ngxsmk-datepicker is fully compatible with Angular Universal and server-side rendering. This guide covers SSR setup, best practices, and troubleshooting.
4
6
 
5
7
  ## Overview