Update Low-Code docs to introduce a Low-Code Initializer pattern and model.json hot-reload support. Shows using DynamicEntityAssemblyInfo with rootNamespace and projectRootPath, adds a parameter table, and replaces simple assembly registration with an AsyncOneTimeRunner-based InitializeAsync that registers reference entities, assemblies, optional fluent API configs, and calls DynamicModelManager.Instance.InitializeAsync(). Adds a ResolveDomainSourcePath helper, guidance to call the initializer from Program.cs (and DbMigrator/other entry points) before building the app, and notes fallback to embedded resources when projectRootPath is empty.
Reflect API and copy updates in low-code docs. foreign-access.md: replace ConfigureProperty/SetForeignKey example with entity.AddOrGetProperty and assignment of a ForeignKeyDescriptor (EntityName, DisplayPropertyName, Access). index.md: minor wording tweaks for clarity and a corrected link anchor to the three-layer configuration system. model-json.md: remove the empty "foreignKeys" array from the entity JSON example to avoid implying it's required.
Clarify interceptor behavior in low-code docs: update fluent-api.md and interceptors.md to state that Replace Create interceptors must return the new entity's Id (Guid) so the system can fetch and return the created entity. Added an example showing `return result.Id;` after `db.insert(...)`, and noted that Replace-Update and Replace-Delete do not need to return a value.
Replace "ABP Low-Code Module" with "ABP Low-Code System" across low-code documentation to reflect the naming change. Updated the doc-seo JSON descriptions and a couple of in-page references. Affected files: docs/en/low-code/custom-endpoints.md, docs/en/low-code/foreign-access.md, docs/en/low-code/interceptors.md, docs/en/low-code/model-json.md, docs/en/low-code/reference-entities.md, docs/en/low-code/scripting-api.md.
Add support and documentation for a new interceptor type, Replace, which runs JavaScript instead of the default DB operation. Updates made across low-code docs:
- docs/en/low-code/interceptors.md: Document Replace semantics for Create/Update/Delete, add examples and model.json/type notes.
- docs/en/low-code/fluent-api.md: Expand AddInterceptor docs to list allowed name/type values and note Replace behavior; small attribute call-site change (DynamicPropertySetByClients(false)).
- docs/en/low-code/index.md: Simplify Getting Started by removing the package table and renumbering steps (register assembly, configure DbContext, define entity, add migration).
- docs/en/low-code/scripting-api.md: Remove db.getList entry from the scripting API table.
These changes clarify interceptor capabilities (Pre/Post/Replace) and streamline the quickstart instructions.
Add comprehensive Low-Code System documentation and navigation. Introduces new docs under docs/en/low-code (index.md, fluent-api.md, model-json.md, scripting-api.md, interceptors.md, custom-endpoints.md, reference-entities.md, foreign-access.md) and updates docs/en/docs-nav.json to include a "Low-Code System" section linking these pages.
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.
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.