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 +29 -0
- package/MIGRATION.md +36 -1
- package/README.md +24 -5
- package/docs/API.md +17 -0
- package/docs/COMPATIBILITY.md +2 -0
- package/docs/INTEGRATION.md +2 -0
- package/docs/IONIC_INTEGRATION.md +2 -0
- package/docs/IONIC_TESTING.md +2 -0
- package/docs/LOCALE-GUIDE.md +2 -0
- package/docs/PLUGIN-ARCHITECTURE.md +2 -0
- package/docs/SEO.md +2 -0
- package/docs/SSR-EXAMPLE.md +2 -0
- package/docs/THEME-TOKENS.md +2 -0
- package/docs/TIMEZONE.md +2 -0
- package/docs/extension-points.md +2 -0
- package/docs/signal-forms.md +2 -0
- package/docs/signals.md +2 -0
- package/docs/ssr.md +2 -0
- package/fesm2022/ngxsmk-datepicker.mjs +290 -58
- package/package.json +1 -1
- package/types/ngxsmk-datepicker.d.ts +53 -3
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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.
|
|
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
|
|
package/docs/COMPATIBILITY.md
CHANGED
|
@@ -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
|
package/docs/INTEGRATION.md
CHANGED
package/docs/IONIC_TESTING.md
CHANGED
package/docs/LOCALE-GUIDE.md
CHANGED
|
@@ -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
package/docs/SSR-EXAMPLE.md
CHANGED
package/docs/THEME-TOKENS.md
CHANGED
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.
|
package/docs/extension-points.md
CHANGED
|
@@ -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.
|
package/docs/signal-forms.md
CHANGED
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
|