@primereact/headless 11.0.0-alpha.9 → 11.0.0-rc.1
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/LICENSE.md +45 -0
- package/README.md +35 -0
- package/accordion/index.d.ts +3 -0
- package/accordion/index.mjs +1 -1
- package/accordion/index.mjs.map +1 -1
- package/accordion/useAccordion.d.ts +7 -6
- package/accordion/useAccordion.props.d.ts +2 -2
- package/accordion/useAccordionPanel.d.ts +46 -0
- package/accordion/useAccordionPanel.props.d.ts +2 -0
- package/animateonscroll/index.d.ts +1 -0
- package/animateonscroll/index.mjs +1 -1
- package/animateonscroll/index.mjs.map +1 -1
- package/animateonscroll/useAnimateOnScroll.d.ts +6 -1
- package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -2
- package/autocomplete/index.d.ts +3 -0
- package/autocomplete/index.mjs +2 -0
- package/autocomplete/index.mjs.map +1 -0
- package/autocomplete/useAutoComplete.d.ts +198 -0
- package/autocomplete/useAutoComplete.props.d.ts +2 -0
- package/avatar/index.d.ts +1 -0
- package/avatar/index.mjs +1 -1
- package/avatar/index.mjs.map +1 -1
- package/avatar/useAvatar.d.ts +5 -1
- package/avatar/useAvatar.props.d.ts +2 -2
- package/avatargroup/index.d.ts +3 -0
- package/avatargroup/index.mjs +2 -0
- package/avatargroup/index.mjs.map +1 -0
- package/avatargroup/useAvatarGroup.d.ts +6 -0
- package/avatargroup/useAvatarGroup.props.d.ts +2 -0
- package/badge/index.d.ts +1 -0
- package/badge/index.mjs +1 -1
- package/badge/index.mjs.map +1 -1
- package/badge/useBadge.d.ts +7 -1
- package/badge/useBadge.props.d.ts +2 -2
- package/breadcrumb/index.d.ts +1 -0
- package/breadcrumb/index.mjs +1 -1
- package/breadcrumb/index.mjs.map +1 -1
- package/breadcrumb/useBreadcrumb.d.ts +18 -2
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -2
- package/button/index.d.ts +1 -0
- package/button/index.mjs +1 -1
- package/button/index.mjs.map +1 -1
- package/button/useButton.d.ts +6 -1
- package/button/useButton.props.d.ts +2 -2
- package/card/index.d.ts +1 -0
- package/card/index.mjs +1 -1
- package/card/index.mjs.map +1 -1
- package/card/useCard.d.ts +6 -1
- package/card/useCard.props.d.ts +2 -2
- package/carousel/index.d.ts +1 -0
- package/carousel/index.mjs +1 -1
- package/carousel/index.mjs.map +1 -1
- package/carousel/useCarousel.d.ts +101 -5
- package/carousel/useCarousel.props.d.ts +2 -2
- package/checkbox/index.d.ts +1 -0
- package/checkbox/index.mjs +1 -1
- package/checkbox/index.mjs.map +1 -1
- package/checkbox/useCheckbox.d.ts +44 -3
- package/checkbox/useCheckbox.props.d.ts +2 -2
- package/checkboxgroup/index.d.ts +3 -0
- package/checkboxgroup/index.mjs +2 -0
- package/checkboxgroup/index.mjs.map +1 -0
- package/checkboxgroup/useCheckboxGroup.d.ts +11 -0
- package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
- package/chip/index.d.ts +1 -0
- package/chip/index.mjs +1 -1
- package/chip/index.mjs.map +1 -1
- package/chip/useChip.d.ts +9 -3
- package/chip/useChip.props.d.ts +2 -2
- package/collapsible/index.d.ts +3 -0
- package/collapsible/index.mjs +2 -0
- package/collapsible/index.mjs.map +1 -0
- package/collapsible/useCollapsible.d.ts +33 -0
- package/collapsible/useCollapsible.props.d.ts +2 -0
- package/compare/index.d.ts +3 -0
- package/compare/index.mjs +2 -0
- package/compare/index.mjs.map +1 -0
- package/compare/useCompare.d.ts +2 -0
- package/compare/useCompare.props.d.ts +2 -0
- package/contextmenu/index.d.ts +1 -0
- package/contextmenu/index.mjs +1 -1
- package/contextmenu/index.mjs.map +1 -1
- package/contextmenu/submenu/index.d.ts +2 -0
- package/contextmenu/submenu/index.mjs +2 -0
- package/contextmenu/submenu/index.mjs.map +1 -0
- package/contextmenu/submenu/useContextMenuSubmenu.d.ts +121 -0
- package/contextmenu/submenu/useContextMenuSubmenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.d.ts +413 -1
- package/contextmenu/useContextMenu.props.d.ts +2 -2
- package/datatable/features/index.d.ts +28 -0
- package/datatable/features/index.mjs +11 -0
- package/datatable/features/index.mjs.map +1 -0
- package/datatable/features/useDataTableColumnReorder.d.ts +52 -0
- package/datatable/features/useDataTableColumnResize.d.ts +20 -0
- package/datatable/features/useDataTableEditing.d.ts +69 -0
- package/datatable/features/useDataTableExpansion.d.ts +32 -0
- package/datatable/features/useDataTableExport.d.ts +43 -0
- package/datatable/features/useDataTableFilter.d.ts +95 -0
- package/datatable/features/useDataTableGrouping.d.ts +11 -0
- package/datatable/features/useDataTableKeyboard.d.ts +23 -0
- package/datatable/features/useDataTablePagination.d.ts +32 -0
- package/datatable/features/useDataTableRowReorder.d.ts +42 -0
- package/datatable/features/useDataTableSelection.d.ts +28 -0
- package/datatable/features/useDataTableSort.d.ts +51 -0
- package/datatable/features/useDataTableTree.d.ts +31 -0
- package/datatable/index.d.ts +7 -0
- package/datatable/index.mjs +11 -0
- package/datatable/index.mjs.map +1 -0
- package/datatable/useDataTable.d.ts +237 -0
- package/datatable/useDataTable.props.d.ts +2 -0
- package/datatable/useDataTableRow.d.ts +30 -0
- package/datatable/useDataTableRow.props.d.ts +2 -0
- package/datatable/utils/compareValues.d.ts +20 -0
- package/datatable/utils/index.d.ts +1 -0
- package/datatable/utils/index.mjs +2 -0
- package/datatable/utils/index.mjs.map +1 -0
- package/dataview/index.d.ts +1 -0
- package/dataview/index.mjs +1 -1
- package/dataview/index.mjs.map +1 -1
- package/dataview/useDataView.d.ts +25 -1
- package/dataview/useDataView.props.d.ts +2 -2
- package/datepicker/index.d.ts +1 -0
- package/datepicker/index.mjs +1 -1
- package/datepicker/index.mjs.map +1 -1
- package/datepicker/useDatePicker.d.ts +2 -114
- package/datepicker/useDatePicker.props.d.ts +2 -2
- package/dialog/index.d.ts +1 -0
- package/dialog/index.mjs +1 -1
- package/dialog/index.mjs.map +1 -1
- package/dialog/useDialog.d.ts +274 -24
- package/dialog/useDialog.props.d.ts +2 -2
- package/divider/index.d.ts +1 -0
- package/divider/index.mjs +1 -1
- package/divider/index.mjs.map +1 -1
- package/divider/useDivider.d.ts +14 -1
- package/divider/useDivider.props.d.ts +2 -2
- package/dnd/index.d.ts +11 -0
- package/dnd/index.mjs +2 -0
- package/dnd/index.mjs.map +1 -0
- package/dnd/useDnd.d.ts +45 -0
- package/dnd/useDnd.props.d.ts +2 -0
- package/dnd/useDraggable.d.ts +14 -0
- package/dnd/useDraggable.props.d.ts +2 -0
- package/dnd/useDroppable.d.ts +11 -0
- package/dnd/useDroppable.props.d.ts +2 -0
- package/dnd/useSortable.d.ts +11 -0
- package/dnd/useSortable.props.d.ts +2 -0
- package/dnd/useSortableContainer.d.ts +24 -0
- package/dnd/useSortableContainer.props.d.ts +2 -0
- package/drawer/index.d.ts +1 -0
- package/drawer/index.mjs +1 -1
- package/drawer/index.mjs.map +1 -1
- package/drawer/useDrawer.d.ts +78 -16
- package/drawer/useDrawer.props.d.ts +2 -2
- package/fieldset/index.d.ts +1 -0
- package/fieldset/index.mjs +1 -1
- package/fieldset/index.mjs.map +1 -1
- package/fieldset/useFieldset.d.ts +80 -1
- package/fieldset/useFieldset.props.d.ts +2 -2
- package/fileupload/index.d.ts +1 -0
- package/fileupload/index.mjs +1 -1
- package/fileupload/index.mjs.map +1 -1
- package/fileupload/useFileUpload.d.ts +73 -4
- package/fileupload/useFileUpload.props.d.ts +2 -2
- package/floatlabel/index.d.ts +3 -0
- package/floatlabel/index.mjs +2 -0
- package/floatlabel/index.mjs.map +1 -0
- package/floatlabel/useFloatLabel.d.ts +6 -0
- package/floatlabel/useFloatLabel.props.d.ts +2 -0
- package/fluid/index.d.ts +1 -0
- package/fluid/index.mjs +1 -1
- package/fluid/index.mjs.map +1 -1
- package/fluid/useFluid.d.ts +6 -1
- package/fluid/useFluid.props.d.ts +2 -2
- package/focustrap/index.d.ts +1 -0
- package/focustrap/index.mjs +1 -1
- package/focustrap/index.mjs.map +1 -1
- package/focustrap/useFocusTrap.d.ts +16 -3
- package/focustrap/useFocusTrap.props.d.ts +2 -2
- package/gallery/index.d.ts +1 -0
- package/gallery/index.mjs +1 -1
- package/gallery/index.mjs.map +1 -1
- package/gallery/item/index.mjs +1 -1
- package/gallery/item/index.mjs.map +1 -1
- package/gallery/item/useGalleryItem.d.ts +17 -7
- package/gallery/item/useGalleryItem.props.d.ts +2 -2
- package/gallery/useGallery.d.ts +147 -6
- package/gallery/useGallery.props.d.ts +2 -2
- package/iconfield/index.d.ts +1 -0
- package/iconfield/index.mjs +1 -1
- package/iconfield/index.mjs.map +1 -1
- package/iconfield/useIconField.d.ts +6 -1
- package/iconfield/useIconField.props.d.ts +2 -2
- package/iftalabel/index.d.ts +3 -0
- package/iftalabel/index.mjs +2 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/useIftaLabel.d.ts +6 -0
- package/iftalabel/useIftaLabel.props.d.ts +2 -0
- package/inplace/index.d.ts +1 -0
- package/inplace/index.mjs +1 -1
- package/inplace/index.mjs.map +1 -1
- package/inplace/useInplace.d.ts +21 -2
- package/inplace/useInplace.props.d.ts +2 -2
- package/{colorpicker → inputcolor}/colorManager.d.ts +3 -2
- package/inputcolor/index.d.ts +4 -0
- package/inputcolor/index.mjs +2 -0
- package/inputcolor/index.mjs.map +1 -0
- package/inputcolor/useInputColor.d.ts +119 -0
- package/inputcolor/useInputColor.props.d.ts +2 -0
- package/inputgroup/index.d.ts +1 -0
- package/inputgroup/index.mjs +1 -1
- package/inputgroup/index.mjs.map +1 -1
- package/inputgroup/useInputGroup.d.ts +6 -1
- package/inputgroup/useInputGroup.props.d.ts +2 -2
- package/inputnumber/index.d.ts +1 -0
- package/inputnumber/index.mjs +1 -1
- package/inputnumber/index.mjs.map +1 -1
- package/inputnumber/useInputNumber.d.ts +55 -17
- package/inputnumber/useInputNumber.props.d.ts +2 -2
- package/inputotp/index.d.ts +1 -0
- package/inputotp/index.mjs +1 -1
- package/inputotp/index.mjs.map +1 -1
- package/inputotp/useInputOtp.d.ts +25 -6
- package/inputotp/useInputOtp.props.d.ts +2 -2
- package/inputpassword/index.d.ts +3 -0
- package/inputpassword/index.mjs +2 -0
- package/inputpassword/index.mjs.map +1 -0
- package/inputpassword/useInputPassword.d.ts +15 -0
- package/inputpassword/useInputPassword.props.d.ts +2 -0
- package/inputtags/index.d.ts +1 -0
- package/inputtags/index.mjs +1 -1
- package/inputtags/index.mjs.map +1 -1
- package/inputtags/useInputTags.d.ts +42 -12
- package/inputtags/useInputTags.props.d.ts +2 -2
- package/inputtext/index.d.ts +1 -0
- package/inputtext/index.mjs +1 -1
- package/inputtext/index.mjs.map +1 -1
- package/inputtext/useInputText.d.ts +8 -1
- package/inputtext/useInputText.props.d.ts +2 -2
- package/knob/index.d.ts +1 -0
- package/knob/index.mjs +1 -1
- package/knob/index.mjs.map +1 -1
- package/knob/useKnob.d.ts +51 -10
- package/knob/useKnob.props.d.ts +2 -2
- package/label/index.d.ts +1 -0
- package/label/index.mjs +1 -1
- package/label/index.mjs.map +1 -1
- package/label/useLabel.d.ts +6 -1
- package/label/useLabel.props.d.ts +2 -2
- package/listbox/index.d.ts +3 -0
- package/listbox/index.mjs +1 -1
- package/listbox/index.mjs.map +1 -1
- package/listbox/useListbox.d.ts +56 -18
- package/listbox/useListbox.props.d.ts +2 -2
- package/listbox/useListboxOption.d.ts +21 -0
- package/listbox/useListboxOption.props.d.ts +2 -0
- package/menu/checkboxitem/index.d.ts +2 -0
- package/menu/checkboxitem/index.mjs +2 -0
- package/menu/checkboxitem/index.mjs.map +1 -0
- package/menu/checkboxitem/useMenuCheckboxItem.d.ts +112 -0
- package/menu/checkboxitem/useMenuCheckboxItem.props.d.ts +2 -0
- package/menu/index.d.ts +1 -0
- package/menu/index.mjs +1 -1
- package/menu/index.mjs.map +1 -1
- package/menu/radioitem/index.d.ts +2 -0
- package/menu/radioitem/index.mjs +2 -0
- package/menu/radioitem/index.mjs.map +1 -0
- package/menu/radioitem/useMenuRadioItem.d.ts +106 -0
- package/menu/radioitem/useMenuRadioItem.props.d.ts +2 -0
- package/menu/submenu/index.d.ts +2 -0
- package/menu/submenu/index.mjs +2 -0
- package/menu/submenu/index.mjs.map +1 -0
- package/menu/submenu/useMenuSubmenu.d.ts +97 -0
- package/menu/submenu/useMenuSubmenu.props.d.ts +2 -0
- package/menu/useMenu.d.ts +215 -22
- package/menu/useMenu.props.d.ts +2 -2
- package/message/index.d.ts +1 -0
- package/message/index.mjs +1 -1
- package/message/index.mjs.map +1 -1
- package/message/useMessage.d.ts +13 -1
- package/message/useMessage.props.d.ts +2 -2
- package/metergroup/index.d.ts +1 -0
- package/metergroup/index.mjs +1 -1
- package/metergroup/index.mjs.map +1 -1
- package/metergroup/useMeterGroup.d.ts +36 -5
- package/metergroup/useMeterGroup.props.d.ts +2 -2
- package/navigationmenu/index.d.ts +3 -0
- package/navigationmenu/index.mjs +2 -0
- package/navigationmenu/index.mjs.map +1 -0
- package/navigationmenu/useNavigationMenu.d.ts +30 -0
- package/navigationmenu/useNavigationMenu.props.d.ts +2 -0
- package/orderlist/index.d.ts +3 -0
- package/orderlist/index.mjs +2 -0
- package/orderlist/index.mjs.map +1 -0
- package/orderlist/useOrderList.d.ts +73 -0
- package/orderlist/useOrderList.props.d.ts +2 -0
- package/organizationchart/index.d.ts +3 -0
- package/organizationchart/index.mjs +2 -0
- package/organizationchart/index.mjs.map +1 -0
- package/organizationchart/useOrganizationChart.d.ts +69 -0
- package/organizationchart/useOrganizationChart.props.d.ts +2 -0
- package/overlaybadge/index.d.ts +3 -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/package.json +12 -15
- package/paginator/index.d.ts +1 -0
- package/paginator/index.mjs +1 -1
- package/paginator/index.mjs.map +1 -1
- package/paginator/usePaginator.d.ts +47 -1
- package/paginator/usePaginator.props.d.ts +2 -2
- package/panel/index.d.ts +1 -0
- package/panel/index.mjs +1 -1
- package/panel/index.mjs.map +1 -1
- package/panel/usePanel.d.ts +76 -8
- package/panel/usePanel.props.d.ts +2 -2
- package/picklist/index.d.ts +3 -0
- package/picklist/index.mjs +2 -0
- package/picklist/index.mjs.map +1 -0
- package/picklist/usePickList.d.ts +153 -0
- package/picklist/usePickList.props.d.ts +2 -0
- package/popover/index.d.ts +1 -0
- package/popover/index.mjs +1 -7
- package/popover/index.mjs.map +1 -1
- package/popover/usePopover.d.ts +65 -12
- package/popover/usePopover.props.d.ts +2 -2
- package/portal/index.d.ts +1 -0
- package/portal/index.mjs +1 -1
- package/portal/index.mjs.map +1 -1
- package/portal/usePortal.d.ts +4 -2
- package/portal/usePortal.props.d.ts +2 -2
- package/positioner/index.d.ts +3 -0
- package/positioner/index.mjs +2 -0
- package/positioner/index.mjs.map +1 -0
- package/positioner/usePositioner.anchor.d.ts +7 -0
- package/positioner/usePositioner.d.ts +11 -0
- package/positioner/usePositioner.fallback.d.ts +13 -0
- package/positioner/usePositioner.props.d.ts +2 -0
- package/positioner/usePositioner.utils.d.ts +21 -0
- package/progressbar/index.d.ts +1 -0
- package/progressbar/index.mjs +1 -1
- package/progressbar/index.mjs.map +1 -1
- package/progressbar/useProgressBar.d.ts +13 -1
- package/progressbar/useProgressBar.props.d.ts +2 -2
- package/progressspinner/index.d.ts +1 -0
- package/progressspinner/index.mjs +1 -1
- package/progressspinner/index.mjs.map +1 -1
- package/progressspinner/useProgressSpinner.d.ts +50 -1
- package/progressspinner/useProgressSpinner.props.d.ts +2 -2
- package/radiobutton/index.d.ts +1 -0
- package/radiobutton/index.mjs +1 -1
- package/radiobutton/index.mjs.map +1 -1
- package/radiobutton/useRadioButton.d.ts +41 -3
- package/radiobutton/useRadioButton.props.d.ts +2 -2
- package/radiobuttongroup/index.d.ts +3 -0
- package/radiobuttongroup/index.mjs +2 -0
- package/radiobuttongroup/index.mjs.map +1 -0
- package/radiobuttongroup/useRadioButtonGroup.d.ts +11 -0
- package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
- package/rating/index.d.ts +3 -0
- package/rating/index.mjs +1 -1
- package/rating/index.mjs.map +1 -1
- package/rating/useRating.d.ts +46 -12
- package/rating/useRating.props.d.ts +2 -2
- package/rating/useRatingOption.d.ts +69 -0
- package/rating/useRatingOption.props.d.ts +2 -0
- package/scrollarea/index.d.ts +1 -0
- package/scrollarea/index.mjs +1 -1
- package/scrollarea/index.mjs.map +1 -1
- package/scrollarea/useScrollArea.d.ts +120 -15
- package/scrollarea/useScrollArea.props.d.ts +2 -2
- package/select/index.d.ts +3 -0
- package/select/index.mjs +2 -0
- package/select/index.mjs.map +1 -0
- package/select/useSelect.d.ts +190 -0
- package/select/useSelect.props.d.ts +2 -0
- package/select/useSelect.test.d.ts +1 -0
- package/sidebar/index.d.ts +7 -0
- package/sidebar/index.mjs +2 -0
- package/sidebar/index.mjs.map +1 -0
- package/sidebar/useSidebar.d.ts +117 -0
- package/sidebar/useSidebar.props.d.ts +2 -0
- package/sidebar/useSidebarLayout.d.ts +24 -0
- package/sidebar/useSidebarLayout.props.d.ts +2 -0
- package/sidebar/useSidebarMenuItem.d.ts +11 -0
- package/sidebar/useSidebarMenuItem.props.d.ts +2 -0
- package/skeleton/index.d.ts +1 -0
- package/skeleton/index.mjs +1 -1
- package/skeleton/index.mjs.map +1 -1
- package/skeleton/useSkeleton.d.ts +7 -1
- package/skeleton/useSkeleton.props.d.ts +2 -2
- package/slider/index.d.ts +1 -0
- package/slider/index.mjs +1 -1
- package/slider/index.mjs.map +1 -1
- package/slider/useSlider.d.ts +81 -48
- package/slider/useSlider.props.d.ts +2 -2
- package/speeddial/index.d.ts +1 -0
- package/speeddial/index.mjs +1 -1
- package/speeddial/index.mjs.map +1 -1
- package/speeddial/useSpeedDial.d.ts +89 -32
- package/speeddial/useSpeedDial.props.d.ts +2 -2
- package/splitter/index.d.ts +1 -0
- package/splitter/index.mjs +1 -1
- package/splitter/index.mjs.map +1 -1
- package/splitter/useSplitter.d.ts +57 -14
- package/splitter/useSplitter.props.d.ts +2 -2
- package/stepper/index.d.ts +1 -0
- package/stepper/index.mjs +1 -1
- package/stepper/index.mjs.map +1 -1
- package/stepper/useStepper.d.ts +47 -2
- package/stepper/useStepper.props.d.ts +2 -2
- package/styleclass/index.d.ts +1 -0
- package/styleclass/index.mjs +1 -1
- package/styleclass/index.mjs.map +1 -1
- package/styleclass/useStyleClass.d.ts +5 -1
- package/styleclass/useStyleClass.props.d.ts +2 -2
- package/tabs/index.d.ts +1 -0
- package/tabs/index.mjs +1 -1
- package/tabs/index.mjs.map +1 -1
- package/tabs/useTabs.d.ts +42 -3
- package/tabs/useTabs.props.d.ts +2 -2
- package/tag/index.d.ts +1 -0
- package/tag/index.mjs +1 -1
- package/tag/index.mjs.map +1 -1
- package/tag/useTag.d.ts +6 -1
- package/tag/useTag.props.d.ts +2 -2
- package/terminal/index.d.ts +1 -0
- package/terminal/index.mjs +1 -1
- package/terminal/index.mjs.map +1 -1
- package/terminal/useTerminal.d.ts +23 -2
- package/terminal/useTerminal.props.d.ts +2 -2
- package/textarea/index.d.ts +1 -0
- package/textarea/index.mjs +1 -1
- package/textarea/index.mjs.map +1 -1
- package/textarea/useTextarea.d.ts +9 -2
- package/textarea/useTextarea.props.d.ts +2 -2
- package/timeline/index.d.ts +1 -0
- package/timeline/index.mjs +1 -1
- package/timeline/index.mjs.map +1 -1
- package/timeline/useTimeline.d.ts +41 -1
- package/timeline/useTimeline.props.d.ts +2 -2
- package/toast/index.d.ts +1 -1
- package/toast/index.mjs +1 -1
- package/toast/index.mjs.map +1 -1
- package/toast/useToast.d.ts +85 -23
- package/toast/useToast.props.d.ts +2 -2
- package/toaster/ToastManager.d.ts +14 -0
- package/toaster/index.d.ts +4 -0
- package/toaster/index.mjs +2 -0
- package/toaster/index.mjs.map +1 -0
- package/toaster/useToaster.d.ts +50 -0
- package/toaster/useToaster.props.d.ts +2 -0
- package/togglebutton/index.d.ts +1 -0
- package/togglebutton/index.mjs +1 -1
- package/togglebutton/index.mjs.map +1 -1
- package/togglebutton/useToggleButton.d.ts +5 -3
- package/togglebutton/useToggleButton.props.d.ts +2 -2
- package/togglebuttongroup/index.d.ts +3 -0
- package/togglebuttongroup/index.mjs +2 -0
- package/togglebuttongroup/index.mjs.map +1 -0
- package/togglebuttongroup/useToggleButtonGroup.d.ts +17 -0
- package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
- package/toggleswitch/index.d.ts +3 -0
- package/toggleswitch/index.mjs +2 -0
- package/toggleswitch/index.mjs.map +1 -0
- package/toggleswitch/useToggleSwitch.d.ts +48 -0
- package/toggleswitch/useToggleSwitch.props.d.ts +2 -0
- package/toolbar/index.d.ts +1 -0
- package/toolbar/index.mjs +1 -1
- package/toolbar/index.mjs.map +1 -1
- package/toolbar/useToolbar.d.ts +7 -1
- package/toolbar/useToolbar.props.d.ts +2 -2
- package/tooltip/index.d.ts +1 -0
- package/tooltip/index.mjs +1 -1
- package/tooltip/index.mjs.map +1 -1
- package/tooltip/useTooltip.d.ts +43 -24
- package/tooltip/useTooltip.props.d.ts +2 -2
- package/tooltipmanager/index.d.ts +2 -0
- package/tooltipmanager/index.mjs +2 -0
- package/tooltipmanager/index.mjs.map +1 -0
- package/tooltipmanager/useTooltipManager.d.ts +12 -0
- package/tooltipmanager/useTooltipManager.props.d.ts +2 -0
- package/tooltipmanager/useTooltipManager.test.d.ts +0 -0
- package/tree/TreeDragDropService.d.ts +13 -5
- package/tree/index.d.ts +7 -0
- package/tree/index.mjs +1 -1
- package/tree/index.mjs.map +1 -1
- package/tree/useTree.d.ts +96 -16
- package/tree/useTree.props.d.ts +2 -2
- package/tree/useTreeDragDrop.d.ts +24 -0
- package/tree/useTreeFlatten.d.ts +13 -0
- package/tree/useTreeKeyboard.d.ts +18 -0
- package/tree/useTreeNode.d.ts +45 -0
- package/tree/useTreeNode.props.d.ts +2 -0
- package/tree/useTreeSelection.d.ts +31 -0
- package/utils/itemKey.d.ts +10 -0
- package/LICENSE +0 -21
- package/colorpicker/index.d.ts +0 -3
- package/colorpicker/index.mjs +0 -2
- package/colorpicker/index.mjs.map +0 -1
- package/colorpicker/input/index.d.ts +0 -2
- package/colorpicker/input/index.mjs +0 -2
- package/colorpicker/input/index.mjs.map +0 -1
- package/colorpicker/input/useColorPickerInput.d.ts +0 -11
- package/colorpicker/input/useColorPickerInput.props.d.ts +0 -2
- package/colorpicker/slider/index.d.ts +0 -2
- package/colorpicker/slider/index.mjs +0 -2
- package/colorpicker/slider/index.mjs.map +0 -1
- package/colorpicker/slider/useColorPickerSlider.d.ts +0 -13
- package/colorpicker/slider/useColorPickerSlider.props.d.ts +0 -2
- package/colorpicker/useColorPicker.d.ts +0 -26
- package/colorpicker/useColorPicker.props.d.ts +0 -2
- package/commandmenu/index.d.ts +0 -2
- package/commandmenu/index.mjs +0 -2
- package/commandmenu/index.mjs.map +0 -1
- package/commandmenu/useCommandMenu.d.ts +0 -11
- package/commandmenu/useCommandMenu.props.d.ts +0 -2
- package/confirmdialog/index.d.ts +0 -2
- package/confirmdialog/index.mjs +0 -2
- package/confirmdialog/index.mjs.map +0 -1
- package/confirmdialog/useConfirmDialog.d.ts +0 -1
- package/confirmdialog/useConfirmDialog.props.d.ts +0 -2
- package/confirmpopup/index.d.ts +0 -2
- package/confirmpopup/index.mjs +0 -2
- package/confirmpopup/index.mjs.map +0 -1
- package/confirmpopup/useConfirmPopup.d.ts +0 -25
- package/confirmpopup/useConfirmPopup.props.d.ts +0 -2
- package/imagecompare/index.d.ts +0 -2
- package/imagecompare/index.mjs +0 -2
- package/imagecompare/index.mjs.map +0 -1
- package/imagecompare/useImageCompare.d.ts +0 -8
- package/imagecompare/useImageCompare.props.d.ts +0 -2
- package/menu/sub/index.d.ts +0 -2
- package/menu/sub/index.mjs +0 -2
- package/menu/sub/index.mjs.map +0 -1
- package/menu/sub/useMenuSub.d.ts +0 -19
- package/menu/sub/useMenuSub.props.d.ts +0 -2
- package/orgchart/index.d.ts +0 -2
- package/orgchart/index.mjs +0 -2
- package/orgchart/index.mjs.map +0 -1
- package/orgchart/useOrgChart.d.ts +0 -20
- package/orgchart/useOrgChart.props.d.ts +0 -2
- package/overlay/index.d.ts +0 -2
- package/overlay/index.mjs +0 -2
- package/overlay/index.mjs.map +0 -1
- package/overlay/useOverlay.d.ts +0 -16
- package/overlay/useOverlay.props.d.ts +0 -2
- package/password/index.d.ts +0 -2
- package/password/index.mjs +0 -2
- package/password/index.mjs.map +0 -1
- package/password/usePassword.d.ts +0 -35
- package/password/usePassword.props.d.ts +0 -2
- package/placer/index.d.ts +0 -2
- package/placer/index.mjs +0 -2
- package/placer/index.mjs.map +0 -1
- package/placer/usePlacer.d.ts +0 -12
- package/placer/usePlacer.props.d.ts +0 -2
- package/switch/index.d.ts +0 -2
- package/switch/index.mjs +0 -2
- package/switch/index.mjs.map +0 -1
- package/switch/useSwitch.d.ts +0 -7
- package/switch/useSwitch.props.d.ts +0 -2
- package/toast/item/index.css +0 -2
- package/toast/item/index.css.map +0 -1
- package/toast/item/index.d.ts +0 -2
- package/toast/item/index.mjs +0 -2
- package/toast/item/index.mjs.map +0 -1
- package/toast/item/useToastItem.d.ts +0 -25
- package/toast/item/useToastItem.props.d.ts +0 -2
- package/toast/toastStore.d.ts +0 -40
- package/tooltip/group/index.d.ts +0 -2
- package/tooltip/group/index.mjs +0 -2
- package/tooltip/group/index.mjs.map +0 -1
- package/tooltip/group/useTooltipGroup.d.ts +0 -9
- package/tooltip/group/useTooltipGroup.props.d.ts +0 -2
- /package/{colorpicker/input/useColorPickerInput.test.d.ts → autocomplete/useAutoComplete.test.d.ts} +0 -0
- /package/{colorpicker/slider/useColorPickerSlider.test.d.ts → checkboxgroup/useCheckboxGroup.test.d.ts} +0 -0
- /package/{colorpicker/useColorPicker.test.d.ts → collapsible/useCollapsible.test.d.ts} +0 -0
- /package/{commandmenu/useCommandMenu.test.d.ts → compare/useCompare.test.d.ts} +0 -0
- /package/{confirmdialog/useConfirmDialog.test.d.ts → floatlabel/useFloatLabel.test.d.ts} +0 -0
- /package/{confirmpopup/useConfirmPopup.test.d.ts → iftalabel/useIftaLabel.test.d.ts} +0 -0
- /package/{imagecompare/useImageCompare.test.d.ts → inputcolor/useInputColor.test.d.ts} +0 -0
- /package/{orgchart/useOrgChart.test.d.ts → inputpassword/useInputPassword.test.d.ts} +0 -0
- /package/{overlay/useOverlay.test.d.ts → navigationmenu/useNavigationMenu.test.d.ts} +0 -0
- /package/{password/usePassword.test.d.ts → organizationchart/useOrganizationChart.test.d.ts} +0 -0
- /package/{placer/usePlacer.test.d.ts → overlaybadge/useOverlayBadge.test.d.ts} +0 -0
- /package/{progressspinner/useProgressSpinner.test.d.ts → positioner/usePositioner.test.d.ts} +0 -0
- /package/{rating/useRating.test.d.ts → radiobuttongroup/useRadioButtonGroup.test.d.ts} +0 -0
- /package/{switch/useSwitch.test.d.ts → toaster/useToaster.test.d.ts} +0 -0
- /package/{toast/item/useToastItem.test.d.ts → togglebuttongroup/useToggleButtonGroup.test.d.ts} +0 -0
- /package/{tooltip/group/useTooltipGroup.test.d.ts → toggleswitch/useToggleSwitch.test.d.ts} +0 -0
package/knob/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/knob/useKnob.ts","../../src/knob/useKnob.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useEventListener } from '@primereact/hooks';\nimport { useKnobProps } from '@primereact/types/shared/knob';\nimport * as React from 'react';\nimport { defaultProps } from './useKnob.props';\n\nconst radius = 40;\nconst midX = 50;\nconst midY = 50;\nconst minRadians = (4 * Math.PI) / 3;\nconst maxRadians = -Math.PI / 3;\n// Set fix value for SSR.\nconst Math_PI = 3.14159265358979;\n\nexport const useKnob = withHeadless({\n name: 'useKnob',\n defaultProps,\n setup({ props, elementRef }) {\n const [valueState, setValueState] = React.useState<useKnobProps['value']>(props.value ?? props.defaultValue ?? null);\n\n const state = {\n value: valueState\n };\n\n const mapRange = (x: number, inMin: number, inMax: number, outMin: number, outMax: number) => ((x - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n\n const zeroRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n return mapRange(min > 0 && max > 0 ? min : 0, min, max, minRadians, maxRadians);\n };\n\n const valueRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const value = valueState ?? min;\n\n return mapRange(value, min, max, minRadians, maxRadians);\n };\n\n const minX = () => midX + Math.cos(minRadians) * radius;\n\n const minY = () => midY - Math.sin(minRadians) * radius;\n\n const maxX = () => midX + Math.cos(maxRadians) * radius;\n\n const maxY = () => midY - Math.sin(maxRadians) * radius;\n\n const zeroX = () => midX + Math.cos(zeroRadians()) * radius;\n\n const zeroY = () => midY - Math.sin(zeroRadians()) * radius;\n\n const valueX = () => midX + Math.cos(valueRadians()) * radius;\n\n const valueY = () => midY - Math.sin(valueRadians()) * radius;\n\n const largeArc = () => (Math.abs(zeroRadians() - valueRadians()) < Math_PI ? 0 : 1);\n\n const sweep = () => (valueRadians() > zeroRadians() ? 0 : 1);\n\n const rangePath = `M ${minX()} ${minY()} A ${radius} ${radius} 0 1 1 ${maxX()} ${maxY()}`;\n\n const valuePath = `M ${zeroX()} ${zeroY()} A ${radius} ${radius} 0 ${largeArc()} ${sweep()} ${valueX()} ${valueY()}`;\n\n const [bindWindowMouseMoveListener, unbindWindowMouseMoveListener] = useEventListener({\n target: 'window',\n type: 'mousemove',\n listener: (event: Event) => onMouseMove(event as unknown as React.MouseEvent)\n });\n\n const [bindWindowMouseUpListener, unbindWindowMouseUpListener] = useEventListener({\n target: 'window',\n type: 'mouseup',\n listener: () => onMouseUp()\n });\n\n const [bindWindowTouchMoveListener, unbindWindowTouchMoveListener] = useEventListener({\n target: 'window',\n type: 'touchmove',\n listener: (event: Event) => onTouchMove(event as unknown as React.TouchEvent)\n });\n\n const [bindWindowTouchEndListener, unbindWindowTouchEndListener] = useEventListener({\n target: 'window',\n type: 'touchend',\n listener: () => onTouchEnd()\n });\n\n const updateValueByOffset = (offsetX: number, offsetY: number) => {\n const dx = offsetX - (props.size ?? 100) / 2;\n const dy = (props.size ?? 100) / 2 - offsetY;\n const angle = Math.atan2(dy, dx);\n const start = -Math_PI / 2 - Math_PI / 6;\n\n updateModel(angle, start);\n };\n\n const updateModel = (angle: number, start: number) => {\n let mappedValue;\n\n if (angle > maxRadians) mappedValue = mapRange(angle, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else if (angle < start) mappedValue = mapRange(angle + 2 * Math.PI, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else return;\n\n const newValue = Math.round((mappedValue - (props.min ?? 0)) / (props.step ?? 1)) * (props.step ?? 1) + (props.min ?? 0);\n\n setValueState(newValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n value: newValue\n });\n }\n };\n\n const updateModelValue = (newValue: number) => {\n let currentValue;\n\n if (newValue > (props.max ?? 100)) {\n currentValue = props.max ?? 100;\n } else if (newValue < (props.min ?? 0)) {\n currentValue = props.min ?? 0;\n } else {\n currentValue = newValue;\n }\n\n setValueState(currentValue);\n\n if (props.onValueChange) {\n props.onValueChange({\n value: currentValue\n });\n }\n };\n\n const onClick = (event: React.MouseEvent) => {\n if (!props.disabled && !props.readOnly) {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY);\n }\n };\n\n const onMouseDown = (event: React.MouseEvent) => {\n bindWindowMouseMoveListener();\n bindWindowMouseUpListener();\n event.preventDefault();\n };\n\n const onMouseUp = () => {\n unbindWindowMouseMoveListener();\n unbindWindowMouseUpListener();\n };\n\n const onTouchStart = () => {\n bindWindowTouchMoveListener();\n bindWindowTouchEndListener();\n };\n\n const onTouchEnd = () => {\n unbindWindowTouchMoveListener();\n unbindWindowTouchEndListener();\n };\n\n const onMouseMove = (event: React.MouseEvent) => {\n if (!props.disabled && !props.readOnly) {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY);\n event.preventDefault();\n }\n };\n\n const onTouchMove = (event: React.TouchEvent) => {\n if (!props.disabled && !props.readOnly && event.touches.length == 1) {\n const rect = elementRef.current?.getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n\n if (rect && touch) {\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n\n updateValueByOffset(offsetX, offsetY);\n }\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n if (!props.disabled && !props.readOnly) {\n switch (event.code) {\n case 'ArrowRight':\n\n case 'ArrowUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + (props.step ?? 1));\n break;\n }\n\n case 'ArrowLeft':\n\n case 'ArrowDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - (props.step ?? 1));\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n updateModelValue(props.min ?? 0);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n updateModelValue(props.max ?? 100);\n break;\n }\n\n case 'PageUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + 10);\n break;\n }\n\n case 'PageDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - 10);\n break;\n }\n }\n }\n };\n\n React.useEffect(() => {\n if (props.value !== undefined) {\n setValueState(props.value);\n }\n }, [props.value]);\n\n return {\n state,\n rangePath,\n valuePath,\n //methods\n onClick,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd,\n onMouseMove,\n onTouchMove,\n onKeyDown\n };\n }\n});\n","import type { useKnobProps } from '@primereact/types/shared/knob';\n\nexport const defaultProps: useKnobProps = {\n defaultValue: undefined,\n value: undefined,\n size: 100,\n step: 1,\n min: 0,\n max: 100,\n readOnly: false,\n disabled: false,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useEventListener","React","defaultProps","radius","midX","midY","minRadians","maxRadians","Math_PI","useKnob","withHeadless","defaultProps","props","elementRef","_a","_b","valueState","setValueState","state","mapRange","x","inMin","inMax","outMin","outMax","zeroRadians","min","max","valueRadians","value","minX","minY","maxX","maxY","zeroX","zeroY","valueX","valueY","largeArc","sweep","rangePath","valuePath","bindWindowMouseMoveListener","unbindWindowMouseMoveListener","useEventListener","event","onMouseMove","bindWindowMouseUpListener","unbindWindowMouseUpListener","onMouseUp","bindWindowTouchMoveListener","unbindWindowTouchMoveListener","onTouchMove","bindWindowTouchEndListener","unbindWindowTouchEndListener","onTouchEnd","updateValueByOffset","offsetX","offsetY","dx","dy","angle","start","updateModel","_c","_d","_e","_f","_g","_h","mappedValue","newValue","updateModelValue","currentValue","onClick","onMouseDown","onTouchStart","rect","touch","onKeyDown","_i","_j","_k","_l"]}
|
|
1
|
+
{"version":3,"sources":["../../src/knob/useKnob.ts","../../src/knob/useKnob.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState, useEventListener } from '@primereact/hooks';\nimport * as React from 'react';\nimport { defaultProps } from './useKnob.props';\n\nconst radius = 40;\nconst midX = 50;\nconst midY = 50;\nconst minRadians = (4 * Math.PI) / 3;\nconst maxRadians = -Math.PI / 3;\n\n// Round to fixed precision to prevent SSR hydration mismatches\n// caused by floating-point differences across JS engine versions.\nconst round = (n: number) => Math.round(n * 1000) / 1000;\n\nexport const useKnob = withHeadless({\n name: 'useKnob',\n defaultProps,\n setup({ props, elementRef }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue ?? null,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState\n };\n\n const mapRange = (x: number, inMin: number, inMax: number, outMin: number, outMax: number) => ((x - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n\n const zeroRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n return mapRange(min > 0 && max > 0 ? min : 0, min, max, minRadians, maxRadians);\n };\n\n const valueRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const value = valueState ?? min;\n\n return mapRange(value, min, max, minRadians, maxRadians);\n };\n\n const minX = () => round(midX + Math.cos(minRadians) * radius);\n\n const minY = () => round(midY - Math.sin(minRadians) * radius);\n\n const maxX = () => round(midX + Math.cos(maxRadians) * radius);\n\n const maxY = () => round(midY - Math.sin(maxRadians) * radius);\n\n const zeroX = () => round(midX + Math.cos(zeroRadians()) * radius);\n\n const zeroY = () => round(midY - Math.sin(zeroRadians()) * radius);\n\n const valueX = () => round(midX + Math.cos(valueRadians()) * radius);\n\n const valueY = () => round(midY - Math.sin(valueRadians()) * radius);\n\n const largeArc = () => (Math.abs(zeroRadians() - valueRadians()) < Math.PI ? 0 : 1);\n\n const sweep = () => (valueRadians() > zeroRadians() ? 0 : 1);\n\n const rangePath = `M ${minX()} ${minY()} A ${radius} ${radius} 0 1 1 ${maxX()} ${maxY()}`;\n\n const valuePath = `M ${zeroX()} ${zeroY()} A ${radius} ${radius} 0 ${largeArc()} ${sweep()} ${valueX()} ${valueY()}`;\n\n const [bindWindowMouseMoveListener, unbindWindowMouseMoveListener] = useEventListener({\n target: 'window',\n type: 'mousemove',\n listener: (event: Event) => onMouseMove(event as MouseEvent)\n });\n\n const [bindWindowMouseUpListener, unbindWindowMouseUpListener] = useEventListener({\n target: 'window',\n type: 'mouseup',\n listener: () => onMouseUp()\n });\n\n const [bindWindowTouchMoveListener, unbindWindowTouchMoveListener] = useEventListener({\n target: 'window',\n type: 'touchmove',\n listener: (event: Event) => onTouchMove(event as TouchEvent)\n });\n\n const [bindWindowTouchEndListener, unbindWindowTouchEndListener] = useEventListener({\n target: 'window',\n type: 'touchend',\n listener: () => onTouchEnd()\n });\n\n const updateValueByOffset = (offsetX: number, offsetY: number, originalEvent: React.SyntheticEvent | Event) => {\n const dx = offsetX - (props.size ?? 100) / 2;\n const dy = (props.size ?? 100) / 2 - offsetY;\n const angle = Math.atan2(dy, dx);\n const start = -Math.PI / 2 - Math.PI / 6;\n\n updateModel(angle, start, originalEvent);\n };\n\n const updateModel = (angle: number, start: number, originalEvent: React.SyntheticEvent | Event) => {\n let mappedValue;\n\n if (angle > maxRadians) mappedValue = mapRange(angle, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else if (angle < start) mappedValue = mapRange(angle + 2 * Math.PI, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else return;\n\n const newValue = Math.round((mappedValue - (props.min ?? 0)) / (props.step ?? 1)) * (props.step ?? 1) + (props.min ?? 0);\n\n setValueState([newValue, { originalEvent, value: newValue }]);\n };\n\n const updateModelValue = (newValue: number, originalEvent: React.SyntheticEvent | Event) => {\n let currentValue;\n\n if (newValue > (props.max ?? 100)) {\n currentValue = props.max ?? 100;\n } else if (newValue < (props.min ?? 0)) {\n currentValue = props.min ?? 0;\n } else {\n currentValue = newValue;\n }\n\n setValueState([currentValue, { originalEvent, value: currentValue }]);\n };\n\n const onClick = (event: React.MouseEvent) => {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY, event);\n };\n\n const onMouseDown = (event: React.MouseEvent) => {\n bindWindowMouseMoveListener();\n bindWindowMouseUpListener();\n event.preventDefault();\n };\n\n const onMouseUp = () => {\n unbindWindowMouseMoveListener();\n unbindWindowMouseUpListener();\n };\n\n const onTouchStart = () => {\n bindWindowTouchMoveListener();\n bindWindowTouchEndListener();\n };\n\n const onTouchEnd = () => {\n unbindWindowTouchMoveListener();\n unbindWindowTouchEndListener();\n };\n\n const onMouseMove = (event: MouseEvent) => {\n updateValueByOffset(event.offsetX, event.offsetY, event);\n event.preventDefault();\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (event.touches.length == 1) {\n const rect = elementRef.current?.getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n\n if (rect && touch) {\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n\n updateValueByOffset(offsetX, offsetY, event);\n }\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowRight':\n\n case 'ArrowUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + (props.step ?? 1), event);\n break;\n }\n\n case 'ArrowLeft':\n\n case 'ArrowDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - (props.step ?? 1), event);\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n updateModelValue(props.min ?? 0, event);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n updateModelValue(props.max ?? 100, event);\n break;\n }\n\n case 'PageUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + 10, event);\n break;\n }\n\n case 'PageDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - 10, event);\n break;\n }\n }\n };\n\n // prop getters\n const isInteractive = !props.disabled && !props.readOnly;\n\n const svgProps = {\n 'data-scope': 'knob',\n 'data-part': 'svg',\n viewBox: '0 0 100 100' as const,\n role: 'slider' as const,\n width: props.size,\n height: props.size,\n tabIndex: isInteractive ? (props.tabIndex ?? 0) : -1,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': state.value,\n 'aria-labelledby': props.ariaLabelledby,\n 'aria-label': props.ariaLabel,\n 'aria-disabled': props.disabled || undefined,\n 'aria-readonly': props.readOnly || undefined,\n ...(isInteractive && {\n onClick,\n onKeyDown,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd\n })\n };\n\n const rootProps = {\n 'data-scope': 'knob',\n 'data-part': 'root',\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.readOnly ? { 'data-readonly': '' } : {})\n };\n\n const rangeProps = {\n 'data-scope': 'knob',\n 'data-part': 'range',\n d: rangePath,\n strokeWidth: props.strokeWidth,\n stroke: props.rangeColor\n };\n\n const valueProps = {\n 'data-scope': 'knob',\n 'data-part': 'value',\n d: valuePath,\n strokeWidth: props.strokeWidth,\n stroke: props.valueColor\n };\n\n const textProps = {\n 'data-scope': 'knob',\n 'data-part': 'text',\n x: 50,\n y: 57,\n textAnchor: 'middle' as const,\n fill: props.textColor\n };\n\n return {\n state,\n rangePath,\n valuePath,\n // prop getters\n rootProps,\n svgProps,\n rangeProps,\n valueProps,\n textProps\n };\n }\n});\n","import type { UseKnobProps } from '@primereact/types/headless/knob';\n\nexport const defaultProps: UseKnobProps = {\n defaultValue: undefined,\n value: undefined,\n size: 100,\n step: 1,\n min: 0,\n max: 100,\n strokeWidth: 14,\n rangeColor: undefined,\n valueColor: undefined,\n textColor: undefined,\n tabIndex: undefined,\n disabled: undefined,\n readOnly: undefined,\n invalid: undefined,\n ariaLabelledby: undefined,\n ariaLabel: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","useEventListener","defaultProps","radius","midX","midY","minRadians","maxRadians","round","n","useKnob","withHeadless","defaultProps","props","elementRef","_a","_b","valueState","setValueState","useControlledState","state","mapRange","x","inMin","inMax","outMin","outMax","zeroRadians","min","max","valueRadians","value","minX","minY","maxX","maxY","zeroX","zeroY","valueX","valueY","largeArc","sweep","rangePath","valuePath","bindWindowMouseMoveListener","unbindWindowMouseMoveListener","useEventListener","event","onMouseMove","bindWindowMouseUpListener","unbindWindowMouseUpListener","onMouseUp","bindWindowTouchMoveListener","unbindWindowTouchMoveListener","onTouchMove","bindWindowTouchEndListener","unbindWindowTouchEndListener","onTouchEnd","updateValueByOffset","offsetX","offsetY","originalEvent","dx","dy","angle","start","updateModel","_c","_d","_e","_f","_g","_h","mappedValue","newValue","updateModelValue","currentValue","onClick","onMouseDown","onTouchStart","rect","touch","onKeyDown","_i","_j","_k","_l","isInteractive","svgProps","__spreadValues","rootProps","rangeProps","valueProps","textProps"]}
|
package/knob/useKnob.d.ts
CHANGED
|
@@ -1,17 +1,58 @@
|
|
|
1
|
-
import { useKnobProps } from '@primereact/types/shared/knob';
|
|
2
1
|
import * as React from 'react';
|
|
3
|
-
export declare const useKnob: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<
|
|
2
|
+
export declare const useKnob: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/knob").UseKnobProps, unknown, {
|
|
4
3
|
state: {
|
|
5
4
|
value: number | null | undefined;
|
|
6
5
|
};
|
|
7
6
|
rangePath: string;
|
|
8
7
|
valuePath: string;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
8
|
+
rootProps: {
|
|
9
|
+
'data-readonly'?: string | undefined;
|
|
10
|
+
'data-disabled'?: string | undefined;
|
|
11
|
+
'data-scope': string;
|
|
12
|
+
'data-part': string;
|
|
13
|
+
};
|
|
14
|
+
svgProps: {
|
|
15
|
+
onClick?: ((event: React.MouseEvent) => void) | undefined;
|
|
16
|
+
onKeyDown?: ((event: React.KeyboardEvent) => void) | undefined;
|
|
17
|
+
onMouseDown?: ((event: React.MouseEvent) => void) | undefined;
|
|
18
|
+
onMouseUp?: (() => void) | undefined;
|
|
19
|
+
onTouchStart?: (() => void) | undefined;
|
|
20
|
+
onTouchEnd?: (() => void) | undefined;
|
|
21
|
+
'data-scope': string;
|
|
22
|
+
'data-part': string;
|
|
23
|
+
viewBox: "0 0 100 100";
|
|
24
|
+
role: "slider";
|
|
25
|
+
width: number | undefined;
|
|
26
|
+
height: number | undefined;
|
|
27
|
+
tabIndex: number;
|
|
28
|
+
'aria-valuemin': number | undefined;
|
|
29
|
+
'aria-valuemax': number | undefined;
|
|
30
|
+
'aria-valuenow': number | null | undefined;
|
|
31
|
+
'aria-labelledby': string | undefined;
|
|
32
|
+
'aria-label': string | undefined;
|
|
33
|
+
'aria-disabled': true | undefined;
|
|
34
|
+
'aria-readonly': true | undefined;
|
|
35
|
+
};
|
|
36
|
+
rangeProps: {
|
|
37
|
+
'data-scope': string;
|
|
38
|
+
'data-part': string;
|
|
39
|
+
d: string;
|
|
40
|
+
strokeWidth: number | undefined;
|
|
41
|
+
stroke: string | undefined;
|
|
42
|
+
};
|
|
43
|
+
valueProps: {
|
|
44
|
+
'data-scope': string;
|
|
45
|
+
'data-part': string;
|
|
46
|
+
d: string;
|
|
47
|
+
strokeWidth: number | undefined;
|
|
48
|
+
stroke: string | undefined;
|
|
49
|
+
};
|
|
50
|
+
textProps: {
|
|
51
|
+
'data-scope': string;
|
|
52
|
+
'data-part': string;
|
|
53
|
+
x: number;
|
|
54
|
+
y: number;
|
|
55
|
+
textAnchor: "middle";
|
|
56
|
+
fill: string | undefined;
|
|
57
|
+
};
|
|
17
58
|
}>;
|
package/knob/useKnob.props.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UseKnobProps } from '@primereact/types/headless/knob';
|
|
2
|
+
export declare const defaultProps: UseKnobProps;
|
package/label/index.d.ts
CHANGED
package/label/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as
|
|
1
|
+
import{withHeadless as o}from"@primereact/core/headless";var e={};var a=o({name:"useLabel",defaultProps:e,setup(){return{rootProps:{"data-scope":"label","data-part":"root"}}}});export{e as defaultProps,a as useLabel};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/label/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/label/useLabel.ts","../../src/label/useLabel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useLabel.props';\n\nexport const useLabel = withHeadless({\n name: 'useLabel',\n defaultProps\n});\n","import type {
|
|
1
|
+
{"version":3,"sources":["../../src/label/useLabel.ts","../../src/label/useLabel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useLabel.props';\n\nexport const useLabel = withHeadless({\n name: 'useLabel',\n defaultProps,\n setup() {\n // prop getters\n const rootProps = {\n 'data-scope': 'label',\n 'data-part': 'root'\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseLabelProps } from '@primereact/types/headless/label';\n\nexport const defaultProps: UseLabelProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAA8B,CAAC,EDCrC,IAAMC,EAAWC,EAAa,CACjC,KAAM,WACN,aAAAC,EACA,OAAQ,CAOJ,MAAO,CACH,UANc,CACd,aAAc,QACd,YAAa,MACjB,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useLabel","withHeadless","defaultProps"]}
|
package/label/useLabel.d.ts
CHANGED
|
@@ -1 +1,6 @@
|
|
|
1
|
-
export declare const useLabel: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/
|
|
1
|
+
export declare const useLabel: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/label").UseLabelProps, unknown, {
|
|
2
|
+
rootProps: {
|
|
3
|
+
'data-scope': string;
|
|
4
|
+
'data-part': string;
|
|
5
|
+
};
|
|
6
|
+
}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UseLabelProps } from '@primereact/types/headless/label';
|
|
2
|
+
export declare const defaultProps: UseLabelProps;
|
package/listbox/index.d.ts
CHANGED
package/listbox/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{withHeadless as Be}from"@primereact/core/headless";import{useControlledState as ze}from"@primereact/hooks/use-controlled-state";import{equals as Je,findLastIndex as C,findSingle as We,focus as U,getFirstFocusableElement as se,isElement as _e,isNotEmpty as q,isPrintableCharacter as je,isString as ie,resolveFieldData as x}from"@primeuix/utils";import*as s from"react";var ue={value:void 0,defaultValue:void 0,options:[],optionKey:void 0,optionLabel:void 0,optionValue:void 0,optionDisabled:void 0,optionGroupLabel:void 0,optionGroupChildren:void 0,disabled:!1,locale:void 0,multiple:!1,metaKeySelection:!1,autoOptionFocus:!0,selectOnFocus:!1,focusOnHover:!0,onValueChange:void 0};var nn=Be({name:"useListbox",defaultProps:ue,setup({id:le,props:o,elementRef:p}){var ae;let[P,$]=s.useState(!1),[a,d]=s.useState(-1),[i,de]=ze({value:o.value,defaultValue:(ae=o.defaultValue)!=null?ae:null,onChange:o.onValueChange}),fe={value:i,focused:P,focusedOptionIndex:a},L=s.useRef(null),b=s.useRef(null),k=s.useRef(null),F=s.useRef(!1),y=s.useRef(-1),K=s.useRef(null),O=s.useRef(""),c=()=>$e||[],v=e=>`${le}_${e}`,B=e=>o.optionLabel?x(e,o.optionLabel):ie(e)?e:null,l=e=>o.optionValue?x(e,o.optionValue):e,G=e=>o.optionDisabled?x(e,o.optionDisabled):!1,M=e=>!!(o.optionGroupLabel&&(e!=null&&e.optionGroup)&&(e!=null&&e.group)),me=e=>o.optionGroupLabel?x(e,o.optionGroupLabel):ie(e)?e:null,z=e=>o.optionGroupChildren?x(e,o.optionGroupChildren):null,J=()=>a!==-1?v(a):null,be=()=>c().filter(e=>!M(e)).length,ye=e=>(o.optionGroupLabel?e-(c().slice(0,e).filter(t=>M(t)).length||0):e)+1,he=()=>{U(L.current);let e=se(p.current,':not([data-p-hidden-focusable="true"])');k.current&&(k.current.tabIndex=_e(e)?0:-1),b.current&&(b.current.tabIndex=-1)},we=e=>{if(e.relatedTarget===L.current){let n=se(p.current,':not([data-p-hidden-focusable="true"])');n instanceof HTMLElement&&U(n),b.current&&(b.current.tabIndex=0)}else U(b.current);k.current&&(k.current.tabIndex=-1)},ke=e=>{!(p.current instanceof HTMLElement&&p.current.contains(e.relatedTarget))&&k.current&&b.current&&(k.current.tabIndex=0,b.current.tabIndex=0)},Ke=()=>{let e=a!==-1?a:o.autoOptionFocus?H():Ce();$(!0),d(e),N(),g(e)},Re=()=>{$(!1),d(-1),y.current=-1,O.current=""},Oe=e=>{let t=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":W(e);break;case"ArrowUp":_(e);break;case"Home":j(e);break;case"End":Q(e);break;case"PageDown":De(e);break;case"PageUp":Ae(e);break;case"Enter":case"NumpadEnter":case"Space":Te(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":Y();break;default:if(o.multiple&&e.code==="KeyA"&&t){let n=c().filter(r=>f(r)).map(r=>l(r));E(e,n),e.preventDefault();break}!t&&je(e.key)&&(Ne(e,e.key),e.preventDefault());break}},A=(e,t,n=-1)=>{o.disabled||G(t)||(o.multiple?xe(e,t):Se(e,t),F.current=!1,n!==-1&&d(n))},Ie=(e,t)=>{h(e,t)},ge=(e,t)=>{o.focusOnHover&&P&&h(e,t)},Ee=()=>{o.disabled||(F.current=!0)},Se=(e,t)=>{let n=V(t),r=F.current?!1:o.metaKeySelection,u=!1,m=null;if(r){let S=e&&(e.metaKey||e.ctrlKey);n?S&&(m=null,u=!0):(m=l(t),u=!0)}else m=n?null:l(t),u=!0;u&&E(e,m)},xe=(e,t)=>{let n=V(t),r=F.current?!1:o.metaKeySelection,u=null;if(r){let m=e.metaKey||e.ctrlKey;n?u=m?re(t):[l(t)]:(u=m?Array.isArray(i)?i:[]:[],u=[...u,l(t)])}else u=n?re(t):[...Array.isArray(i)?i:[],l(t)];E(e,u)},I=(e,t=-1,n=-1)=>{if(t=t===-1?oe(n,!0):t,n=n===-1?oe(t):n,t!==-1&&n!==-1){let r=Math.min(t,n),u=Math.max(t,n),m=c().slice(r,u+1).filter(S=>f(S)).map(S=>l(S));E(e,m)}},pe=()=>{d(-1),y.current=-1},Le=()=>{d(-1),y.current=-1},Fe=e=>{switch(e.code){case"ArrowDown":W(e);break;case"ArrowUp":_(e);break;case"ArrowLeft":case"ArrowRight":Me(e,!0);break;case"Home":j(e,!0);break;case"End":Q(e,!0);break;case"Enter":case"NumpadEnter":X(e);break;case"ShiftLeft":case"ShiftRight":Y();break;default:break}},W=e=>{let t=a!==-1?Ve(a):H();o.multiple&&e.shiftKey&&I(e,y.current,t),h(e,t),e.preventDefault()},_=e=>{let t=a!==-1?He(a):Ge();o.multiple&&e.shiftKey&&I(e,t,y.current),h(e,t),e.preventDefault()},Me=(e,t=!1)=>{t&&d(-1)},j=(e,t=!1)=>{if(t){let n=e.currentTarget;e.shiftKey?n==null||n.setSelectionRange(0,n.selectionStart):(n==null||n.setSelectionRange(0,0),d(-1))}else{let n=e.metaKey||e.ctrlKey,r=Z();o.multiple&&e.shiftKey&&n&&I(e,r,y.current),h(e,r)}e.preventDefault()},Q=(e,t=!1)=>{if(t){let n=e.currentTarget,r=n.value.length;e.shiftKey?n.setSelectionRange(n.selectionStart,r):(n.setSelectionRange(r,r),d(-1))}else{let n=e.metaKey||e.ctrlKey,r=ee();o.multiple&&e.shiftKey&&n&&I(e,y.current,r),h(e,r)}e.preventDefault()},Ae=e=>{g(0),e.preventDefault()},De=e=>{g(c().length-1),e.preventDefault()},X=e=>{a!==-1&&(o.multiple&&e.shiftKey?I(e,a):A(e,c()[a]))},Te=e=>{e.preventDefault(),X(e)},Y=()=>{y.current=a},D=e=>{var t,n;return f(e)&&((n=B(e))==null?void 0:n.toLocaleLowerCase(o.locale).startsWith((t=O.current)==null?void 0:t.toLocaleLowerCase(o.locale)))},f=e=>q(e)&&!G(e)&&!M(e),R=e=>f(e)&&V(e),T=(e,t)=>Je(e,t,ce),V=e=>{let t=l(e);return o.multiple?Array.isArray(i)&&i.some(n=>T(n,t)):T(i,t)},Z=()=>c().findIndex(e=>f(e)),ee=()=>C(c(),e=>f(e)),Ve=e=>{let t=e<c().length-1?c().slice(e+1).findIndex(n=>f(n)):-1;return t>-1?t+e+1:e},He=e=>{let t=e>0?C(c().slice(0,e),n=>f(n)):-1;return t>-1?t:e},Ce=()=>{if(w())if(o.multiple&&Array.isArray(i))for(let e=i.length-1;e>=0;e--){let t=i[e],n=c().findIndex(r=>R(r)&&T(t,l(r)));if(n>-1)return n}else return c().findIndex(e=>R(e));return-1},Pe=()=>w()?c().findIndex(e=>R(e)):-1,ve=()=>w()?C(c(),e=>R(e)):-1,ne=e=>{let t=w()&&e<c().length-1?c().slice(e+1).findIndex(n=>R(n)):-1;return t>-1?t+e+1:-1},te=e=>{let t=w()&&e>0?C(c().slice(0,e),n=>R(n)):-1;return t>-1?t:-1},oe=(e,t=!1)=>{let n=-1;return w()&&(t?(n=te(e),n=n===-1?ne(e):n):(n=ne(e),n=n===-1?te(e):n)),n>-1?n:e},H=()=>{let e=Pe();return e<0?Z():e},Ge=()=>{let e=ve();return e<0?ee():e},Ne=(e,t)=>{var r;O.current=(O.current||"")+t;let n=-1;q(O.current)&&(a!==-1?(n=c().slice(a).findIndex(u=>D(u)),n=n===-1?c().slice(0,a).findIndex(u=>D(u)):n+a):n=c().findIndex(u=>D(u)),n===-1&&a===-1&&(n=(r=H())!=null?r:-1),n!==-1&&h(e,n)),K.current&&clearTimeout(K.current),K.current=setTimeout(()=>{O.current="",K.current=null},500)},re=e=>Array.isArray(i)?i.filter(t=>!T(t,l(e))):[],h=(e,t=-1)=>{a!==t&&(d(t),g(),o.selectOnFocus&&!o.multiple&&A(e,c()[t]))},Ue=()=>new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(e)})}),g=(e=-1)=>{Ue().then(()=>{var r;let t=e!==-1?v(e):J(),n=We(L.current,`[id="${t}"]`);(r=n==null?void 0:n.scrollIntoView)==null||r.call(n,{block:"nearest",inline:"nearest",behavior:"smooth"})})},N=()=>{if(o.selectOnFocus&&o.autoOptionFocus&&!w()&&!o.multiple&&P){let e=H();d(e),A(null,c()[e])}},E=(e,t)=>{de([t,{originalEvent:e,value:t}])},w=()=>q(i);s.useEffect(()=>(N(),()=>{K.current&&(clearTimeout(K.current),K.current=null)}),[]);let qe=s.useMemo(()=>{let e=[];return(o.options||[]).forEach(t=>{let n=z(t)||[];n!=null&&n.length&&e.push({optionGroup:t,group:!0},...n)}),e},[o.options]),$e=o.optionGroupLabel?qe:o.options,ce=o.optionValue?void 0:o.optionKey;return{state:fe,listRef:L,firstHiddenFocusableRef:b,lastHiddenFocusableRef:k,getOptions:c,getOptionId:v,getOptionLabel:B,getOptionValue:l,isOptionDisabled:G,isOptionGroup:M,getOptionGroupLabel:me,getOptionGroupChildren:z,getFocusedOptionId:J,getAriaSetSize:be,getAriaPosInset:ye,onFirstHiddenFocus:he,onLastHiddenFocus:we,onFocusOut:ke,onListFocus:Ke,onListBlur:Re,onListKeyDown:Oe,onOptionSelect:A,onOptionMouseDown:Ie,onOptionMouseMove:ge,onOptionTouchEnd:Ee,onFilterChange:pe,onFilterBlur:Le,onFilterKeyDown:Fe,isOptionMatched:D,isValidOption:f,isValidSelectedOption:R,isSelected:V,changeFocusedOptionIndex:h,scrollInView:g,updateModel:E,autoUpdateModel:N,equalityKey:ce,hasValue:w}}});export{ue as defaultProps,nn as useListbox};
|
|
1
|
+
var Ye=Object.defineProperty,Ze=Object.defineProperties;var en=Object.getOwnPropertyDescriptors;var Oe=Object.getOwnPropertySymbols;var nn=Object.prototype.hasOwnProperty,tn=Object.prototype.propertyIsEnumerable;var ge=(c,n,u)=>n in c?Ye(c,n,{enumerable:!0,configurable:!0,writable:!0,value:u}):c[n]=u,ne=(c,n)=>{for(var u in n||(n={}))nn.call(n,u)&&ge(c,u,n[u]);if(Oe)for(var u of Oe(n))tn.call(n,u)&&ge(c,u,n[u]);return c},we=(c,n)=>Ze(c,en(n));import{withHeadless as on}from"@primereact/core/headless";import{useControlledState as sn}from"@primereact/hooks/use-controlled-state";import{equals as an,findLastIndex as Q,findSingle as rn,focus as te,getFirstFocusableElement as Re,isElement as cn,isNotEmpty as oe,isNumber as un,isPrintableCharacter as ln,isString as ke,nextFrame as dn,resolveFieldData as G,toElement as L}from"@primeuix/utils";import*as d from"react";var Ie={value:void 0,defaultValue:void 0,options:[],optionKey:void 0,optionLabel:void 0,optionValue:void 0,optionDisabled:void 0,optionGroupLabel:void 0,optionGroupChildren:void 0,disabled:!1,invalid:!1,locale:void 0,multiple:!1,metaKeySelection:!1,autoOptionFocus:!0,selectOnFocus:!1,focusOnHover:!0,tabIndex:void 0,onValueChange:void 0};var On=on({name:"useListbox",defaultProps:Ie,setup({id:c,props:n,elementRef:u}){var Ee;let[b,F]=d.useState(!1),[a,f]=d.useState(-1),[l,X]=sn({value:n.value,defaultValue:(Ee=n.defaultValue)!=null?Ee:null,onChange:n.onValueChange}),Y={value:l,focused:b,focusedOptionIndex:a},k=d.useRef(null),w=d.useRef(null),I=d.useRef(null),K=d.useRef(!1),m=d.useRef(-1),h=d.useRef(null),E=d.useRef(""),r=()=>ze||[],M=e=>`${c}_${e}`,U=e=>n.optionLabel?G(e,n.optionLabel):ke(e)||un(e)?e:null,p=e=>n.optionValue?G(e,n.optionValue):e,D=e=>n.optionDisabled?G(e,n.optionDisabled):!1,N=e=>!!(n.optionGroupLabel&&(e!=null&&e.optionGroup)&&(e!=null&&e.group)),Z=e=>n.optionGroupLabel?G(e,n.optionGroupLabel):ke(e)?e:null,B=e=>n.optionGroupChildren?G(e,n.optionGroupChildren):null,x=()=>a!==-1?M(a):void 0,$=()=>{te(k.current);let e=Re(u.current,":not([data-focus-guard])"),o=L(I);o&&(o.tabIndex=cn(e)?0:-1);let t=L(w);t&&(t.tabIndex=-1)},q=e=>{if(e.relatedTarget===k.current){let s=Re(u.current,":not([data-focus-guard])");s instanceof HTMLElement&&te(s);let i=L(w);i&&(i.tabIndex=0)}else te(L(w));let t=L(I);t&&(t.tabIndex=-1)},y=e=>{let o=u.current instanceof HTMLElement&&u.current.contains(e.relatedTarget),t=L(I),s=L(w);!o&&t&&s&&(t.tabIndex=0,s.tabIndex=0)},_=e=>{var s,i;let o=(i=(s=e==null?void 0:e.currentTarget)==null?void 0:s.dataset)==null?void 0:i.dndFocusIndex,t=o!==void 0?parseInt(o,10):a!==-1?a:n.autoOptionFocus?C():fe();F(!0),f(t),ee(),V(t)},z=()=>{F(!1),f(-1),m.current=-1,E.current=""},Se=e=>{let o=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":se(e);break;case"ArrowUp":ae(e);break;case"Home":re(e);break;case"End":ie(e);break;case"PageDown":Ve(e);break;case"PageUp":Ce(e);break;case"Enter":case"NumpadEnter":case"Space":ve(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":ue();break;default:if(n.multiple&&e.code==="KeyA"&&o){let t=r().filter(s=>O(s)).map(s=>p(s));P(e,t),e.preventDefault();break}!o&&ln(e.key)&&(qe(e,e.key),e.preventDefault());break}},J=(e,o,t=-1)=>{n.disabled||D(o)||(n.multiple?Me(e,o):Fe(e,o),K.current=!1,t!==-1&&f(t))},Le=()=>{n.disabled||(K.current=!0)},Fe=(e,o)=>{let t=j(o),s=K.current?!1:n.metaKeySelection,i=!1,g=null;if(s){let v=e&&(e.metaKey||e.ctrlKey);t?v&&(g=null,i=!0):(g=p(o),i=!0)}else g=t?null:p(o),i=!0;i&&P(e,g)},Me=(e,o)=>{let t=j(o),s=K.current?!1:n.metaKeySelection,i=null;if(s){let g=e.metaKey||e.ctrlKey;t?i=g?ye(o):[p(o)]:(i=g?Array.isArray(l)?l:[]:[],i=[...i,p(o)])}else i=t?ye(o):[...Array.isArray(l)?l:[],p(o)];P(e,i)},T=(e,o=-1,t=-1)=>{if(o=o===-1?me(t,!0):o,t=t===-1?me(o):t,o!==-1&&t!==-1){let s=Math.min(o,t),i=Math.max(o,t),g=r().slice(s,i+1).filter(v=>O(v)).map(v=>p(v));P(e,g)}},He=()=>{f(-1),m.current=-1},Pe=()=>{f(-1),m.current=-1},De=e=>{switch(e.code){case"ArrowDown":se(e);break;case"ArrowUp":ae(e);break;case"ArrowLeft":case"ArrowRight":Ae(e,!0);break;case"Home":re(e,!0);break;case"End":ie(e,!0);break;case"Enter":case"NumpadEnter":ce(e);break;case"ShiftLeft":case"ShiftRight":ue();break;default:break}},Te=e=>{n.disabled||P(e,n.multiple?[]:null)},se=e=>{let o=a!==-1?Ge(a):C();n.multiple&&e.shiftKey&&T(e,m.current,o),H(e,o),e.preventDefault()},ae=e=>{let o=a!==-1?Ue(a):$e();n.multiple&&e.shiftKey&&T(e,o,m.current),H(e,o),e.preventDefault()},Ae=(e,o=!1)=>{o&&f(-1)},re=(e,o=!1)=>{if(o){let t=e.currentTarget;e.shiftKey?t==null||t.setSelectionRange(0,t.selectionStart):(t==null||t.setSelectionRange(0,0),f(-1))}else{let t=e.metaKey||e.ctrlKey,s=le();n.multiple&&e.shiftKey&&t&&T(e,s,m.current),H(e,s)}e.preventDefault()},ie=(e,o=!1)=>{if(o){let t=e.currentTarget,s=t.value.length;e.shiftKey?t.setSelectionRange(t.selectionStart,s):(t.setSelectionRange(s,s),f(-1))}else{let t=e.metaKey||e.ctrlKey,s=de();n.multiple&&e.shiftKey&&t&&T(e,m.current,s),H(e,s)}e.preventDefault()},Ce=e=>{V(0),e.preventDefault()},Ve=e=>{V(r().length-1),e.preventDefault()},ce=e=>{a!==-1&&(n.multiple&&e.shiftKey?T(e,a):J(e,r()[a]))},ve=e=>{e.preventDefault(),ce(e)},ue=()=>{m.current=a},W=e=>{var o,t;return O(e)&&((t=U(e))==null?void 0:t.toLocaleLowerCase(n.locale).startsWith((o=E.current)==null?void 0:o.toLocaleLowerCase(n.locale)))},O=e=>oe(e)&&!D(e)&&!N(e),S=e=>O(e)&&j(e),A=(e,o)=>an(e,o,he),j=e=>{let o=p(e);return n.multiple?Array.isArray(l)&&l.some(t=>A(t,o)):A(l,o)},le=()=>r().findIndex(e=>O(e)),de=()=>Q(r(),e=>O(e)),Ge=e=>{let o=e<r().length-1?r().slice(e+1).findIndex(t=>O(t)):-1;return o>-1?o+e+1:e},Ue=e=>{let o=e>0?Q(r().slice(0,e),t=>O(t)):-1;return o>-1?o:e},fe=()=>{if(R())if(n.multiple&&Array.isArray(l))for(let e=l.length-1;e>=0;e--){let o=l[e],t=r().findIndex(s=>S(s)&&A(o,p(s)));if(t>-1)return t}else return r().findIndex(e=>S(e));return-1},Ne=()=>R()?r().findIndex(e=>S(e)):-1,Be=()=>R()?Q(r(),e=>S(e)):-1,be=e=>{let o=R()&&e<r().length-1?r().slice(e+1).findIndex(t=>S(t)):-1;return o>-1?o+e+1:-1},pe=e=>{let o=R()&&e>0?Q(r().slice(0,e),t=>S(t)):-1;return o>-1?o:-1},me=(e,o=!1)=>{let t=-1;return R()&&(o?(t=pe(e),t=t===-1?be(e):t):(t=be(e),t=t===-1?pe(e):t)),t>-1?t:e},C=()=>{let e=Ne();return e<0?le():e},$e=()=>{let e=Be();return e<0?de():e},qe=(e,o)=>{var s;E.current=(E.current||"")+o;let t=-1;oe(E.current)&&(a!==-1?(t=r().slice(a).findIndex(i=>W(i)),t=t===-1?r().slice(0,a).findIndex(i=>W(i)):t+a):t=r().findIndex(i=>W(i)),t===-1&&a===-1&&(t=(s=C())!=null?s:-1),t!==-1&&H(e,t)),h.current&&clearTimeout(h.current),h.current=setTimeout(()=>{E.current="",h.current=null},500)},ye=e=>Array.isArray(l)?l.filter(o=>!A(o,p(e))):[],H=(e,o=-1)=>{a!==o&&(f(o),V(o),n.selectOnFocus&&!n.multiple&&o!==-1&&J(e,r()[o]))},V=(e=-1)=>{dn().then(()=>{var s;let o=e!==-1?M(e):x(),t=rn(k.current,`[id="${o}"]`);(s=t==null?void 0:t.scrollIntoView)==null||s.call(t,{block:"nearest",inline:"nearest",behavior:"smooth"})})},ee=()=>{if(n.selectOnFocus&&n.autoOptionFocus&&!R()&&!n.multiple&&b){let e=C();f(e),J(null,r()[e])}},P=(e,o)=>{X([o,{originalEvent:e,value:o}])},R=()=>oe(l);d.useEffect(()=>(ee(),()=>{h.current&&(clearTimeout(h.current),h.current=null)}),[]);let _e=d.useMemo(()=>{let e=[];return(n.options||[]).forEach(o=>{let t=B(o)||[];t!=null&&t.length&&e.push({optionGroup:o,group:!0},...t)}),e},[n.options]),ze=n.optionGroupLabel?_e:n.options,he=n.optionValue?void 0:n.optionKey,Je={role:"presentation",ref:I,"aria-hidden":!0,"data-focus-guard":"",onFocus:q},We={role:"presentation",ref:w,"aria-hidden":!0,"data-focus-guard":"",onFocus:$},je={role:"searchbox",autoComplete:"off",disabled:n.disabled,tabIndex:void 0,"aria-owns":c?`${c}_list`:void 0,"aria-activedescendant":x(),"data-scope":"listbox","data-part":"filter",onBlur:Pe,onChange:He,onKeyDown:De},Qe={id:`${c}_list`,role:"listbox",ref:k,tabIndex:-1,"aria-activedescendant":b?x():void 0,"data-scope":"listbox","data-part":"list",onFocus:_,onBlur:z,onKeyDown:Se},Xe={id:c,"data-scope":"listbox","data-part":"root","data-disabled":n.disabled||void 0,"data-invalid":n.invalid||void 0,onBlur:y};return{state:Y,listRef:k,firstHiddenElementRef:w,lastHiddenElementRef:I,rootProps:Xe,listProps:Qe,filterProps:je,firstHiddenProps:We,lastHiddenProps:Je,getOptions:r,getOptionId:M,getOptionLabel:U,getOptionValue:p,isOptionDisabled:D,isOptionGroup:N,getOptionGroupLabel:Z,getOptionGroupChildren:B,getFocusedOptionId:x,onOptionSelect:J,onOptionTouchEnd:Le,onClearClick:Te,isOptionMatched:W,isValidOption:O,isValidSelectedOption:S,isSelected:j,changeFocusedOptionIndex:H,findSelectedOptionIndex:fe,findFirstFocusedOptionIndex:C,scrollInView:V,updateModel:P,autoUpdateModel:ee,equalityKey:he,hasValue:R,isEquals:A}}});import{withHeadless as fn}from"@primereact/core/headless";import*as xe from"react";var Ke={option:void 0,index:void 0,group:!1,disabled:void 0,context:void 0};var kn=fn({name:"useListboxOption",defaultProps:Ke,setup({props:c}){var I,K,m,h,E,r;let n=c.context,u=c.option,b=(I=c.index)!=null?I:-1,F=(K=c.group)!=null?K:!1,a=(m=n==null?void 0:n.isSelected(u))!=null?m:!1,f=((h=n==null?void 0:n.state)==null?void 0:h.focusedOptionIndex)===b,l=(r=(E=c.disabled)!=null?E:n==null?void 0:n.isOptionDisabled(u))!=null?r:!1,X={selected:a,focused:f,disabled:l,group:F},Y=xe.useMemo(()=>{var x,$,q;if(F)return{};let M=(x=n==null?void 0:n.getOptions())!=null?x:[],U=M.filter(y=>!(n!=null&&n.isOptionGroup(y))).length,p=(($=n==null?void 0:n.props)!=null&&$.optionGroupLabel?b-(M.slice(0,b).filter(y=>n==null?void 0:n.isOptionGroup(y)).length||0):b)+1,D=y=>n==null?void 0:n.onOptionSelect(y,u,b),N=y=>{n==null||n.changeFocusedOptionIndex(y,b)},Z=y=>{var _,z;(_=n==null?void 0:n.props)!=null&&_.focusOnHover&&((z=n==null?void 0:n.state)!=null&&z.focused)&&(n==null||n.changeFocusedOptionIndex(y,b))},B=()=>n==null?void 0:n.onOptionTouchEnd();return we(ne(ne({id:(q=n==null?void 0:n.getOptionId(b))!=null?q:"",role:"option","aria-selected":a,"aria-disabled":l,"aria-setsize":U,"aria-posinset":p,[a?"data-selected":"data-unselected"]:""},l&&{"data-disabled":""}),f&&{"data-focused":""}),{"data-scope":"listbox","data-part":"option",onClick:D,onMouseDown:N,onMouseMove:Z,onTouchEnd:B})},[n,u,b,a,l,f,F]),k={role:"presentation","data-scope":"listbox","data-part":"optionGroup"},w={"aria-hidden":!0,"data-scope":"listbox","data-part":"optionindicator",[a?"data-selected":"data-unselected"]:""};return{state:X,optionProps:Y,groupProps:k,optionIndicatorProps:w}}});export{Ke as defaultOptionProps,Ie as defaultProps,On as useListbox,kn as useListboxOption};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/listbox/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/listbox/useListbox.ts","../../src/listbox/useListbox.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isElement, isNotEmpty, isPrintableCharacter, isString, resolveFieldData } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useListbox.props';\n\nexport const useListbox = withHeadless({\n name: 'useListbox',\n defaultProps,\n setup({ id, props, elementRef }) {\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n const [focusedOptionIndexState, setFocusedOptionIndexState] = React.useState<number>(-1);\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue ?? null,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState,\n focused: focusedState,\n focusedOptionIndex: focusedOptionIndexState\n };\n\n // element refs\n const listRef = React.useRef<HTMLElement>(null);\n const firstHiddenFocusableRef = React.useRef<HTMLElement>(null);\n const lastHiddenFocusableRef = React.useRef<HTMLElement>(null);\n\n // refs\n const optionTouched = React.useRef<boolean>(false);\n const startRangeIndex = React.useRef<number>(-1);\n const searchTimeout = React.useRef<NodeJS.Timeout | null>(null);\n const searchValue = React.useRef<string>('');\n\n const getOptions = () => {\n return visibleOptions || [];\n };\n\n const getOptionId = (index: number) => {\n return `${id}_${index}`;\n };\n\n const getOptionLabel = (option: unknown) => {\n return props.optionLabel ? resolveFieldData(option, props.optionLabel) : isString(option) ? option : null;\n };\n\n const getOptionValue = (option: unknown) => {\n return props.optionValue ? resolveFieldData(option, props.optionValue) : option;\n };\n\n const isOptionDisabled = (option: unknown) => {\n return props.optionDisabled ? resolveFieldData(option, props.optionDisabled) : false;\n };\n\n const isOptionGroup = (option: unknown) => {\n return !!(props.optionGroupLabel && (option as Record<string, unknown>)?.optionGroup && (option as Record<string, unknown>)?.group);\n };\n\n const getOptionGroupLabel = (optionGroup: unknown) => {\n return props.optionGroupLabel ? resolveFieldData(optionGroup, props.optionGroupLabel) : isString(optionGroup) ? optionGroup : null;\n };\n\n const getOptionGroupChildren = (optionGroup: unknown) => {\n return props.optionGroupChildren ? resolveFieldData(optionGroup, props.optionGroupChildren) : null;\n };\n\n const getFocusedOptionId = () => {\n return focusedOptionIndexState !== -1 ? getOptionId(focusedOptionIndexState!) : null;\n };\n\n const getAriaSetSize = () => {\n return getOptions().filter((option: unknown) => !isOptionGroup(option)).length;\n };\n\n const getAriaPosInset = (index: number) => {\n return (\n (props.optionGroupLabel\n ? index -\n (getOptions()\n .slice(0, index)\n .filter((option: unknown) => isOptionGroup(option)).length || 0)\n : index) + 1\n );\n };\n\n const onFirstHiddenFocus = () => {\n focus(listRef.current!);\n\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-p-hidden-focusable=\"true\"])');\n\n if (lastHiddenFocusableRef.current) {\n lastHiddenFocusableRef.current.tabIndex = isElement(firstFocusableEl) ? 0 : -1;\n }\n\n if (firstHiddenFocusableRef.current) {\n firstHiddenFocusableRef.current.tabIndex = -1;\n }\n };\n\n const onLastHiddenFocus = (event: React.FocusEvent) => {\n const relatedTarget = event.relatedTarget;\n\n if (relatedTarget === listRef.current) {\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-p-hidden-focusable=\"true\"])');\n\n if (firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n\n if (firstHiddenFocusableRef.current) {\n firstHiddenFocusableRef.current.tabIndex = 0;\n }\n } else {\n focus(firstHiddenFocusableRef.current!);\n }\n\n if (lastHiddenFocusableRef.current) {\n lastHiddenFocusableRef.current.tabIndex = -1;\n }\n };\n\n const onFocusOut = (event: React.FocusEvent) => {\n const elementContains = elementRef.current instanceof HTMLElement && elementRef.current.contains(event.relatedTarget as Node);\n\n if (!elementContains && lastHiddenFocusableRef.current && firstHiddenFocusableRef.current) {\n lastHiddenFocusableRef.current.tabIndex = 0;\n firstHiddenFocusableRef.current.tabIndex = 0;\n }\n };\n\n const onListFocus = () => {\n const focusedOptionIndex = focusedOptionIndexState !== -1 ? focusedOptionIndexState : props.autoOptionFocus ? findFirstFocusedOptionIndex() : findSelectedOptionIndex();\n\n setFocusedState(true);\n setFocusedOptionIndexState(focusedOptionIndex);\n\n autoUpdateModel();\n scrollInView(focusedOptionIndex);\n };\n\n const onListBlur = () => {\n setFocusedState(false);\n setFocusedOptionIndexState(-1);\n\n startRangeIndex.current = -1;\n searchValue.current = '';\n };\n\n const onListKeyDown = (event: React.KeyboardEvent) => {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'Home':\n onHomeKey(event);\n break;\n\n case 'End':\n onEndKey(event);\n break;\n\n case 'PageDown':\n onPageDownKey(event);\n break;\n\n case 'PageUp':\n onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onSpaceKey(event);\n break;\n\n case 'Tab':\n //NOOP\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n if (props.multiple && event.code === 'KeyA' && metaKey) {\n const value = getOptions()\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n\n event.preventDefault();\n break;\n }\n\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchOptions(event, event.key);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onOptionSelect = (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index = -1) => {\n if (props.disabled || isOptionDisabled(option)) {\n return;\n }\n\n if (props.multiple) {\n onOptionSelectMultiple(event, option);\n } else {\n onOptionSelectSingle(event, option);\n }\n\n optionTouched.current = false;\n\n if (index !== -1) {\n setFocusedOptionIndexState(index);\n }\n };\n\n const onOptionMouseDown = (event: React.MouseEvent, index: number) => {\n changeFocusedOptionIndex(event, index);\n };\n\n const onOptionMouseMove = (event: React.MouseEvent, index: number) => {\n if (props.focusOnHover && focusedState) {\n changeFocusedOptionIndex(event, index);\n }\n };\n\n const onOptionTouchEnd = () => {\n if (props.disabled) {\n return;\n }\n\n optionTouched.current = true;\n };\n\n const onOptionSelectSingle = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let valueChanged = false;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event && (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n } else {\n value = getOptionValue(option);\n valueChanged = true;\n }\n } else {\n value = selected ? null : getOptionValue(option);\n valueChanged = true;\n }\n\n if (valueChanged) {\n updateModel(event, value);\n }\n };\n\n const onOptionSelectMultiple = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event.metaKey || event.ctrlKey;\n\n if (selected) {\n value = metaKey ? removeOption(option) : [getOptionValue(option)];\n } else {\n value = metaKey ? (Array.isArray(valueState) ? valueState : []) : [];\n value = [...value, getOptionValue(option)];\n }\n } else {\n value = selected ? removeOption(option) : [...(Array.isArray(valueState) ? valueState : []), getOptionValue(option)];\n }\n\n updateModel(event, value);\n };\n\n const onOptionSelectRange = (event: React.MouseEvent | React.KeyboardEvent, start = -1, end = -1) => {\n start = start === -1 ? findNearestSelectedOptionIndex(end, true) : start;\n end = end === -1 ? findNearestSelectedOptionIndex(start) : end;\n\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = getOptions()\n .slice(rangeStart, rangeEnd + 1)\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n }\n };\n\n const onFilterChange = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterBlur = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n onArrowLeftKey(event, true);\n break;\n\n case 'Home':\n onHomeKey(event, true);\n break;\n\n case 'End':\n onEndKey(event, true);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n onEnterKey(event);\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n break;\n }\n };\n\n const onArrowDownKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findNextOptionIndex(focusedOptionIndexState) : findFirstFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowUpKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findPrevOptionIndex(focusedOptionIndexState) : findLastFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowLeftKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n setFocusedOptionIndexState(-1);\n }\n };\n\n const onHomeKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n\n if (event.shiftKey) {\n target?.setSelectionRange(0, target.selectionStart);\n } else {\n target?.setSelectionRange(0, 0);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findFirstOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onEndKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n const length = target.value.length;\n\n if (event.shiftKey) {\n target.setSelectionRange(target.selectionStart, length);\n } else {\n target.setSelectionRange(length, length);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findLastOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onPageUpKey = (event: React.KeyboardEvent) => {\n scrollInView(0);\n event.preventDefault();\n };\n\n const onPageDownKey = (event: React.KeyboardEvent) => {\n scrollInView(getOptions().length - 1);\n event.preventDefault();\n };\n\n const onEnterKey = (event: React.KeyboardEvent) => {\n if (focusedOptionIndexState !== -1) {\n if (props.multiple && event.shiftKey) onOptionSelectRange(event, focusedOptionIndexState);\n else onOptionSelect(event, getOptions()[focusedOptionIndexState!]);\n }\n };\n\n const onSpaceKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n onEnterKey(event);\n };\n\n const onShiftKey = () => {\n startRangeIndex.current = focusedOptionIndexState!;\n };\n\n const isOptionMatched = (option: unknown) => {\n return isValidOption(option) && getOptionLabel(option)?.toLocaleLowerCase(props.locale).startsWith(searchValue.current?.toLocaleLowerCase(props.locale));\n };\n\n const isValidOption = (option: unknown) => {\n return isNotEmpty(option) && !isOptionDisabled(option) && !isOptionGroup(option);\n };\n\n const isValidSelectedOption = (option: unknown) => {\n return isValidOption(option) && isSelected(option);\n };\n\n const isEquals = (value1: unknown, value2: unknown) => {\n return equals(value1, value2, equalityKey);\n };\n\n const isSelected = (option: unknown) => {\n const optionValue = getOptionValue(option);\n\n if (props.multiple) {\n return Array.isArray(valueState) && valueState.some((value: unknown) => isEquals(value, optionValue));\n } else {\n return isEquals(valueState, optionValue);\n }\n };\n\n const findFirstOptionIndex = () => {\n return getOptions().findIndex((option: unknown) => isValidOption(option));\n };\n\n const findLastOptionIndex = () => {\n return findLastIndex(getOptions(), (option: unknown) => isValidOption(option));\n };\n\n const findNextOptionIndex = (index: number) => {\n const matchedOptionIndex =\n index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option: unknown) => isValidOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n };\n\n const findPrevOptionIndex = (index: number) => {\n const matchedOptionIndex = index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findSelectedOptionIndex = () => {\n if (hasValue()) {\n if (props.multiple && Array.isArray(valueState)) {\n for (let index = valueState.length - 1; index >= 0; index--) {\n const value = valueState[index];\n const matchedOptionIndex = getOptions().findIndex((option: unknown) => isValidSelectedOption(option) && isEquals(value, getOptionValue(option)));\n\n if (matchedOptionIndex > -1) return matchedOptionIndex;\n }\n } else {\n return getOptions().findIndex((option: unknown) => isValidSelectedOption(option));\n }\n }\n\n return -1;\n };\n\n const findFirstSelectedOptionIndex = () => {\n return hasValue() ? getOptions().findIndex((option) => isValidSelectedOption(option)) : -1;\n };\n\n const findLastSelectedOptionIndex = () => {\n return hasValue() ? findLastIndex(getOptions(), (option) => isValidSelectedOption(option)) : -1;\n };\n\n const findNextSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex =\n hasValue() && index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option) => isValidSelectedOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n };\n\n const findPrevSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex = hasValue() && index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n };\n\n const findNearestSelectedOptionIndex = (index: number, firstCheckUp = false) => {\n let matchedOptionIndex = -1;\n\n if (hasValue()) {\n if (firstCheckUp) {\n matchedOptionIndex = findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findNextSelectedOptionIndex(index) : matchedOptionIndex;\n } else {\n matchedOptionIndex = findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findFirstFocusedOptionIndex = () => {\n const selectedIndex = findFirstSelectedOptionIndex();\n\n return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;\n };\n\n const findLastFocusedOptionIndex = () => {\n const selectedIndex = findLastSelectedOptionIndex();\n\n return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;\n };\n\n const searchOptions = (event: React.KeyboardEvent, char: string) => {\n searchValue.current = (searchValue.current || '') + char;\n\n let optionIndex = -1;\n\n if (isNotEmpty(searchValue.current)) {\n if (focusedOptionIndexState !== -1) {\n optionIndex = getOptions()\n .slice(focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option));\n optionIndex =\n optionIndex === -1\n ? getOptions()\n .slice(0, focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option))\n : optionIndex + focusedOptionIndexState;\n } else {\n optionIndex = getOptions().findIndex((option: unknown) => isOptionMatched(option));\n }\n\n if (optionIndex === -1 && focusedOptionIndexState === -1) {\n optionIndex = findFirstFocusedOptionIndex() ?? -1;\n }\n\n if (optionIndex !== -1) {\n changeFocusedOptionIndex(event, optionIndex);\n }\n }\n\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n }\n\n searchTimeout.current = setTimeout(() => {\n searchValue.current = '';\n searchTimeout.current = null;\n }, 500);\n };\n\n const removeOption = (option: unknown) => {\n return Array.isArray(valueState) ? valueState.filter((val: unknown) => !isEquals(val, getOptionValue(option))) : [];\n };\n\n const changeFocusedOptionIndex = (event: React.MouseEvent | React.KeyboardEvent, index: number = -1) => {\n if (focusedOptionIndexState !== index) {\n setFocusedOptionIndexState(index);\n\n scrollInView();\n\n if (props.selectOnFocus && !props.multiple) {\n onOptionSelect(event, getOptions()[index]);\n }\n }\n };\n\n const nextFrame = (): Promise<void> => {\n return new Promise((resolve) => {\n requestAnimationFrame(() => {\n requestAnimationFrame(resolve as () => void);\n });\n });\n };\n\n const scrollInView = (index = -1) => {\n nextFrame().then(() => {\n const id = index !== -1 ? getOptionId(index) : getFocusedOptionId();\n const element = findSingle(listRef.current!, `[id=\"${id}\"]`);\n\n element?.scrollIntoView?.({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n });\n };\n\n const autoUpdateModel = () => {\n if (props.selectOnFocus && props.autoOptionFocus && !hasValue() && !props.multiple && focusedState) {\n const focusedOptionIndex = findFirstFocusedOptionIndex();\n\n setFocusedOptionIndexState(focusedOptionIndex);\n onOptionSelect(null as unknown as React.MouseEvent, getOptions()[focusedOptionIndex!]);\n }\n };\n\n const updateModel = (event: React.SyntheticEvent, value: unknown) => {\n setValueState([\n value,\n {\n originalEvent: event,\n value: value\n }\n ]);\n };\n\n const hasValue = () => {\n return isNotEmpty(valueState);\n };\n\n // effects\n React.useEffect(() => {\n autoUpdateModel();\n\n return () => {\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n searchTimeout.current = null;\n }\n };\n }, []);\n\n // computed\n const optionsListGroup = React.useMemo(() => {\n const flattenOptions: unknown[] = [];\n\n (props.options || []).forEach((optionGroup) => {\n const optionGroupChildren = getOptionGroupChildren(optionGroup) || [];\n\n if (optionGroupChildren?.length) {\n flattenOptions.push({ optionGroup, group: true }, ...optionGroupChildren);\n }\n });\n\n return flattenOptions;\n }, [props.options]);\n\n const visibleOptions = props.optionGroupLabel ? optionsListGroup : props.options;\n const equalityKey = props.optionValue ? undefined : props.optionKey;\n\n return {\n state,\n // element refs\n listRef,\n firstHiddenFocusableRef,\n lastHiddenFocusableRef,\n // methods\n getOptions,\n getOptionId,\n getOptionLabel,\n getOptionValue,\n isOptionDisabled,\n isOptionGroup,\n getOptionGroupLabel,\n getOptionGroupChildren,\n getFocusedOptionId,\n getAriaSetSize,\n getAriaPosInset,\n onFirstHiddenFocus,\n onLastHiddenFocus,\n onFocusOut,\n onListFocus,\n onListBlur,\n onListKeyDown,\n onOptionSelect,\n onOptionMouseDown,\n onOptionMouseMove,\n onOptionTouchEnd,\n onFilterChange,\n onFilterBlur,\n onFilterKeyDown,\n isOptionMatched,\n isValidOption,\n isValidSelectedOption,\n isSelected,\n changeFocusedOptionIndex,\n scrollInView,\n updateModel,\n autoUpdateModel,\n equalityKey,\n hasValue\n };\n }\n});\n","import type { useListboxProps } from '@primereact/types/shared/listbox';\n\nexport const defaultProps: useListboxProps = {\n value: undefined,\n defaultValue: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n disabled: false,\n locale: undefined,\n multiple: false,\n metaKeySelection: false,\n autoOptionFocus: true,\n selectOnFocus: false,\n focusOnHover: true,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","equals","findLastIndex","findSingle","focus","getFirstFocusableElement","isElement","isNotEmpty","isPrintableCharacter","isString","resolveFieldData","React","defaultProps","useListbox","withHeadless","defaultProps","id","props","elementRef","_a","focusedState","setFocusedState","focusedOptionIndexState","setFocusedOptionIndexState","valueState","setValueState","useControlledState","state","listRef","firstHiddenFocusableRef","lastHiddenFocusableRef","optionTouched","startRangeIndex","searchTimeout","searchValue","getOptions","visibleOptions","getOptionId","index","getOptionLabel","option","resolveFieldData","isString","getOptionValue","isOptionDisabled","isOptionGroup","getOptionGroupLabel","optionGroup","getOptionGroupChildren","getFocusedOptionId","getAriaSetSize","getAriaPosInset","onFirstHiddenFocus","focus","firstFocusableEl","getFirstFocusableElement","isElement","onLastHiddenFocus","event","onFocusOut","onListFocus","focusedOptionIndex","findFirstFocusedOptionIndex","findSelectedOptionIndex","autoUpdateModel","scrollInView","onListBlur","onListKeyDown","metaKey","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onSpaceKey","onShiftKey","value","isValidOption","updateModel","isPrintableCharacter","searchOptions","onOptionSelect","onOptionSelectMultiple","onOptionSelectSingle","onOptionMouseDown","changeFocusedOptionIndex","onOptionMouseMove","onOptionTouchEnd","selected","isSelected","metaSelection","valueChanged","removeOption","onOptionSelectRange","start","end","findNearestSelectedOptionIndex","rangeStart","rangeEnd","onFilterChange","onFilterBlur","onFilterKeyDown","onArrowLeftKey","onEnterKey","optionIndex","findNextOptionIndex","findPrevOptionIndex","findLastFocusedOptionIndex","pressedInInputText","target","findFirstOptionIndex","length","findLastOptionIndex","isOptionMatched","_b","isNotEmpty","isValidSelectedOption","isEquals","value1","value2","equals","equalityKey","optionValue","findLastIndex","matchedOptionIndex","hasValue","findFirstSelectedOptionIndex","findLastSelectedOptionIndex","findNextSelectedOptionIndex","findPrevSelectedOptionIndex","firstCheckUp","selectedIndex","char","val","nextFrame","resolve","element","findSingle","optionsListGroup","flattenOptions","optionGroupChildren"]}
|
|
1
|
+
{"version":3,"sources":["../../src/listbox/useListbox.ts","../../src/listbox/useListbox.props.ts","../../src/listbox/useListboxOption.ts","../../src/listbox/useListboxOption.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isElement, isNotEmpty, isNumber, isPrintableCharacter, isString, nextFrame, resolveFieldData, toElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useListbox.props';\n\nexport const useListbox = withHeadless({\n name: 'useListbox',\n defaultProps,\n setup({ id, props, elementRef }) {\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n const [focusedOptionIndexState, setFocusedOptionIndexState] = React.useState<number>(-1);\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue ?? null,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState,\n focused: focusedState,\n focusedOptionIndex: focusedOptionIndexState\n };\n\n // element refs\n const listRef = React.useRef<HTMLUListElement>(null);\n const firstHiddenElementRef = React.useRef<HTMLElement>(null);\n const lastHiddenElementRef = React.useRef<HTMLElement>(null);\n\n // refs\n const optionTouched = React.useRef<boolean>(false);\n const startRangeIndex = React.useRef<number>(-1);\n const searchTimeout = React.useRef<NodeJS.Timeout | null>(null);\n const searchValue = React.useRef<string>('');\n\n const getOptions = () => {\n return visibleOptions || [];\n };\n\n const getOptionId = (index: number) => {\n return `${id}_${index}`;\n };\n\n const getOptionLabel = (option: unknown) => {\n return props.optionLabel ? resolveFieldData(option, props.optionLabel) : isString(option) || isNumber(option) ? option : null;\n };\n\n const getOptionValue = (option: unknown) => {\n return props.optionValue ? resolveFieldData(option, props.optionValue) : option;\n };\n\n const isOptionDisabled = (option: unknown) => {\n return props.optionDisabled ? resolveFieldData(option, props.optionDisabled) : false;\n };\n\n const isOptionGroup = (option: unknown) => {\n return !!(props.optionGroupLabel && (option as Record<string, unknown>)?.optionGroup && (option as Record<string, unknown>)?.group);\n };\n\n const getOptionGroupLabel = (optionGroup: unknown) => {\n return props.optionGroupLabel ? resolveFieldData(optionGroup, props.optionGroupLabel) : isString(optionGroup) ? optionGroup : null;\n };\n\n const getOptionGroupChildren = (optionGroup: unknown) => {\n return props.optionGroupChildren ? resolveFieldData(optionGroup, props.optionGroupChildren) : null;\n };\n\n const getFocusedOptionId = () => {\n return focusedOptionIndexState !== -1 ? getOptionId(focusedOptionIndexState!) : undefined;\n };\n\n const onFirstHiddenFocus = () => {\n focus(listRef.current!);\n\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-focus-guard])');\n\n const lastHiddenEl = toElement(lastHiddenElementRef);\n\n if (lastHiddenEl) {\n lastHiddenEl.tabIndex = isElement(firstFocusableEl) ? 0 : -1;\n }\n\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (firstHiddenEl) {\n firstHiddenEl.tabIndex = -1;\n }\n };\n\n const onLastHiddenFocus = (event: React.FocusEvent) => {\n const relatedTarget = event.relatedTarget;\n\n if (relatedTarget === listRef.current) {\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-focus-guard])');\n\n if (firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (firstHiddenEl) {\n firstHiddenEl.tabIndex = 0;\n }\n } else {\n focus(toElement(firstHiddenElementRef)!);\n }\n\n const lastHiddenEl = toElement(lastHiddenElementRef);\n\n if (lastHiddenEl) {\n lastHiddenEl.tabIndex = -1;\n }\n };\n\n const onFocusOut = (event: React.FocusEvent) => {\n const elementContains = elementRef.current instanceof HTMLElement && elementRef.current.contains(event.relatedTarget as Node);\n const lastHiddenEl = toElement(lastHiddenElementRef);\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (!elementContains && lastHiddenEl && firstHiddenEl) {\n lastHiddenEl.tabIndex = 0;\n firstHiddenEl.tabIndex = 0;\n }\n };\n\n const onListFocus = (event?: React.FocusEvent) => {\n const dndIndex = (event?.currentTarget as HTMLElement | null)?.dataset?.dndFocusIndex;\n const focusedOptionIndex = dndIndex !== undefined ? parseInt(dndIndex, 10) : focusedOptionIndexState !== -1 ? focusedOptionIndexState : props.autoOptionFocus ? findFirstFocusedOptionIndex() : findSelectedOptionIndex();\n\n setFocusedState(true);\n setFocusedOptionIndexState(focusedOptionIndex);\n\n autoUpdateModel();\n scrollInView(focusedOptionIndex);\n };\n\n const onListBlur = () => {\n setFocusedState(false);\n setFocusedOptionIndexState(-1);\n\n startRangeIndex.current = -1;\n searchValue.current = '';\n };\n\n const onListKeyDown = (event: React.KeyboardEvent) => {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'Home':\n onHomeKey(event);\n break;\n\n case 'End':\n onEndKey(event);\n break;\n\n case 'PageDown':\n onPageDownKey(event);\n break;\n\n case 'PageUp':\n onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onSpaceKey(event);\n break;\n\n case 'Tab':\n //NOOP\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n if (props.multiple && event.code === 'KeyA' && metaKey) {\n const value = getOptions()\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n\n event.preventDefault();\n break;\n }\n\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchOptions(event, event.key);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onOptionSelect = (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index = -1) => {\n if (props.disabled || isOptionDisabled(option)) {\n return;\n }\n\n if (props.multiple) {\n onOptionSelectMultiple(event, option);\n } else {\n onOptionSelectSingle(event, option);\n }\n\n optionTouched.current = false;\n\n if (index !== -1) {\n setFocusedOptionIndexState(index);\n }\n };\n\n const onOptionTouchEnd = () => {\n if (props.disabled) {\n return;\n }\n\n optionTouched.current = true;\n };\n\n const onOptionSelectSingle = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let valueChanged = false;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event && (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n } else {\n value = getOptionValue(option);\n valueChanged = true;\n }\n } else {\n value = selected ? null : getOptionValue(option);\n valueChanged = true;\n }\n\n if (valueChanged) {\n updateModel(event, value);\n }\n };\n\n const onOptionSelectMultiple = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event.metaKey || event.ctrlKey;\n\n if (selected) {\n value = metaKey ? removeOption(option) : [getOptionValue(option)];\n } else {\n value = metaKey ? (Array.isArray(valueState) ? valueState : []) : [];\n value = [...value, getOptionValue(option)];\n }\n } else {\n value = selected ? removeOption(option) : [...(Array.isArray(valueState) ? valueState : []), getOptionValue(option)];\n }\n\n updateModel(event, value);\n };\n\n const onOptionSelectRange = (event: React.MouseEvent | React.KeyboardEvent, start = -1, end = -1) => {\n start = start === -1 ? findNearestSelectedOptionIndex(end, true) : start;\n end = end === -1 ? findNearestSelectedOptionIndex(start) : end;\n\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = getOptions()\n .slice(rangeStart, rangeEnd + 1)\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n }\n };\n\n const onFilterChange = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterBlur = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n onArrowLeftKey(event, true);\n break;\n\n case 'Home':\n onHomeKey(event, true);\n break;\n\n case 'End':\n onEndKey(event, true);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n onEnterKey(event);\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n break;\n }\n };\n\n const onClearClick = (event: React.MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n updateModel(event, props.multiple ? [] : null);\n };\n\n const onArrowDownKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findNextOptionIndex(focusedOptionIndexState) : findFirstFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowUpKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findPrevOptionIndex(focusedOptionIndexState) : findLastFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowLeftKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n setFocusedOptionIndexState(-1);\n }\n };\n\n const onHomeKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n\n if (event.shiftKey) {\n target?.setSelectionRange(0, target.selectionStart);\n } else {\n target?.setSelectionRange(0, 0);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findFirstOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onEndKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n const length = target.value.length;\n\n if (event.shiftKey) {\n target.setSelectionRange(target.selectionStart, length);\n } else {\n target.setSelectionRange(length, length);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findLastOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onPageUpKey = (event: React.KeyboardEvent) => {\n scrollInView(0);\n event.preventDefault();\n };\n\n const onPageDownKey = (event: React.KeyboardEvent) => {\n scrollInView(getOptions().length - 1);\n event.preventDefault();\n };\n\n const onEnterKey = (event: React.KeyboardEvent) => {\n if (focusedOptionIndexState !== -1) {\n if (props.multiple && event.shiftKey) onOptionSelectRange(event, focusedOptionIndexState);\n else onOptionSelect(event, getOptions()[focusedOptionIndexState!]);\n }\n };\n\n const onSpaceKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n onEnterKey(event);\n };\n\n const onShiftKey = () => {\n startRangeIndex.current = focusedOptionIndexState!;\n };\n\n const isOptionMatched = (option: unknown) => {\n return isValidOption(option) && getOptionLabel(option)?.toLocaleLowerCase(props.locale).startsWith(searchValue.current?.toLocaleLowerCase(props.locale));\n };\n\n const isValidOption = (option: unknown) => {\n return isNotEmpty(option) && !isOptionDisabled(option) && !isOptionGroup(option);\n };\n\n const isValidSelectedOption = (option: unknown) => {\n return isValidOption(option) && isSelected(option);\n };\n\n const isEquals = (value1: unknown, value2: unknown) => {\n return equals(value1, value2, equalityKey);\n };\n\n const isSelected = (option: unknown) => {\n const optionValue = getOptionValue(option);\n\n if (props.multiple) {\n return Array.isArray(valueState) && valueState.some((value: unknown) => isEquals(value, optionValue));\n } else {\n return isEquals(valueState, optionValue);\n }\n };\n\n const findFirstOptionIndex = () => {\n return getOptions().findIndex((option: unknown) => isValidOption(option));\n };\n\n const findLastOptionIndex = () => {\n return findLastIndex(getOptions(), (option: unknown) => isValidOption(option));\n };\n\n const findNextOptionIndex = (index: number) => {\n const matchedOptionIndex =\n index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option: unknown) => isValidOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n };\n\n const findPrevOptionIndex = (index: number) => {\n const matchedOptionIndex = index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findSelectedOptionIndex = () => {\n if (hasValue()) {\n if (props.multiple && Array.isArray(valueState)) {\n for (let index = valueState.length - 1; index >= 0; index--) {\n const value = valueState[index];\n const matchedOptionIndex = getOptions().findIndex((option: unknown) => isValidSelectedOption(option) && isEquals(value, getOptionValue(option)));\n\n if (matchedOptionIndex > -1) return matchedOptionIndex;\n }\n } else {\n return getOptions().findIndex((option: unknown) => isValidSelectedOption(option));\n }\n }\n\n return -1;\n };\n\n const findFirstSelectedOptionIndex = () => {\n return hasValue() ? getOptions().findIndex((option) => isValidSelectedOption(option)) : -1;\n };\n\n const findLastSelectedOptionIndex = () => {\n return hasValue() ? findLastIndex(getOptions(), (option) => isValidSelectedOption(option)) : -1;\n };\n\n const findNextSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex =\n hasValue() && index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option) => isValidSelectedOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n };\n\n const findPrevSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex = hasValue() && index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n };\n\n const findNearestSelectedOptionIndex = (index: number, firstCheckUp = false) => {\n let matchedOptionIndex = -1;\n\n if (hasValue()) {\n if (firstCheckUp) {\n matchedOptionIndex = findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findNextSelectedOptionIndex(index) : matchedOptionIndex;\n } else {\n matchedOptionIndex = findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findFirstFocusedOptionIndex = () => {\n const selectedIndex = findFirstSelectedOptionIndex();\n\n return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;\n };\n\n const findLastFocusedOptionIndex = () => {\n const selectedIndex = findLastSelectedOptionIndex();\n\n return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;\n };\n\n const searchOptions = (event: React.KeyboardEvent, char: string) => {\n searchValue.current = (searchValue.current || '') + char;\n\n let optionIndex = -1;\n\n if (isNotEmpty(searchValue.current)) {\n if (focusedOptionIndexState !== -1) {\n optionIndex = getOptions()\n .slice(focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option));\n optionIndex =\n optionIndex === -1\n ? getOptions()\n .slice(0, focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option))\n : optionIndex + focusedOptionIndexState;\n } else {\n optionIndex = getOptions().findIndex((option: unknown) => isOptionMatched(option));\n }\n\n if (optionIndex === -1 && focusedOptionIndexState === -1) {\n optionIndex = findFirstFocusedOptionIndex() ?? -1;\n }\n\n if (optionIndex !== -1) {\n changeFocusedOptionIndex(event, optionIndex);\n }\n }\n\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n }\n\n searchTimeout.current = setTimeout(() => {\n searchValue.current = '';\n searchTimeout.current = null;\n }, 500);\n };\n\n const removeOption = (option: unknown) => {\n return Array.isArray(valueState) ? valueState.filter((val: unknown) => !isEquals(val, getOptionValue(option))) : [];\n };\n\n const changeFocusedOptionIndex = (event: React.MouseEvent | React.KeyboardEvent, index: number = -1) => {\n if (focusedOptionIndexState !== index) {\n setFocusedOptionIndexState(index);\n\n scrollInView(index);\n\n if (props.selectOnFocus && !props.multiple && index !== -1) {\n onOptionSelect(event, getOptions()[index]);\n }\n }\n };\n\n const scrollInView = (index = -1) => {\n nextFrame().then(() => {\n const id = index !== -1 ? getOptionId(index) : getFocusedOptionId();\n const element = findSingle(listRef.current!, `[id=\"${id}\"]`);\n\n element?.scrollIntoView?.({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n });\n };\n\n const autoUpdateModel = () => {\n if (props.selectOnFocus && props.autoOptionFocus && !hasValue() && !props.multiple && focusedState) {\n const focusedOptionIndex = findFirstFocusedOptionIndex();\n\n setFocusedOptionIndexState(focusedOptionIndex);\n onOptionSelect(null as unknown as React.MouseEvent, getOptions()[focusedOptionIndex!]);\n }\n };\n\n const updateModel = (event: React.SyntheticEvent, value: unknown) => {\n setValueState([\n value,\n {\n originalEvent: event,\n value: value\n }\n ]);\n };\n\n const hasValue = () => {\n return isNotEmpty(valueState);\n };\n\n // effects\n React.useEffect(() => {\n autoUpdateModel();\n\n return () => {\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n searchTimeout.current = null;\n }\n };\n }, []);\n\n // computed\n const optionsListGroup = React.useMemo(() => {\n const flattenOptions: unknown[] = [];\n\n (props.options || []).forEach((optionGroup) => {\n const optionGroupChildren = getOptionGroupChildren(optionGroup) || [];\n\n if (optionGroupChildren?.length) {\n flattenOptions.push({ optionGroup, group: true }, ...optionGroupChildren);\n }\n });\n\n return flattenOptions;\n }, [props.options]);\n\n const visibleOptions = props.optionGroupLabel ? optionsListGroup : props.options;\n const equalityKey = props.optionValue ? undefined : props.optionKey;\n\n const lastHiddenProps = {\n role: 'presentation' as const,\n ref: lastHiddenElementRef,\n 'aria-hidden': true as const,\n 'data-focus-guard': '' as const,\n onFocus: onLastHiddenFocus\n };\n\n const firstHiddenProps = {\n role: 'presentation' as const,\n ref: firstHiddenElementRef,\n 'aria-hidden': true as const,\n 'data-focus-guard': '' as const,\n onFocus: onFirstHiddenFocus\n };\n\n const filterProps = {\n role: 'searchbox' as const,\n autoComplete: 'off' as const,\n disabled: props.disabled,\n tabIndex: undefined as number | undefined,\n 'aria-owns': id ? `${id}_list` : undefined,\n 'aria-activedescendant': getFocusedOptionId(),\n 'data-scope': 'listbox',\n 'data-part': 'filter',\n onBlur: onFilterBlur,\n onChange: onFilterChange,\n onKeyDown: onFilterKeyDown\n };\n\n const listProps = {\n id: `${id}_list`,\n role: 'listbox' as const,\n ref: listRef,\n tabIndex: -1,\n 'aria-activedescendant': focusedState ? getFocusedOptionId() : undefined,\n 'data-scope': 'listbox',\n 'data-part': 'list',\n onFocus: onListFocus,\n onBlur: onListBlur,\n onKeyDown: onListKeyDown\n };\n\n const rootProps = {\n id,\n 'data-scope': 'listbox',\n 'data-part': 'root',\n 'data-disabled': props.disabled || undefined,\n 'data-invalid': props.invalid || undefined,\n onBlur: onFocusOut\n };\n\n return {\n state,\n // element refs\n listRef,\n firstHiddenElementRef,\n lastHiddenElementRef,\n // prop getters\n rootProps,\n listProps,\n filterProps,\n firstHiddenProps,\n lastHiddenProps,\n // methods\n getOptions,\n getOptionId,\n getOptionLabel,\n getOptionValue,\n isOptionDisabled,\n isOptionGroup,\n getOptionGroupLabel,\n getOptionGroupChildren,\n getFocusedOptionId,\n onOptionSelect,\n onOptionTouchEnd,\n onClearClick,\n isOptionMatched,\n isValidOption,\n isValidSelectedOption,\n isSelected,\n changeFocusedOptionIndex,\n findSelectedOptionIndex,\n findFirstFocusedOptionIndex,\n scrollInView,\n updateModel,\n autoUpdateModel,\n equalityKey,\n hasValue,\n isEquals\n };\n }\n});\n","import type { UseListboxProps } from '@primereact/types/headless/listbox';\n\nexport const defaultProps: UseListboxProps = {\n value: undefined,\n defaultValue: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n disabled: false,\n invalid: false,\n locale: undefined,\n multiple: false,\n metaKeySelection: false,\n autoOptionFocus: true,\n selectOnFocus: false,\n focusOnHover: true,\n tabIndex: undefined,\n onValueChange: undefined\n};\n","import { withHeadless } from '@primereact/core/headless';\nimport type { UseListboxOptionElementProps } from '@primereact/types/headless/listbox';\nimport * as React from 'react';\nimport { defaultOptionProps } from './useListboxOption.props';\n\nexport const useListboxOption = withHeadless({\n name: 'useListboxOption',\n defaultProps: defaultOptionProps,\n setup({ props }) {\n const context = props.context;\n const option = props.option;\n const index = props.index ?? -1;\n const group = props.group ?? false;\n\n const selected = context?.isSelected(option) ?? false;\n const focused = context?.state?.focusedOptionIndex === index;\n const disabled = props.disabled ?? context?.isOptionDisabled(option) ?? false;\n\n const state = {\n selected,\n focused,\n disabled,\n group\n };\n\n const optionProps = React.useMemo(() => {\n if (group) {\n return {} as UseListboxOptionElementProps;\n }\n\n const options = context?.getOptions() ?? [];\n const ariaSetSize = options.filter((opt: unknown) => !context?.isOptionGroup(opt)).length;\n const ariaPosInset = (context?.props?.optionGroupLabel ? index - (options.slice(0, index).filter((opt: unknown) => context?.isOptionGroup(opt)).length || 0) : index) + 1;\n\n const handleClick = (event: React.MouseEvent) => context?.onOptionSelect(event, option, index);\n\n const handleMouseDown = (event: React.MouseEvent) => {\n context?.changeFocusedOptionIndex(event, index);\n };\n\n const handleMouseMove = (event: React.MouseEvent) => {\n if (context?.props?.focusOnHover && context?.state?.focused) {\n context?.changeFocusedOptionIndex(event, index);\n }\n };\n\n const handleTouchEnd = () => context?.onOptionTouchEnd();\n\n return {\n id: context?.getOptionId(index) ?? '',\n role: 'option' as const,\n 'aria-selected': selected,\n 'aria-disabled': disabled,\n 'aria-setsize': ariaSetSize,\n 'aria-posinset': ariaPosInset,\n [selected ? 'data-selected' : 'data-unselected']: '',\n ...(disabled && { 'data-disabled': '' }),\n ...(focused && { 'data-focused': '' }),\n 'data-scope': 'listbox',\n 'data-part': 'option',\n onClick: handleClick,\n onMouseDown: handleMouseDown,\n onMouseMove: handleMouseMove,\n onTouchEnd: handleTouchEnd\n };\n }, [context, option, index, selected, disabled, focused, group]);\n\n const groupProps = {\n role: 'presentation' as const,\n 'data-scope': 'listbox',\n 'data-part': 'optionGroup'\n };\n\n const optionIndicatorProps = {\n 'aria-hidden': true as const,\n 'data-scope': 'listbox',\n 'data-part': 'optionindicator',\n [selected ? 'data-selected' : 'data-unselected']: ''\n };\n\n return {\n state,\n // prop getters\n optionProps,\n groupProps,\n optionIndicatorProps\n };\n }\n});\n","import type { UseListboxOptionProps } from '@primereact/types/headless/listbox';\n\nexport const defaultOptionProps: UseListboxOptionProps = {\n option: undefined,\n index: undefined,\n group: false,\n disabled: undefined,\n context: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","equals","findLastIndex","findSingle","focus","getFirstFocusableElement","isElement","isNotEmpty","isNumber","isPrintableCharacter","isString","nextFrame","resolveFieldData","toElement","React","defaultProps","useListbox","withHeadless","defaultProps","id","props","elementRef","_a","focusedState","setFocusedState","focusedOptionIndexState","setFocusedOptionIndexState","valueState","setValueState","useControlledState","state","listRef","firstHiddenElementRef","lastHiddenElementRef","optionTouched","startRangeIndex","searchTimeout","searchValue","getOptions","visibleOptions","getOptionId","index","getOptionLabel","option","resolveFieldData","isString","isNumber","getOptionValue","isOptionDisabled","isOptionGroup","getOptionGroupLabel","optionGroup","getOptionGroupChildren","getFocusedOptionId","onFirstHiddenFocus","focus","firstFocusableEl","getFirstFocusableElement","lastHiddenEl","toElement","isElement","firstHiddenEl","onLastHiddenFocus","event","onFocusOut","elementContains","onListFocus","_b","dndIndex","focusedOptionIndex","findFirstFocusedOptionIndex","findSelectedOptionIndex","autoUpdateModel","scrollInView","onListBlur","onListKeyDown","metaKey","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onSpaceKey","onShiftKey","value","isValidOption","updateModel","isPrintableCharacter","searchOptions","onOptionSelect","onOptionSelectMultiple","onOptionSelectSingle","onOptionTouchEnd","selected","isSelected","metaSelection","valueChanged","removeOption","onOptionSelectRange","start","end","findNearestSelectedOptionIndex","rangeStart","rangeEnd","onFilterChange","onFilterBlur","onFilterKeyDown","onArrowLeftKey","onEnterKey","onClearClick","optionIndex","findNextOptionIndex","changeFocusedOptionIndex","findPrevOptionIndex","findLastFocusedOptionIndex","pressedInInputText","target","findFirstOptionIndex","length","findLastOptionIndex","isOptionMatched","isNotEmpty","isValidSelectedOption","isEquals","value1","value2","equals","equalityKey","optionValue","findLastIndex","matchedOptionIndex","hasValue","findFirstSelectedOptionIndex","findLastSelectedOptionIndex","findNextSelectedOptionIndex","findPrevSelectedOptionIndex","firstCheckUp","selectedIndex","char","val","nextFrame","element","findSingle","optionsListGroup","flattenOptions","optionGroupChildren","lastHiddenProps","firstHiddenProps","filterProps","listProps","rootProps","withHeadless","React","defaultOptionProps","useListboxOption","withHeadless","defaultOptionProps","props","_a","_b","_c","_d","_e","_f","context","option","index","group","selected","focused","disabled","state","optionProps","options","ariaSetSize","opt","ariaPosInset","handleClick","event","handleMouseDown","handleMouseMove","handleTouchEnd","__spreadProps","__spreadValues","groupProps","optionIndicatorProps"]}
|
package/listbox/useListbox.d.ts
CHANGED
|
@@ -1,13 +1,60 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export declare const useListbox: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/
|
|
2
|
+
export declare const useListbox: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/headless/listbox").UseListboxProps<unknown>, unknown, {
|
|
3
3
|
state: {
|
|
4
4
|
value: unknown;
|
|
5
5
|
focused: boolean;
|
|
6
6
|
focusedOptionIndex: number;
|
|
7
7
|
};
|
|
8
|
-
listRef: React.RefObject<
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
listRef: React.RefObject<HTMLUListElement | null>;
|
|
9
|
+
firstHiddenElementRef: React.RefObject<HTMLElement | null>;
|
|
10
|
+
lastHiddenElementRef: React.RefObject<HTMLElement | null>;
|
|
11
|
+
rootProps: {
|
|
12
|
+
id: string | undefined;
|
|
13
|
+
'data-scope': string;
|
|
14
|
+
'data-part': string;
|
|
15
|
+
'data-disabled': true | undefined;
|
|
16
|
+
'data-invalid': true | undefined;
|
|
17
|
+
onBlur: (event: React.FocusEvent) => void;
|
|
18
|
+
};
|
|
19
|
+
listProps: {
|
|
20
|
+
id: string;
|
|
21
|
+
role: "listbox";
|
|
22
|
+
ref: React.RefObject<HTMLUListElement | null>;
|
|
23
|
+
tabIndex: number;
|
|
24
|
+
'aria-activedescendant': string | undefined;
|
|
25
|
+
'data-scope': string;
|
|
26
|
+
'data-part': string;
|
|
27
|
+
onFocus: (event?: React.FocusEvent) => void;
|
|
28
|
+
onBlur: () => void;
|
|
29
|
+
onKeyDown: (event: React.KeyboardEvent) => void;
|
|
30
|
+
};
|
|
31
|
+
filterProps: {
|
|
32
|
+
role: "searchbox";
|
|
33
|
+
autoComplete: "off";
|
|
34
|
+
disabled: boolean | undefined;
|
|
35
|
+
tabIndex: number | undefined;
|
|
36
|
+
'aria-owns': string | undefined;
|
|
37
|
+
'aria-activedescendant': string | undefined;
|
|
38
|
+
'data-scope': string;
|
|
39
|
+
'data-part': string;
|
|
40
|
+
onBlur: () => void;
|
|
41
|
+
onChange: () => void;
|
|
42
|
+
onKeyDown: (event: React.KeyboardEvent) => void;
|
|
43
|
+
};
|
|
44
|
+
firstHiddenProps: {
|
|
45
|
+
role: "presentation";
|
|
46
|
+
ref: React.RefObject<HTMLElement | null>;
|
|
47
|
+
'aria-hidden': true;
|
|
48
|
+
'data-focus-guard': "";
|
|
49
|
+
onFocus: () => void;
|
|
50
|
+
};
|
|
51
|
+
lastHiddenProps: {
|
|
52
|
+
role: "presentation";
|
|
53
|
+
ref: React.RefObject<HTMLElement | null>;
|
|
54
|
+
'aria-hidden': true;
|
|
55
|
+
'data-focus-guard': "";
|
|
56
|
+
onFocus: (event: React.FocusEvent) => void;
|
|
57
|
+
};
|
|
11
58
|
getOptions: () => unknown[];
|
|
12
59
|
getOptionId: (index: number) => string;
|
|
13
60
|
getOptionLabel: (option: unknown) => any;
|
|
@@ -16,30 +63,21 @@ export declare const useListbox: (inProps?: unknown) => import("@primereact/type
|
|
|
16
63
|
isOptionGroup: (option: unknown) => boolean;
|
|
17
64
|
getOptionGroupLabel: (optionGroup: unknown) => any;
|
|
18
65
|
getOptionGroupChildren: (optionGroup: unknown) => any;
|
|
19
|
-
getFocusedOptionId: () => string |
|
|
20
|
-
getAriaSetSize: () => number;
|
|
21
|
-
getAriaPosInset: (index: number) => number;
|
|
22
|
-
onFirstHiddenFocus: () => void;
|
|
23
|
-
onLastHiddenFocus: (event: React.FocusEvent) => void;
|
|
24
|
-
onFocusOut: (event: React.FocusEvent) => void;
|
|
25
|
-
onListFocus: () => void;
|
|
26
|
-
onListBlur: () => void;
|
|
27
|
-
onListKeyDown: (event: React.KeyboardEvent) => void;
|
|
66
|
+
getFocusedOptionId: () => string | undefined;
|
|
28
67
|
onOptionSelect: (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index?: number) => void;
|
|
29
|
-
onOptionMouseDown: (event: React.MouseEvent, index: number) => void;
|
|
30
|
-
onOptionMouseMove: (event: React.MouseEvent, index: number) => void;
|
|
31
68
|
onOptionTouchEnd: () => void;
|
|
32
|
-
|
|
33
|
-
onFilterBlur: () => void;
|
|
34
|
-
onFilterKeyDown: (event: React.KeyboardEvent) => void;
|
|
69
|
+
onClearClick: (event: React.MouseEvent) => void;
|
|
35
70
|
isOptionMatched: (option: unknown) => any;
|
|
36
71
|
isValidOption: (option: unknown) => boolean;
|
|
37
72
|
isValidSelectedOption: (option: unknown) => boolean;
|
|
38
73
|
isSelected: (option: unknown) => boolean;
|
|
39
74
|
changeFocusedOptionIndex: (event: React.MouseEvent | React.KeyboardEvent, index?: number) => void;
|
|
75
|
+
findSelectedOptionIndex: () => number;
|
|
76
|
+
findFirstFocusedOptionIndex: () => number;
|
|
40
77
|
scrollInView: (index?: number) => void;
|
|
41
78
|
updateModel: (event: React.SyntheticEvent, value: unknown) => void;
|
|
42
79
|
autoUpdateModel: () => void;
|
|
43
80
|
equalityKey: string | undefined;
|
|
44
81
|
hasValue: () => boolean;
|
|
82
|
+
isEquals: (value1: unknown, value2: unknown) => boolean;
|
|
45
83
|
}>;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
export declare const defaultProps:
|
|
1
|
+
import type { UseListboxProps } from '@primereact/types/headless/listbox';
|
|
2
|
+
export declare const defaultProps: UseListboxProps;
|