Using useTransition

admin

javascript

другие самплы
main.tsx
useTransition.ts
import { Stage } from '@/hooks/useTransition'
 
import { EXPAND_TRANSITION_DURATION_MS } from './constants'
 
export const Root = styled.div<{
  expandStage: Stage
}>`
  ${({ expandStage }) => {
    const isTransitioning =
      expandStage === 'entering' ||
      expandStage === 'exiting'
 
    const isTransitionIn =
      expandStage === 'entering' ||
      expandStage === 'entered'
 
    return css`
      ${isTransitioning &&
      css`
        // пока анимация играет, ставим транзишен
        ${FullDescriptionWrap} {
          transition: transform ${EXPAND_TRANSITION_DURATION_MS}ms;
        }
 
        ${DarkOverlay} {
          transition: opacity ${EXPAND_TRANSITION_DURATION_MS}ms;
        }
      `}
 
      ${!isTransitionIn &&
      css`
        // анимация закрытия - уезжание описания под экран
        ${FullDescriptionWrap} {
          transform: translateY(100%);
        }
 
        // Не отображаем тёмный оверлей
        ${DarkOverlay} {
          pointer-events: none;
          opacity: 0;
        }
      `}
 
      ${expandStage === 'exited' &&
      css`
        // когда анимация закрытия закончилась, ставим display: none, чтобы элемент невозможно было
        // случайно увидеть, например, при открытии мобильной клавиатуры
        ${FullDescriptionWrap} {
          visibility: hidden;
        }
      `}
    `
  }}
`
Новый листинг
скачать через терминал: wget https://coding-style.ru/code_reviews/download/220 && mkdir "using useTransition" && unzip 220 -d ./"using useTransition" && rm 220 && cd "using useTransition"" && git init
(ваш голос учтен)

Прикрепить файл