ngxsmk-datepicker 2.2.8 → 2.2.12

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.
@@ -1,6 +1,6 @@
1
1
  # Plugin Architecture
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  ngxsmk-datepicker features a powerful **plugin architecture** that allows you to extend and customize the component's behavior without modifying its core code. This architecture is built on a **hook-based system** that provides extension points throughout the component's lifecycle.
6
6
 
@@ -0,0 +1,38 @@
1
+ # Refactor plan: thin `NgxsmkDatepickerComponent`
2
+
3
+ **Last updated:** May 2, 2026
4
+
5
+ This plan operationalizes [IMPROVEMENT_REPORT.md](../../IMPROVEMENT_REPORT.md) items **1.1**–**1.6** without blocking feature work. Phases are incremental and test-backed.
6
+
7
+ ## Goals
8
+
9
+ - Move orchestration of calendar **generation** and **month arrays** behind `CalendarGenerationService` (already exists—expand responsibilities).
10
+ - Move **input ↔ model** normalization boundaries closer to `DatepickerParsingService` / a thin `InputFacade`.
11
+ - Keep **public `@Input` / `@Output` API** stable unless explicitly versioned.
12
+
13
+ ## Phase 1 — Boundaries only (low risk)
14
+
15
+ 1. List public methods on `NgxsmkDatepickerComponent` that only delegate to `CalendarGenerationService`; replace with direct service calls from tests where duplicated.
16
+ 2. Ensure `generateCalendar()` becomes a thin orchestrator: **invalidate revision signals → assign `multiCalendarMonths` → CD**.
17
+
18
+ ## Phase 2 — Extract pure builders
19
+
20
+ 1. Move `buildCalendarMonths` logic that does not need component closure into `CalendarGenerationService` with explicit parameters (`firstDayOfWeek`, `syncScroll`, `count`).
21
+ 2. Unit-test service methods in isolation with Jasmine.
22
+
23
+ ## Phase 3 — Parsing facade
24
+
25
+ 1. Route typed-input updates through `DatepickerParsingService` + single `applyUserInput()` private method on the component.
26
+ 2. Reduce branching between native picker vs. text input vs. inline.
27
+
28
+ ## Phase 4 — Touch / positioning (optional)
29
+
30
+ 1. Confirm `TouchGestureHandlerService` and `PopoverPositioningService` own all DOM measurements; component emits intents only.
31
+
32
+ ## Verification
33
+
34
+ - `npm run test` (ngxsmk-datepicker project)
35
+ - `npm run e2e` with demo-app smoke + playground scenarios
36
+ - Bundle size check script if touching public exports
37
+
38
+ See also [FEATURE_SCOPING.md](./FEATURE_SCOPING.md) for upcoming API additions.
package/docs/SEO.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # SEO Optimization Guide
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  This document outlines the SEO optimizations implemented for ngxsmk-datepicker to improve search engine visibility and discoverability.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Server-Side Rendering (SSR) Example
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  Complete example demonstrating ngxsmk-datepicker with Angular Universal (SSR).
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Theme Tokens & CSS Custom Properties
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  Complete reference for all CSS custom properties (CSS variables) available in ngxsmk-datepicker.
6
6
 
package/docs/TIMEZONE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Timezone Support
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  ## Overview
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Extension Points and Hooks
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  ngxsmk-datepicker provides comprehensive extension points through the `hooks` input, allowing you to customize rendering, validation, keyboard shortcuts, formatting, and event handling.
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Signal Forms Integration
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  This guide covers using ngxsmk-datepicker with Angular 21+ Signal Forms API.
6
6
 
package/docs/signals.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Signals Integration Guide
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  ngxsmk-datepicker is fully compatible with Angular Signals, providing seamless integration with both traditional reactive forms and modern signal-based patterns.
6
6
 
package/docs/ssr.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Server-Side Rendering (SSR) Guide
2
2
 
3
- **Last updated:** March 21, 2026 · **Current stable:** v2.2.8
3
+ **Last updated:** May 2, 2026 · **Current stable:** v2.2.12
4
4
 
5
5
  ngxsmk-datepicker is fully compatible with Angular Universal and server-side rendering. This guide covers SSR setup, best practices, and troubleshooting.
6
6
 
