Skip to content

feat(flex-fields): add Matrix and Table built-in field types - #231

Merged
duguankui merged 1 commit into
mainfrom
feat/flex-fields-matrix-table
Sep 5, 2026
Merged

feat(flex-fields): add Matrix and Table built-in field types#231
duguankui merged 1 commit into
mainfrom
feat/flex-fields-matrix-table

Conversation

@duguankui

Copy link
Copy Markdown
Member

Summary

  • Ports Matrix (polymorphic block repeater) and Table (homogeneous grid) from Dignite.Site's Dignite.FlexFields.Site into flex-fields as built-in field types, alongside Text/Number/DateTime/Select/Boolean/Tree — wire format unchanged, so fields already stored under the Site implementation keep working.
  • Adds the shared composite-type contracts (ICompositeFieldType, INormalizesValue, InlineFieldDefinition, CompositeFieldNesting) to Dignite.Abp.FlexFields.Abstractions, SSR views to .Web, and matching ff-matrix-*/ff-table-* components to @dignite/ng.flex-fields (FieldTypeDefinition gains a composite flag).
  • Updates the demo to seed both types, normalize composite values on save, and reject over-deep nesting; widens the field designer modal and polishes the Matrix/Table control styling (item spacing, icon-only remove/add buttons, no redundant per-cell label in Table).

Test plan

  • dotnet build Dignite.Abp.FlexFields.slnx — 0 errors
  • dotnet test Dignite.Abp.FlexFields.slnx — 302 passed (Tests 127, Web.Tests 20, EF.Tests 83, MongoDB.Tests 72)
  • yarn lint --max-warnings=0 — all four Angular projects pass
  • yarn test --watch=false — 296 tests passed
  • yarn build:lib, build:lib:file-explorer, build:lib:ckeditor, build:prod — all succeed
  • Manual check of the field designer UI (Matrix/Table config, control, view) in the running demo

Ports Matrix (polymorphic block repeater) and Table (homogeneous grid) from
Dignite.Site's Dignite.FlexFields.Site into the kernel as built-ins, alongside
Text/Number/DateTime/Select/Boolean/Tree, with the wire format unchanged so
fields already stored under the Site implementation keep working.

Adds the shared composite-type contracts (ICompositeFieldType, INormalizesValue,
InlineFieldDefinition, CompositeFieldNesting) to Abstractions, SSR views to
.Web, and matching ff-matrix-*/ff-table-* components to @dignite/ng.flex-fields
(FieldTypeDefinition gains a composite flag). The demo seeds both types,
normalizes composite values on save, and rejects over-deep nesting. Also widens
the demo's field designer modal and cleans up the Matrix/Table control styling
(item spacing, icon-only remove/add buttons, no redundant per-cell label in
Table since the column header already names it).
@github-actions github-actions Bot added documentation Improvements or additions to documentation area: angular Changes under either module's angular/ Angular workspace module: flex-fields Changes under flex-fields/ (Dignite.Abp.FlexFields) labels Sep 5, 2026
@duguankui
duguankui merged commit 2192a8c into main Sep 5, 2026
2 checks passed
@duguankui
duguankui deleted the feat/flex-fields-matrix-table branch September 5, 2026 05:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: angular Changes under either module's angular/ Angular workspace documentation Improvements or additions to documentation module: flex-fields Changes under flex-fields/ (Dignite.Abp.FlexFields)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant