From 2e7d2024de5f1153d519acaeb72ef47dd5c4eb63 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Sat, 28 Mar 2026 22:12:05 -0700 Subject: [PATCH 01/25] fix: remove animations references from amc docs --- pnpm-lock.yaml | 400 ++++++++++-------------- projects/amc-docs/src/app/app.config.ts | 4 - 2 files changed, 166 insertions(+), 238 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64017b87..723ba99b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -10,28 +10,28 @@ importers: dependencies: '@angular/common': specifier: ^21.1.5 - version: 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/compiler': specifier: ^21.1.5 - version: 21.1.5 + version: 21.2.6 '@angular/core': specifier: ^21.1.5 - version: 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) '@angular/forms': specifier: ^21.1.5 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/material': specifier: ^21.1.5 - version: 21.1.5(25d3a0bfe22fa4ee93d97987db1b3e23) + version: 21.2.4(a6d05bbd93e6ca3996cf74920784d779) '@angular/platform-browser': specifier: ^21.1.5 - version: 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) '@angular/platform-browser-dynamic': specifier: ^21.1.5 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.1.5)(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))) '@angular/router': specifier: ^21.1.5 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) highlight.js: specifier: ^11.11.1 version: 11.11.1 @@ -44,16 +44,16 @@ importers: devDependencies: '@angular/build': specifier: ^21.2.5 - version: 21.2.5(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(@angular/compiler@21.1.5)(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))) + version: 21.2.5(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))) '@angular/cdk': specifier: ^21.1.5 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/cli': specifier: ^21.2.5 version: 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) '@angular/compiler-cli': specifier: ^21.1.5 - version: 21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3) + version: 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3) '@cleyrop-org/semantic-release-backmerge': specifier: ^5.2.4 version: 5.2.4(typescript@5.9.3) @@ -65,7 +65,7 @@ importers: version: 29.0.1 ng-packagr: specifier: ^21.2.2 - version: 21.2.2(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + version: 21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) ts-node: specifier: ~10.9.2 version: 10.9.2(@types/node@25.5.0)(typescript@5.9.3) @@ -80,22 +80,22 @@ importers: dependencies: '@angular/cdk': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/common': specifier: ^21 - version: 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/core': specifier: ^21 - version: 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) '@angular/forms': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/material': specifier: ^21 - version: 21.1.5(25d3a0bfe22fa4ee93d97987db1b3e23) + version: 21.2.4(a6d05bbd93e6ca3996cf74920784d779) '@angular/platform-browser': specifier: ^21 - version: 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) tslib: specifier: ^2.3.0 version: 2.8.1 @@ -105,22 +105,22 @@ importers: dependencies: '@angular/cdk': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/common': specifier: ^21 - version: 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/core': specifier: ^21 - version: 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) '@angular/forms': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/material': specifier: ^21 - version: 21.1.5(25d3a0bfe22fa4ee93d97987db1b3e23) + version: 21.2.4(a6d05bbd93e6ca3996cf74920784d779) '@angular/platform-browser': specifier: ^21 - version: 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) tslib: specifier: ^2.3.0 version: 2.8.1 @@ -130,22 +130,22 @@ importers: dependencies: '@angular/cdk': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/common': specifier: ^21 - version: 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) + version: 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) '@angular/core': specifier: ^21 - version: 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + version: 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) '@angular/forms': specifier: ^21 - version: 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) '@angular/material': specifier: ^21 - version: 21.1.5(25d3a0bfe22fa4ee93d97987db1b3e23) + version: 21.2.4(a6d05bbd93e6ca3996cf74920784d779) '@angular/platform-browser': specifier: ^21 - version: 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + version: 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) tslib: specifier: ^2.3.0 version: 2.8.1 @@ -243,12 +243,6 @@ packages: resolution: {integrity: sha512-gEg84eipTX6lcpNTDVUXBBwp0vs3rXM319Qom+sCLOKBGyqE0mvb1RM1WwfNcyOqeSMQC/vLUwRKqnP0wg1UDg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular/animations@21.1.5': - resolution: {integrity: sha512-gsqHX8lCYV8cgVtHs0iLwrX8SVlmcjUF44l/xCc/jBC/TeKWRl2e6Jqrn1Wcd0NDlGiNsm+mYNyqMyy5/I7kjw==} - engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - peerDependencies: - '@angular/core': 21.1.5 - '@angular/build@21.2.5': resolution: {integrity: sha512-AfE09K+pkgS3VB84R74XG/XB9LQmO6Q6YfpssjDwMnWGwDGGwUGydXn8AKdhnhI4mM2nFKoe+QYszFgrzu5HeQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -295,8 +289,8 @@ packages: vitest: optional: true - '@angular/cdk@21.1.5': - resolution: {integrity: sha512-AlQPgqe3LLwXCyrDwYSX3m/WKnl2ppCMW7Gb+7bJpIcpMdWYEpSOSQF318jXGYIysKg43YbdJ1tWhJWY/cbn3w==} + '@angular/cdk@21.2.4': + resolution: {integrity: sha512-Zv+q9Z/wVWTt0ckuO3gnU7PbpCLTr1tKPEsofLGGzDufA5/85aBLn2UiLcjlY6wQ+V3EMqANhGo/8XJgvBEYFA==} peerDependencies: '@angular/common': ^21.0.0 || ^22.0.0 '@angular/core': ^21.0.0 || ^22.0.0 @@ -308,33 +302,33 @@ packages: engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} hasBin: true - '@angular/common@21.1.5': - resolution: {integrity: sha512-olO2F0b+H8YBfsuQFEwo9Hjf+B714xGcttDW37+4jnY2IRS2uYeMu2RGIpY7ps+0uZ017c4iK3CCgSPBgmbTcA==} + '@angular/common@21.2.6': + resolution: {integrity: sha512-2FcpZ1h6AZ4JwCIlnpHCYrbRTGQTOj/RFXkuX/qw7K6cFmJGfWFMmr++xWtHZEvUddfbR9hqDo+v1mkqEKE/Kw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/core': 21.1.5 + '@angular/core': 21.2.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/compiler-cli@21.1.5': - resolution: {integrity: sha512-i2r2bQuWdjjFGTd2TA7FtCWNx5yJ3BMoyTGUC9lzSfmxWAfcH/NWR+6OdaEVwv6Zap3IXYYxs8S+REkx954EwA==} + '@angular/compiler-cli@21.2.6': + resolution: {integrity: sha512-CiPmat4+D+hWXMTAY++09WeII/5D0r6iTjdLdaTq8tlo0uJcrOlazib4CpA94kJ2CRdzfhmC1H+ttwBI1xIlTg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} hasBin: true peerDependencies: - '@angular/compiler': 21.1.5 - typescript: '>=5.9 <6.0' + '@angular/compiler': 21.2.6 + typescript: '>=5.9 <6.1' peerDependenciesMeta: typescript: optional: true - '@angular/compiler@21.1.5': - resolution: {integrity: sha512-yRUdWlL+AWcTL4d7zD0jkNqsjvxXpWEihvOfD2gc65DO0+E80DsWIpHq9A8yWeLukbfLcmBGI2QbfW9+SXAlvg==} + '@angular/compiler@21.2.6': + resolution: {integrity: sha512-shGkb/aAIPbG8oSYkVJ0msGlRdDVcJBVaUVx2KenMltifQjfLn5N8DFMAzOR6haaA3XeugFExxKqmvySjrVq+A==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} - '@angular/core@21.1.5': - resolution: {integrity: sha512-m61YHiyE+SIvS8UXcFLjYCucv6ShJJCwz9xxEk7ysYW9wOtHdfIf9tgyOsucZDAvrvpSyQLRj5jGBCGm1VIvXA==} + '@angular/core@21.2.6': + resolution: {integrity: sha512-svgK5DhFlQlS+sMybXftn08rHHRiDGY/uIKT5LZUaKgyffnkPb8uClpMIW0NzANtU8qs8pwgDZFoJw85Ia3oqQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/compiler': 21.1.5 + '@angular/compiler': 21.2.6 rxjs: ^6.5.3 || ^7.4.0 zone.js: ~0.15.0 || ~0.16.0 peerDependenciesMeta: @@ -343,52 +337,52 @@ packages: zone.js: optional: true - '@angular/forms@21.1.5': - resolution: {integrity: sha512-Z8Vcgz5KYlCobRxLjyGGUBv0mA4nusuiD36GqYRn3sR780TLDcPFVwTCwVEWLdwID64oiHXG+x9jjU/Z3HzR6A==} + '@angular/forms@21.2.6': + resolution: {integrity: sha512-i8BoWxBAm0g2xOMcQ8wTdj07gqMPIFYIyefCOo0ezcGj5XhYjd+C2UrYnKsup0aMZqqEAO1l2aZbmfHx9xLheQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.5 - '@angular/core': 21.1.5 - '@angular/platform-browser': 21.1.5 + '@angular/common': 21.2.6 + '@angular/core': 21.2.6 + '@angular/platform-browser': 21.2.6 rxjs: ^6.5.3 || ^7.4.0 - '@angular/material@21.1.5': - resolution: {integrity: sha512-D6JvFulPvIKhPJ52prMV7DxwYMzcUpHar11ZcMb7r9WQzUfCS3FDPXfMAce5n3h+3kFccfmmGpnyBwqTlLPSig==} + '@angular/material@21.2.4': + resolution: {integrity: sha512-YzkPjgZezdsDeAhSm3zix2h+ohApwaRUMG8ea/75XR1eSkT1n3N7qZaHC8HDkhPYApk8a951RDxsTiiAidnGqg==} peerDependencies: - '@angular/cdk': 21.1.5 + '@angular/cdk': 21.2.4 '@angular/common': ^21.0.0 || ^22.0.0 '@angular/core': ^21.0.0 || ^22.0.0 '@angular/forms': ^21.0.0 || ^22.0.0 '@angular/platform-browser': ^21.0.0 || ^22.0.0 rxjs: ^6.5.3 || ^7.4.0 - '@angular/platform-browser-dynamic@21.1.5': - resolution: {integrity: sha512-Pd8nPbJSIONnze1WS9wLBAtaFw4TYIH+ZGjKHS9G1E9l09tDWtHWyB7dY82Sc//Nc8iR4V7dcsbUmFjOJHThww==} + '@angular/platform-browser-dynamic@21.2.6': + resolution: {integrity: sha512-6a+zA9jM70b1kH3fSfAJIEVmkE3qB3oIXw7otWkv1nEhOJtNO0mM0dTUuO70C3GhnV9tmpLXa2him56C2LhVig==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.5 - '@angular/compiler': 21.1.5 - '@angular/core': 21.1.5 - '@angular/platform-browser': 21.1.5 + '@angular/common': 21.2.6 + '@angular/compiler': 21.2.6 + '@angular/core': 21.2.6 + '@angular/platform-browser': 21.2.6 - '@angular/platform-browser@21.1.5': - resolution: {integrity: sha512-rAN0cu05Pg7HHe9JMRd3g5JyyVCeFW8QiB/jG6klUrOTF4QzyCbmwlm7MX0uTx3CWAZraWCGbdahUkLyYtuqFA==} + '@angular/platform-browser@21.2.6': + resolution: {integrity: sha512-LW1vPXVHvy71LBahn+fSzPlWQl25kJIdcXq+ptG7HsMVgbPQ3/vvkKXAHYaRdppLGCFL+v+3dQGHYLNLiYL9qg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/animations': 21.1.5 - '@angular/common': 21.1.5 - '@angular/core': 21.1.5 + '@angular/animations': 21.2.6 + '@angular/common': 21.2.6 + '@angular/core': 21.2.6 peerDependenciesMeta: '@angular/animations': optional: true - '@angular/router@21.1.5': - resolution: {integrity: sha512-OjFn6Nw51CU712CMbl2U9TxlCkzOmjMLYPAfnV4+RdG7o+/eOS2nV0oapJ88RNCw7Yl04PA1amc3ql3agDFd4A==} + '@angular/router@21.2.6': + resolution: {integrity: sha512-0ajhkKYeOqHQEEH88+Q0HrheR3helwTvdTqD/0gTaapCe+HOoC+SYwmzzsYP2zwAxBNQEg4JHOGKQ30X9/gwgw==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} peerDependencies: - '@angular/common': 21.1.5 - '@angular/core': 21.1.5 - '@angular/platform-browser': 21.1.5 + '@angular/common': 21.2.6 + '@angular/core': 21.2.6 + '@angular/platform-browser': 21.2.6 rxjs: ^6.5.3 || ^7.4.0 '@asamuzakjp/css-color@5.0.1': @@ -410,10 +404,6 @@ packages: resolution: {integrity: sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.5': - resolution: {integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==} - engines: {node: '>=6.9.0'} - '@babel/core@7.29.0': resolution: {integrity: sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==} engines: {node: '>=6.9.0'} @@ -460,19 +450,10 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} - engines: {node: '>=6.9.0'} - '@babel/helpers@7.29.2': resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.29.2': resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} @@ -529,8 +510,8 @@ packages: peerDependencies: '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.1': - resolution: {integrity: sha512-BvqN0AMWNAnLk9G8jnUT77D+mUbY/H2b3uDTvg2isJkHaOufUE2R3AOwxWo7VBQKT1lOdwdvorddo2B/lk64+w==} + '@csstools/css-syntax-patches-for-csstree@1.1.2': + resolution: {integrity: sha512-5GkLzz4prTIpoyeUiIu3iV6CSG3Plo7xRVOFPKI7FVEJ3mZ0A8SwK0XU3Gl7xAkiQ+mDyam+NNp875/C5y+jSA==} peerDependencies: css-tree: ^3.2.1 peerDependenciesMeta: @@ -1240,8 +1221,11 @@ packages: resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.1': - resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} + '@napi-rs/wasm-runtime@1.1.2': + resolution: {integrity: sha512-sNXv5oLJ7ob93xkZ1XnxisYhGYXfaG9f65/ZgYuAu3qt7b3NadcOEhLvx28hv31PgX8SZJRYrAIPQilQmFpLVw==} + peerDependencies: + '@emnapi/core': ^1.7.1 + '@emnapi/runtime': ^1.7.1 '@npmcli/agent@4.0.0': resolution: {integrity: sha512-kAQTcEN9E8ERLVg5AsGwLNoFb+oEG6engbqAU2P43gD4JEIkNGMHdVQ096FsOAAYpZPB0RSt0zgInKIAS1l5QA==} @@ -1925,8 +1909,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.10: - resolution: {integrity: sha512-sUoJ3IMxx4AyRqO4MLeHlnGDkyXRoUG0/AI9fjK+vS72ekpV0yWVY7O0BVjmBcRtkNcsAO2QDZ4tdKKGoI6YaQ==} + baseline-browser-mapping@2.10.12: + resolution: {integrity: sha512-qyq26DxfY4awP2gIRXhhLWfwzwI+N5Nxk6iQi8EFizIaWIjqicQTE4sLnZZVdeKPRcVNoJOkkpfzoIYuvCKaIQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -1950,8 +1934,8 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} - brace-expansion@5.0.4: - resolution: {integrity: sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} braces@3.0.3: @@ -2246,8 +2230,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.321: - resolution: {integrity: sha512-L2C7Q279W2D/J4PLZLk7sebOILDSWos7bMsMNN06rK482umHUrh/3lM8G7IlHFOYip2oAg5nha1rCMxr/rs6ZQ==} + electron-to-chromium@1.5.328: + resolution: {integrity: sha512-QNQ5l45DzYytThO21403XN3FvK0hOkWDG8viNf6jqS42msJ8I4tGDSpBCgvDRRPnkffafiwAym2X2eHeGD2V0w==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -2977,8 +2961,8 @@ packages: resolution: {integrity: sha512-2d0q2a8eCi2IRg/IGubCNRJoYbA1+YPXAzQVRFmB45gdGZafyivnZ5YSEfo3JikbjGxOdntGFvBQGqaSMXlAFQ==} engines: {node: ^20.17.0 || >=22.9.0} - minipass-flush@1.0.5: - resolution: {integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==} + minipass-flush@1.0.7: + resolution: {integrity: sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==} engines: {node: '>= 8'} minipass-pipeline@1.2.4: @@ -3352,8 +3336,8 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - path-to-regexp@8.3.0: - resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==} + path-to-regexp@8.4.0: + resolution: {integrity: sha512-PuseHIvAnz3bjrM2rGJtSgo1zjgxapTLZ7x2pjhzWwlp4SJQgK3f3iZIQwkpEnBaKz6seKBADpM4B4ySkuYypg==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -3369,10 +3353,6 @@ packages: resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} - engines: {node: '>=12'} - picomatch@4.0.4: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} @@ -3924,8 +3904,8 @@ packages: resolution: {integrity: sha512-BM/JzwwaRXxrLdElV2Uo6cTLEjhSb3WXboncJamZ15NgUURmvlXvxa6xkwIOILIjPNo9i8ku136ZvWV0Uly8+w==} engines: {node: '>=20.18.1'} - undici@7.24.5: - resolution: {integrity: sha512-3IWdCpjgxp15CbJnsi/Y9TCDE7HWVN19j1hmzVhoAkY/+CJx449tVxT5wZc1Gwg8J+P0LWvzlBzxYRnHJ+1i7Q==} + undici@7.24.6: + resolution: {integrity: sha512-Xi4agocCbRzt0yYMZGMA6ApD7gvtUFaxm4ZmeacWI4cZxaF6C+8I8QfofC20NAePiB/IcvZmzkJ7XPa471AEtA==} engines: {node: '>=20.18.1'} unicode-emoji-modifier-base@1.0.0: @@ -4173,17 +4153,14 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zod-to-json-schema@3.25.1: - resolution: {integrity: sha512-pM/SU9d3YAggzi6MtR4h7ruuQlqKtad8e9S0fmxcMi+ueAK5Korys/aWcV9LIIHTVbj01NdzxcnXSN+O74ZIVA==} + zod-to-json-schema@3.25.2: + resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} peerDependencies: - zod: ^3.25 || ^4 + zod: ^3.25.28 || ^4 zod@4.3.6: resolution: {integrity: sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==} - zone.js@0.16.1: - resolution: {integrity: sha512-dpvY17vxYIW3+bNrP0ClUlaiY0CiIRK3tnoLaGoQsQcY9/I/NpzIWQ7tQNhbV7LacQMpCII6wVzuL3tuWOyfuA==} - snapshots: '@actions/core@3.0.0': @@ -4319,18 +4296,12 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))': - dependencies: - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - tslib: 2.8.1 - optional: true - - '@angular/build@21.2.5(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(@angular/compiler@21.1.5)(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)))': + '@angular/build@21.2.5(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)))': dependencies: '@ampproject/remapping': 2.3.0 '@angular-devkit/architect': 0.2102.5(chokidar@5.0.0) - '@angular/compiler': 21.1.5 - '@angular/compiler-cli': 21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3) + '@angular/compiler': 21.2.6 + '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3) '@babel/core': 7.29.0 '@babel/helper-annotate-as-pure': 7.27.3 '@babel/helper-split-export-declaration': 7.24.7 @@ -4348,7 +4319,7 @@ snapshots: parse5-html-rewriting-stream: 8.0.0 picomatch: 4.0.4 piscina: 5.1.4 - rolldown: 1.0.0-rc.4 + rolldown: 1.0.0-rc.4(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) sass: 1.97.3 semver: 7.7.4 source-map-support: 0.5.21 @@ -4359,14 +4330,16 @@ snapshots: vite: 7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3) watchpack: 2.5.1 optionalDependencies: - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) less: 4.6.4 lmdb: 3.5.1 - ng-packagr: 21.2.2(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) + ng-packagr: 21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3) postcss: 8.5.8 vitest: 4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)) transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' - '@types/node' - chokidar - jiti @@ -4379,11 +4352,11 @@ snapshots: - tsx - yaml - '@angular/cdk@21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@angular/cdk@21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) parse5: 8.0.0 rxjs: 7.8.2 tslib: 2.8.1 @@ -4414,16 +4387,16 @@ snapshots: - chokidar - supports-color - '@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2)': + '@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2)': dependencies: - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3)': + '@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3)': dependencies: - '@angular/compiler': 21.1.5 - '@babel/core': 7.28.5 + '@angular/compiler': 21.2.6 + '@babel/core': 7.29.0 '@jridgewell/sourcemap-codec': 1.5.5 chokidar: 5.0.0 convert-source-map: 1.9.0 @@ -4436,58 +4409,55 @@ snapshots: transitivePeerDependencies: - supports-color - '@angular/compiler@21.1.5': + '@angular/compiler@21.2.6': dependencies: tslib: 2.8.1 - '@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)': + '@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)': dependencies: rxjs: 7.8.2 tslib: 2.8.1 optionalDependencies: - '@angular/compiler': 21.1.5 - zone.js: 0.16.1 + '@angular/compiler': 21.2.6 - '@angular/forms@21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@angular/forms@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) '@standard-schema/spec': 1.1.0 rxjs: 7.8.2 tslib: 2.8.1 - '@angular/material@21.1.5(25d3a0bfe22fa4ee93d97987db1b3e23)': + '@angular/material@21.2.4(a6d05bbd93e6ca3996cf74920784d779)': dependencies: - '@angular/cdk': 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/forms': 21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/cdk': 21.2.4(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/forms': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) rxjs: 7.8.2 tslib: 2.8.1 - '@angular/platform-browser-dynamic@21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/compiler@21.1.5)(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))': + '@angular/platform-browser-dynamic@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))': dependencies: - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/compiler': 21.1.5 - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/compiler': 21.2.6 + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) tslib: 2.8.1 - '@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))': + '@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))': dependencies: - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) tslib: 2.8.1 - optionalDependencies: - '@angular/animations': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) - '@angular/router@21.1.5(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(@angular/platform-browser@21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(rxjs@7.8.2)': + '@angular/router@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(rxjs@7.8.2)': dependencies: - '@angular/common': 21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2) - '@angular/core': 21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1) - '@angular/platform-browser': 21.1.5(@angular/animations@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)))(@angular/common@21.1.5(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1))(rxjs@7.8.2))(@angular/core@21.1.5(@angular/compiler@21.1.5)(rxjs@7.8.2)(zone.js@0.16.1)) + '@angular/common': 21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2) + '@angular/core': 21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2) + '@angular/platform-browser': 21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)) rxjs: 7.8.2 tslib: 2.8.1 @@ -4517,26 +4487,6 @@ snapshots: '@babel/compat-data@7.29.0': {} - '@babel/core@7.28.5': - dependencies: - '@babel/code-frame': 7.29.0 - '@babel/generator': 7.29.1 - '@babel/helper-compilation-targets': 7.28.6 - '@babel/helper-module-transforms': 7.28.6(@babel/core@7.28.5) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 - '@babel/template': 7.28.6 - '@babel/traverse': 7.29.0 - '@babel/types': 7.29.0 - '@jridgewell/remapping': 2.3.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.29.0': dependencies: '@babel/code-frame': 7.29.0 @@ -4586,15 +4536,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.28.5)': - dependencies: - '@babel/core': 7.28.5 - '@babel/helper-module-imports': 7.28.6 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.29.0 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.6(@babel/core@7.29.0)': dependencies: '@babel/core': 7.29.0 @@ -4614,20 +4555,11 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.6': - dependencies: - '@babel/template': 7.28.6 - '@babel/types': 7.29.0 - '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': - dependencies: - '@babel/types': 7.29.0 - '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 @@ -4696,7 +4628,7 @@ snapshots: dependencies: '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-syntax-patches-for-csstree@1.1.1(css-tree@3.2.1)': + '@csstools/css-syntax-patches-for-csstree@1.1.2(css-tree@3.2.1)': optionalDependencies: css-tree: 3.2.1 @@ -5087,7 +5019,7 @@ snapshots: pkce-challenge: 5.0.1 raw-body: 3.0.2 zod: 4.3.6 - zod-to-json-schema: 3.25.1(zod@4.3.6) + zod-to-json-schema: 3.25.2(zod@4.3.6) transitivePeerDependencies: - supports-color @@ -5181,7 +5113,7 @@ snapshots: '@napi-rs/nice-win32-x64-msvc': 1.1.1 optional: true - '@napi-rs/wasm-runtime@1.1.1': + '@napi-rs/wasm-runtime@1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: '@emnapi/core': 1.9.1 '@emnapi/runtime': 1.9.1 @@ -5352,7 +5284,7 @@ snapshots: detect-libc: 2.1.2 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.6 '@parcel/watcher-darwin-arm64': 2.5.6 @@ -5411,9 +5343,12 @@ snapshots: '@rolldown/binding-openharmony-arm64@1.0.0-rc.4': optional: true - '@rolldown/binding-wasm32-wasi@1.0.0-rc.4': + '@rolldown/binding-wasm32-wasi@1.0.0-rc.4(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)': dependencies: - '@napi-rs/wasm-runtime': 1.1.1 + '@napi-rs/wasm-runtime': 1.1.2(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.4': @@ -5565,7 +5500,7 @@ snapshots: p-filter: 4.1.0 semantic-release: 25.0.3(typescript@5.9.3) tinyglobby: 0.2.15 - undici: 7.24.5 + undici: 7.24.6 url-join: 5.0.0 transitivePeerDependencies: - supports-color @@ -5814,7 +5749,7 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.10: {} + baseline-browser-mapping@2.10.12: {} beasties@0.4.1: dependencies: @@ -5852,7 +5787,7 @@ snapshots: bottleneck@2.19.5: {} - brace-expansion@5.0.4: + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -5862,9 +5797,9 @@ snapshots: browserslist@4.28.1: dependencies: - baseline-browser-mapping: 2.10.10 + baseline-browser-mapping: 2.10.12 caniuse-lite: 1.0.30001781 - electron-to-chromium: 1.5.321 + electron-to-chromium: 1.5.328 node-releases: 2.0.36 update-browserslist-db: 1.2.3(browserslist@4.28.1) @@ -5880,7 +5815,7 @@ snapshots: lru-cache: 11.2.7 minipass: 7.1.3 minipass-collect: 2.0.1 - minipass-flush: 1.0.5 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 p-map: 7.0.4 ssri: 13.0.1 @@ -6144,7 +6079,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.321: {} + electron-to-chromium@1.5.328: {} emoji-regex@10.6.0: {} @@ -6700,7 +6635,7 @@ snapshots: '@asamuzakjp/css-color': 5.0.1 '@asamuzakjp/dom-selector': 7.0.4 '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.1(css-tree@3.2.1) + '@csstools/css-syntax-patches-for-csstree': 1.1.2(css-tree@3.2.1) '@exodus/bytes': 1.15.0 css-tree: 3.2.1 data-urls: 7.0.0 @@ -6712,7 +6647,7 @@ snapshots: saxes: 6.0.0 symbol-tree: 3.2.4 tough-cookie: 6.0.1 - undici: 7.24.5 + undici: 7.24.6 w3c-xmlserializer: 5.0.0 webidl-conversions: 8.0.1 whatwg-mimetype: 5.0.0 @@ -6863,7 +6798,7 @@ snapshots: http-cache-semantics: 4.2.0 minipass: 7.1.3 minipass-fetch: 5.0.2 - minipass-flush: 1.0.5 + minipass-flush: 1.0.7 minipass-pipeline: 1.2.4 negotiator: 1.0.0 proc-log: 6.1.0 @@ -6920,7 +6855,7 @@ snapshots: minimatch@10.2.4: dependencies: - brace-expansion: 5.0.4 + brace-expansion: 5.0.5 minimist@1.2.8: {} @@ -6936,7 +6871,7 @@ snapshots: optionalDependencies: iconv-lite: 0.7.2 - minipass-flush@1.0.5: + minipass-flush@1.0.7: dependencies: minipass: 3.3.6 @@ -7001,10 +6936,10 @@ snapshots: nerf-dart@1.0.0: {} - ng-packagr@21.2.2(@angular/compiler-cli@21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): + ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3): dependencies: '@ampproject/remapping': 2.3.0 - '@angular/compiler-cli': 21.1.5(@angular/compiler@21.1.5)(typescript@5.9.3) + '@angular/compiler-cli': 21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3) '@rollup/plugin-json': 6.1.0(rollup@4.60.0) '@rollup/wasm-node': 4.60.0 ajv: 8.18.0 @@ -7295,7 +7230,7 @@ snapshots: lru-cache: 11.2.7 minipass: 7.1.3 - path-to-regexp@8.3.0: {} + path-to-regexp@8.4.0: {} path-type@4.0.0: {} @@ -7305,9 +7240,6 @@ snapshots: picomatch@2.3.2: {} - picomatch@4.0.3: - optional: true - picomatch@4.0.4: {} pify@3.0.0: {} @@ -7452,7 +7384,7 @@ snapshots: rfdc@1.4.1: {} - rolldown@1.0.0-rc.4: + rolldown@1.0.0-rc.4(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1): dependencies: '@oxc-project/types': 0.113.0 '@rolldown/pluginutils': 1.0.0-rc.4 @@ -7467,9 +7399,12 @@ snapshots: '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.4 '@rolldown/binding-linux-x64-musl': 1.0.0-rc.4 '@rolldown/binding-openharmony-arm64': 1.0.0-rc.4 - '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.4(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1) '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.4 '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.4 + transitivePeerDependencies: + - '@emnapi/core' + - '@emnapi/runtime' rollup-plugin-dts@6.4.1(rollup@4.60.0)(typescript@5.9.3): dependencies: @@ -7519,7 +7454,7 @@ snapshots: depd: 2.0.0 is-promise: 4.0.0 parseurl: 1.3.3 - path-to-regexp: 8.3.0 + path-to-regexp: 8.4.0 transitivePeerDependencies: - supports-color @@ -7949,7 +7884,7 @@ snapshots: undici@7.24.4: {} - undici@7.24.5: {} + undici@7.24.6: {} unicode-emoji-modifier-base@1.0.0: {} @@ -7992,7 +7927,7 @@ snapshots: vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3): dependencies: - esbuild: 0.27.4 + esbuild: 0.27.3 fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4 postcss: 8.5.8 @@ -8136,11 +8071,8 @@ snapshots: yoctocolors@2.1.2: {} - zod-to-json-schema@3.25.1(zod@4.3.6): + zod-to-json-schema@3.25.2(zod@4.3.6): dependencies: zod: 4.3.6 zod@4.3.6: {} - - zone.js@0.16.1: - optional: true diff --git a/projects/amc-docs/src/app/app.config.ts b/projects/amc-docs/src/app/app.config.ts index fda126f6..0806aa31 100644 --- a/projects/amc-docs/src/app/app.config.ts +++ b/projects/amc-docs/src/app/app.config.ts @@ -1,7 +1,5 @@ import { ApplicationConfig, provideBrowserGlobalErrorListeners, provideZonelessChangeDetection } from '@angular/core'; import { provideNativeDateAdapter } from '@angular/material/core'; -import { provideAnimations } from '@angular/platform-browser/animations'; -import { provideAnimationsAsync } from '@angular/platform-browser/animations/async'; import { provideRouter } from '@angular/router'; import { routes } from './app.routes'; @@ -9,8 +7,6 @@ import { routes } from './app.routes'; export const appConfig: ApplicationConfig = { providers: [ provideNativeDateAdapter(), - provideAnimations(), - provideAnimationsAsync(), provideZonelessChangeDetection(), provideBrowserGlobalErrorListeners(), provideRouter(routes) From 6297ea426f07de6c7c1cc15549aff2781755f2cf Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 29 Mar 2026 05:13:31 +0000 Subject: [PATCH 02/25] chore(release): 21.2.6-next.1 [skip ci] ## [21.2.6-next.1](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.5...v21.2.6-next.1) (2026-03-29) ### Bug Fixes * remove animations references from amc docs ([2e7d202](https://github.com/fbf-prog64/angular-material-components/commit/2e7d2024de5f1153d519acaeb72ef47dd5c4eb63)) --- package.json | 2 +- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 03db5fda..b135e79c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.5", + "version": "21.2.6-next.1", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index 41dd7383..b78e53c8 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.5", + "version": "21.2.6-next.1", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index a3f07dfb..6b7eab08 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.5", + "version": "21.2.6-next.1", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index 06e49f19..914ffec7 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.5", + "version": "21.2.6-next.1", "description": "Angular Material File Input", "author": "Felipe B.", "repository": { From 23b65d9ded9afbc55b996732972b85e51d40533c Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Sun, 22 Feb 2026 23:58:38 -0700 Subject: [PATCH 03/25] ci(lint): add linting tooling --- angular.json | 40 + eslint.config.js | 52 ++ package.json | 7 +- pnpm-lock.yaml | 952 +++++++++++++++++++++- projects/amc-docs/eslint.config.js | 32 + projects/color-picker/eslint.config.js | 7 + projects/color-picker/package.json | 3 +- projects/datetime-picker/eslint.config.js | 7 + projects/datetime-picker/package.json | 3 +- projects/file-input/eslint.config.js | 7 + projects/file-input/package.json | 3 +- 11 files changed, 1106 insertions(+), 7 deletions(-) create mode 100644 eslint.config.js create mode 100644 projects/amc-docs/eslint.config.js create mode 100644 projects/color-picker/eslint.config.js create mode 100644 projects/datetime-picker/eslint.config.js create mode 100644 projects/file-input/eslint.config.js diff --git a/angular.json b/angular.json index 6494311e..2265dca5 100644 --- a/angular.json +++ b/angular.json @@ -72,6 +72,16 @@ }, "test": { "builder": "@angular/build:unit-test" + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/amc-docs/**/*.ts", + "projects/amc-docs/**/*.html" + ], + "eslintConfig": "projects/amc-docs/eslint.config.js" + } } } }, @@ -98,6 +108,16 @@ "options": { "tsConfig": "projects/color-picker/tsconfig.spec.json" } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/color-picker/**/*.ts", + "projects/color-picker/**/*.html" + ], + "eslintConfig": "projects/color-picker/eslint.config.js" + } } } }, @@ -124,6 +144,16 @@ "options": { "tsConfig": "projects/datetime-picker/tsconfig.spec.json" } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/datetime-picker/**/*.ts", + "projects/datetime-picker/**/*.html" + ], + "eslintConfig": "projects/datetime-picker/eslint.config.js" + } } } }, @@ -150,6 +180,16 @@ "options": { "tsConfig": "projects/file-input/tsconfig.spec.json" } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "projects/file-input/**/*.ts", + "projects/file-input/**/*.html" + ], + "eslintConfig": "projects/file-input/eslint.config.js" + } } } } diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 00000000..060d1bdd --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,52 @@ +// @ts-check +const eslint = require("@eslint/js"); +const { defineConfig } = require("eslint/config"); +const tseslint = require("typescript-eslint"); +const angular = require("angular-eslint"); + +module.exports = defineConfig([ + { + files: ["**/*.ts"], + extends: [ + eslint.configs.recommended, + tseslint.configs.recommended, + tseslint.configs.stylistic, + angular.configs.tsRecommended, + ], + processor: angular.processInlineTemplates, + rules: { + "@angular-eslint/directive-selector": [ + "error", + { + type: "attribute", + prefix: "ngx", + style: "camelCase", + }, + ], + "@angular-eslint/component-selector": [ + "error", + { + type: "element", + prefix: "ngx", + style: "kebab-case", + }, + ], + "@typescript-eslint/no-unused-vars": [ + "error", + { + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrorsIgnorePattern: "^_" + } + ] + }, + }, + { + files: ["**/*.html"], + extends: [ + angular.configs.templateRecommended, + angular.configs.templateAccessibility, + ], + rules: {}, + } +]); diff --git a/package.json b/package.json index b135e79c..9699edc0 100644 --- a/package.json +++ b/package.json @@ -57,15 +57,20 @@ }, "devDependencies": { "@angular/build": "^21.2.5", + "@angular-eslint/builder": "21.2.0", "@angular/cdk": "^21.1.5", "@angular/cli": "^21.2.5", "@angular/compiler-cli": "^21.1.5", "@cleyrop-org/semantic-release-backmerge": "^5.2.4", + "@eslint/js": "^9.39.2", "@types/node": "^25.5.0", + "angular-eslint": "21.2.0", + "eslint": "^9.39.2", "jsdom": "^29.0.1", "ng-packagr": "^21.2.2", "ts-node": "~10.9.2", "typescript": "~5.9.2", + "typescript-eslint": "8.50.1", "vitest": "^4.1.2" } -} +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 723ba99b..d0ced8bb 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -42,6 +42,9 @@ importers: specifier: ^2.3.0 version: 2.8.1 devDependencies: + '@angular-eslint/builder': + specifier: 21.2.0 + version: 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) '@angular/build': specifier: ^21.2.5 version: 21.2.5(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))) @@ -57,9 +60,18 @@ importers: '@cleyrop-org/semantic-release-backmerge': specifier: ^5.2.4 version: 5.2.4(typescript@5.9.3) + '@eslint/js': + specifier: ^9.39.2 + version: 9.39.4 '@types/node': specifier: ^25.5.0 version: 25.5.0 + angular-eslint: + specifier: 21.2.0 + version: 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) + eslint: + specifier: ^9.39.2 + version: 9.39.4 jsdom: specifier: ^29.0.1 version: 29.0.1 @@ -72,6 +84,9 @@ importers: typescript: specifier: ~5.9.2 version: 5.9.3 + typescript-eslint: + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.4)(typescript@5.9.3) vitest: specifier: ^4.1.2 version: 4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)) @@ -243,6 +258,50 @@ packages: resolution: {integrity: sha512-gEg84eipTX6lcpNTDVUXBBwp0vs3rXM319Qom+sCLOKBGyqE0mvb1RM1WwfNcyOqeSMQC/vLUwRKqnP0wg1UDg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} + '@angular-eslint/builder@21.2.0': + resolution: {integrity: sha512-wcp3J9cbrDwSeI/o1D/DSvMQa8zpKjc5WhRGTx33omhWijCfiVNEAiBLWiEx5Sb/dWcoX8yFNWY5jSgFVy9Sjw==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + + '@angular-eslint/bundled-angular-compiler@21.2.0': + resolution: {integrity: sha512-J0DWL+j6t9ItFIyIADvzHGqwDA1qfVJ9bx+oTmJ/Hlo7cUpIRoXpcTXpug0CEEABFH0RfDu6PDG2b0FoZ1+7bg==} + + '@angular-eslint/eslint-plugin-template@21.2.0': + resolution: {integrity: sha512-lJ13Dj0DjR6YiceQR0sRbyWzSzOQ6uZPwK9CJUF3wuZjYAUvL1D61zaU9QrVLtf89NVOxv+dYZHDdu3IDeIqbA==} + peerDependencies: + '@angular-eslint/template-parser': 21.2.0 + '@typescript-eslint/types': ^7.11.0 || ^8.0.0 + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + + '@angular-eslint/eslint-plugin@21.2.0': + resolution: {integrity: sha512-X2Qn2viDsjm91CEMxNrxDH3qkKpp6un0C1F1BW2p/m9J4AUVfOcXwWz9UpHFSHTRQ+YlTJbiH1ZwwAPeKhFaxA==} + peerDependencies: + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + + '@angular-eslint/schematics@21.2.0': + resolution: {integrity: sha512-WtT4fPKIUQ/hswy+l2GF/rKOdD+42L3fUzzcwRzNutQbe2tU9SimoSOAsay/ylWEuhIOQTs7ysPB8fUgFQoLpA==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + + '@angular-eslint/template-parser@21.2.0': + resolution: {integrity: sha512-TCb3qYOC/uXKZCo56cJ6N9sHeWdFhyVqrbbYfFjTi09081T6jllgHDZL5Ms7gOMNY8KywWGGbhxwvzeA0RwTgA==} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + + '@angular-eslint/utils@21.2.0': + resolution: {integrity: sha512-E19/hkuvHoNFvctBkmEiGWpy2bbC6cgbr3GNVrn2nGtbI4jnwnDFCGHv50I4LBfvj0PA9E6TWe73ejJ5qoMJWQ==} + peerDependencies: + '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + '@angular/build@21.2.5': resolution: {integrity: sha512-AfE09K+pkgS3VB84R74XG/XB9LQmO6Q6YfpssjDwMnWGwDGGwUGydXn8AKdhnhI4mM2nFKoe+QYszFgrzu5HeQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} @@ -843,6 +902,44 @@ packages: cpu: [x64] os: [win32] + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@exodus/bytes@1.15.0': resolution: {integrity: sha512-UY0nlA+feH81UGSHv92sLEPLCeZFjXOuHhrIo0HQydScuQc8s0A7kL/UdgwgDq8g8ilksmuoF35YVTNphV2aBQ==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} @@ -865,6 +962,22 @@ packages: peerDependencies: hono: ^4 + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.7': + resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + '@inquirer/ansi@1.0.2': resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} engines: {node: '>=18'} @@ -1767,15 +1880,117 @@ packages: '@types/deep-eql@4.0.2': resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + '@types/estree@1.0.8': resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + '@types/node@25.5.0': resolution: {integrity: sha512-jp2P3tQMSxWugkCUKLRPVUpGaL5MVFwF8RDuSRztfwgN1wmqJeMSbKlnEtQqU8UrhTmzEmZdu2I6v2dpp7XIxw==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.50.1 + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/parser@8.50.1': + resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/project-service@8.57.2': + resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/scope-manager@8.57.2': + resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/tsconfig-utils@8.57.2': + resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/types@8.57.2': + resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/typescript-estree@8.57.2': + resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/utils@8.57.2': + resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.0.0' + + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/visitor-keys@8.57.2': + resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitejs/plugin-basic-ssl@2.1.4': resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -1822,6 +2037,11 @@ packages: resolution: {integrity: sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==} engines: {node: '>= 0.6'} + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + acorn-walk@8.3.5: resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} engines: {node: '>=0.4.0'} @@ -1851,6 +2071,9 @@ packages: ajv: optional: true + ajv@6.14.0: + resolution: {integrity: sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==} + ajv@8.18.0: resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} @@ -1858,6 +2081,14 @@ packages: resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} engines: {node: '>= 14.0.0'} + angular-eslint@21.2.0: + resolution: {integrity: sha512-pERqqHIMwD34UT0FoHSNTt4V332vHiAzgkY0rgdUaqSamS94IzbF02EfFxygr53UogQQOXhpLbSSDMOyovB3TA==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + typescript-eslint: ^8.0.0 + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -1898,6 +2129,10 @@ packages: argv-formatter@1.0.0: resolution: {integrity: sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==} + aria-query@5.3.2: + resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} + engines: {node: '>= 0.4'} + array-ify@1.0.0: resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} @@ -1905,6 +2140,13 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + axobject-query@4.1.0: + resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} + engines: {node: '>= 0.4'} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} @@ -1934,6 +2176,12 @@ packages: bottleneck@2.19.5: resolution: {integrity: sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==} + brace-expansion@1.1.13: + resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} + + brace-expansion@2.0.3: + resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} + brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -2074,6 +2322,9 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -2183,6 +2434,9 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + depd@2.0.0: resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} engines: {node: '>= 0.8'} @@ -2316,16 +2570,70 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + escape-string-regexp@5.0.0: resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} engines: {node: '>=12'} + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} estree-walker@3.0.3: resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + etag@1.8.1: resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} engines: {node: '>= 0.6'} @@ -2376,6 +2684,12 @@ packages: fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} @@ -2396,6 +2710,10 @@ packages: resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} engines: {node: '>=18'} + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + fill-range@7.1.1: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} @@ -2416,10 +2734,21 @@ packages: resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} engines: {node: '>=4'} + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + find-versions@6.0.0: resolution: {integrity: sha512-2kCCtc+JvcZ86IGAz3Z2Y0A1baIz9fL31pH/0S1IqZr9Iwnjq8izfPtrCyQKO6TLMPELLsQMre7VDqeIKCsHkA==} engines: {node: '>=18'} + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + forwarded@0.2.0: resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} engines: {node: '>= 0.6'} @@ -2490,6 +2819,10 @@ packages: git-log-parser@1.2.1: resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + glob-to-regexp@0.4.1: resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==} @@ -2497,6 +2830,10 @@ packages: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -2597,6 +2934,14 @@ packages: resolution: {integrity: sha512-FCeMZT4NiRQGh+YkeKMtWrOmBgWjHjMJ26WQWrRQyoyzqevdaGSakUaJW5xQYmjLlUVk2qUnCjYVBax9EKKg8A==} engines: {node: ^20.17.0 || >=22.9.0} + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + image-size@0.5.5: resolution: {integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==} engines: {node: '>=0.10.0'} @@ -2616,6 +2961,10 @@ packages: import-meta-resolve@4.2.0: resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} @@ -2764,6 +3113,9 @@ packages: engines: {node: '>=6'} hasBin: true + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + json-parse-better-errors@1.0.2: resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} @@ -2774,12 +3126,18 @@ packages: resolution: {integrity: sha512-ZF1nxZ28VhQouRWhUcVlUIN3qwSgPuswK05s/HIaoetAoE/9tngVmCHjSxmSQPav1nd+lPtTL0YZ/2AFdR/iYQ==} engines: {node: ^20.17.0 || >=22.9.0} + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} json-schema-typed@8.0.2: resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + json-with-bigint@3.5.8: resolution: {integrity: sha512-eq/4KP6K34kwa7TcFdtvnftvHCD9KvHOGGICWwMFc4dOOKF5t4iYqnfLK8otCRCRv06FXOzGGyqE8h8ElMvvdw==} @@ -2798,11 +3156,18 @@ packages: resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} engines: {'0': node >= 0.2.0} + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + less@4.6.4: resolution: {integrity: sha512-OJmO5+HxZLLw0RLzkqaNHzcgEAQG7C0y3aMbwtCzIUFZsLMNNq/1IdAdHEycQ58CwUO3jPTHmoN+tE5I7FQxNg==} engines: {node: '>=18'} hasBin: true + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -2822,6 +3187,10 @@ packages: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} engines: {node: '>=4'} + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + lodash-es@4.17.23: resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} @@ -2837,6 +3206,9 @@ packages: lodash.isstring@4.0.1: resolution: {integrity: sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==} + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + lodash.uniqby@4.7.0: resolution: {integrity: sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==} @@ -2950,6 +3322,13 @@ packages: resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} engines: {node: 18 || 20 || >=22} + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -3011,6 +3390,9 @@ packages: engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + needle@3.5.0: resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} engines: {node: '>= 4.4.x'} @@ -3222,6 +3604,10 @@ packages: resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} engines: {node: '>=18'} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + ora@9.3.0: resolution: {integrity: sha512-lBX72MWFduWEf7v7uWf5DHp9Jn5BI8bNPGuFgtXMmr2uDz2Gz2749y3am3agSDdkhHPHYmmxEGSKH85ZLGzgXw==} engines: {node: '>=20'} @@ -3249,10 +3635,18 @@ packages: resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} engines: {node: '>=4'} + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + p-locate@2.0.0: resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} engines: {node: '>=4'} + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + p-map@7.0.4: resolution: {integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==} engines: {node: '>=18'} @@ -3324,6 +3718,10 @@ packages: resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} engines: {node: '>=4'} + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + path-key@3.1.1: resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} engines: {node: '>=8'} @@ -3394,6 +3792,10 @@ packages: resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==} engines: {node: ^10 || ^12 || >=14} + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + pretty-ms@9.3.0: resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} engines: {node: '>=18'} @@ -3565,6 +3967,11 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + semver@7.7.3: + resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + engines: {node: '>=10'} + hasBin: true + semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -3747,6 +4154,10 @@ packages: resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} engines: {node: '>=0.10.0'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + super-regex@1.1.0: resolution: {integrity: sha512-WHkws2ZflZe41zj6AolvvmaTrWds/VuyeYr9iPVv/oQeaIoVxMKaushfFWpOGDT+GuBrM/sVqF8KUCYQlSSTdQ==} engines: {node: '>=18'} @@ -3838,6 +4249,12 @@ packages: resolution: {integrity: sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==} engines: {node: '>= 0.4'} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + ts-node@10.9.2: resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} hasBin: true @@ -3863,6 +4280,10 @@ packages: resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + type-fest@1.4.0: resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} engines: {node: '>=10'} @@ -3883,6 +4304,13 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} + typescript-eslint@8.50.1: + resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: '>=4.8.4 <6.0.0' + typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} engines: {node: '>=14.17'} @@ -3945,6 +4373,9 @@ packages: peerDependencies: browserslist: '>= 4.21.0' + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + url-join@5.0.0: resolution: {integrity: sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -4082,6 +4513,10 @@ packages: engines: {node: '>=8'} hasBin: true + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -4145,6 +4580,10 @@ packages: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} engines: {node: '>=6'} + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + yoctocolors-cjs@2.1.3: resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} engines: {node: '>=18'} @@ -4296,6 +4735,71 @@ snapshots: transitivePeerDependencies: - chokidar + '@angular-eslint/builder@21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-devkit/architect': 0.2102.5(chokidar@5.0.0) + '@angular-devkit/core': 21.2.5(chokidar@5.0.0) + '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - chokidar + + '@angular-eslint/bundled-angular-compiler@21.2.0': {} + + '@angular-eslint/eslint-plugin-template@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/template-parser': 21.2.0(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) + aria-query: 5.3.2 + axobject-query: 4.1.0 + eslint: 9.39.4 + typescript: 5.9.3 + + '@angular-eslint/eslint-plugin@21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + + '@angular-eslint/schematics@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-devkit/core': 21.2.5(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.5(chokidar@5.0.0) + '@angular-eslint/eslint-plugin': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin-template': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) + ignore: 7.0.5 + semver: 7.7.3 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@angular-eslint/template-parser' + - '@typescript-eslint/types' + - '@typescript-eslint/utils' + - chokidar + - eslint + - typescript + + '@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 21.2.0 + eslint: 9.39.4 + eslint-scope: 9.1.2 + typescript: 5.9.3 + + '@angular-eslint/utils@21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + '@angular/build@21.2.5(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)))': dependencies: '@ampproject/remapping': 2.3.0 @@ -4806,6 +5310,52 @@ snapshots: '@esbuild/win32-x64@0.27.4': optional: true + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4)': + dependencies: + eslint: 9.39.4 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3 + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.14.0 + debug: 4.4.3 + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + '@exodus/bytes@1.15.0': {} '@gar/promise-retry@1.0.3': {} @@ -4817,6 +5367,17 @@ snapshots: dependencies: hono: 4.12.9 + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.7': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.4.3 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + '@inquirer/ansi@1.0.2': {} '@inquirer/checkbox@4.3.2(@types/node@25.5.0)': @@ -5607,14 +6168,160 @@ snapshots: '@types/deep-eql@4.0.2': {} + '@types/esrecurse@4.3.1': {} + '@types/estree@1.0.8': {} + '@types/json-schema@7.0.15': {} + '@types/node@25.5.0': dependencies: undici-types: 7.18.2 '@types/normalize-package-data@2.4.4': {} + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 + eslint: 9.39.4 + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 + debug: 4.4.3 + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + debug: 4.4.3 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.50.1': + dependencies: + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 + + '@typescript-eslint/scope-manager@8.57.2': + dependencies: + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 + + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + debug: 4.4.3 + eslint: 9.39.4 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.50.1': {} + + '@typescript-eslint/types@8.57.2': {} + + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 + debug: 4.4.3 + minimatch: 9.0.9 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.57.2(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/visitor-keys': 8.57.2 + debug: 4.4.3 + minimatch: 10.2.4 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.57.2 + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/typescript-estree': 8.57.2(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.50.1': + dependencies: + '@typescript-eslint/types': 8.50.1 + eslint-visitor-keys: 4.2.1 + + '@typescript-eslint/visitor-keys@8.57.2': + dependencies: + '@typescript-eslint/types': 8.57.2 + eslint-visitor-keys: 5.0.1 + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))': dependencies: vite: 7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3) @@ -5669,6 +6376,10 @@ snapshots: mime-types: 3.0.2 negotiator: 1.0.0 + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + acorn-walk@8.3.5: dependencies: acorn: 8.16.0 @@ -5691,6 +6402,13 @@ snapshots: optionalDependencies: ajv: 8.18.0 + ajv@6.14.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + ajv@8.18.0: dependencies: fast-deep-equal: 3.1.3 @@ -5715,6 +6433,25 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 + angular-eslint@21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3): + dependencies: + '@angular-devkit/core': 21.2.5(chokidar@5.0.0) + '@angular-devkit/schematics': 21.2.5(chokidar@5.0.0) + '@angular-eslint/builder': 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin-template': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/schematics': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/template-parser': 21.2.0(eslint@9.39.4)(typescript@5.9.3) + '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) + '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + typescript-eslint: 8.50.1(eslint@9.39.4)(typescript@5.9.3) + transitivePeerDependencies: + - chokidar + - supports-color + ansi-colors@4.1.3: {} ansi-escapes@7.3.0: @@ -5743,10 +6480,16 @@ snapshots: argv-formatter@1.0.0: {} + aria-query@5.3.2: {} + array-ify@1.0.0: {} assertion-error@2.0.1: {} + axobject-query@4.1.0: {} + + balanced-match@1.0.2: {} + balanced-match@4.0.4: {} baseline-browser-mapping@2.10.12: {} @@ -5787,6 +6530,15 @@ snapshots: bottleneck@2.19.5: {} + brace-expansion@1.1.13: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.3: + dependencies: + balanced-match: 1.0.2 + brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -5932,6 +6684,8 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 + concat-map@0.0.1: {} + config-chain@1.1.13: dependencies: ini: 1.3.8 @@ -6032,6 +6786,8 @@ snapshots: deep-extend@0.6.0: {} + deep-is@0.1.4: {} + depd@2.0.0: {} dependency-graph@1.0.0: {} @@ -6189,14 +6945,91 @@ snapshots: escape-string-regexp@1.0.5: {} + escape-string-regexp@4.0.0: {} + escape-string-regexp@5.0.0: {} + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.8 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4: + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.7 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.8 + ajv: 6.14.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3 + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + estree-walker@2.0.2: {} estree-walker@3.0.3: dependencies: '@types/estree': 1.0.8 + esutils@2.0.3: {} + etag@1.8.1: {} eventemitter3@5.0.4: {} @@ -6292,6 +7125,10 @@ snapshots: fast-deep-equal@3.1.3: {} + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + fast-uri@3.1.0: {} fdir@6.5.0(picomatch@4.0.4): @@ -6306,6 +7143,10 @@ snapshots: dependencies: is-unicode-supported: 2.1.0 + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + fill-range@7.1.1: dependencies: to-regex-range: 5.0.1 @@ -6332,11 +7173,23 @@ snapshots: dependencies: locate-path: 2.0.0 + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + find-versions@6.0.0: dependencies: semver-regex: 4.0.5 super-regex: 1.1.0 + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + forwarded@0.2.0: {} fresh@2.0.0: {} @@ -6407,6 +7260,10 @@ snapshots: through2: 2.0.5 traverse: 0.6.8 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + glob-to-regexp@0.4.1: {} glob@13.0.6: @@ -6415,6 +7272,8 @@ snapshots: minipass: 7.1.3 path-scurry: 2.0.2 + globals@14.0.0: {} + gopd@1.2.0: {} graceful-fs@4.2.10: {} @@ -6512,6 +7371,10 @@ snapshots: dependencies: minimatch: 10.2.4 + ignore@5.3.2: {} + + ignore@7.0.5: {} + image-size@0.5.5: optional: true @@ -6531,6 +7394,8 @@ snapshots: import-meta-resolve@4.2.0: {} + imurmurhash@0.1.4: {} + indent-string@4.0.0: {} indent-string@5.0.0: {} @@ -6558,8 +7423,7 @@ snapshots: is-arrayish@0.2.1: {} - is-extglob@2.1.1: - optional: true + is-extglob@2.1.1: {} is-fullwidth-code-point@3.0.0: {} @@ -6570,7 +7434,6 @@ snapshots: is-glob@4.0.3: dependencies: is-extglob: 2.1.1 - optional: true is-interactive@2.0.0: {} @@ -6658,16 +7521,22 @@ snapshots: jsesc@3.1.0: {} + json-buffer@3.0.1: {} + json-parse-better-errors@1.0.2: {} json-parse-even-better-errors@2.3.1: {} json-parse-even-better-errors@5.0.0: {} + json-schema-traverse@0.4.1: {} + json-schema-traverse@1.0.0: {} json-schema-typed@8.0.2: {} + json-stable-stringify-without-jsonify@1.0.1: {} + json-with-bigint@3.5.8: {} json5@2.2.3: {} @@ -6682,6 +7551,10 @@ snapshots: jsonparse@1.3.1: {} + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + less@4.6.4: dependencies: copy-anything: 3.0.5 @@ -6695,6 +7568,11 @@ snapshots: needle: 3.5.0 source-map: 0.6.1 + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + lines-and-columns@1.2.4: {} listr2@9.0.5: @@ -6736,6 +7614,10 @@ snapshots: p-locate: 2.0.0 path-exists: 3.0.0 + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + lodash-es@4.17.23: {} lodash.capitalize@4.2.1: {} @@ -6746,6 +7628,8 @@ snapshots: lodash.isstring@4.0.1: {} + lodash.merge@4.6.2: {} + lodash.uniqby@4.7.0: {} lodash@4.17.23: {} @@ -6857,6 +7741,14 @@ snapshots: dependencies: brace-expansion: 5.0.5 + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.13 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.0.3 + minimist@1.2.8: {} minipass-collect@2.0.1: @@ -6924,6 +7816,8 @@ snapshots: nanoid@3.3.11: {} + natural-compare@1.4.0: {} + needle@3.5.0: dependencies: iconv-lite: 0.6.3 @@ -7105,6 +7999,15 @@ snapshots: dependencies: mimic-function: 5.0.1 + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + ora@9.3.0: dependencies: chalk: 5.6.2 @@ -7135,10 +8038,18 @@ snapshots: dependencies: p-try: 1.0.0 + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + p-locate@2.0.0: dependencies: p-limit: 1.3.0 + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + p-map@7.0.4: {} p-reduce@3.0.0: {} @@ -7221,6 +8132,8 @@ snapshots: path-exists@3.0.0: {} + path-exists@4.0.0: {} + path-key@3.1.1: {} path-key@4.0.0: {} @@ -7274,6 +8187,8 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 + prelude-ls@1.2.1: {} + pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 @@ -7530,6 +8445,8 @@ snapshots: semver@6.3.1: {} + semver@7.7.3: {} + semver@7.7.4: {} send@1.2.1: @@ -7737,6 +8654,8 @@ snapshots: strip-json-comments@2.0.1: {} + strip-json-comments@3.1.1: {} + super-regex@1.1.0: dependencies: function-timeout: 1.0.2 @@ -7827,6 +8746,10 @@ snapshots: traverse@0.6.8: {} + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + ts-node@10.9.2(@types/node@25.5.0)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 @@ -7857,6 +8780,10 @@ snapshots: tunnel@0.0.6: {} + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + type-fest@1.4.0: {} type-fest@2.19.0: {} @@ -7873,6 +8800,17 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 + typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + typescript@5.9.3: {} uglify-js@3.19.3: @@ -7910,6 +8848,10 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + url-join@5.0.0: {} util-deprecate@1.0.2: {} @@ -8006,6 +8948,8 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 + word-wrap@1.2.5: {} + wordwrap@1.0.0: {} wrap-ansi@6.2.0: @@ -8067,6 +9011,8 @@ snapshots: yn@3.1.1: {} + yocto-queue@0.1.0: {} + yoctocolors-cjs@2.1.3: {} yoctocolors@2.1.2: {} diff --git a/projects/amc-docs/eslint.config.js b/projects/amc-docs/eslint.config.js new file mode 100644 index 00000000..439b7533 --- /dev/null +++ b/projects/amc-docs/eslint.config.js @@ -0,0 +1,32 @@ +// @ts-check +const { defineConfig } = require("eslint/config"); +const rootConfig = require("../../eslint.config.js"); + +module.exports = defineConfig([ + ...rootConfig, + { + files: ["**/*.ts"], + rules: { + "@angular-eslint/directive-selector": [ + "error", + { + type: "attribute", + prefix: "app", + style: "camelCase", + }, + ], + "@angular-eslint/component-selector": [ + "error", + { + type: "element", + prefix: "app", + style: "kebab-case", + }, + ], + }, + }, + { + files: ["**/*.html"], + rules: {}, + } +]); diff --git a/projects/color-picker/eslint.config.js b/projects/color-picker/eslint.config.js new file mode 100644 index 00000000..181fef7f --- /dev/null +++ b/projects/color-picker/eslint.config.js @@ -0,0 +1,7 @@ +// @ts-check +const { defineConfig } = require("eslint/config"); +const rootConfig = require("../../eslint.config.js"); + +module.exports = defineConfig([ + ...rootConfig +]); diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index b78e53c8..6da10b26 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -25,7 +25,8 @@ "scripts": { "ng": "ng", "build": "ng build -c=production", - "build-dev": "ng build -c=development" + "build-dev": "ng build -c=development", + "lint": "ng lint" }, "publishConfig": { "directory": "../../dist/color-picker", diff --git a/projects/datetime-picker/eslint.config.js b/projects/datetime-picker/eslint.config.js new file mode 100644 index 00000000..181fef7f --- /dev/null +++ b/projects/datetime-picker/eslint.config.js @@ -0,0 +1,7 @@ +// @ts-check +const { defineConfig } = require("eslint/config"); +const rootConfig = require("../../eslint.config.js"); + +module.exports = defineConfig([ + ...rootConfig +]); diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index 6b7eab08..d8466e3d 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -28,7 +28,8 @@ "scripts": { "ng": "ng", "build": "ng build -c=production", - "build-dev": "ng build -c=development" + "build-dev": "ng build -c=development", + "lint": "ng lint" }, "publishConfig": { "directory": "../../dist/datetime-picker", diff --git a/projects/file-input/eslint.config.js b/projects/file-input/eslint.config.js new file mode 100644 index 00000000..181fef7f --- /dev/null +++ b/projects/file-input/eslint.config.js @@ -0,0 +1,7 @@ +// @ts-check +const { defineConfig } = require("eslint/config"); +const rootConfig = require("../../eslint.config.js"); + +module.exports = defineConfig([ + ...rootConfig +]); diff --git a/projects/file-input/package.json b/projects/file-input/package.json index 914ffec7..7975ab09 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -25,7 +25,8 @@ "scripts": { "ng": "ng", "build": "ng build -c=production", - "build-dev": "ng build -c=development" + "build-dev": "ng build -c=development", + "lint": "ng lint" }, "publishConfig": { "directory": "../../dist/file-input", From ab96e9976412a4ab80ad0f1bcf25e6b6a1579867 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Sat, 28 Mar 2026 23:07:26 -0700 Subject: [PATCH 04/25] refactor: solve file-input linting errors --- .../file-input/src/lib/file-input-type.ts | 2 +- .../src/lib/file-input.component.ts | 75 ++++++++++--------- .../src/lib/validators/max-size.validator.ts | 2 +- 3 files changed, 41 insertions(+), 38 deletions(-) diff --git a/projects/file-input/src/lib/file-input-type.ts b/projects/file-input/src/lib/file-input-type.ts index 27683cd5..812724ca 100644 --- a/projects/file-input/src/lib/file-input-type.ts +++ b/projects/file-input/src/lib/file-input-type.ts @@ -1 +1 @@ -export type FileOrArrayFile = File | Array | File[]; +export type FileOrArrayFile = File | File[]; diff --git a/projects/file-input/src/lib/file-input.component.ts b/projects/file-input/src/lib/file-input.component.ts index d90b113f..9f560d7c 100644 --- a/projects/file-input/src/lib/file-input.component.ts +++ b/projects/file-input/src/lib/file-input.component.ts @@ -8,11 +8,11 @@ import { DoCheck, ElementRef, forwardRef, + inject, Input, input, + OnChanges, OnDestroy, - Optional, - Self, viewChild, ViewEncapsulation, } from '@angular/core'; @@ -27,15 +27,14 @@ import { FileOrArrayFile } from './file-input-type'; let nextUniqueId = 0; class NgxMatInputMixinBase { + readonly stateChanges = new Subject(); - constructor( - public _defaultErrorStateMatcher: ErrorStateMatcher, - public _parentForm: NgForm, - public _parentFormGroup: FormGroupDirective, - /** @docs-private */ - public ngControl: NgControl, - ) {} + protected ngControl: NgControl | null = null; + protected _parentForm: NgForm | null = null; + protected _parentFormGroup: FormGroupDirective | null = null; + protected _defaultErrorStateMatcher: ErrorStateMatcher | null = null; + } @Directive({ @@ -62,30 +61,33 @@ export class NgxMatFileInputIcon {} }) export class NgxMatFileInputComponent extends NgxMatInputMixinBase - implements MatFormFieldControl, OnDestroy, DoCheck, ControlValueAccessor + implements MatFormFieldControl, OnChanges, OnDestroy, DoCheck, ControlValueAccessor { private _inputFileRef = viewChild('inputFile'); private _inputValueRef = viewChild('inputValue'); readonly color = input('primary'); - public fileNames: string = ""; + public fileNames = ""; protected _uid = `ngx-mat-fileinput-${nextUniqueId++}`; - protected _previousNativeValue: any; - _ariaDescribedby: string = ""; + _ariaDescribedby = ""; override stateChanges: Subject = new Subject(); - focused: boolean = false; - errorState: boolean = false; - controlType: string = 'ngx-mat-file-input'; - autofilled: boolean = false; + focused = false; + errorState = false; + controlType = 'ngx-mat-file-input'; + autofilled = false; /** Function when touched */ - _onTouched = () => {}; + _onTouched = () => { + // Intentionally empty. + }; /** Function when changed */ - _onChange: (value: FileOrArrayFile) => void = () => {}; + _onChange: (value: FileOrArrayFile) => void = () => { + // Intentionally empty. + }; @Input() get disabled(): boolean { @@ -110,7 +112,7 @@ export class NgxMatFileInputComponent set id(value: string) { this._id = value || this._uid; } - protected _id: string = ""; + protected _id = ""; @Input() get multiple(): boolean { @@ -165,20 +167,19 @@ export class NgxMatFileInputComponent set accept(value: string) { this._accept = value; } - private _accept: string = ""; + private _accept = ""; - constructor( - protected _elementRef: ElementRef, - protected _platform: Platform, - private _cd: ChangeDetectorRef, - @Optional() @Self() override ngControl: NgControl, - @Optional() _parentForm: NgForm, - @Optional() _parentFormGroup: FormGroupDirective, - _defaultErrorStateMatcher: ErrorStateMatcher, - ) { - super(_defaultErrorStateMatcher, _parentForm, _parentFormGroup, ngControl); + protected _elementRef = inject(ElementRef); + protected _platform = inject(Platform); + private _cd = inject(ChangeDetectorRef); - this.id = this.id; + override ngControl = inject(NgControl, { optional: true, self: true }); + protected override _parentForm = inject(NgForm, { optional: true }); + protected override _parentFormGroup = inject(FormGroupDirective, { optional: true }); + protected override _defaultErrorStateMatcher = inject(ErrorStateMatcher); + + constructor() { + super(); if (this.ngControl) { this.ngControl.valueAccessor = this; @@ -214,7 +215,7 @@ export class NgxMatFileInputComponent } // Implemented as part of ControlValueAccessor. - registerOnChange(fn: (value: any) => void): void { + registerOnChange(fn: (value: FileOrArrayFile) => void): void { this._onChange = fn; } @@ -249,7 +250,7 @@ export class NgxMatFileInputComponent } protected _isBadInput() { - let validity = (this._inputValueRef()?.nativeElement as HTMLInputElement).validity; + const validity = (this._inputValueRef()?.nativeElement as HTMLInputElement).validity; return validity && validity.badInput; } @@ -276,7 +277,7 @@ export class NgxMatFileInputComponent handleFiles(filelist: FileList) { if (filelist.length > 0) { - const files: Array = new Array(); + const files: File[] = []; for (let i = 0; i < filelist.length; i++) { const f = filelist.item(i); if (f) @@ -289,7 +290,9 @@ export class NgxMatFileInputComponent } /** Handles a click on the control's container. */ - onContainerClick(event: MouseEvent) {} + onContainerClick(_: MouseEvent) { + // Intentionally empty. + } private _resetInputFile() { this._inputFileRef()!.nativeElement.value = ''; diff --git a/projects/file-input/src/lib/validators/max-size.validator.ts b/projects/file-input/src/lib/validators/max-size.validator.ts index f5c37c68..a28c62c0 100644 --- a/projects/file-input/src/lib/validators/max-size.validator.ts +++ b/projects/file-input/src/lib/validators/max-size.validator.ts @@ -16,7 +16,7 @@ export function MaxSizeValidator(max: number): ValidatorFn { files = [ctrl.value]; } if (!files.length) return null; - const add = (a: any, b: any): number => a + b; + const add = (a: number, b: number): number => a + b; const sumSize = files.map((x) => x.size).reduce(add); if (sumSize > max) { return { From 373a29cbd3f46b6aaf96c0f81b2449fb47544630 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Sat, 28 Mar 2026 23:55:09 -0700 Subject: [PATCH 05/25] refactor: solve most color-picker linting errors --- .../color-canvas/base-color-canvas.ts | 19 +++---- .../color-canvas/color-canvas.component.ts | 9 ++-- .../color-slider/color-slider.component.ts | 8 +-- .../color-collection.component.ts | 2 +- .../color-picker/color-input.component.ts | 45 +++++++++-------- .../color-picker/color-picker.component.ts | 50 +++++++++---------- .../color-toggle/color-toggle.component.ts | 7 ++- .../src/lib/helpers/color-helpers.ts | 9 +--- .../src/lib/models/color.model.ts | 6 +-- .../src/lib/services/color-formats.ts | 6 +-- 10 files changed, 82 insertions(+), 79 deletions(-) diff --git a/projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts b/projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts index 28dde6f8..cfcd7756 100644 --- a/projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts +++ b/projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts @@ -30,18 +30,19 @@ export abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit elementId: string; ctx: CanvasRenderingContext2D | null = null; - width: number = 0; - height: number = 0; + width = 0; + height = 0; - x: number = 0; - y: number = 0; + x = 0; + y = 0; drag = false; protected _destroyed: Subject = new Subject(); + protected zone: NgZone | null = null; + constructor( - protected zone: NgZone, elementId: string, ) { this.elementId = elementId; @@ -53,7 +54,7 @@ export abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit } ngAfterViewInit(): void { - this.canvas = document.getElementById(this.elementId); + this.canvas = document.getElementById(this.elementId) as HTMLCanvasElement; this.ctx = this.canvas.getContext('2d'); this.width = this.canvas.width; this.height = this.canvas.height; @@ -73,20 +74,20 @@ export abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit this.drag = true; this.changeColor(e); - this.zone.runOutsideAngular(() => { + this.zone?.runOutsideAngular(() => { this.canvas?.addEventListener('mousemove', this.onMousemove.bind(this)); }); } public onMousemove(e: MouseEvent) { if (this.drag) { - this.zone.run(() => { + this.zone?.run(() => { this.changeColor(e); }); } } - public onMouseup(e: MouseEvent) { + public onMouseup(_: MouseEvent) { this.drag = false; this.canvas?.removeEventListener('mousemove', this.onMousemove); } diff --git a/projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts b/projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts index 89506f0b..1689f885 100644 --- a/projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts +++ b/projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts @@ -1,6 +1,7 @@ import { AfterViewInit, Component, + inject, NgZone, OnChanges, OnDestroy, @@ -66,10 +67,12 @@ export class NgxMatColorCanvasComponent formGroup: FormGroup; - rgba: string = ""; + rgba = ""; - constructor(override zone: NgZone) { - super(zone, 'color-block'); + protected override zone = inject(NgZone); + + constructor() { + super('color-block'); this.formGroup = new FormGroup({ r: new FormControl(null, [Validators.required]), g: new FormControl(null, [Validators.required]), diff --git a/projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts b/projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts index 67e9a49c..4b988872 100644 --- a/projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts +++ b/projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts @@ -1,4 +1,4 @@ -import { Component, NgZone } from '@angular/core'; +import { Component, inject, NgZone } from '@angular/core'; import { getColorAtPosition } from '../../../helpers'; import { Color } from '../../../models'; import { NgxMatBaseColorCanvas } from '../base-color-canvas'; @@ -9,8 +9,10 @@ import { NgxMatBaseColorCanvas } from '../base-color-canvas'; styleUrls: ['./color-slider.component.scss'], }) export class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas { - constructor(override zone: NgZone) { - super(zone, 'color-strip'); + protected override zone = inject(NgZone); + + constructor() { + super('color-strip'); } override ngAfterViewInit(): void { diff --git a/projects/color-picker/src/lib/components/color-collection/color-collection.component.ts b/projects/color-picker/src/lib/components/color-collection/color-collection.component.ts index 21c7264c..72c159ab 100644 --- a/projects/color-picker/src/lib/components/color-collection/color-collection.component.ts +++ b/projects/color-picker/src/lib/components/color-collection/color-collection.component.ts @@ -31,7 +31,7 @@ export class NgxMatColorCollectionComponent { select(hex: string) { this.selectedColor.set(hex); - let rgba = stringInputToObject(hex); + const rgba = stringInputToObject(hex); if (rgba != null) { this.colorChanged.emit(new Color(rgba.r, rgba.g, rgba.b, rgba.a)); } diff --git a/projects/color-picker/src/lib/components/color-picker/color-input.component.ts b/projects/color-picker/src/lib/components/color-picker/color-input.component.ts index 1bb11a62..cff896e3 100644 --- a/projects/color-picker/src/lib/components/color-picker/color-input.component.ts +++ b/projects/color-picker/src/lib/components/color-picker/color-input.component.ts @@ -5,12 +5,11 @@ import { ElementRef, EventEmitter, forwardRef, - Inject, + inject, Input, OnDestroy, - OnInit, - Optional, output, + Provider, } from '@angular/core'; import { AbstractControl, @@ -28,7 +27,7 @@ import { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input'; import { Subscription } from 'rxjs'; import { createMissingDateImplError } from '../../helpers'; import { Color } from '../../models'; -import { ColorAdapter, MAT_COLOR_FORMATS, MatColorFormats } from '../../services'; +import { ColorAdapter, MAT_COLOR_FORMATS } from '../../services'; import { NgxMatColorPickerComponent } from './color-picker.component'; export class NgxMatColorPickerInputEvent { @@ -45,13 +44,13 @@ export class NgxMatColorPickerInputEvent { } } -export const MAT_COLORPICKER_VALUE_ACCESSOR: any = { +export const MAT_COLORPICKER_VALUE_ACCESSOR: Provider = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxMatColorPickerInput), multi: true, }; -export const MAT_COLORPICKER_VALIDATORS: any = { +export const MAT_COLORPICKER_VALIDATORS: Provider = { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxMatColorPickerInput), multi: true, @@ -76,7 +75,7 @@ export const MAT_COLORPICKER_VALIDATORS: any = { }, exportAs: 'ngxMatColorPickerInput', }) -export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnDestroy, Validator { +export class NgxMatColorPickerInput implements ControlValueAccessor, OnDestroy, Validator { @Input() set ngxMatColorPicker(value: NgxMatColorPickerComponent) { if (!value) { @@ -119,7 +118,7 @@ export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnD element.blur(); } } - private _disabled: boolean = false; + private _disabled = false; /** The value of the input. */ @Input() @@ -149,11 +148,17 @@ export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnD /** Emits when the value changes (either due to user input or programmatic change). */ _valueChange = new EventEmitter(); - _onTouched = () => {}; + _onTouched = () => { + // Intentionally empty. + }; - private _cvaOnChange: (value: any) => void = () => {}; + private _cvaOnChange: (value: any) => void = () => { + // Intentionally empty. + }; - private _validatorOnChange = () => {}; + private _validatorOnChange = () => { + // Intentionally empty. + }; private _pickerSubscription = Subscription.EMPTY; @@ -163,14 +168,12 @@ export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnD /** Whether the last value set on the input was valid. */ private _lastValueValid = false; - constructor( - private _elementRef: ElementRef, - @Optional() private _formField: MatFormField, - @Optional() - @Inject(MAT_COLOR_FORMATS) - private _colorFormats: MatColorFormats, - private _adapter: ColorAdapter, - ) { + private _elementRef = inject(ElementRef); + private _formField = inject(MatFormField, { optional: true }); + private _colorFormats = inject(MAT_COLOR_FORMATS, { optional: true }); + private _adapter = inject(ColorAdapter); + + constructor() { if (!this._colorFormats) { throw createMissingDateImplError('MAT_COLOR_FORMATS'); } @@ -205,8 +208,6 @@ export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnD return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef; } - ngOnInit() {} - ngOnDestroy(): void { this._pickerSubscription.unsubscribe(); this._valueChange.complete(); @@ -258,7 +259,7 @@ export class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnD /** Formats a value and sets it on the input element. */ private _formatValue(value: Color | null) { - this._elementRef.nativeElement.value = value + this._elementRef.nativeElement.value = this._colorFormats && value ? this._adapter.format(value, this._colorFormats.display.colorInput) : ''; } diff --git a/projects/color-picker/src/lib/components/color-picker/color-picker.component.ts b/projects/color-picker/src/lib/components/color-picker/color-picker.component.ts index 780b5fdc..dc0d2bb1 100644 --- a/projects/color-picker/src/lib/components/color-picker/color-picker.component.ts +++ b/projects/color-picker/src/lib/components/color-picker/color-picker.component.ts @@ -16,12 +16,10 @@ import { ComponentRef, EventEmitter, HostBinding, - Inject, InjectionToken, Input, NgZone, OnDestroy, - Optional, Output, ViewContainerRef, ViewEncapsulation, @@ -30,7 +28,6 @@ import { ChangeDetectorRef, inject, OnInit, - ElementRef, } from '@angular/core'; import { ThemePalette } from '@angular/material/core'; import { MatDialog, MatDialogRef } from '@angular/material/dialog'; @@ -70,7 +67,6 @@ export const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = { exportAs: 'ngxMatColorPickerContent', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, - inputs: ['color'], imports: [NgxMatColorPaletteComponent], }) export class NgxMatColorPickerContentComponent implements OnInit { @@ -78,7 +74,8 @@ export class NgxMatColorPickerContentComponent implements OnInit { _palette = viewChild(NgxMatColorPaletteComponent); picker: NgxMatColorPickerComponent | null = null; - color: ThemePalette; + + @Input() color: ThemePalette; _isLeaving = false; _panelEnterClass: 'enter-dropdown' | 'enter-dialog' | null = null; @@ -128,9 +125,7 @@ export class NgxMatColorPickerContentComponent implements OnInit { providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER], }) export class NgxMatColorPickerComponent implements OnDestroy { - @Input() id: string = `ngx-mat-color-picker-${Math.floor(Math.random() * 1000000)}`; - - private _scrollStrategy: () => ScrollStrategy; + @Input() id = `ngx-mat-color-picker-${Math.floor(Math.random() * 1000000)}`; /** Emits when the datepicker has been opened. */ @Output('opened') openedStream: EventEmitter = new EventEmitter(); @@ -151,7 +146,7 @@ export class NgxMatColorPickerComponent implements OnDestroy { this._disabledChange.next(newValue); } } - private _disabled: boolean = false; + private _disabled = false; @Input() get touchUi(): boolean { @@ -168,7 +163,10 @@ export class NgxMatColorPickerComponent implements OnDestroy { return this._opened; } set opened(value: boolean) { - value ? this.open() : this.close(); + if (value) + this.open(); + else + this.close(); } private _opened = false; @@ -237,18 +235,14 @@ export class NgxMatColorPickerComponent implements OnDestroy { /** Whether an animation is currently in progress. */ private _isAnimating = false; - constructor( - private _dialog: MatDialog, - private _overlay: Overlay, - private _zone: NgZone, - private _adapter: ColorAdapter, - @Optional() private _dir: Directionality, - @Inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY) scrollStrategy: any, - @Optional() @Inject(DOCUMENT) private _document: any, - private _viewContainerRef: ViewContainerRef, - ) { - this._scrollStrategy = scrollStrategy; - } + private _dialog = inject(MatDialog); + private _overlay = inject(Overlay); + private _zone = inject(NgZone); + private _adapter = inject(ColorAdapter); + private _dir = inject(Directionality, { optional: true }); + private _scrollStrategy = inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY); + private _document = inject(DOCUMENT, { optional: true }); + private _viewContainerRef = inject(ViewContainerRef); ngOnDestroy() { this.close(); @@ -263,7 +257,7 @@ export class NgxMatColorPickerComponent implements OnDestroy { /** Selects the given date */ select(nextVal: Color): void { - let oldValue = this._selected; + const oldValue = this._selected; this._selected = nextVal; if (!this._adapter.sameColor(oldValue!, this._selected)) { this._selectedChanged.next(nextVal); @@ -293,10 +287,14 @@ export class NgxMatColorPickerComponent implements OnDestroy { } if (this._document) { - this._focusedElementBeforeOpen = this._document.activeElement; + this._focusedElementBeforeOpen = this._document.activeElement as HTMLElement | null; } - this.touchUi ? this._openAsDialog() : this._openAsPopup(); + if (this.touchUi) + this._openAsDialog(); + else + this._openAsPopup(); + this._opened = true; this.openedStream.emit(); } @@ -366,7 +364,7 @@ export class NgxMatColorPickerComponent implements OnDestroy { positionStrategy: this._createPopupPositionStrategy(), hasBackdrop: true, backdropClass: 'mat-overlay-transparent-backdrop', - direction: this._dir, + direction: this._dir ?? "ltr", scrollStrategy: this._scrollStrategy(), panelClass: 'mat-colorpicker-popup', }); diff --git a/projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts b/projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts index 6e465b3c..42fe32de 100644 --- a/projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts +++ b/projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts @@ -8,6 +8,7 @@ import { OnDestroy, ViewEncapsulation, effect, + inject, input, untracked, viewChild, @@ -55,14 +56,16 @@ export class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy { set disabled(value: boolean) { this._disabled = value; } - private _disabled: boolean = false; + private _disabled = false; /** Whether ripples on the toggle should be disabled. */ disableRipple = input(); _button = viewChild('button'); - constructor(private _cd: ChangeDetectorRef) { + private _cd = inject(ChangeDetectorRef); + + constructor() { effect(() => { this.picker(); diff --git a/projects/color-picker/src/lib/helpers/color-helpers.ts b/projects/color-picker/src/lib/helpers/color-helpers.ts index 417e6d76..b417c58d 100644 --- a/projects/color-picker/src/lib/helpers/color-helpers.ts +++ b/projects/color-picker/src/lib/helpers/color-helpers.ts @@ -1,10 +1,6 @@ const trimLeft = /^\s+/; const trimRight = /\s+$/; -const tinyCounter = 0; const mathRound = Math.round; -const mathMin = Math.min; -const mathMax = Math.max; -const mathRandom = Math.random; export const NUMERIC_REGEX = /[^0-9]/g; export const MAX_RGB = 255; @@ -56,7 +52,7 @@ export function rgbaToHex( a: number, allow4Char?: boolean, ): string { - var hex = [ + const hex = [ pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), @@ -102,7 +98,7 @@ function parseIntFromHex(val: string) { // Assumes r, g, and b are contained in the set [0, 255] // Returns a 3 or 6 character hex export function rgbToHex(r: number, g: number, b: number, allow3Char?: boolean) { - var hex = [ + const hex = [ pad2(mathRound(r).toString(16)), pad2(mathRound(g).toString(16)), pad2(mathRound(b).toString(16)), @@ -170,7 +166,6 @@ export function stringInputToObject(color: string): { // Just return an object and let the conversion functions handle that. // This way the result will be the same whether the tinycolor is initialized with string or object. let match; - let obj; if ((match = matchers.rgb.exec(color))) { return { r: parseFloat(match[1]), diff --git a/projects/color-picker/src/lib/models/color.model.ts b/projects/color-picker/src/lib/models/color.model.ts index 729b76e3..ba2cc1fa 100644 --- a/projects/color-picker/src/lib/models/color.model.ts +++ b/projects/color-picker/src/lib/models/color.model.ts @@ -60,11 +60,11 @@ export class Color { } public toString(format: ColorInputFormat): string { - let formatSet = !!format; + const formatSet = !!format; let formattedString; - let hasAlpha = this.a < 1 && this.a >= 0; - let needsAlphaFormat = + const hasAlpha = this.a < 1 && this.a >= 0; + const needsAlphaFormat = !formatSet && hasAlpha && (format === 'hex' || diff --git a/projects/color-picker/src/lib/services/color-formats.ts b/projects/color-picker/src/lib/services/color-formats.ts index 27a23a9d..111c63c7 100644 --- a/projects/color-picker/src/lib/services/color-formats.ts +++ b/projects/color-picker/src/lib/services/color-formats.ts @@ -1,11 +1,11 @@ import { InjectionToken } from '@angular/core'; import { ColorInputFormat } from '../models'; -export type MatColorFormats = { +export interface MatColorFormats { display: { - colorInput: ColorInputFormat; + colorInput: ColorInputFormat }; -}; +} export const NGX_MAT_COLOR_FORMATS: MatColorFormats = { display: { From ce1012caf8a6d8d5a17fea37f349b4de953111e3 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Sun, 29 Mar 2026 00:57:56 -0700 Subject: [PATCH 06/25] refactor: solve a few datetime-picker linting errors --- projects/datetime-picker/src/lib/calendar-body.ts | 4 ++-- .../src/lib/date-range-input-parts.ts | 1 - .../datetime-picker/src/lib/date-selection-model.ts | 1 - .../datetime-picker/src/lib/datepicker-actions.ts | 2 +- projects/datetime-picker/src/lib/datepicker-base.ts | 12 ++++++------ .../datetime-picker/src/lib/datepicker-input-base.ts | 6 +++--- .../datetime-picker/src/lib/datepicker-toggle.ts | 2 +- .../src/lib/datetime-picker-input-v2.directive.ts | 2 +- projects/datetime-picker/src/lib/month-view.ts | 12 ++++++------ projects/datetime-picker/src/lib/multi-year-view.ts | 6 +++--- projects/datetime-picker/src/lib/year-view.ts | 8 ++++---- 11 files changed, 27 insertions(+), 29 deletions(-) diff --git a/projects/datetime-picker/src/lib/calendar-body.ts b/projects/datetime-picker/src/lib/calendar-body.ts index bd754040..e8f8f753 100644 --- a/projects/datetime-picker/src/lib/calendar-body.ts +++ b/projects/datetime-picker/src/lib/calendar-body.ts @@ -16,7 +16,7 @@ import { import { take } from 'rxjs/operators'; /** Extra CSS classes that can be associated with a calendar cell. */ -export type NgxMatCalendarCellCssClasses = string | string[] | Set | { [key: string]: any }; +export type NgxMatCalendarCellCssClasses = string | string[] | Set | Record; /** Function that can generate the extra classes that should be added to a calendar cell. */ export type NgxMatCalendarCellClassFunction = ( @@ -67,7 +67,7 @@ export class NgxMatCalendarBody implements OnDestroy, AfterViewChecked * Used to skip the next focus event when rendering the preview range. * We need a flag like this, because some browsers fire focus events asynchronously. */ - private _skipNextFocus: boolean = false; + private _skipNextFocus = false; /** * Used to focus the active cell after change detection has run. diff --git a/projects/datetime-picker/src/lib/date-range-input-parts.ts b/projects/datetime-picker/src/lib/date-range-input-parts.ts index c593d43e..bcab6895 100644 --- a/projects/datetime-picker/src/lib/date-range-input-parts.ts +++ b/projects/datetime-picker/src/lib/date-range-input-parts.ts @@ -103,7 +103,6 @@ abstract class NgxMatDateRangeInputPartBase // itself. Usually we can work around it for the CVA, but there's no API to do it for the // validator. We work around it here by injecting the `NgControl` in `ngOnInit`, after // everything has been resolved. - // tslint:disable-next-line:no-bitwise const ngControl = this._injector.get(NgControl, null, { optional: true, self: true, diff --git a/projects/datetime-picker/src/lib/date-selection-model.ts b/projects/datetime-picker/src/lib/date-selection-model.ts index bab1ee8b..ad477161 100644 --- a/projects/datetime-picker/src/lib/date-selection-model.ts +++ b/projects/datetime-picker/src/lib/date-selection-model.ts @@ -8,7 +8,6 @@ export class NgxDateRange { * Ensures that objects with a `start` and `end` property can't be assigned to a variable that * expects a `DateRange` */ - // tslint:disable-next-line:no-unused-variable private _disableStructuralEquivalency!: never; constructor( diff --git a/projects/datetime-picker/src/lib/datepicker-actions.ts b/projects/datetime-picker/src/lib/datepicker-actions.ts index fe39438c..b81dbcfd 100644 --- a/projects/datetime-picker/src/lib/datepicker-actions.ts +++ b/projects/datetime-picker/src/lib/datepicker-actions.ts @@ -42,7 +42,7 @@ export class NgxMatDatepickerClear { @Input({ transform: booleanAttribute, }) - close: boolean = false; + close = false; _clearSelection() { this._datepicker._clearSelection(); diff --git a/projects/datetime-picker/src/lib/datepicker-base.ts b/projects/datetime-picker/src/lib/datepicker-base.ts index b65c6866..c6796cd9 100644 --- a/projects/datetime-picker/src/lib/datepicker-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-base.ts @@ -160,7 +160,7 @@ export class NgxMatDatepickerContent> endDateAccessibleName: string | null = null; /** Whether the datepicker is above or below the input. */ - _isAbove: boolean = false; + _isAbove = false; /** Current state of the animation. */ _isLeaving = false; @@ -176,7 +176,7 @@ export class NgxMatDatepickerContent> _closeButtonText: string; /** Whether the close button currently has focus. */ - _closeButtonFocused: boolean = false; + _closeButtonFocused = false; /** Portal with projected action buttons. */ _actionsPortal: TemplatePortal | null = null; @@ -497,7 +497,7 @@ export abstract class NgxMatDatepickerBase< } } - public _disabled: boolean = false; + public _disabled = false; /** Preferred position of the datepicker in the X axis. */ readonly xPosition = input('start'); @@ -644,7 +644,7 @@ export abstract class NgxMatDatepickerBase< this._enableMeridian = value; } - public _enableMeridian: boolean = false; + public _enableMeridian = false; /** disable minute */ @Input() @@ -656,7 +656,7 @@ export abstract class NgxMatDatepickerBase< this._disableMinute = value; } - public _disableMinute: boolean = false; + public _disableMinute = false; /** Step second */ @Input() @@ -671,7 +671,7 @@ export abstract class NgxMatDatepickerBase< public _defaultTime: number[] | null = null; /** The id for the datepicker calendar. */ - id: string = `mat-datepicker-${datepickerUid++}`; + id = `mat-datepicker-${datepickerUid++}`; /** The minimum selectable date. */ _getMinDate(): D | null { diff --git a/projects/datetime-picker/src/lib/datepicker-input-base.ts b/projects/datetime-picker/src/lib/datepicker-input-base.ts index b7c02838..e0ba54fb 100644 --- a/projects/datetime-picker/src/lib/datepicker-input-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-input-base.ts @@ -76,7 +76,7 @@ export abstract class NgxMatDatepickerInputBase`. */ readonly dateChange = output>(); @@ -418,7 +418,7 @@ export function dateInputsHaveChanged( ): boolean { const keys = Object.keys(changes); - for (let key of keys) { + for (const key of keys) { const { previousValue, currentValue } = changes[key]; if (adapter.isDateInstance(previousValue) && adapter.isDateInstance(currentValue)) { diff --git a/projects/datetime-picker/src/lib/datepicker-toggle.ts b/projects/datetime-picker/src/lib/datepicker-toggle.ts index be17bbc1..6131cb6e 100644 --- a/projects/datetime-picker/src/lib/datepicker-toggle.ts +++ b/projects/datetime-picker/src/lib/datepicker-toggle.ts @@ -74,7 +74,7 @@ export class NgxMatDatepickerToggle implements AfterContentInit, OnDestroy { set disabled(value: BooleanInput) { this._disabled = coerceBooleanProperty(value); } - private _disabled: boolean = false; + private _disabled = false; /** Whether ripples on the toggle should be disabled. */ disableRipple = input(); diff --git a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts index f5591655..fe3464f9 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts @@ -335,7 +335,7 @@ export class NgxMatDatetimePickerInputV2 const target = event?.target as HTMLInputElement; const parsedDate = this._dateAdapter?.parse(target.value, this._dateFormats!.display.dateInput); this._lastValueValid = this._dateAdapter?.isValid(parsedDate)!; - let date = this._dateAdapter?.getValidDateOrNull(parsedDate); + const date = this._dateAdapter?.getValidDateOrNull(parsedDate); // Update internal value this._value.set(date); diff --git a/projects/datetime-picker/src/lib/month-view.ts b/projects/datetime-picker/src/lib/month-view.ts index dfe1c3d0..c727ba55 100644 --- a/projects/datetime-picker/src/lib/month-view.ts +++ b/projects/datetime-picker/src/lib/month-view.ts @@ -63,7 +63,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro private _rerenderSubscription = Subscription.EMPTY; /** Flag used to filter out space/enter keyup events that originated outside of the view. */ - private _selectionKeyPressed: boolean = false; + private _selectionKeyPressed = false; /** * The date to display in this month view (everything other than the month and year is ignored). @@ -163,13 +163,13 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro _matCalendarBody = viewChild(NgxMatCalendarBody); /** The label for this month (e.g. "January 2017"). */ - _monthLabel: string = ""; + _monthLabel = ""; /** Grid of calendar cells representing the dates of the month. */ _weeks: NgxMatCalendarCell[][] | null = null; /** The number of blank cells in the first row before the 1st of the month. */ - _firstWeekOffset: number = 0; + _firstWeekOffset = 0; /** Start value of the currently-shown date range. */ _rangeStart: number | null = null; @@ -190,7 +190,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro _previewEnd: number | null = null; /** Whether the user is currently selecting a range of dates. */ - _isRange: boolean = false; + _isRange = false; /** The date of the month that today falls on. Null if today is in another month. */ _todayDate: number | null = null; @@ -397,7 +397,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro .getMonthNames('short') [this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase(); - let firstOfMonth = this._dateAdapter.createDate( + const firstOfMonth = this._dateAdapter.createDate( this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), 1, @@ -503,7 +503,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro const longWeekdays = this._dateAdapter.getDayOfWeekNames('long'); // Rotate the labels for days of the week based on the configured first day of the week. - let weekdays = longWeekdays.map((long, i) => { + const weekdays = longWeekdays.map((long, i) => { return { long, narrow: narrowWeekdays[i] }; }); this._weekdays = weekdays.slice(firstDayOfWeek).concat(weekdays.slice(0, firstDayOfWeek)); diff --git a/projects/datetime-picker/src/lib/multi-year-view.ts b/projects/datetime-picker/src/lib/multi-year-view.ts index ff39c5b8..25830faa 100644 --- a/projects/datetime-picker/src/lib/multi-year-view.ts +++ b/projects/datetime-picker/src/lib/multi-year-view.ts @@ -56,7 +56,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { private _rerenderSubscription = Subscription.EMPTY; /** Flag used to filter out space/enter keyup events that originated outside of the view. */ - private _selectionKeyPressed: boolean = false; + private _selectionKeyPressed = false; /** The date to display in this multi-year view (everything other than the year is ignored). */ @Input() @@ -64,7 +64,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { return this._activeDate; } set activeDate(value: D) { - let oldActiveDate = this._activeDate; + const oldActiveDate = this._activeDate; const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today(); @@ -142,7 +142,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { _years: NgxMatCalendarCell[][] | null = null; /** The year that today falls on. */ - _todayYear: number = 0; + _todayYear = 0; /** The year of the selected date. Null if the selected date is null. */ _selectedYear: number | null = null; diff --git a/projects/datetime-picker/src/lib/year-view.ts b/projects/datetime-picker/src/lib/year-view.ts index 5e1a670f..de4cd5d0 100644 --- a/projects/datetime-picker/src/lib/year-view.ts +++ b/projects/datetime-picker/src/lib/year-view.ts @@ -53,7 +53,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { private _rerenderSubscription = Subscription.EMPTY; /** Flag used to filter out space/enter keyup events that originated outside of the view. */ - private _selectionKeyPressed: boolean = false; + private _selectionKeyPressed = false; /** The date to display in this year view (everything other than the year is ignored). */ @Input() @@ -61,7 +61,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return this._activeDate; } set activeDate(value: D) { - let oldActiveDate = this._activeDate; + const oldActiveDate = this._activeDate; const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || this._dateAdapter.today(); @@ -130,7 +130,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { _months: NgxMatCalendarCell[][] | null = null; /** The label for this year (e.g. "2017"). */ - _yearLabel: string = ""; + _yearLabel = ""; /** The month in this year that today falls on. Null if today is in a different year. */ _todayMonth: number | null = null; @@ -293,7 +293,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today()); this._yearLabel = this._dateAdapter.getYearName(this.activeDate); - let monthNames = this._dateAdapter.getMonthNames('short'); + const monthNames = this._dateAdapter.getMonthNames('short'); // First row of months only contains 5 elements so we can fit the year label on the same row. this._months = [ [0, 1, 2, 3], From 400eafd3e567b6da791665c6922b3326926624d6 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Sun, 29 Mar 2026 08:10:02 +0000 Subject: [PATCH 07/25] chore(release): 21.2.6-next.2 [skip ci] ## [21.2.6-next.2](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.6-next.1...v21.2.6-next.2) (2026-03-29) --- package.json | 4 ++-- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9699edc0..f2b80c22 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.6-next.1", + "version": "21.2.6-next.2", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { @@ -73,4 +73,4 @@ "typescript-eslint": "8.50.1", "vitest": "^4.1.2" } -} \ No newline at end of file +} diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index 6da10b26..27a6e4e4 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.6-next.1", + "version": "21.2.6-next.2", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index d8466e3d..6a945a3b 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.6-next.1", + "version": "21.2.6-next.2", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index 7975ab09..b7ea6843 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.6-next.1", + "version": "21.2.6-next.2", "description": "Angular Material File Input", "author": "Felipe B.", "repository": { From 5efb6ef121bf2aaf1d9393fb8f14d622ef981864 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 16:47:24 +0000 Subject: [PATCH 08/25] chore(deps-dev): bump angular-eslint from 21.2.0 to 21.3.1 Bumps [angular-eslint](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/angular-eslint) from 21.2.0 to 21.3.1. - [Release notes](https://github.com/angular-eslint/angular-eslint/releases) - [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/angular-eslint/CHANGELOG.md) - [Commits](https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/angular-eslint) --- updated-dependencies: - dependency-name: angular-eslint dependency-version: 21.3.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- pnpm-lock.yaml | 116 +++++++++++++++++++++++++++---------------------- 2 files changed, 64 insertions(+), 54 deletions(-) diff --git a/package.json b/package.json index f2b80c22..3c832e61 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "@cleyrop-org/semantic-release-backmerge": "^5.2.4", "@eslint/js": "^9.39.2", "@types/node": "^25.5.0", - "angular-eslint": "21.2.0", + "angular-eslint": "21.3.1", "eslint": "^9.39.2", "jsdom": "^29.0.1", "ng-packagr": "^21.2.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0ced8bb..b2cdb5ab 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -67,8 +67,8 @@ importers: specifier: ^25.5.0 version: 25.5.0 angular-eslint: - specifier: 21.2.0 - version: 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) + specifier: 21.3.1 + version: 21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) eslint: specifier: ^9.39.2 version: 9.39.4 @@ -265,41 +265,48 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '*' - '@angular-eslint/bundled-angular-compiler@21.2.0': - resolution: {integrity: sha512-J0DWL+j6t9ItFIyIADvzHGqwDA1qfVJ9bx+oTmJ/Hlo7cUpIRoXpcTXpug0CEEABFH0RfDu6PDG2b0FoZ1+7bg==} + '@angular-eslint/builder@21.3.1': + resolution: {integrity: sha512-1f1Lyp5e7OH6txiV224HaY3G1uRCj91OSKq7hT2Vw9NRw6zWFc1anBpDeLVjpL9ptUxzUGIQR5jEV54hOPayoQ==} + peerDependencies: + '@angular/cli': '>= 21.0.0 < 22.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '*' - '@angular-eslint/eslint-plugin-template@21.2.0': - resolution: {integrity: sha512-lJ13Dj0DjR6YiceQR0sRbyWzSzOQ6uZPwK9CJUF3wuZjYAUvL1D61zaU9QrVLtf89NVOxv+dYZHDdu3IDeIqbA==} + '@angular-eslint/bundled-angular-compiler@21.3.1': + resolution: {integrity: sha512-jjbnJPUXQeQBJ8RM+ahlbt4GH2emVN8JvG3AhFbPci1FrqXi9cOOfkbwLmvpoyTli4LF8gy7g4ctFqnlRgqryw==} + + '@angular-eslint/eslint-plugin-template@21.3.1': + resolution: {integrity: sha512-ndPWJodkcEOu2PVUxlUwyz4D2u3r9KO7veWmStVNOLeNrICJA+nQvrz2BWCu0l48rO0K5ezsy0JFcQDVwE/5mw==} peerDependencies: - '@angular-eslint/template-parser': 21.2.0 + '@angular-eslint/template-parser': 21.3.1 '@typescript-eslint/types': ^7.11.0 || ^8.0.0 '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/eslint-plugin@21.2.0': - resolution: {integrity: sha512-X2Qn2viDsjm91CEMxNrxDH3qkKpp6un0C1F1BW2p/m9J4AUVfOcXwWz9UpHFSHTRQ+YlTJbiH1ZwwAPeKhFaxA==} + '@angular-eslint/eslint-plugin@21.3.1': + resolution: {integrity: sha512-08NNTxwawRLTWPLl8dg1BnXMwimx93y4wMEwx2aWQpJbIt4pmNvwJzd+NgoD/Ag2VdLS/gOMadhJH5fgaYKsPQ==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/schematics@21.2.0': - resolution: {integrity: sha512-WtT4fPKIUQ/hswy+l2GF/rKOdD+42L3fUzzcwRzNutQbe2tU9SimoSOAsay/ylWEuhIOQTs7ysPB8fUgFQoLpA==} + '@angular-eslint/schematics@21.3.1': + resolution: {integrity: sha512-1U2u4ZsZvwT30aXRLsIJf6tULIiioo9BtASNsldpYecU3/m/1+F61lCYG79qt7YWbif9KABPYZlFTJUFGN8HWA==} peerDependencies: '@angular/cli': '>= 21.0.0 < 22.0.0' - '@angular-eslint/template-parser@21.2.0': - resolution: {integrity: sha512-TCb3qYOC/uXKZCo56cJ6N9sHeWdFhyVqrbbYfFjTi09081T6jllgHDZL5Ms7gOMNY8KywWGGbhxwvzeA0RwTgA==} + '@angular-eslint/template-parser@21.3.1': + resolution: {integrity: sha512-moERVCTekQKOvR8RMuEOtWSO3VS1qrzA3keI1dPto/JVB8Nqp9w3R5ZpEoXHzh4zgEryosxmPgdi6UczJe2ouQ==} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' - '@angular-eslint/utils@21.2.0': - resolution: {integrity: sha512-E19/hkuvHoNFvctBkmEiGWpy2bbC6cgbr3GNVrn2nGtbI4jnwnDFCGHv50I4LBfvj0PA9E6TWe73ejJ5qoMJWQ==} + '@angular-eslint/utils@21.3.1': + resolution: {integrity: sha512-Q3SGA1/36phZhmsp1mYrKzp/jcmqofRr861MYn46FaWIKSYXBYRzl+H3FIJKBu5CE36Bggu6hbNpwGPuUp+MCg==} peerDependencies: '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' '@angular/build@21.2.5': @@ -2081,11 +2088,11 @@ packages: resolution: {integrity: sha512-Rf7xmeuIo7nb6S4mp4abW2faW8DauZyE2faBIKFaUfP3wnpOvNSbiI5AwVhqBNj0jPgBWEvhyCu0sLjN2q77Rg==} engines: {node: '>= 14.0.0'} - angular-eslint@21.2.0: - resolution: {integrity: sha512-pERqqHIMwD34UT0FoHSNTt4V332vHiAzgkY0rgdUaqSamS94IzbF02EfFxygr53UogQQOXhpLbSSDMOyovB3TA==} + angular-eslint@21.3.1: + resolution: {integrity: sha512-VGQWTyuPAEO/AnZuqHxGBJMYSiZ0tbrHx/OgPCRTKHfbrFU4x+zivS84h9UWoDpDtius1RyD+ZReFjTAEWptiA==} peerDependencies: '@angular/cli': '>= 21.0.0 < 22.0.0' - eslint: ^8.57.0 || ^9.0.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '*' typescript-eslint: ^8.0.0 @@ -3967,11 +3974,6 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} - engines: {node: '>=10'} - hasBin: true - semver@7.7.4: resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} @@ -4745,13 +4747,23 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-eslint/bundled-angular-compiler@21.2.0': {} + '@angular-eslint/builder@21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@angular-devkit/architect': 0.2102.5(chokidar@5.0.0) + '@angular-devkit/core': 21.2.5(chokidar@5.0.0) + '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - chokidar + + '@angular-eslint/bundled-angular-compiler@21.3.1': {} - '@angular-eslint/eslint-plugin-template@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + '@angular-eslint/eslint-plugin-template@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.2.0 - '@angular-eslint/template-parser': 21.2.0(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/bundled-angular-compiler': 21.3.1 + '@angular-eslint/template-parser': 21.3.1(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/types': 8.57.2 '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) aria-query: 5.3.2 @@ -4759,24 +4771,24 @@ snapshots: eslint: 9.39.4 typescript: 5.9.3 - '@angular-eslint/eslint-plugin@21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + '@angular-eslint/eslint-plugin@21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.2.0 - '@angular-eslint/utils': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/bundled-angular-compiler': 21.3.1 + '@angular-eslint/utils': 21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 - '@angular-eslint/schematics@21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': + '@angular-eslint/schematics@21.3.1(@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@angular-devkit/core': 21.2.5(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.5(chokidar@5.0.0) - '@angular-eslint/eslint-plugin': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/eslint-plugin-template': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin-template': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) ignore: 7.0.5 - semver: 7.7.3 + semver: 7.7.4 strip-json-comments: 3.1.1 transitivePeerDependencies: - '@angular-eslint/template-parser' @@ -4786,16 +4798,16 @@ snapshots: - eslint - typescript - '@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3)': + '@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/bundled-angular-compiler': 21.3.1 eslint: 9.39.4 eslint-scope: 9.1.2 typescript: 5.9.3 - '@angular-eslint/utils@21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + '@angular-eslint/utils@21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@angular-eslint/bundled-angular-compiler': 21.2.0 + '@angular-eslint/bundled-angular-compiler': 21.3.1 '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 typescript: 5.9.3 @@ -6210,8 +6222,8 @@ snapshots: '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) + '@typescript-eslint/types': 8.57.2 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: @@ -6433,15 +6445,15 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 - angular-eslint@21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3): + angular-eslint@21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3): dependencies: '@angular-devkit/core': 21.2.5(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.5(chokidar@5.0.0) - '@angular-eslint/builder': 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/eslint-plugin': 21.2.0(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/eslint-plugin-template': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/schematics': 21.2.0(@angular-eslint/template-parser@21.2.0(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) - '@angular-eslint/template-parser': 21.2.0(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/builder': 21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin': 21.3.1(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/eslint-plugin-template': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/schematics': 21.3.1(@angular-eslint/template-parser@21.3.1(eslint@9.39.4)(typescript@5.9.3))(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(@typescript-eslint/types@8.57.2)(@typescript-eslint/utils@8.57.2(eslint@9.39.4)(typescript@5.9.3))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) + '@angular-eslint/template-parser': 21.3.1(eslint@9.39.4)(typescript@5.9.3) '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) '@typescript-eslint/types': 8.57.2 '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) @@ -8445,8 +8457,6 @@ snapshots: semver@6.3.1: {} - semver@7.7.3: {} - semver@7.7.4: {} send@1.2.1: From 82c8a2c6c94ca8be11dc4d2e72aaac92824a37a3 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 31 Mar 2026 02:02:46 +0000 Subject: [PATCH 09/25] chore(release): 21.2.6-next.3 [skip ci] ## [21.2.6-next.3](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.6-next.2...v21.2.6-next.3) (2026-03-31) --- package.json | 2 +- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 3c832e61..982ec35e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.6-next.2", + "version": "21.2.6-next.3", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index 27a6e4e4..02aa0fe6 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.6-next.2", + "version": "21.2.6-next.3", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index 6a945a3b..4c4e71a3 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.6-next.2", + "version": "21.2.6-next.3", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index b7ea6843..e7ab59ef 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.6-next.2", + "version": "21.2.6-next.3", "description": "Angular Material File Input", "author": "Felipe B.", "repository": { From e12d64dadec4a34119b10d43ced10af235bfe287 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 02:03:37 +0000 Subject: [PATCH 10/25] chore(deps-dev): bump @angular-eslint/builder from 21.2.0 to 21.3.1 Bumps [@angular-eslint/builder](https://github.com/angular-eslint/angular-eslint/tree/HEAD/packages/builder) from 21.2.0 to 21.3.1. - [Release notes](https://github.com/angular-eslint/angular-eslint/releases) - [Changelog](https://github.com/angular-eslint/angular-eslint/blob/main/packages/builder/CHANGELOG.md) - [Commits](https://github.com/angular-eslint/angular-eslint/commits/v21.3.1/packages/builder) --- updated-dependencies: - dependency-name: "@angular-eslint/builder" dependency-version: 21.3.1 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- pnpm-lock.yaml | 21 ++------------------- 2 files changed, 3 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 982ec35e..833d2665 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ }, "devDependencies": { "@angular/build": "^21.2.5", - "@angular-eslint/builder": "21.2.0", + "@angular-eslint/builder": "21.3.1", "@angular/cdk": "^21.1.5", "@angular/cli": "^21.2.5", "@angular/compiler-cli": "^21.1.5", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b2cdb5ab..5253f60f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,8 +43,8 @@ importers: version: 2.8.1 devDependencies: '@angular-eslint/builder': - specifier: 21.2.0 - version: 21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) + specifier: 21.3.1 + version: 21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3) '@angular/build': specifier: ^21.2.5 version: 21.2.5(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(@angular/compiler@21.2.6)(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(@angular/platform-browser@21.2.6(@angular/common@21.2.6(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2))(rxjs@7.8.2))(@angular/core@21.2.6(@angular/compiler@21.2.6)(rxjs@7.8.2)))(@emnapi/core@1.9.1)(@emnapi/runtime@1.9.1)(@types/node@25.5.0)(chokidar@5.0.0)(less@4.6.4)(ng-packagr@21.2.2(@angular/compiler-cli@21.2.6(@angular/compiler@21.2.6)(typescript@5.9.3))(tslib@2.8.1)(typescript@5.9.3))(postcss@8.5.8)(tslib@2.8.1)(typescript@5.9.3)(vitest@4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))) @@ -258,13 +258,6 @@ packages: resolution: {integrity: sha512-gEg84eipTX6lcpNTDVUXBBwp0vs3rXM319Qom+sCLOKBGyqE0mvb1RM1WwfNcyOqeSMQC/vLUwRKqnP0wg1UDg==} engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0, npm: ^6.11.0 || ^7.5.6 || >=8.0.0, yarn: '>= 1.13.0'} - '@angular-eslint/builder@21.2.0': - resolution: {integrity: sha512-wcp3J9cbrDwSeI/o1D/DSvMQa8zpKjc5WhRGTx33omhWijCfiVNEAiBLWiEx5Sb/dWcoX8yFNWY5jSgFVy9Sjw==} - peerDependencies: - '@angular/cli': '>= 21.0.0 < 22.0.0' - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - '@angular-eslint/builder@21.3.1': resolution: {integrity: sha512-1f1Lyp5e7OH6txiV224HaY3G1uRCj91OSKq7hT2Vw9NRw6zWFc1anBpDeLVjpL9ptUxzUGIQR5jEV54hOPayoQ==} peerDependencies: @@ -4737,16 +4730,6 @@ snapshots: transitivePeerDependencies: - chokidar - '@angular-eslint/builder@21.2.0(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': - dependencies: - '@angular-devkit/architect': 0.2102.5(chokidar@5.0.0) - '@angular-devkit/core': 21.2.5(chokidar@5.0.0) - '@angular/cli': 21.2.5(@types/node@25.5.0)(chokidar@5.0.0) - eslint: 9.39.4 - typescript: 5.9.3 - transitivePeerDependencies: - - chokidar - '@angular-eslint/builder@21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@angular-devkit/architect': 0.2102.5(chokidar@5.0.0) From 6703eac376fad5dae1b0411a648c71395da1b45f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 31 Mar 2026 02:05:22 +0000 Subject: [PATCH 11/25] chore(release): 21.2.6-next.4 [skip ci] ## [21.2.6-next.4](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.6-next.3...v21.2.6-next.4) (2026-03-31) --- package.json | 2 +- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 833d2665..6eccc724 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.6-next.3", + "version": "21.2.6-next.4", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index 02aa0fe6..d4422e23 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.6-next.3", + "version": "21.2.6-next.4", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index 4c4e71a3..11593390 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.6-next.3", + "version": "21.2.6-next.4", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index e7ab59ef..47648c58 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.6-next.3", + "version": "21.2.6-next.4", "description": "Angular Material File Input", "author": "Felipe B.", "repository": { From 6de3d22ce27a68a3d59d0a5468793a33a33c1db4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 31 Mar 2026 02:08:38 +0000 Subject: [PATCH 12/25] chore(deps-dev): bump typescript-eslint from 8.50.1 to 8.57.2 Bumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.50.1 to 8.57.2. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.57.2/packages/typescript-eslint) --- updated-dependencies: - dependency-name: typescript-eslint dependency-version: 8.57.2 dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- package.json | 2 +- pnpm-lock.yaml | 237 +++++++++++++++++++++++-------------------------- 2 files changed, 112 insertions(+), 127 deletions(-) diff --git a/package.json b/package.json index 6eccc724..a925664f 100644 --- a/package.json +++ b/package.json @@ -70,7 +70,7 @@ "ng-packagr": "^21.2.2", "ts-node": "~10.9.2", "typescript": "~5.9.2", - "typescript-eslint": "8.50.1", + "typescript-eslint": "8.58.0", "vitest": "^4.1.2" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5253f60f..13b84f5c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,7 +68,7 @@ importers: version: 25.5.0 angular-eslint: specifier: 21.3.1 - version: 21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) + version: 21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.58.0(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3) eslint: specifier: ^9.39.2 version: 9.39.4 @@ -85,8 +85,8 @@ importers: specifier: ~5.9.2 version: 5.9.3 typescript-eslint: - specifier: 8.50.1 - version: 8.50.1(eslint@9.39.4)(typescript@5.9.3) + specifier: 8.58.0 + version: 8.58.0(eslint@9.39.4)(typescript@5.9.3) vitest: specifier: ^4.1.2 version: 4.1.2(@types/node@25.5.0)(jsdom@29.0.1)(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3)) @@ -1895,26 +1895,20 @@ packages: '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@typescript-eslint/eslint-plugin@8.50.1': - resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.1 - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/parser@8.50.1': - resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/parser': ^8.58.0 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.50.1': - resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/project-service@8.57.2': resolution: {integrity: sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==} @@ -1922,19 +1916,19 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/scope-manager@8.50.1': - resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@8.57.2': resolution: {integrity: sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.50.1': - resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/tsconfig-utils@8.57.2': resolution: {integrity: sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==} @@ -1942,26 +1936,26 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.1': - resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/types@8.50.1': - resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@8.57.2': resolution: {integrity: sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.50.1': - resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' '@typescript-eslint/typescript-estree@8.57.2': resolution: {integrity: sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==} @@ -1969,12 +1963,11 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.50.1': - resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@8.57.2': resolution: {integrity: sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==} @@ -1983,14 +1976,21 @@ packages: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/visitor-keys@8.50.1': - resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@8.57.2': resolution: {integrity: sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + '@vitejs/plugin-basic-ssl@2.1.4': resolution: {integrity: sha512-HXciTXN/sDBYWgeAD4V4s0DN0g72x5mlxQhHxtYu3Tt8BLa6MzcJZUyDVFCdtjNs3bfENVHVzOsmooTVuNgAAw==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -2179,9 +2179,6 @@ packages: brace-expansion@1.1.13: resolution: {integrity: sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==} - brace-expansion@2.0.3: - resolution: {integrity: sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==} - brace-expansion@5.0.5: resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} engines: {node: 18 || 20 || >=22} @@ -3318,17 +3315,13 @@ packages: resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} engines: {node: '>=18'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -4299,12 +4292,12 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typescript-eslint@8.50.1: - resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' typescript@5.9.3: resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} @@ -6149,7 +6142,7 @@ snapshots: '@tufjs/models@4.1.0': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 10.2.4 + minimatch: 10.2.5 '@tybys/wasm-util@0.10.1': dependencies: @@ -6175,14 +6168,14 @@ snapshots: '@types/normalize-package-data@2.4.4': {} - '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.1(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/parser': 8.58.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 eslint: 9.39.4 ignore: 7.0.5 natural-compare: 1.4.0 @@ -6191,59 +6184,59 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/parser@8.58.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.1 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3 eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.57.2(typescript@5.9.3)': + '@typescript-eslint/project-service@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.57.2(typescript@5.9.3) - '@typescript-eslint/types': 8.57.2 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3 typescript: 5.9.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.50.1': - dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 - '@typescript-eslint/scope-manager@8.57.2': dependencies: '@typescript-eslint/types': 8.57.2 '@typescript-eslint/visitor-keys': 8.57.2 - '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - typescript: 5.9.3 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 '@typescript-eslint/tsconfig-utils@8.57.2(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/type-utils@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.58.0(eslint@9.39.4)(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.39.4)(typescript@5.9.3) debug: 4.4.3 eslint: 9.39.4 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -6251,24 +6244,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/types@8.50.1': {} - '@typescript-eslint/types@8.57.2': {} - '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/visitor-keys': 8.50.1 - debug: 4.4.3 - minimatch: 9.0.9 - semver: 7.7.4 - tinyglobby: 0.2.15 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color + '@typescript-eslint/types@8.58.0': {} '@typescript-eslint/typescript-estree@8.57.2(typescript@5.9.3)': dependencies: @@ -6277,7 +6255,7 @@ snapshots: '@typescript-eslint/types': 8.57.2 '@typescript-eslint/visitor-keys': 8.57.2 debug: 4.4.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 ts-api-utils: 2.5.0(typescript@5.9.3) @@ -6285,13 +6263,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.50.1(eslint@9.39.4)(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@5.9.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) - '@typescript-eslint/scope-manager': 8.50.1 - '@typescript-eslint/types': 8.50.1 - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - eslint: 9.39.4 + '@typescript-eslint/project-service': 8.58.0(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@5.9.3) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 + debug: 4.4.3 + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.15 + ts-api-utils: 2.5.0(typescript@5.9.3) typescript: 5.9.3 transitivePeerDependencies: - supports-color @@ -6307,16 +6289,27 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.50.1': + '@typescript-eslint/utils@8.58.0(eslint@9.39.4)(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.1 - eslint-visitor-keys: 4.2.1 + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + eslint: 9.39.4 + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color '@typescript-eslint/visitor-keys@8.57.2': dependencies: '@typescript-eslint/types': 8.57.2 eslint-visitor-keys: 5.0.1 + '@typescript-eslint/visitor-keys@8.58.0': + dependencies: + '@typescript-eslint/types': 8.58.0 + eslint-visitor-keys: 5.0.1 + '@vitejs/plugin-basic-ssl@2.1.4(vite@7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3))': dependencies: vite: 7.3.1(@types/node@25.5.0)(less@4.6.4)(sass@1.97.3) @@ -6428,7 +6421,7 @@ snapshots: '@algolia/requester-fetch': 5.48.1 '@algolia/requester-node-http': 5.48.1 - angular-eslint@21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3): + angular-eslint@21.3.1(@angular/cli@21.2.5(@types/node@25.5.0)(chokidar@5.0.0))(chokidar@5.0.0)(eslint@9.39.4)(typescript-eslint@8.58.0(eslint@9.39.4)(typescript@5.9.3))(typescript@5.9.3): dependencies: '@angular-devkit/core': 21.2.5(chokidar@5.0.0) '@angular-devkit/schematics': 21.2.5(chokidar@5.0.0) @@ -6442,7 +6435,7 @@ snapshots: '@typescript-eslint/utils': 8.57.2(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 typescript: 5.9.3 - typescript-eslint: 8.50.1(eslint@9.39.4)(typescript@5.9.3) + typescript-eslint: 8.58.0(eslint@9.39.4)(typescript@5.9.3) transitivePeerDependencies: - chokidar - supports-color @@ -6530,10 +6523,6 @@ snapshots: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.3: - dependencies: - balanced-match: 1.0.2 - brace-expansion@5.0.5: dependencies: balanced-match: 4.0.4 @@ -7263,7 +7252,7 @@ snapshots: glob@13.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 @@ -7364,7 +7353,7 @@ snapshots: ignore-walk@8.0.0: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 ignore@5.3.2: {} @@ -7732,7 +7721,7 @@ snapshots: mimic-function@5.0.1: {} - minimatch@10.2.4: + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -7740,10 +7729,6 @@ snapshots: dependencies: brace-expansion: 1.1.13 - minimatch@9.0.9: - dependencies: - brace-expansion: 2.0.3 - minimist@1.2.8: {} minipass-collect@2.0.1: @@ -8793,12 +8778,12 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typescript-eslint@8.50.1(eslint@9.39.4)(typescript@5.9.3): + typescript-eslint@8.58.0(eslint@9.39.4)(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.1(eslint@9.39.4)(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.1(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@9.39.4)(typescript@5.9.3))(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/parser': 8.58.0(eslint@9.39.4)(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@5.9.3) + '@typescript-eslint/utils': 8.58.0(eslint@9.39.4)(typescript@5.9.3) eslint: 9.39.4 typescript: 5.9.3 transitivePeerDependencies: From f27417a7902e0aa62147dabec4fdda56c2bfed1f Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Tue, 31 Mar 2026 02:10:19 +0000 Subject: [PATCH 13/25] chore(release): 21.2.6-next.5 [skip ci] ## [21.2.6-next.5](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.6-next.4...v21.2.6-next.5) (2026-03-31) --- package.json | 2 +- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index a925664f..6b28591d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.6-next.4", + "version": "21.2.6-next.5", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index d4422e23..09e0fdb5 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.6-next.4", + "version": "21.2.6-next.5", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index 11593390..8f9472ae 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.6-next.4", + "version": "21.2.6-next.5", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index 47648c58..cc19e229 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.6-next.4", + "version": "21.2.6-next.5", "description": "Angular Material File Input", "author": "Felipe B.", "repository": { From 43ad4a509ffce83f0f5f6243eba24e4a3de83131 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 13:00:17 -0700 Subject: [PATCH 14/25] refactor: use imject instead of constructor params in base datepicker --- .../src/lib/datepicker-base.ts | 48 ++++++++----------- 1 file changed, 21 insertions(+), 27 deletions(-) diff --git a/projects/datetime-picker/src/lib/datepicker-base.ts b/projects/datetime-picker/src/lib/datepicker-base.ts index c6796cd9..99402313 100644 --- a/projects/datetime-picker/src/lib/datepicker-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-base.ts @@ -36,14 +36,12 @@ import { ElementRef, EventEmitter, HostBinding, - Inject, InjectionToken, Input, NgZone, OnChanges, OnDestroy, OnInit, - Optional, Output, SimpleChanges, ViewContainerRef, @@ -64,7 +62,6 @@ import { NgxMatCalendar, NgxMatCalendarView } from './calendar'; import { NgxMatCalendarCellClassFunction, NgxMatCalendarUserEvent } from './calendar-body'; import { NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, - NgxMatDateRangeSelectionStrategy, } from './date-range-selection-strategy'; import { NgxDateRange, @@ -220,16 +217,14 @@ export class NgxMatDatepickerContent> _modelTime: D | null = null; - constructor( - private _changeDetectorRef: ChangeDetectorRef, - private _globalModel: NgxMatDateSelectionModel, - private _dateAdapter: DateAdapter, - @Optional() - @Inject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY) - private _rangeSelectionStrategy: NgxMatDateRangeSelectionStrategy, - intl: NgxMatDatepickerIntl, - ) { - this._closeButtonText = intl.closeCalendarLabel; + private _changeDetectorRef = inject(ChangeDetectorRef); + private _globalModel = inject(NgxMatDateSelectionModel); + private _dateAdapter = inject(DateAdapter); + private _rangeSelectionStrategy = inject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true }); + private _intl = inject(NgxMatDatepickerIntl); + + constructor() { + this._closeButtonText = this._intl.closeCalendarLabel; effect(() => { const calendar = this._calendar(); @@ -416,7 +411,6 @@ export abstract class NgxMatDatepickerBase< > implements NgxMatDatepickerPanel, OnDestroy, OnChanges { - private _scrollStrategy: () => ScrollStrategy; private _inputStateChanges = Subscription.EMPTY; private _document = inject(DOCUMENT); @@ -432,7 +426,9 @@ export abstract class NgxMatDatepickerBase< } set startAt(value: D | null) { - this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); + this._startAt = (this._dateAdapter) + ? this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) + : null; } private _startAt: D | null = null; @@ -708,20 +704,18 @@ export abstract class NgxMatDatepickerBase< /** Emits when the datepicker's state changes. */ readonly stateChanges = new Subject(); - constructor( - private _overlay: Overlay, - private _ngZone: NgZone, - private _viewContainerRef: ViewContainerRef, - @Inject(NGX_MAT_DATEPICKER_SCROLL_STRATEGY) scrollStrategy: any, - @Optional() private _dateAdapter: DateAdapter, - @Optional() private _dir: Directionality, - private _model: NgxMatDateSelectionModel, - ) { + private _overlay = inject(Overlay); + private _ngZone = inject(NgZone); + private _viewContainerRef = inject(ViewContainerRef); + private _scrollStrategy = inject(NGX_MAT_DATEPICKER_SCROLL_STRATEGY); + private _dateAdapter = inject(DateAdapter, { optional: true }); + private _dir = inject(Directionality, { optional: true }); + private _model = inject(NgxMatDateSelectionModel); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } - - this._scrollStrategy = scrollStrategy; } ngOnChanges(changes: SimpleChanges) { @@ -915,7 +909,7 @@ export abstract class NgxMatDatepickerBase< isDialog ? 'cdk-overlay-dark-backdrop' : 'mat-overlay-transparent-backdrop', this._backdropHarnessClass, ], - direction: this._dir, + direction: this._dir ?? "ltr", scrollStrategy: isDialog ? this._overlay.scrollStrategies.block() : this._scrollStrategy(), panelClass: `mat-datepicker-${isDialog ? 'dialog' : 'popup'}`, }), From 05aac337c161828531afd88f3c5143771033d8f4 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 14:22:28 -0700 Subject: [PATCH 15/25] refactor: use inject calls for datepicker input components --- .../src/lib/date-range-input-parts.ts | 100 +++++------------- .../src/lib/datepicker-input-base.ts | 53 +++++++--- .../src/lib/datepicker-input.ts | 33 +++--- 3 files changed, 80 insertions(+), 106 deletions(-) diff --git a/projects/datetime-picker/src/lib/date-range-input-parts.ts b/projects/datetime-picker/src/lib/date-range-input-parts.ts index bcab6895..f3a2c3de 100644 --- a/projects/datetime-picker/src/lib/date-range-input-parts.ts +++ b/projects/datetime-picker/src/lib/date-range-input-parts.ts @@ -4,13 +4,11 @@ import { Directive, DoCheck, ElementRef, - Inject, inject, InjectionToken, Injector, Input, OnInit, - Optional, } from '@angular/core'; import { AbstractControl, @@ -24,10 +22,7 @@ import { Validators, } from '@angular/forms'; import { - DateAdapter, ErrorStateMatcher, - MAT_DATE_FORMATS, - MatDateFormats, } from '@angular/material/core'; import { _computeAriaAccessibleName } from './aria-accessible-name'; import { NgxDateRange, NgxDateSelectionModelChange } from './date-selection-model'; @@ -55,7 +50,7 @@ export interface NgxMatDateRangeInputParent { * to the parts without circular dependencies. */ export const NGX_MAT_DATE_RANGE_INPUT_PARENT = new InjectionToken< - NgxMatDateRangeInputParent + NgxMatDateRangeInputParent >('NGX_MAT_DATE_RANGE_INPUT_PARENT'); /** @@ -82,19 +77,12 @@ abstract class NgxMatDateRangeInputPartBase protected readonly _dir = inject(Directionality, { optional: true }); - constructor( - @Inject(NGX_MAT_DATE_RANGE_INPUT_PARENT) - public _rangeInput: NgxMatDateRangeInputParent, - public override _elementRef: ElementRef, - public _defaultErrorStateMatcher: ErrorStateMatcher, - private _injector: Injector, - @Optional() public _parentForm: NgForm, - @Optional() public _parentFormGroup: FormGroupDirective, - @Optional() dateAdapter: DateAdapter, - @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, - ) { - super(_elementRef, dateAdapter, dateFormats); - } + public override _elementRef = inject(ElementRef); + public _rangeInput = inject(NGX_MAT_DATE_RANGE_INPUT_PARENT); + public _defaultErrorStateMatcher = inject(ErrorStateMatcher); + protected _injector = inject(Injector); + public _parentForm = inject(NgForm, { optional: true }); + public _parentFormGroup = inject(FormGroupDirective, { optional: true }); ngOnInit() { // We need the date input to provide itself as a `ControlValueAccessor` and a `Validator`, while @@ -216,8 +204,8 @@ abstract class NgxMatDateRangeInputPartBase '(keydown)': '_onKeydown($event)', '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null', '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null', - '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()!) : null', - '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()!) : null', + '[attr.min]': '_dateAdapter && _getMinDate() ? _dateAdapter.toIso8601(_getMinDate()!) : null', + '[attr.max]': '_dateAdapter && _getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()!) : null', '(blur)': '_onBlur()', type: 'text', }, @@ -233,6 +221,9 @@ abstract class NgxMatDateRangeInputPartBase export class NgxMatStartDate extends NgxMatDateRangeInputPartBase { /** Validator that checks that the start date isn't after the end date. */ private _startValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => { + if (!this._dateAdapter) + return null; + const start = this._dateAdapter.getValidDateOrNull( this._dateAdapter.deserialize(control.value), ); @@ -242,29 +233,6 @@ export class NgxMatStartDate extends NgxMatDateRangeInputPartBase { : { matStartDateInvalid: { end: end, actual: start } }; }; - constructor( - @Inject(NGX_MAT_DATE_RANGE_INPUT_PARENT) - rangeInput: NgxMatDateRangeInputParent, - elementRef: ElementRef, - defaultErrorStateMatcher: ErrorStateMatcher, - injector: Injector, - @Optional() parentForm: NgForm, - @Optional() parentFormGroup: FormGroupDirective, - @Optional() dateAdapter: DateAdapter, - @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, - ) { - super( - rangeInput, - elementRef, - defaultErrorStateMatcher, - injector, - parentForm, - parentFormGroup, - dateAdapter, - dateFormats, - ); - } - protected _validator = Validators.compose([...super._getValidators(), this._startValidator]); protected _getValueFromModel(modelValue: NgxDateRange | null) { @@ -277,10 +245,13 @@ export class NgxMatStartDate extends NgxMatDateRangeInputPartBase { if (!super._shouldHandleChangeEvent(change)) { return false; } else { + const fnCompare: (ch: NgxDateSelectionModelChange>) => boolean = (this._dateAdapter) + ? ch => !!this._dateAdapter!.compareDate(ch.oldValue!.start, ch.selection!.start) + : _ => false; + return !change.oldValue?.start ? !!change.selection!.start - : !change.selection!.start || - !!this._dateAdapter.compareDate(change.oldValue.start, change.selection!.start); + : !change.selection!.start || fnCompare(change); } } @@ -330,8 +301,8 @@ export class NgxMatStartDate extends NgxMatDateRangeInputPartBase { '(keydown)': '_onKeydown($event)', '[attr.aria-haspopup]': '_rangeInput.rangePicker ? "dialog" : null', '[attr.aria-owns]': '(_rangeInput.rangePicker?.opened && _rangeInput.rangePicker.id) || null', - '[attr.min]': '_getMinDate() ? _dateAdapter.toIso8601(_getMinDate()!) : null', - '[attr.max]': '_getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()!) : null', + '[attr.min]': '_dateAdapter && _getMinDate() ? _dateAdapter.toIso8601(_getMinDate()!) : null', + '[attr.max]': '_dateAdapter && _getMaxDate() ? _dateAdapter.toIso8601(_getMaxDate()!) : null', '(blur)': '_onBlur()', type: 'text', }, @@ -347,6 +318,9 @@ export class NgxMatStartDate extends NgxMatDateRangeInputPartBase { export class NgxMatEndDate extends NgxMatDateRangeInputPartBase { /** Validator that checks that the end date isn't before the start date. */ private _endValidator: ValidatorFn = (control: AbstractControl): ValidationErrors | null => { + if (!this._dateAdapter) + return null; + const end = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(control.value)); const start = this._model ? this._model.selection.start : null; return !end || !start || this._dateAdapter.compareDate(end, start) >= 0 @@ -354,29 +328,6 @@ export class NgxMatEndDate extends NgxMatDateRangeInputPartBase { : { matEndDateInvalid: { start: start, actual: end } }; }; - constructor( - @Inject(NGX_MAT_DATE_RANGE_INPUT_PARENT) - rangeInput: NgxMatDateRangeInputParent, - elementRef: ElementRef, - defaultErrorStateMatcher: ErrorStateMatcher, - injector: Injector, - @Optional() parentForm: NgForm, - @Optional() parentFormGroup: FormGroupDirective, - @Optional() dateAdapter: DateAdapter, - @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, - ) { - super( - rangeInput, - elementRef, - defaultErrorStateMatcher, - injector, - parentForm, - parentFormGroup, - dateAdapter, - dateFormats, - ); - } - protected _validator = Validators.compose([...super._getValidators(), this._endValidator]); protected _getValueFromModel(modelValue: NgxDateRange | null) { @@ -389,10 +340,13 @@ export class NgxMatEndDate extends NgxMatDateRangeInputPartBase { if (!super._shouldHandleChangeEvent(change)) { return false; } else { + const fnCompare: (ch: NgxDateSelectionModelChange>) => boolean = (this._dateAdapter) + ? ch => !!this._dateAdapter!.compareDate(ch.oldValue!.end, ch.selection!.end) + : _ => false; + return !change.oldValue?.end ? !!change.selection!.end - : !change.selection!.end || - !!this._dateAdapter.compareDate(change.oldValue.end, change.selection!.end); + : !change.selection!.end || fnCompare(change); } } diff --git a/projects/datetime-picker/src/lib/datepicker-input-base.ts b/projects/datetime-picker/src/lib/datepicker-input-base.ts index e0ba54fb..5bcf24fc 100644 --- a/projects/datetime-picker/src/lib/datepicker-input-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-input-base.ts @@ -5,12 +5,11 @@ import { AfterViewInit, Directive, ElementRef, - Inject, Input, OnChanges, OnDestroy, - Optional, SimpleChanges, + inject, output, } from '@angular/core'; import { @@ -23,7 +22,6 @@ import { import { DateAdapter, MAT_DATE_FORMATS, - MatDateFormats, ThemePalette, } from '@angular/material/core'; import { Subject, Subscription } from 'rxjs'; @@ -147,6 +145,9 @@ export abstract class NgxMatDatepickerInputBase { + if (!this._dateAdapter) + return null; + const controlValue = this._dateAdapter.getValidDateOrNull( this._dateAdapter.deserialize(control.value), ); @@ -157,6 +158,9 @@ export abstract class NgxMatDatepickerInputBase { + if (!this._dateAdapter) + return null; + const controlValue = this._dateAdapter.getValidDateOrNull( this._dateAdapter.deserialize(control.value), ); @@ -168,6 +172,9 @@ export abstract class NgxMatDatepickerInputBase { + if (!this._dateAdapter) + return null; + const controlValue = this._dateAdapter.getValidDateOrNull( this._dateAdapter.deserialize(control.value), ); @@ -231,13 +238,11 @@ export abstract class NgxMatDatepickerInputBase, - @Optional() public _dateAdapter: DateAdapter, - @Optional() - @Inject(MAT_DATE_FORMATS) - private _dateFormats: MatDateFormats, - ) { + protected _elementRef = inject(ElementRef); + public _dateAdapter = inject(DateAdapter, { optional: true }); + protected _dateFormats = inject(MAT_DATE_FORMATS, { optional: true }); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } @@ -246,7 +251,7 @@ export abstract class NgxMatDatepickerInputBase { + this._localeSubscription = this._dateAdapter.localeChanges.subscribe(() => { this._assignValueProgrammatically(this.value); }); } @@ -256,7 +261,7 @@ export abstract class NgxMatDatepickerInputBase return this._min; } set min(value: D | null) { + if (!this._dateAdapter) { + this._min = null; + return; + } + const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); if (!this._dateAdapter.sameDate(validValue, this._min)) { @@ -104,6 +105,11 @@ export class NgxMatDatepickerInput return this._max; } set max(value: D | null) { + if (!this._dateAdapter) { + this._max = null; + return; + } + const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); if (!this._dateAdapter.sameDate(validValue, this._max)) { @@ -131,15 +137,10 @@ export class NgxMatDatepickerInput /** The combined form control validator for this input. */ protected _validator: ValidatorFn | null; - constructor( - elementRef: ElementRef, - @Optional() dateAdapter: DateAdapter, - @Optional() @Inject(MAT_DATE_FORMATS) dateFormats: MatDateFormats, - @Optional() - @Inject(MAT_FORM_FIELD) - private _formField?: _NgxMatFormFieldPartial, - ) { - super(elementRef, dateAdapter, dateFormats); + private _formField = inject(MAT_FORM_FIELD, { optional: true }); + + constructor() { + super(); this._validator = Validators.compose(super._getValidators()); } From 682d06c2668a1f34a91f4da4e992ccf5b574e22f Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 14:33:09 -0700 Subject: [PATCH 16/25] refactor: use inject calls for datepicker input component --- .../src/lib/date-range-input.ts | 40 +++++++++++-------- 1 file changed, 23 insertions(+), 17 deletions(-) diff --git a/projects/datetime-picker/src/lib/date-range-input.ts b/projects/datetime-picker/src/lib/date-range-input.ts index c848b45f..264d511b 100644 --- a/projects/datetime-picker/src/lib/date-range-input.ts +++ b/projects/datetime-picker/src/lib/date-range-input.ts @@ -7,12 +7,10 @@ import { Component, ContentChild, ElementRef, - Inject, + inject, Input, OnChanges, OnDestroy, - Optional, - Self, SimpleChanges, ViewEncapsulation, } from '@angular/core'; @@ -173,6 +171,11 @@ export class NgxMatDateRangeInput return this._min; } set min(value: D | null) { + if (!this._dateAdapter) { + this._min = null; + return; + } + const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); if (!this._dateAdapter.sameDate(validValue, this._min)) { @@ -188,6 +191,11 @@ export class NgxMatDateRangeInput return this._max; } set max(value: D | null) { + if (!this._dateAdapter) { + this._max = null; + return; + } + const validValue = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); if (!this._dateAdapter.sameDate(validValue, this._max)) { @@ -257,23 +265,21 @@ export class NgxMatDateRangeInput /** Emits when the input's state has changed. */ readonly stateChanges = new Subject(); - constructor( - private _changeDetectorRef: ChangeDetectorRef, - private _elementRef: ElementRef, - @Optional() @Self() control: ControlContainer, - @Optional() private _dateAdapter: DateAdapter, - @Optional() - @Inject(MAT_FORM_FIELD) - private _formField?: _NgxMatFormFieldPartial, - ) { - if (!_dateAdapter) { + private _changeDetectorRef = inject(ChangeDetectorRef); + private _elementRef = inject(ElementRef); + control = inject(ControlContainer, { optional: true, self: true }); + private _dateAdapter = inject(DateAdapter, { optional: true }); + private _formField = inject(MAT_FORM_FIELD, { optional: true }); + + constructor() { + if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } // The datepicker module can be used both with MDC and non-MDC form fields. We have // to conditionally add the MDC input class so that the range picker looks correctly. - if (_formField?._elementRef.nativeElement.classList.contains('mat-mdc-form-field')) { - _elementRef.nativeElement.classList.add( + if (this._formField?._elementRef.nativeElement.classList.contains('mat-mdc-form-field')) { + this._elementRef.nativeElement.classList.add( 'mat-mdc-input-element', 'mat-mdc-form-field-input-control', 'mdc-text-field__input', @@ -281,7 +287,7 @@ export class NgxMatDateRangeInput } // TODO(crisbeto): remove `as any` after #18206 lands. - this.ngControl = control as any; + this.ngControl = this.control as any; } /** @@ -327,7 +333,7 @@ export class NgxMatDateRangeInput } ngOnChanges(changes: SimpleChanges) { - if (dateInputsHaveChanged(changes, this._dateAdapter)) { + if (this._dateAdapter && dateInputsHaveChanged(changes, this._dateAdapter)) { this.stateChanges.next(undefined); } } From 595fd12935d4b0d9967c7a835f583ffbc84d4139 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 14:48:35 -0700 Subject: [PATCH 17/25] refactor: use inject calls for month view --- .../datetime-picker/src/lib/month-view.html | 2 +- .../datetime-picker/src/lib/month-view.ts | 99 ++++++++++++------- 2 files changed, 64 insertions(+), 37 deletions(-) diff --git a/projects/datetime-picker/src/lib/month-view.html b/projects/datetime-picker/src/lib/month-view.html index a17270fa..65bbc198 100644 --- a/projects/datetime-picker/src/lib/month-view.html +++ b/projects/datetime-picker/src/lib/month-view.html @@ -29,7 +29,7 @@ [previewEnd]="_previewEnd" [isRange]="_isRange" [labelMinRequiredCells]="3" - [activeCell]="_dateAdapter.getDate(activeDate) - 1" + [activeCell]="_dateAdapter ? _dateAdapter.getDate(activeDate) - 1 : 0" [startDateAccessibleName]="startDateAccessibleName()" [endDateAccessibleName]="endDateAccessibleName()" (selectedValueChange)="_dateSelected($event)" diff --git a/projects/datetime-picker/src/lib/month-view.ts b/projects/datetime-picker/src/lib/month-view.ts index c727ba55..805ba69e 100644 --- a/projects/datetime-picker/src/lib/month-view.ts +++ b/projects/datetime-picker/src/lib/month-view.ts @@ -18,18 +18,17 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - Inject, Input, OnChanges, OnDestroy, - Optional, SimpleChanges, ViewEncapsulation, + inject, input, output, viewChild, } from '@angular/core'; -import { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core'; +import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; import { Subscription } from 'rxjs'; import { startWith } from 'rxjs/operators'; import { @@ -40,7 +39,6 @@ import { } from './calendar-body'; import { NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, - NgxMatDateRangeSelectionStrategy, } from './date-range-selection-strategy'; import { NgxDateRange } from './date-selection-model'; import { createMissingDateImplError } from './datepicker-errors'; @@ -73,6 +71,9 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro return this._activeDate; } set activeDate(value: D) { + if (!this._dateAdapter) + return; + const oldActiveDate = this._activeDate; const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || @@ -90,7 +91,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro return this._selected; } set selected(value: NgxDateRange | D | null) { - if (value instanceof NgxDateRange) { + if (!this._dateAdapter || value instanceof NgxDateRange) { this._selected = value; } else { this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); @@ -106,6 +107,11 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro return this._minDate; } set minDate(value: D | null) { + if (!this._dateAdapter) { + this._minDate = null; + return; + } + this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _minDate: D | null = null; @@ -116,6 +122,11 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro return this._maxDate; } set maxDate(value: D | null) { + if (!this._dateAdapter) { + this._maxDate = null; + return; + } + this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _maxDate: D | null = null; @@ -198,17 +209,13 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** The names of the weekdays. */ _weekdays: { long: string; narrow: string }[] | null = null; - constructor( - readonly _changeDetectorRef: ChangeDetectorRef, - @Optional() - @Inject(MAT_DATE_FORMATS) - private _dateFormats: MatDateFormats, - @Optional() public _dateAdapter: DateAdapter, - @Optional() private _dir?: Directionality, - @Inject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY) - @Optional() - private _rangeStrategy?: NgxMatDateRangeSelectionStrategy, - ) { + readonly _changeDetectorRef = inject(ChangeDetectorRef); + private _dateFormats = inject(MAT_DATE_FORMATS, { optional: true }); + public _dateAdapter = inject(DateAdapter, { optional: true }); + private _dir = inject(Directionality, { optional: true }); + private _rangeStrategy = inject(NGX_MAT_DATE_RANGE_SELECTION_STRATEGY, { optional: true }); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } @@ -220,6 +227,9 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro } ngAfterContentInit() { + if (!this._dateAdapter) + return; + this._rerenderSubscription = this._dateAdapter.localeChanges .pipe(startWith(null)) .subscribe(() => this._init()); @@ -277,9 +287,10 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro _updateActiveDate(event: NgxMatCalendarUserEvent) { const month = event.value; const oldActiveDate = this._activeDate; - this.activeDate = this._getDateFromDayOfMonth(month); + const dateToAssign = this._getDateFromDayOfMonth(month); - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && dateToAssign && this._dateAdapter.compareDate(oldActiveDate, dateToAssign)) { + this.activeDate = dateToAssign; this.activeDateChange.emit(this._activeDate); } } @@ -295,25 +306,25 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro switch (event.keyCode) { case LEFT_ARROW: - this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? 1 : -1); + this.activeDate = this._dateAdapter?.addCalendarDays(this._activeDate, isRtl ? 1 : -1); break; case RIGHT_ARROW: - this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, isRtl ? -1 : 1); + this.activeDate = this._dateAdapter?.addCalendarDays(this._activeDate, isRtl ? -1 : 1); break; case UP_ARROW: - this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, -7); + this.activeDate = this._dateAdapter?.addCalendarDays(this._activeDate, -7); break; case DOWN_ARROW: - this.activeDate = this._dateAdapter.addCalendarDays(this._activeDate, 7); + this.activeDate = this._dateAdapter?.addCalendarDays(this._activeDate, 7); break; case HOME: - this.activeDate = this._dateAdapter.addCalendarDays( + this.activeDate = this._dateAdapter?.addCalendarDays( this._activeDate, 1 - this._dateAdapter.getDate(this._activeDate), ); break; case END: - this.activeDate = this._dateAdapter.addCalendarDays( + this.activeDate = this._dateAdapter?.addCalendarDays( this._activeDate, this._dateAdapter.getNumDaysInMonth(this._activeDate) - this._dateAdapter.getDate(this._activeDate), @@ -321,13 +332,13 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro break; case PAGE_UP: this.activeDate = event.altKey - ? this._dateAdapter.addCalendarYears(this._activeDate, -1) - : this._dateAdapter.addCalendarMonths(this._activeDate, -1); + ? this._dateAdapter?.addCalendarYears(this._activeDate, -1) + : this._dateAdapter?.addCalendarMonths(this._activeDate, -1); break; case PAGE_DOWN: this.activeDate = event.altKey - ? this._dateAdapter.addCalendarYears(this._activeDate, 1) - : this._dateAdapter.addCalendarMonths(this._activeDate, 1); + ? this._dateAdapter?.addCalendarYears(this._activeDate, 1) + : this._dateAdapter?.addCalendarMonths(this._activeDate, 1); break; case ENTER: case SPACE: @@ -363,7 +374,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro return; } - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { this.activeDateChange.emit(this.activeDate); this._focusActiveCellAfterViewChecked(); @@ -376,7 +387,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Handles keyup events on the calendar body when calendar is in month view. */ _handleCalendarBodyKeyup(event: KeyboardEvent): void { if (event.keyCode === SPACE || event.keyCode === ENTER) { - if (this._selectionKeyPressed && this._canSelect(this._activeDate)) { + if (this._dateAdapter && this._selectionKeyPressed && this._canSelect(this._activeDate)) { this._dateSelected({ value: this._dateAdapter.getDate(this._activeDate), event, @@ -389,13 +400,14 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Initializes this month view. */ _init() { + if (!this._dateAdapter || !this._dateFormats) + return; + this._setRanges(this.selected); this._todayDate = this._getCellCompareValue(this._dateAdapter.today()); this._monthLabel = this._dateFormats.display.monthLabel ? this._dateAdapter.format(this.activeDate, this._dateFormats.display.monthLabel) - : this._dateAdapter - .getMonthNames('short') - [this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase(); + : this._dateAdapter.getMonthNames('short')[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase(); const firstOfMonth = this._dateAdapter.createDate( this._dateAdapter.getYear(this.activeDate), @@ -488,7 +500,10 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro * Takes a day of the month and returns a new date in the same month and year as the currently * active date. The returned date will have the same day of the month as the argument date. */ - private _getDateFromDayOfMonth(dayOfMonth: number): D { + private _getDateFromDayOfMonth(dayOfMonth: number): D | null { + if (!this._dateAdapter) + return null; + return this._dateAdapter.createDate( this._dateAdapter.getYear(this.activeDate), this._dateAdapter.getMonth(this.activeDate), @@ -498,6 +513,9 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Initializes the weekdays. */ private _initWeekdays() { + if (!this._dateAdapter) + return; + const firstDayOfWeek = this._dateAdapter.getFirstDayOfWeek(); const narrowWeekdays = this._dateAdapter.getDayOfWeekNames('narrow'); const longWeekdays = this._dateAdapter.getDayOfWeekNames('long'); @@ -511,6 +529,9 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Creates MatCalendarCells for the dates in this month. */ private _createWeekCells() { + if (!this._dateAdapter || !this._dateFormats) + return; + const daysInMonth = this._dateAdapter.getNumDaysInMonth(this.activeDate); const dateNames = this._dateAdapter.getDateNames(); this._weeks = [[]]; @@ -544,6 +565,9 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Date filter for the month */ private _shouldEnableDate(date: D): boolean { + if (!this._dateAdapter) + return false; + return ( !!date && (!this.minDate || this._dateAdapter.compareDate(date, this.minDate) >= 0) && @@ -557,13 +581,16 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro * Returns null if the given Date is in another month. */ private _getDateInCurrentMonth(date: D | null): number | null { - return date && this._hasSameMonthAndYear(date, this.activeDate) + return this._dateAdapter && date && this._hasSameMonthAndYear(date, this.activeDate) ? this._dateAdapter.getDate(date) : null; } /** Checks whether the 2 dates are non-null and fall within the same month of the same year. */ private _hasSameMonthAndYear(d1: D | null, d2: D | null): boolean { + if (!this._dateAdapter) + return false; + return !!( d1 && d2 && @@ -574,7 +601,7 @@ export class NgxMatMonthView implements AfterContentInit, OnChanges, OnDestro /** Gets the value that will be used to one cell to another. */ private _getCellCompareValue(date: D | undefined | null): number | null { - if (date) { + if (this._dateAdapter && date) { // We use the time since the Unix epoch to compare dates in this view, rather than the // cell values, because we need to support ranges that span across multiple months/years. const year = this._dateAdapter.getYear(date); From 2a5e01a18c02e75a1ce72ee1f4c4f4b0852a98ae Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 15:56:40 -0700 Subject: [PATCH 18/25] refactor: use inject calls for year view --- .../datetime-picker/src/lib/year-view.html | 2 +- projects/datetime-picker/src/lib/year-view.ts | 104 ++++++++++++------ 2 files changed, 69 insertions(+), 37 deletions(-) diff --git a/projects/datetime-picker/src/lib/year-view.html b/projects/datetime-picker/src/lib/year-view.html index 6311cc23..ecdf5e81 100644 --- a/projects/datetime-picker/src/lib/year-view.html +++ b/projects/datetime-picker/src/lib/year-view.html @@ -14,7 +14,7 @@ [labelMinRequiredCells]="2" [numCols]="4" [cellAspectRatio]="4 / 7" - [activeCell]="_dateAdapter.getMonth(activeDate)" + [activeCell]="_dateAdapter ? _dateAdapter.getMonth(activeDate) : 0" (selectedValueChange)="_monthSelected($event)" (activeDateChange)="_updateActiveDate($event)" (keyup)="_handleCalendarBodyKeyup($event)" diff --git a/projects/datetime-picker/src/lib/year-view.ts b/projects/datetime-picker/src/lib/year-view.ts index de4cd5d0..5381b0cb 100644 --- a/projects/datetime-picker/src/lib/year-view.ts +++ b/projects/datetime-picker/src/lib/year-view.ts @@ -16,16 +16,15 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - Inject, Input, OnDestroy, - Optional, ViewEncapsulation, + inject, input, output, viewChild, } from '@angular/core'; -import { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core'; +import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; import { Subscription } from 'rxjs'; import { startWith } from 'rxjs/operators'; import { @@ -61,6 +60,9 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return this._activeDate; } set activeDate(value: D) { + if (!this._dateAdapter) + return; + const oldActiveDate = this._activeDate; const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || @@ -78,7 +80,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return this._selected; } set selected(value: NgxDateRange | D | null) { - if (value instanceof NgxDateRange) { + if (!this._dateAdapter || value instanceof NgxDateRange) { this._selected = value; } else { this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); @@ -94,6 +96,11 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return this._minDate; } set minDate(value: D | null) { + if (!this._dateAdapter) { + this._minDate = null; + return; + } + this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _minDate: D | null = null; @@ -104,6 +111,11 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return this._maxDate; } set maxDate(value: D | null) { + if (!this._dateAdapter) { + this._maxDate = null; + return; + } + this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _maxDate: D | null = null; @@ -141,14 +153,12 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { */ _selectedMonth: number | null = null; - constructor( - readonly _changeDetectorRef: ChangeDetectorRef, - @Optional() - @Inject(MAT_DATE_FORMATS) - private _dateFormats: MatDateFormats, - @Optional() public _dateAdapter: DateAdapter, - @Optional() private _dir?: Directionality, - ) { + readonly _changeDetectorRef = inject(ChangeDetectorRef); + private _dateFormats = inject(MAT_DATE_FORMATS, { optional: true }); + public _dateAdapter = inject(DateAdapter, { optional: true }); + private _dir = inject(Directionality, { optional: true }); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } @@ -160,6 +170,9 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { } ngAfterContentInit() { + if (!this._dateAdapter) + return; + this._rerenderSubscription = this._dateAdapter.localeChanges .pipe(startWith(null)) .subscribe(() => this._init()); @@ -171,6 +184,9 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { /** Handles when a new month is selected. */ _monthSelected(event: NgxMatCalendarUserEvent) { + if (!this._dateAdapter) + return; + const month = event.value; const selectedMonth = this._dateAdapter.createDate( @@ -181,7 +197,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { this.monthSelected.emit(selectedMonth); const selectedDate = this._getDateFromMonth(month); - this.selectedChange.emit(selectedDate); + this.selectedChange.emit(selectedDate!); } /** @@ -197,10 +213,10 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { _updateActiveDate(event: NgxMatCalendarUserEvent) { const month = event.value; const oldActiveDate = this._activeDate; + const dateToUse = this._getDateFromMonth(month); - this.activeDate = this._getDateFromMonth(month); - - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && dateToUse && this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + this.activeDate = dateToUse; this.activeDateChange.emit(this.activeDate); } } @@ -216,37 +232,37 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { switch (event.keyCode) { case LEFT_ARROW: - this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? 1 : -1); + this.activeDate = this._dateAdapter?.addCalendarMonths(this._activeDate, isRtl ? 1 : -1); break; case RIGHT_ARROW: - this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, isRtl ? -1 : 1); + this.activeDate = this._dateAdapter?.addCalendarMonths(this._activeDate, isRtl ? -1 : 1); break; case UP_ARROW: - this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, -4); + this.activeDate = this._dateAdapter?.addCalendarMonths(this._activeDate, -4); break; case DOWN_ARROW: - this.activeDate = this._dateAdapter.addCalendarMonths(this._activeDate, 4); + this.activeDate = this._dateAdapter?.addCalendarMonths(this._activeDate, 4); break; case HOME: - this.activeDate = this._dateAdapter.addCalendarMonths( + this.activeDate = this._dateAdapter?.addCalendarMonths( this._activeDate, -this._dateAdapter.getMonth(this._activeDate), ); break; case END: - this.activeDate = this._dateAdapter.addCalendarMonths( + this.activeDate = this._dateAdapter?.addCalendarMonths( this._activeDate, 11 - this._dateAdapter.getMonth(this._activeDate), ); break; case PAGE_UP: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, event.altKey ? -10 : -1, ); break; case PAGE_DOWN: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, event.altKey ? 10 : 1, ); @@ -264,7 +280,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { return; } - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { this.activeDateChange.emit(this.activeDate); this._focusActiveCellAfterViewChecked(); } @@ -276,7 +292,7 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { /** Handles keyup events on the calendar body when calendar is in year view. */ _handleCalendarBodyKeyup(event: KeyboardEvent): void { if (event.keyCode === SPACE || event.keyCode === ENTER) { - if (this._selectionKeyPressed) { + if (this._dateAdapter && this._selectionKeyPressed) { this._monthSelected({ value: this._dateAdapter.getMonth(this._activeDate), event, @@ -289,6 +305,9 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { /** Initializes this year view. */ _init() { + if (!this._dateAdapter) + return; + this._setSelectedMonth(this.selected); this._todayMonth = this._getMonthInCurrentYear(this._dateAdapter.today()); this._yearLabel = this._dateAdapter.getYearName(this.activeDate); @@ -299,7 +318,11 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { [0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10, 11], - ].map((row) => row.map((month) => this._createCellForMonth(month, monthNames[month]))); + ].map( + row => row + .map(m => this._createCellForMonth(m, monthNames[m])) + .filter(m => m != null) + ); this._changeDetectorRef.markForCheck(); } @@ -317,8 +340,8 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { * Gets the month in this year that the given Date falls on. * Returns null if the given Date is in another year. */ - private _getMonthInCurrentYear(date: D | null) { - return date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) + private _getMonthInCurrentYear(date: D | null): number | null { + return this._dateAdapter && date && this._dateAdapter.getYear(date) == this._dateAdapter.getYear(this.activeDate) ? this._dateAdapter.getMonth(date) : null; } @@ -327,7 +350,10 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { * Takes a month and returns a new date in the same day and year as the currently active date. * The returned date will have the same month as the argument date. */ - private _getDateFromMonth(month: number) { + private _getDateFromMonth(month: number): D | null { + if (!this._dateAdapter) + return null; + const normalizedDate = this._dateAdapter.createDate( this._dateAdapter.getYear(this.activeDate), month, @@ -344,7 +370,10 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { } /** Creates an MatCalendarCell for the given month. */ - private _createCellForMonth(month: number, monthName: string) { + private _createCellForMonth(month: number, monthName: string): NgxMatCalendarCell | null { + if (!this._dateAdapter || !this._dateFormats) + return null; + const date = this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate), month, 1); const ariaLabel = this._dateAdapter.format(date, this._dateFormats.display.monthYearA11yLabel); const cellClasses = this.dateClass() ? this.dateClass()!(date, 'year') : undefined; @@ -359,7 +388,10 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { } /** Whether the given month is enabled. */ - private _shouldEnableMonth(month: number) { + private _shouldEnableMonth(month: number): boolean { + if (!this._dateAdapter) + return false; + const activeYear = this._dateAdapter.getYear(this.activeDate); if ( @@ -395,8 +427,8 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { * Tests whether the combination month/year is after this.maxDate, considering * just the month and year of this.maxDate */ - private _isYearAndMonthAfterMaxDate(year: number, month: number) { - if (this.maxDate) { + private _isYearAndMonthAfterMaxDate(year: number, month: number): boolean { + if (this._dateAdapter && this.maxDate) { const maxYear = this._dateAdapter.getYear(this.maxDate); const maxMonth = this._dateAdapter.getMonth(this.maxDate); @@ -410,8 +442,8 @@ export class NgxMatYearView implements AfterContentInit, OnDestroy { * Tests whether the combination month/year is before this.minDate, considering * just the month and year of this.minDate */ - private _isYearAndMonthBeforeMinDate(year: number, month: number) { - if (this.minDate) { + private _isYearAndMonthBeforeMinDate(year: number, month: number): boolean { + if (this._dateAdapter && this.minDate) { const minYear = this._dateAdapter.getYear(this.minDate); const minMonth = this._dateAdapter.getMonth(this.minDate); From de53e29b8a5426e98585491309950e7facd5abbd Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 16:05:41 -0700 Subject: [PATCH 19/25] refactor: use inject calls for multi-year view --- .../src/lib/multi-year-view.ts | 92 ++++++++++++++----- 1 file changed, 67 insertions(+), 25 deletions(-) diff --git a/projects/datetime-picker/src/lib/multi-year-view.ts b/projects/datetime-picker/src/lib/multi-year-view.ts index 25830faa..98a79e8a 100644 --- a/projects/datetime-picker/src/lib/multi-year-view.ts +++ b/projects/datetime-picker/src/lib/multi-year-view.ts @@ -18,8 +18,8 @@ import { Component, Input, OnDestroy, - Optional, ViewEncapsulation, + inject, input, output, viewChild, @@ -64,6 +64,9 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { return this._activeDate; } set activeDate(value: D) { + if (!this._dateAdapter) + return; + const oldActiveDate = this._activeDate; const validDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) || @@ -90,7 +93,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { return this._selected; } set selected(value: NgxDateRange | D | null) { - if (value instanceof NgxDateRange) { + if (!this._dateAdapter || value instanceof NgxDateRange) { this._selected = value; } else { this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); @@ -106,6 +109,11 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { return this._minDate; } set minDate(value: D | null) { + if (!this._dateAdapter) { + this._minDate = null; + return; + } + this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _minDate: D | null = null; @@ -116,6 +124,11 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { return this._maxDate; } set maxDate(value: D | null) { + if (!this._dateAdapter) { + this._maxDate = null; + return; + } + this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _maxDate: D | null = null; @@ -147,11 +160,11 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { /** The year of the selected date. Null if the selected date is null. */ _selectedYear: number | null = null; - constructor( - private _changeDetectorRef: ChangeDetectorRef, - @Optional() public _dateAdapter: DateAdapter, - @Optional() private _dir?: Directionality, - ) { + private _changeDetectorRef = inject(ChangeDetectorRef); + public _dateAdapter = inject(DateAdapter, { optional: true }); + private _dir = inject(Directionality, { optional: true }); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } @@ -160,6 +173,9 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { } ngAfterContentInit() { + if (!this._dateAdapter) + return; + this._rerenderSubscription = this._dateAdapter.localeChanges .pipe(startWith(null)) .subscribe(() => this._init()); @@ -171,6 +187,9 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { /** Initializes this multi-year view. */ _init() { + if (!this._dateAdapter) + return; + this._todayYear = this._dateAdapter.getYear(this._dateAdapter.today()); // We want a range years such that we maximize the number of @@ -187,7 +206,11 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { for (let i = 0, row: number[] = []; i < yearsPerPage; i++) { row.push(minYearOfPage + i); if (row.length == yearsPerRow) { - this._years.push(row.map((year) => this._createCellForYear(year))); + this._years.push( + row + .map(y => this._createCellForYear(y)) + .filter(y => y != null) + ); row = []; } } @@ -196,12 +219,15 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { /** Handles when a new year is selected. */ _yearSelected(event: NgxMatCalendarUserEvent) { + if (!this._dateAdapter) + return; + const year = event.value; const selectedYear = this._dateAdapter.createDate(year, 0, 1); const selectedDate = this._getDateFromYear(year); this.yearSelected.emit(selectedYear); - this.selectedChange.emit(selectedDate); + this.selectedChange.emit(selectedDate!); } /** @@ -217,9 +243,10 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { _updateActiveDate(event: NgxMatCalendarUserEvent) { const year = event.value; const oldActiveDate = this._activeDate; + const dateToUse = this._getDateFromYear(year); - this.activeDate = this._getDateFromYear(year); - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && dateToUse && this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + this.activeDate = dateToUse this.activeDateChange.emit(this.activeDate); } } @@ -231,25 +258,25 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { switch (event.keyCode) { case LEFT_ARROW: - this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? 1 : -1); + this.activeDate = this._dateAdapter?.addCalendarYears(this._activeDate, isRtl ? 1 : -1); break; case RIGHT_ARROW: - this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, isRtl ? -1 : 1); + this.activeDate = this._dateAdapter?.addCalendarYears(this._activeDate, isRtl ? -1 : 1); break; case UP_ARROW: - this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, -yearsPerRow); + this.activeDate = this._dateAdapter?.addCalendarYears(this._activeDate, -yearsPerRow); break; case DOWN_ARROW: - this.activeDate = this._dateAdapter.addCalendarYears(this._activeDate, yearsPerRow); + this.activeDate = this._dateAdapter?.addCalendarYears(this._activeDate, yearsPerRow); break; case HOME: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, -getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate), ); break; case END: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, yearsPerPage - getActiveOffset(this._dateAdapter, this.activeDate, this.minDate, this.maxDate) - @@ -257,13 +284,13 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { ); break; case PAGE_UP: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, event.altKey ? -yearsPerPage * 10 : -yearsPerPage, ); break; case PAGE_DOWN: - this.activeDate = this._dateAdapter.addCalendarYears( + this.activeDate = this._dateAdapter?.addCalendarYears( this._activeDate, event.altKey ? yearsPerPage * 10 : yearsPerPage, ); @@ -280,7 +307,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { // Don't prevent default or focus active cell on keys that we don't explicitly handle. return; } - if (this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { + if (this._dateAdapter && this._dateAdapter.compareDate(oldActiveDate, this.activeDate)) { this.activeDateChange.emit(this.activeDate); } @@ -292,7 +319,7 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { /** Handles keyup events on the calendar body when calendar is in multi-year view. */ _handleCalendarBodyKeyup(event: KeyboardEvent): void { if (event.keyCode === SPACE || event.keyCode === ENTER) { - if (this._selectionKeyPressed) { + if (this._dateAdapter && this._selectionKeyPressed) { this._yearSelected({ value: this._dateAdapter.getYear(this._activeDate), event, @@ -321,7 +348,10 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { * Takes a year and returns a new date on the same day and month as the currently active date * The returned date will have the same year as the argument date. */ - private _getDateFromYear(year: number) { + private _getDateFromYear(year: number): D | null { + if (!this._dateAdapter) + return null; + const activeMonth = this._dateAdapter.getMonth(this.activeDate); const daysInMonth = this._dateAdapter.getNumDaysInMonth( this._dateAdapter.createDate(year, activeMonth, 1), @@ -335,7 +365,10 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { } /** Creates an MatCalendarCell for the given year. */ - private _createCellForYear(year: number) { + private _createCellForYear(year: number): NgxMatCalendarCell | null { + if (!this._dateAdapter) + return null; + const date = this._dateAdapter.createDate(year, 0, 1); const yearName = this._dateAdapter.getYearName(date); const cellClasses = this.dateClass() ? this.dateClass()!(date, 'multi-year') : undefined; @@ -350,7 +383,10 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { } /** Whether the given year is enabled. */ - private _shouldEnableYear(year: number) { + private _shouldEnableYear(year: number): boolean { + if (!this._dateAdapter) + return false; + // disable if the year is greater than maxDate lower than minDate if ( year === undefined || @@ -389,6 +425,9 @@ export class NgxMatMultiYearView implements AfterContentInit, OnDestroy { /** Sets the currently-highlighted year based on a model value. */ private _setSelectedYear(value: NgxDateRange | D | null) { + if (!this._dateAdapter) + return; + this._selectedYear = null; if (value instanceof NgxDateRange) { @@ -425,11 +464,14 @@ export function isSameMultiYearView( * "startingYear" will render when paged into view. */ export function getActiveOffset( - dateAdapter: DateAdapter, + dateAdapter: DateAdapter | null, activeDate: D, minDate: D | null, maxDate: D | null, ): number { + if (!dateAdapter) + return 0; + const activeYear = dateAdapter.getYear(activeDate); return euclideanModulo(activeYear - getStartingYear(dateAdapter, minDate, maxDate), yearsPerPage); } From 245429ae316a4efa1b404082d36c1bb61ce457e0 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 16:41:28 -0700 Subject: [PATCH 20/25] refactor: use inject calls in other datepicker components --- .../src/lib/date-range-selection-strategy.ts | 9 +++---- .../src/lib/date-selection-model.ts | 25 +++++++++---------- .../src/lib/datepicker-actions.ts | 21 ++++++---------- .../src/lib/datepicker-toggle.ts | 6 +++-- 4 files changed, 27 insertions(+), 34 deletions(-) diff --git a/projects/datetime-picker/src/lib/date-range-selection-strategy.ts b/projects/datetime-picker/src/lib/date-range-selection-strategy.ts index 9acb2356..a8f84e22 100644 --- a/projects/datetime-picker/src/lib/date-range-selection-strategy.ts +++ b/projects/datetime-picker/src/lib/date-range-selection-strategy.ts @@ -1,4 +1,4 @@ -import { FactoryProvider, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core'; +import { FactoryProvider, inject, Injectable, InjectionToken, Optional, SkipSelf } from '@angular/core'; import { DateAdapter } from '@angular/material/core'; import { NgxDateRange } from './date-selection-model'; @@ -51,8 +51,8 @@ export interface NgxMatDateRangeSelectionStrategy { /** Provides the default date range selection behavior. */ @Injectable() export class DefaultNgxMatCalendarRangeStrategy implements NgxMatDateRangeSelectionStrategy { - constructor(private _dateAdapter: DateAdapter) {} - + private _dateAdapter = inject(DateAdapter); + selectionFinished(date: D, currentRange: NgxDateRange) { let { start, end } = currentRange; @@ -126,9 +126,8 @@ export class DefaultNgxMatCalendarRangeStrategy implements NgxMatDateRangeSel /** @docs-private */ export function NGX_MAT_CALENDAR_RANGE_STRATEGY_PROVIDER_FACTORY( parent: NgxMatDateRangeSelectionStrategy, - adapter: DateAdapter, ) { - return parent || new DefaultNgxMatCalendarRangeStrategy(adapter); + return parent || new DefaultNgxMatCalendarRangeStrategy(); } export const NGX_MAT_CALENDAR_RANGE_STRATEGY_PROVIDER: FactoryProvider = { diff --git a/projects/datetime-picker/src/lib/date-selection-model.ts b/projects/datetime-picker/src/lib/date-selection-model.ts index ad477161..1815d5e8 100644 --- a/projects/datetime-picker/src/lib/date-selection-model.ts +++ b/projects/datetime-picker/src/lib/date-selection-model.ts @@ -1,4 +1,4 @@ -import { FactoryProvider, Injectable, OnDestroy, Optional, SkipSelf } from '@angular/core'; +import { FactoryProvider, inject, Injectable, OnDestroy, Optional, SkipSelf } from '@angular/core'; import { DateAdapter } from '@angular/material/core'; import { Observable, Subject } from 'rxjs'; @@ -53,10 +53,11 @@ export abstract class NgxMatDateSelectionModel> = this._selectionChanged; + protected _adapter = inject(DateAdapter); + protected constructor( /** The current selection. */ - readonly selection: S, - protected _adapter: DateAdapter, + readonly selection: S ) { this.selection = selection; } @@ -99,8 +100,8 @@ export abstract class NgxMatDateSelectionModel extends NgxMatDateSelectionModel { - constructor(adapter: DateAdapter) { - super(null, adapter); + constructor() { + super(null); } /** @@ -126,7 +127,7 @@ export class NgxMatSingleDateSelectionModel extends NgxMatDateSelectionModel< /** Clones the selection model. */ clone() { - const clone = new NgxMatSingleDateSelectionModel(this._adapter); + const clone = new NgxMatSingleDateSelectionModel(); clone.updateSelection(this.selection, this); return clone; } @@ -138,8 +139,8 @@ export class NgxMatSingleDateSelectionModel extends NgxMatDateSelectionModel< */ @Injectable() export class NgxMatRangeDateSelectionModel extends NgxMatDateSelectionModel, D> { - constructor(adapter: DateAdapter) { - super(new NgxDateRange(null, null), adapter); + constructor() { + super(new NgxDateRange(null, null)); } /** @@ -197,7 +198,7 @@ export class NgxMatRangeDateSelectionModel extends NgxMatDateSelectionModel(this._adapter); + const clone = new NgxMatRangeDateSelectionModel(); clone.updateSelection(this.selection, this); return clone; } @@ -206,9 +207,8 @@ export class NgxMatRangeDateSelectionModel extends NgxMatDateSelectionModel, - adapter: DateAdapter, ) { - return parent || new NgxMatSingleDateSelectionModel(adapter); + return parent || new NgxMatSingleDateSelectionModel(); } /** @@ -224,9 +224,8 @@ export const NGX_MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER: FactoryProvider = { /** @docs-private */ export function NGX_MAT_RANGE_DATE_SELECTION_MODEL_FACTORY( parent: NgxMatSingleDateSelectionModel, - adapter: DateAdapter, ) { - return parent || new NgxMatRangeDateSelectionModel(adapter); + return parent || new NgxMatRangeDateSelectionModel(); } /** diff --git a/projects/datetime-picker/src/lib/datepicker-actions.ts b/projects/datetime-picker/src/lib/datepicker-actions.ts index b81dbcfd..909d4f58 100644 --- a/projects/datetime-picker/src/lib/datepicker-actions.ts +++ b/projects/datetime-picker/src/lib/datepicker-actions.ts @@ -10,6 +10,7 @@ import { ViewContainerRef, ViewEncapsulation, booleanAttribute, + inject, viewChild, } from '@angular/core'; import { NgxMatDatepickerBase, NgxMatDatepickerControl } from './datepicker-base'; @@ -20,9 +21,7 @@ import { NgxMatDatepickerBase, NgxMatDatepickerControl } from './datepicker-base host: { '(click)': '_applySelection()' }, }) export class NgxMatDatepickerApply { - constructor( - public readonly _datepicker: NgxMatDatepickerBase, unknown>, - ) {} + public readonly _datepicker = inject(NgxMatDatepickerBase, unknown>); _applySelection() { this._datepicker._applyPendingSelection(); @@ -35,10 +34,8 @@ export class NgxMatDatepickerApply { host: { '(click)': '_clearSelection()' }, }) export class NgxMatDatepickerClear { - constructor( - public readonly _datepicker: NgxMatDatepickerBase, unknown>, - ) {} - + public readonly _datepicker = inject(NgxMatDatepickerBase, unknown>); + @Input({ transform: booleanAttribute, }) @@ -58,9 +55,7 @@ export class NgxMatDatepickerClear { host: { '(click)': '_datepicker.close()' }, }) export class NgxMatDatepickerCancel { - constructor( - public readonly _datepicker: NgxMatDatepickerBase, unknown>, - ) {} + public readonly _datepicker = inject(NgxMatDatepickerBase, unknown>); } /** @@ -84,10 +79,8 @@ export class NgxMatDatepickerActions implements AfterViewInit, OnDestroy { _template = viewChild>(TemplateRef); private _portal: TemplatePortal | null = null; - constructor( - private _datepicker: NgxMatDatepickerBase, unknown>, - private _viewContainerRef: ViewContainerRef, - ) {} + private _datepicker = inject(NgxMatDatepickerBase, unknown>); + private _viewContainerRef = inject(ViewContainerRef); ngAfterViewInit() { this._portal = new TemplatePortal(this._template()!, this._viewContainerRef); diff --git a/projects/datetime-picker/src/lib/datepicker-toggle.ts b/projects/datetime-picker/src/lib/datepicker-toggle.ts index 6131cb6e..4a207f49 100644 --- a/projects/datetime-picker/src/lib/datepicker-toggle.ts +++ b/projects/datetime-picker/src/lib/datepicker-toggle.ts @@ -10,6 +10,7 @@ import { OnDestroy, ViewEncapsulation, effect, + inject, input, untracked, viewChild, @@ -82,9 +83,10 @@ export class NgxMatDatepickerToggle implements AfterContentInit, OnDestroy { /** Underlying button element. */ _button = viewChild('button'); + public _intl = inject(NgxMatDatepickerIntl); + private _changeDetectorRef = inject(ChangeDetectorRef); + constructor( - public _intl: NgxMatDatepickerIntl, - private _changeDetectorRef: ChangeDetectorRef, @Attribute('tabindex') defaultTabIndex: string, ) { const parsedTabIndex = Number(defaultTabIndex); From 9a169b138ca15b11d9440b94ea17f9eea405422c Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 16:41:43 -0700 Subject: [PATCH 21/25] refactor: use inject calls in calendar base component --- .../datetime-picker/src/lib/calendar-body.ts | 12 +-- projects/datetime-picker/src/lib/calendar.ts | 91 +++++++++++++------ 2 files changed, 68 insertions(+), 35 deletions(-) diff --git a/projects/datetime-picker/src/lib/calendar-body.ts b/projects/datetime-picker/src/lib/calendar-body.ts index e8f8f753..48029054 100644 --- a/projects/datetime-picker/src/lib/calendar-body.ts +++ b/projects/datetime-picker/src/lib/calendar-body.ts @@ -169,12 +169,12 @@ export class NgxMatCalendarBody implements OnDestroy, AfterViewChecked private _didDragSinceMouseDown = false; - constructor( - private _elementRef: ElementRef, - private _ngZone: NgZone, - ) { - _ngZone.runOutsideAngular(() => { - const element = _elementRef.nativeElement; + private _elementRef = inject(ElementRef); + private _ngZone = inject(NgZone); + + constructor() { + this._ngZone.runOutsideAngular(() => { + const element = this._elementRef.nativeElement; element.addEventListener('mouseenter', this._enterHandler, true); element.addEventListener('touchmove', this._touchmoveHandler, true); element.addEventListener('focus', this._enterHandler, true); diff --git a/projects/datetime-picker/src/lib/calendar.ts b/projects/datetime-picker/src/lib/calendar.ts index a528ccf9..66c42c6a 100644 --- a/projects/datetime-picker/src/lib/calendar.ts +++ b/projects/datetime-picker/src/lib/calendar.ts @@ -6,15 +6,14 @@ import { ChangeDetectionStrategy, ChangeDetectorRef, Component, - Inject, Input, OnChanges, OnDestroy, - Optional, SimpleChange, SimpleChanges, ViewEncapsulation, forwardRef, + inject, input, linkedSignal, output, @@ -22,7 +21,7 @@ import { } from '@angular/core'; import { outputFromObservable, toObservable } from '@angular/core/rxjs-interop'; import { MatButton, MatIconButton } from '@angular/material/button'; -import { DateAdapter, MAT_DATE_FORMATS, MatDateFormats } from '@angular/material/core'; +import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; import { Subject, Subscription } from 'rxjs'; import { NgxMatCalendarCellClassFunction, NgxMatCalendarUserEvent } from './calendar-body'; import { NGX_MAT_SINGLE_DATE_SELECTION_MODEL_PROVIDER, NgxDateRange } from './date-selection-model'; @@ -55,21 +54,21 @@ export type NgxMatCalendarView = 'month' | 'year' | 'multi-year'; imports: [MatButton, MatIconButton], }) export class NgxMatCalendarHeader { - constructor( - private _intl: NgxMatDatepickerIntl, - @Inject(forwardRef(() => NgxMatCalendar)) - public calendar: NgxMatCalendar, - @Optional() private _dateAdapter: DateAdapter, - @Optional() - @Inject(MAT_DATE_FORMATS) - private _dateFormats: MatDateFormats, - changeDetectorRef: ChangeDetectorRef, - ) { - this.calendar.stateChanges.subscribe(() => changeDetectorRef.markForCheck()); + private _intl = inject(NgxMatDatepickerIntl); + public calendar: NgxMatCalendar = inject(forwardRef(() => NgxMatCalendar)); + private _dateAdapter = inject(DateAdapter, { optional: true }); + private _dateFormats = inject(MAT_DATE_FORMATS, { optional: true }); + changeDetectorRef = inject(ChangeDetectorRef); + + constructor() { + this.calendar.stateChanges.subscribe(() => this.changeDetectorRef.markForCheck()); } /** The display text for the current calendar view. */ get periodButtonText(): string { + if (!this._dateAdapter || !this._dateFormats) + return ""; + if (this.calendar.currentView() == 'month') { return this._dateAdapter .format(this.calendar.activeDate!, this._dateFormats.display.monthYearLabel) @@ -84,6 +83,9 @@ export class NgxMatCalendarHeader { /** The aria description for the current calendar view. */ get periodButtonDescription(): string { + if (!this._dateAdapter || !this._dateFormats) + return ""; + if (this.calendar.currentView() == 'month') { return this._dateAdapter .format(this.calendar.activeDate!, this._dateFormats.display.monthYearLabel) @@ -130,6 +132,9 @@ export class NgxMatCalendarHeader { /** Handles user clicks on the previous button. */ previousClicked(): void { + if (!this._dateAdapter) + return; + this.calendar.activeDate = this.calendar.currentView() == 'month' ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate!, -1) @@ -141,6 +146,9 @@ export class NgxMatCalendarHeader { /** Handles user clicks on the next button. */ nextClicked(): void { + if (!this._dateAdapter) + return; + this.calendar.activeDate = this.calendar.currentView() == 'month' ? this._dateAdapter.addCalendarMonths(this.calendar.activeDate!, 1) @@ -169,6 +177,9 @@ export class NgxMatCalendarHeader { /** Whether the two dates represent the same view in the current view mode (month or year). */ private _isSameView(date1: D, date2: D): boolean { + if (!this._dateAdapter) + return false; + if (this.calendar.currentView() == 'month') { return ( this._dateAdapter.getYear(date1) == this._dateAdapter.getYear(date2) && @@ -194,6 +205,9 @@ export class NgxMatCalendarHeader { * for the minimum year, and the second string is the formatted label for the maximum year. */ private _formatMinAndMaxYearLabels(): [minYearLabel: string, maxYearLabel: string] { + if (!this._dateAdapter) + return ["", ""]; + // The offset from the active year to the "slot" for the starting year is the // *actual* first rendered year in the multi-year view, and the last year is // just yearsPerPage - 1 away. @@ -258,7 +272,9 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On return this._startAt; } set startAt(value: D | null) { - this._startAt = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); + this._startAt = this._dateAdapter + ? this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)) + : null; } private _startAt: D | null = null; @@ -271,7 +287,7 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On return this._selected; } set selected(value: NgxDateRange | D | null) { - if (value instanceof NgxDateRange) { + if (!this._dateAdapter || value instanceof NgxDateRange) { this._selected = value; } else { this._selected = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); @@ -285,6 +301,11 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On return this._minDate; } set minDate(value: D | null) { + if (!this._dateAdapter) { + this._minDate = null; + return; + } + this._minDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _minDate: D | null = null; @@ -295,6 +316,11 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On return this._maxDate; } set maxDate(value: D | null) { + if (!this._dateAdapter) { + this._maxDate = null; + return; + } + this._maxDate = this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(value)); } private _maxDate: D | null = null; @@ -359,9 +385,12 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On * highlighted when using keyboard navigation. */ get activeDate(): D { - return this._clampedActiveDate ?? this._dateAdapter.today(); + return this._clampedActiveDate ?? this._dateAdapter?.today(); } set activeDate(value: D) { + if (!this._dateAdapter) + return; + this._clampedActiveDate = this._dateAdapter.clampDate(value, this.minDate, this.maxDate); this.stateChanges.next(); this._changeDetectorRef.markForCheck(); @@ -376,14 +405,12 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On */ readonly stateChanges = new Subject(); - constructor( - _intl: NgxMatDatepickerIntl, - @Optional() private _dateAdapter: DateAdapter, - @Optional() - @Inject(MAT_DATE_FORMATS) - private _dateFormats: MatDateFormats, - private _changeDetectorRef: ChangeDetectorRef, - ) { + _intl = inject(NgxMatDatepickerIntl); + private _dateAdapter = inject(DateAdapter, { optional: true }); + private _dateFormats = inject(MAT_DATE_FORMATS, { optional: true }); + private _changeDetectorRef = inject(ChangeDetectorRef); + + constructor() { if (!this._dateAdapter) { throw createMissingDateImplError('DateAdapter'); } @@ -392,13 +419,16 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On throw createMissingDateImplError('MAT_DATE_FORMATS'); } - this._intlChanges = _intl.changes.subscribe(() => { - _changeDetectorRef.markForCheck(); + this._intlChanges = this._intl.changes.subscribe(() => { + this._changeDetectorRef.markForCheck(); this.stateChanges.next(); }); } ngAfterContentInit() { + if (!this._dateAdapter) + return; + this._calendarHeaderPortal = new ComponentPortal( this.headerComponent() || NgxMatCalendarHeader, ); @@ -423,12 +453,12 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On // the calendar re-renders when there is no meaningful change to [minDate] or [maxDate] // (#24435). const minDateChange: SimpleChange | undefined = - changes['minDate'] && + this._dateAdapter && changes['minDate'] && !this._dateAdapter.sameDate(changes['minDate'].previousValue, changes['minDate'].currentValue) ? changes['minDate'] : undefined; const maxDateChange: SimpleChange | undefined = - changes['maxDate'] && + this._dateAdapter && changes['maxDate'] && !this._dateAdapter.sameDate(changes['maxDate'].previousValue, changes['maxDate'].currentValue) ? changes['maxDate'] : undefined; @@ -462,6 +492,9 @@ export class NgxMatCalendar implements AfterContentInit, AfterViewChecked, On /** Handles date selection in the month view. */ _dateSelected(event: NgxMatCalendarUserEvent): void { + if (!this._dateAdapter) + return; + let date = event.value as D; if (date && this.selected) { const selected = this.selected as D; From 8e1ba61ccee1b33a3792f0f59fe1bbc2d09f31c3 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 16:48:39 -0700 Subject: [PATCH 22/25] refactor: comment empty functions for intention --- .../datetime-picker/src/lib/datepicker-input-base.ts | 12 +++++++++--- .../src/lib/datetime-picker-input-v2.directive.ts | 12 +++++++++--- .../datetime-picker/src/lib/timepicker.component.ts | 8 ++++++-- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/projects/datetime-picker/src/lib/datepicker-input-base.ts b/projects/datetime-picker/src/lib/datepicker-input-base.ts index 5bcf24fc..ca53f847 100644 --- a/projects/datetime-picker/src/lib/datepicker-input-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-input-base.ts @@ -122,10 +122,16 @@ export abstract class NgxMatDatepickerInputBase(); - _onTouched = () => {}; - _validatorOnChange = () => {}; + _onTouched = () => { + // Intentionally left empty. + }; + _validatorOnChange = () => { + // Intentionally left empty. + }; - private _cvaOnChange: (value: any) => void = () => {}; + private _cvaOnChange: (value: any) => void = () => { + // Intentionally left empty. + }; private _valueChangesSubscription = Subscription.EMPTY; private _localeSubscription = Subscription.EMPTY; diff --git a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts index fe3464f9..0887bb2f 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts @@ -162,10 +162,16 @@ export class NgxMatDatetimePickerInputV2 /** Emits when the internal state has changed */ readonly stateChanges = new Subject(); - _onTouched = () => {}; - _validatorOnChange = () => {}; + _onTouched = () => { + // Intentionally left empty. + }; + _validatorOnChange = () => { + // Intentionally left empty. + }; - private _cvaOnChange: (value: any) => void = () => {}; + private _cvaOnChange: (value: any) => void = () => { + // Intentionally left empty. + }; private _valueChangesSubscription = Subscription.EMPTY; private _localeSubscription = Subscription.EMPTY; diff --git a/projects/datetime-picker/src/lib/timepicker.component.ts b/projects/datetime-picker/src/lib/timepicker.component.ts index 0056b748..248ae22b 100644 --- a/projects/datetime-picker/src/lib/timepicker.component.ts +++ b/projects/datetime-picker/src/lib/timepicker.component.ts @@ -104,8 +104,12 @@ export class NgxMatTimepickerComponent implements ControlValueAccessor { }), }); - private _onChange: any = () => {}; - private _onTouched: any = () => {}; + private _onChange: any = () => { + // Intentionally left empty. + }; + private _onTouched: any = () => { + // Intentionally left empty. + }; public readonly value = model(); /** Hour */ From b8d791e3be605121b0f4d961a3a3473a469ba827 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 16:49:03 -0700 Subject: [PATCH 23/25] refactor: underscore unused parameters in functions --- .../src/lib/datetime-picker-content-v2.component.ts | 4 ++-- .../src/lib/datetime-picker-input-v2.directive.ts | 4 ++-- .../datetime-picker/src/lib/datetime-picker-v2.component.ts | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts b/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts index ef203aca..8054575b 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts @@ -171,11 +171,11 @@ export class NgxMatDatetimePickerContentV2 implements OnInit, OnDestroy { } } - onYearSelected(year: D): void { + onYearSelected(_: D): void { // Let the calendar handle year selection } - onMonthSelected(month: D): void { + onMonthSelected(_: D): void { // Let the calendar handle month selection } diff --git a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts index 0887bb2f..6f1512c0 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts @@ -367,7 +367,7 @@ export class NgxMatDatetimePickerInputV2 this.stateChanges.next(); } - _onClick(event: MouseEvent): void { + _onClick(_: MouseEvent): void { // Open the datepicker when clicking on the input if (this.ngxMatDatetimePicker && !this.disabled) { this.ngxMatDatetimePicker.open(); @@ -426,7 +426,7 @@ export class NgxMatDatetimePickerInputV2 } // MatFormFieldControl methods - setDescribedByIds(ids: string[]): void { + setDescribedByIds(_: string[]): void { // Implementation for accessibility } diff --git a/projects/datetime-picker/src/lib/datetime-picker-v2.component.ts b/projects/datetime-picker/src/lib/datetime-picker-v2.component.ts index 047bdc77..44f24eb8 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-v2.component.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-v2.component.ts @@ -130,7 +130,7 @@ export class NgxMatDatetimePickerV2 implements OnDestroy { } /** Applies the current pending selection on the overlay to the model. */ - select(date: D): void { + select(_: D): void { // This will be handled by the content component } From 948579829f2841324141d44f57617f9478f33c21 Mon Sep 17 00:00:00 2001 From: Felipe BF Date: Thu, 2 Apr 2026 17:05:28 -0700 Subject: [PATCH 24/25] refactor: correct other linter problems in datetime-picker --- projects/datetime-picker/src/lib/datepicker-base.ts | 5 ++++- projects/datetime-picker/src/lib/datepicker-input-base.ts | 2 +- .../src/lib/datetime-picker-content-v2.component.ts | 1 - .../src/lib/datetime-picker-input-v2.directive.ts | 7 ++++--- projects/datetime-picker/src/lib/timepicker.component.ts | 4 ++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/projects/datetime-picker/src/lib/datepicker-base.ts b/projects/datetime-picker/src/lib/datepicker-base.ts index 99402313..2e551510 100644 --- a/projects/datetime-picker/src/lib/datepicker-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-base.ts @@ -565,7 +565,10 @@ export abstract class NgxMatDatepickerBase< } set opened(value: BooleanInput) { - coerceBooleanProperty(value) ? this.open() : this.close(); + if (coerceBooleanProperty(value)) + this.open(); + else + this.close(); } private _opened = false; diff --git a/projects/datetime-picker/src/lib/datepicker-input-base.ts b/projects/datetime-picker/src/lib/datepicker-input-base.ts index ca53f847..bfc64f6d 100644 --- a/projects/datetime-picker/src/lib/datepicker-input-base.ts +++ b/projects/datetime-picker/src/lib/datepicker-input-base.ts @@ -81,7 +81,7 @@ export abstract class NgxMatDatepickerInputBase | undefined; diff --git a/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts b/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts index 8054575b..f1e80e80 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-content-v2.component.ts @@ -18,7 +18,6 @@ import { takeUntil } from 'rxjs/operators'; import { NgxMatTimepickerComponent } from './timepicker.component'; export interface NgxMatDatetimePickerContentData { - datepicker: any; // Reference to the main datepicker component color?: ThemePalette; touchUi?: boolean; hideTime?: boolean; diff --git a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts index 6f1512c0..035a1519 100644 --- a/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts +++ b/projects/datetime-picker/src/lib/datetime-picker-input-v2.directive.ts @@ -8,6 +8,7 @@ import { OnDestroy, OnInit, Output, + Provider, forwardRef, inject, signal, @@ -30,13 +31,13 @@ import { NgxMatDatepickerControl } from './datepicker-base'; import { createMissingDateImplError } from './datepicker-errors'; import { NgxMatDatetimePickerV2 } from './datetime-picker-v2.component'; -export const NGX_MAT_DATETIME_PICKER_VALUE_ACCESSOR: any = { +export const NGX_MAT_DATETIME_PICKER_VALUE_ACCESSOR: Provider = { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => NgxMatDatetimePickerInputV2), multi: true, }; -export const NGX_MAT_DATETIME_PICKER_VALIDATORS: any = { +export const NGX_MAT_DATETIME_PICKER_VALIDATORS: Provider = { provide: NG_VALIDATORS, useExisting: forwardRef(() => NgxMatDatetimePickerInputV2), multi: true, @@ -340,7 +341,7 @@ export class NgxMatDatetimePickerInputV2 _onInput(event: Event): void { const target = event?.target as HTMLInputElement; const parsedDate = this._dateAdapter?.parse(target.value, this._dateFormats!.display.dateInput); - this._lastValueValid = this._dateAdapter?.isValid(parsedDate)!; + this._lastValueValid = this._dateAdapter ? this._dateAdapter.isValid(parsedDate) : false; const date = this._dateAdapter?.getValidDateOrNull(parsedDate); // Update internal value diff --git a/projects/datetime-picker/src/lib/timepicker.component.ts b/projects/datetime-picker/src/lib/timepicker.component.ts index 248ae22b..ab2b1db0 100644 --- a/projects/datetime-picker/src/lib/timepicker.component.ts +++ b/projects/datetime-picker/src/lib/timepicker.component.ts @@ -160,11 +160,11 @@ export class NgxMatTimepickerComponent implements ControlValueAccessor { } } - registerOnChange(fn: (_: any) => {}): void { + registerOnChange(fn: (_: any) => void): void { this._onChange = fn; } - registerOnTouched(fn: () => {}): void { + registerOnTouched(fn: () => void): void { this._onTouched = fn; } From fc832dff092b0c313be67c1a84b5cba30fb53a0e Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Fri, 3 Apr 2026 00:11:00 +0000 Subject: [PATCH 25/25] chore(release): 21.2.6-next.6 [skip ci] ## [21.2.6-next.6](https://github.com/fbf-prog64/angular-material-components/compare/v21.2.6-next.5...v21.2.6-next.6) (2026-04-03) --- package.json | 2 +- projects/color-picker/package.json | 2 +- projects/datetime-picker/package.json | 2 +- projects/file-input/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 6b28591d..393c8652 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/amc", - "version": "21.2.6-next.5", + "version": "21.2.6-next.6", "description": "Angular Material Components Example Application", "author": "Felipe B.", "repository": { diff --git a/projects/color-picker/package.json b/projects/color-picker/package.json index 09e0fdb5..64f906f9 100644 --- a/projects/color-picker/package.json +++ b/projects/color-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/color-picker", - "version": "21.2.6-next.5", + "version": "21.2.6-next.6", "description": "Angular Material Color Picker", "author": "Felipe B.", "repository": { diff --git a/projects/datetime-picker/package.json b/projects/datetime-picker/package.json index 8f9472ae..a7aa46d1 100644 --- a/projects/datetime-picker/package.json +++ b/projects/datetime-picker/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/datetime-picker", - "version": "21.2.6-next.5", + "version": "21.2.6-next.6", "description": "Angular Material Datetime Picker", "author": "Felipe B.", "repository": { diff --git a/projects/file-input/package.json b/projects/file-input/package.json index cc19e229..a6ad58df 100644 --- a/projects/file-input/package.json +++ b/projects/file-input/package.json @@ -1,6 +1,6 @@ { "name": "@ngx-mce/file-input", - "version": "21.2.6-next.5", + "version": "21.2.6-next.6", "description": "Angular Material File Input", "author": "Felipe B.", "repository": {