|
| 1 | +--- |
| 2 | +"@object-ui/app-shell": patch |
| 3 | +"@object-ui/components": patch |
| 4 | +"@object-ui/plugin-form": patch |
| 5 | +"@object-ui/fields": patch |
| 6 | +--- |
| 7 | + |
| 8 | +fix(page,field): consume the spec's `type`/`label`/`maxLength` keys (framework#1878 §3 naming-drift recheck) |
| 9 | + |
| 10 | +Three forward-drifts where objectui read a different key than the spec |
| 11 | +declares, so authoring the documented key silently no-oped: |
| 12 | + |
| 13 | +- **page `type` → `pageType`** (app-shell + components): `PageSchema` declares |
| 14 | + the page KIND as `type`, but `PageRenderer` reads `schema.pageType` and fell |
| 15 | + back to `'record'` — and nothing mapped between them. Every non-record page |
| 16 | + (`home`/`app`/`list`/`utility`) rendered with the record max-width, a wrong |
| 17 | + `data-page-type` attribute, and a suppressed header. `PageView` now passes |
| 18 | + `pageType` alongside the SchemaNode discriminator `type`. |
| 19 | +- **page `label` → `title`** (components): `PageSchema.label` is required but the |
| 20 | + region renderer read only `title`. Now dual-reads `title ?? label`, mirroring |
| 21 | + the fallback `DashboardRenderer` already uses. Coupled with the above — the |
| 22 | + header is gated on `pageType !== 'record'`, so both were needed for a title to |
| 23 | + appear. |
| 24 | +- **field `maxLength`/`minLength`** (plugin-form + fields): validation already |
| 25 | + dual-read these, but `ObjectForm`'s HTML-attribute pass and `TextAreaField` |
| 26 | + read `max_length` only, so a spec-authored `maxLength` gave no browser cap and |
| 27 | + no character counter. Both now dual-read, matching `buildValidationRules`. |
| 28 | + |
| 29 | +Verified in the browser against the showcase: `capability_map` (`type: 'home'`) |
| 30 | +now renders `data-page-type="home"`, the `home` max-width and its page title; |
| 31 | +record pages are unchanged. |
0 commit comments