/** @jsxRuntime classic */ /** @jsx jsx */ import React, { useState, useEffect, Fragment, useMemo, ReactNode, } from 'react'; import { css, jsx, useTheme } from '@emotion/react'; import { Container, DotCss, maintenanceIconCss, downIconCss, maintenanceTimeCss, maintenanceNameCCss, } from './style'; import { Avatar, BnIcon, Button, Popup, Tag, Typography, useModal, } from '../../components'; import { ETypography, ETypographyColor, IColors, Icons, } from '../../types/theme'; import { useColors } from '../../hooks/useColors'; import dayjs from 'dayjs'; import { useDelayHover } from '../../hooks/useDelayHover'; import { SlotBody } from './popupBody'; import utc from 'dayjs/plugin/utc'; import customParseFormat from 'dayjs/plugin/customParseFormat'; dayjs.extend(customParseFormat); dayjs.extend(utc); enum SlotTypeEnum { EXTERNAL = 'external', INTERNAL = 'internal', MAINTENANCE = 'maintenance', CUSTOM = 'custom', } export const Slot = ({ event: state, triggerEvent, }: { event: any; triggerEvent: (v: any) => void; }) => { const [isShowing, setShowing] = useState(false); const { colors } = useColors(); const { isDiagonal, startTime, endTime, isMaintenance, isShort, isEditable, } = useMemo(() => { const isDiagonal = state?.isInternal ? true : false; const startTime = state?.startTime ? state?.startTime : state.startDate; const endTime = state?.endTime ? state?.endTime : state.endDate; const isMaintenance = state.slotType === SlotTypeEnum.MAINTENANCE; const diff = dayjs(endTime).diff(dayjs(startTime), 'minutes'); const isShort = diff <= 30; const isEditable = state?.reservation?.creatorType !== 'program_season'; return { isDiagonal, startTime, endTime, isMaintenance, isShort, isEditable, }; }, [state]); const toggle = () => setShowing(!isShowing); const { handleMouseEnter, handleMouseLeave } = useDelayHover(500, toggle); const Time = `${dayjs.utc(startTime).format('hh:mm')}-${dayjs .utc(endTime) .format('hh:mma')}`; return ( } >
{isMaintenance ? (
{state?.reservation?.name} {Time} {/**/}
) : (
{Time} {state?.reservation?.customer?.name}
{state?.reservation?.name}
{/*
Weekly 7/7
*/}
)}
); }; const Dot = () => ;