Fix nested enum default values (#7823)
This commit is contained in:
parent
8ccea0c526
commit
1d1ea96d05
@ -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 => {
|
||||
|
||||
@ -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>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user