Bump Angular-related dependencies and devDependencies from ~21.0.0/~21.1.0 to ~21.2.0 across ng-packs, schematics and template package.json files. Also update TypeScript to ~5.9.0 in schematics and latest-versions, bump ng-packagr to ~21.2.0 and ng-zorro-antd to ~21.1.0, and adjust related @schematics/@angular-devkit packages for compatibility.
Add the 'pb-0' class to the modal header div in modal.component.html to remove the default bottom padding when abpHeader() is present. This fixes layout/spacing in the theme-shared modal header.
Remove a duplicated 'Permissions' <h4> localization header from the resource-permission-form template. This eliminates a redundant heading above the permission checkbox list in the edit branch to improve the form layout.
Replace the previous ngTabs/ngTab implementation in users.component.html with ng-bootstrap's ngbNav/ngbNavItem/ngbNavContent and an ngbNavOutlet for rendering tab content. Update users.component.ts to import and declare NgbNavModule and remove the removed @angular/aria tab imports. Also remove the @angular/aria peerDependency from the package.json for the identity package. These changes migrate the users UI to use ngbNav for tabbing and keep existing form/roles markup and localization intact.
Change inputId from input.required<string>() to input<string>() so the id is no longer mandatory. This relaxes the API to allow FormInputComponent instances without an explicit id and avoids forcing callers to provide one.
Switch DisabledDirective from the OnChanges lifecycle to Angular signal-based reactivity: remove OnChanges/SimpleChanges usage and import effect/input instead. Create an effect that reads the abpDisabled input signal and enables/disables the injected NgControl accordingly, preserving previous behavior while using reactive signals (addresses timing/changes handling referenced in Angular issue).
Import Angular's effect and add a reactive effect that reads this.data() and, if data.inputs and defaultComponentRef are present, calls setDefaultComponentInputs(). Ensures default component inputs are reapplied when the directive's input data changes.
Replace classic @Input properties with Angular signal-based inputs (input()) for providerName, providerKey, hideBadges, entityDisplayName and visible; add corresponding output signal for visibleChange. Provide getter/setter overrides to preserve runtime assignment compatibility. Update template to call entityDisplayName() as a signal. Add a constructor effect that reacts to visibleInput changes to open/init or close the modal and keep internal _visible state in sync. Also adjust imports to include effect, input, output and untracked.
Replace PropData with ReadonlyPropData for the component input and update all usages to treat this.data() as the prop data (remove prior .data dereferences). Remove the unused PropData import, route the options() call and disabled checks to use the new shape, and add cdRef.markForCheck() in the reactive effect to ensure change detection after updates.
Return early in ExtensibleFormPropComponent effect when this.data()?.data is falsy. Previously the effect only checked currentProp and could attempt to access properties on undefined data, causing runtime errors; this adds a defensive check to avoid that.
Multiple fixes and refactors across components and directives:
- chart.component.ts: Make initChart accept data and options, pass them when initializing/reinitializing, and avoid unnecessary early returns in effects.
- extensible-form-prop.component.ts: Guard against missing data, reuse a local data variable, pass record to injector providers, and tighten autofocus condition checks.
- extensible-table.component.ts: Extract record preparation into prepareRecord to simplify data mapping logic.
- tree.component.ts: Cache checked keys once when toggling node selection to avoid repeated calls.
- autofocus.directive.ts: Remove deprecated numberAttribute and use a transform that safely converts input to Number.
- permission-management.component.ts: Cache providerName/providerKey, validate them before fetching, and use cached values in filters and checks.
- visible.directive.ts: Avoid redundant condition updates by tracking the last input value.
These changes improve safety (null checks), readability (helper extraction), and performance (reduced repeated computations).
Migrate library schematic test setup from Karma/Jasmine to Vitest and Angular standalone testing. Removed Karma config and legacy test.ts templates, added src/test-setup.ts templates that initialize Angular testing with zone.js/testing and BrowserTestingModule. Updated tsconfig.lib.json to exclude src/test-setup.ts and tsconfig.spec.json to use "vitest/globals" types and simplified include/files. Adjusted generate-lib to use a UnitTest builder with a vitest runner and buildTarget instead of Karma-specific options, and added UnitTest to Builders enum.
Replaced Angular InputSignal and OutputEmitterRef types with standard string, boolean, and EventEmitter types in feature-management and permission-management models. Updated corresponding components to remove interface implementations, simplifying input/output handling and improving compatibility.
Migrates Tree, FeatureManagement, and PermissionManagement components to use Angular's new signal-based input and output APIs. Updates templates and internal logic to access input values as functions, replaces EventEmitter with output signals, and synchronizes internal state using signals and effects. Also updates related model interfaces to use InputSignal and OutputEmitterRef types.
Refactors extensible form, table, and related components to use Angular's signal-based input() API instead of @Input and ngOnChanges. Updates internal state management to use signals and effects, improves type safety with ReadonlyPropData, and updates templates to use new signal-based accessors. Removes legacy OnChanges logic and adapts utility and directive code to the new reactive paradigm.
Migrates multiple components and directives to use Angular's new input() and signal() APIs, replacing legacy @Input and @Output decorators. Updates templates to use signal-based accessors, improves reactivity with effect(), and modernizes event emitters with output(). This refactor enhances type safety, consistency, and future-proofs the codebase for upcoming Angular versions.
Replaces HostBinding and getter methods with Angular signals and computed properties for class, style, and title bindings. Improves reactivity and code clarity by leveraging Angular's new reactive primitives.
Replaces @Input with Angular's new signal-based input and effect for reactive updates. Simplifies lifecycle management by removing OnInit and handling input changes via effect, improving code clarity and reactivity.
Replaces traditional @Input() properties with Angular's new input() signal API in multiple components, directives, and templates. Updates all usages to call input signal functions, ensuring compatibility and reactivity. This change modernizes the codebase, improves type safety, and prepares for future Angular features.
Updated FeatureManagementComponentOutputs and PermissionManagementComponentOutputs to allow visibleChange to be either EventEmitter<boolean> or OutputEmitterRef<boolean>. This change improves compatibility with different output emitter types in Angular components.