fix(striker-ui): correct validity test on first render in InputWithRef

main
Tsu-ba-me 2 years ago
parent 10126a5a95
commit 8abd47eb18
  1. 13
      striker-ui/components/InputWithRef.tsx
  2. 4
      striker-ui/components/StrikerConfig/AddPeerDialog.tsx

@ -5,7 +5,6 @@ import {
forwardRef, forwardRef,
ReactElement, ReactElement,
useCallback, useCallback,
useEffect,
useImperativeHandle, useImperativeHandle,
useMemo, useMemo,
useState, useState,
@ -26,7 +25,7 @@ type InputWithRefOptionalPropsWithoutDefault<
TypeName extends keyof MapToInputType, TypeName extends keyof MapToInputType,
> = { > = {
inputTestBatch?: InputTestBatch; inputTestBatch?: InputTestBatch;
onFirstRender?: (args: { isRequired: boolean }) => void; onFirstRender?: InputFirstRenderFunction;
valueKey?: CreateInputOnChangeHandlerOptions<TypeName>['valueKey']; valueKey?: CreateInputOnChangeHandlerOptions<TypeName>['valueKey'];
}; };
@ -167,11 +166,15 @@ const InputWithRef = forwardRef(
[initOnFocus, inputTestBatch], [initOnFocus, inputTestBatch],
); );
useEffect(() => {
if (isFirstRender) { if (isFirstRender) {
onFirstRender?.call(null, { isRequired }); const isValid =
testInput?.call(null, {
inputs: { [INPUT_TEST_ID]: { value: inputValue } },
isIgnoreOnCallbacks: true,
}) ?? false;
onFirstRender?.call(null, { isValid });
} }
}, [isFirstRender, isRequired, onFirstRender]);
useImperativeHandle( useImperativeHandle(
ref, ref,

@ -61,8 +61,8 @@ const AddPeerDialog = forwardRef<
const buildInputFirstRenderFunction = useCallback( const buildInputFirstRenderFunction = useCallback(
(key: string) => (key: string) =>
({ isRequired }: { isRequired: boolean }) => { ({ isValid }: InputFirstRenderFunctionArgs) => {
setFormValidity(buildObjectStateSetterCallback(key, !isRequired)); setFormValidity(buildObjectStateSetterCallback(key, isValid));
}, },
[], [],
); );

Loading…
Cancel
Save