Skip to content

feat: release v2.3.1 with natural language input, multi-calendar layout, timezone selector, and visual warnings

Choose a tag to compare

@toozuuu toozuuu released this 03 Jun 17:32
· 35 commits to main since this release
9cf8881

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 minDate or succeeding maxDate. Snaps viewports automatically if the current month selection becomes invalid.
  • Template Accessibility Modifiers: Changed internal signals (_isCalendarOpen, _currentMonthSignal, and _currentYearSignal) from private to protected to 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-xs through --font-size-4xl) for legibility on small mobile displays.
    • Updated the stacked-column media query threshold to 1024px to allow maximum layout space for multi-calendars on iPad/tablet sizes.
  • 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:optimized and npm run build:demo).
  • Lint Health: Passed strict eslint guidelines with 0 errors (npm run lint).