ngxsmk-datepicker 2.2.12 → 2.2.13
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 +1218 -0
- package/LICENSE +21 -0
- package/MIGRATION.md +1775 -0
- package/README.md +923 -920
- package/docs/API.md +1 -1
- package/docs/COMPATIBILITY.md +1 -1
- package/docs/INTEGRATION.md +1 -1
- package/docs/IONIC_INTEGRATION.md +1 -1
- package/docs/IONIC_TESTING.md +1 -1
- package/docs/LOCALE-GUIDE.md +1 -1
- package/docs/PLUGIN-ARCHITECTURE.md +1 -1
- package/docs/SEO.md +1 -1
- package/docs/SSR-EXAMPLE.md +1 -1
- package/docs/THEME-TOKENS.md +1 -1
- package/docs/TIMEZONE.md +1 -1
- package/docs/extension-points.md +1 -1
- package/docs/signal-forms.md +1 -1
- package/docs/signals.md +1 -1
- package/docs/ssr.md +1 -1
- package/fesm2022/ngxsmk-datepicker.mjs +14193 -0
- package/package.json +94 -92
- package/types/ngxsmk-datepicker.d.ts +2433 -0
package/MIGRATION.md
ADDED
|
@@ -0,0 +1,1775 @@
|
|
|
1
|
+
# Migration Guide
|
|
2
|
+
|
|
3
|
+
This document provides migration instructions for upgrading between major versions of ngxsmk-datepicker.
|
|
4
|
+
|
|
5
|
+
**Last updated:** May 6, 2026 - **Current stable:** v2.2.13
|
|
6
|
+
|
|
7
|
+
## Table of Contents
|
|
8
|
+
|
|
9
|
+
- [v2.2.7 → v2.2.11](#v227---v228)
|
|
10
|
+
- [v2.2.6 → v2.2.7](#v226---v227)
|
|
11
|
+
- [v2.2.3 → v2.2.6](#v223---v226)
|
|
12
|
+
- [v2.2.0 → v2.2.3](#v220---v223)
|
|
13
|
+
- [v2.1.8 → v2.2.0](#v218---v219)
|
|
14
|
+
- [v2.1.7 → v2.1.8](#v217---v218)
|
|
15
|
+
- [v2.1.6 → v2.1.7](#v216---v217)
|
|
16
|
+
- [v2.1.5 → v2.1.6](#v215---v216)
|
|
17
|
+
- [v2.1.4 → v2.1.5](#v214---v215)
|
|
18
|
+
- [v2.1.3 → v2.1.4](#v213---v214)
|
|
19
|
+
- [v2.1.2 → v2.1.3](#v212---v213)
|
|
20
|
+
- [v2.1.1 → v2.1.2](#v211---v212)
|
|
21
|
+
- [v2.0.11 → v2.1.1](#v2011---v211)
|
|
22
|
+
- [v2.0.6 → v2.0.7](#v206---v207)
|
|
23
|
+
- [v2.0.5 → v2.0.6](#v205---v206)
|
|
24
|
+
- [v2.0.4 → v2.0.5](#v204---v205)
|
|
25
|
+
- [v2.0.3 → v2.0.4](#v203---v204)
|
|
26
|
+
- [v2.0.2 → v2.0.3](#v202---v203)
|
|
27
|
+
- [v2.0.1 → v2.0.2](#v201---v202)
|
|
28
|
+
- [v2.0.0 → v2.0.1](#v200---v201)
|
|
29
|
+
- [v1.9.30 → v2.0.0](#v1930---v200)
|
|
30
|
+
- [v1.9.29 → v1.9.30](#v1929---v1930)
|
|
31
|
+
- [v1.9.27 → v1.9.28](#v1927---v1928)
|
|
32
|
+
- [v1.9.26 → v1.9.27](#v1926---v1927)
|
|
33
|
+
- [v1.9.25 → v1.9.26](#v1925---v1926)
|
|
34
|
+
- [v1.9.23 → v1.9.25](#v1923---v1925)
|
|
35
|
+
- [v1.9.22 → v1.9.23](#v1922---v1923)
|
|
36
|
+
- [v1.9.21 → v1.9.22](#v1921---v1922)
|
|
37
|
+
- [v1.9.20 → v1.9.21](#v1920---v1921)
|
|
38
|
+
- [v1.9.19 → v1.9.20](#v1919---v1920)
|
|
39
|
+
- [v1.9.18 → v1.9.19](#v1918---v1919)
|
|
40
|
+
- [v1.9.17 → v1.9.18](#v1917---v1918)
|
|
41
|
+
- [v1.9.16 → v1.9.17](#v1916---v1917)
|
|
42
|
+
- [v1.9.15 → v1.9.16](#v1915---v1916)
|
|
43
|
+
- [v1.9.14 → v1.9.15](#v1914---v1915)
|
|
44
|
+
- [v1.9.13 → v1.9.14](#v1913---v1914)
|
|
45
|
+
- [v1.9.12 → v1.9.13](#v1912---v1913)
|
|
46
|
+
- [v1.9.11 → v1.9.12](#v1911---v1912)
|
|
47
|
+
- [v1.9.10 → v1.9.11](#v1910---v1911)
|
|
48
|
+
- [v1.9.9 → v1.9.10](#v199---v1910)
|
|
49
|
+
- [v1.9.8 → v1.9.9](#v198---v199)
|
|
50
|
+
- [v1.9.7 → v1.9.8](#v197---v198)
|
|
51
|
+
- [v1.9.6 → v1.9.7](#v196---v197)
|
|
52
|
+
- [v1.9.5 → v1.9.6](#v195---v196)
|
|
53
|
+
- [v1.9.4 → v1.9.5](#v194---v195)
|
|
54
|
+
- [v1.9.3 → v1.9.4](#v193---v194)
|
|
55
|
+
- [v1.9.2 → v1.9.3](#v192---v193)
|
|
56
|
+
- [v1.9.1 → v1.9.2](#v191---v192)
|
|
57
|
+
- [v1.9.0 → v1.9.1](#v190---v191)
|
|
58
|
+
- [v1.8.0 → v1.9.0](#v180---v190)
|
|
59
|
+
- [v1.7.0 → v1.8.0](#v170---v180)
|
|
60
|
+
|
|
61
|
+
## npm: skip v2.2.12
|
|
62
|
+
|
|
63
|
+
The **`2.2.12`** package on the registry is missing **`fesm2022/`** and **`types/`**. Stay on **`2.2.11`** or upgrade to **`2.2.13`** (or newer) once published ([#230](https://github.com/NGXSMK/ngxsmk-datepicker/issues/230)).
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
npm install ngxsmk-datepicker@2.2.13
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## v2.2.7 → v2.2.11
|
|
70
|
+
|
|
71
|
+
### Changes
|
|
72
|
+
|
|
73
|
+
- **npm package**: The `2.2.7` tarball on the registry omitted `fesm2022/` and `types/`. **2.2.11** republishes the same library with a complete build. No API or feature changes versus the intended 2.2.7 release.
|
|
74
|
+
|
|
75
|
+
### Migration Steps
|
|
76
|
+
|
|
77
|
+
No breaking changes.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm install ngxsmk-datepicker@2.2.13
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## v2.2.6 → v2.2.7
|
|
84
|
+
|
|
85
|
+
### Changes
|
|
86
|
+
|
|
87
|
+
- **Publishing**: npm releases again ship compiled Angular library output (`fesm2022/`, `types/`).
|
|
88
|
+
- **Range mode**: Optional `[allowSameDay]="true"` to complete a range when start and end are the same calendar day.
|
|
89
|
+
|
|
90
|
+
### Migration Steps
|
|
91
|
+
|
|
92
|
+
No breaking changes. Use **2.2.11** on npm (the `2.2.7` npm package was incomplete; 2.2.11 matches the intended 2.2.7 release).
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
npm install ngxsmk-datepicker@2.2.13
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## v2.2.3 → v2.2.6
|
|
99
|
+
|
|
100
|
+
### Changes
|
|
101
|
+
|
|
102
|
+
- **Timezone Support**: Added full support for IANA timezones in "Today" calculation. The component now correctly identifies "Today" based on the configured `timezone` input rather than just browser local time.
|
|
103
|
+
- **Date Validation**: Fixed an issue where "Today" could become unselectable if `minDate` was set to the current time later in the day. `minDate` validation now correctly normalizes to the start of the day.
|
|
104
|
+
- **Keyboard Shortcuts**: Updated `selectToday` shortcut to use the timezone-aware `today` value.
|
|
105
|
+
|
|
106
|
+
### Migration Steps
|
|
107
|
+
|
|
108
|
+
No migration steps required.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npm install ngxsmk-datepicker@2.2.6
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## v2.2.0 → v2.2.3
|
|
115
|
+
|
|
116
|
+
### Changes
|
|
117
|
+
|
|
118
|
+
- **Code Quality**: Refactored static Material support methods to reduce cognitive complexity and nesting depth (ESLint `S3776`, `S2004`).
|
|
119
|
+
- **Improved Coverage**: Increased function coverage to ~68.2% through new internal test suites.
|
|
120
|
+
- **Stability**: Fixed regression in touch/swipe event stubs and Material Form Field integration state.
|
|
121
|
+
- **Maintenance**: Marked `_allInstances` as `readonly` and removed redundant `demo` script.
|
|
122
|
+
|
|
123
|
+
### Migration Steps
|
|
124
|
+
|
|
125
|
+
No migration steps required.
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm install ngxsmk-datepicker@2.2.3
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## v2.1.8 → v2.2.0
|
|
132
|
+
|
|
133
|
+
### Changes
|
|
134
|
+
|
|
135
|
+
- **Header Select Synchronization**: Migrated header components to `ViewEncapsulation.None` and consolidated styles into `_header.scss`.
|
|
136
|
+
- **Improved Dropdown Layout**: Professional `space-between` layout for Month/Year selectors.
|
|
137
|
+
- **Enhanced Visibility**: High-contrast text for non-selected dropdown options.
|
|
138
|
+
- **Web Component Support**: New capability to compile/export as a Universal Custom Web Component for React, Vue, & Vanilla JS.
|
|
139
|
+
- **Performance**: Reduced calendar opening timers for faster feedback (150ms mobile / 60ms desktop).
|
|
140
|
+
|
|
141
|
+
### Migration Steps
|
|
142
|
+
|
|
143
|
+
No migration steps required.
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
npm install ngxsmk-datepicker@2.2.0
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
## v2.1.7 → v2.1.8
|
|
150
|
+
|
|
151
|
+
### Changes
|
|
152
|
+
|
|
153
|
+
- **Fixed**: **appendToBody** popover positioning (Issue #206).
|
|
154
|
+
- **Fixed**: Datepicker in modal positioning fixes.
|
|
155
|
+
- **Changed**: Reduced loading/opening delays and CSS cleanup.
|
|
156
|
+
|
|
157
|
+
### Migration Steps
|
|
158
|
+
|
|
159
|
+
No migration steps required.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npm install ngxsmk-datepicker@2.1.8
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## v2.1.6 → v2.1.7
|
|
166
|
+
|
|
167
|
+
### Changes
|
|
168
|
+
|
|
169
|
+
- **Version Update**: Updated to version 2.1.7.
|
|
170
|
+
- **Fixed**: Resolved `No provider for DatePipe` runtime error. The library is now fully self-contained regarding `DatePipe` usage.
|
|
171
|
+
- No breaking changes.
|
|
172
|
+
|
|
173
|
+
### Migration Steps
|
|
174
|
+
|
|
175
|
+
No migration steps required. If you previously added `DatePipe` to your `app.config.ts` or `AppModule` providers solely for this library, you can now safely remove it.
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
npm install ngxsmk-datepicker@2.1.7
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## v2.1.5 → v2.1.6
|
|
182
|
+
|
|
183
|
+
### Changes
|
|
184
|
+
|
|
185
|
+
- **Version Update**: Updated to version 2.1.6.
|
|
186
|
+
- No breaking changes.
|
|
187
|
+
|
|
188
|
+
### Migration Steps
|
|
189
|
+
|
|
190
|
+
No migration steps required.
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
npm install ngxsmk-datepicker@2.1.6
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
## v2.1.4 → v2.1.5
|
|
197
|
+
|
|
198
|
+
### Changes
|
|
199
|
+
|
|
200
|
+
- **Version Update**: Updated to version 2.1.5.
|
|
201
|
+
- **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.
|
|
202
|
+
- No breaking changes.
|
|
203
|
+
|
|
204
|
+
### Migration Steps
|
|
205
|
+
|
|
206
|
+
No migration steps required.
|
|
207
|
+
|
|
208
|
+
```bash
|
|
209
|
+
npm install ngxsmk-datepicker@2.1.5
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
## v2.1.3 → v2.1.4
|
|
213
|
+
|
|
214
|
+
### Changes
|
|
215
|
+
|
|
216
|
+
- **Version Update**: Updated to version 2.1.4.
|
|
217
|
+
- **Improved Calendar Grid**: Calendar now always generates exactly 42 days (6 full weeks), providing layout stability during month navigation.
|
|
218
|
+
- **Enhanced Playground**: New options for `minDate`, `maxDate`, and `weekStart` constraints.
|
|
219
|
+
- No breaking changes.
|
|
220
|
+
|
|
221
|
+
### Migration Steps
|
|
222
|
+
|
|
223
|
+
No migration steps required.
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
npm install ngxsmk-datepicker@2.1.4
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
## v2.1.2 → v2.1.3
|
|
230
|
+
|
|
231
|
+
### Changes
|
|
232
|
+
|
|
233
|
+
- **Version Update**: Updated to version 2.1.3.
|
|
234
|
+
- **Bug Fix**: Fixed inline datepicker width issue where it was constrained by container styles in some contexts. The inline mode now correctly fit its content.
|
|
235
|
+
- No breaking changes.
|
|
236
|
+
|
|
237
|
+
### Migration Steps
|
|
238
|
+
|
|
239
|
+
No migration steps required.
|
|
240
|
+
|
|
241
|
+
```bash
|
|
242
|
+
npm install ngxsmk-datepicker@2.1.3
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
## v2.1.1 → v2.1.2
|
|
247
|
+
|
|
248
|
+
### Changes
|
|
249
|
+
|
|
250
|
+
- **Version Update**: Updated to version 2.1.2.
|
|
251
|
+
- **Circular Dependency Fix**: Resolved `RuntimeError: NG0200` when using forms by removing `NG_VALUE_ACCESSOR` from providers. This might require verifying your form integration if you were relying on side-effects of the previous implementation.
|
|
252
|
+
- **UI Refresh**: Implemented a "border detox" and refined aesthetics.
|
|
253
|
+
- **Removed Feature**: The range duration header (which displayed "X Days" during range selection) has been removed.
|
|
254
|
+
- **Mobile Stabilization**: Critical fixes for mobile browsers.
|
|
255
|
+
|
|
256
|
+
No migration steps required.
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
npm install ngxsmk-datepicker@latest
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
## v2.0.11 → v2.1.1
|
|
264
|
+
|
|
265
|
+
### ⚠️ CRITICAL NOTICE
|
|
266
|
+
|
|
267
|
+
**Versions 2.0.10 and 2.0.11 are broken and should NOT be used.**
|
|
268
|
+
|
|
269
|
+
These versions have critical package configuration issues that prevent proper TypeScript module resolution. If you have installed either of these versions, please upgrade to v2.1.1 immediately.
|
|
270
|
+
|
|
271
|
+
### Changes
|
|
272
|
+
|
|
273
|
+
- **Package Fixes**: Corrected TypeScript declaration paths and package configuration
|
|
274
|
+
- Fixed `types` and `typings` fields to point to the correct location: `types/ngxsmk-datepicker.d.ts`
|
|
275
|
+
- Simplified exports configuration to match stable v2.0.9 format
|
|
276
|
+
- Removed disallowed `esm2022` property from package.json
|
|
277
|
+
- **No Breaking Changes**: This is a minor version update with package configuration improvements
|
|
278
|
+
- **Recommended Update**: All v2.0.x users should update to v2.1.1 for proper TypeScript support
|
|
279
|
+
- **Skip 2.0.10 & 2.0.11**: These versions have been unpublished from npm due to broken package configuration
|
|
280
|
+
|
|
281
|
+
### Migration Steps
|
|
282
|
+
|
|
283
|
+
Update your package.json to use the new version:
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
npm install ngxsmk-datepicker@2.1.1
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
**No code changes required.** This update only fixes package configuration issues that were preventing proper TypeScript declaration file resolution.
|
|
290
|
+
|
|
291
|
+
### What's Fixed
|
|
292
|
+
|
|
293
|
+
If you were experiencing the following error:
|
|
294
|
+
|
|
295
|
+
```
|
|
296
|
+
Could not find a declaration file for module 'ngxsmk-datepicker'
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
This is now resolved in v2.1.1. The package now correctly points to its TypeScript declaration files.
|
|
300
|
+
|
|
301
|
+
## v2.0.7 → v2.0.8
|
|
302
|
+
|
|
303
|
+
### Changes
|
|
304
|
+
|
|
305
|
+
- **Version Update**: Updated to version 2.0.8
|
|
306
|
+
- **Ionic Integration**: Added automatic CSS variable support for seamless theming in Ionic apps
|
|
307
|
+
- **Optimized Change Detection**: Switched to Signal-based updates for better performance
|
|
308
|
+
- **Mobile UX Fixes**: Fixed page jumping on date selection and improved dropdown scrolling
|
|
309
|
+
- No breaking changes.
|
|
310
|
+
|
|
311
|
+
### Migration Steps
|
|
312
|
+
|
|
313
|
+
No migration steps required. This is a patch version update:
|
|
314
|
+
|
|
315
|
+
```bash
|
|
316
|
+
npm install ngxsmk-datepicker@2.0.8
|
|
317
|
+
```
|
|
318
|
+
|
|
319
|
+
## v2.0.6 → v2.0.7
|
|
320
|
+
|
|
321
|
+
### Changes
|
|
322
|
+
|
|
323
|
+
- **Version Update**: Updated to version 2.0.7
|
|
324
|
+
- No breaking changes.
|
|
325
|
+
|
|
326
|
+
### Migration Steps
|
|
327
|
+
|
|
328
|
+
No migration steps required. This is a patch version update:
|
|
329
|
+
|
|
330
|
+
```bash
|
|
331
|
+
npm install ngxsmk-datepicker@2.0.7
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## v2.0.5 → v2.0.6
|
|
335
|
+
|
|
336
|
+
### Changes
|
|
337
|
+
|
|
338
|
+
- **Enhanced Range Picker Reselection**: Improved comprehensive range reselection behavior
|
|
339
|
+
- Clicking the start date when a complete range is selected now clears only the end date
|
|
340
|
+
- Clicking the end date when a complete range is selected now clears the start date and sets the end date as the new start date
|
|
341
|
+
- **NEW**: Clicking any date within the selected range now clears the end date and sets the clicked date as the new start date
|
|
342
|
+
- Allows users to easily redefine date ranges from any point (start, end, or within the range)
|
|
343
|
+
- **Code Cleanup**: Removed unnecessary inline comments from range selection logic for cleaner, more maintainable code
|
|
344
|
+
- No breaking changes.
|
|
345
|
+
|
|
346
|
+
### Migration Steps
|
|
347
|
+
|
|
348
|
+
No migration steps required. This is a patch version update:
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
npm install ngxsmk-datepicker@2.0.6
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## v2.0.4 -> v2.0.5
|
|
355
|
+
|
|
356
|
+
### Changes
|
|
357
|
+
|
|
358
|
+
- **Documentation**: Added "Form Validation" section to clarify `readonly` input behavior and `allowTyping` workaround.
|
|
359
|
+
- General updates and improvements.
|
|
360
|
+
- No breaking changes.
|
|
361
|
+
|
|
362
|
+
## v2.0.3 → v2.0.4
|
|
363
|
+
|
|
364
|
+
### Changes
|
|
365
|
+
|
|
366
|
+
- Bug fix: Fixed `touched` state sync for Signal Forms validation.
|
|
367
|
+
- No breaking changes.
|
|
368
|
+
|
|
369
|
+
## v2.0.2 → v2.0.3
|
|
370
|
+
|
|
371
|
+
### Changes
|
|
372
|
+
|
|
373
|
+
- Bug fixes: #136, #112, #84, #71 verified.
|
|
374
|
+
- Code cleanup in `field-sync.service.ts`.
|
|
375
|
+
- No breaking changes.
|
|
376
|
+
|
|
377
|
+
## v2.0.1 → v2.0.2
|
|
378
|
+
|
|
379
|
+
### Changes
|
|
380
|
+
|
|
381
|
+
- Documentation updates to reflect new version
|
|
382
|
+
|
|
383
|
+
## v2.0.0 → v2.0.1
|
|
384
|
+
|
|
385
|
+
### Changes
|
|
386
|
+
|
|
387
|
+
- Bug fixes and improvements
|
|
388
|
+
|
|
389
|
+
## v1.9.30 → v2.0.0
|
|
390
|
+
|
|
391
|
+
### Overview
|
|
392
|
+
|
|
393
|
+
v2.0.0 is a major version update representing significant architectural improvements, enhanced features, and modernization of the codebase. While maintaining backward compatibility for most features, some breaking changes are necessary for improved performance, type safety, and Angular alignment.
|
|
394
|
+
|
|
395
|
+
### Breaking Changes
|
|
396
|
+
|
|
397
|
+
#### 1. Angular Version Requirement
|
|
398
|
+
|
|
399
|
+
**Change**: Minimum Angular version updated to 17.0.0+
|
|
400
|
+
|
|
401
|
+
**Reason**: To leverage modern Angular features (signals, standalone components, built-in control flow)
|
|
402
|
+
|
|
403
|
+
**Migration**:
|
|
404
|
+
|
|
405
|
+
```bash
|
|
406
|
+
# Update Angular to v17+
|
|
407
|
+
ng update @angular/core@17 @angular/cli@17
|
|
408
|
+
|
|
409
|
+
# Then update ngxsmk-datepicker
|
|
410
|
+
npm install ngxsmk-datepicker@2.0.0
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
#### 2. Signal Forms Integration
|
|
414
|
+
|
|
415
|
+
**Change**: Enhanced Signal Forms API with stricter typing
|
|
416
|
+
|
|
417
|
+
**Before** (v1.x):
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
// Signal form field with loose typing
|
|
421
|
+
[field] = "mySignalFormField";
|
|
422
|
+
```
|
|
423
|
+
|
|
424
|
+
**After** (v2.0):
|
|
425
|
+
|
|
426
|
+
```typescript
|
|
427
|
+
// Import SignalFormFieldConfig for type safety
|
|
428
|
+
import { SignalFormFieldConfig } from "ngxsmk-datepicker";
|
|
429
|
+
|
|
430
|
+
// Signal form field with strict typing
|
|
431
|
+
[field] = "mySignalFormField"; // Now with proper type inference
|
|
432
|
+
```
|
|
433
|
+
|
|
434
|
+
**Migration**: No code changes required, but TypeScript will now catch type errors earlier.
|
|
435
|
+
|
|
436
|
+
#### 3. Timezone Utilities API
|
|
437
|
+
|
|
438
|
+
**Change**: Improved timezone utility function signatures for type safety
|
|
439
|
+
|
|
440
|
+
**Before** (v1.x):
|
|
441
|
+
|
|
442
|
+
```typescript
|
|
443
|
+
// Loose parameter types
|
|
444
|
+
formatDateWithTimezone(date, locale, options, timezone);
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
**After** (v2.0):
|
|
448
|
+
|
|
449
|
+
```typescript
|
|
450
|
+
// Strict parameter types with proper interfaces
|
|
451
|
+
formatDateWithTimezone(
|
|
452
|
+
date: Date,
|
|
453
|
+
locale: string,
|
|
454
|
+
options: Intl.DateTimeFormatOptions,
|
|
455
|
+
timezone?: string
|
|
456
|
+
): string;
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
**Migration**: Ensure you're passing correctly typed parameters to timezone utilities.
|
|
460
|
+
|
|
461
|
+
#### 4. Deprecated Properties Removed
|
|
462
|
+
|
|
463
|
+
**Change**: Removed properties deprecated in v1.9.x
|
|
464
|
+
|
|
465
|
+
**Removed**:
|
|
466
|
+
|
|
467
|
+
- `numberOfMonths` (use `calendarCount` instead - deprecated since v1.9.12)
|
|
468
|
+
|
|
469
|
+
**Migration**:
|
|
470
|
+
|
|
471
|
+
```typescript
|
|
472
|
+
// Before (v1.x)
|
|
473
|
+
<ngxsmk-datepicker [numberOfMonths]="2"></ngxsmk-datepicker>
|
|
474
|
+
|
|
475
|
+
// After (v2.0)
|
|
476
|
+
<ngxsmk-datepicker [calendarCount]="2"></ngxsmk-datepicker>
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
#### 5. Service Extraction
|
|
480
|
+
|
|
481
|
+
**Change**: Internal architecture refactored - services extracted from main component
|
|
482
|
+
|
|
483
|
+
**Impact**: If you were extending or monkey-patching internal component methods, this may break.
|
|
484
|
+
|
|
485
|
+
**Affected Internal Services**:
|
|
486
|
+
|
|
487
|
+
- `CalendarGenerationService` - Calendar generation logic
|
|
488
|
+
- `DatepickerParsingService` - Date parsing and formatting
|
|
489
|
+
- `TouchGestureHandlerService` - Touch gesture handling
|
|
490
|
+
- `PopoverPositioningService` - Popover positioning
|
|
491
|
+
|
|
492
|
+
**Migration**: Use public APIs instead of internal methods. If you need access to these services, inject them:
|
|
493
|
+
|
|
494
|
+
```typescript
|
|
495
|
+
import { CalendarGenerationService } from 'ngxsmk-datepicker';
|
|
496
|
+
|
|
497
|
+
constructor(private calendarService: CalendarGenerationService) {}
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
### New Features
|
|
501
|
+
|
|
502
|
+
#### 1. Enhanced Time Selection
|
|
503
|
+
|
|
504
|
+
```typescript
|
|
505
|
+
// Time range mode
|
|
506
|
+
<ngxsmk-datepicker
|
|
507
|
+
[timeRangeMode]="true"
|
|
508
|
+
[showTime]="true"
|
|
509
|
+
></ngxsmk-datepicker>
|
|
510
|
+
|
|
511
|
+
// Seconds support (already available, now documented)
|
|
512
|
+
<ngxsmk-datepicker
|
|
513
|
+
[showSeconds]="true"
|
|
514
|
+
[secondInterval]="5"
|
|
515
|
+
></ngxsmk-datepicker>
|
|
516
|
+
|
|
517
|
+
// Step configuration
|
|
518
|
+
<ngxsmk-datepicker
|
|
519
|
+
[minuteInterval]="15"
|
|
520
|
+
[secondInterval]="30"
|
|
521
|
+
></ngxsmk-datepicker>
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
#### 2. Internationalization Improvements
|
|
525
|
+
|
|
526
|
+
```typescript
|
|
527
|
+
// Custom date format patterns
|
|
528
|
+
import { CustomDateFormatService } from "ngxsmk-datepicker";
|
|
529
|
+
|
|
530
|
+
customFormat.format(date, "YYYY-MM-DD HH:mm:ss", "en-US");
|
|
531
|
+
|
|
532
|
+
// Locale-aware number formatting
|
|
533
|
+
import { formatLocaleNumber } from "ngxsmk-datepicker";
|
|
534
|
+
|
|
535
|
+
formatLocaleNumber(42, "de-DE"); // "42"
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
#### 3. Animation API
|
|
539
|
+
|
|
540
|
+
```typescript
|
|
541
|
+
// Configure animations
|
|
542
|
+
<ngxsmk-datepicker
|
|
543
|
+
[animationConfig]="{
|
|
544
|
+
duration: 200,
|
|
545
|
+
easing: 'ease-in-out',
|
|
546
|
+
enabled: true
|
|
547
|
+
}"
|
|
548
|
+
></ngxsmk-datepicker>
|
|
549
|
+
|
|
550
|
+
// Respects prefers-reduced-motion automatically
|
|
551
|
+
```
|
|
552
|
+
|
|
553
|
+
#### 4. Multi-Calendar Sync Scrolling
|
|
554
|
+
|
|
555
|
+
```typescript
|
|
556
|
+
// Synchronized scrolling for multi-calendar layouts
|
|
557
|
+
<ngxsmk-datepicker
|
|
558
|
+
[calendarCount]="2"
|
|
559
|
+
[syncScroll]="true"
|
|
560
|
+
[monthGap]="1"
|
|
561
|
+
></ngxsmk-datepicker>
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### Performance Improvements
|
|
565
|
+
|
|
566
|
+
#### 1. Virtual Scrolling
|
|
567
|
+
|
|
568
|
+
Year and decade views now use virtual scrolling for better performance with large date ranges:
|
|
569
|
+
|
|
570
|
+
```typescript
|
|
571
|
+
// Automatically enabled for year/decade views
|
|
572
|
+
// Handles 100+ years efficiently
|
|
573
|
+
<ngxsmk-datepicker [currentView]="'year'"></ngxsmk-datepicker>
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
#### 2. Signal-Based Reactivity
|
|
577
|
+
|
|
578
|
+
Change detection is now automatic and more efficient:
|
|
579
|
+
|
|
580
|
+
```typescript
|
|
581
|
+
// Automatically optimized - no manual change detection needed
|
|
582
|
+
component.selectedDate.set(new Date());
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
#### 3. Lazy Loading
|
|
586
|
+
|
|
587
|
+
Multi-month calendars are now lazily rendered:
|
|
588
|
+
|
|
589
|
+
```typescript
|
|
590
|
+
// Only visible calendars + buffer are rendered
|
|
591
|
+
<ngxsmk-datepicker [calendarCount]="12"></ngxsmk-datepicker>
|
|
592
|
+
```
|
|
593
|
+
|
|
594
|
+
### Testing Infrastructure
|
|
595
|
+
|
|
596
|
+
New testing utilities are available:
|
|
597
|
+
|
|
598
|
+
```typescript
|
|
599
|
+
// Accessibility testing
|
|
600
|
+
import { runAccessibilityScan } from "ngxsmk-datepicker/testing";
|
|
601
|
+
|
|
602
|
+
// Performance benchmarking
|
|
603
|
+
import { measureSync, benchmark } from "ngxsmk-datepicker/testing";
|
|
604
|
+
|
|
605
|
+
// Visual regression testing
|
|
606
|
+
import { captureElementScreenshot, compareImageData } from "ngxsmk-datepicker/testing";
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
### Documentation Updates
|
|
610
|
+
|
|
611
|
+
- ✅ Complete API reference with JSDoc
|
|
612
|
+
- ✅ Enhanced accessibility guide
|
|
613
|
+
- ✅ Performance testing guide
|
|
614
|
+
- ✅ Visual regression testing guide
|
|
615
|
+
- ✅ Improvement report
|
|
616
|
+
|
|
617
|
+
### Migration Steps
|
|
618
|
+
|
|
619
|
+
1. **Update Angular** (if needed):
|
|
620
|
+
|
|
621
|
+
```bash
|
|
622
|
+
ng update @angular/core@17 @angular/cli@17
|
|
623
|
+
```
|
|
624
|
+
|
|
625
|
+
2. **Update ngxsmk-datepicker**:
|
|
626
|
+
|
|
627
|
+
```bash
|
|
628
|
+
npm install ngxsmk-datepicker@2.0.0
|
|
629
|
+
```
|
|
630
|
+
|
|
631
|
+
3. **Replace deprecated properties**:
|
|
632
|
+
|
|
633
|
+
```typescript
|
|
634
|
+
// Replace numberOfMonths with calendarCount
|
|
635
|
+
[numberOfMonths]="2" → [calendarCount]="2"
|
|
636
|
+
```
|
|
637
|
+
|
|
638
|
+
4. **Update imports** (if using internal services):
|
|
639
|
+
|
|
640
|
+
```typescript
|
|
641
|
+
// Use public APIs instead of internal methods
|
|
642
|
+
import { CalendarGenerationService } from "ngxsmk-datepicker";
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
5. **Test thoroughly**:
|
|
646
|
+
- Test all date selection modes
|
|
647
|
+
- Test time selection
|
|
648
|
+
- Test keyboard navigation
|
|
649
|
+
- Test mobile interactions
|
|
650
|
+
- Run accessibility tests
|
|
651
|
+
|
|
652
|
+
6. **Verify bundle size**:
|
|
653
|
+
```bash
|
|
654
|
+
ng build --prod
|
|
655
|
+
# Check bundle analyzer if needed
|
|
656
|
+
```
|
|
657
|
+
|
|
658
|
+
### Rollback Instructions
|
|
659
|
+
|
|
660
|
+
If you encounter issues, you can rollback to v1.9.30:
|
|
661
|
+
|
|
662
|
+
```bash
|
|
663
|
+
npm install ngxsmk-datepicker@1.9.30
|
|
664
|
+
```
|
|
665
|
+
|
|
666
|
+
### Support
|
|
667
|
+
|
|
668
|
+
For migration issues or questions:
|
|
669
|
+
|
|
670
|
+
- Check the [README](README.md) for updated examples
|
|
671
|
+
- Review [IMPROVEMENT_REPORT.md](IMPROVEMENT_REPORT.md) for architectural changes
|
|
672
|
+
- Open an issue on GitHub with migration questions
|
|
673
|
+
|
|
674
|
+
---
|
|
675
|
+
|
|
676
|
+
## v1.9.29 → v1.9.30
|
|
677
|
+
|
|
678
|
+
### Installation
|
|
679
|
+
|
|
680
|
+
Update to the latest version:
|
|
681
|
+
|
|
682
|
+
```bash
|
|
683
|
+
npm install ngxsmk-datepicker@2.0.0
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
### Changes
|
|
687
|
+
|
|
688
|
+
- **Signal Form Resolution**: Improved the way signal-based form fields are resolved. The datepicker now correctly handles signals that have field properties attached directly to the signal function.
|
|
689
|
+
- **Improved Validation**: Enhanced detection of `required` state from Signal Forms schema.
|
|
690
|
+
- **Public API**: Exported `SignalFormFieldConfig` for better type safety.
|
|
691
|
+
|
|
692
|
+
### Breaking Changes
|
|
693
|
+
|
|
694
|
+
None in v2.0.0.
|
|
695
|
+
|
|
696
|
+
### v1.9.30
|
|
697
|
+
|
|
698
|
+
None in v1.9.30.
|
|
699
|
+
|
|
700
|
+
### Migration Steps
|
|
701
|
+
|
|
702
|
+
If you are using custom types for Signal Form fields, you can now use the officially exported `SignalFormFieldConfig` interface.
|
|
703
|
+
|
|
704
|
+
## v1.9.27 → v1.9.28
|
|
705
|
+
|
|
706
|
+
### Installation
|
|
707
|
+
|
|
708
|
+
Update to the latest version:
|
|
709
|
+
|
|
710
|
+
```bash
|
|
711
|
+
npm install ngxsmk-datepicker@1.9.28
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
### Changes
|
|
715
|
+
|
|
716
|
+
- **Input Attributes**: New `inputId`, `name`, and `autocomplete` inputs are available.
|
|
717
|
+
- **Improved Validation**: The `required` attribute is now correctly reflected on the internal input element when set via form schema.
|
|
718
|
+
|
|
719
|
+
### Breaking Changes
|
|
720
|
+
|
|
721
|
+
None in v1.9.28.
|
|
722
|
+
|
|
723
|
+
### Migration Steps
|
|
724
|
+
|
|
725
|
+
No code changes required. The new features are additive.
|
|
726
|
+
|
|
727
|
+
## v1.9.26 → v1.9.27
|
|
728
|
+
|
|
729
|
+
### Installation
|
|
730
|
+
|
|
731
|
+
Update to the latest version:
|
|
732
|
+
|
|
733
|
+
```bash
|
|
734
|
+
npm install ngxsmk-datepicker@1.9.27
|
|
735
|
+
```
|
|
736
|
+
|
|
737
|
+
### Changes
|
|
738
|
+
|
|
739
|
+
- **Modern Control Flow**: Components migrated to Angular's built-in `@if` and `@for` blocks.
|
|
740
|
+
- **Improved Resolution**: Resolved static analysis and module resolution issues in monorepos.
|
|
741
|
+
|
|
742
|
+
### Breaking Changes
|
|
743
|
+
|
|
744
|
+
None in v1.9.27.
|
|
745
|
+
|
|
746
|
+
### Migration Steps
|
|
747
|
+
|
|
748
|
+
No code changes required. The changes are focused on internal library architecture and build compatibility.
|
|
749
|
+
|
|
750
|
+
## v1.9.25 → v1.9.26
|
|
751
|
+
|
|
752
|
+
> ⚠️ **Warning**: Version `1.9.26` has broken styles. It is highly recommended to skip this version and upgrade directly to `1.9.27`.
|
|
753
|
+
|
|
754
|
+
### Installation
|
|
755
|
+
|
|
756
|
+
Update to the latest version:
|
|
757
|
+
|
|
758
|
+
```bash
|
|
759
|
+
npm install ngxsmk-datepicker@1.9.26
|
|
760
|
+
```
|
|
761
|
+
|
|
762
|
+
### Changes
|
|
763
|
+
|
|
764
|
+
- **Core Architecture**: Major internal refactoring to improve maintainability and performance.
|
|
765
|
+
- **Ionic Integration**: Fixed localized style exporting issues.
|
|
766
|
+
|
|
767
|
+
### Breaking Changes
|
|
768
|
+
|
|
769
|
+
None in v1.9.26.
|
|
770
|
+
|
|
771
|
+
### Migration Steps
|
|
772
|
+
|
|
773
|
+
No code changes required. The refactoring is internal and maintains full backward compatibility.
|
|
774
|
+
|
|
775
|
+
## v1.9.23 → v1.9.25
|
|
776
|
+
|
|
777
|
+
### Installation
|
|
778
|
+
|
|
779
|
+
```bash
|
|
780
|
+
npm install ngxsmk-datepicker@1.9.25
|
|
781
|
+
```
|
|
782
|
+
|
|
783
|
+
### Changes
|
|
784
|
+
|
|
785
|
+
- **Strict Mode**: Improved support for strict template type checking in IDEs.
|
|
786
|
+
- **NPM Package**: Fixed missing README in package distribution.
|
|
787
|
+
|
|
788
|
+
### Breaking Changes
|
|
789
|
+
|
|
790
|
+
None in v1.9.25.
|
|
791
|
+
|
|
792
|
+
## v1.9.22 → v1.9.23
|
|
793
|
+
|
|
794
|
+
### Installation
|
|
795
|
+
|
|
796
|
+
```bash
|
|
797
|
+
npm install ngxsmk-datepicker@1.9.23
|
|
798
|
+
```
|
|
799
|
+
|
|
800
|
+
### Changes
|
|
801
|
+
|
|
802
|
+
- **Signal Forms**: Fixed dirty state tracking for `[field]` binding.
|
|
803
|
+
- **CSS Variables**: Improved theming specificity for global variables.
|
|
804
|
+
|
|
805
|
+
### Breaking Changes
|
|
806
|
+
|
|
807
|
+
None in v1.9.23.
|
|
808
|
+
|
|
809
|
+
## v1.9.21 → v1.9.22
|
|
810
|
+
|
|
811
|
+
### Installation
|
|
812
|
+
|
|
813
|
+
Update to the latest version:
|
|
814
|
+
|
|
815
|
+
```bash
|
|
816
|
+
npm install ngxsmk-datepicker@1.9.22
|
|
817
|
+
```
|
|
818
|
+
|
|
819
|
+
### Changes
|
|
820
|
+
|
|
821
|
+
- **Version Update**: Updated to version 1.9.22
|
|
822
|
+
- **Stable Release**: Version 1.9.22 is the current stable version
|
|
823
|
+
|
|
824
|
+
### Bug Fixes
|
|
825
|
+
|
|
826
|
+
- **Form Control Value Initialization**: Fixed issue where datepicker was not properly updating the displayed month when initialized with form control values
|
|
827
|
+
- The datepicker now correctly displays the month from form control values instead of defaulting to the current month
|
|
828
|
+
- Added proper signal updates and change detection in `writeValue()` method
|
|
829
|
+
- This fix ensures that when using Reactive Forms with initial date values, the calendar opens to the correct month
|
|
830
|
+
- Example: If a form control has a value of January 2026, the calendar will now open showing January instead of the current month
|
|
831
|
+
|
|
832
|
+
- **Locale Week Start Detection**: Fixed `getFirstDayOfWeek()` function to properly return 1 for en-GB locale and other European locales
|
|
833
|
+
- Added fallback logic for locales where `Intl.Locale.weekInfo` is not available (older browsers/environments)
|
|
834
|
+
- Now correctly returns Monday (1) for en-GB, en-AU, en-NZ, and most European locales
|
|
835
|
+
- Maintains backward compatibility with en-US and other locales that use Sunday (0) as first day
|
|
836
|
+
- All calendar utils tests now passing
|
|
837
|
+
|
|
838
|
+
### Breaking Changes
|
|
839
|
+
|
|
840
|
+
None in v1.9.22.
|
|
841
|
+
|
|
842
|
+
### Deprecations
|
|
843
|
+
|
|
844
|
+
None in v1.9.22.
|
|
845
|
+
|
|
846
|
+
## v1.9.20 → v1.9.21
|
|
847
|
+
|
|
848
|
+
### Installation
|
|
849
|
+
|
|
850
|
+
Update to the latest version:
|
|
851
|
+
|
|
852
|
+
```bash
|
|
853
|
+
npm install ngxsmk-datepicker@latest
|
|
854
|
+
```
|
|
855
|
+
|
|
856
|
+
### New Features
|
|
857
|
+
|
|
858
|
+
#### Mobile-Specific Features
|
|
859
|
+
|
|
860
|
+
Version 1.9.21 introduces comprehensive mobile optimization:
|
|
861
|
+
|
|
862
|
+
```typescript
|
|
863
|
+
// Enable native picker on mobile devices (automatic detection)
|
|
864
|
+
<ngxsmk-datepicker
|
|
865
|
+
[useNativePicker]="true"
|
|
866
|
+
[autoDetectMobile]="true"
|
|
867
|
+
[mobileModalStyle]="'bottom-sheet'"
|
|
868
|
+
[enableHapticFeedback]="true">
|
|
869
|
+
</ngxsmk-datepicker>
|
|
870
|
+
```
|
|
871
|
+
|
|
872
|
+
**New Inputs:**
|
|
873
|
+
|
|
874
|
+
- `useNativePicker`: Enable native date picker on mobile devices
|
|
875
|
+
- `autoDetectMobile`: Automatically detect mobile devices (default: `true`)
|
|
876
|
+
- `mobileModalStyle`: Choose modal style (`'bottom-sheet'`, `'center'`, `'fullscreen'`)
|
|
877
|
+
- `enableHapticFeedback`: Enable haptic feedback for interactions
|
|
878
|
+
|
|
879
|
+
#### Advanced Selection Modes
|
|
880
|
+
|
|
881
|
+
New selection modes extend the existing `mode` input:
|
|
882
|
+
|
|
883
|
+
```typescript
|
|
884
|
+
// Week selection
|
|
885
|
+
<ngxsmk-datepicker mode="week"></ngxsmk-datepicker>
|
|
886
|
+
|
|
887
|
+
// Month selection
|
|
888
|
+
<ngxsmk-datepicker mode="month"></ngxsmk-datepicker>
|
|
889
|
+
|
|
890
|
+
// Quarter selection
|
|
891
|
+
<ngxsmk-datepicker mode="quarter"></ngxsmk-datepicker>
|
|
892
|
+
|
|
893
|
+
// Year selection
|
|
894
|
+
<ngxsmk-datepicker mode="year"></ngxsmk-datepicker>
|
|
895
|
+
```
|
|
896
|
+
|
|
897
|
+
#### Enhanced Time Selection
|
|
898
|
+
|
|
899
|
+
Seconds selection is now available:
|
|
900
|
+
|
|
901
|
+
```typescript
|
|
902
|
+
<ngxsmk-datepicker
|
|
903
|
+
[showTime]="true"
|
|
904
|
+
[showSeconds]="true"
|
|
905
|
+
[secondInterval]="1">
|
|
906
|
+
</ngxsmk-datepicker>
|
|
907
|
+
```
|
|
908
|
+
|
|
909
|
+
**New Inputs:**
|
|
910
|
+
|
|
911
|
+
- `showSeconds`: Show seconds selector in time picker
|
|
912
|
+
- `secondInterval`: Interval for seconds selection (default: `1`)
|
|
913
|
+
|
|
914
|
+
### Migration Steps
|
|
915
|
+
|
|
916
|
+
No migration steps required. This is a patch version with new features that are opt-in:
|
|
917
|
+
|
|
918
|
+
1. **Existing code continues to work**: All existing implementations remain unchanged
|
|
919
|
+
2. **New features are opt-in**: Mobile features and new selection modes require explicit configuration
|
|
920
|
+
3. **Backward compatible**: All changes maintain full backward compatibility
|
|
921
|
+
|
|
922
|
+
### Breaking Changes
|
|
923
|
+
|
|
924
|
+
None. This version is fully backward compatible.
|
|
925
|
+
|
|
926
|
+
### Compatibility
|
|
927
|
+
|
|
928
|
+
- Angular 17-22
|
|
929
|
+
- All existing features continue to work
|
|
930
|
+
- New features are additive only
|
|
931
|
+
|
|
932
|
+
## v1.9.15 → v1.9.16
|
|
933
|
+
|
|
934
|
+
### Fixed
|
|
935
|
+
|
|
936
|
+
- **Range Mode Previous Month Selection**: Fixed issue where users could not select dates from previous months in range mode when starting with `{ start: null, end: null }`
|
|
937
|
+
- Added memo cache invalidation before calendar generation when clicking dates from previous/next months in range mode
|
|
938
|
+
- Fixed issue where clicking dates from previous months would navigate but memoized functions would use stale month/year values
|
|
939
|
+
- Now properly invalidates memo cache in single, range, and multiple modes when navigating to different months via date clicks
|
|
940
|
+
- Users can now select dates from previous months in range mode without issues, allowing proper range selection across month boundaries
|
|
941
|
+
|
|
942
|
+
### Changed
|
|
943
|
+
|
|
944
|
+
- **Version Update**: Updated to version 1.9.16
|
|
945
|
+
- **Stable Release**: Version 1.9.16 is the current stable version
|
|
946
|
+
|
|
947
|
+
### Migration Steps
|
|
948
|
+
|
|
949
|
+
No migration steps required. This is a patch version with bug fixes only. Simply update your package version:
|
|
950
|
+
|
|
951
|
+
```bash
|
|
952
|
+
npm install ngxsmk-datepicker@1.9.16
|
|
953
|
+
```
|
|
954
|
+
|
|
955
|
+
### Breaking Changes
|
|
956
|
+
|
|
957
|
+
None in v1.9.16.
|
|
958
|
+
|
|
959
|
+
### Deprecations
|
|
960
|
+
|
|
961
|
+
None in v1.9.16.
|
|
962
|
+
|
|
963
|
+
### Notes
|
|
964
|
+
|
|
965
|
+
- This version maintains full backward compatibility with v1.9.15. All existing code will continue to work without modifications.
|
|
966
|
+
- The fix ensures that range mode date pickers work correctly when users click on dates from previous months, especially when starting with null initial values.
|
|
967
|
+
|
|
968
|
+
## v1.9.20 → v1.9.21
|
|
969
|
+
|
|
970
|
+
### Changed
|
|
971
|
+
|
|
972
|
+
- **Version Update**: Updated to version 1.9.21
|
|
973
|
+
- **Stable Release**: Version 1.9.21 is the current stable version
|
|
974
|
+
|
|
975
|
+
### Installation
|
|
976
|
+
|
|
977
|
+
```bash
|
|
978
|
+
npm install ngxsmk-datepicker@1.9.21
|
|
979
|
+
```
|
|
980
|
+
|
|
981
|
+
### Breaking Changes
|
|
982
|
+
|
|
983
|
+
None in v1.9.21.
|
|
984
|
+
|
|
985
|
+
### Deprecations
|
|
986
|
+
|
|
987
|
+
None in v1.9.21.
|
|
988
|
+
|
|
989
|
+
### Migration Steps
|
|
990
|
+
|
|
991
|
+
- This version maintains full backward compatibility with v1.9.20. All existing code will continue to work without modifications.
|
|
992
|
+
- No code changes required.
|
|
993
|
+
|
|
994
|
+
## v1.9.19 → v1.9.20
|
|
995
|
+
|
|
996
|
+
### Fixed
|
|
997
|
+
|
|
998
|
+
- **Test Environment Compatibility (Issue #71)**: Fixed `TypeError: window.matchMedia is not a function` error in test environments (jsdom/Vitest)
|
|
999
|
+
- Added error handling for `window.matchMedia` in `applyAnimationConfig()` method
|
|
1000
|
+
- Component now gracefully handles missing `matchMedia` API in test environments
|
|
1001
|
+
- Prevents test failures when running with Vitest and jsdom
|
|
1002
|
+
- Added comprehensive test coverage for `matchMedia` compatibility scenarios
|
|
1003
|
+
|
|
1004
|
+
### Changed
|
|
1005
|
+
|
|
1006
|
+
- **Version Update**: Updated to version 1.9.20
|
|
1007
|
+
- **Stable Release**: Version 1.9.20 is the current stable version
|
|
1008
|
+
|
|
1009
|
+
### Installation
|
|
1010
|
+
|
|
1011
|
+
```bash
|
|
1012
|
+
npm install ngxsmk-datepicker@1.9.20
|
|
1013
|
+
```
|
|
1014
|
+
|
|
1015
|
+
### Breaking Changes
|
|
1016
|
+
|
|
1017
|
+
None in v1.9.20.
|
|
1018
|
+
|
|
1019
|
+
### Deprecations
|
|
1020
|
+
|
|
1021
|
+
None in v1.9.20.
|
|
1022
|
+
|
|
1023
|
+
### Migration Steps
|
|
1024
|
+
|
|
1025
|
+
- This version maintains full backward compatibility with v1.9.19. All existing code will continue to work without modifications.
|
|
1026
|
+
- No code changes required.
|
|
1027
|
+
- Fixes test compatibility issues with Vitest and jsdom environments.
|
|
1028
|
+
|
|
1029
|
+
## v1.9.18 → v1.9.19
|
|
1030
|
+
|
|
1031
|
+
### Added
|
|
1032
|
+
|
|
1033
|
+
- **Comprehensive Responsive Layout Redesign**: Complete redesign of demo project layout for all screen sizes
|
|
1034
|
+
- Redesigned navbar for all breakpoints (320px-374px, 375px-479px, 480px-599px, 600px-767px, 768px-1023px, 1024px+)
|
|
1035
|
+
- Enhanced sidebar navigation with mobile drawer, tablet collapsible, and desktop fixed layouts
|
|
1036
|
+
- Responsive hero section with adaptive typography and button layouts
|
|
1037
|
+
- Feature grid responsive design (1 column → 2 columns → 3 columns → 4 columns)
|
|
1038
|
+
- Optimized content sections with responsive padding, typography, and spacing
|
|
1039
|
+
|
|
1040
|
+
### Changed
|
|
1041
|
+
|
|
1042
|
+
- **Version Update**: Updated to version 1.9.19
|
|
1043
|
+
- **Stable Release**: Version 1.9.19 is the current stable version
|
|
1044
|
+
- **Meta Tag Update**: Replaced deprecated `apple-mobile-web-app-capable` with `mobile-web-app-capable`
|
|
1045
|
+
- **Code Cleanup**: Removed unnecessary comments from SCSS files for cleaner codebase
|
|
1046
|
+
|
|
1047
|
+
### Installation
|
|
1048
|
+
|
|
1049
|
+
```bash
|
|
1050
|
+
npm install ngxsmk-datepicker@1.9.19
|
|
1051
|
+
```
|
|
1052
|
+
|
|
1053
|
+
### Breaking Changes
|
|
1054
|
+
|
|
1055
|
+
None in v1.9.19.
|
|
1056
|
+
|
|
1057
|
+
### Deprecations
|
|
1058
|
+
|
|
1059
|
+
None in v1.9.19.
|
|
1060
|
+
|
|
1061
|
+
### Migration Steps
|
|
1062
|
+
|
|
1063
|
+
- This version maintains full backward compatibility with v1.9.18. All existing code will continue to work without modifications.
|
|
1064
|
+
- No code changes required.
|
|
1065
|
+
- Demo project layout improvements are automatic and require no code changes.
|
|
1066
|
+
|
|
1067
|
+
## v1.9.17 → v1.9.18
|
|
1068
|
+
|
|
1069
|
+
### Fixed
|
|
1070
|
+
|
|
1071
|
+
- **Mobile Touch Event Handling**: Improved touch listener attachment when calendar opens on mobile devices
|
|
1072
|
+
- Touch listeners now properly attach when calendar first opens, eliminating the need to navigate months first
|
|
1073
|
+
- Added retry mechanism with multiple attempts to ensure listeners are attached even on slower mobile devices
|
|
1074
|
+
- Improved timing with double `requestAnimationFrame` calls and multiple retry strategies
|
|
1075
|
+
|
|
1076
|
+
### Changed
|
|
1077
|
+
|
|
1078
|
+
- **Version Update**: Updated to version 1.9.18
|
|
1079
|
+
- **Stable Release**: Version 1.9.18 is the current stable version
|
|
1080
|
+
|
|
1081
|
+
### Installation
|
|
1082
|
+
|
|
1083
|
+
```bash
|
|
1084
|
+
npm install ngxsmk-datepicker@1.9.18
|
|
1085
|
+
```
|
|
1086
|
+
|
|
1087
|
+
### Breaking Changes
|
|
1088
|
+
|
|
1089
|
+
None in v1.9.18.
|
|
1090
|
+
|
|
1091
|
+
### Deprecations
|
|
1092
|
+
|
|
1093
|
+
None in v1.9.18.
|
|
1094
|
+
|
|
1095
|
+
### Migration Steps
|
|
1096
|
+
|
|
1097
|
+
- This version maintains full backward compatibility with v1.9.17. All existing code will continue to work without modifications.
|
|
1098
|
+
- No code changes required.
|
|
1099
|
+
|
|
1100
|
+
## v1.9.16 → v1.9.17
|
|
1101
|
+
|
|
1102
|
+
### Changed
|
|
1103
|
+
|
|
1104
|
+
- **Version Update**: Updated to version 1.9.17
|
|
1105
|
+
- **Stable Release**: Version 1.9.17 is the current stable version
|
|
1106
|
+
|
|
1107
|
+
### Migration Steps
|
|
1108
|
+
|
|
1109
|
+
No migration steps required. This is a patch version update. Simply update your package version:
|
|
1110
|
+
|
|
1111
|
+
```bash
|
|
1112
|
+
npm install ngxsmk-datepicker@1.9.17
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
### Breaking Changes
|
|
1116
|
+
|
|
1117
|
+
None in v1.9.17.
|
|
1118
|
+
|
|
1119
|
+
### Deprecations
|
|
1120
|
+
|
|
1121
|
+
None in v1.9.17.
|
|
1122
|
+
|
|
1123
|
+
### Notes
|
|
1124
|
+
|
|
1125
|
+
- This version maintains full backward compatibility with v1.9.16. All existing code will continue to work without modifications.
|
|
1126
|
+
- This is a patch version update with no code changes required.
|
|
1127
|
+
|
|
1128
|
+
## v1.9.14 → v1.9.15
|
|
1129
|
+
|
|
1130
|
+
### Fixed
|
|
1131
|
+
|
|
1132
|
+
- **Moment Object Binding with ngModel**: Fixed issue where Moment.js objects passed via `[(ngModel)]` were not binding correctly with the datepicker
|
|
1133
|
+
- Updated `writeValue()` method to normalize Moment.js objects before passing to `initializeValue()`
|
|
1134
|
+
- Ensures Moment.js objects (including those with `utcOffset()` applied) are properly converted to Date objects when binding with template-driven forms
|
|
1135
|
+
- Now correctly handles `moment(response.Date).utcOffset(timezone)` when setting via ngModel
|
|
1136
|
+
- **Date Clicks After Month Navigation**: Fixed issue where dates became unclickable after navigating backward or forward months
|
|
1137
|
+
- Updated `isDateDisabledMemo` getter to properly invalidate cached memoized function when month/year changes
|
|
1138
|
+
- Added month/year change detection to ensure disabled date cache is refreshed after navigation
|
|
1139
|
+
- Dates in previous/next months are now properly clickable without needing to close and reopen the datepicker
|
|
1140
|
+
|
|
1141
|
+
### Changed
|
|
1142
|
+
|
|
1143
|
+
- **Version Update**: Updated to version 1.9.15
|
|
1144
|
+
- **Stable Release**: Version 1.9.15 is the current stable version
|
|
1145
|
+
|
|
1146
|
+
### Migration Steps
|
|
1147
|
+
|
|
1148
|
+
No migration steps required. This is a patch version with bug fixes only. Simply update your package version:
|
|
1149
|
+
|
|
1150
|
+
```bash
|
|
1151
|
+
npm install ngxsmk-datepicker@1.9.15
|
|
1152
|
+
```
|
|
1153
|
+
|
|
1154
|
+
All fixes are backward compatible and require no code changes. This version is compatible with Angular 17 and up versions.
|
|
1155
|
+
|
|
1156
|
+
## v1.9.13 → v1.9.14
|
|
1157
|
+
|
|
1158
|
+
### Fixed
|
|
1159
|
+
|
|
1160
|
+
- **Date Picker Selection Issue**: Fixed issue where date picker was not working properly when selecting dates, especially in range mode
|
|
1161
|
+
- Added proper change detection scheduling when setting start date in range mode
|
|
1162
|
+
- Added memo cache invalidation to ensure UI updates correctly reflect selected dates
|
|
1163
|
+
- Fixed UI not updating when only start date is selected in range mode
|
|
1164
|
+
- **Moment.js Timezone Offset Preservation**: Fixed issue where Moment.js objects with timezone offsets (e.g., `moment().utcOffset('-0600')`) were not preserving the timezone offset when converted to Date objects
|
|
1165
|
+
- Added `momentToDate()` method that detects and preserves timezone offsets from Moment.js objects
|
|
1166
|
+
- Now correctly handles `moment().utcOffset('-0600')` without requiring `toDate()` which loses timezone information
|
|
1167
|
+
|
|
1168
|
+
### Changed
|
|
1169
|
+
|
|
1170
|
+
- **Version Update**: Updated to version 1.9.14
|
|
1171
|
+
- **Stable Release**: Version 1.9.14 is the current stable version
|
|
1172
|
+
|
|
1173
|
+
### Migration Steps
|
|
1174
|
+
|
|
1175
|
+
No migration steps required. This is a patch version with bug fixes only. Simply update your package version:
|
|
1176
|
+
|
|
1177
|
+
```bash
|
|
1178
|
+
npm install ngxsmk-datepicker@1.9.14
|
|
1179
|
+
```
|
|
1180
|
+
|
|
1181
|
+
All fixes are backward compatible and require no code changes.
|
|
1182
|
+
|
|
1183
|
+
## v1.9.12 → v1.9.13
|
|
1184
|
+
|
|
1185
|
+
### Fixed
|
|
1186
|
+
|
|
1187
|
+
- **valueChange Event Bug**: Fixed issue where `(valueChange)` event was emitting `null` instead of the date value for range mode when using template-driven forms with `[(ngModel)]`
|
|
1188
|
+
- **Range Mode Date Selection**: Fixed issue where dates became disabled/unclickable after navigating to previous or next months in range mode
|
|
1189
|
+
- **Moment.js Object Handling**: Fixed issue where Moment.js objects in range values and arrays were not being properly normalized and converted to Date objects
|
|
1190
|
+
|
|
1191
|
+
### Changed
|
|
1192
|
+
|
|
1193
|
+
- **Version Update**: Updated to version 1.9.13
|
|
1194
|
+
- **Stable Release**: Version 1.9.13 is the current stable version
|
|
1195
|
+
|
|
1196
|
+
### Migration Steps
|
|
1197
|
+
|
|
1198
|
+
No migration steps required. This is a patch version with bug fixes only. Simply update your package version:
|
|
1199
|
+
|
|
1200
|
+
```bash
|
|
1201
|
+
npm install ngxsmk-datepicker@1.9.13
|
|
1202
|
+
```
|
|
1203
|
+
|
|
1204
|
+
All fixes are backward compatible and require no code changes.
|
|
1205
|
+
|
|
1206
|
+
## v1.9.11 → v1.9.12
|
|
1207
|
+
|
|
1208
|
+
### Changed
|
|
1209
|
+
|
|
1210
|
+
- **Version Update**: Updated to version 1.9.12
|
|
1211
|
+
- **Stable Release**: Version 1.9.12 is the current stable version
|
|
1212
|
+
|
|
1213
|
+
### Migration Steps
|
|
1214
|
+
|
|
1215
|
+
No code changes required. This is a minor version update with backward compatibility:
|
|
1216
|
+
|
|
1217
|
+
1. Update package version:
|
|
1218
|
+
|
|
1219
|
+
```bash
|
|
1220
|
+
npm install ngxsmk-datepicker@^1.9.12
|
|
1221
|
+
```
|
|
1222
|
+
|
|
1223
|
+
2. Rebuild your application:
|
|
1224
|
+
|
|
1225
|
+
```bash
|
|
1226
|
+
npm run build
|
|
1227
|
+
```
|
|
1228
|
+
|
|
1229
|
+
3. Run tests to ensure everything works:
|
|
1230
|
+
```bash
|
|
1231
|
+
npm test
|
|
1232
|
+
```
|
|
1233
|
+
|
|
1234
|
+
**Note**: This version maintains full backward compatibility with v1.9.11. All existing code will continue to work without modifications.
|
|
1235
|
+
|
|
1236
|
+
## v1.9.10 → v1.9.11
|
|
1237
|
+
|
|
1238
|
+
### Fixed
|
|
1239
|
+
|
|
1240
|
+
- **Moment.js Integration**: Fixed critical issue where Moment.js objects with custom date formats would not populate correctly
|
|
1241
|
+
- Added support for Moment.js objects via `.toDate()` method
|
|
1242
|
+
- Enhanced format token parsing (YYYY, YY, MM, M, DD, D, hh, h, HH, H, mm, m, ss, s, a, A)
|
|
1243
|
+
- Improved TypeScript compatibility with dynamic object properties
|
|
1244
|
+
|
|
1245
|
+
### Migration Steps
|
|
1246
|
+
|
|
1247
|
+
No code changes required. This is a bug fix release:
|
|
1248
|
+
|
|
1249
|
+
1. Update package version:
|
|
1250
|
+
|
|
1251
|
+
```bash
|
|
1252
|
+
npm install ngxsmk-datepicker@^1.9.11
|
|
1253
|
+
```
|
|
1254
|
+
|
|
1255
|
+
2. If you're using Moment.js with custom formats, the datepicker will now properly handle Moment.js objects.
|
|
1256
|
+
|
|
1257
|
+
## v1.9.9 → v1.9.10
|
|
1258
|
+
|
|
1259
|
+
### Fixed
|
|
1260
|
+
|
|
1261
|
+
- **Async Database Value Loading**: Enhanced datepicker to properly handle database values that load asynchronously
|
|
1262
|
+
- Added fallback sync mechanisms for async database loads
|
|
1263
|
+
- Extended sync duration to 30 seconds with 100ms check intervals
|
|
1264
|
+
- **TypeScript Compilation Error**: Fixed `EffectRef` type error when using Angular 17+ `effect()` API
|
|
1265
|
+
- **Test Configuration**: Fixed test configuration for Angular 17+ compatibility
|
|
1266
|
+
|
|
1267
|
+
### Migration Steps
|
|
1268
|
+
|
|
1269
|
+
No code changes required. This is a bug fix release:
|
|
1270
|
+
|
|
1271
|
+
1. Update package version:
|
|
1272
|
+
|
|
1273
|
+
```bash
|
|
1274
|
+
npm install ngxsmk-datepicker@^1.9.10
|
|
1275
|
+
```
|
|
1276
|
+
|
|
1277
|
+
2. If you're experiencing issues with database values not populating, this version should resolve them.
|
|
1278
|
+
|
|
1279
|
+
## v1.9.8 → v1.9.9
|
|
1280
|
+
|
|
1281
|
+
### Fixed
|
|
1282
|
+
|
|
1283
|
+
- **Database Value Population**: Fixed critical issue where datepicker would not populate with values from database when using `[field]` input binding
|
|
1284
|
+
- Now properly handles Date objects, string dates, range objects, and arrays of dates
|
|
1285
|
+
|
|
1286
|
+
### Migration Steps
|
|
1287
|
+
|
|
1288
|
+
No code changes required. This is a bug fix release:
|
|
1289
|
+
|
|
1290
|
+
1. Update package version:
|
|
1291
|
+
```bash
|
|
1292
|
+
npm install ngxsmk-datepicker@^1.9.9
|
|
1293
|
+
```
|
|
1294
|
+
|
|
1295
|
+
## v1.9.7 → v1.9.8
|
|
1296
|
+
|
|
1297
|
+
### Fixed
|
|
1298
|
+
|
|
1299
|
+
- **Date Selection Reset Issue**: Fixed critical bug where selected dates would reset to today's date when using `[field]` input binding
|
|
1300
|
+
- Fixed date mutation issues
|
|
1301
|
+
- Added internal update flag to prevent value resets
|
|
1302
|
+
|
|
1303
|
+
### Migration Steps
|
|
1304
|
+
|
|
1305
|
+
No code changes required. This is a bug fix release:
|
|
1306
|
+
|
|
1307
|
+
1. Update package version:
|
|
1308
|
+
```bash
|
|
1309
|
+
npm install ngxsmk-datepicker@^1.9.8
|
|
1310
|
+
```
|
|
1311
|
+
|
|
1312
|
+
## v1.9.6 → v1.9.7
|
|
1313
|
+
|
|
1314
|
+
### Fixed
|
|
1315
|
+
|
|
1316
|
+
- **Calendar Population**: Fixed critical issue where datepicker calendar would not populate with dates when opened
|
|
1317
|
+
- Fixed issue when multiple datepickers were present in the same form
|
|
1318
|
+
|
|
1319
|
+
### Migration Steps
|
|
1320
|
+
|
|
1321
|
+
No code changes required. This is a bug fix release:
|
|
1322
|
+
|
|
1323
|
+
1. Update package version:
|
|
1324
|
+
```bash
|
|
1325
|
+
npm install ngxsmk-datepicker@^1.9.7
|
|
1326
|
+
```
|
|
1327
|
+
|
|
1328
|
+
## v1.9.5 → v1.9.6
|
|
1329
|
+
|
|
1330
|
+
### Fixed
|
|
1331
|
+
|
|
1332
|
+
- **Multiple Datepicker Management**: Fixed issue where multiple datepickers in the same form would open in the same centered location
|
|
1333
|
+
- **Outside Click Detection**: Improved click detection to properly close datepicker
|
|
1334
|
+
- **Auto-close Other Datepickers**: When opening a datepicker, all other open datepickers are now automatically closed
|
|
1335
|
+
- **Mobile Datepicker**: Fixed issues with mobile datepicker opening and closing
|
|
1336
|
+
- **Select Box Cursor**: Added pointer cursor to all select boxes
|
|
1337
|
+
|
|
1338
|
+
### Migration Steps
|
|
1339
|
+
|
|
1340
|
+
No code changes required. This is a bug fix release:
|
|
1341
|
+
|
|
1342
|
+
1. Update package version:
|
|
1343
|
+
```bash
|
|
1344
|
+
npm install ngxsmk-datepicker@^1.9.6
|
|
1345
|
+
```
|
|
1346
|
+
|
|
1347
|
+
## v1.9.4 → v1.9.5
|
|
1348
|
+
|
|
1349
|
+
### Fixed
|
|
1350
|
+
|
|
1351
|
+
- **Angular 21+ Signal Forms Type Compatibility**: Fixed TypeScript compilation error with Angular 21+ Signal Forms
|
|
1352
|
+
- Fixed `Type '() => string' is not assignable to type 'never'` error when using `[field]` input
|
|
1353
|
+
- Updated `SignalFormField` type definition to be compatible with Angular 21's `FieldTree<Date, string>` types
|
|
1354
|
+
- Maintains backward compatibility with Angular 17-20
|
|
1355
|
+
|
|
1356
|
+
### Migration Steps
|
|
1357
|
+
|
|
1358
|
+
No code changes required. This is a bug fix release:
|
|
1359
|
+
|
|
1360
|
+
1. Update package version:
|
|
1361
|
+
|
|
1362
|
+
```bash
|
|
1363
|
+
npm install ngxsmk-datepicker@^1.9.5
|
|
1364
|
+
```
|
|
1365
|
+
|
|
1366
|
+
2. If you were experiencing TypeScript errors with Signal Forms in Angular 21+, they should now be resolved.
|
|
1367
|
+
|
|
1368
|
+
## v1.9.3 → v1.9.4
|
|
1369
|
+
|
|
1370
|
+
### Added
|
|
1371
|
+
|
|
1372
|
+
- **Custom Date Format**: New `[displayFormat]` input property to display dates in custom formats
|
|
1373
|
+
- Supports format strings like "MM/DD/YYYY hh:mm A"
|
|
1374
|
+
- Works with date adapters (date-fns, dayjs, luxon) or built-in simple formatter
|
|
1375
|
+
- Supports common format tokens: YYYY, MM, DD, hh, mm, A, etc.
|
|
1376
|
+
|
|
1377
|
+
### Fixed
|
|
1378
|
+
|
|
1379
|
+
- **Time Selection Dropdowns**: Fixed visibility issues with time selection dropdowns
|
|
1380
|
+
- Dropdowns now properly display and are not clipped by parent containers
|
|
1381
|
+
- Improved z-index handling for time selection dropdowns
|
|
1382
|
+
|
|
1383
|
+
### Migration Steps
|
|
1384
|
+
|
|
1385
|
+
1. Update package version:
|
|
1386
|
+
|
|
1387
|
+
```bash
|
|
1388
|
+
npm install ngxsmk-datepicker@^1.9.4
|
|
1389
|
+
```
|
|
1390
|
+
|
|
1391
|
+
2. **Optional**: Use the new `[displayFormat]` input for custom date formatting:
|
|
1392
|
+
```html
|
|
1393
|
+
<ngxsmk-datepicker [displayFormat]="'MM/DD/YYYY hh:mm A'" mode="single"> </ngxsmk-datepicker>
|
|
1394
|
+
```
|
|
1395
|
+
|
|
1396
|
+
## v1.9.2 → v1.9.3
|
|
1397
|
+
|
|
1398
|
+
### Added
|
|
1399
|
+
|
|
1400
|
+
- **Time-Only Picker**: New `[timeOnly]` input property to display only time selection without calendar
|
|
1401
|
+
- Hides calendar grid and shows only time controls (hour, minute, AM/PM)
|
|
1402
|
+
- Automatically enables `showTime` when `timeOnly` is true
|
|
1403
|
+
- Perfect for time selection scenarios where date is not needed
|
|
1404
|
+
|
|
1405
|
+
### Fixed
|
|
1406
|
+
|
|
1407
|
+
- **Test Suite**: Fixed 25+ failing tests across multiple test files
|
|
1408
|
+
- All 353 tests now pass successfully
|
|
1409
|
+
|
|
1410
|
+
### Migration Steps
|
|
1411
|
+
|
|
1412
|
+
1. Update package version:
|
|
1413
|
+
|
|
1414
|
+
```bash
|
|
1415
|
+
npm install ngxsmk-datepicker@^1.9.3
|
|
1416
|
+
```
|
|
1417
|
+
|
|
1418
|
+
2. **Optional**: Use the new `[timeOnly]` input for time-only selection:
|
|
1419
|
+
```html
|
|
1420
|
+
<ngxsmk-datepicker [timeOnly]="true" placeholder="Select Time"> </ngxsmk-datepicker>
|
|
1421
|
+
```
|
|
1422
|
+
|
|
1423
|
+
## v1.9.1 → v1.9.2
|
|
1424
|
+
|
|
1425
|
+
### Changed
|
|
1426
|
+
|
|
1427
|
+
- **Bundle Optimization**: Optimized bundle size with improved TypeScript compiler settings
|
|
1428
|
+
- Main bundle: ~127KB (source maps excluded from published package)
|
|
1429
|
+
- Enhanced tree-shaking with optimized imports and compiler options
|
|
1430
|
+
- Source maps automatically removed from production builds
|
|
1431
|
+
|
|
1432
|
+
### Fixed
|
|
1433
|
+
|
|
1434
|
+
- Test suite configuration improvements
|
|
1435
|
+
- Bundle analysis now correctly excludes source maps
|
|
1436
|
+
- Build warnings from conflicting export conditions resolved
|
|
1437
|
+
|
|
1438
|
+
### Migration Steps
|
|
1439
|
+
|
|
1440
|
+
No code changes required. This is a transparent update with optimizations:
|
|
1441
|
+
|
|
1442
|
+
1. Update package version:
|
|
1443
|
+
|
|
1444
|
+
```bash
|
|
1445
|
+
npm install ngxsmk-datepicker@^1.9.2
|
|
1446
|
+
```
|
|
1447
|
+
|
|
1448
|
+
2. Rebuild your application to benefit from bundle optimizations:
|
|
1449
|
+
```bash
|
|
1450
|
+
npm run build
|
|
1451
|
+
```
|
|
1452
|
+
|
|
1453
|
+
## v1.9.0 → v1.9.1
|
|
1454
|
+
|
|
1455
|
+
### New Features
|
|
1456
|
+
|
|
1457
|
+
_No new features in v1.9.1._
|
|
1458
|
+
|
|
1459
|
+
### Changes
|
|
1460
|
+
|
|
1461
|
+
#### Bundle Optimization
|
|
1462
|
+
|
|
1463
|
+
The library bundle has been further optimized for production:
|
|
1464
|
+
|
|
1465
|
+
- **Bundle Size**: Main bundle is now ~127KB (source maps excluded from published package)
|
|
1466
|
+
- **TypeScript Compiler**: Enhanced settings for better tree-shaking
|
|
1467
|
+
- Added `importsNotUsedAsValues: "remove"` for smaller output
|
|
1468
|
+
- Disabled `preserveConstEnums` for better inlining
|
|
1469
|
+
- **Source Maps**: Automatically removed from production builds (saves ~127KB)
|
|
1470
|
+
- **Package Configuration**: Fixed exports to eliminate build warnings
|
|
1471
|
+
|
|
1472
|
+
**For Developers:**
|
|
1473
|
+
|
|
1474
|
+
- Use `npm run build:optimized` for production builds
|
|
1475
|
+
- Use `npm run build:analyze` to check bundle size
|
|
1476
|
+
- Source maps are automatically excluded from the published package
|
|
1477
|
+
|
|
1478
|
+
#### Build Process Improvements
|
|
1479
|
+
|
|
1480
|
+
- Source maps are now automatically removed from production builds
|
|
1481
|
+
- Improved build scripts with better error handling
|
|
1482
|
+
- Enhanced bundle analysis that correctly excludes source maps
|
|
1483
|
+
|
|
1484
|
+
#### Package Configuration
|
|
1485
|
+
|
|
1486
|
+
- Fixed `package.json` exports to eliminate build warnings
|
|
1487
|
+
- Optimized `files` array to exclude unnecessary files
|
|
1488
|
+
- Updated exports field for better module resolution
|
|
1489
|
+
|
|
1490
|
+
#### Test Configuration
|
|
1491
|
+
|
|
1492
|
+
- Added Zone.js polyfills to library test configuration
|
|
1493
|
+
- Updated test commands to explicitly target library project
|
|
1494
|
+
- Improved test reliability across Angular versions
|
|
1495
|
+
|
|
1496
|
+
### Breaking Changes
|
|
1497
|
+
|
|
1498
|
+
None in v1.9.1.
|
|
1499
|
+
|
|
1500
|
+
### Deprecations
|
|
1501
|
+
|
|
1502
|
+
None in v1.9.1.
|
|
1503
|
+
|
|
1504
|
+
### Migration Steps
|
|
1505
|
+
|
|
1506
|
+
No code changes required. This is a transparent update with optimizations and bug fixes:
|
|
1507
|
+
|
|
1508
|
+
1. Update package version:
|
|
1509
|
+
|
|
1510
|
+
```bash
|
|
1511
|
+
npm install ngxsmk-datepicker@^1.9.1
|
|
1512
|
+
```
|
|
1513
|
+
|
|
1514
|
+
2. Rebuild your application:
|
|
1515
|
+
|
|
1516
|
+
```bash
|
|
1517
|
+
npm run build
|
|
1518
|
+
```
|
|
1519
|
+
|
|
1520
|
+
3. Verify bundle size improvements (optional):
|
|
1521
|
+
- Check your application's bundle size
|
|
1522
|
+
- You should see improved tree-shaking benefits
|
|
1523
|
+
|
|
1524
|
+
4. Run tests to ensure everything works:
|
|
1525
|
+
```bash
|
|
1526
|
+
npm test
|
|
1527
|
+
```
|
|
1528
|
+
|
|
1529
|
+
**Note**: If you're a library developer using ngxsmk-datepicker as a dependency, you may notice:
|
|
1530
|
+
|
|
1531
|
+
- Smaller bundle sizes in your application
|
|
1532
|
+
- Fewer build warnings related to package exports
|
|
1533
|
+
- Improved test reliability if you're running tests with Zone.js
|
|
1534
|
+
|
|
1535
|
+
## v1.8.0 → v1.9.0
|
|
1536
|
+
|
|
1537
|
+
### New Features
|
|
1538
|
+
|
|
1539
|
+
#### Extension Points & Hooks
|
|
1540
|
+
|
|
1541
|
+
Added comprehensive hook system for customization.
|
|
1542
|
+
|
|
1543
|
+
**New Input:**
|
|
1544
|
+
|
|
1545
|
+
```typescript
|
|
1546
|
+
hooks: DatepickerHooks | null = null;
|
|
1547
|
+
```
|
|
1548
|
+
|
|
1549
|
+
**Usage:**
|
|
1550
|
+
|
|
1551
|
+
```typescript
|
|
1552
|
+
const myHooks: DatepickerHooks = {
|
|
1553
|
+
getDayCellClasses: (date, isSelected, isDisabled, isToday, isHoliday) => {
|
|
1554
|
+
return isHoliday ? ["custom-holiday"] : [];
|
|
1555
|
+
},
|
|
1556
|
+
validateDate: (date, currentValue, mode) => {
|
|
1557
|
+
return date.getDay() !== 0; // Disable Sundays
|
|
1558
|
+
},
|
|
1559
|
+
};
|
|
1560
|
+
```
|
|
1561
|
+
|
|
1562
|
+
```html
|
|
1563
|
+
<ngxsmk-datepicker [hooks]="myHooks"></ngxsmk-datepicker>
|
|
1564
|
+
```
|
|
1565
|
+
|
|
1566
|
+
#### Enhanced Keyboard Shortcuts
|
|
1567
|
+
|
|
1568
|
+
New keyboard shortcuts:
|
|
1569
|
+
|
|
1570
|
+
- `Y`: Select yesterday
|
|
1571
|
+
- `N`: Select tomorrow
|
|
1572
|
+
- `W`: Select next week
|
|
1573
|
+
|
|
1574
|
+
#### Animation Optimizations
|
|
1575
|
+
|
|
1576
|
+
All animations now use GPU acceleration for better performance. No code changes required.
|
|
1577
|
+
|
|
1578
|
+
#### Bundle Optimization
|
|
1579
|
+
|
|
1580
|
+
The library bundle has been optimized for production:
|
|
1581
|
+
|
|
1582
|
+
- **Bundle Size**: Main bundle is now ~127KB (source maps excluded from published package)
|
|
1583
|
+
- **Tree-Shaking**: Enhanced with optimized TypeScript compiler settings
|
|
1584
|
+
- **Source Maps**: Automatically removed from production builds (saves ~127KB)
|
|
1585
|
+
- **No Breaking Changes**: All optimizations are transparent to end users
|
|
1586
|
+
|
|
1587
|
+
**For Developers:**
|
|
1588
|
+
|
|
1589
|
+
- Use `npm run build:optimized` for production builds
|
|
1590
|
+
- Use `npm run build:analyze` to check bundle size
|
|
1591
|
+
- Source maps are automatically excluded from the published package
|
|
1592
|
+
|
|
1593
|
+
### Breaking Changes
|
|
1594
|
+
|
|
1595
|
+
None in v1.9.0.
|
|
1596
|
+
|
|
1597
|
+
### Deprecations
|
|
1598
|
+
|
|
1599
|
+
None in v1.9.0.
|
|
1600
|
+
|
|
1601
|
+
## v1.7.0 → v1.8.0
|
|
1602
|
+
|
|
1603
|
+
### New Features
|
|
1604
|
+
|
|
1605
|
+
#### Signal Forms Support
|
|
1606
|
+
|
|
1607
|
+
Added `[field]` input for Angular 21+ Signal Forms integration.
|
|
1608
|
+
|
|
1609
|
+
**Before:**
|
|
1610
|
+
|
|
1611
|
+
```typescript
|
|
1612
|
+
// Using Reactive Forms
|
|
1613
|
+
dateControl = new FormControl<DatepickerValue>(null);
|
|
1614
|
+
```
|
|
1615
|
+
|
|
1616
|
+
```html
|
|
1617
|
+
<ngxsmk-datepicker formControlName="date"></ngxsmk-datepicker>
|
|
1618
|
+
```
|
|
1619
|
+
|
|
1620
|
+
**After (Optional - Reactive Forms still work):**
|
|
1621
|
+
|
|
1622
|
+
```typescript
|
|
1623
|
+
// Using Signal Forms
|
|
1624
|
+
localObject = signal({ date: null as DatepickerValue });
|
|
1625
|
+
myForm = form(
|
|
1626
|
+
this.localObject,
|
|
1627
|
+
objectSchema({
|
|
1628
|
+
date: objectSchema<DatepickerValue>(),
|
|
1629
|
+
}),
|
|
1630
|
+
);
|
|
1631
|
+
```
|
|
1632
|
+
|
|
1633
|
+
```html
|
|
1634
|
+
<ngxsmk-datepicker [field]="myForm.date"></ngxsmk-datepicker>
|
|
1635
|
+
```
|
|
1636
|
+
|
|
1637
|
+
#### SSR Optimizations
|
|
1638
|
+
|
|
1639
|
+
The datepicker is now fully SSR-compatible. No code changes required, but ensure you're using the latest version for SSR applications.
|
|
1640
|
+
|
|
1641
|
+
#### Improved Value Input
|
|
1642
|
+
|
|
1643
|
+
The `[value]` input now initializes immediately when set programmatically.
|
|
1644
|
+
|
|
1645
|
+
**Before:**
|
|
1646
|
+
|
|
1647
|
+
```typescript
|
|
1648
|
+
// Value might not initialize immediately
|
|
1649
|
+
component.value = new Date();
|
|
1650
|
+
```
|
|
1651
|
+
|
|
1652
|
+
**After:**
|
|
1653
|
+
|
|
1654
|
+
```typescript
|
|
1655
|
+
// Value initializes immediately
|
|
1656
|
+
component.value = new Date();
|
|
1657
|
+
```
|
|
1658
|
+
|
|
1659
|
+
### Breaking Changes
|
|
1660
|
+
|
|
1661
|
+
None in v1.8.0.
|
|
1662
|
+
|
|
1663
|
+
### Deprecations
|
|
1664
|
+
|
|
1665
|
+
None in v1.8.0.
|
|
1666
|
+
|
|
1667
|
+
## v1.9.0 → v2.0.0
|
|
1668
|
+
|
|
1669
|
+
### Planned Breaking Changes
|
|
1670
|
+
|
|
1671
|
+
_This section will be updated when v2.0.0 is released._
|
|
1672
|
+
|
|
1673
|
+
### Migration Steps
|
|
1674
|
+
|
|
1675
|
+
1. Update package version:
|
|
1676
|
+
|
|
1677
|
+
```bash
|
|
1678
|
+
npm install ngxsmk-datepicker@^2.0.0
|
|
1679
|
+
```
|
|
1680
|
+
|
|
1681
|
+
2. Review breaking changes below
|
|
1682
|
+
3. Update your code according to migration steps
|
|
1683
|
+
4. Run tests
|
|
1684
|
+
5. Update any custom styles if CSS classes changed
|
|
1685
|
+
|
|
1686
|
+
## General Migration Tips
|
|
1687
|
+
|
|
1688
|
+
### 1. Read the Changelog
|
|
1689
|
+
|
|
1690
|
+
Always check `CHANGELOG.md` for detailed changes in each version.
|
|
1691
|
+
|
|
1692
|
+
### 2. Test Thoroughly
|
|
1693
|
+
|
|
1694
|
+
After upgrading:
|
|
1695
|
+
|
|
1696
|
+
- Test all datepicker instances in your app
|
|
1697
|
+
- Verify form integration still works
|
|
1698
|
+
- Check SSR compatibility if applicable
|
|
1699
|
+
- Test keyboard navigation
|
|
1700
|
+
- Verify accessibility features
|
|
1701
|
+
|
|
1702
|
+
### 3. Update Dependencies
|
|
1703
|
+
|
|
1704
|
+
Ensure your Angular version is compatible:
|
|
1705
|
+
|
|
1706
|
+
- Check the compatibility table in README.md
|
|
1707
|
+
- Update Angular if needed
|
|
1708
|
+
|
|
1709
|
+
### 4. Check TypeScript Errors
|
|
1710
|
+
|
|
1711
|
+
New versions may have stricter types:
|
|
1712
|
+
|
|
1713
|
+
```bash
|
|
1714
|
+
npm run build
|
|
1715
|
+
# Fix any TypeScript errors
|
|
1716
|
+
```
|
|
1717
|
+
|
|
1718
|
+
### 5. Review CSS Changes
|
|
1719
|
+
|
|
1720
|
+
If you've customized styles:
|
|
1721
|
+
|
|
1722
|
+
- Check if CSS class names changed
|
|
1723
|
+
- Review CSS custom properties
|
|
1724
|
+
- Update selectors if needed
|
|
1725
|
+
|
|
1726
|
+
## Getting Help
|
|
1727
|
+
|
|
1728
|
+
If you encounter issues during migration:
|
|
1729
|
+
|
|
1730
|
+
1. Check existing GitHub issues
|
|
1731
|
+
2. Review the documentation
|
|
1732
|
+
3. Open a new issue with:
|
|
1733
|
+
- Your current version
|
|
1734
|
+
- Target version
|
|
1735
|
+
- Error messages
|
|
1736
|
+
- Code examples
|
|
1737
|
+
|
|
1738
|
+
## Version Compatibility
|
|
1739
|
+
|
|
1740
|
+
| ngxsmk-datepicker | Angular | Node.js |
|
|
1741
|
+
| ----------------- | ------- | ------- |
|
|
1742
|
+
| 1.9.17+ | 17-22 | 18+ |
|
|
1743
|
+
| 1.9.16 | 17-22 | 18+ |
|
|
1744
|
+
| 1.9.15 | 17-22 | 18+ |
|
|
1745
|
+
| 1.9.14 | 17-22 | 18+ |
|
|
1746
|
+
| 1.9.11 | 17-22 | 18+ |
|
|
1747
|
+
| 1.9.10 | 17-22 | 18+ |
|
|
1748
|
+
| 1.9.9 | 17-22 | 18+ |
|
|
1749
|
+
| 1.9.8 | 17-22 | 18+ |
|
|
1750
|
+
| 1.9.7 | 17-22 | 18+ |
|
|
1751
|
+
| 1.9.6 | 17-22 | 18+ |
|
|
1752
|
+
| 1.9.5 | 17-22 | 18+ |
|
|
1753
|
+
| 1.9.4 | 17-22 | 18+ |
|
|
1754
|
+
| 1.9.3 | 17-22 | 18+ |
|
|
1755
|
+
| 1.9.2 | 17-22 | 18+ |
|
|
1756
|
+
| 1.9.1 | 17-22 | 18+ |
|
|
1757
|
+
| 1.9.0 | 17-22 | 18+ |
|
|
1758
|
+
| 1.8.0 | 17-22 | 18+ |
|
|
1759
|
+
| 1.7.0 | 17-20 | 18+ |
|
|
1760
|
+
|
|
1761
|
+
## Deprecation Timeline
|
|
1762
|
+
|
|
1763
|
+
When APIs are deprecated:
|
|
1764
|
+
|
|
1765
|
+
1. **Deprecation Notice**: API marked with `@deprecated` JSDoc
|
|
1766
|
+
2. **Warning Period**: Deprecated API remains functional for at least one major version
|
|
1767
|
+
3. **Removal**: Deprecated API removed in next major version
|
|
1768
|
+
|
|
1769
|
+
Example:
|
|
1770
|
+
|
|
1771
|
+
- v1.8.0: API deprecated
|
|
1772
|
+
- v1.9.0: Still works with deprecation warning
|
|
1773
|
+
- v1.9.1: Still works with deprecation warning
|
|
1774
|
+
- v2.0.0: Removed
|
|
1775
|
+
|