• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

eclipsesource / jsonforms / 39244454268
85%

Build:
DEFAULT BRANCH: master
Ran 19 Oct 2026 11:29AM UTC
Jobs 1
Files 804
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

19 Oct 2026 11:24AM UTC coverage: 84.795% (+0.03%) from 84.766%
39244454268

push

github

web-flow
fix(angular-material): don't mutate detail UI schemas in renderers (#2628)

Fixes #2343

* fix(angular-material): don't mutate the given ui schema in array layouts

ArrayLayoutRenderer#getProps was called from the template, i.e. on every
change detection cycle, and called setReadonly/unsetReadonly on the result of
findUISchema. For an inline options.detail - or a ui schema from the registry -
findUISchema hands back the very object the user passed in, and
setReadonly/unsetReadonly modify it in place.

While the array is empty getProps is never called, so the first "add" is the
first time options.readonly is written into the user's ui schema. Ancestor
layouts track their children by `path + JSON.stringify(uischema)`, so that write
changes the track key of the whole branch, NgForOf destroys and re-creates the
embedded view, and any state below it is lost. For a Categorization that means
the selected tab jumps back to the first one - only on the first "add", because
later ones write the same value.

findUISchema is now called from mapAdditionalProps instead of the template, its
result is copied before setting the readonly option, and it is only recalculated
when one of its inputs actually changed. The items' props are precalculated as
well, so that the template no longer hands a new object to jsonforms-outlet on
every change detection cycle - each of those made the outlet deep clone the
whole form state, once per item.

Also adds an example reproducing the issue.

* fix(angular-material): don't mutate the given ui schema in object controls

ObjectControlRenderer wrote `type`, `label` and the `readonly` option directly
into the ui schema returned by findUISchema, which for an inline
options.detail - or a ui schema from the registry - is the very object the user
passed in. Besides corrupting the user's ui schema, this can destroy and
re-create unrelated parts of the form, because ancestor layouts track their
children by the serialized ui schema.

The resul... (continued)

12633 of 31996 branches covered (39.48%)

41 of 41 new or added lines in 5 files covered. (100.0%)

20534 of 24216 relevant lines covered (84.8%)

34.03 hits per line

Jobs
ID Job ID Ran Files Coverage
1 39244454268.1 19 Oct 2026 11:29AM UTC 804
84.8
GitHub Action Run
Source Files on build 39244454268
  • Tree
  • List 804
  • Changed 4
  • Source Changed 0
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • 93aa34cb on github
  • Prev Build on master (#39073811427)
  • Next Build on master (#39255133317)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc