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.
- package/README.md +11 -409
- package/docs/API.md +1 -1
- package/docs/COMPATIBILITY.md +21 -7
- package/docs/FEATURE_SCOPING.md +60 -0
- 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/REFACTOR_PLAN.md +38 -0
- 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/package.json +92 -94
- package/fesm2022/ngxsmk-datepicker.mjs +0 -14219
- package/types/ngxsmk-datepicker.d.ts +0 -2432
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Plugin Architecture
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
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:**
|
|
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
|
|
package/docs/SSR-EXAMPLE.md
CHANGED
package/docs/THEME-TOKENS.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Theme Tokens & CSS Custom Properties
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
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
package/docs/extension-points.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Extension Points and Hooks
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
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
|
|
package/docs/signal-forms.md
CHANGED
package/docs/signals.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Signals Integration Guide
|
|
2
2
|
|
|
3
|
-
**Last updated:**
|
|
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:**
|
|
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.
|
|
4
|
-
"author": {
|
|
5
|
-
"name": "Sachin Dilshan",
|
|
6
|
-
"url": "https://www.
|
|
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
|
-
"
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
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
|
+
}
|