@akhatmirzo/ui

Popover

Ichida interaktiv kontent bo'ladigan suzuvchi panel: filtr, kichik forma, sozlamalar.

Filtr qo'llanmagan

Import

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

Qachon ishlatish

  • Kichik, o'zaro ta'sirli kontent — narx filtri, rang tanlash, bir nechta sozlama. Sahifa bloklanmaydi, panel trigger yonida ochiladi.
  • Faqat matnli izoh uchun Tooltip yetarli. Popover'dan farqi: bosish bilan ochiladi va ichida tugma, maydon bo'lishi mumkin.
  • Buyruqlar ro'yxati ("Tahrirlash", "O'chirish") — DropdownMenu: unda menyu rollari va klaviatura navigatsiyasi tayyor.
  • Katta forma yoki diqqat talab qiladigan vazifa — Dialog.

Tuzilishi

QismVazifasi
PopoverHolat: open, defaultOpen, onOpenChange
Popover.TriggerOchuvchi element (asChild bilan)
Popover.ContentPanel: portal, joylashuv, animatsiya, ixtiyoriy strelka
Popover.CloseBosilganda panelni yopadi (asChild bilan)
Popover.AnchorPanelni triggerga emas, boshqa elementga nisbatan joylashtirish
<Popover>
  <Popover.Trigger asChild>
    <Button>Narx</Button>
  </Popover.Trigger>
  <Popover.Content align="start" aria-label="Narx filtri">
    {/* forma */}
  </Popover.Content>
</Popover>

Panelning standart kengligi — 288px (w-72). O'zgartirish uchun className bering: w-56, w-auto va hokazo.

Joylashuv va strelka

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

Sozlamalar paneli

Ikonka tugma va bir nechta Switch — kichik sozlamalar uchun tipik misol. Panel ochilganda fokus ichidagi birinchi elementga o'tadi.

Tanlab yopish

Popover.Close asChild ga o'ralgan element bosilganda panel o'zi yopiladi — rang yoki variant tanlash uchun qulay. Boshqariladigan rejimda (open + onOpenChange) panelni kod orqali ham yopasiz — birinchi misoldagi forma shunday ishlaydi.

Dialog ichida

Dialog yoki Drawer ichidagi Popover paneli modal qatlamiga o'tadi va oyna ustida ochiladi — qo'shimcha sozlash kerak emas.

Props

Popover

Radix Popover Root prop'larini qabul qiladi.

PropTipStandartTavsif
openboolean—Ochiqmi (boshqariladigan rejim)
defaultOpenboolean—Boshlang'ich holatda ochiq
onOpenChange(open: boolean) => void—Ochilib-yopilganda
modalbooleanfalsetrue — tashqi kontent bilan ishlash bloklanadi

Popover.Content

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

PropTipStandartTavsif
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
arrowbooleanfalseTriggerga qaragan strelka
containerHTMLElement | null—Portal konteyneri (standart — document.body)

Popover.Trigger, Popover.Close, Popover.Anchor

Uchalasi ham asChild qabul qiladi. Popover.Anchor bo'lsa, panel trigger o'rniga shu elementga nisbatan joylashadi (masalan, butun qatorga).

Data atributlari

AtributQayerdaQiymat
data-statetrigger, panelopen · closed
data-sidepaneltop · right · bottom · left
data-alignpanelstart · center · end

Klaviatura

TugmaHarakat
Enter / SpaceTrigger fokusda — panelni ochadi yoki yopadi
TabPanel ichidagi elementlar bo'ylab yurish
EscPanelni yopadi, fokus triggerga qaytadi

Fokus paneldan tashqariga chiqsa yoki tashqariga bosilsa, panel yopiladi.

Accessibility

  • Bog'lanish. Trigger aria-haspopup="dialog", aria-expanded va aria-controls oladi; panel — role="dialog". Panelga aria-label bering (masalan, "Narx filtri") — ekran o'quvchi uni shu nom bilan e'lon qiladi.
  • Fokus. Ochilganda fokus panel ichidagi birinchi elementga o'tadi, yopilgach triggerga qaytadi.
  • Ikonka tugma trigger bo'lsa, IconButton ga aria-label yozishni unutmang.
  • Strelka faqat bezak.

Sahifada