package/package.json CHANGED
@@ -1,94 +1,92 @@
1
- {
2
- "name": "ngxsmk-datepicker",
3
- "version": "2.2.8",
4
- "author": {
5
- "name": "Sachin Dilshan",
6
- "url": "https://www.linkedin.com/in/sachindilshan/"
7
- },
8
- "peerDependencies": {
9
- "@angular/common": ">=17.0.0 <24.0.0",
10
- "@angular/core": ">=17.0.0 <24.0.0",
11
- "@angular/forms": ">=17.0.0 <24.0.0",
12
- "luxon": "^3.0.0"
13
- },
14
- "peerDependenciesMeta": {
15
- "zone.js": {
16
- "optional": true
17
- },
18
- "@angular/material": {
19
- "optional": true
20
- },
21
- "@angular/cdk": {
22
- "optional": true
23
- }
24
- },
25
- "dependencies": {
26
- "tslib": "^2.3.0"
27
- },
28
- "main": "fesm2022/ngxsmk-datepicker.mjs",
29
- "module": "fesm2022/ngxsmk-datepicker.mjs",
30
- "es2022": "fesm2022/ngxsmk-datepicker.mjs",
31
- "types": "types/ngxsmk-datepicker.d.ts",
32
- "typings": "types/ngxsmk-datepicker.d.ts",
33
- "homepage": "https://github.com/NGXSMK/ngxsmk-datepicker#readme",
34
- "repository": {
35
- "type": "git",
36
- "url": "git+https://github.com/NGXSMK/ngxsmk-datepicker.git"
37
- },
38
- "bugs": {
39
- "url": "https://github.com/NGXSMK/ngxsmk-datepicker/issues"
40
- },
41
- "sideEffects": false,
42
- "files": [
43
- "fesm2022/**/*.mjs",
44
- "**/*.d.ts",
45
- "**/*.metadata.json",
46
- "README.md",
47
- "LICENSE",
48
- "CHANGELOG.md",
49
- "MIGRATION.md",
50
- "docs/*.md",
51
- "!docs/**/*.png",
52
- "!docs/**/*.jpg",
53
- "!docs/**/*.gif",
54
- "styles/**/*.css"
55
- ],
56
- "keywords": [
57
- "angular",
58
- "datepicker",
59
- "date-range-picker",
60
- "calendar",
61
- "standalone-component",
62
- "angular-17",
63
- "angular-18",
64
- "angular-19",
65
- "angular-20",
66
- "angular-21",
67
- "typescript",
68
- "date-selection",
69
- "i18n",
70
- "localization"
71
- ],
72
- "optimization": {
73
- "treeShaking": true,
74
- "sideEffects": false,
75
- "usedExports": true
76
- },
77
- "engines": {
78
- "node": ">=20.19.0 || >=22.12.0",
79
- "npm": ">=10.0.0"
80
- },
81
- "prepublishOnly": "node ../../scripts/assert-lib-publish-artifacts.cjs",
82
- "exports": {
83
- "./styles/*": {
84
- "default": "./styles/*"
85
- },
86
- "./package.json": {
87
- "default": "./package.json"
88
- },
89
- ".": {
90
- "types": "./types/ngxsmk-datepicker.d.ts",
91
- "default": "./fesm2022/ngxsmk-datepicker.mjs"
92
- }
93
- }
94
- }
1
+ {
2
+ "name": "ngxsmk-datepicker",
3
+ "version": "2.2.12",
4
+ "author": {
5
+ "name": "Sachin Dilshan",
6
+ "url": "https://www.sachindilshan.com/"
7
+ },
8
+ "peerDependencies": {
9
+ "@angular/common": ">=17.0.0 <24.0.0",
10
+ "@angular/core": ">=17.0.0 <24.0.0",
11
+ "@angular/forms": ">=17.0.0 <24.0.0",
12
+ "luxon": "^3.0.0"
13
+ },
14
+ "peerDependenciesMeta": {
15
+ "zone.js": {
16
+ "optional": true
17
+ },
18
+ "@angular/material": {
19
+ "optional": true
20
+ },
21
+ "@angular/cdk": {
22
+ "optional": true
23
+ }
24
+ },
25
+ "dependencies": {
26
+ "tslib": "^2.3.0"
27
+ },
28
+ "main": "fesm2022/ngxsmk-datepicker.mjs",
29
+ "module": "fesm2022/ngxsmk-datepicker.mjs",
30
+ "es2022": "fesm2022/ngxsmk-datepicker.mjs",
31
+ "types": "types/ngxsmk-datepicker.d.ts",
32
+ "typings": "types/ngxsmk-datepicker.d.ts",
33
+ "homepage": "https://github.com/NGXSMK/ngxsmk-datepicker#readme",
34
+ "repository": {
35
+ "type": "git",
36
+ "url": "git+https://github.com/NGXSMK/ngxsmk-datepicker.git"
37
+ },
38
+ "bugs": {
39
+ "url": "https://github.com/NGXSMK/ngxsmk-datepicker/issues"
40
+ },
41
+ "sideEffects": false,
42
+ "files": [
43
+ "fesm2022/**/*.mjs",
44
+ "**/*.d.ts",
45
+ "**/*.metadata.json",
46
+ "README.md",
47
+ "LICENSE",
48
+ "CHANGELOG.md",
49
+ "MIGRATION.md",
50
+ "docs/*.md",
51
+ "!docs/**/*.png",
52
+ "!docs/**/*.jpg",
53
+ "!docs/**/*.gif",
54
+ "styles/**/*.css"
55
+ ],
56
+ "keywords": [
57
+ "angular",
58
+ "datepicker",
59
+ "date-range-picker",
60
+ "calendar",
61
+ "standalone-component",
62
+ "angular-17",
63
+ "angular-18",
64
+ "angular-19",
65
+ "angular-20",
66
+ "angular-21",
67
+ "typescript",
68
+ "date-selection",
69
+ "i18n",
70
+ "localization"
71
+ ],
72
+ "optimization": {
73
+ "treeShaking": true,
74
+ "sideEffects": false,
75
+ "usedExports": true
76
+ },
77
+ "engines": {
78
+ "node": ">=20.19.0 || >=22.12.0",
79
+ "npm": ">=10.0.0"
80
+ },
81
+ "prepublishOnly": "node ../../scripts/assert-lib-publish-artifacts.cjs",
82
+ "exports": {
83
+ ".": {
84
+ "types": "./types/ngxsmk-datepicker.d.ts",
85
+ "import": "./fesm2022/ngxsmk-datepicker.mjs",
86
+ "default": "./fesm2022/ngxsmk-datepicker.mjs"
87
+ },
88
+ "./styles/*": {
89
+ "default": "./styles/*"
90
+ }
91
+ }
92
+ }