mirror of
https://github.com/Unleash/unleash.git
synced 2024-10-18 20:09:08 +02:00
27988e4b30
* feat: strategies list * feat: dnd * fix: resolve reference issues * feat: configure strategy wip * feat: rearrange list * feat: add debounce and execution plan * feat: add separator * feat: update strategy * fix: feature strategy accordion key * fix: localize parameter update logic * feat: ts conversion * fix: perf issues * feat: production guard * fix: clean up environment list * fix: implement markup hooks for environment list * feat: wip constraints * fix: handle nested data structure reference issue * fix: clone deep on child props * fix: remove constraints check * fix: revert to strategies length * fix: refactor useFeature * feat: cache revalidation * fix: set correct starting tab * fix: reset params on adding new strategy * fix: refactor to use useSWR instead of local cache * fix: check dirty directly from new params * fix: dialogue ts * fix: Clean-up typescript warnings * fix: some more typescript nits * feat: strategy execution * feat: strategy execution for environment * fix: refactor execution separator * fix: remove unused property * fix: add header * fix: 0 value for rollout * fix: update snapshots * fix: remove empty deps * fix: use constant for env type * fix: use default for useFeatureStrategy * fix: update snapshot * Update src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategiesEnvironments/FeatureStrategiesEnvironmentList/useDeleteStrategyMarkup.tsx Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai> * Update src/component/feature/FeatureView2/FeatureStrategies/FeatureStrategyExecution/FeatureStrategyExecution.tsx Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai> * Update src/component/feature/strategy/EditStrategyModal/general-strategy.jsx Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai> Co-authored-by: Christopher Kolstad <chriswk@getunleash.ai> Co-authored-by: UnleashTeam <79193084+UnleashTeam@users.noreply.github.com>
67 lines
1.6 KiB
TypeScript
67 lines
1.6 KiB
TypeScript
import { useEffect, useState, useRef, FC } from 'react';
|
|
import ConditionallyRender from '../ConditionallyRender';
|
|
|
|
interface IAnimateOnMountProps {
|
|
mounted: boolean;
|
|
enter: string;
|
|
start: string;
|
|
leave: string;
|
|
container?: string;
|
|
style?: Object;
|
|
}
|
|
|
|
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;
|