@akhatmirzo/ui

HoverCard

Havola ustiga kursor kelganda chiqadigan oldindan ko'rish kartasi: profil, mahsulot, havola tafsiloti.

Kutubxona muallifi — @akhatmirzo.

Import

import { HoverCard } from '@akhatmirzo/ui';

Qachon ishlatish

  • Havola orqasidagi narsani oldindan ko'rsatish — foydalanuvchi profili, mahsulot, hujjat. Foydalanuvchi sahifadan chiqmasdan "bu nima?" degan savolga javob oladi.
  • Faqat qo'shimcha ma'lumot. Karta sensorli ekranda ochilmaydi va ekran o'quvchi uni o'qimasligi mumkin — trigger o'zi havola bo'lsin, ma'lumot esa havola ochadigan sahifada ham bo'lsin.
  • Qisqa matnli izoh uchun — Tooltip.
  • Ichida tugma, forma kerak bo'lsa — bosish bilan ochiladigan Popover.

Tuzilishi

QismVazifasi
HoverCardHolat va kechikishlar: openDelay, closeDelay, open
HoverCard.TriggerHavola (standart — <a>; o'z elementingiz uchun asChild)
HoverCard.ContentPanel: Popover bilan bir xil ko'rinish, portal, joylashuv, size
<HoverCard openDelay={400}>
  <HoverCard.Trigger asChild>
    <a href="/u/akhatmirzo">@akhatmirzo</a>
  </HoverCard.Trigger>
  <HoverCard.Content side="bottom" align="start">
    …profil…
  </HoverCard.Content>
</HoverCard>

Karta kursor kelgandan 500ms keyin ochiladi va kursor ketgandan 200ms keyin yopiladi — tasodifiy o'tib ketishda chiqmaydi, kartaga o'tish uchun esa vaqt qoladi. Klaviatura bilan fokuslanganda ham ochiladi.

O'lchamlar

size — sm (240px) yoki md (320px, standart). Boshqa kenglik uchun className bering.

Joylashuv

side — top, right, bottom (standart) yoki left; align — start, center (standart) yoki end. Panel triggerdan 6px uzoqlikda turadi va ekran chetiga yetsa, teskari tomonga o'tadi.

Muhim ma'lumotni yashirmang

Telefon va planshetda hover yo'q — HoverCard u yerda umuman ochilmaydi. Narx, holat, xato kabi muhim ma'lumot sahifaning o'zida ko'rinsin.

Props

HoverCard

PropTipStandartTavsif
openDelaynumber500Kursor kelgandan keyin ochilish kechikishi, ms
closeDelaynumber200Kursor ketgandan keyin yopilish kechikishi, ms
openboolean—Ochiqmi (boshqariladigan rejim)
defaultOpenboolean—Boshlang'ich holatda ochiq
onOpenChange(open: boolean) => void—Ochilib-yopilganda

HoverCard.Content

Radix HoverCard.Content ning qolgan prop'lari (alignOffset, avoidCollisions ...), <div> atributlari va ref ham qabul qilinadi.

PropTipStandartTavsif
size'sm' | 'md''md'Kenglik: 240 / 320px
side'top' | 'right' | 'bottom' | 'left''bottom'Qaysi tomonda ochiladi
align'start' | 'center' | 'end''center'Trigger bo'ylab tekislash
sideOffsetnumber6Triggerdan masofa, px
collisionPaddingnumber8Ekran chetidan minimal masofa, px
containerHTMLElement | null—Portal konteyneri (standart — document.body)

Data atributlari

AtributQayerdaQiymat
data-statetrigger, panelopen · closed
data-sidepaneltop · right · bottom · left
data-sizepanelsm · md

Accessibility

  • Faqat qo'shimcha. Karta ekran o'quvchiga e'lon qilinmaydi va fokus unga o'tmaydi — undagi ma'lumot havola ochadigan sahifada ham bo'lishi kerak.
  • Klaviatura. Trigger fokus olganda karta ochiladi, fokus ketganda yopiladi; Esc ham yopadi.
  • Sensorli ekran. Touch bilan ochilmaydi — bosish havolaning o'zini ochadi.
  • Ichida interaktiv element (tugma, forma) qo'ymang — ularga klaviatura bilan yetib bo'lmaydi. Bunday holatda Popover ishlating.

Sahifada