mirror of
https://github.com/Unleash/unleash.git
synced 2025-04-15 01:16:22 +02:00
https://linear.app/unleash/issue/2-2730/refactor-the-event-timeline-state-management-to-a-context-and-provider This PR refactors the state management for the **Event Timeline** component by introducing a context and provider to improve accessibility of state across the component tree.
51 lines
1.7 KiB
TypeScript
51 lines
1.7 KiB
TypeScript
import { Box, styled } from '@mui/material';
|
|
import { ConditionallyRender } from 'component/common/ConditionallyRender/ConditionallyRender';
|
|
import { EventTimeline } from 'component/events/EventTimeline/EventTimeline';
|
|
import { useEventTimelineContext } from 'component/events/EventTimeline/EventTimelineContext';
|
|
import useUiConfig from 'hooks/api/getters/useUiConfig/useUiConfig';
|
|
import { useUiFlag } from 'hooks/useUiFlag';
|
|
import { useEffect, useState } from 'react';
|
|
|
|
const StyledEventTimelineSlider = styled(Box)(({ theme }) => ({
|
|
backgroundColor: theme.palette.background.paper,
|
|
height: '105px',
|
|
overflow: 'hidden',
|
|
boxShadow: theme.boxShadows.popup,
|
|
borderLeft: `1px solid ${theme.palette.divider}`,
|
|
}));
|
|
|
|
const StyledEventTimelineWrapper = styled(Box)(({ theme }) => ({
|
|
padding: theme.spacing(1.5, 2),
|
|
}));
|
|
|
|
export const MainLayoutEventTimeline = () => {
|
|
const { isOss } = useUiConfig();
|
|
const { open: showTimeline } = useEventTimelineContext();
|
|
const eventTimelineEnabled = useUiFlag('eventTimeline') && !isOss();
|
|
const [isInitialLoad, setIsInitialLoad] = useState(true);
|
|
|
|
const open = showTimeline && eventTimelineEnabled;
|
|
|
|
useEffect(() => {
|
|
setIsInitialLoad(false);
|
|
}, []);
|
|
|
|
return (
|
|
<StyledEventTimelineSlider
|
|
sx={{
|
|
transition: isInitialLoad
|
|
? 'none'
|
|
: 'max-height 0.3s ease-in-out',
|
|
maxHeight: open ? '105px' : '0',
|
|
}}
|
|
>
|
|
<StyledEventTimelineWrapper>
|
|
<ConditionallyRender
|
|
condition={open}
|
|
show={<EventTimeline />}
|
|
/>
|
|
</StyledEventTimelineWrapper>
|
|
</StyledEventTimelineSlider>
|
|
);
|
|
};
|