@qw-ui/core 0.3.0-next.9 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -37
- package/dist/action-sheet/action-sheet.d.ts +110 -0
- package/dist/action-sheet/index.d.ts +2 -0
- package/dist/action-sheet/index.js +2 -0
- package/dist/action-sheet-Cvcr1S_m.js +183 -0
- package/dist/action-sheet-Cvcr1S_m.js.map +1 -0
- package/dist/area-picker/area-picker.d.ts +113 -0
- package/dist/area-picker/index.d.ts +1 -0
- package/dist/area-picker/index.js +348 -0
- package/dist/area-picker/index.js.map +1 -0
- package/dist/aria-description-CimD2M_C.js +13 -0
- package/dist/aria-description-CimD2M_C.js.map +1 -0
- package/dist/aria-description.d.ts +2 -0
- package/dist/avatar/avatar-load.d.ts +76 -0
- package/dist/avatar/avatar.d.ts +22 -5
- package/dist/avatar/index.d.ts +1 -0
- package/dist/avatar/index.js +57 -18
- package/dist/avatar/index.js.map +1 -1
- package/dist/avatar-load-w9dq05oV.js +139 -0
- package/dist/avatar-load-w9dq05oV.js.map +1 -0
- package/dist/back-top/back-top.d.ts +77 -0
- package/dist/back-top/index.d.ts +1 -0
- package/dist/back-top/index.js +189 -0
- package/dist/back-top/index.js.map +1 -0
- package/dist/badge/badge.d.ts +85 -0
- package/dist/badge/index.d.ts +1 -0
- package/dist/badge/index.js +88 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/button/button.d.ts +13 -0
- package/dist/button/index.js +3 -5
- package/dist/button/index.js.map +1 -1
- package/dist/calendar/calendar.d.ts +100 -0
- package/dist/calendar/index.d.ts +1 -0
- package/dist/calendar/index.js +2 -0
- package/dist/calendar-CmpK3stz.js +363 -0
- package/dist/calendar-CmpK3stz.js.map +1 -0
- package/dist/card/card.d.ts +68 -0
- package/dist/card/index.d.ts +2 -0
- package/dist/card/index.js +2 -0
- package/dist/card-DRtWa6Cr.js +107 -0
- package/dist/card-DRtWa6Cr.js.map +1 -0
- package/dist/cascader/cascader.d.ts +115 -0
- package/dist/cascader/index.d.ts +1 -0
- package/dist/cascader/index.js +2 -0
- package/dist/cascader-D-xMjs7P.js +333 -0
- package/dist/cascader-D-xMjs7P.js.map +1 -0
- package/dist/cell/cell.d.ts +41 -0
- package/dist/cell/index.d.ts +1 -0
- package/dist/cell/index.js +43 -0
- package/dist/cell/index.js.map +1 -0
- package/dist/check-list/check-list.d.ts +78 -0
- package/dist/check-list/index.d.ts +2 -0
- package/dist/check-list/index.js +2 -0
- package/dist/check-list-BvZHQt5w.js +60 -0
- package/dist/check-list-BvZHQt5w.js.map +1 -0
- package/dist/checkbox/checkbox.d.ts +59 -0
- package/dist/checkbox/index.d.ts +2 -0
- package/dist/checkbox/index.js +2 -0
- package/dist/checkbox-BlndJrz5.js +127 -0
- package/dist/checkbox-BlndJrz5.js.map +1 -0
- package/dist/checkbox-group/checkbox-group.d.ts +86 -0
- package/dist/checkbox-group/index.d.ts +3 -0
- package/dist/checkbox-group/index.js +2 -0
- package/dist/checkbox-group-gGfsTv-e.js +223 -0
- package/dist/checkbox-group-gGfsTv-e.js.map +1 -0
- package/dist/choice-group-C4c9m0qe.js +373 -0
- package/dist/choice-group-C4c9m0qe.js.map +1 -0
- package/dist/circle/circle.d.ts +97 -0
- package/dist/circle/index.d.ts +1 -0
- package/dist/circle/index.js +119 -0
- package/dist/circle/index.js.map +1 -0
- package/dist/collapse/collapse.d.ts +98 -0
- package/dist/collapse/index.d.ts +2 -0
- package/dist/collapse/index.js +2 -0
- package/dist/collapse-B969h7-H.js +226 -0
- package/dist/collapse-B969h7-H.js.map +1 -0
- package/dist/countdown/countdown.d.ts +114 -0
- package/dist/countdown/index.d.ts +1 -0
- package/dist/countdown/index.js +309 -0
- package/dist/countdown/index.js.map +1 -0
- package/dist/date-picker/date-picker.d.ts +168 -0
- package/dist/date-picker/index.d.ts +1 -0
- package/dist/date-picker/index.js +401 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/descriptions/descriptions.d.ts +69 -0
- package/dist/descriptions/index.d.ts +1 -0
- package/dist/descriptions/index.js +86 -0
- package/dist/descriptions/index.js.map +1 -0
- package/dist/dialog/dialog.d.ts +61 -43
- package/dist/dialog/index.js +73 -19
- package/dist/dialog/index.js.map +1 -1
- package/dist/divider/divider.d.ts +18 -2
- package/dist/divider/index.js +20 -2
- package/dist/divider/index.js.map +1 -1
- package/dist/dropdown/dropdown.d.ts +172 -0
- package/dist/dropdown/index.d.ts +2 -0
- package/dist/dropdown/index.js +467 -0
- package/dist/dropdown/index.js.map +1 -0
- package/dist/ellipsis/ellipsis-layout.d.ts +34 -0
- package/dist/ellipsis/ellipsis.d.ts +88 -0
- package/dist/ellipsis/index.d.ts +2 -0
- package/dist/ellipsis/index.js +320 -0
- package/dist/ellipsis/index.js.map +1 -0
- package/dist/empty/empty-illustration.d.ts +3 -0
- package/dist/empty/empty.d.ts +43 -1
- package/dist/empty/index.js +2 -21
- package/dist/empty-CAgyvhUI.js +166 -0
- package/dist/empty-CAgyvhUI.js.map +1 -0
- package/dist/field/field.d.ts +95 -0
- package/dist/field/index.d.ts +2 -0
- package/dist/field/index.js +2 -0
- package/dist/field-DMHGIMZF.js +241 -0
- package/dist/field-DMHGIMZF.js.map +1 -0
- package/dist/floating-bubble/floating-bubble.d.ts +116 -0
- package/dist/floating-bubble/index.d.ts +1 -0
- package/dist/floating-bubble/index.js +333 -0
- package/dist/floating-bubble/index.js.map +1 -0
- package/dist/floating-panel/floating-panel.d.ts +80 -0
- package/dist/floating-panel/index.d.ts +2 -0
- package/dist/floating-panel/index.js +2 -0
- package/dist/floating-panel-Cbm5njBJ.js +363 -0
- package/dist/floating-panel-Cbm5njBJ.js.map +1 -0
- package/dist/footer/footer.d.ts +94 -0
- package/dist/footer/index.d.ts +1 -0
- package/dist/footer/index.js +154 -0
- package/dist/footer/index.js.map +1 -0
- package/dist/form/connect.d.ts +6 -0
- package/dist/form/form.d.ts +100 -0
- package/dist/form/ids.d.ts +14 -0
- package/dist/form/index.d.ts +13 -0
- package/dist/form/index.js +3 -0
- package/dist/form/methods.d.ts +5 -0
- package/dist/form/model.d.ts +24 -0
- package/dist/form/native.d.ts +25 -0
- package/dist/form/rules.d.ts +40 -0
- package/dist/form/ssr.d.ts +7 -0
- package/dist/form/types.d.ts +150 -0
- package/dist/form-BAGkIEMY.js +1354 -0
- package/dist/form-BAGkIEMY.js.map +1 -0
- package/dist/format-BDUY0C_c.js +89 -0
- package/dist/format-BDUY0C_c.js.map +1 -0
- package/dist/gesture-_SRHIvBm.js +30 -0
- package/dist/gesture-_SRHIvBm.js.map +1 -0
- package/dist/grid/grid-item.d.ts +22 -0
- package/dist/grid/grid.d.ts +42 -0
- package/dist/grid/index.d.ts +2 -0
- package/dist/grid/index.js +73 -0
- package/dist/grid/index.js.map +1 -0
- package/dist/icon/icon.d.ts +37 -1
- package/dist/icon/identity.d.ts +3 -0
- package/dist/icon/index.js +2 -20
- package/dist/icon-Cgdbnk1u.js +77 -0
- package/dist/icon-Cgdbnk1u.js.map +1 -0
- package/dist/image/image-load.d.ts +24 -0
- package/dist/image/image.d.ts +45 -8
- package/dist/image/index.d.ts +1 -0
- package/dist/image/index.js +116 -14
- package/dist/image/index.js.map +1 -1
- package/dist/image-preview/image-preview.d.ts +124 -0
- package/dist/image-preview/index.d.ts +1 -0
- package/dist/image-preview/index.js +450 -0
- package/dist/image-preview/index.js.map +1 -0
- package/dist/index-bar/index-bar.d.ts +121 -0
- package/dist/index-bar/index.d.ts +1 -0
- package/dist/index-bar/index.js +386 -0
- package/dist/index-bar/index.js.map +1 -0
- package/dist/index.d.ts +115 -10
- package/dist/index.js +151 -11
- package/dist/index.js.map +1 -0
- package/dist/infinite-scroll/index.d.ts +1 -0
- package/dist/infinite-scroll/index.js +248 -0
- package/dist/infinite-scroll/index.js.map +1 -0
- package/dist/infinite-scroll/infinite-scroll.d.ts +95 -0
- package/dist/input/index.js +181 -22
- package/dist/input/index.js.map +1 -1
- package/dist/input/input.d.ts +44 -1
- package/dist/layer-IpFrl5--.js +414 -0
- package/dist/layer-IpFrl5--.js.map +1 -0
- package/dist/layout-BRSqi4AQ.js +43 -0
- package/dist/layout-BRSqi4AQ.js.map +1 -0
- package/dist/layout.d.ts +13 -0
- package/dist/list/index.d.ts +2 -0
- package/dist/list/index.js +2 -0
- package/dist/list/list.d.ts +30 -0
- package/dist/list-6-iz-Irh.js +28 -0
- package/dist/list-6-iz-Irh.js.map +1 -0
- package/dist/loading/index.js +45 -2
- package/dist/loading/index.js.map +1 -1
- package/dist/loading/loading.d.ts +45 -2
- package/dist/modal-dialog-machine-CF9_z3Dm.js +487 -0
- package/dist/modal-dialog-machine-CF9_z3Dm.js.map +1 -0
- package/dist/modal-dialog-machine.d.ts +21 -0
- package/dist/modal-dismissable-lifetime.d.ts +21 -0
- package/dist/modal-registry.d.ts +24 -0
- package/dist/modal-render-hydration.d.ts +35 -0
- package/dist/modal-render-runtime.d.ts +19 -0
- package/dist/modal-render-scope.d.ts +63 -0
- package/dist/nav-bar/index.d.ts +1 -0
- package/dist/nav-bar/index.js +115 -0
- package/dist/nav-bar/index.js.map +1 -0
- package/dist/nav-bar/nav-bar.d.ts +76 -0
- package/dist/notice-bar/index.d.ts +2 -0
- package/dist/notice-bar/index.js +2 -0
- package/dist/notice-bar/notice-bar.d.ts +103 -0
- package/dist/notice-bar-DMpwLvRb.js +231 -0
- package/dist/notice-bar-DMpwLvRb.js.map +1 -0
- package/dist/notify/index.d.ts +1 -0
- package/dist/notify/index.js +251 -0
- package/dist/notify/index.js.map +1 -0
- package/dist/notify/notify.d.ts +123 -0
- package/dist/number-keyboard/index.d.ts +1 -0
- package/dist/number-keyboard/index.js +333 -0
- package/dist/number-keyboard/index.js.map +1 -0
- package/dist/number-keyboard/number-keyboard.d.ts +141 -0
- package/dist/overlay-panel/index.d.ts +2 -0
- package/dist/overlay-panel/index.js +2 -0
- package/dist/overlay-panel/overlay-panel.d.ts +20 -0
- package/dist/overlay-panel-Z_qdKeBj.js +26 -0
- package/dist/overlay-panel-Z_qdKeBj.js.map +1 -0
- package/dist/page-indicator/index.d.ts +1 -0
- package/dist/page-indicator/index.js +138 -0
- package/dist/page-indicator/index.js.map +1 -0
- package/dist/page-indicator/page-indicator.d.ts +93 -0
- package/dist/pagination/index.d.ts +1 -0
- package/dist/pagination/index.js +198 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pagination/pagination.d.ts +125 -0
- package/dist/password-input/index.d.ts +1 -0
- package/dist/password-input/index.js +317 -0
- package/dist/password-input/index.js.map +1 -0
- package/dist/password-input/password-input.d.ts +144 -0
- package/dist/picker/index.d.ts +8 -0
- package/dist/picker/index.js +2 -0
- package/dist/picker/picker-machine.d.ts +80 -0
- package/dist/picker/picker.d.ts +121 -0
- package/dist/picker/platform.d.ts +84 -0
- package/dist/picker/selection-connect.d.ts +90 -0
- package/dist/picker/selection-model.d.ts +211 -0
- package/dist/picker-BykFntQN.js +1675 -0
- package/dist/picker-BykFntQN.js.map +1 -0
- package/dist/popover/index.d.ts +3 -0
- package/dist/popover/index.js +253 -0
- package/dist/popover/index.js.map +1 -0
- package/dist/popover/layer.d.ts +44 -0
- package/dist/popover/popover.d.ts +104 -0
- package/dist/popover/positioning.d.ts +132 -0
- package/dist/popup/index.d.ts +2 -0
- package/dist/popup/index.js +2 -0
- package/dist/popup/popup.d.ts +60 -0
- package/dist/popup-z5d8IYCt.js +576 -0
- package/dist/popup-z5d8IYCt.js.map +1 -0
- package/dist/portal-BHCNTWhg.js +78 -0
- package/dist/portal-BHCNTWhg.js.map +1 -0
- package/dist/portal.d.ts +61 -0
- package/dist/price/format.d.ts +19 -0
- package/dist/price/index.d.ts +1 -0
- package/dist/price/index.js +154 -0
- package/dist/price/index.js.map +1 -0
- package/dist/price/price.d.ts +88 -0
- package/dist/progress/index.d.ts +1 -0
- package/dist/progress/index.js +2 -0
- package/dist/progress/progress.d.ts +32 -0
- package/dist/progress-f3iYEfdA.js +37 -0
- package/dist/progress-f3iYEfdA.js.map +1 -0
- package/dist/pull-refresh/index.d.ts +1 -0
- package/dist/pull-refresh/index.js +414 -0
- package/dist/pull-refresh/index.js.map +1 -0
- package/dist/pull-refresh/pull-refresh.d.ts +118 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.js +2 -0
- package/dist/radio-group/radio-group.d.ts +78 -0
- package/dist/radio-group-BOIMuqnS.js +230 -0
- package/dist/radio-group-BOIMuqnS.js.map +1 -0
- package/dist/rate/index.d.ts +1 -0
- package/dist/rate/index.js +2 -0
- package/dist/rate/rate-form.d.ts +28 -0
- package/dist/rate/rate.d.ts +144 -0
- package/dist/rate-5XsU2QkY.js +631 -0
- package/dist/rate-5XsU2QkY.js.map +1 -0
- package/dist/reorder/index.d.ts +1 -0
- package/dist/reorder/index.js +720 -0
- package/dist/reorder/index.js.map +1 -0
- package/dist/reorder/reorder.d.ts +190 -0
- package/dist/result/index.d.ts +1 -0
- package/dist/result/index.js +123 -0
- package/dist/result/index.js.map +1 -0
- package/dist/result/result.d.ts +88 -0
- package/dist/safe-area/index.d.ts +1 -0
- package/dist/safe-area/index.js +42 -0
- package/dist/safe-area/index.js.map +1 -0
- package/dist/safe-area/safe-area.d.ts +28 -0
- package/dist/search-bar/index.js +4 -2
- package/dist/search-bar/index.js.map +1 -1
- package/dist/search-bar/search-bar.d.ts +6 -0
- package/dist/segmented/index.d.ts +2 -0
- package/dist/segmented/index.js +2 -0
- package/dist/segmented/segmented.d.ts +127 -0
- package/dist/segmented-BaU38_L4.js +367 -0
- package/dist/segmented-BaU38_L4.js.map +1 -0
- package/dist/selection-form-BOM_odUk.js +88 -0
- package/dist/selection-form-BOM_odUk.js.map +1 -0
- package/dist/selection-form.d.ts +27 -0
- package/dist/selection-ivXqO1eu.js +55 -0
- package/dist/selection-ivXqO1eu.js.map +1 -0
- package/dist/selection.d.ts +29 -0
- package/dist/selector/choice-group.d.ts +114 -0
- package/dist/selector/index.d.ts +2 -0
- package/dist/selector/index.js +2 -0
- package/dist/selector/selector.d.ts +90 -0
- package/dist/selector-BU2MMJ4N.js +93 -0
- package/dist/selector-BU2MMJ4N.js.map +1 -0
- package/dist/share-sheet/index.d.ts +1 -0
- package/dist/share-sheet/index.js +138 -0
- package/dist/share-sheet/index.js.map +1 -0
- package/dist/share-sheet/share-sheet.d.ts +139 -0
- package/dist/side-nav/index.d.ts +1 -0
- package/dist/side-nav/index.js +99 -0
- package/dist/side-nav/index.js.map +1 -0
- package/dist/side-nav/side-nav.d.ts +94 -0
- package/dist/skeleton/index.js +51 -2
- package/dist/skeleton/index.js.map +1 -1
- package/dist/skeleton/skeleton.d.ts +34 -3
- package/dist/slider/index.d.ts +1 -0
- package/dist/slider/index.js +482 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/slider/slider.d.ts +174 -0
- package/dist/space/index.d.ts +1 -0
- package/dist/space/index.js +52 -0
- package/dist/space/index.js.map +1 -0
- package/dist/space/space.d.ts +46 -0
- package/dist/statistic/index.d.ts +1 -0
- package/dist/statistic/index.js +152 -0
- package/dist/statistic/index.js.map +1 -0
- package/dist/statistic/statistic.d.ts +101 -0
- package/dist/stepper/index.d.ts +1 -0
- package/dist/stepper/index.js +172 -0
- package/dist/stepper/index.js.map +1 -0
- package/dist/stepper/stepper.d.ts +161 -0
- package/dist/steps/index.d.ts +1 -0
- package/dist/steps/index.js +72 -0
- package/dist/steps/index.js.map +1 -0
- package/dist/steps/steps.d.ts +67 -0
- package/dist/sticky/index.d.ts +1 -0
- package/dist/sticky/index.js +145 -0
- package/dist/sticky/index.js.map +1 -0
- package/dist/sticky/sticky.d.ts +70 -0
- package/dist/swipe-action/index.d.ts +1 -0
- package/dist/swipe-action/index.js +417 -0
- package/dist/swipe-action/index.js.map +1 -0
- package/dist/swipe-action/swipe-action.d.ts +148 -0
- package/dist/swiper/gesture.d.ts +32 -0
- package/dist/swiper/index.d.ts +1 -0
- package/dist/swiper/index.js +2 -0
- package/dist/swiper/swiper.d.ts +177 -0
- package/dist/swiper-BKivDkHp.js +550 -0
- package/dist/swiper-BKivDkHp.js.map +1 -0
- package/dist/switch/index.d.ts +1 -0
- package/dist/switch/index.js +168 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/switch/switch.d.ts +142 -0
- package/dist/tabbar/index.d.ts +1 -0
- package/dist/tabbar/index.js +95 -0
- package/dist/tabbar/index.js.map +1 -0
- package/dist/tabbar/tabbar.d.ts +119 -0
- package/dist/tabs/index.js +22 -1
- package/dist/tabs/index.js.map +1 -1
- package/dist/tabs/tabs.d.ts +12 -8
- package/dist/tag/index.js +123 -2
- package/dist/tag/index.js.map +1 -1
- package/dist/tag/tag.d.ts +67 -1
- package/dist/textarea/index.d.ts +2 -0
- package/dist/textarea/index.js +2 -242
- package/dist/textarea/platform.d.ts +22 -0
- package/dist/textarea/textarea.d.ts +169 -46
- package/dist/textarea-qbnruDUG.js +775 -0
- package/dist/textarea-qbnruDUG.js.map +1 -0
- package/dist/time-picker/index.d.ts +1 -0
- package/dist/time-picker/index.js +228 -0
- package/dist/time-picker/index.js.map +1 -0
- package/dist/time-picker/time-picker.d.ts +83 -0
- package/dist/timeline/index.d.ts +1 -0
- package/dist/timeline/index.js +131 -0
- package/dist/timeline/index.js.map +1 -0
- package/dist/timeline/timeline.d.ts +79 -0
- package/dist/toast/index.js +47 -4
- package/dist/toast/index.js.map +1 -1
- package/dist/toast/toast.d.ts +26 -3
- package/dist/top-bar/index.js +16 -2
- package/dist/top-bar/index.js.map +1 -1
- package/dist/top-bar/top-bar.d.ts +13 -2
- package/dist/tree-select/index.d.ts +1 -0
- package/dist/tree-select/index.js +512 -0
- package/dist/tree-select/index.js.map +1 -0
- package/dist/tree-select/tree-select.d.ts +215 -0
- package/dist/typography/index.d.ts +1 -0
- package/dist/typography/index.js +82 -0
- package/dist/typography/index.js.map +1 -0
- package/dist/typography/typography.d.ts +54 -0
- package/dist/upload/index.d.ts +1 -0
- package/dist/upload/index.js +458 -0
- package/dist/upload/index.js.map +1 -0
- package/dist/upload/upload.d.ts +172 -0
- package/dist/virtual-list/index.d.ts +1 -0
- package/dist/virtual-list/index.js +445 -0
- package/dist/virtual-list/index.js.map +1 -0
- package/dist/virtual-list/virtual-list.d.ts +160 -0
- package/dist/visual-manifest.d.ts +27 -0
- package/dist/watermark/index.d.ts +1 -0
- package/dist/watermark/index.js +260 -0
- package/dist/watermark/index.js.map +1 -0
- package/dist/watermark/watermark.d.ts +106 -0
- package/package.json +417 -44
- package/dist/empty/index.js.map +0 -1
- package/dist/icon/index.js.map +0 -1
- package/dist/textarea/index.js.map +0 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Non-modal layer lifetime shared by Popover and Dropdown: dismissal through Zag's existing layer stack
|
|
3
|
+
* (no pointer blocking, no new modal owner) and the focus return policy. Every DOM read happens inside
|
|
4
|
+
* the returned effects, never at import.
|
|
5
|
+
*/
|
|
6
|
+
/** Why a layer asked to open or close. trigger: its trigger toggled; keyboard: a trigger key; api: the owner or setOpen. */
|
|
7
|
+
export type FloatingCloseReason = "trigger" | "keyboard" | "escape" | "outside" | "focus-outside" | "tab" | "select" | "api";
|
|
8
|
+
export type FloatingDismissReason = Extract<FloatingCloseReason, "escape" | "outside" | "focus-outside">;
|
|
9
|
+
/** A pending close request: the reason and whether an outside interaction landed on a focusable node. */
|
|
10
|
+
export interface FloatingCloseRequest {
|
|
11
|
+
reason: FloatingCloseReason;
|
|
12
|
+
focusable: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface FloatingDismissOptions {
|
|
15
|
+
type: "popover" | "menu";
|
|
16
|
+
content(): HTMLElement | null;
|
|
17
|
+
trigger(): HTMLElement | null;
|
|
18
|
+
closeOnEscape(): boolean;
|
|
19
|
+
closeOnOutside(): boolean;
|
|
20
|
+
closeOnFocusOutside(): boolean;
|
|
21
|
+
onDismiss(request: FloatingCloseRequest): void;
|
|
22
|
+
/** Called after the existing layer has installed its deferred pointer listener. */
|
|
23
|
+
onReady?(): void;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Wait for the content node (a microtask, then up to FLOATING_WAIT_FRAMES frames), then join the layer
|
|
27
|
+
* stack: only the topmost layer handles Escape, outside pointer/focus excludes the trigger and nested layers,
|
|
28
|
+
* and nothing outside is blocked. Cleanup leaves the stack or cancels the wait.
|
|
29
|
+
*/
|
|
30
|
+
export declare function trackFloatingDismiss(doc: Document, options: FloatingDismissOptions): () => void;
|
|
31
|
+
/**
|
|
32
|
+
* Focus return when a layer closes, called while its content is still in the DOM:
|
|
33
|
+
* - tab / focus-outside: focus already moved on; nothing happens.
|
|
34
|
+
* - outside: unless the outside target was focusable, focus that was inside the layer (or on the trigger)
|
|
35
|
+
* returns to the trigger after the pointer settles, if it ended on <body>.
|
|
36
|
+
* - everything else (escape, select, trigger, api): focus inside the layer, on <body> or nowhere returns to
|
|
37
|
+
* the trigger at once; focus the user moved elsewhere on the page stays put.
|
|
38
|
+
*/
|
|
39
|
+
export declare function restoreFloatingFocus(doc: Document, trigger: HTMLElement | null, content: HTMLElement | null, request: FloatingCloseRequest): void;
|
|
40
|
+
/**
|
|
41
|
+
* Focus a node once it can take focus: the layer is `visibility: hidden` until the first layout reaches
|
|
42
|
+
* the DOM, so try on the next frames until it succeeds (bounded). Returns a cancel function.
|
|
43
|
+
*/
|
|
44
|
+
export declare function focusWhenReady(doc: Document, target: () => HTMLElement | null, attempts?: number): () => void;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type Machine, type Service } from "@zag-js/core";
|
|
2
|
+
import type { NormalizeProps, PropTypes } from "@zag-js/types";
|
|
3
|
+
import { type FloatingAlign, type FloatingLayout, type FloatingPlacement, type FloatingSide } from "./positioning.js";
|
|
4
|
+
import { type FloatingCloseRequest } from "./layer.js";
|
|
5
|
+
/** Stable DOM parts shared by every adapter. */
|
|
6
|
+
export declare const POPOVER_PARTS: readonly ["trigger", "positioner", "arrow", "content"];
|
|
7
|
+
export type PopoverPlacement = FloatingPlacement;
|
|
8
|
+
export declare const POPOVER_DEFAULT_PLACEMENT: PopoverPlacement;
|
|
9
|
+
/** trigger: the trigger toggled; escape / outside: dismissal; api: setOpen. */
|
|
10
|
+
export type PopoverOpenChangeReason = "trigger" | "escape" | "outside" | "api";
|
|
11
|
+
export interface PopoverOpenChangeDetails {
|
|
12
|
+
open: boolean;
|
|
13
|
+
reason: PopoverOpenChangeReason;
|
|
14
|
+
}
|
|
15
|
+
export interface QwPopoverProps {
|
|
16
|
+
/** Page-unique instance identity; adapters generate one when omitted. */
|
|
17
|
+
id?: string;
|
|
18
|
+
/** Controlled open state; undefined lets Core own it. */
|
|
19
|
+
open?: boolean;
|
|
20
|
+
/** Initial open state when uncontrolled. */
|
|
21
|
+
defaultOpen?: boolean;
|
|
22
|
+
/** Every open/close request (trigger, Escape, outside, setOpen), controlled or not. Controlled owners accept by updating open, or refuse by keeping it. */
|
|
23
|
+
onOpenChange?: (details: PopoverOpenChangeDetails) => void;
|
|
24
|
+
/** Preferred placement (default bottom; unknown values use bottom). Flips to the opposite side when space is short; start/end mirror on top/bottom in RTL. */
|
|
25
|
+
placement?: PopoverPlacement;
|
|
26
|
+
/** Main-axis gap between the trigger and the panel in CSS px; default 8. */
|
|
27
|
+
offset?: number;
|
|
28
|
+
/** Arrow pointing at the trigger; default true. */
|
|
29
|
+
arrow?: boolean;
|
|
30
|
+
/** Accessible name of the dialog; omitted names it by the trigger (aria-labelledby). */
|
|
31
|
+
label?: string;
|
|
32
|
+
/** Escape closes the topmost open layer; default true. */
|
|
33
|
+
closeOnEscape?: boolean;
|
|
34
|
+
/** A pointer interaction outside the panel and the trigger closes; default true. */
|
|
35
|
+
closeOnInteractOutside?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface ResolvedPopoverState {
|
|
38
|
+
placement: PopoverPlacement;
|
|
39
|
+
offset: number;
|
|
40
|
+
arrow: boolean;
|
|
41
|
+
label: string | undefined;
|
|
42
|
+
closeOnEscape: boolean;
|
|
43
|
+
closeOnInteractOutside: boolean;
|
|
44
|
+
}
|
|
45
|
+
export declare function resolvePopoverState(props?: QwPopoverProps): ResolvedPopoverState;
|
|
46
|
+
export declare function createPopoverProps(props?: QwPopoverProps): QwPopoverProps;
|
|
47
|
+
export interface QwPopoverSchema {
|
|
48
|
+
props: QwPopoverProps;
|
|
49
|
+
context: {
|
|
50
|
+
dismissReady: boolean;
|
|
51
|
+
layout: FloatingLayout | null;
|
|
52
|
+
};
|
|
53
|
+
refs: {
|
|
54
|
+
request: FloatingCloseRequest | null;
|
|
55
|
+
};
|
|
56
|
+
state: "open" | "closed";
|
|
57
|
+
guard: "isControlled";
|
|
58
|
+
action: "notifyOpen" | "notifyClose" | "restoreFocus" | "setLayout" | "dismissReady" | "clearLayout" | "syncControlled";
|
|
59
|
+
effect: "trackLayout" | "trackDismiss";
|
|
60
|
+
event: {
|
|
61
|
+
type: "OPEN" | "TOGGLE";
|
|
62
|
+
reason?: PopoverOpenChangeReason;
|
|
63
|
+
} | {
|
|
64
|
+
type: "CLOSE";
|
|
65
|
+
reason?: PopoverOpenChangeReason;
|
|
66
|
+
focusable?: boolean;
|
|
67
|
+
} | {
|
|
68
|
+
type: "CONTROLLED.OPEN" | "CONTROLLED.CLOSE";
|
|
69
|
+
} | {
|
|
70
|
+
type: "LAYOUT";
|
|
71
|
+
layout: FloatingLayout;
|
|
72
|
+
} | {
|
|
73
|
+
type: "DISMISS.READY";
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export type QwPopoverMachine = Machine<QwPopoverSchema>;
|
|
77
|
+
export type QwPopoverService = Service<QwPopoverSchema>;
|
|
78
|
+
/**
|
|
79
|
+
* Core owns open/close (controlled requests and refusals), positioning while open, dismissal through the
|
|
80
|
+
* shared non-modal layer stack (Escape, outside pointer; focus may leave freely) and the focus return.
|
|
81
|
+
*/
|
|
82
|
+
export declare const popoverMachine: QwPopoverMachine;
|
|
83
|
+
/** Minimal event surface shared by React, Vue and native events. */
|
|
84
|
+
export interface PopoverDomEvent {
|
|
85
|
+
readonly defaultPrevented: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface QwPopoverApi<T extends PropTypes = PropTypes> {
|
|
88
|
+
open: boolean;
|
|
89
|
+
/** The measured placement while open (after flipping), otherwise the preferred one. */
|
|
90
|
+
placement: PopoverPlacement;
|
|
91
|
+
side: FloatingSide;
|
|
92
|
+
align: FloatingAlign;
|
|
93
|
+
/** The open panel has been measured and is visible. */
|
|
94
|
+
positioned: boolean;
|
|
95
|
+
arrow: boolean;
|
|
96
|
+
/** Request a state; controlled owners decide through onOpenChange (reason api). */
|
|
97
|
+
setOpen(open: boolean): void;
|
|
98
|
+
/** Merge onto the caller's own trigger node: its other props and handlers stay; preventDefault() in its onClick skips the toggle. */
|
|
99
|
+
getTriggerProps(): T["element"];
|
|
100
|
+
getPositionerProps(): T["element"];
|
|
101
|
+
getArrowProps(): T["element"];
|
|
102
|
+
getContentProps(): T["element"];
|
|
103
|
+
}
|
|
104
|
+
export declare function connectPopover<T extends PropTypes>(service: QwPopoverService, normalize: NormalizeProps<T>): QwPopoverApi<T>;
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core-owned anchored positioning shared by Popover and Dropdown.
|
|
3
|
+
*
|
|
4
|
+
* `computeFloatingPosition` is a pure function (rects in → coordinates / placement / arrow out).
|
|
5
|
+
* `measureFloatingLayout` / `trackFloatingLayout` are the only DOM binding: they read rects and
|
|
6
|
+
* CSS-provided insets, never write the DOM, and hand a rounded layout to the machine. Adapters
|
|
7
|
+
* render it through `getFloatingPositionerStyle`, so SSR, hydration and every stack share one path.
|
|
8
|
+
*/
|
|
9
|
+
/** Physical sides of the anchor. */
|
|
10
|
+
export declare const FLOATING_SIDES: readonly ["top", "right", "bottom", "left"];
|
|
11
|
+
/** Cross-axis alignments. start/end follow the inline direction on top/bottom (mirrored in RTL) and the block direction on left/right. */
|
|
12
|
+
export declare const FLOATING_ALIGNS: readonly ["center", "start", "end"];
|
|
13
|
+
export declare const FLOATING_PLACEMENTS: readonly ["top", "top-start", "top-end", "right", "right-start", "right-end", "bottom", "bottom-start", "bottom-end", "left", "left-start", "left-end"];
|
|
14
|
+
export type FloatingSide = (typeof FLOATING_SIDES)[number];
|
|
15
|
+
export type FloatingAlign = (typeof FLOATING_ALIGNS)[number];
|
|
16
|
+
export type FloatingPlacement = (typeof FLOATING_PLACEMENTS)[number];
|
|
17
|
+
/** Default main-axis gap between the anchor edge and the floating box, in CSS px. */
|
|
18
|
+
export declare const FLOATING_DEFAULT_OFFSET = 8;
|
|
19
|
+
export interface FloatingRect {
|
|
20
|
+
x: number;
|
|
21
|
+
y: number;
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
}
|
|
25
|
+
export interface FloatingPositionInput {
|
|
26
|
+
/** Anchor border box in viewport coordinates (getBoundingClientRect). */
|
|
27
|
+
anchor: FloatingRect;
|
|
28
|
+
/** Floating border-box size. */
|
|
29
|
+
floating: {
|
|
30
|
+
width: number;
|
|
31
|
+
height: number;
|
|
32
|
+
};
|
|
33
|
+
/** Usable area in viewport coordinates (viewport minus padding and safe areas). */
|
|
34
|
+
boundary: FloatingRect;
|
|
35
|
+
/** Preferred placement; unknown values use `fallback`. */
|
|
36
|
+
placement?: unknown;
|
|
37
|
+
/** Placement used for unknown values; defaults to bottom. */
|
|
38
|
+
fallback?: FloatingPlacement;
|
|
39
|
+
/** Main-axis gap in CSS px; non-finite values use 8. */
|
|
40
|
+
offset?: number;
|
|
41
|
+
/** Arrow square size and the minimum distance from the floating corners; omit or null without an arrow. */
|
|
42
|
+
arrow?: {
|
|
43
|
+
size: number;
|
|
44
|
+
padding?: number;
|
|
45
|
+
} | null;
|
|
46
|
+
/** Mirror start/end on the inline axis (top/bottom sides). */
|
|
47
|
+
rtl?: boolean;
|
|
48
|
+
}
|
|
49
|
+
export interface FloatingPosition {
|
|
50
|
+
/** Floating top-left corner in viewport coordinates. */
|
|
51
|
+
x: number;
|
|
52
|
+
y: number;
|
|
53
|
+
/** Resolved placement after flipping; align stays logical. */
|
|
54
|
+
placement: FloatingPlacement;
|
|
55
|
+
side: FloatingSide;
|
|
56
|
+
align: FloatingAlign;
|
|
57
|
+
/** The preferred side lacked space and the opposite side had more. */
|
|
58
|
+
flipped: boolean;
|
|
59
|
+
/** Arrow start on the cross axis relative to the floating box (from its left edge on top/bottom, its top edge on left/right); null without an arrow. */
|
|
60
|
+
arrow: number | null;
|
|
61
|
+
/** Space on the resolved side (main axis) and the boundary extent (cross axis), never negative. */
|
|
62
|
+
availableWidth: number;
|
|
63
|
+
availableHeight: number;
|
|
64
|
+
}
|
|
65
|
+
/** Unknown values fall back (default bottom). */
|
|
66
|
+
export declare function resolveFloatingPlacement(value: unknown, fallback?: FloatingPlacement): FloatingPlacement;
|
|
67
|
+
export declare function splitFloatingPlacement(placement: FloatingPlacement): {
|
|
68
|
+
side: FloatingSide;
|
|
69
|
+
align: FloatingAlign;
|
|
70
|
+
};
|
|
71
|
+
export declare function joinFloatingPlacement(side: FloatingSide, align: FloatingAlign): FloatingPlacement;
|
|
72
|
+
/**
|
|
73
|
+
* Place the floating box next to the anchor: flip to the opposite side when the preferred side lacks
|
|
74
|
+
* space and the opposite has more, align on the cross axis (start/end mirrored on top/bottom in RTL),
|
|
75
|
+
* shift into the boundary while staying attached to the anchor, and point the arrow at the anchor center.
|
|
76
|
+
*/
|
|
77
|
+
export declare function computeFloatingPosition(input: FloatingPositionInput): FloatingPosition;
|
|
78
|
+
/** Layout written by adapters from Core context: rounded, containing-block compensated, plus the anchor size. */
|
|
79
|
+
export interface FloatingLayout {
|
|
80
|
+
x: number;
|
|
81
|
+
y: number;
|
|
82
|
+
placement: FloatingPlacement;
|
|
83
|
+
side: FloatingSide;
|
|
84
|
+
align: FloatingAlign;
|
|
85
|
+
arrow: number | null;
|
|
86
|
+
availableWidth: number;
|
|
87
|
+
availableHeight: number;
|
|
88
|
+
anchorWidth: number;
|
|
89
|
+
anchorHeight: number;
|
|
90
|
+
}
|
|
91
|
+
export declare function sameFloatingLayout(a: FloatingLayout | null | undefined, b: FloatingLayout | null | undefined): boolean;
|
|
92
|
+
/** Private custom properties written inline on the positioner; component CSS consumes them. */
|
|
93
|
+
export declare const FLOATING_STYLE_VARS: {
|
|
94
|
+
readonly x: "--qw-floating-x";
|
|
95
|
+
readonly y: "--qw-floating-y";
|
|
96
|
+
readonly arrow: "--qw-floating-arrow";
|
|
97
|
+
readonly availableWidth: "--qw-floating-available-width";
|
|
98
|
+
readonly availableHeight: "--qw-floating-available-height";
|
|
99
|
+
readonly anchorWidth: "--qw-floating-anchor-width";
|
|
100
|
+
};
|
|
101
|
+
/**
|
|
102
|
+
* Inline positioner style. Before the first measurement (SSR, hydration, the first client frame) the
|
|
103
|
+
* layer is laid out at the containing-block origin but `visibility: hidden`; afterwards it is translated
|
|
104
|
+
* (layout at the origin keeps its shrink-to-fit width independent of the position).
|
|
105
|
+
*/
|
|
106
|
+
export declare function getFloatingPositionerStyle(layout: FloatingLayout | null): Record<string, string>;
|
|
107
|
+
export interface FloatingTrackOptions {
|
|
108
|
+
/** Elements are looked up on every update: layers mount after the effect starts and may be replaced. */
|
|
109
|
+
anchor(): HTMLElement | null;
|
|
110
|
+
positioner(): HTMLElement | null;
|
|
111
|
+
content(): HTMLElement | null;
|
|
112
|
+
arrow(): HTMLElement | null;
|
|
113
|
+
placement(): unknown;
|
|
114
|
+
offset(): number | undefined;
|
|
115
|
+
fallback: FloatingPlacement;
|
|
116
|
+
onLayout(layout: FloatingLayout): void;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* One measurement. The boundary is the visual viewport (layout viewport without visualViewport) minus the
|
|
120
|
+
* positioner's CSS scroll-margin (gap + safe area, so env() stays in the style layer). The arrow padding is
|
|
121
|
+
* the content's corner radius. A transformed/filtered ancestor offsets fixed boxes: the difference between
|
|
122
|
+
* where the box is and the translate that was applied is subtracted.
|
|
123
|
+
*/
|
|
124
|
+
export declare function measureFloatingLayout(options: FloatingTrackOptions): FloatingLayout | null;
|
|
125
|
+
/** Frames to wait for the layer nodes to mount before giving up (about one second). */
|
|
126
|
+
export declare const FLOATING_WAIT_FRAMES = 60;
|
|
127
|
+
/**
|
|
128
|
+
* Track while open: one rAF-coalesced measurement per scroll (any scroller, captured), window or visual
|
|
129
|
+
* viewport resize, and anchor/positioner ResizeObserver change. The returned cleanup removes every listener,
|
|
130
|
+
* disconnects the observer and cancels the pending frame.
|
|
131
|
+
*/
|
|
132
|
+
export declare function trackFloatingLayout(doc: Document, options: FloatingTrackOptions): () => void;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { a as getPopupPartProps, i as getPopupDataAttrs, n as createPopupProps, o as popupMachine, r as getPopupAccessibleName, s as resolvePopupPlacement, t as connectPopup } from "../popup-z5d8IYCt.js";
|
|
2
|
+
export { connectPopup, createPopupProps, getPopupAccessibleName, getPopupDataAttrs, getPopupPartProps, popupMachine, resolvePopupPlacement };
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { connect, type Api, type Props as ZagDialogProps, type Service, type machine } from "@zag-js/dialog";
|
|
2
|
+
import { type ModalRenderRuntime } from "../modal-render-runtime.js";
|
|
3
|
+
/** Popup 的 Core machine;共享声明归属与焦点策略,按物理节点准入关闭监听。 */
|
|
4
|
+
export declare const popupMachine: typeof machine;
|
|
5
|
+
export type PopupPlacement = "bottom" | "top";
|
|
6
|
+
/**
|
|
7
|
+
* QwPopupProps — 贴边弹出层的跨框架行为输入。
|
|
8
|
+
* modal / role / Esc 是内部无障碍政策,不作为业务开关。
|
|
9
|
+
*/
|
|
10
|
+
export interface QwPopupProps {
|
|
11
|
+
/** 唯一 id;也是 modal-registry 的键。不传时由适配层提供。 */
|
|
12
|
+
id?: string;
|
|
13
|
+
/** 受控开关。传入即受控。 */
|
|
14
|
+
open?: boolean;
|
|
15
|
+
/** 非受控初值,默认 false。 */
|
|
16
|
+
defaultOpen?: boolean;
|
|
17
|
+
/** 贴底或贴顶,默认 bottom。未知值回退 bottom。 */
|
|
18
|
+
placement?: PopupPlacement;
|
|
19
|
+
/** 点击遮罩关闭,默认 true。 */
|
|
20
|
+
closeOnMaskClick?: boolean;
|
|
21
|
+
/** 打开时禁止 body 滚动,默认 true。 */
|
|
22
|
+
disableBodyScroll?: boolean;
|
|
23
|
+
/** 为 false 时不加安全区留白,默认 true。 */
|
|
24
|
+
safeArea?: boolean;
|
|
25
|
+
/** 可访问名称的首选。trim 后为空视为缺省。 */
|
|
26
|
+
title?: string;
|
|
27
|
+
/** 无标题时的可访问名称。trim 后为空视为缺省。 */
|
|
28
|
+
ariaLabel?: string;
|
|
29
|
+
/** 关闭按钮的可访问名称,默认「关闭」。组件不按语言翻译。 */
|
|
30
|
+
closeLabel?: string;
|
|
31
|
+
/** 关闭后的焦点目标。只透传给 zag finalFocusEl,不解析 selector。 */
|
|
32
|
+
returnFocus?: () => HTMLElement | null;
|
|
33
|
+
/** 每次开合请求通知一次。被拒的打开通知一次 false。 */
|
|
34
|
+
onOpenChange?: (open: boolean) => void;
|
|
35
|
+
}
|
|
36
|
+
/** 同 Zag dialog Api。setOpen 与 getTriggerProps 已包装单层模态拒绝。 */
|
|
37
|
+
export type QwPopupApi = Api;
|
|
38
|
+
type PopupNormalize = Parameters<typeof connect>[1];
|
|
39
|
+
/** 未知 placement 回退 bottom。 */
|
|
40
|
+
export declare function resolvePopupPlacement(value: unknown): PopupPlacement;
|
|
41
|
+
/** 可访问名称:title → ariaLabel → 「弹出层」。空白视为缺省。 */
|
|
42
|
+
export declare function getPopupAccessibleName(props: Pick<QwPopupProps, "title" | "ariaLabel">): string;
|
|
43
|
+
/** positioner 与 content 共用的 data 属性。safeArea 缺省为开启。 */
|
|
44
|
+
export declare function getPopupDataAttrs(props: Pick<QwPopupProps, "placement" | "safeArea">): Record<string, string | undefined>;
|
|
45
|
+
/** header / body / footer 没有 Zag part,scope 与 part 由 Core 输出。 */
|
|
46
|
+
export declare function getPopupPartProps(part: "header" | "body" | "footer"): {
|
|
47
|
+
"data-scope": "popup";
|
|
48
|
+
"data-part": "header" | "body" | "footer";
|
|
49
|
+
};
|
|
50
|
+
/** 把公开 props 转成 zag dialog context。受控 open:true 被拒时映射为关闭。 */
|
|
51
|
+
export declare function createPopupProps(props?: QwPopupProps, runtime?: ModalRenderRuntime): Partial<ZagDialogProps>;
|
|
52
|
+
/**
|
|
53
|
+
* 包装 zag connect。触发器 onClick 与 setOpen(true) 先查登记;
|
|
54
|
+
* 被拒时 onClick 调 preventDefault,让 zag 看到 defaultPrevented 后不发 TOGGLE。
|
|
55
|
+
* setOpen(true) 被拒则直接返回,不向 zag 发事件。
|
|
56
|
+
*/
|
|
57
|
+
export declare function connectPopup(service: Service, normalize: PopupNormalize, props?: QwPopupProps, runtime?: ModalRenderRuntime): QwPopupApi & {
|
|
58
|
+
getOriginProps(): ReturnType<PopupNormalize["element"]>;
|
|
59
|
+
};
|
|
60
|
+
export {};
|