@primereact/headless 11.0.0-alpha.1 → 11.0.0-alpha.10
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/accordion/index.mjs +1 -1
- package/accordion/index.mjs.map +1 -1
- package/accordion/useAccordion.d.ts +6 -6
- package/animateonscroll/index.d.ts +2 -0
- package/animateonscroll/index.mjs +2 -0
- package/animateonscroll/index.mjs.map +1 -0
- package/animateonscroll/useAnimateOnScroll.d.ts +3 -0
- package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -0
- package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
- package/autocomplete/index.d.ts +2 -0
- package/autocomplete/index.mjs +2 -0
- package/autocomplete/index.mjs.map +1 -0
- package/autocomplete/useAutoComplete.d.ts +87 -0
- package/autocomplete/useAutoComplete.props.d.ts +2 -0
- package/autocomplete/useAutoComplete.test.d.ts +0 -0
- package/breadcrumb/index.d.ts +2 -0
- package/breadcrumb/index.mjs +2 -0
- package/breadcrumb/index.mjs.map +1 -0
- package/breadcrumb/useBreadcrumb.d.ts +3 -0
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/carousel/index.d.ts +2 -0
- package/carousel/index.mjs +2 -0
- package/carousel/index.mjs.map +1 -0
- package/carousel/useCarousel.d.ts +23 -0
- package/carousel/useCarousel.props.d.ts +2 -0
- package/carousel/useCarousel.test.d.ts +0 -0
- package/checkboxgroup/index.d.ts +2 -0
- package/checkboxgroup/index.mjs +2 -0
- package/checkboxgroup/index.mjs.map +1 -0
- package/checkboxgroup/useCheckboxGroup.d.ts +7 -0
- package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
- package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
- package/collapsible/index.d.ts +2 -0
- package/collapsible/index.mjs +2 -0
- package/collapsible/index.mjs.map +1 -0
- package/collapsible/useCollapsible.d.ts +9 -0
- package/collapsible/useCollapsible.props.d.ts +2 -0
- package/collapsible/useCollapsible.test.d.ts +0 -0
- package/colorpicker/colorManager.d.ts +102 -0
- package/colorpicker/index.d.ts +3 -0
- package/colorpicker/index.mjs +2 -0
- package/colorpicker/index.mjs.map +1 -0
- package/colorpicker/useColorPicker.d.ts +59 -0
- package/colorpicker/useColorPicker.props.d.ts +2 -0
- package/colorpicker/useColorPicker.test.d.ts +0 -0
- package/commandmenu/index.d.ts +2 -0
- package/commandmenu/index.mjs +2 -0
- package/commandmenu/index.mjs.map +1 -0
- package/commandmenu/useCommandMenu.d.ts +11 -0
- package/commandmenu/useCommandMenu.props.d.ts +2 -0
- package/commandmenu/useCommandMenu.test.d.ts +0 -0
- package/compare/index.d.ts +2 -0
- package/compare/index.mjs +2 -0
- package/compare/index.mjs.map +1 -0
- package/compare/useCompare.d.ts +35 -0
- package/compare/useCompare.props.d.ts +2 -0
- package/compare/useCompare.test.d.ts +0 -0
- package/confirmdialog/index.d.ts +2 -0
- package/confirmdialog/index.mjs +2 -0
- package/confirmdialog/index.mjs.map +1 -0
- package/confirmdialog/useConfirmDialog.d.ts +43 -0
- package/confirmdialog/useConfirmDialog.props.d.ts +2 -0
- package/confirmdialog/useConfirmDialog.test.d.ts +0 -0
- package/confirmpopup/index.d.ts +2 -0
- package/confirmpopup/index.mjs +2 -0
- package/confirmpopup/index.mjs.map +1 -0
- package/confirmpopup/useConfirmPopup.d.ts +25 -0
- package/confirmpopup/useConfirmPopup.props.d.ts +2 -0
- package/confirmpopup/useConfirmPopup.test.d.ts +0 -0
- package/contextmenu/index.d.ts +2 -0
- package/contextmenu/index.mjs +2 -0
- package/contextmenu/index.mjs.map +1 -0
- package/contextmenu/useContextMenu.d.ts +1 -0
- package/contextmenu/useContextMenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/dataview/index.d.ts +2 -0
- package/dataview/index.mjs +2 -0
- package/dataview/index.mjs.map +1 -0
- package/dataview/useDataView.d.ts +3 -0
- package/dataview/useDataView.props.d.ts +2 -0
- package/dataview/useDataView.test.d.ts +0 -0
- package/datepicker/index.d.ts +2 -0
- package/datepicker/index.mjs +2 -0
- package/datepicker/index.mjs.map +1 -0
- package/datepicker/useDatePicker.d.ts +114 -0
- package/datepicker/useDatePicker.props.d.ts +2 -0
- package/datepicker/useDatePicker.test.d.ts +0 -0
- package/dialog/index.d.ts +2 -0
- package/dialog/index.mjs +2 -0
- package/dialog/index.mjs.map +1 -0
- package/dialog/useDialog.d.ts +30 -0
- package/dialog/useDialog.props.d.ts +2 -0
- package/dialog/useDialog.test.d.ts +0 -0
- package/drawer/index.d.ts +2 -0
- package/drawer/index.mjs +2 -0
- package/drawer/index.mjs.map +1 -0
- package/drawer/useDrawer.d.ts +24 -0
- package/drawer/useDrawer.props.d.ts +2 -0
- package/drawer/useDrawer.test.d.ts +0 -0
- package/fieldset/index.mjs +1 -1
- package/fieldset/index.mjs.map +1 -1
- package/fieldset/useFieldset.d.ts +29 -1
- package/fileupload/index.d.ts +2 -0
- package/fileupload/index.mjs +2 -0
- package/fileupload/index.mjs.map +1 -0
- package/fileupload/useFileUpload.d.ts +26 -0
- package/fileupload/useFileUpload.props.d.ts +2 -0
- package/fileupload/useFileUpload.test.d.ts +0 -0
- package/floatlabel/index.d.ts +2 -0
- package/floatlabel/index.mjs +2 -0
- package/floatlabel/index.mjs.map +1 -0
- package/floatlabel/useFloatLabel.d.ts +1 -0
- package/floatlabel/useFloatLabel.props.d.ts +2 -0
- package/floatlabel/useFloatLabel.test.d.ts +0 -0
- package/fluid/index.d.ts +2 -0
- package/fluid/index.mjs +2 -0
- package/fluid/index.mjs.map +1 -0
- package/fluid/useFluid.d.ts +1 -0
- package/fluid/useFluid.props.d.ts +2 -0
- package/fluid/useFluid.test.d.ts +0 -0
- package/focustrap/index.d.ts +2 -0
- package/focustrap/index.mjs +2 -0
- package/focustrap/index.mjs.map +1 -0
- package/focustrap/useFocusTrap.d.ts +9 -0
- package/focustrap/useFocusTrap.props.d.ts +2 -0
- package/focustrap/useFocusTrap.test.d.ts +0 -0
- package/gallery/index.d.ts +2 -0
- package/gallery/index.mjs +2 -0
- package/gallery/index.mjs.map +1 -0
- package/gallery/item/index.d.ts +2 -0
- package/gallery/item/index.mjs +2 -0
- package/gallery/item/index.mjs.map +1 -0
- package/gallery/item/useGalleryItem.d.ts +45 -0
- package/gallery/item/useGalleryItem.props.d.ts +2 -0
- package/gallery/useGallery.d.ts +31 -0
- package/gallery/useGallery.props.d.ts +2 -0
- package/gallery/useGallery.test.d.ts +0 -0
- package/iconfield/index.d.ts +2 -0
- package/iconfield/index.mjs +2 -0
- package/iconfield/index.mjs.map +1 -0
- package/iconfield/useIconField.d.ts +1 -0
- package/iconfield/useIconField.props.d.ts +2 -0
- package/iconfield/useIconField.test.d.ts +0 -0
- package/iftalabel/index.d.ts +2 -0
- package/iftalabel/index.mjs +2 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/useIftaLabel.d.ts +1 -0
- package/iftalabel/useIftaLabel.props.d.ts +2 -0
- package/iftalabel/useIftaLabel.test.d.ts +0 -0
- package/inplace/index.mjs +1 -1
- package/inplace/index.mjs.map +1 -1
- package/inplace/useInplace.d.ts +1 -1
- package/inputgroup/index.d.ts +2 -0
- package/inputgroup/index.mjs +2 -0
- package/inputgroup/index.mjs.map +1 -0
- package/inputgroup/useInputGroup.d.ts +1 -0
- package/inputgroup/useInputGroup.props.d.ts +2 -0
- package/inputgroup/useInputGroup.test.d.ts +0 -0
- package/inputnumber/index.d.ts +2 -0
- package/inputnumber/index.mjs +2 -0
- package/inputnumber/index.mjs.map +1 -0
- package/inputnumber/useInputNumber.d.ts +23 -0
- package/inputnumber/useInputNumber.props.d.ts +2 -0
- package/inputnumber/useInputNumber.test.d.ts +0 -0
- package/inputotp/index.d.ts +2 -0
- package/inputotp/index.mjs +2 -0
- package/inputotp/index.mjs.map +1 -0
- package/inputotp/useInputOtp.d.ts +14 -0
- package/inputotp/useInputOtp.props.d.ts +2 -0
- package/inputotp/useInputOtp.test.d.ts +0 -0
- package/inputtags/index.d.ts +2 -0
- package/inputtags/index.mjs +2 -0
- package/inputtags/index.mjs.map +1 -0
- package/inputtags/useInputTags.d.ts +86 -0
- package/inputtags/useInputTags.props.d.ts +2 -0
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/knob/index.d.ts +2 -0
- package/knob/index.mjs +2 -0
- package/knob/index.mjs.map +1 -0
- package/knob/useKnob.d.ts +17 -0
- package/knob/useKnob.props.d.ts +2 -0
- package/knob/useKnob.test.d.ts +0 -0
- package/listbox/index.d.ts +2 -0
- package/listbox/index.mjs +2 -0
- package/listbox/index.mjs.map +1 -0
- package/listbox/useListbox.d.ts +52 -0
- package/listbox/useListbox.props.d.ts +2 -0
- package/listbox/useListbox.test.d.ts +0 -0
- package/menu/index.d.ts +2 -0
- package/menu/index.mjs +2 -0
- package/menu/index.mjs.map +1 -0
- package/menu/sub/index.d.ts +2 -0
- package/menu/sub/index.mjs +2 -0
- package/menu/sub/index.mjs.map +1 -0
- package/menu/sub/useMenuSub.d.ts +19 -0
- package/menu/sub/useMenuSub.props.d.ts +2 -0
- package/menu/useMenu.d.ts +34 -0
- package/menu/useMenu.props.d.ts +2 -0
- package/menu/useMenu.test.d.ts +0 -0
- package/message/index.d.ts +2 -0
- package/message/index.mjs +2 -0
- package/message/index.mjs.map +1 -0
- package/message/useMessage.d.ts +6 -0
- package/message/useMessage.props.d.ts +2 -0
- package/message/useMessage.test.d.ts +0 -0
- package/orgchart/index.d.ts +2 -0
- package/orgchart/index.mjs +2 -0
- package/orgchart/index.mjs.map +1 -0
- package/orgchart/useOrgChart.d.ts +20 -0
- package/orgchart/useOrgChart.props.d.ts +2 -0
- package/orgchart/useOrgChart.test.d.ts +0 -0
- package/overlay/index.d.ts +2 -0
- package/overlay/index.mjs +2 -0
- package/overlay/index.mjs.map +1 -0
- package/overlay/useOverlay.d.ts +16 -0
- package/overlay/useOverlay.props.d.ts +2 -0
- package/overlay/useOverlay.test.d.ts +0 -0
- package/overlaybadge/index.d.ts +2 -0
- package/overlaybadge/index.mjs +2 -0
- package/overlaybadge/index.mjs.map +1 -0
- package/overlaybadge/useOverlayBadge.d.ts +1 -0
- package/overlaybadge/useOverlayBadge.props.d.ts +2 -0
- package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
- package/package.json +6 -6
- package/paginator/index.d.ts +2 -0
- package/paginator/index.mjs +2 -0
- package/paginator/index.mjs.map +1 -0
- package/paginator/usePaginator.d.ts +19 -0
- package/paginator/usePaginator.props.d.ts +2 -0
- package/paginator/usePaginator.test.d.ts +0 -0
- package/panel/index.mjs +1 -1
- package/panel/index.mjs.map +1 -1
- package/panel/usePanel.d.ts +24 -7
- package/password/index.d.ts +2 -0
- package/password/index.mjs +2 -0
- package/password/index.mjs.map +1 -0
- package/password/usePassword.d.ts +9 -0
- package/password/usePassword.props.d.ts +2 -0
- package/password/usePassword.test.d.ts +0 -0
- package/placer/index.d.ts +2 -0
- package/placer/index.mjs +2 -0
- package/placer/index.mjs.map +1 -0
- package/placer/usePlacer.d.ts +12 -0
- package/placer/usePlacer.props.d.ts +2 -0
- package/placer/usePlacer.test.d.ts +0 -0
- package/popover/index.d.ts +2 -0
- package/popover/index.mjs +2 -0
- package/popover/index.mjs.map +1 -0
- package/popover/usePopover.d.ts +19 -0
- package/popover/usePopover.props.d.ts +2 -0
- package/popover/usePopover.test.d.ts +0 -0
- package/portal/index.d.ts +2 -0
- package/portal/index.mjs +2 -0
- package/portal/index.mjs.map +1 -0
- package/portal/usePortal.d.ts +3 -0
- package/portal/usePortal.props.d.ts +2 -0
- package/portal/usePortal.test.d.ts +0 -0
- package/positioner/index.d.ts +2 -0
- package/positioner/index.mjs +2 -0
- package/positioner/index.mjs.map +1 -0
- package/positioner/usePositioner copy.d.ts +18 -0
- package/positioner/usePositioner.d.ts +11 -0
- package/positioner/usePositioner.props.d.ts +2 -0
- package/positioner/usePositioner.test.d.ts +0 -0
- package/radiobuttongroup/index.d.ts +2 -0
- package/radiobuttongroup/index.mjs +2 -0
- package/radiobuttongroup/index.mjs.map +1 -0
- package/radiobuttongroup/useRadioButtonGroup.d.ts +7 -0
- package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
- package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
- package/rating/index.d.ts +2 -0
- package/rating/index.mjs +2 -0
- package/rating/index.mjs.map +1 -0
- package/rating/useRating.d.ts +15 -0
- package/rating/useRating.props.d.ts +2 -0
- package/rating/useRating.test.d.ts +0 -0
- package/select/index.d.ts +2 -0
- package/select/index.mjs +2 -0
- package/select/index.mjs.map +1 -0
- package/select/useSelect.d.ts +87 -0
- package/select/useSelect.props.d.ts +2 -0
- package/select/useSelect.test.d.ts +1 -0
- package/slider/index.d.ts +2 -0
- package/slider/index.mjs +2 -0
- package/slider/index.mjs.map +1 -0
- package/slider/useSlider.d.ts +20 -0
- package/slider/useSlider.props.d.ts +2 -0
- package/slider/useSlider.test.d.ts +0 -0
- package/speeddial/index.d.ts +2 -0
- package/speeddial/index.mjs +2 -0
- package/speeddial/index.mjs.map +1 -0
- package/speeddial/useSpeedDial.d.ts +16 -0
- package/speeddial/useSpeedDial.props.d.ts +2 -0
- package/speeddial/useSpeedDial.test.d.ts +0 -0
- package/terminal/index.d.ts +2 -0
- package/terminal/index.mjs +2 -0
- package/terminal/index.mjs.map +1 -0
- package/terminal/useTerminal.d.ts +13 -0
- package/terminal/useTerminal.props.d.ts +2 -0
- package/terminal/useTerminal.test.d.ts +0 -0
- package/textarea/index.d.ts +2 -0
- package/textarea/index.mjs +2 -0
- package/textarea/index.mjs.map +1 -0
- package/textarea/useTextarea.d.ts +4 -0
- package/textarea/useTextarea.props.d.ts +2 -0
- package/textarea/useTextarea.test.d.ts +0 -0
- package/timeline/index.d.ts +2 -0
- package/timeline/index.mjs +2 -0
- package/timeline/index.mjs.map +1 -0
- package/timeline/useTimeline.d.ts +1 -0
- package/timeline/useTimeline.props.d.ts +2 -0
- package/timeline/useTimeline.test.d.ts +0 -0
- package/toast/index.d.ts +2 -0
- package/toast/index.mjs +2 -0
- package/toast/index.mjs.map +1 -0
- package/toast/useToast.d.ts +31 -0
- package/toast/useToast.props.d.ts +2 -0
- package/toast/useToast.test.d.ts +0 -0
- package/toaster/index.d.ts +3 -0
- package/toaster/index.mjs +2 -0
- package/toaster/index.mjs.map +1 -0
- package/toaster/toastStore.d.ts +40 -0
- package/toaster/useToaster.d.ts +26 -0
- package/toaster/useToaster.props.d.ts +2 -0
- package/toaster/useToaster.test.d.ts +0 -0
- package/togglebuttongroup/index.d.ts +2 -0
- package/togglebuttongroup/index.mjs +2 -0
- package/togglebuttongroup/index.mjs.map +1 -0
- package/togglebuttongroup/useToggleButtonGroup.d.ts +8 -0
- package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
- package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
- package/tooltip/group/index.d.ts +2 -0
- package/tooltip/group/index.mjs +2 -0
- package/tooltip/group/index.mjs.map +1 -0
- package/tooltip/group/useTooltipGroup.d.ts +9 -0
- package/tooltip/group/useTooltipGroup.props.d.ts +2 -0
- package/tooltip/group/useTooltipGroup.test.d.ts +0 -0
- package/tooltip/index.d.ts +2 -0
- package/tooltip/index.mjs +2 -0
- package/tooltip/index.mjs.map +1 -0
- package/tooltip/useTooltip.d.ts +28 -0
- package/tooltip/useTooltip.props.d.ts +2 -0
- package/tooltip/useTooltip.test.d.ts +0 -0
- package/tree/TreeDragDropService.d.ts +24 -0
- package/tree/index.d.ts +3 -0
- package/tree/index.mjs +2 -0
- package/tree/index.mjs.map +1 -0
- package/tree/useTree.d.ts +27 -0
- package/tree/useTree.props.d.ts +2 -0
- package/tree/useTree.test.d.ts +0 -0
package/placer/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as J}from"@primereact/core/headless";import{addStyle as C,getOffset as x,getOuterHeight as T,getOuterWidth as w,getViewport as K}from"@primeuix/utils/dom";import*as A from"react";var k={align:"center",alignOffset:0,side:"top",sideOffset:0};var R=J({name:"usePlacer",defaultProps:k,setup:({props:f})=>{let[P,S]=A.useState(f.side),[$,E]=A.useState(f.align),p=A.useRef(null),d=A.useRef(null),m=A.useRef(null),M={effectiveSide:P,effectiveAlign:$},O=()=>{var n,t;return d!=null&&d.current&&(d==null?void 0:d.current)instanceof HTMLElement?d==null?void 0:d.current:(t=(n=d==null?void 0:d.current)==null?void 0:n.elementRef)==null?void 0:t.current},y=()=>{var n,t;return m!=null&&m.current&&(m==null?void 0:m.current)instanceof HTMLElement?m==null?void 0:m.current:(t=(n=m==null?void 0:m.current)==null?void 0:n.elementRef)==null?void 0:t.current},b=()=>{var n,t;return p!=null&&p.current&&(p==null?void 0:p.current)instanceof HTMLElement?p==null?void 0:p.current:(t=(n=p==null?void 0:p.current)==null?void 0:n.elementRef)==null?void 0:t.current},B=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(t),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)-c-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},N=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=w(o),c=T(o),i=T(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=H(n,Number(r.left),s,e),g=Number(r.top)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${u+a}px, ${g-l}px)`},W=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=w(t),s=T(t),c=T(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),c,s),g=Number(r.left)-e-((h=f.sideOffset)!=null?h:0)-i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},X=n=>{var h;let t=y(),o=O();if(!t||!o)return;let r=x(o),e=T(t),s=T(o),c=w(o),i=w(b()),l=window.scrollY||document.documentElement.scrollTop,a=window.scrollX||document.documentElement.scrollLeft,u=L(n,Number(r.top),s,e),g=Number(r.left)+c+((h=f.sideOffset)!=null?h:0)+i;t.style.transform=`translate(${g+a}px, ${u-l}px)`},H=(n,t,o,r)=>{var e,s;switch(n){case"start":return t+((e=f.alignOffset)!=null?e:0);case"end":return t+o-r-((s=f.alignOffset)!=null?s:0);default:return t+(o-r)/2}},L=(n,t,o,r)=>{var e,s;switch(n){case"start":return t+((e=f.alignOffset)!=null?e:0);case"end":return t+o-r-((s=f.alignOffset)!=null?s:0);default:return t+(o-r)/2}},Y=()=>{var c,i;let n=y();if(!n)return;C(n,{position:"fixed",left:"0",top:"0",willChange:"transform"});let t=b();t&&C(t,{position:"absolute"});let o=q((c=f.side)!=null?c:"top"),r=j((i=f.align)!=null?i:"center"),{side:e,align:s}=V(o,r);S(e),E(s),n.style.setProperty("--placer-transform-origin",G(e!=null?e:"top",s!=null?s:"center"))},v=(n,t)=>{let o=y();o&&(o==null||o.setAttribute("data-side",n),o==null||o.setAttribute("data-align",t));let r=O();r&&(r==null||r.setAttribute("data-side",n),r==null||r.setAttribute("data-align",t));let e=b();e&&(e==null||e.setAttribute("data-side",n),e==null||e.setAttribute("data-align",t))},V=(n,t)=>{for(let o of n)for(let r of t)if(v(o,r),D(o,r),I(o),!F())return{side:o,align:r};return{side:f.side,align:f.align}},j=n=>{switch(n){case"start":return["start","center","end"];case"end":return["end","center","start"];case"center":return["center","start","end"];default:return["center","start","end"]}},q=n=>{let t=["top","right","bottom","left"],o=z(n),r=t.filter(e=>e!==n&&e!==o);return[n,o,...r]},z=n=>{switch(n){case"top":return"bottom";case"bottom":return"top";case"left":return"right";case"right":return"left";default:return n}},D=(n,t)=>{switch(n){case"top":B(t);break;case"bottom":N(t);break;case"left":W(t);break;case"right":X(t);break}S(n),E(t)},F=()=>{var c,i,l,a;let n=y(),t=b();if(!n)return!1;let o=K(),r=n.getBoundingClientRect(),e=t==null?void 0:t.getBoundingClientRect(),s={top:Math.min(r.top,(c=e==null?void 0:e.top)!=null?c:r.top),left:Math.min(r.left,(i=e==null?void 0:e.left)!=null?i:r.left),right:Math.max(r.right,(l=e==null?void 0:e.right)!=null?l:r.right),bottom:Math.max(r.bottom,(a=e==null?void 0:e.bottom)!=null?a:r.bottom)};return s.left<0||s.top<0||s.right>o.width||s.bottom>o.height},G=(n,t)=>{let o=y(),r=b();if(!o)return"center center";let e=o.getBoundingClientRect(),s=r?r.getBoundingClientRect():null,c=e.width/2,i=e.height/2;if(s){let l=s.height,a=s.width,u=s.left+a/2-e.left,g=s.top+l/2-e.top;switch(n){case"top":c=u,i=e.height+l;break;case"bottom":c=u,i=0;break;case"left":c=e.width+a,i=g;break;case"right":c=e.left-s.left,i=g;break}}else{let l=(a,u)=>{let g=a==="x"?e.width:e.height;switch(u){case"start":return 0;case"end":return g;case"center":return g/2}};switch(n){case"top":i=e.height,c=l("x",t);break;case"bottom":i=0,c=l("x",t);break;case"left":c=e.width,i=l("y",t);break;case"right":c=0,i=l("y",t);break}}return`${c}px ${i}px`},I=n=>{let t=b(),o=y(),r=O();if(!o||!t)return;let e=o.getBoundingClientRect(),s=r.getBoundingClientRect(),c=s.left+s.width/2,i=s.top+s.height/2,l=c-e.left,a=i-e.top,u=8;(n==="top"||n==="bottom")&&((l<u||l>e.width-u)&&(t.style.opacity="0"),t.style.left=`${l}px`,t.style.top=n==="top"?"100%":"auto",t.style.bottom=n==="bottom"?"100%":"auto",t.style.transform="translateX(-50%)"),(n==="left"||n==="right")&&((a<u||a>e.height-u)&&(t.style.opacity="0"),t.style.top=`${a}px`,t.style.left=n==="left"?"100%":"auto",t.style.right=n==="right"?"100%":"auto",t.style.transform="translateY(-50%)")};return{state:M,containerRef:m,anchorRef:d,arrowRef:p,applyPlacement:Y}}});export{k as defaultProps,R as usePlacer};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/placer/usePlacer.ts","../../src/placer/usePlacer.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/shared/placer';\nimport { addStyle, getOffset, getOuterHeight, getOuterWidth, getViewport } from '@primeuix/utils/dom';\nimport * as React from 'react';\nimport { defaultProps } from './usePlacer.props';\n\nexport const usePlacer = withHeadless({\n name: 'usePlacer',\n defaultProps,\n setup: ({ props }) => {\n const [effectiveSide, setEffectiveSide] = React.useState<SideType | null | undefined>(props.side);\n const [effectiveAlign, setEffectiveAlign] = React.useState<AlignType | null | undefined>(props.align);\n const arrowRef = React.useRef<HTMLElement | null | unknown>(null);\n const anchorRef = React.useRef<HTMLElement | null | unknown>(null);\n const containerRef = React.useRef<HTMLElement | null | unknown>(null);\n\n const state = {\n effectiveSide,\n effectiveAlign\n };\n\n const getAnchor = () => {\n if (anchorRef?.current && anchorRef?.current instanceof HTMLElement) {\n return anchorRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return anchorRef?.current?.elementRef?.current;\n };\n\n const getContainer = () => {\n if (containerRef?.current && containerRef?.current instanceof HTMLElement) {\n return containerRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return containerRef?.current?.elementRef?.current;\n };\n\n const getArrow = () => {\n if (arrowRef?.current && arrowRef?.current instanceof HTMLElement) {\n return arrowRef?.current;\n }\n\n // @ts-expect-error - Temporary fix for elementRef property access\n return arrowRef?.current?.elementRef?.current;\n };\n\n const placeTop = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const tooltipHeight = getOuterHeight(container);\n const arrowHeight = getOuterHeight(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) - tooltipHeight - (props.sideOffset ?? 0) - arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeBottom = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const anchorWidth = getOuterWidth(anchor);\n const anchorHeight = getOuterHeight(anchor);\n const arrowHeight = getOuterHeight(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const left = getLeftByAlign(align, Number(anchorOffset.left), anchorWidth, tooltipWidth);\n\n const top = Number(anchorOffset.top) + anchorHeight + (props.sideOffset ?? 0) + arrowHeight;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeLeft = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipWidth = getOuterWidth(container);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) - tooltipWidth - (props.sideOffset ?? 0) - arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const placeRight = (align: AlignType) => {\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !anchor) return;\n\n const anchorOffset = getOffset(anchor);\n const tooltipHeight = getOuterHeight(container);\n const anchorHeight = getOuterHeight(anchor);\n const anchorWidth = getOuterWidth(anchor);\n const arrowWidth = getOuterWidth(getArrow());\n\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\n const top = getTopByAlign(align, Number(anchorOffset.top), anchorHeight, tooltipHeight);\n\n const left = Number(anchorOffset.left) + anchorWidth + (props.sideOffset ?? 0) + arrowWidth;\n\n container.style.transform = `translate(${left + scrollLeft}px, ${top - scrollTop}px)`;\n };\n\n const getLeftByAlign = (align: AlignType, anchorLeft: number, anchorWidth: number, tooltipWidth: number): number => {\n switch (align) {\n case 'start':\n return anchorLeft + (props.alignOffset ?? 0);\n case 'end':\n return anchorLeft + anchorWidth - tooltipWidth - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorLeft + (anchorWidth - tooltipWidth) / 2;\n }\n };\n\n const getTopByAlign = (align: AlignType, anchorTop: number, anchorHeight: number, tooltipHeight: number): number => {\n switch (align) {\n case 'start':\n return anchorTop + (props.alignOffset ?? 0);\n case 'end':\n return anchorTop + anchorHeight - tooltipHeight - (props.alignOffset ?? 0);\n case 'center':\n default:\n return anchorTop + (anchorHeight - tooltipHeight) / 2;\n }\n };\n\n const applyPlacement = () => {\n const container = getContainer();\n\n if (!container) return;\n\n addStyle(container, {\n position: 'fixed',\n left: '0',\n top: '0',\n willChange: 'transform'\n });\n\n const arrow = getArrow();\n\n if (arrow) {\n addStyle(arrow, {\n position: 'absolute'\n });\n }\n\n const sideOptions = getSideOptions(props.side ?? 'top');\n const alignOptions = getAlignOptions(props.align ?? 'center');\n\n const { side, align } = tryPlacement(sideOptions, alignOptions);\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n\n container.style.setProperty('--placer-transform-origin', getTransformOrigin(side ?? 'top', align ?? 'center'));\n };\n\n const updateAttributes = (side: SideType, align: AlignType) => {\n const container = getContainer();\n\n if (container) {\n container?.setAttribute('data-side', side);\n container?.setAttribute('data-align', align);\n }\n\n const anchor = getAnchor();\n\n if (anchor) {\n anchor?.setAttribute('data-side', side);\n anchor?.setAttribute('data-align', align);\n }\n\n const arrow = getArrow();\n\n if (arrow) {\n arrow?.setAttribute('data-side', side);\n arrow?.setAttribute('data-align', align);\n }\n };\n\n const tryPlacement = (sideOptions: SideType[], alignOptions: AlignType[]) => {\n for (const side of sideOptions) {\n for (const align of alignOptions) {\n updateAttributes(side, align);\n placeContainer(side, align);\n updateArrowPosition(side);\n\n if (!isOutOfBounds()) {\n return { side, align };\n }\n }\n }\n\n return { side: props.side, align: props.align };\n };\n\n const getAlignOptions = (align: AlignType): AlignType[] => {\n switch (align) {\n case 'start':\n return ['start', 'center', 'end'];\n case 'end':\n return ['end', 'center', 'start'];\n case 'center':\n return ['center', 'start', 'end'];\n default:\n return ['center', 'start', 'end'];\n }\n };\n\n const getSideOptions = (side: SideType): SideType[] => {\n const allSides: SideType[] = ['top', 'right', 'bottom', 'left'];\n const flipped = flipSide(side);\n const remaining = allSides.filter((s) => s !== side && s !== flipped);\n\n return [side, flipped, ...remaining];\n };\n\n const flipSide = (side: SideType): SideType => {\n switch (side) {\n case 'top':\n return 'bottom';\n case 'bottom':\n return 'top';\n case 'left':\n return 'right';\n case 'right':\n return 'left';\n default:\n return side;\n }\n };\n\n const placeContainer = (side: SideType, align: AlignType) => {\n switch (side) {\n case 'top':\n placeTop(align);\n break;\n case 'bottom':\n placeBottom(align);\n break;\n case 'left':\n placeLeft(align);\n break;\n case 'right':\n placeRight(align);\n break;\n }\n\n setEffectiveSide(side);\n setEffectiveAlign(align);\n };\n\n const isOutOfBounds = () => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return false;\n\n const viewport = getViewport();\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow?.getBoundingClientRect();\n\n const combinedRect = {\n top: Math.min(containerRect.top, arrowRect?.top ?? containerRect.top),\n left: Math.min(containerRect.left, arrowRect?.left ?? containerRect.left),\n right: Math.max(containerRect.right, arrowRect?.right ?? containerRect.right),\n bottom: Math.max(containerRect.bottom, arrowRect?.bottom ?? containerRect.bottom)\n };\n\n return combinedRect.left < 0 || combinedRect.top < 0 || combinedRect.right > viewport.width || combinedRect.bottom > viewport.height;\n };\n\n const getTransformOrigin = (side: SideType, align: AlignType): string => {\n const container = getContainer();\n const arrow = getArrow();\n\n if (!container) return 'center center';\n\n const containerRect = container.getBoundingClientRect();\n const arrowRect = arrow ? (arrow as HTMLElement).getBoundingClientRect() : null;\n\n let originX = containerRect.width / 2;\n let originY = containerRect.height / 2;\n\n if (arrowRect) {\n const arrowHeight = arrowRect.height;\n const arrowWidth = arrowRect.width;\n const arrowCenterX = arrowRect.left + arrowWidth / 2 - containerRect.left;\n const arrowCenterY = arrowRect.top + arrowHeight / 2 - containerRect.top;\n\n switch (side) {\n case 'top':\n originX = arrowCenterX;\n originY = containerRect.height + arrowHeight;\n break;\n case 'bottom':\n originX = arrowCenterX;\n originY = 0;\n break;\n case 'left':\n originX = containerRect.width + arrowWidth;\n originY = arrowCenterY;\n break;\n case 'right':\n originX = containerRect.left - arrowRect.left;\n originY = arrowCenterY;\n break;\n }\n } else {\n const alignTo = (type: 'x' | 'y', align: AlignType) => {\n const dim = type === 'x' ? containerRect.width : containerRect.height;\n\n switch (align) {\n case 'start':\n return 0;\n case 'end':\n return dim;\n case 'center':\n return dim / 2;\n }\n };\n\n switch (side) {\n case 'top':\n originY = containerRect.height;\n originX = alignTo('x', align);\n break;\n case 'bottom':\n originY = 0;\n originX = alignTo('x', align);\n\n break;\n case 'left':\n originX = containerRect.width;\n originY = alignTo('y', align);\n\n break;\n case 'right':\n originX = 0;\n originY = alignTo('y', align);\n\n break;\n }\n }\n\n return `${originX}px ${originY}px`;\n };\n\n const updateArrowPosition = (side: SideType) => {\n const arrow = getArrow();\n const container = getContainer();\n const anchor = getAnchor();\n\n if (!container || !arrow) return;\n\n const tooltipRect = container.getBoundingClientRect();\n const anchorRect = anchor.getBoundingClientRect();\n const anchorCenterX = anchorRect.left + anchorRect.width / 2;\n const anchorCenterY = anchorRect.top + anchorRect.height / 2;\n\n const arrowLeft = anchorCenterX - tooltipRect.left;\n const arrowTop = anchorCenterY - tooltipRect.top;\n const padding = 8;\n\n if (side === 'top' || side === 'bottom') {\n if (arrowLeft < padding || arrowLeft > tooltipRect.width - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.left = `${arrowLeft}px`;\n arrow.style.top = side === 'top' ? '100%' : 'auto';\n arrow.style.bottom = side === 'bottom' ? '100%' : 'auto';\n arrow.style.transform = 'translateX(-50%)';\n }\n\n if (side === 'left' || side === 'right') {\n if (arrowTop < padding || arrowTop > tooltipRect.height - padding) {\n arrow.style.opacity = '0';\n }\n\n arrow.style.top = `${arrowTop}px`;\n arrow.style.left = side === 'left' ? '100%' : 'auto';\n arrow.style.right = side === 'right' ? '100%' : 'auto';\n arrow.style.transform = 'translateY(-50%)';\n }\n };\n\n // effects\n\n return {\n state,\n containerRef,\n anchorRef,\n arrowRef,\n applyPlacement\n };\n }\n});\n","import type { usePlacerProps } from '@primereact/types/shared/placer';\n\nexport const defaultProps: usePlacerProps = {\n align: 'center',\n alignOffset: 0,\n side: 'top',\n sideOffset: 0\n};\n"],"mappings":"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","names":["withHeadless","addStyle","getOffset","getOuterHeight","getOuterWidth","getViewport","React","defaultProps","usePlacer","withHeadless","defaultProps","props","effectiveSide","setEffectiveSide","effectiveAlign","setEffectiveAlign","arrowRef","anchorRef","containerRef","state","getAnchor","_a","_b","getContainer","getArrow","placeTop","align","container","anchor","anchorOffset","getOffset","tooltipWidth","getOuterWidth","anchorWidth","tooltipHeight","getOuterHeight","arrowHeight","scrollTop","scrollLeft","left","getLeftByAlign","top","placeBottom","anchorHeight","placeLeft","arrowWidth","getTopByAlign","placeRight","anchorLeft","anchorTop","applyPlacement","addStyle","arrow","sideOptions","getSideOptions","alignOptions","getAlignOptions","side","tryPlacement","getTransformOrigin","updateAttributes","placeContainer","updateArrowPosition","isOutOfBounds","allSides","flipped","flipSide","remaining","s","_c","_d","viewport","getViewport","containerRect","arrowRect","combinedRect","originX","originY","arrowCenterX","arrowCenterY","alignTo","type","dim","tooltipRect","anchorRect","anchorCenterX","anchorCenterY","arrowLeft","arrowTop","padding"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/shared/placer';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const usePlacer: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/placer").usePlacerProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
effectiveSide: SideType | null | undefined;
|
|
6
|
+
effectiveAlign: AlignType | null | undefined;
|
|
7
|
+
};
|
|
8
|
+
containerRef: React.RefObject<unknown>;
|
|
9
|
+
anchorRef: React.RefObject<unknown>;
|
|
10
|
+
arrowRef: React.RefObject<unknown>;
|
|
11
|
+
applyPlacement: () => void;
|
|
12
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as M}from"@primereact/core/headless";import{useControlledState as T}from"@primereact/hooks/use-controlled-state";import{useEventListener as O}from"@primereact/hooks/use-event-listener";import{usePresence as b}from"@primereact/hooks/use-presence";import*as t from"react";var f={defaultOpen:void 0,open:void 0,onOpenChange:void 0};var y=M({name:"usePopover",defaultProps:f,setup:({props:o})=>{let[n,p]=T({value:o.open,defaultValue:o.defaultOpen,onChange:o.onOpenChange}),[m,E]=t.useState(null),[R,v]=t.useState(null),[d,L]=t.useState(null),P=b(!!n),l=t.useRef(null),s=t.useRef(null),u=t.useRef(null),H=t.useCallback(e=>{e!==l.current&&(l.current=e,E(e))},[]),h=t.useCallback(e=>{e!==s.current&&(s.current=e,v(e))},[]),C=t.useCallback(e=>{e!==u.current&&(u.current=e,L(e))},[]);function c(e,r){p([e,{originalEvent:r,open:e}])}let[a,i]=O({type:"click",listener:e=>{let r=s.current;n&&r&&!r.contains(e.target)&&c(!1,e)}});return t.useEffect(()=>{n?a():i()},[n,a,i]),{state:{open:n,anchorEl:m,positionerEl:R,arrowEl:d},presence:P,setOpen:c,setArrowRef:C,setAnchorRef:H,setPositionerRef:h}}});export{f as defaultProps,y as usePopover};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/popover/usePopover.ts","../../src/popover/usePopover.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { usePresence } from '@primereact/hooks/use-presence';\nimport * as React from 'react';\nimport { defaultProps } from './usePopover.props';\n\nexport const usePopover = withHeadless({\n name: 'usePopover',\n defaultProps,\n setup: ({ props }) => {\n const [openState, setOpenState] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen,\n onChange: props.onOpenChange\n });\n\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\n const [positionerEl, setPositionerEl] = React.useState<HTMLDivElement | null>(null);\n const [arrowEl, setArrowEl] = React.useState<HTMLDivElement | null>(null);\n const presence = usePresence(!!openState);\n\n const anchorRef = React.useRef<HTMLElement>(null);\n const positionerRef = React.useRef<HTMLDivElement>(null);\n const arrowRef = React.useRef<HTMLDivElement>(null);\n\n const setAnchorRef = React.useCallback((node: HTMLElement | null) => {\n if (node === anchorRef.current) return;\n\n anchorRef.current = node;\n setAnchorEl(node);\n }, []);\n\n const setPositionerRef = React.useCallback((node: HTMLDivElement | null) => {\n if (node === positionerRef.current) return;\n\n positionerRef.current = node;\n setPositionerEl(node);\n }, []);\n\n const setArrowRef = React.useCallback((node: HTMLDivElement | null) => {\n if (node === arrowRef.current) return;\n\n arrowRef.current = node;\n setArrowEl(node);\n }, []);\n\n function setOpen(open: boolean, originalEvent?: Event) {\n setOpenState([\n open,\n {\n originalEvent,\n open\n }\n ]);\n }\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event: Event) => {\n const positionerElement = positionerRef.current;\n\n if (openState && positionerElement && !positionerElement.contains(event.target as Node)) {\n setOpen(false, event);\n }\n }\n });\n\n React.useEffect(() => {\n if (openState) {\n bindOutsideClickListener();\n } else {\n unbindOutsideClickListener();\n }\n }, [openState, bindOutsideClickListener, unbindOutsideClickListener]);\n\n const state = {\n open: openState,\n anchorEl,\n positionerEl,\n arrowEl\n };\n\n return {\n state,\n presence,\n setOpen,\n setArrowRef,\n setAnchorRef,\n setPositionerRef\n };\n }\n});\n","import type { usePopoverProps } from '@primereact/types/shared/popover';\n\nexport const defaultProps: usePopoverProps = {\n defaultOpen: undefined,\n open: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCACnC,OAAS,oBAAAC,MAAwB,uCACjC,OAAS,eAAAC,MAAmB,iCAC5B,UAAYC,MAAW,QCFhB,IAAMC,EAAgC,CACzC,YAAa,OACb,KAAM,OACN,aAAc,MAClB,EDCO,IAAMC,EAAaC,EAAa,CACnC,KAAM,aACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,GAAM,CAACC,EAAWC,CAAY,EAAIC,EAAmB,CACjD,MAAOH,EAAM,KACb,aAAcA,EAAM,YACpB,SAAUA,EAAM,YACpB,CAAC,EAEK,CAACI,EAAUC,CAAW,EAAU,WAA6B,IAAI,EACjE,CAACC,EAAcC,CAAe,EAAU,WAAgC,IAAI,EAC5E,CAACC,EAASC,CAAU,EAAU,WAAgC,IAAI,EAClEC,EAAWC,EAAY,CAAC,CAACV,CAAS,EAElCW,EAAkB,SAAoB,IAAI,EAC1CC,EAAsB,SAAuB,IAAI,EACjDC,EAAiB,SAAuB,IAAI,EAE5CC,EAAqB,cAAaC,GAA6B,CAC7DA,IAASJ,EAAU,UAEvBA,EAAU,QAAUI,EACpBX,EAAYW,CAAI,EACpB,EAAG,CAAC,CAAC,EAECC,EAAyB,cAAaD,GAAgC,CACpEA,IAASH,EAAc,UAE3BA,EAAc,QAAUG,EACxBT,EAAgBS,CAAI,EACxB,EAAG,CAAC,CAAC,EAECE,EAAoB,cAAaF,GAAgC,CAC/DA,IAASF,EAAS,UAEtBA,EAAS,QAAUE,EACnBP,EAAWO,CAAI,EACnB,EAAG,CAAC,CAAC,EAEL,SAASG,EAAQC,EAAeC,EAAuB,CACnDnB,EAAa,CACTkB,EACA,CACI,cAAAC,EACA,KAAAD,CACJ,CACJ,CAAC,CACL,CAEA,GAAM,CAACE,EAA0BC,CAA0B,EAAIC,EAAiB,CAC5E,KAAM,QACN,SAAWC,GAAiB,CACxB,IAAMC,EAAoBb,EAAc,QAEpCZ,GAAayB,GAAqB,CAACA,EAAkB,SAASD,EAAM,MAAc,GAClFN,EAAQ,GAAOM,CAAK,CAE5B,CACJ,CAAC,EAED,OAAM,YAAU,IAAM,CACdxB,EACAqB,EAAyB,EAEzBC,EAA2B,CAEnC,EAAG,CAACtB,EAAWqB,EAA0BC,CAA0B,CAAC,EAS7D,CACH,MARU,CACV,KAAMtB,EACN,SAAAG,EACA,aAAAE,EACA,QAAAE,CACJ,EAII,SAAAE,EACA,QAAAS,EACA,YAAAD,EACA,aAAAH,EACA,iBAAAE,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","useEventListener","usePresence","React","defaultProps","usePopover","withHeadless","defaultProps","props","openState","setOpenState","useControlledState","anchorEl","setAnchorEl","positionerEl","setPositionerEl","arrowEl","setArrowEl","presence","usePresence","anchorRef","positionerRef","arrowRef","setAnchorRef","node","setPositionerRef","setArrowRef","setOpen","open","originalEvent","bindOutsideClickListener","unbindOutsideClickListener","useEventListener","event","positionerElement"]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const usePopover: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/popover").usePopoverProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
open: boolean | undefined;
|
|
5
|
+
anchorEl: HTMLElement | null;
|
|
6
|
+
positionerEl: HTMLDivElement | null;
|
|
7
|
+
arrowEl: HTMLDivElement | null;
|
|
8
|
+
};
|
|
9
|
+
presence: {
|
|
10
|
+
present: boolean;
|
|
11
|
+
exiting: boolean;
|
|
12
|
+
mounted: boolean;
|
|
13
|
+
ref: React.RefObject<HTMLElement | null>;
|
|
14
|
+
};
|
|
15
|
+
setOpen: (open: boolean, originalEvent?: Event) => void;
|
|
16
|
+
setArrowRef: (node: HTMLDivElement | null) => void;
|
|
17
|
+
setAnchorRef: (node: HTMLElement | null) => void;
|
|
18
|
+
setPositionerRef: (node: HTMLDivElement | null) => void;
|
|
19
|
+
}>;
|
|
File without changes
|
package/portal/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as f}from"@primereact/core/headless";import{useMountEffect as d,useUnmountEffect as i,useUpdateEffect as m}from"@primereact/hooks";import{isClient as n}from"@primeuix/utils";import*as u from"react";var o={visible:!1,onMounted:void 0,onUnmounted:void 0};var P=f({name:"usePortal",defaultProps:o,setup({props:e}){let[t,r]=u.useState(e.visible&&n());return d(()=>{n()&&!t&&(r(!0),e.onMounted&&e.onMounted())}),m(()=>{e.onMounted&&e.onMounted()},[t]),i(()=>{e.onUnmounted&&e.onUnmounted()}),{mountedState:t}}});export{o as defaultProps,P as usePortal};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/portal/usePortal.ts","../../src/portal/usePortal.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useMountEffect, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { isClient } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './usePortal.props';\n\nexport const usePortal = withHeadless({\n name: 'usePortal',\n defaultProps,\n setup({ props }) {\n const [mountedState, setMountedState] = React.useState<boolean | undefined>(props.visible && isClient());\n\n useMountEffect(() => {\n if (isClient() && !mountedState) {\n setMountedState(true);\n\n if (props.onMounted) {\n props.onMounted();\n }\n }\n });\n\n useUpdateEffect(() => {\n if (props.onMounted) {\n props.onMounted();\n }\n }, [mountedState]);\n\n useUnmountEffect(() => {\n if (props.onUnmounted) {\n props.onUnmounted();\n }\n });\n\n return {\n mountedState\n };\n }\n});\n","import type { usePortalProps } from '@primereact/types/shared/portal';\n\nexport const defaultProps: usePortalProps = {\n visible: false,\n onMounted: undefined,\n onUnmounted: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,kBAAAC,EAAgB,oBAAAC,EAAkB,mBAAAC,MAAuB,oBAClE,OAAS,YAAAC,MAAgB,kBACzB,UAAYC,MAAW,QCDhB,IAAMC,EAA+B,CACxC,QAAS,GACT,UAAW,OACX,YAAa,MACjB,EDAO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CACb,GAAM,CAACC,EAAcC,CAAe,EAAU,WAA8BF,EAAM,SAAWG,EAAS,CAAC,EAEvG,OAAAC,EAAe,IAAM,CACbD,EAAS,GAAK,CAACF,IACfC,EAAgB,EAAI,EAEhBF,EAAM,WACNA,EAAM,UAAU,EAG5B,CAAC,EAEDK,EAAgB,IAAM,CACdL,EAAM,WACNA,EAAM,UAAU,CAExB,EAAG,CAACC,CAAY,CAAC,EAEjBK,EAAiB,IAAM,CACfN,EAAM,aACNA,EAAM,YAAY,CAE1B,CAAC,EAEM,CACH,aAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useMountEffect","useUnmountEffect","useUpdateEffect","isClient","React","defaultProps","usePortal","withHeadless","defaultProps","props","mountedState","setMountedState","isClient","useMountEffect","useUpdateEffect","useUnmountEffect"]}
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
var X=Object.defineProperty,Y=Object.defineProperties;var j=Object.getOwnPropertyDescriptors;var R=Object.getOwnPropertySymbols;var B=Object.prototype.hasOwnProperty,q=Object.prototype.propertyIsEnumerable;var k=(n,t,o)=>t in n?X(n,t,{enumerable:!0,configurable:!0,writable:!0,value:o}):n[t]=o,F=(n,t)=>{for(var o in t||(t={}))B.call(t,o)&&k(n,o,t[o]);if(R)for(var o of R(t))q.call(t,o)&&k(n,o,t[o]);return n},W=(n,t)=>Y(n,j(t));import{withHeadless as I}from"@primereact/core/headless";import*as s from"react";var D={side:"bottom",align:"center",sideOffset:0,alignOffset:0,flip:!0,shift:!0,hideWhenDetached:!1,anchor:void 0,content:void 0,arrow:void 0};var Z=I({name:"usePositioner",defaultProps:D,setup({id:n,props:t}){let[o,f]=s.useState(),[c,m]=s.useState(),g=`--positioner-trigger-${n}`,u=`--positioner-content-${n}`;s.useEffect(()=>{f(void 0),m(void 0)},[t.side,t.align]);let w=s.useCallback(()=>{let i=o!=null?o:t.side,e=c!=null?c:t.align,r=i==="top"||i==="bottom",b={top:"bottom",bottom:"top",left:"right",right:"left"}[i],a;return r?a=e==="start"?"left":e==="end"?"right":"center":a=e==="start"?"top":e==="end"?"bottom":"center",`${a} ${b}`},[o,c,t.side,t.align]),y=s.useCallback(()=>{let i={left:"",right:"",top:"",bottom:"",marginTop:"",marginRight:"",marginBottom:"",marginLeft:"",positionTryFallbacks:""};i.positionArea=t.side;let e={top:"marginBottom",bottom:"marginTop",left:"marginRight",right:"marginLeft"};return t.sideOffset&&(i[e[t.side]]=`${t.sideOffset}px`),t.align!=="center"&&(t.side==="top"||t.side==="bottom"?t.align==="start"?i.left=`calc(anchor(start) + ${t.alignOffset}px)`:i.right=`calc(anchor(end) - ${t.alignOffset}px)`:t.align==="start"?i.top=`calc(anchor(start) + ${t.alignOffset}px)`:i.bottom=`calc(anchor(end) - ${t.alignOffset}px)`),(t.flip||t.shift)&&(i.positionTryFallbacks="flip-block, flip-inline, flip-block flip-inline"),t.hideWhenDetached?i.positionVisibility="anchors-visible":i.positionVisibility="always",i},[t.side,t.align,t.sideOffset,t.alignOffset,t.flip,t.shift,t.hideWhenDetached]),l=s.useCallback(()=>{let i=t.anchor,e=t.content;if(!i||!e)return;let r=i.getBoundingClientRect(),b=e.getBoundingClientRect(),a=G(e,b),{side:d,align:S}=N(r,b);e.dataset.side!==d&&(e.dataset.side=d),e.dataset.align!==S&&(e.dataset.align=S),f(h=>h===d?h:d),m(h=>h===S?h:S);let E=r.left+r.width/2,L=r.top+r.height/2,P=t.arrow;if(P){let h=window.getComputedStyle(P),A=parseFloat(h.width||"0")||parseFloat(h.height||"0")||0,M=Math.max(P.offsetWidth,P.offsetHeight,A),v=M/2,$=Math.max(8,v),O=V(E-a.left,$,a.width-$),T=V(L-a.top,$,a.height-$),p=O-v,z=T-v;e.style.setProperty("--placer-arrow-x",`${O}px`),e.style.setProperty("--placer-arrow-y",`${T}px`),e.style.setProperty("--placer-arrow-left",`${p}px`),e.style.setProperty("--placer-arrow-top",`${z}px`);let C=M/2,H=d==="top"?`${O}px calc(${a.height}px + ${C}px)`:d==="bottom"?`${O}px calc(0px - ${C}px)`:d==="left"?`calc(${a.width}px + ${C}px) ${T}px`:`calc(0px - ${C}px) ${T}px`;e.style.setProperty("--transform-origin",H),M===0&&requestAnimationFrame(l)}else{let h=E-a.left,A=L-a.top;e.style.removeProperty("--placer-arrow-x"),e.style.removeProperty("--placer-arrow-y"),e.style.removeProperty("--placer-arrow-left"),e.style.removeProperty("--placer-arrow-top"),e.style.setProperty("--transform-origin",`${h}px ${A}px`)}},[t.anchor,t.content,t.arrow]);return s.useLayoutEffect(()=>{if(!t.anchor||!t.content)return;let i=0,e=()=>l(),r=new ResizeObserver(()=>l());t.anchor instanceof Element&&r.observe(t.anchor),t.content instanceof Element&&r.observe(t.content),window.addEventListener("resize",e),window.addEventListener("scroll",e,!0);let b=5,a=0,d=()=>{l(),a+=1,a<b&&(i=requestAnimationFrame(d))};return i=requestAnimationFrame(d),()=>{window.removeEventListener("resize",e),window.removeEventListener("scroll",e,!0),r.disconnect(),cancelAnimationFrame(i)}},[t.anchor,t.content,l]),s.useEffect(()=>{var i;!t.anchor||!t.content||(Object.assign(t.content.style,W(F({position:"fixed",positionAnchor:g,anchorName:u},y()),{"--transform-origin":w()})),Object.assign((i=t.anchor)==null?void 0:i.style,{anchorName:g}))},[t.anchor,t.content,y,w]),s.useEffect(()=>{!t.anchor||!t.content||l()},[t.anchor,t.content,t.arrow,t.side,t.align,t.sideOffset,t.alignOffset,t.flip,t.shift,t.hideWhenDetached,l]),s.useEffect(()=>{var i,e;t.content&&Object.assign((i=t.content)==null?void 0:i.dataset,{side:o,align:c}),t.arrow&&Object.assign((e=t.arrow)==null?void 0:e.dataset,{side:o,align:c})},[t.arrow,t.content,o,c]),{state:{actualSide:o,actualAlign:c},getTransformOrigin:w,computePosition:y,updatePlacement:l}}});function N(n,t){let o=n.left+n.width/2,f=n.top+n.height/2,c=t.left+t.width/2,m=t.top+t.height/2,g=c-o,u=m-f,w={top:n.top-t.bottom,bottom:t.top-n.bottom,left:n.left-t.right,right:t.left-n.right},y=Object.entries(w).filter(([,e])=>e>=0),l=y.length>0?y.sort((e,r)=>e[1]-r[1])[0][0]:Math.abs(g)>Math.abs(u)?g>0?"right":"left":u>0?"bottom":"top",x=4,i="center";return l==="top"||l==="bottom"?Math.abs(t.left-n.left)<=x?i="start":Math.abs(t.right-n.right)<=x&&(i="end"):Math.abs(t.top-n.top)<=x?i="start":Math.abs(t.bottom-n.bottom)<=x&&(i="end"),{side:l,align:i}}function V(n,t,o){return Math.min(Math.max(n,t),o)}function G(n,t){let o=n.offsetWidth||t.width,f=n.offsetHeight||t.height;if(!o||!f)return t;let c=t.width/o||1,m=t.height/f||1,g=t.left-(o*c-o)/2,u=t.top-(f*m-f)/2;return{left:g,top:u,width:o,height:f}}export{D as defaultProps,Z as usePositioner};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/positioner/usePositioner.ts","../../src/positioner/usePositioner.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { AlignType, SideType } from '@primereact/types/shared/positioner';\nimport * as React from 'react';\nimport { defaultProps } from './usePositioner.props';\n\nexport const usePositioner = withHeadless({\n name: 'usePositioner',\n defaultProps,\n setup({ id, props }) {\n const [actualSide, setActualSide] = React.useState<SideType>();\n const [actualAlign, setActualAlign] = React.useState<AlignType>();\n\n const anchorName = `--positioner-trigger-${id}`;\n const contentAnchor = `--positioner-content-${id}`;\n\n React.useEffect(() => {\n setActualSide(undefined);\n setActualAlign(undefined);\n }, [props.side, props.align]);\n\n const getTransformOrigin = React.useCallback((): string => {\n const originSide = actualSide ?? props.side;\n const originAlign = actualAlign ?? props.align;\n const isVertical = originSide === 'top' || originSide === 'bottom';\n\n const primary = {\n top: 'bottom',\n bottom: 'top',\n left: 'right',\n right: 'left'\n }[originSide as SideType];\n\n let secondary: string;\n\n if (isVertical) {\n secondary = originAlign === 'start' ? 'left' : originAlign === 'end' ? 'right' : 'center';\n } else {\n secondary = originAlign === 'start' ? 'top' : originAlign === 'end' ? 'bottom' : 'center';\n }\n\n return `${secondary} ${primary}`;\n }, [actualSide, actualAlign, props.side, props.align]);\n\n const computePosition = React.useCallback((): React.CSSProperties => {\n const style: React.CSSProperties & Record<string, string> = {\n left: '',\n right: '',\n top: '',\n bottom: '',\n marginTop: '',\n marginRight: '',\n marginBottom: '',\n marginLeft: '',\n positionTryFallbacks: ''\n };\n\n style.positionArea = props.side;\n\n const sideMarginMap: Record<SideType, keyof React.CSSProperties> = {\n top: 'marginBottom',\n bottom: 'marginTop',\n left: 'marginRight',\n right: 'marginLeft'\n };\n\n if (props.sideOffset) {\n style[sideMarginMap[props.side as SideType] as string] = `${props.sideOffset}px`;\n }\n\n if (props.align !== 'center') {\n const isVertical = props.side === 'top' || props.side === 'bottom';\n\n if (isVertical) {\n if (props.align === 'start') {\n // content left = anchor left\n style.left = `calc(anchor(start) + ${props.alignOffset}px)`;\n } else {\n // content right = anchor right\n style.right = `calc(anchor(end) - ${props.alignOffset}px)`;\n }\n } else {\n if (props.align === 'start') {\n // content top = anchor top\n style.top = `calc(anchor(start) + ${props.alignOffset}px)`;\n } else {\n // content bottom = anchor bottom\n style.bottom = `calc(anchor(end) - ${props.alignOffset}px)`;\n }\n }\n }\n\n if (props.flip || props.shift) {\n style.positionTryFallbacks = 'flip-block, flip-inline, flip-block flip-inline';\n }\n\n if (props.hideWhenDetached) {\n (style as React.CSSProperties & { positionVisibility?: string }).positionVisibility = 'anchors-visible';\n } else {\n (style as React.CSSProperties & { positionVisibility?: string }).positionVisibility = 'always';\n }\n\n return style;\n }, [props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached]);\n\n const updatePlacement = React.useCallback(() => {\n const trigger = props.anchor;\n const content = props.content;\n\n if (!trigger || !content) return;\n\n const triggerRect = trigger.getBoundingClientRect();\n const contentRect = content.getBoundingClientRect();\n const positionerLayout = getLayoutRect(content, contentRect);\n const { side: nextSide, align: nextAlign } = getPlacementFromRects(triggerRect, contentRect);\n\n if (content.dataset.side !== nextSide) content.dataset.side = nextSide;\n\n if (content.dataset.align !== nextAlign) content.dataset.align = nextAlign;\n\n setActualSide((prev) => (prev === nextSide ? prev : nextSide));\n setActualAlign((prev) => (prev === nextAlign ? prev : nextAlign));\n\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const arrow = props.arrow;\n\n if (arrow) {\n const computed = window.getComputedStyle(arrow);\n const cssArrowSize = parseFloat(computed.width || '0') || parseFloat(computed.height || '0') || 0;\n const arrowSize = Math.max(arrow.offsetWidth, arrow.offsetHeight, cssArrowSize);\n const arrowHalf = arrowSize / 2;\n const arrowInset = Math.max(8, arrowHalf);\n const arrowX = clamp(triggerCenterX - positionerLayout.left, arrowInset, positionerLayout.width - arrowInset);\n const arrowY = clamp(triggerCenterY - positionerLayout.top, arrowInset, positionerLayout.height - arrowInset);\n const arrowLeft = arrowX - arrowHalf;\n const arrowTop = arrowY - arrowHalf;\n\n content.style.setProperty('--placer-arrow-x', `${arrowX}px`);\n content.style.setProperty('--placer-arrow-y', `${arrowY}px`);\n content.style.setProperty('--placer-arrow-left', `${arrowLeft}px`);\n content.style.setProperty('--placer-arrow-top', `${arrowTop}px`);\n\n const arrowTip = arrowSize / 2;\n const transformOrigin =\n nextSide === 'top'\n ? `${arrowX}px calc(${positionerLayout.height}px + ${arrowTip}px)`\n : nextSide === 'bottom'\n ? `${arrowX}px calc(0px - ${arrowTip}px)`\n : nextSide === 'left'\n ? `calc(${positionerLayout.width}px + ${arrowTip}px) ${arrowY}px`\n : `calc(0px - ${arrowTip}px) ${arrowY}px`;\n\n content.style.setProperty('--transform-origin', transformOrigin);\n\n if (arrowSize === 0) {\n requestAnimationFrame(updatePlacement);\n }\n } else {\n const originX = triggerCenterX - positionerLayout.left;\n const originY = triggerCenterY - positionerLayout.top;\n\n content.style.removeProperty('--placer-arrow-x');\n content.style.removeProperty('--placer-arrow-y');\n content.style.removeProperty('--placer-arrow-left');\n content.style.removeProperty('--placer-arrow-top');\n content.style.setProperty('--transform-origin', `${originX}px ${originY}px`);\n }\n }, [props.anchor, props.content, props.arrow]);\n\n React.useLayoutEffect(() => {\n if (!props.anchor || !props.content) return;\n\n let rafId = 0;\n const onWindowChange = () => updatePlacement();\n const resizeObserver = new ResizeObserver(() => updatePlacement());\n\n if (props.anchor instanceof Element) resizeObserver.observe(props.anchor);\n\n if (props.content instanceof Element) resizeObserver.observe(props.content);\n\n window.addEventListener('resize', onWindowChange);\n window.addEventListener('scroll', onWindowChange, true);\n\n const maxFrames = 5;\n let frame = 0;\n\n const tick = () => {\n updatePlacement();\n frame += 1;\n\n if (frame < maxFrames) {\n rafId = requestAnimationFrame(tick);\n }\n };\n\n rafId = requestAnimationFrame(tick);\n\n return () => {\n window.removeEventListener('resize', onWindowChange);\n window.removeEventListener('scroll', onWindowChange, true);\n resizeObserver.disconnect();\n cancelAnimationFrame(rafId);\n };\n }, [props.anchor, props.content, updatePlacement]);\n\n React.useEffect(() => {\n if (!props.anchor || !props.content) return;\n\n Object.assign(props.content.style, {\n position: 'fixed',\n positionAnchor: anchorName,\n anchorName: contentAnchor,\n ...(computePosition() as React.CSSProperties | undefined),\n ['--transform-origin' as keyof React.CSSProperties]: getTransformOrigin()\n });\n\n Object.assign(props.anchor?.style, {\n anchorName\n });\n }, [props.anchor, props.content, computePosition, getTransformOrigin]);\n\n React.useEffect(() => {\n if (!props.anchor || !props.content) return;\n\n updatePlacement();\n }, [props.anchor, props.content, props.arrow, props.side, props.align, props.sideOffset, props.alignOffset, props.flip, props.shift, props.hideWhenDetached, updatePlacement]);\n\n React.useEffect(() => {\n if (props.content) {\n Object.assign(props.content?.dataset, {\n side: actualSide,\n align: actualAlign\n });\n }\n\n if (props.arrow) {\n Object.assign(props.arrow?.dataset, {\n side: actualSide,\n align: actualAlign\n });\n }\n }, [props.arrow, props.content, actualSide, actualAlign]);\n\n const state = {\n actualSide,\n actualAlign\n };\n\n return {\n state,\n getTransformOrigin,\n computePosition,\n updatePlacement\n };\n }\n});\n\nfunction getPlacementFromRects(triggerRect: DOMRect, contentRect: DOMRect): { side: SideType; align: AlignType } {\n const triggerCenterX = triggerRect.left + triggerRect.width / 2;\n const triggerCenterY = triggerRect.top + triggerRect.height / 2;\n const contentCenterX = contentRect.left + contentRect.width / 2;\n const contentCenterY = contentRect.top + contentRect.height / 2;\n const dx = contentCenterX - triggerCenterX;\n const dy = contentCenterY - triggerCenterY;\n\n const separations: Record<SideType, number> = {\n top: triggerRect.top - contentRect.bottom,\n bottom: contentRect.top - triggerRect.bottom,\n left: triggerRect.left - contentRect.right,\n right: contentRect.left - triggerRect.right\n };\n\n const separated = (Object.entries(separations) as Array<[SideType, number]>).filter(([, value]) => value >= 0);\n const side: SideType = separated.length > 0 ? separated.sort((a, b) => a[1] - b[1])[0][0] : Math.abs(dx) > Math.abs(dy) ? (dx > 0 ? 'right' : 'left') : dy > 0 ? 'bottom' : 'top';\n const epsilon = 4;\n let align: AlignType = 'center';\n\n if (side === 'top' || side === 'bottom') {\n if (Math.abs(contentRect.left - triggerRect.left) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.right - triggerRect.right) <= epsilon) align = 'end';\n } else {\n if (Math.abs(contentRect.top - triggerRect.top) <= epsilon) align = 'start';\n else if (Math.abs(contentRect.bottom - triggerRect.bottom) <= epsilon) align = 'end';\n }\n\n return { side, align };\n}\n\nfunction clamp(value: number, min: number, max: number) {\n return Math.min(Math.max(value, min), max);\n}\n\nfunction getLayoutRect(element: HTMLElement, rect: DOMRect) {\n const layoutWidth = element.offsetWidth || rect.width;\n const layoutHeight = element.offsetHeight || rect.height;\n\n if (!layoutWidth || !layoutHeight) {\n return rect;\n }\n\n const scaleX = rect.width / layoutWidth || 1;\n const scaleY = rect.height / layoutHeight || 1;\n const left = rect.left - (layoutWidth * scaleX - layoutWidth) / 2;\n const top = rect.top - (layoutHeight * scaleY - layoutHeight) / 2;\n\n return {\n left,\n top,\n width: layoutWidth,\n height: layoutHeight\n };\n}\n","import type { usePositionerProps } from '@primereact/types/shared/positioner';\n\nexport const defaultProps: usePositionerProps = {\n side: 'bottom',\n align: 'center',\n sideOffset: 0,\n alignOffset: 0,\n flip: true,\n shift: true,\n hideWhenDetached: false,\n anchor: undefined,\n content: undefined,\n arrow: undefined\n};\n"],"mappings":"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","names":["withHeadless","React","defaultProps","usePositioner","withHeadless","defaultProps","id","props","actualSide","setActualSide","actualAlign","setActualAlign","anchorName","contentAnchor","getTransformOrigin","originSide","originAlign","isVertical","primary","secondary","computePosition","style","sideMarginMap","updatePlacement","trigger","content","triggerRect","contentRect","positionerLayout","getLayoutRect","nextSide","nextAlign","getPlacementFromRects","prev","triggerCenterX","triggerCenterY","arrow","computed","cssArrowSize","arrowSize","arrowHalf","arrowInset","arrowX","clamp","arrowY","arrowLeft","arrowTop","arrowTip","transformOrigin","originX","originY","rafId","onWindowChange","resizeObserver","maxFrames","frame","tick","_a","__spreadProps","__spreadValues","_b","contentCenterX","contentCenterY","dx","dy","separations","separated","value","side","a","b","epsilon","align","min","max","element","rect","layoutWidth","layoutHeight","scaleX","scaleY","left","top"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/shared/positioner';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const usePositioner: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/positioner").usePositionerProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
actualSide: SideType | undefined;
|
|
6
|
+
actualAlign: AlignType | undefined;
|
|
7
|
+
};
|
|
8
|
+
anchorRef: React.RefObject<HTMLElement | null>;
|
|
9
|
+
contentRef: React.RefObject<HTMLDivElement | null>;
|
|
10
|
+
arrowRef: React.RefObject<HTMLDivElement | null>;
|
|
11
|
+
anchorName: string;
|
|
12
|
+
contentAnchor: string;
|
|
13
|
+
getTransformOrigin: () => string;
|
|
14
|
+
computePosition: () => React.CSSProperties;
|
|
15
|
+
updatePlacement: () => void;
|
|
16
|
+
setAnchorRef: (node: HTMLElement | null) => void;
|
|
17
|
+
setContentRef: (node: HTMLDivElement | null) => void;
|
|
18
|
+
}>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AlignType, SideType } from '@primereact/types/shared/positioner';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const usePositioner: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/positioner").usePositionerProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
actualSide: SideType | undefined;
|
|
6
|
+
actualAlign: AlignType | undefined;
|
|
7
|
+
};
|
|
8
|
+
getTransformOrigin: () => string;
|
|
9
|
+
computePosition: () => React.CSSProperties;
|
|
10
|
+
updatePlacement: () => void;
|
|
11
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as d}from"@primereact/core/headless";import{useControlledState as i}from"@primereact/hooks/use-controlled-state";import*as n from"react";var r={value:void 0,defaultValue:void 0,onValueChange:void 0};var g=d({name:"useRadioButtonGroup",defaultProps:r,setup:({props:o})=>{let[a,e]=i({value:o.value,defaultValue:o.defaultValue,onChange:o.onValueChange}),p={value:a},s=n.useCallback(t=>{let u=t.checked?t.value:void 0;e==null||e([u,{originalEvent:t.originalEvent,value:u}])},[a,e]);return{state:p,updateChange:s}}});export{r as defaultProps,g as useRadioButtonGroup};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/radiobuttongroup/useRadioButtonGroup.ts","../../src/radiobuttongroup/useRadioButtonGroup.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport type { useRadioButtonGroupExposes } from '@primereact/types/shared/radiobuttongroup';\nimport * as React from 'react';\nimport { defaultProps } from './useRadioButtonGroup.props';\n\nexport const useRadioButtonGroup = withHeadless({\n name: 'useRadioButtonGroup',\n defaultProps,\n setup: ({ props }) => {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState\n };\n\n // methods\n const updateChange = React.useCallback(\n (event: Parameters<useRadioButtonGroupExposes['updateChange']>[0]) => {\n const newValue = event.checked ? event.value : undefined;\n\n setValueState?.([newValue, { originalEvent: event.originalEvent, value: newValue }]);\n },\n [valueState, setValueState]\n );\n\n return {\n state,\n // methods\n updateChange\n };\n }\n});\n","import type { useRadioButtonGroupProps } from '@primereact/types/shared/radiobuttongroup';\n\nexport const defaultProps: useRadioButtonGroupProps = {\n value: undefined,\n defaultValue: undefined,\n onValueChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCAEnC,UAAYC,MAAW,QCDhB,IAAMC,EAAyC,CAClD,MAAO,OACP,aAAc,OACd,cAAe,MACnB,EDAO,IAAMC,EAAsBC,EAAa,CAC5C,KAAM,sBACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,CAAM,IAAM,CAClB,GAAM,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOH,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EAEKI,EAAQ,CACV,MAAOH,CACX,EAGMI,EAAqB,cACtBC,GAAqE,CAClE,IAAMC,EAAWD,EAAM,QAAUA,EAAM,MAAQ,OAE/CJ,GAAA,MAAAA,EAAgB,CAACK,EAAU,CAAE,cAAeD,EAAM,cAAe,MAAOC,CAAS,CAAC,EACtF,EACA,CAACN,EAAYC,CAAa,CAC9B,EAEA,MAAO,CACH,MAAAE,EAEA,aAAAC,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","React","defaultProps","useRadioButtonGroup","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","state","updateChange","event","newValue"]}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { useRadioButtonGroupExposes } from '@primereact/types/shared/radiobuttongroup';
|
|
2
|
+
export declare const useRadioButtonGroup: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/radiobuttongroup").useRadioButtonGroupProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: unknown;
|
|
5
|
+
};
|
|
6
|
+
updateChange: (event: Parameters<useRadioButtonGroupExposes["updateChange"]>[0]) => void;
|
|
7
|
+
}>;
|
|
File without changes
|
package/rating/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as O}from"@primereact/core/headless";import{focus as S,getFirstFocusableElement as y}from"@primeuix/utils";import*as u from"react";var b={value:void 0,defaultValue:void 0,stars:5,disabled:!1,readOnly:!1,allowHalf:!0,onValueChange:void 0};var B=O({name:"useRating",defaultProps:b,setup:({props:t,elementRef:h})=>{var R,v,V;let{readOnly:d,disabled:m}=t,[s,f]=u.useState(t.allowHalf?(R=t.defaultValue)!=null?R:t.value:Math.ceil((V=(v=t.defaultValue)!=null?v:t.value)!=null?V:0)),[c,E]=u.useState(void 0),[H,o]=u.useState(void 0),[M,r]=u.useState(!1),g=u.useRef(void 0),I={value:s,hoverValue:c,focusedOptionIndex:H,isFocusVisibleItem:M},F=n=>{var i;let e=parseFloat(n.target.value),a=Math.ceil(e);o(a);let l=n.nativeEvent;r(((i=l.sourceCapabilities)==null?void 0:i.firesTouchEvents)===!1)},T=n=>{var a;let e=n.relatedTarget;e&&((a=h.current)!=null&&a.contains(e))||o(void 0)},w=n=>{f(Number(n.target.value));let e=parseFloat(n.target.value),a=Math.ceil(e);o(a),r(!0)},x=(n,e)=>{if(d||m)return;let a=t.allowHalf?e:Math.ceil(e!=null?e:0);g.current===a&&E(void 0),f(i=>i===a?void 0:a),r(!1);let l=y(n.currentTarget);l&&l instanceof HTMLElement&&S(l)},C=(n,e)=>{if(d||m)return;o(void 0);let a=e?t.allowHalf?e:Math.ceil(e!=null?e:0):void 0;E(a),g.current=a},L=n=>{var i;let e=(i=c!=null?c:s)!=null?i:0,a=Math.floor(e),l="empty";return n<=a?l="filled":n===a+1&&!Number.isInteger(e)&&(l="half"),l};return u.useEffect(()=>{var n;(n=t==null?void 0:t.onValueChange)==null||n.call(t,{value:s,originalEvent:null})},[s]),u.useEffect(()=>{var n,e,a;f(t.allowHalf?(n=t.defaultValue)!=null?n:t.value:Math.ceil((a=(e=t.defaultValue)!=null?e:t.value)!=null?a:0))},[t.value,t.defaultValue,t.allowHalf]),{state:I,onInputFocus:F,onInputBlur:T,onInputChange:w,getOptionState:L,onOptionClick:x,onOptionHover:C}}});export{b as defaultProps,B as useRating};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/rating/useRating.ts","../../src/rating/useRating.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { focus, getFirstFocusableElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useRating.props';\n\nexport const useRating = withHeadless({\n name: 'useRating',\n defaultProps,\n setup: ({ props, elementRef }) => {\n const { readOnly, disabled } = props;\n const [valueState, setValueState] = React.useState(props.allowHalf ? (props.defaultValue ?? props.value) : Math.ceil(props.defaultValue ?? props.value ?? 0));\n const [hoverValueState, setHoverValueState] = React.useState<number | undefined>(undefined);\n const [focusedOptionIndex, setFocusedOptionIndex] = React.useState<number | undefined>(undefined);\n const [isFocusVisibleItem, setIsFocusVisibleItem] = React.useState(false);\n\n const hoverValueRef = React.useRef<number | undefined>(undefined);\n\n const state = {\n value: valueState,\n hoverValue: hoverValueState,\n focusedOptionIndex,\n isFocusVisibleItem\n };\n\n // methods\n\n const onInputFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n const inputValue = parseFloat(event.target.value);\n const starIndex = Math.ceil(inputValue);\n\n setFocusedOptionIndex(starIndex);\n\n const native = event.nativeEvent as FocusEvent & {\n sourceCapabilities?: {\n firesTouchEvents: boolean;\n };\n };\n\n setIsFocusVisibleItem(native.sourceCapabilities?.firesTouchEvents === false);\n };\n\n const onInputBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const relatedTarget = event.relatedTarget as HTMLElement | null;\n\n if (relatedTarget && elementRef.current?.contains(relatedTarget)) {\n return;\n }\n\n setFocusedOptionIndex(undefined);\n };\n\n const onInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setValueState(Number(event.target.value));\n const inputValue = parseFloat(event.target.value);\n const starIndex = Math.ceil(inputValue);\n\n setFocusedOptionIndex(starIndex);\n setIsFocusVisibleItem(true);\n };\n\n const onOptionClick = (event: React.MouseEvent<HTMLDivElement>, value: number | undefined) => {\n if (readOnly || disabled) return;\n\n const effectiveValue = props.allowHalf ? value : Math.ceil(value ?? 0);\n\n if (hoverValueRef.current === effectiveValue) {\n setHoverValueState(undefined);\n }\n\n setValueState((prev) => (prev === effectiveValue ? undefined : effectiveValue));\n setIsFocusVisibleItem(false);\n\n const firstFocusableEl = getFirstFocusableElement(event.currentTarget);\n\n if (firstFocusableEl && firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n };\n\n const onOptionHover = (event: React.PointerEvent<HTMLDivElement>, value: number | undefined) => {\n if (readOnly || disabled) return;\n\n setFocusedOptionIndex(undefined);\n const newValue = value ? (props.allowHalf ? value : Math.ceil(value ?? 0)) : undefined;\n\n setHoverValueState(newValue);\n hoverValueRef.current = newValue;\n };\n\n const getOptionState = (value: number) => {\n const effectiveValue = hoverValueState ?? valueState ?? 0;\n\n const floor = Math.floor(effectiveValue);\n\n let state = 'empty';\n\n if (value <= floor) {\n state = 'filled';\n } else if (value === floor + 1 && !Number.isInteger(effectiveValue)) {\n state = 'half';\n }\n\n return state;\n };\n\n // effects\n\n React.useEffect(() => {\n props?.onValueChange?.({ value: valueState, originalEvent: null });\n }, [valueState]);\n\n React.useEffect(() => {\n setValueState(props.allowHalf ? (props.defaultValue ?? props.value) : Math.ceil(props.defaultValue ?? props.value ?? 0));\n }, [props.value, props.defaultValue, props.allowHalf]);\n\n return {\n state,\n // methods\n onInputFocus,\n onInputBlur,\n onInputChange,\n getOptionState,\n onOptionClick,\n onOptionHover\n };\n }\n});\n","import type { useRatingProps } from '@primereact/types/shared/rating';\n\nexport const defaultProps: useRatingProps = {\n value: undefined,\n defaultValue: undefined,\n stars: 5,\n disabled: false,\n readOnly: false,\n allowHalf: true,\n onValueChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,SAAAC,EAAO,4BAAAC,MAAgC,kBAChD,UAAYC,MAAW,QCAhB,IAAMC,EAA+B,CACxC,MAAO,OACP,aAAc,OACd,MAAO,EACP,SAAU,GACV,SAAU,GACV,UAAW,GACX,cAAe,MACnB,EDLO,IAAMC,EAAYC,EAAa,CAClC,KAAM,YACN,aAAAC,EACA,MAAO,CAAC,CAAE,MAAAC,EAAO,WAAAC,CAAW,IAAM,CARtC,IAAAC,EAAAC,EAAAC,EASQ,GAAM,CAAE,SAAAC,EAAU,SAAAC,CAAS,EAAIN,EACzB,CAACO,EAAYC,CAAa,EAAU,WAASR,EAAM,WAAaE,EAAAF,EAAM,eAAN,KAAAE,EAAsBF,EAAM,MAAS,KAAK,MAAKI,GAAAD,EAAAH,EAAM,eAAN,KAAAG,EAAsBH,EAAM,QAA5B,KAAAI,EAAqC,CAAC,CAAC,EACtJ,CAACK,EAAiBC,CAAkB,EAAU,WAA6B,MAAS,EACpF,CAACC,EAAoBC,CAAqB,EAAU,WAA6B,MAAS,EAC1F,CAACC,EAAoBC,CAAqB,EAAU,WAAS,EAAK,EAElEC,EAAsB,SAA2B,MAAS,EAE1DC,EAAQ,CACV,MAAOT,EACP,WAAYE,EACZ,mBAAAE,EACA,mBAAAE,CACJ,EAIMI,EAAgBC,GAA8C,CA1B5E,IAAAhB,EA2BY,IAAMiB,EAAa,WAAWD,EAAM,OAAO,KAAK,EAC1CE,EAAY,KAAK,KAAKD,CAAU,EAEtCP,EAAsBQ,CAAS,EAE/B,IAAMC,EAASH,EAAM,YAMrBJ,IAAsBZ,EAAAmB,EAAO,qBAAP,YAAAnB,EAA2B,oBAAqB,EAAK,CAC/E,EAEMoB,EAAeJ,GAA8C,CAzC3E,IAAAhB,EA0CY,IAAMqB,EAAgBL,EAAM,cAExBK,KAAiBrB,EAAAD,EAAW,UAAX,MAAAC,EAAoB,SAASqB,KAIlDX,EAAsB,MAAS,CACnC,EAEMY,EAAiBN,GAA+C,CAClEV,EAAc,OAAOU,EAAM,OAAO,KAAK,CAAC,EACxC,IAAMC,EAAa,WAAWD,EAAM,OAAO,KAAK,EAC1CE,EAAY,KAAK,KAAKD,CAAU,EAEtCP,EAAsBQ,CAAS,EAC/BN,EAAsB,EAAI,CAC9B,EAEMW,EAAgB,CAACP,EAAyCQ,IAA8B,CAC1F,GAAIrB,GAAYC,EAAU,OAE1B,IAAMqB,EAAiB3B,EAAM,UAAY0B,EAAQ,KAAK,KAAKA,GAAA,KAAAA,EAAS,CAAC,EAEjEX,EAAc,UAAYY,GAC1BjB,EAAmB,MAAS,EAGhCF,EAAeoB,GAAUA,IAASD,EAAiB,OAAYA,CAAe,EAC9Eb,EAAsB,EAAK,EAE3B,IAAMe,EAAmBC,EAAyBZ,EAAM,aAAa,EAEjEW,GAAoBA,aAA4B,aAChDE,EAAMF,CAAgB,CAE9B,EAEMG,EAAgB,CAACd,EAA2CQ,IAA8B,CAC5F,GAAIrB,GAAYC,EAAU,OAE1BM,EAAsB,MAAS,EAC/B,IAAMqB,EAAWP,EAAS1B,EAAM,UAAY0B,EAAQ,KAAK,KAAKA,GAAA,KAAAA,EAAS,CAAC,EAAK,OAE7EhB,EAAmBuB,CAAQ,EAC3BlB,EAAc,QAAUkB,CAC5B,EAEMC,EAAkBR,GAAkB,CAzFlD,IAAAxB,EA0FY,IAAMyB,GAAiBzB,EAAAO,GAAA,KAAAA,EAAmBF,IAAnB,KAAAL,EAAiC,EAElDiC,EAAQ,KAAK,MAAMR,CAAc,EAEnCX,EAAQ,QAEZ,OAAIU,GAASS,EACTnB,EAAQ,SACDU,IAAUS,EAAQ,GAAK,CAAC,OAAO,UAAUR,CAAc,IAC9DX,EAAQ,QAGLA,CACX,EAIA,OAAM,YAAU,IAAM,CA3G9B,IAAAd,GA4GYA,EAAAF,GAAA,YAAAA,EAAO,gBAAP,MAAAE,EAAA,KAAAF,EAAuB,CAAE,MAAOO,EAAY,cAAe,IAAK,EACpE,EAAG,CAACA,CAAU,CAAC,EAET,YAAU,IAAM,CA/G9B,IAAAL,EAAAC,EAAAC,EAgHYI,EAAcR,EAAM,WAAaE,EAAAF,EAAM,eAAN,KAAAE,EAAsBF,EAAM,MAAS,KAAK,MAAKI,GAAAD,EAAAH,EAAM,eAAN,KAAAG,EAAsBH,EAAM,QAA5B,KAAAI,EAAqC,CAAC,CAAC,CAC3H,EAAG,CAACJ,EAAM,MAAOA,EAAM,aAAcA,EAAM,SAAS,CAAC,EAE9C,CACH,MAAAgB,EAEA,aAAAC,EACA,YAAAK,EACA,cAAAE,EACA,eAAAU,EACA,cAAAT,EACA,cAAAO,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","focus","getFirstFocusableElement","React","defaultProps","useRating","withHeadless","defaultProps","props","elementRef","_a","_b","_c","readOnly","disabled","valueState","setValueState","hoverValueState","setHoverValueState","focusedOptionIndex","setFocusedOptionIndex","isFocusVisibleItem","setIsFocusVisibleItem","hoverValueRef","state","onInputFocus","event","inputValue","starIndex","native","onInputBlur","relatedTarget","onInputChange","onOptionClick","value","effectiveValue","prev","firstFocusableEl","getFirstFocusableElement","focus","onOptionHover","newValue","getOptionState","floor"]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useRating: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/rating").useRatingProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: number | undefined;
|
|
5
|
+
hoverValue: number | undefined;
|
|
6
|
+
focusedOptionIndex: number | undefined;
|
|
7
|
+
isFocusVisibleItem: boolean;
|
|
8
|
+
};
|
|
9
|
+
onInputFocus: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
10
|
+
onInputBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
11
|
+
onInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
12
|
+
getOptionState: (value: number) => string;
|
|
13
|
+
onOptionClick: (event: React.MouseEvent<HTMLDivElement>, value: number | undefined) => void;
|
|
14
|
+
onOptionHover: (event: React.PointerEvent<HTMLDivElement>, value: number | undefined) => void;
|
|
15
|
+
}>;
|
|
File without changes
|
package/select/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as ae}from"@primereact/core/headless";import{useListbox as le}from"@primereact/headless/listbox";import{useControlledState as M}from"@primereact/hooks/use-controlled-state";import{useEventListener as y}from"@primereact/hooks/use-event-listener";import{usePresence as ue}from"@primereact/hooks/use-presence";import{focus as f,getFirstFocusableElement as se,getFocusableElements as ie,getOuterWidth as re,isNotEmpty as A}from"@primeuix/utils";import*as l from"react";var T={value:void 0,defaultValue:void 0,filterValue:void 0,defaultFilterValue:"",open:void 0,defaultOpen:void 0,options:[],optionKey:void 0,optionLabel:void 0,optionValue:void 0,optionDisabled:void 0,optionGroupLabel:void 0,optionGroupChildren:void 0,multiple:!1,disabled:!1,locale:void 0,autoOptionFocus:!0,selectOnFocus:!1,focusOnHover:!0,appendTo:"body",onValueChange:void 0,onFilterValueChange:void 0,onOpenChange:void 0};var Oe=ae({name:"useSelect",defaultProps:T,setup({props:o,id:L,elementRef:E}){var S;let b=l.useRef(null),t=le({value:o.value,defaultValue:o.defaultValue,options:o.options,optionKey:o.optionKey,optionLabel:o.optionLabel,optionValue:o.optionValue,optionDisabled:o.optionDisabled,optionGroupLabel:o.optionGroupLabel,optionGroupChildren:o.optionGroupChildren,disabled:o.disabled,locale:o.locale,autoOptionFocus:o.autoOptionFocus,selectOnFocus:o.selectOnFocus,focusOnHover:o.focusOnHover,multiple:o.multiple,metaKeySelection:!1,onValueChange:e=>{var n;return(n=b.current)==null?void 0:n.call(b,e)}}),[r,h]=M({value:o.value,defaultValue:o.defaultValue,onChange:o.onValueChange}),[a,v]=M({value:o.open,defaultValue:(S=o.defaultOpen)!=null?S:!1,onChange:o.onOpenChange}),I=ue(!!a),m=l.useRef(!1),[P,w]=l.useState(!1),[q,G]=l.useState(null),[g,N]=l.useState(null),u=l.useRef(null),R=l.useRef(null),c=l.useRef(null),U=l.useCallback(e=>{R.current=e,u.current=e,G(e)},[]),B=l.useCallback(e=>{c.current=e,N(e)},[]),z={value:r,opened:a,focused:P,focusedOptionIndex:t.state.focusedOptionIndex,anchorEl:q,positionerEl:g},O=()=>{v([!0,{value:!0}])},s=()=>{v([!1,{value:!1}]),t.changeFocusedOptionIndex(new Event("blur"),-1)},k=()=>{a?s():O()},W=e=>{let n=c.current;n!=null&&n.contains(e.target)||o.disabled||k()},$=()=>{w(!0)},j=()=>{t.onListBlur(),w(!1)},V=e=>{switch(e.code){case"ArrowDown":x(e);break;case"ArrowUp":J(e);break;case"Enter":case"NumpadEnter":case"Space":Q(e);break;case"Home":case"End":case"PageUp":case"PageDown":a&&t.onListKeyDown(e);break;case"Escape":a&&s();break;case"Tab":X(e);break;case"ArrowLeft":case"ArrowRight":case"ShiftLeft":case"ShiftRight":break;default:a&&t.onListKeyDown(e);break}},x=e=>{a?t.onArrowDownKey(e):(m.current=!0,O()),e.preventDefault()},J=e=>{if(!a)m.current=!0,O();else if(e.altKey){let n=t.state.focusedOptionIndex;n!==-1&&d({originalEvent:e,value:t.getOptions()[n]}),s()}else t.onArrowUpKey(e);e.preventDefault()},Q=e=>{if(!a)x(e);else{let n=t.state.focusedOptionIndex;if(n!==-1&&(t.onEnterKey(e),!o.multiple)){let i=t.getOptions()[n],p=t.isSelected(i);d(p?{originalEvent:e,value:null}:{originalEvent:e,value:t.getOptionValue(i)}),s()}}e.preventDefault()},X=e=>{if(a)if(te()){let n=se(c.current,':not([data-p-hidden-focusable="true"])');n&&(f(n),e.preventDefault())}else s()},Y=e=>{switch(e.code){case"Tab":u.current&&f(u.current),e.preventDefault(),e.stopPropagation();break;case"Escape":s(),u.current&&f(u.current),e.preventDefault();break;case"Enter":case"NumpadEnter":if(t.state.focusedOptionIndex!==-1){t.onEnterKey(e);let n=t.getOptions()[t.state.focusedOptionIndex];n&&d({originalEvent:e,value:t.getOptionValue(n)})}break;case"ArrowDown":case"ArrowUp":case"Home":case"End":case"PageUp":case"PageDown":V(e);break;default:break}},Z=e=>{e.preventDefault(),e.stopPropagation();let n=o.multiple?[]:null;h([n,{originalEvent:e,value:n,option:null}]),t.updateModel(e,n),a&&s()},d=e=>{let n=e.value;if(n===null){s(),u.current&&f(u.current);return}let i=t.getOptions().find(p=>{let oe=t.getOptionValue(p);return t.isEquals(oe,n)});h([n,{originalEvent:e.originalEvent,value:n,option:i}]),s(),u.current&&f(u.current)};b.current=e=>{o.multiple?h([e.value,{originalEvent:e.originalEvent,value:e.value}]):d(e)};let _=()=>t.getFocusedOptionId(),ee=()=>{if(!F())return null;if(o.multiple&&Array.isArray(r))return r.map(n=>{let i=t.getOptions().find(p=>t.isEquals(t.getOptionValue(p),n));return i?t.getOptionLabel(i):null}).filter(Boolean);let e=t.getOptions().find(n=>{let i=t.getOptionValue(n);return t.isEquals(i,r)});return e?t.getOptionLabel(e):null},F=()=>o.multiple?Array.isArray(r)&&r.length>0:A(r),te=()=>c.current?ie(c.current,':not([data-p-hidden-focusable="true"])').length>0:!1,[ne]=y({target:()=>document.querySelector(`label[for="${L}"]`),type:"click",listener:()=>{u.current&&f(u.current)}}),[K,C]=y({type:"click",listener:e=>{let n=c.current,i=R.current;a&&n&&!n.contains(e.target)&&i&&!i.contains(e.target)&&s()}}),[D,H]=y({target:"window",type:"resize",listener:()=>{a&&s()}});return l.useEffect(()=>{ne()},[L]),l.useEffect(()=>{a?(K(),D()):(C(),H())},[a,K,C,D,H]),l.useEffect(()=>{a&&g&&(E!=null&&E.current&&(g.style.width=re(E.current)+"px"),m.current&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{if(A(r)){let e=t.state.focusedOptionIndex,n=e!==-1?e:t.findFirstFocusedOptionIndex();t.changeFocusedOptionIndex(new Event("focus"),n)}m.current=!1})}))},[a,g]),{state:z,listbox:t,presence:I,triggerRef:u,setAnchorRef:U,setPositionerRef:B,onContainerClick:W,onFocus:$,onBlur:j,onKeyDown:V,onFilterKeyDown:Y,onClearClick:Z,onOptionSelect:d,getFocusedOptionId:_,getSelectedOptionLabel:ee,hasValue:F,show:O,hide:s,toggle:k}}});export{T as defaultProps,Oe as useSelect};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/select/useSelect.ts","../../src/select/useSelect.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useListbox } from '@primereact/headless/listbox';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useEventListener } from '@primereact/hooks/use-event-listener';\nimport { usePresence } from '@primereact/hooks/use-presence';\nimport type { useListboxValueChangeEvent } from '@primereact/types/shared/listbox';\nimport { focus, getFirstFocusableElement, getFocusableElements, getOuterWidth, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useSelect.props';\n\nexport const useSelect = withHeadless({\n name: 'useSelect',\n defaultProps,\n setup({ props, id, elementRef }) {\n const onListboxValueChange = React.useRef<((event: useListboxValueChangeEvent) => void) | null>(null);\n const listbox = useListbox({\n value: props.value,\n defaultValue: props.defaultValue,\n options: props.options,\n optionKey: props.optionKey,\n optionLabel: props.optionLabel,\n optionValue: props.optionValue,\n optionDisabled: props.optionDisabled,\n optionGroupLabel: props.optionGroupLabel,\n optionGroupChildren: props.optionGroupChildren,\n disabled: props.disabled,\n locale: props.locale,\n autoOptionFocus: props.autoOptionFocus,\n selectOnFocus: props.selectOnFocus,\n focusOnHover: props.focusOnHover,\n multiple: props.multiple,\n metaKeySelection: false,\n onValueChange: (event: useListboxValueChangeEvent) => onListboxValueChange.current?.(event)\n });\n\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const [openState, setOpenState] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange\n });\n\n const presence = usePresence(!!openState);\n\n const focusOnShow = React.useRef<boolean>(false);\n const [focusedState, setFocusedState] = React.useState(false);\n\n const [anchorEl, setAnchorEl] = React.useState<HTMLElement | null>(null);\n const [positionerEl, setPositionerEl] = React.useState<HTMLDivElement | null>(null);\n\n const triggerRef = React.useRef<HTMLElement | null>(null);\n const anchorRef = React.useRef<HTMLElement>(null);\n const positionerRef = React.useRef<HTMLDivElement>(null);\n\n const setAnchorRef = React.useCallback((node: HTMLElement | null) => {\n anchorRef.current = node;\n triggerRef.current = node;\n setAnchorEl(node);\n }, []);\n\n const setPositionerRef = React.useCallback((node: HTMLDivElement | null) => {\n positionerRef.current = node;\n setPositionerEl(node);\n }, []);\n\n const state = {\n value: valueState,\n opened: openState,\n focused: focusedState,\n focusedOptionIndex: listbox.state.focusedOptionIndex,\n anchorEl,\n positionerEl\n };\n\n const show = () => {\n setOpenState([true, { value: true }]);\n };\n\n const hide = () => {\n setOpenState([false, { value: false }]);\n listbox.changeFocusedOptionIndex(new Event('blur') as unknown as React.KeyboardEvent, -1);\n };\n\n const toggle = () => {\n if (openState) {\n hide();\n } else {\n show();\n }\n };\n\n const onContainerClick = (event: React.MouseEvent<HTMLDivElement>) => {\n const positionerElement = positionerRef.current;\n\n if (positionerElement?.contains(event.target as Node)) {\n return;\n }\n\n if (!props.disabled) {\n toggle();\n }\n };\n\n const onFocus = () => {\n setFocusedState(true);\n };\n\n const onBlur = () => {\n listbox.onListBlur();\n\n setFocusedState(false);\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLElement>) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onEnterKey(event);\n break;\n\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n if (openState) {\n listbox.onListKeyDown(event);\n }\n\n break;\n\n case 'Escape':\n if (openState) {\n hide();\n }\n\n break;\n\n case 'Tab':\n onTabKey(event);\n\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ShiftLeft':\n case 'ShiftRight':\n //NOOP\n break;\n\n default:\n if (openState) {\n listbox.onListKeyDown(event);\n }\n\n break;\n }\n };\n\n const onArrowDownKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!openState) {\n focusOnShow.current = true;\n show();\n } else {\n listbox.onArrowDownKey(event);\n }\n\n event.preventDefault();\n };\n\n const onArrowUpKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!openState) {\n focusOnShow.current = true;\n show();\n } else {\n if (event.altKey) {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n\n if (focusedOptionIndex !== -1) {\n onOptionSelect({\n originalEvent: event,\n value: listbox.getOptions()[focusedOptionIndex]\n });\n }\n\n hide();\n } else {\n listbox.onArrowUpKey(event);\n }\n }\n\n event.preventDefault();\n };\n\n const onEnterKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (!openState) {\n onArrowDownKey(event);\n } else {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n\n if (focusedOptionIndex !== -1) {\n listbox.onEnterKey(event);\n\n if (!props.multiple) {\n const focusedOption = listbox.getOptions()[focusedOptionIndex];\n const selected = listbox.isSelected(focusedOption);\n\n if (selected) {\n onOptionSelect({\n originalEvent: event,\n value: null\n });\n } else {\n onOptionSelect({\n originalEvent: event,\n value: listbox.getOptionValue(focusedOption)\n });\n }\n\n hide();\n }\n }\n }\n\n event.preventDefault();\n };\n\n const onTabKey = (event: React.KeyboardEvent<HTMLElement>) => {\n if (openState) {\n if (hasFocusableElements()) {\n const firstFocusable = getFirstFocusableElement(positionerRef.current!, ':not([data-p-hidden-focusable=\"true\"])');\n\n if (firstFocusable) {\n focus(firstFocusable as HTMLElement);\n event.preventDefault();\n }\n } else {\n hide();\n }\n }\n };\n\n const onFilterKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n switch (event.code) {\n case 'Tab':\n if (triggerRef.current) {\n focus(triggerRef.current);\n }\n\n event.preventDefault();\n event.stopPropagation();\n break;\n\n case 'Escape':\n hide();\n\n if (triggerRef.current) {\n focus(triggerRef.current);\n }\n\n event.preventDefault();\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n if (listbox.state.focusedOptionIndex !== -1) {\n listbox.onEnterKey(event);\n\n const selectedOption = listbox.getOptions()[listbox.state.focusedOptionIndex];\n\n if (selectedOption) {\n onOptionSelect({\n originalEvent: event,\n value: listbox.getOptionValue(selectedOption)\n });\n }\n }\n\n break;\n\n case 'ArrowDown':\n case 'ArrowUp':\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n onKeyDown(event);\n break;\n\n default:\n break;\n }\n };\n\n const onClearClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n\n const emptyValue = props.multiple ? [] : null;\n\n setValueState([\n emptyValue,\n {\n originalEvent: event,\n value: emptyValue,\n option: null\n }\n ]);\n\n listbox.updateModel(event, emptyValue);\n\n if (openState) {\n hide();\n }\n };\n\n const onOptionSelect = (event: { originalEvent: React.SyntheticEvent; value: unknown }) => {\n const selectedValue = event.value;\n\n // Skip if value (that coming from listbox) is null (happens when clicking already selected option in listbox toggle mode)\n if (selectedValue === null) {\n hide();\n\n if (triggerRef.current) {\n focus(triggerRef.current);\n }\n\n return;\n }\n\n const option = listbox.getOptions().find((opt: unknown) => {\n const optValue = listbox.getOptionValue(opt);\n\n return listbox.isEquals(optValue, selectedValue);\n });\n\n setValueState([\n selectedValue,\n {\n originalEvent: event.originalEvent,\n value: selectedValue,\n option\n }\n ]);\n\n hide();\n\n if (triggerRef.current) {\n focus(triggerRef.current);\n }\n };\n\n // Connect listbox onValueChange to select\n onListboxValueChange.current = (event: useListboxValueChangeEvent) => {\n if (props.multiple) {\n setValueState([\n event.value,\n {\n originalEvent: event.originalEvent,\n value: event.value\n }\n ]);\n } else {\n onOptionSelect(event);\n }\n };\n\n const getFocusedOptionId = () => {\n return listbox.getFocusedOptionId();\n };\n\n const getSelectedOptionLabel = () => {\n if (!hasValue()) {\n return null;\n }\n\n if (props.multiple && Array.isArray(valueState)) {\n return valueState\n .map((val: unknown) => {\n const opt = listbox.getOptions().find((o: unknown) => listbox.isEquals(listbox.getOptionValue(o), val));\n\n return opt ? listbox.getOptionLabel(opt) : null;\n })\n .filter(Boolean);\n }\n\n const selectedOption = listbox.getOptions().find((opt: unknown) => {\n const optValue = listbox.getOptionValue(opt);\n\n return listbox.isEquals(optValue, valueState);\n });\n\n return selectedOption ? listbox.getOptionLabel(selectedOption) : null;\n };\n\n const hasValue = () => {\n if (props.multiple) {\n return Array.isArray(valueState) && valueState.length > 0;\n }\n\n return isNotEmpty(valueState);\n };\n\n const hasFocusableElements = () => {\n if (!positionerRef.current) {\n return false;\n }\n\n return getFocusableElements(positionerRef.current, ':not([data-p-hidden-focusable=\"true\"])').length > 0;\n };\n\n const [bindLabelClick] = useEventListener({\n target: () => document.querySelector(`label[for=\"${id}\"]`) as HTMLElement,\n type: 'click',\n listener: () => {\n if (triggerRef.current) {\n focus(triggerRef.current as HTMLElement);\n }\n }\n });\n\n const [bindOutsideClickListener, unbindOutsideClickListener] = useEventListener({\n type: 'click',\n listener: (event: Event) => {\n const positionerElement = positionerRef.current;\n const anchorElement = anchorRef.current;\n\n if (openState && positionerElement && !positionerElement.contains(event.target as Node) && anchorElement && !anchorElement.contains(event.target as Node)) {\n hide();\n }\n }\n });\n\n const [bindResizeListener, unbindResizeListener] = useEventListener({\n target: 'window',\n type: 'resize',\n listener: () => {\n if (openState) {\n hide();\n }\n }\n });\n\n React.useEffect(() => {\n bindLabelClick();\n }, [id]);\n\n React.useEffect(() => {\n if (openState) {\n bindOutsideClickListener();\n bindResizeListener();\n } else {\n unbindOutsideClickListener();\n unbindResizeListener();\n }\n }, [openState, bindOutsideClickListener, unbindOutsideClickListener, bindResizeListener, unbindResizeListener]);\n\n React.useEffect(() => {\n if (openState && positionerEl) {\n if (elementRef?.current) {\n positionerEl.style.width = getOuterWidth(elementRef.current) + 'px';\n }\n\n if (focusOnShow.current) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (isNotEmpty(valueState)) {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n const indexToFocus = focusedOptionIndex !== -1 ? focusedOptionIndex : listbox.findFirstFocusedOptionIndex();\n\n listbox.changeFocusedOptionIndex(new Event('focus') as unknown as React.KeyboardEvent, indexToFocus);\n }\n\n focusOnShow.current = false;\n });\n });\n }\n }\n }, [openState, positionerEl]);\n\n return {\n state,\n listbox,\n presence,\n // refs\n triggerRef,\n setAnchorRef,\n setPositionerRef,\n // methods\n onContainerClick,\n onFocus,\n onBlur,\n onKeyDown,\n onFilterKeyDown,\n onClearClick,\n onOptionSelect,\n getFocusedOptionId,\n getSelectedOptionLabel,\n hasValue,\n show,\n hide,\n toggle\n };\n }\n});\n","import type { useSelectProps } from '@primereact/types/shared/select';\n\nexport const defaultProps: useSelectProps = {\n value: undefined,\n defaultValue: undefined,\n filterValue: undefined,\n defaultFilterValue: '',\n open: undefined,\n defaultOpen: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n multiple: false,\n disabled: false,\n locale: undefined,\n autoOptionFocus: true,\n selectOnFocus: false,\n focusOnHover: true,\n appendTo: 'body',\n onValueChange: undefined,\n onFilterValueChange: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useListbox","useControlledState","useEventListener","usePresence","focus","getFirstFocusableElement","getFocusableElements","getOuterWidth","isNotEmpty","React","defaultProps","useSelect","withHeadless","defaultProps","props","id","elementRef","_a","onListboxValueChange","listbox","useListbox","event","valueState","setValueState","useControlledState","openState","setOpenState","presence","usePresence","focusOnShow","focusedState","setFocusedState","anchorEl","setAnchorEl","positionerEl","setPositionerEl","triggerRef","anchorRef","positionerRef","setAnchorRef","node","setPositionerRef","state","show","hide","toggle","onContainerClick","positionerElement","onFocus","onBlur","onKeyDown","onArrowDownKey","onArrowUpKey","onEnterKey","onTabKey","focusedOptionIndex","onOptionSelect","focusedOption","selected","hasFocusableElements","firstFocusable","getFirstFocusableElement","focus","onFilterKeyDown","selectedOption","onClearClick","emptyValue","selectedValue","option","opt","optValue","getFocusedOptionId","getSelectedOptionLabel","hasValue","val","o","isNotEmpty","getFocusableElements","bindLabelClick","useEventListener","bindOutsideClickListener","unbindOutsideClickListener","anchorElement","bindResizeListener","unbindResizeListener","getOuterWidth","indexToFocus"]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useSelect: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/select").useSelectProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: unknown;
|
|
5
|
+
opened: boolean | undefined;
|
|
6
|
+
focused: boolean;
|
|
7
|
+
focusedOptionIndex: number;
|
|
8
|
+
anchorEl: HTMLElement | null;
|
|
9
|
+
positionerEl: HTMLDivElement | null;
|
|
10
|
+
};
|
|
11
|
+
listbox: import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/listbox").useListboxProps, unknown, {
|
|
12
|
+
state: {
|
|
13
|
+
value: unknown;
|
|
14
|
+
focused: boolean;
|
|
15
|
+
focusedOptionIndex: number;
|
|
16
|
+
};
|
|
17
|
+
listRef: React.RefObject<HTMLElement | null>;
|
|
18
|
+
firstHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
19
|
+
lastHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
20
|
+
getOptions: () => unknown[];
|
|
21
|
+
getOptionId: (index: number) => string;
|
|
22
|
+
getOptionLabel: (option: unknown) => any;
|
|
23
|
+
getOptionValue: (option: unknown) => any;
|
|
24
|
+
isOptionDisabled: (option: unknown) => any;
|
|
25
|
+
isOptionGroup: (option: unknown) => boolean;
|
|
26
|
+
getOptionGroupLabel: (optionGroup: unknown) => any;
|
|
27
|
+
getOptionGroupChildren: (optionGroup: unknown) => any;
|
|
28
|
+
getFocusedOptionId: () => string | null;
|
|
29
|
+
getAriaSetSize: () => number;
|
|
30
|
+
getAriaPosInset: (index: number) => number;
|
|
31
|
+
onFirstHiddenFocus: () => void;
|
|
32
|
+
onLastHiddenFocus: (event: React.FocusEvent) => void;
|
|
33
|
+
onFocusOut: (event: React.FocusEvent) => void;
|
|
34
|
+
onListFocus: () => void;
|
|
35
|
+
onListBlur: () => void;
|
|
36
|
+
onListKeyDown: (event: React.KeyboardEvent) => void;
|
|
37
|
+
onArrowDownKey: (event: React.KeyboardEvent) => void;
|
|
38
|
+
onArrowUpKey: (event: React.KeyboardEvent) => void;
|
|
39
|
+
onArrowLeftKey: (event: React.KeyboardEvent, pressedInInputText?: boolean) => void;
|
|
40
|
+
onEnterKey: (event: React.KeyboardEvent) => void;
|
|
41
|
+
onOptionSelect: (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index?: number) => void;
|
|
42
|
+
onOptionMouseDown: (event: React.MouseEvent, index: number) => void;
|
|
43
|
+
onOptionMouseMove: (event: React.MouseEvent, index: number) => void;
|
|
44
|
+
onOptionTouchEnd: () => void;
|
|
45
|
+
onFilterChange: () => void;
|
|
46
|
+
onFilterBlur: () => void;
|
|
47
|
+
onFilterKeyDown: (event: React.KeyboardEvent) => void;
|
|
48
|
+
isOptionMatched: (option: unknown) => any;
|
|
49
|
+
isValidOption: (option: unknown) => boolean;
|
|
50
|
+
isValidSelectedOption: (option: unknown) => boolean;
|
|
51
|
+
isSelected: (option: unknown) => boolean;
|
|
52
|
+
changeFocusedOptionIndex: (event: React.MouseEvent | React.KeyboardEvent, index?: number) => void;
|
|
53
|
+
findSelectedOptionIndex: () => number;
|
|
54
|
+
findFirstFocusedOptionIndex: () => number;
|
|
55
|
+
scrollInView: (index?: number) => void;
|
|
56
|
+
updateModel: (event: React.SyntheticEvent, value: unknown) => void;
|
|
57
|
+
autoUpdateModel: () => void;
|
|
58
|
+
equalityKey: string | undefined;
|
|
59
|
+
hasValue: () => boolean;
|
|
60
|
+
isEquals: (value1: unknown, value2: unknown) => boolean;
|
|
61
|
+
}>;
|
|
62
|
+
presence: {
|
|
63
|
+
present: boolean;
|
|
64
|
+
exiting: boolean;
|
|
65
|
+
mounted: boolean;
|
|
66
|
+
ref: React.RefObject<HTMLElement | null>;
|
|
67
|
+
};
|
|
68
|
+
triggerRef: React.RefObject<HTMLElement | null>;
|
|
69
|
+
setAnchorRef: (node: HTMLElement | null) => void;
|
|
70
|
+
setPositionerRef: (node: HTMLDivElement | null) => void;
|
|
71
|
+
onContainerClick: (event: React.MouseEvent<HTMLDivElement>) => void;
|
|
72
|
+
onFocus: () => void;
|
|
73
|
+
onBlur: () => void;
|
|
74
|
+
onKeyDown: (event: React.KeyboardEvent<HTMLElement>) => void;
|
|
75
|
+
onFilterKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
76
|
+
onClearClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
|
|
77
|
+
onOptionSelect: (event: {
|
|
78
|
+
originalEvent: React.SyntheticEvent;
|
|
79
|
+
value: unknown;
|
|
80
|
+
}) => void;
|
|
81
|
+
getFocusedOptionId: () => string | null;
|
|
82
|
+
getSelectedOptionLabel: () => any;
|
|
83
|
+
hasValue: () => boolean;
|
|
84
|
+
show: () => void;
|
|
85
|
+
hide: () => void;
|
|
86
|
+
toggle: () => void;
|
|
87
|
+
}>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|