Fix nested enum default values (#7823)

This commit is contained in:
Jaco 2022-07-04 12:43:15 +02:00 committed by GitHub
parent 8ccea0c526
commit 1d1ea96d05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 8 deletions

View File

@ -24,7 +24,7 @@ interface Options {
}
interface Initial {
initialEnum: string | null;
initialEnum: string | undefined | null;
initialParams: RawParam[] | undefined | null;
}
@ -46,13 +46,13 @@ function getOptions (registry: Registry, type: TypeDef): Options {
};
}
function getInitial (defaultValue: RawParam): Initial {
function getInitial (defaultValue: RawParam, options: Option[]): Initial {
return {
initialEnum: defaultValue && defaultValue.value
? defaultValue.value instanceof Enum
? defaultValue.value.type
: Object.keys(defaultValue.value as Record<string, unknown>)[0]
: null,
: options[0] && options[0].value,
initialParams: defaultValue && defaultValue.value
? defaultValue.value instanceof Enum
? [{ isValid: true, value: defaultValue.value.inner }]
@ -73,7 +73,7 @@ function EnumParam (props: Props): React.ReactElement<Props> {
const { className = '', defaultValue, isDisabled, isError, label, onChange, overrides, registry, type, withLabel } = props;
const [{ options, subTypes }] = useState<Options>(() => getOptions(registry, type));
const [current, setCurrent] = useState<ParamDef[] | null>(() => getCurrent(registry, type, defaultValue, subTypes));
const [{ initialEnum, initialParams }, setInitial] = useState<Initial>(() => getInitial(defaultValue));
const [{ initialEnum, initialParams }, setInitial] = useState<Initial>(() => getInitial(defaultValue, options));
const _onChange = useCallback(
(value: string): void => {

View File

@ -14,13 +14,13 @@ import useParamDefs from './useParamDefs';
function getInitialValues ({ value }: RawParam): RawParam[] {
return value instanceof Tuple
? value.map((value) => ({ isValid: true, value: value as unknown }))
? value.map((value: unknown) => ({ isValid: true, value }))
: value as RawParam[];
}
function TupleDisplay (props: Props): React.ReactElement<Props> {
const params = useParamDefs(props.registry, props.type);
const { className = '', defaultValue, isDisabled, label, onChange, overrides, withLabel } = props;
const { className = '', defaultValue, isDisabled, label, onChange, overrides, registry, type, withLabel } = props;
const params = useParamDefs(registry, type);
const [values] = useState<RawParam[]>(() => getInitialValues(defaultValue));
const _onChangeParams = useCallback(
@ -48,7 +48,7 @@ function TupleDisplay (props: Props): React.ReactElement<Props> {
onChange={_onChangeParams}
overrides={overrides}
params={params}
registry={props.registry}
registry={registry}
values={values}
/>
</div>