When generating a project with a company name containing dots (e.g.,
'Demo.App.QoL'), the template replacement was incorrectly camelCasing
the company name as 'demo.App' instead of 'demo.app'.
This was because SolutionRenamer used ToCamelCase() on the entire string
rather than on each dot-separated segment individually. The runtime JS
proxy generator (JQueryProxyScriptGenerator.CamelCaseWithNamespace) applies
camelCase to each segment, causing a mismatch.
Added ToCamelCaseWithNamespace() helper to match runtime behavior.
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.
Add a new community article with summary and cover image describing how to implement multiple global query filters in EF Core using ABP Framework. The post covers built-in filters (ISoftDelete, IMultiTenant), custom filters, IDataFilter usage, UDF mapping for performance, testing examples, and best practices. Files added: post.md, summary.md, and images/cover.png.
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.