feat: release v2.3.1 with natural language input, multi-calendar layout, timezone selector, and visual warnings
Description
This PR introduces the v2.3.1 stable release, featuring five major library enhancements, key bug audits (including Issue #281), design optimizations for responsive layouts, and fluid motion animations. All changes are built to align with Angular’s Signal-driven, OnPush, and zoneless-ready standards.
Key Changes
1. New Features
- Natural Language Input: Integrated a lightweight, zero-dependency parser engine mapping textual inputs (e.g. "today", "tomorrow", "in 3 weeks", "Q3 2026") to standard values, combined with a dynamic suggestion preview tooltip.
- Multi-Calendar View: Supported renders of side-by-side month grids via the alias
[calendars]="2"or[calendars]="3"inputs with continuous, seamless range highlights across month boundaries. - Dynamic Presets Factory: Added the
[rangePresetFactory]callback input allowing developers to supply dynamic rolling ranges (e.g. fiscal quarters or rolling business-day windows). - Invalid Range Detection: Selection boundaries are validated on change. Emits
(invalidRange)with conflicting disabled dates and highlights them visually using strike-through styling. - Timezone Selector UI: Added a searchable timezone dropdown via
[showTimezoneSelector]="true"input, allowing users to switch IANA timezones and emit matching(timezoneChange)events.
2. Bug Fixes & Strict AOT Optimizations (incl. Issue #281)
- Disabled Dropdown Constraints (Issue #281): Correctly disabled month and year dropdown options preceding
minDateor succeedingmaxDate. Snaps viewports automatically if the current month selection becomes invalid. - Template Accessibility Modifiers: Changed internal signals (
_isCalendarOpen,_currentMonthSignal, and_currentYearSignal) fromprivatetoprotectedto prevent strict Angular production AoT compilation errors. - Type Safety: Replaced generic typecasting in custom selects with a strict type-matching checker to prevent compilation mismatch warnings.
3. Performance & Design System Polish
- Motion Animations: Integrated
motion(Framer Motion) library animations to smoothly scale and fade the interactive Playground elements on view initialization. - Mobile/Tablet Responsiveness:
- Balanced viewport-dependent font clamps (
--font-size-xsthrough--font-size-4xl) for legibility on small mobile displays. - Updated the stacked-column media query threshold to
1024pxto allow maximum layout space for multi-calendars on iPad/tablet sizes.
- Balanced viewport-dependent font clamps (
- Bundle Size and Packaging Cleanups: Excluded non-essential project documents (e.g.
ROADMAP.md,SECURITY.md, and contribution templates) from the published package distribution folder (dist/ngxsmk-datepicker).
Verification & Stability Results
- Automated Tests: Completed the suite with 1,249 tests passing successfully (
npm run test:coverage). - Bundle Generation: Verified production build outputs (
npm run build:optimizedandnpm run build:demo). - Lint Health: Passed strict eslint guidelines with 0 errors (
npm run lint).