Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions packages/components/src/toggle-control/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ function UnforwardedToggleControl(
className,
onChange,
disabled,
...additionalProps
}: WordPressComponentProps< ToggleControlProps, 'input', false >,
ref: ForwardedRef< HTMLInputElement >
) {
Expand Down Expand Up @@ -74,6 +75,7 @@ function UnforwardedToggleControl(
aria-describedby={ describedBy }
disabled={ disabled }
ref={ ref }
{ ...additionalProps }
/>
<FlexBlock
as="label"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
/**
* WordPress dependencies
*/
import { forwardRef, useRef, useEffect } from '@wordpress/element';
import { forwardRef, useRef } from '@wordpress/element';
import { useMergeRefs } from '@wordpress/compose';

/**
Expand All @@ -25,22 +25,18 @@ const UnforwardedValidatedToggleControl = (
const validityTargetRef = useRef< HTMLInputElement >( null );
const mergedRefs = useMergeRefs( [ forwardedRef, validityTargetRef ] );

// TODO: Upstream limitation - The `required` attribute is not passed down to the input,
// so we need to set it manually.
useEffect( () => {
if ( validityTargetRef.current ) {
validityTargetRef.current.required = required ?? false;
}
}, [ required ] );

return (
<ControlWithError
required={ required }
markWhenOptional={ markWhenOptional }
customValidity={ customValidity }
getValidityTarget={ () => validityTargetRef.current }
>
<ToggleControl ref={ mergedRefs } { ...restProps } />
<ToggleControl
ref={ mergedRefs }
required={ required }
{ ...restProps }
/>
</ControlWithError>
);
};
Expand Down
Loading