diff --git a/.editorconfig b/.editorconfig index 0a592d43..9641629b 100644 --- a/.editorconfig +++ b/.editorconfig @@ -11,6 +11,7 @@ trim_trailing_whitespace = true [*.ts] quote_type = single +ij_typescript_use_double_quotes = false [*.md] max_line_length = off diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..34c3b360 --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,56 @@ + +You are an expert in TypeScript, Angular, and scalable web application development. You write functional, maintainable, performant, and accessible code following Angular and TypeScript best practices. + +## TypeScript Best Practices + +- Use strict type checking +- Prefer type inference when the type is obvious +- Avoid the `any` type; use `unknown` when type is uncertain + +## Angular Best Practices + +- Always use standalone components over NgModules +- Must NOT set `standalone: true` inside Angular decorators. It's the default in Angular v20+. +- Use signals for state management +- Implement lazy loading for feature routes +- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead +- Use `NgOptimizedImage` for all static images. + - `NgOptimizedImage` does not work for inline base64 images. + +## Accessibility Requirements + +- It MUST pass all AXE checks. +- It MUST follow all WCAG AA minimums, including focus management, color contrast, and ARIA attributes. + +### Components + +- Keep components small and focused on a single responsibility +- Use `input()` and `output()` functions instead of decorators +- Use `computed()` for derived state +- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator +- Prefer inline templates for small components +- Prefer Reactive forms instead of Template-driven ones +- Do NOT use `ngClass`, use `class` bindings instead +- Do NOT use `ngStyle`, use `style` bindings instead +- When using external templates/styles, use paths relative to the component TS file. + +## State Management + +- Use signals for local component state +- Use `computed()` for derived state +- Keep state transformations pure and predictable +- Do NOT use `mutate` on signals, use `update` or `set` instead + +## Templates + +- Keep templates simple and avoid complex logic +- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch` +- Use the async pipe to handle observables +- Do not assume globals like (`new Date()`) are available. +- Do not write arrow functions in templates (they are not supported). + +## Services + +- Design services around a single responsibility +- Use the `providedIn: 'root'` option for singleton services +- Use the `inject()` function instead of constructor injection diff --git a/.gitignore b/.gitignore index 5e916bd9..e909c25e 100644 --- a/.gitignore +++ b/.gitignore @@ -33,6 +33,7 @@ speed-measure-plugin*.json .history/* # Miscellaneous +.npmrc /.angular/cache .sass-cache/ /connect.lock diff --git a/.prettierrc.js b/.prettierrc.js index 3e85ffa2..1c04f8eb 100644 --- a/.prettierrc.js +++ b/.prettierrc.js @@ -3,5 +3,13 @@ module.exports = { trailingComma: 'none', singleQuote: true, printWidth: 120, - tabWidth: 2 + tabWidth: 2, + overrides: [ + { + files: '*.html', + options: { + parser: 'angular' + } + } + ] }; diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..34c3b360 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,56 @@ + +You are an expert in TypeScript, Angular, and scalable web application development. You write functional, maintainable, performant, and accessible code following Angular and TypeScript best practices. + +## TypeScript Best Practices + +- Use strict type checking +- Prefer type inference when the type is obvious +- Avoid the `any` type; use `unknown` when type is uncertain + +## Angular Best Practices + +- Always use standalone components over NgModules +- Must NOT set `standalone: true` inside Angular decorators. It's the default in Angular v20+. +- Use signals for state management +- Implement lazy loading for feature routes +- Do NOT use the `@HostBinding` and `@HostListener` decorators. Put host bindings inside the `host` object of the `@Component` or `@Directive` decorator instead +- Use `NgOptimizedImage` for all static images. + - `NgOptimizedImage` does not work for inline base64 images. + +## Accessibility Requirements + +- It MUST pass all AXE checks. +- It MUST follow all WCAG AA minimums, including focus management, color contrast, and ARIA attributes. + +### Components + +- Keep components small and focused on a single responsibility +- Use `input()` and `output()` functions instead of decorators +- Use `computed()` for derived state +- Set `changeDetection: ChangeDetectionStrategy.OnPush` in `@Component` decorator +- Prefer inline templates for small components +- Prefer Reactive forms instead of Template-driven ones +- Do NOT use `ngClass`, use `class` bindings instead +- Do NOT use `ngStyle`, use `style` bindings instead +- When using external templates/styles, use paths relative to the component TS file. + +## State Management + +- Use signals for local component state +- Use `computed()` for derived state +- Keep state transformations pure and predictable +- Do NOT use `mutate` on signals, use `update` or `set` instead + +## Templates + +- Keep templates simple and avoid complex logic +- Use native control flow (`@if`, `@for`, `@switch`) instead of `*ngIf`, `*ngFor`, `*ngSwitch` +- Use the async pipe to handle observables +- Do not assume globals like (`new Date()`) are available. +- Do not write arrow functions in templates (they are not supported). + +## Services + +- Design services around a single responsibility +- Use the `providedIn: 'root'` option for singleton services +- Use the `inject()` function instead of constructor injection diff --git a/CHANGELOG.md b/CHANGELOG.md index bd8913af..02d77d4c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,553 @@ ### [@coreui/angular](https://coreui.io/angular/) changelog +--- + +#### `5.6.1` + +- fix(dropdown): potential infinite loop setting listeners +- chore(dependencies): update to `Angular 21.0.5` + - `@angular-devkit/schematics` @ "21.0.3" (was "21.0.2") + - `@angular/build` @ "21.0.3" (was "21.0.2") + - `@angular/cli` @ "21.0.3" (was "21.0.2") + - `@angular/compiler-cli` @ "21.0.5" (was "21.0.3") + - `@angular/language-service` @ "21.0.5" (was "21.0.3") + - `@angular/animations` @ "21.0.5" (was "21.0.3") + - `@angular/cdk` @ "21.0.3" (was "21.0.2") + - `@angular/common` @ "21.0.5" (was "21.0.3") + - `@angular/compiler` @ "21.0.5" (was "21.0.3") + - `@angular/core` @ "21.0.5" (was "21.0.3") + - `@angular/forms` @ "21.0.5" (was "21.0.3") + - `@angular/localize` @ "21.0.5" (was "21.0.3") + - `@angular/platform-browser` @ "21.0.5" (was "21.0.3") + - `@angular/router` @ "21.0.5" (was "21.0.3") + - `@types/node` @ "24.10.3" (was "24.10.2") + +--- + + +#### `5.6.0` + +- chore(dependencies): update to `Angular 21` + - `@angular-devkit/schematics` @ "21.0.2" (was "20.3.12") + - `@angular/build` @ "21.0.2" (was "20.3.12") + - `@angular/cli` @ "21.0.2" (was "20.3.12") + - `@angular/compiler-cli` @ "21.0.3" (was "20.3.14") + - `@angular/language-service` @ "21.0.3" (was "20.3.14") + - `@angular/animations` @ "21.0.3" (was "20.3.14") + - `@angular/cdk` @ "21.0.2" (was "20.2.14") + - `@angular/common` @ "21.0.3" (was "20.3.14") + - `@angular/compiler` @ "21.0.3" (was "20.3.14") + - `@angular/core` @ "21.0.3" (was "20.3.14") + - `@angular/forms` @ "21.0.3" (was "20.3.14") + - `@angular/localize` @ "21.0.3" (was "20.3.14") + - `@angular/platform-browser` @ "21.0.3" (was "20.3.14") + - `@angular/router` @ "21.0.3" (was "20.3.14") + - `ng-packagr` @ "21.0.0" (was "20.3.2") + - `zone.js` @ "0.16.0" (was "0.15.1") + - `@types/node` @ "24.10.2" (was "22.19.1") + - `angular-eslint` @ "21.1.0" (was "20.7.0") + - `jasmine-core` @ "5.13.0" (was "5.12.1") + - `prettier` @ "3.7.4" (was "3.6.2") + - `typescript-eslint` @ "8.49.0" (was "8.48.0") +- remove `@angular/platform-browser-dynamic` +- test: updates, cleanups and fixes +- refactor(sidebar.service): cleanup +- refactor(dropdown.service): cleanup +- refactor(sidebar-nav): signal inputs, test +- refactor(sidebar-nav.service): SidebarNavHelper providedIn: root +- refactor: migration from NgClass to class bindings +- refactor: migration from NgStyle to style bindings +- test: RouterTestingModule migration + +--- + +#### `5.5.25` + +- fix(backdrop): modal backdrop not removed on zoneless - close #240 - thanks @anyplin +- chore(dependencies): update to `Angular 20.3.14` + - `@angular/compiler-cli` @ "20.3.14" (was "20.3.13") + - `@angular/language-service` @ "20.3.14" (was "20.3.13") + - `@angular/animations` @ "20.3.14" (was "20.3.13") + - `@angular/common` @ "20.3.14" (was "20.3.13") + - `@angular/compiler` @ "20.3.14" (was "20.3.13") + - `@angular/core` @ "20.3.14" (was "20.3.13") + - `@angular/forms` @ "20.3.14" (was "20.3.13") + - `@angular/localize` @ "20.3.14" (was "20.3.13") + - `@angular/platform-browser` @ "20.3.14" (was "20.3.13") + - `@angular/platform-browser-dynamic` @ "20.3.14" (was "20.3.13") + - `@angular/router` @ "20.3.14" (was "20.3.13") + +--- + +#### `5.5.24` + +- refactor(modal): visible signal, cleanup +- chore(devDependencies): update + - `@angular-devkit/schematics` @ "20.3.12" (was "20.3.11") + - `@angular/build` @ "20.3.12" (was "20.3.11") + - `@angular/cli` @ "20.3.12" (was "20.3.11") + +--- + +#### `5.5.23` + +- chore(dependencies): update to `Angular 20.3.13` + - `@angular-devkit/schematics` @ "20.3.11" (was "20.3.9") + - `@angular/build` @ "20.3.11" (was "20.3.9") + - `@angular/cli` @ "20.3.11" (was "20.3.9") + - `@angular/compiler-cli` @ "20.3.13" (was "20.3.10") + - `@angular/language-service` @ "20.3.13" (was "20.3.10") + - `@angular/animations` @ "20.3.13" (was "20.3.10") + - `@angular/cdk` @ "20.2.14" (was "20.2.12") + - `@angular/common` @ "20.3.13" (was "20.3.10") + - `@angular/compiler` @ "20.3.13" (was "20.3.10") + - `@angular/core` @ "20.3.13" (was "20.3.10") + - `@angular/forms` @ "20.3.13" (was "20.3.10") + - `@angular/localize` @ "20.3.13" (was "20.3.10") + - `@angular/platform-browser` @ "20.3.13" (was "20.3.10") + - `@angular/platform-browser-dynamic` @ "20.3.13" (was "20.3.10") + - `@angular/router` @ "20.3.13" (was "20.3.10") + - `ng-packagr` @ "20.3.2" (was "20.3.0") + - `@types/jasmine` @ "5.1.13" (was "5.1.12") + - `@types/node` @ "22.19.1" (was "22.19.0") + - `angular-eslint` @ "20.7.0" (was "20.5.2") + - `typescript-eslint` @ "8.48.0" (was "8.46.3") + +--- + +#### `5.5.22` + +- refactor(pagination): input transform for disabled prop, cleanups +- chore(dependencies): update + - `angular-eslint` @ "20.5.2" (was "20.5.1") + +--- + +#### `5.5.21` + +- chore(dependencies): update to `Angular 20.3.10` + - `@angular-devkit/schematics` @ "20.3.9" (was "20.3.8") + - `@angular/build` @ "20.3.9" (was "20.3.8") + - `@angular/cli` @ "20.3.9" (was "20.3.8") + - `@angular/compiler-cli` @ "20.3.10" (was "20.3.9") + - `@angular/language-service` @ "20.3.10" (was "20.3.9") + - `@angular/animations` @ "20.3.10" (was "20.3.9") + - `@angular/cdk` @ "20.2.12" (was "20.2.10") + - `@angular/common` @ "20.3.10" (was "20.3.9") + - `@angular/compiler` @ "20.3.10" (was "20.3.9") + - `@angular/core` @ "20.3.10" (was "20.3.9") + - `@angular/forms` @ "20.3.10" (was "20.3.9") + - `@angular/localize` @ "20.3.10" (was "20.3.9") + - `@angular/platform-browser` @ "20.3.10" (was "20.3.9") + - `@angular/platform-browser-dynamic` @ "20.3.10" (was "20.3.9") + - `@angular/router` @ "20.3.10" (was "20.3.9") + - `@types/node` @ "22.19.0" (was "22.18.13") + - `angular-eslint` @ "20.5.1" (was "20.5.0") + - `eslint` @ "9.39.1" (was "9.38.0") + - `typescript-eslint` @ "8.46.3" (was "8.46.2") + +--- + +#### `5.5.20` + +- refactor: `size` and `sizing` prop types, hostClasses cleanup + +--- + +#### `5.5.19` + +- chore(dependencies): update to `Angular 20.3.9` + - `@angular-devkit/schematics` @ "20.3.8" (was "20.3.7") + - `@angular/build` @ "20.3.8" (was "20.3.7") + - `@angular/cli` @ "20.3.8" (was "20.3.7") + - `@angular/compiler-cli` @ "20.3.9" (was "20.3.7") + - `@angular/language-service` @ "20.3.9" (was "20.3.7") + - `@angular/animations` @ "20.3.9" (was "20.3.7") + - `@angular/common` @ "20.3.9" (was "20.3.7") + - `@angular/compiler` @ "20.3.9" (was "20.3.7") + - `@angular/core` @ "20.3.9" (was "20.3.7") + - `@angular/forms` @ "20.3.9" (was "20.3.7") + - `@angular/localize` @ "20.3.9" (was "20.3.7") + - `@angular/platform-browser` @ "20.3.9" (was "20.3.7") + - `@angular/platform-browser-dynamic` @ "20.3.9" (was "20.3.7") + - `@angular/router` @ "20.3.9" (was "20.3.7") + - `jasmine-core` @ "5.12.1" (was "5.12.0") +--- + +#### `5.5.18` + +- chore(dependencies): update to `Angular 20.3.7` + - `@angular-devkit/schematics` @ "20.3.7" (was "20.3.4") + - `@angular/build` @ "20.3.7" (was "20.3.4") + - `@angular/cli` @ "20.3.7" (was "20.3.4") + - `@angular/compiler-cli` @ "20.3.7" (was "20.3.3") + - `@angular/language-service` @ "20.3.7" (was "20.3.3") + - `@angular/animations` @ "20.3.7" (was "20.3.3") + - `@angular/cdk` @ "20.2.10" (was "20.2.7") + - `@angular/common` @ "20.3.7" (was "20.3.3") + - `@angular/compiler` @ "20.3.7" (was "20.3.3") + - `@angular/core` @ "20.3.7" (was "20.3.3") + - `@angular/forms` @ "20.3.7" (was "20.3.3") + - `@angular/localize` @ "20.3.7" (was "20.3.3") + - `@angular/platform-browser` @ "20.3.7" (was "20.3.3") + - `@angular/platform-browser-dynamic` @ "20.3.7" (was "20.3.3") + - `@angular/router` @ "20.3.7" (was "20.3.3") + - `@types/jasmine` @ "5.1.12" (was "5.1.9") + - `@types/node` @ "22.18.13" (was "22.18.8") + - `angular-eslint` @ "20.5.0" (was "20.3.0") + - `chart.js` @ "4.5.1" (was "4.5.0") + - `eslint` @ "9.38.0" (was "9.36.0") + - `jasmine-core` @ "5.12.0" (was "5.11.0") + - `typescript-eslint` @ "8.46.2" (was "8.45.0") + +--- + +#### `5.5.17` + +- chore(dependencies): update to `Angular 20.3.3` + - `@angular-devkit/schematics` @ "20.3.4" (was "20.3.3") + - `@angular/build` @ "20.3.4" (was "20.3.3") + - `@angular/cli` @ "20.3.4" (was "20.3.3") + - `@angular/compiler-cli` @ "20.3.3" (was "20.3.2") + - `@angular/language-service` @ "20.3.3" (was "20.3.2") + - `@angular/animations` @ "20.3.3" (was "20.3.2") + - `@angular/cdk` @ "20.2.7" (was "20.2.5") + - `@angular/common` @ "20.3.3" (was "20.3.2") + - `@angular/compiler` @ "20.3.3" (was "20.3.2") + - `@angular/core` @ "20.3.3" (was "20.3.2") + - `@angular/forms` @ "20.3.3" (was "20.3.2") + - `@angular/localize` @ "20.3.3" (was "20.3.2") + - `@angular/platform-browser` @ "20.3.3" (was "20.3.2") + - `@angular/platform-browser-dynamic` @ "20.3.3" (was "20.3.2") + - `@angular/router` @ "20.3.3" (was "20.3.2") + - `@types/node` @ "22.18.8" (was "22.18.6") + - `jasmine-core` @ "5.11.0" (was "5.10.0") + - `typescript` @ "5.9.3" (was "5.9.2") + - `typescript-eslint` @ "8.45.0" (was "8.44.1") + +--- + +#### `5.5.16` + +- chore(dependencies): update to `Angular 20.3.2` + - `@angular-devkit/schematics` @ "20.3.3" (was "20.3.2") + - `@angular/build` @ "20.3.3" (was "20.3.2") + - `@angular/cli` @ "20.3.3" (was "20.3.2") + - `@angular/compiler-cli` @ "20.3.2" (was "20.3.1") + - `@angular/language-service` @ "20.3.2" (was "20.3.1") + - `@angular/animations` @ "20.3.2" (was "20.3.1") + - `@angular/cdk` @ "20.2.5" (was "20.2.4") + - `@angular/common` @ "20.3.2" (was "20.3.1") + - `@angular/compiler` @ "20.3.2" (was "20.3.1") + - `@angular/core` @ "20.3.2" (was "20.3.1") + - `@angular/forms` @ "20.3.2" (was "20.3.1") + - `@angular/localize` @ "20.3.2" (was "20.3.1") + - `@angular/platform-browser` @ "20.3.2" (was "20.3.1") + - `@angular/platform-browser-dynamic` @ "20.3.2" (was "20.3.1") + - `@angular/router` @ "20.3.2" (was "20.3.1") + +--- + +#### `5.5.15` + +- chore(dependencies): update + +--- + +#### `5.5.14` + +- chore(dependencies): update to `Angular 20.3.1` + - "@angular/animations": "^20.3.1" + - "@angular/cdk": "^20.2.4" + - "@angular/common": "^20.3.1" + - "@angular/compiler": "^20.3.1" + - "@angular/core": "^20.3.1" + - "@angular/forms": "^20.3.1" + - "@angular/localize": "^20.3.1" + - "@angular/platform-browser": "^20.3.1" + - "@angular/platform-browser-dynamic": "^20.3.1" + - "@angular/router": "^20.3.1" + - "@angular-devkit/schematics": "^20.3.2" + - "@angular/build": "^20.3.2" + - "@angular/cli": "^20.3.2" + - "@angular/compiler-cli": "^20.3.1" + - "@angular/language-service": "^20.3.1" + - "@types/node": "^22.18.6" + - "eslint": "^9.36.0" + - "typescript": "~5.9.2" + - "typescript-eslint": "^8.44.1" + +--- + +#### `5.5.13` + +- chore(dependencies): update to `Angular 20.3.0` + + - `@angular-devkit/schematics` @ "20.3.1" (was "20.2.2") + - `@angular/build` @ "20.3.1" (was "20.2.2") + - `@angular/cli` @ "20.3.1" (was "20.2.2") + - `@angular/compiler-cli` @ "20.3.0" (was "20.2.4") + - `@angular/language-service` @ "20.3.0" (was "20.2.4") + - `@angular/animations` @ "20.3.0" (was "20.2.4") + - `@angular/cdk` @ "20.2.3" (was "20.2.2") + - `@angular/common` @ "20.3.0" (was "20.2.4") + - `@angular/compiler` @ "20.3.0" (was "20.2.4") + - `@angular/core` @ "20.3.0" (was "20.2.4") + - `@angular/forms` @ "20.3.0" (was "20.2.4") + - `@angular/localize` @ "20.3.0" (was "20.2.4") + - `@angular/platform-browser` @ "20.3.0" (was "20.2.4") + - `@angular/platform-browser-dynamic` @ "20.3.0" (was "20.2.4") + - `@angular/router` @ "20.3.0" (was "20.2.4") + - `@types/node` @ "22.18.4" (was "22.18.1") + - `ng-packagr` @ "20.3.0" (was "20.2.0") + - `angular-eslint` @ "20.3.0" (was "20.2.0") + - `eslint` @ "9.35.0" (was "9.34.0") + - `typescript-eslint` @ "8.44.0" (was "8.42.0") + +--- + +#### `5.5.12` + +- chore(dependencies): update to `Angular 20.2.4` + - `@angular-devkit/schematics@"20.2.2"` (was "20.2.1") + - `@angular/build@"20.2.2"` (was "20.2.1") + - `@angular/cli@"20.2.2"` (was "20.2.1") + - `@angular/compiler-cli@"20.2.4"` (was "20.2.2") + - `@angular/language-service@"20.2.4"` (was "20.2.2") + - `@angular/animations@"20.2.4"` (was "20.2.2") + - `@angular/cdk@"20.2.2"` (was "20.2.1") + - `@angular/common@"20.2.4"` (was "20.2.2") + - `@angular/compiler@"20.2.4"` (was "20.2.2") + - `@angular/core@"20.2.4"` (was "20.2.2") + - `@angular/forms@"20.2.4"` (was "20.2.2") + - `@angular/localize@"20.2.4"` (was "20.2.2") + - `@angular/platform-browser@"20.2.4"` (was "20.2.2") + - `@angular/platform-browser-dynamic@"20.2.4"` (was "20.2.2") + - `@angular/router@"20.2.4"` (was "20.2.2") + - `@types/node@"22.18.1"` (was "22.18.0") + - `jasmine-core@"5.10.0"` (was "5.9.0") + - `typescript-eslint@"8.42.0"` (was "8.41.0") + +--- + +#### `5.5.11` + +- chore(dependencies): update to `Angular 20.2.2` + +--- + +#### `5.5.10` + +- chore(dependencies): update to `Angular 20.2.x` + +--- + +#### `5.5.9` + +- chore(dependencies): update + +--- + +#### `5.5.8` + +- fix(toaster): Unexpected state: no hydration info available for a given TNode, which represents a view container. [Expected=> null != undefined <=Actual] - ensure that the contentToasts is available before accessing it - tempfix +- refactor(toaster): provide ToasterService for ToasterComponent instead of root +- refactor(toast): migrate visible to linkedSignal +- chore(dependencies): update + +--- + +#### `5.5.7` + +- chore(dependencies): update to `Angular 20.1.6` +- fix(popover): use afterRenderEffect() instead of effect() to avoid NG0500: During hydration expected... +- fix(tooltip): use afterRenderEffect() instead of effect() to avoid NG0500: During hydration expected... +- fix(table): use afterRenderEffect() instead of effect() to avoid NG0500: During hydration expected... +- refactor(table): static ngAcceptInputType_ for boolean inputs +- refactor(tab.directive): migrate disabled to linkedSignal + +--- + +#### `5.5.6` + +- chore(dependencies): update to `Angular 20.1.4` +- refactor(sidebar-nav-divider): signal inputs, test +- refactor(sidebar-nav-label): signal inputs, test +- refactor(sidebar-nav-title): signal inputs, test +- refactor(sidebar-nav-link): signal inputs, test + +--- + +#### `5.5.5` + +- refactor(breadcrumb-router): migrate breadcrumbs$ toSignal, use `attrib` prop for breadcrumb-item, test update, cleanup +- fix(breadcrumb-item): remove `attributes` input conflicting with Element's readonly property, use `attribs` instead + +--- + +#### `5.5.4` + +- chore(dependencies): update to `Angular 20.1` +- fix(tab-list): keyboard arrows handle for `rtl` +- refactor(rtl.service): ensure RTL detection works regardless of HTML attribute or CSS property direction (computed style check) + +--- + +#### `5.5.3` + +- chore(dependencies): update + +--- + +#### `5.5.2` + +- chore(dependencies): update + +--- + +#### `5.5.1` + +- fix(progress): TS2540: Cannot assign to `value` because it is a read-only property - conflicting on directive composition with ProgressBarDirective +- chore(dependencies): update + +--- + +#### `5.5.0` + +- chore(dependencies): update to `Angular 20` +- chore(migration): import `DOCUMENT` from `@angular/core` +- chore(migration): rename the `afterRender` lifecycle hook to `afterEveryRender` +- fix(collapse): NG0953: Unexpected emit for destroyed `OutputRef`. The owning directive/component is destroyed. +- refactor(carousel): carousel.config migrate to inject() + +--- + +#### `5.4.14` + +- fix(button): cButton directive loosing tabindex attribute, refactor; close #228 - thanks @bernik1980 +- fix(list-group-item): cListGroupItem directive loosing tabindex attribute, refactor +- fix(nav-link): cNavLink directive loosing tabindex attribute, refactor +- refactor(form): minor cleanups +- chore(dependencies): update + +--- + +#### `5.4.13` + +- fix(modal): scrollbar disappears on backdrop=false, closes #224 - thanks @tturbs +- chore(dependencies): update + +--- + +#### `5.4.12` + +- chore(dependencies): update + +--- + +#### `5.4.11` + +- chore(dependencies): update + +--- + +#### `5.4.10` + +- refactor(tabs-2): host bindings, host listeners, cleanup +- chore(dependencies): update + +--- + +#### `5.4.9` + +- chore(dependencies): update + +--- + +#### `5.4.8` + +- fix(form-check-input): checked prop overwrites checked from writeValue in ReactiveForms +- chore(dependencies): update + +--- + +#### `5.4.7` + +- fix(avatar): default size should be '' not `md` +- chore(dependencies): update + +--- + +#### `5.4.6` + +- chore(dependencies): update +- refactor(dropdown): migrate to contendChild(), constructor-based dependency injection to inject(), cleanup +- refactor(dropdown-item): add default role prop, cleanup +- refactor(dropdown-menu): migrate to contendChildren(), cleanup + +--- + +#### `5.4.5` + +- chore(dependencies): update +- refactor(coreui.types): add BooleanInput and NumberInput types + +--- + +#### `5.4.3` + +- chore(dependencies): update to `Angular 19.2` +- refactor(icon.component): cleanup, classList simplify +- refactor(chartjs.component): signal inputs, host bindings, cleanup +- fix(table-color): allow undefined type for color input prop +- fix(align): allow undefined type for align input prop + +--- + +#### `5.4.1` + +- chore(dependencies): update + +--- + +#### `5.4.0` + +- chore(dependencies): version bump and tilde `~` dependencies for @coreui/* packages with Sass modules + +--- + +#### `5.3.16` + +- chore(dependencies): tilde `~` dependencies for @coreui/* packages to avoid Sass modules mismatch + +--- + +#### `5.3.15` + +- refactor: linkedSignal source cleanup +- refactor(form): host binding, cleanup, tests +- refactor(form-floating): host binding, cleanup, tests +- test(form-select): coverage +- test(form-check-input): indeterminate coverage +- refactor(modal-toggle): host binding, cleanup, tests +- refactor(navbar-toggler): host binding, cleanup, tests +- refactor(template-id): signal inputs, cleanup, tests +- test(bg-color): css classes coverage +- test(border): css classes coverage +- fix(border): border input boolean +- test(rounded): css classes coverage +- fix(rounded): border input boolean +- refactor(text-bg-color): host binding, cleanup, tests +- refactor(text-color): host binding, cleanup, tests +- test(shadow-on-scroll): coverage +- test(visible): coverage +- refactor(utilities): module minor cleanups +- refactor(sidebar-toggler): signal inputs, host bindings, cleanup +- refactor(sidebar-toggle): signal inputs, host bindings, cleanup +- refactor(sidebar-nav-link): signal output +- refactor(sidebar-brand): signal inputs, host bindings, cleanup +- refactor(sidebar): signal inputs, host bindings, cleanup, use inert attribute +- chore(dependencies): update --- diff --git a/CLI.md b/CLI.md index cd0a31a1..88ad3213 100644 --- a/CLI.md +++ b/CLI.md @@ -1,27 +1,59 @@ -# @coreui/angular v5 +# @coreui/angular v5.6 -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 19.1.0. +This project was generated using [Angular CLI](https://github.com/angular/angular-cli) version 21.0.2. ## Development server -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. +To start a local development server, run: + +```bash +ng serve +``` + +Once the server is running, open your browser and navigate to `http://localhost:4200/`. The application will automatically reload whenever you modify any of the source files. ## Code scaffolding -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. +Angular CLI includes powerful code scaffolding tools. To generate a new component, run: + +```bash +ng generate component component-name +``` + +For a complete list of available schematics (such as `components`, `directives`, or `pipes`), run: + +```bash +ng generate --help +``` -## Build +## Building -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. +To build the project run: + +```bash +ng build +``` + +This will compile your project and store the build artifacts in the `dist/` directory. By default, the production build optimizes your application for performance and speed. ## Running unit tests -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). +To execute unit tests with the [Karma](https://karma-runner.github.io) test runner, use the following command: + +```bash +ng test +``` ## Running end-to-end tests -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. +For end-to-end (e2e) testing, run: + +```bash +ng e2e +``` + +Angular CLI does not come with an end-to-end testing framework by default. You can choose one that suits your needs. -## Further help +## Additional Resources -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. +For more information on using the Angular CLI, including detailed command references, visit the [Angular CLI Overview and Command Reference](https://angular.dev/tools/cli) page. diff --git a/README.md b/README.md index 3f430044..f82c2680 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@
-
+
- Angular Components Library built on top of Bootstrap 5.3 and TypeScript 5.5.
+ Angular Components Library built on top of Bootstrap 5.x and TypeScript 5.9
- Explore CoreUI for Angular docs »
+ Explore CoreUI for Angular docs and examples »
-
- Report a bug
+ CoreUI Docs
+ ·
+ Report a bug
·
- Request a feature
+ Request a feature
·
- Blog
+ Blog
+Featured CoreUI for Angular libraries:
+
+· CoreUI Components for Angular
+
+· CoreUI Angular wrapper for Chart.js v4
+
+· CoreUI Icons for Angular
+
-
+
- Explore @coreui/angular-chartjs docs & examples »
+ Explore @coreui/angular-chartjs docs & examples »
- Report bug
+ Report bug
·
- Request feature
+ Request feature
·
Blog
+Featured CoreUI for Angular libraries:
+
+· CoreUI Components for Angular
+
+· CoreUI Angular wrapper for Chart.js v4
+
+· CoreUI Icons for Angular
+