Static ReadonlypropertiesElement property declarations.
All four "data" properties (schema, value, resolver,
widgets) carry attribute: false: Custom Element attributes
are strings, and these payloads (an arbitrary Zod schema, an
arbitrary JS value, a resolver function map, a widget tag map)
cannot round-trip through attribute serialisation. Set them via
direct property assignment.
readOnly is a boolean attribute (and reflects to DOM) so the
common "render read-only view" case is reachable from plain
HTML markup (<schema-component readonly></schema-component>).
The capitalisation is readOnly on the property and readonly
on the attribute — matching the HTML readonly attribute on
<input> / <textarea>.
Reactive property declarations. Each field is declared with
declare (no runtime emit) so Lit's static properties
accessors are not shadowed by class-field initialisers. Default
values are seeded in the constructor.
ProtectedmakeBuild the recursive renderChild closure threaded through every
container renderer.
ProtectedrenderDispatch a single walked field through the resolver, widget
registry, and recursion limit. Parallel to
renderField in react/SchemaComponent.tsx.
Invoked when the component is added to the document's DOM.
In connectedCallback() you should setup tasks that should only occur when
the element is connected to the document. The most common of these is
adding event listeners to nodes external to the element, like a keydown
event handler added to the window.
connectedCallback() {
super.connectedCallback();
addEventListener('keydown', this._handleKeydown);
}
Typically, anything done in connectedCallback() should be undone when the
element is disconnected, in disconnectedCallback().
Lit Custom Element rendering a schema in read-only mode.
Tag:
<schema-view>(registered byregisterSchemaComponents).