@@ -57,7 +57,7 @@ export type UiSchemaRoot = UiSchemaDefinition & {
5757```
5858## Evaluation rules
5959
60- Usually ui schema corresponds to the data structure described by json schema.
60+ Usually UI schema corresponds to the data structure described by json schema.
6161
6262For example, with this JSON schema, the following UI schema would be correct:
6363
@@ -88,12 +88,12 @@ for the value of the `$ref` key, other fields will be ignored.
8888
8989### Array
9090
91- Instead of defining indices in the ui schema, the ` items ` keyword should be used
92- to specify the ui schema for the elements of the array.
91+ Instead of defining indices in the UI schema, the ` items ` keyword should be used
92+ to specify the UI schema for the elements of the array.
9393
9494For a fixed array ` items ` also can be an array.
9595If you have additional items you should use ` additionalItems ` keyword
96- to specify the ui schema for them.
96+ to specify the UI schema for them.
9797
9898```
9999{
@@ -104,24 +104,46 @@ to specify the ui schema for them.
104104
105105### Object
106106
107- You should use ` additionalProperties ` keyword to specify the ui schema for
107+ You should use ` additionalProperties ` keyword to specify the UI schema for
108108additional properties.
109109
110- You can use ` additionalPropertyKeyInput ` keyword to define an ui schema for
110+ You can use ` additionalPropertyKeyInput ` keyword to define an UI schema for
111111the additional property key input field.
112112
113113### oneOf/anyOf
114114
115- You can define separate ui schemas for each ` oneOf/anyOf ` branch
116- using the corresponding keyword in the ui schema.
117- Otherwise the ui schema of the current field will be used.
115+ You can define separate UI schemas for each ` oneOf/anyOf ` branch
116+ using the corresponding keyword in the UI schema.
117+ Otherwise the UI schema of the current field will be used.
118118
119119```
120120{
121121 oneOf: [<uiSchema>, ...]
122122}
123123```
124124
125+ ## UI components
126+
127+ Using the ` ui:components ` property, you can replace any
128+ [ form component] ( ../theme/#component-types ) with a compatible one
129+ using the name of the connected component or
130+ the component itself directly.
131+
132+ Component ` A ` is compatible with component ` B ` if the properties and bindings
133+ of component ` B ` extend the properties and bindings of component ` A ` .
134+
135+ ``` ts
136+ export type CompatibleComponentType <T extends ComponentType > = {
137+ [C in ComponentType ]: Expand <ComponentProps [T ]> extends Expand <
138+ ComponentProps [C ]
139+ >
140+ ? ComponentBindings [T ] extends ComponentBindings [C ]
141+ ? C
142+ : never
143+ : never ;
144+ }[ComponentType ];
145+ ```
146+
125147## UI options
126148
127149The ` UiOptions ` type is an extensible set of components options. By default it
0 commit comments