mirror of
https://github.com/Unleash/unleash.git
synced 2025-11-10 01:19:53 +01:00
* refactor: update test deps * refactor: remove unused ts-expect-error annotations * refactor: add missing arg and return types * refactor: the loading prop is optional * refactor: add missing arg and return types * reafactor: fix value arg type * refactor: fix missing array type * refactor: the parameters field is an array * refactor: use undefined instead of null in state * refactor: add missing params type * refactor: add missing children prop * refactor: add missing array type * refactor: add missing React imports * refactor: use correct IProjectEnvironment type * refactor: type errors as unknown * refactor: the index prop is required * refactor: fix date prop type * refactor: fix tooltip placement prop type * refactor: fix environments state type * refactor: add missing arg types * refactor: add guard for undefined field * refactor: fix ChangePassword prop types * refactor: fix MUI import paths * refactor: add missing arg type * refactor: fix showDialog prop type * refactor: remove unused openUpdateDialog prop * refactor: add missing non-null assertion * refactor: remove unused types prop * refactor: stricten API error handler types * refactor: add missing undefined check * refactor: add missing IProject id field * refactor: fix ConditionallyRender condition prop types * refactor: remove unused args * refactor: add AddVariant prop types * refactor: add types to UIContext * refactor: fix event arg type * refactor: add missing default impressionData field * refactor: fix handleDeleteEnvironment prop args * refactor: fix IFeatureMetrics field requirements * refactor: add missing element types to ConditionallyRender * refactor: remove unused ProjectAccess projectId prop * refactor: add missing undefined check * refactor: fix getCreateTogglePath arg type * refactor: add missing IStrategyPayload import * refactor: remove unused user arg * refactor: add missing event arg type * refactor: add missing style object types * refactor: improve userApiErrors prop type * refactor: the Dialogue onClose prop is optional * refactor: fix the AddonEvents setEventValue prop type
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import React, { useEffect, useState, useRef, FC } from 'react';
|
|
import ConditionallyRender from '../ConditionallyRender';
|
|
|
|
interface IAnimateOnMountProps {
|
|
mounted: boolean;
|
|
enter: string;
|
|
start: string;
|
|
leave: string;
|
|
container?: string;
|
|
style?: React.CSSProperties;
|
|
}
|
|
|
|
const AnimateOnMount: FC<IAnimateOnMountProps> = ({
|
|
mounted,
|
|
enter,
|
|
start,
|
|
leave,
|
|
container,
|
|
children,
|
|
style,
|
|
}) => {
|
|
const [show, setShow] = useState(mounted);
|
|
const [styles, setStyles] = useState('');
|
|
const mountedRef = useRef<null | boolean>(null);
|
|
|
|
useEffect(() => {
|
|
if (mountedRef.current !== mounted || mountedRef === null) {
|
|
if (mounted) {
|
|
setShow(true);
|
|
setTimeout(() => {
|
|
setStyles(enter);
|
|
}, 50);
|
|
} else {
|
|
if (!leave) {
|
|
setShow(false);
|
|
}
|
|
setStyles(leave);
|
|
}
|
|
}
|
|
}, [mounted, enter, leave]);
|
|
|
|
const onTransitionEnd = () => {
|
|
if (!mounted) {
|
|
setShow(false);
|
|
}
|
|
};
|
|
|
|
return (
|
|
<ConditionallyRender
|
|
condition={show}
|
|
show={
|
|
<div
|
|
className={`${start} ${styles} ${
|
|
container ? container : ''
|
|
}`}
|
|
onTransitionEnd={onTransitionEnd}
|
|
style={{ ...style }}
|
|
>
|
|
{children}
|
|
</div>
|
|
}
|
|
/>
|
|
);
|
|
};
|
|
|
|
export default AnimateOnMount;
|