@primereact/mcp 11.0.0-rc.2
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 +94 -0
- package/data/llms/headless/add-ons/introduction.md +16 -0
- package/data/llms/headless/components/accordion/api.json +252 -0
- package/data/llms/headless/components/accordion.md +196 -0
- package/data/llms/headless/components/animateonscroll/api.json +88 -0
- package/data/llms/headless/components/animateonscroll.md +141 -0
- package/data/llms/headless/components/autocomplete/api.json +787 -0
- package/data/llms/headless/components/autocomplete.md +249 -0
- package/data/llms/headless/components/avatar/api.json +154 -0
- package/data/llms/headless/components/avatar.md +149 -0
- package/data/llms/headless/components/badge/api.json +68 -0
- package/data/llms/headless/components/badge.md +150 -0
- package/data/llms/headless/components/breadcrumb/api.json +142 -0
- package/data/llms/headless/components/breadcrumb.md +149 -0
- package/data/llms/headless/components/button/api.json +62 -0
- package/data/llms/headless/components/button.md +73 -0
- package/data/llms/headless/components/card/api.json +36 -0
- package/data/llms/headless/components/card.md +96 -0
- package/data/llms/headless/components/carousel/api.json +793 -0
- package/data/llms/headless/components/carousel.md +196 -0
- package/data/llms/headless/components/checkbox/api.json +593 -0
- package/data/llms/headless/components/checkbox.md +184 -0
- package/data/llms/headless/components/chip/api.json +107 -0
- package/data/llms/headless/components/chip.md +141 -0
- package/data/llms/headless/components/collapsible/api.json +301 -0
- package/data/llms/headless/components/collapsible.md +136 -0
- package/data/llms/headless/components/compare/api.json +533 -0
- package/data/llms/headless/components/compare.md +142 -0
- package/data/llms/headless/components/contextmenu/api.json +495 -0
- package/data/llms/headless/components/contextmenu.md +282 -0
- package/data/llms/headless/components/datatable/api.json +1680 -0
- package/data/llms/headless/components/datatable.md +258 -0
- package/data/llms/headless/components/dataview/api.json +199 -0
- package/data/llms/headless/components/dataview.md +147 -0
- package/data/llms/headless/components/datepicker/api.json +2796 -0
- package/data/llms/headless/components/datepicker.md +456 -0
- package/data/llms/headless/components/dialog/api.json +626 -0
- package/data/llms/headless/components/dialog.md +280 -0
- package/data/llms/headless/components/divider/api.json +130 -0
- package/data/llms/headless/components/divider.md +92 -0
- package/data/llms/headless/components/drawer/api.json +425 -0
- package/data/llms/headless/components/drawer.md +220 -0
- package/data/llms/headless/components/fieldset/api.json +195 -0
- package/data/llms/headless/components/fieldset.md +154 -0
- package/data/llms/headless/components/fileupload/api.json +905 -0
- package/data/llms/headless/components/fileupload.md +323 -0
- package/data/llms/headless/components/floatlabel/api.json +36 -0
- package/data/llms/headless/components/floatlabel.md +19 -0
- package/data/llms/headless/components/fluid/api.json +36 -0
- package/data/llms/headless/components/fluid.md +19 -0
- package/data/llms/headless/components/focustrap/api.json +135 -0
- package/data/llms/headless/components/focustrap.md +125 -0
- package/data/llms/headless/components/gallery/api.json +1349 -0
- package/data/llms/headless/components/gallery.md +355 -0
- package/data/llms/headless/components/iconfield/api.json +62 -0
- package/data/llms/headless/components/iconfield.md +19 -0
- package/data/llms/headless/components/iftalabel/api.json +62 -0
- package/data/llms/headless/components/iftalabel.md +19 -0
- package/data/llms/headless/components/inplace/api.json +340 -0
- package/data/llms/headless/components/inplace.md +153 -0
- package/data/llms/headless/components/inputcolor/api.json +469 -0
- package/data/llms/headless/components/inputcolor.md +253 -0
- package/data/llms/headless/components/inputgroup/api.json +62 -0
- package/data/llms/headless/components/inputgroup.md +19 -0
- package/data/llms/headless/components/inputnumber/api.json +554 -0
- package/data/llms/headless/components/inputnumber.md +167 -0
- package/data/llms/headless/components/inputotp/api.json +276 -0
- package/data/llms/headless/components/inputotp.md +130 -0
- package/data/llms/headless/components/inputpassword/api.json +180 -0
- package/data/llms/headless/components/inputpassword.md +117 -0
- package/data/llms/headless/components/inputtags/api.json +497 -0
- package/data/llms/headless/components/inputtags.md +298 -0
- package/data/llms/headless/components/inputtext/api.json +81 -0
- package/data/llms/headless/components/inputtext.md +109 -0
- package/data/llms/headless/components/knob/api.json +429 -0
- package/data/llms/headless/components/knob.md +151 -0
- package/data/llms/headless/components/label/api.json +62 -0
- package/data/llms/headless/components/label.md +19 -0
- package/data/llms/headless/components/listbox/api.json +814 -0
- package/data/llms/headless/components/listbox.md +194 -0
- package/data/llms/headless/components/menu/api.json +1247 -0
- package/data/llms/headless/components/menu.md +283 -0
- package/data/llms/headless/components/message/api.json +131 -0
- package/data/llms/headless/components/message.md +143 -0
- package/data/llms/headless/components/metergroup/api.json +266 -0
- package/data/llms/headless/components/metergroup.md +129 -0
- package/data/llms/headless/components/motion/api.json +237 -0
- package/data/llms/headless/components/motion.md +160 -0
- package/data/llms/headless/components/navigationmenu/api.json +220 -0
- package/data/llms/headless/components/navigationmenu.md +166 -0
- package/data/llms/headless/components/orderlist/api.json +196 -0
- package/data/llms/headless/components/orderlist.md +221 -0
- package/data/llms/headless/components/organizationchart/api.json +372 -0
- package/data/llms/headless/components/organizationchart.md +254 -0
- package/data/llms/headless/components/paginator/api.json +311 -0
- package/data/llms/headless/components/paginator.md +187 -0
- package/data/llms/headless/components/panel/api.json +195 -0
- package/data/llms/headless/components/panel.md +150 -0
- package/data/llms/headless/components/picklist/api.json +293 -0
- package/data/llms/headless/components/picklist.md +270 -0
- package/data/llms/headless/components/popover/api.json +405 -0
- package/data/llms/headless/components/popover.md +301 -0
- package/data/llms/headless/components/portal/api.json +56 -0
- package/data/llms/headless/components/portal.md +102 -0
- package/data/llms/headless/components/positioner/api.json +165 -0
- package/data/llms/headless/components/positioner.md +181 -0
- package/data/llms/headless/components/progressbar/api.json +87 -0
- package/data/llms/headless/components/progressbar.md +122 -0
- package/data/llms/headless/components/progressspinner/api.json +337 -0
- package/data/llms/headless/components/progressspinner.md +128 -0
- package/data/llms/headless/components/radiobutton/api.json +569 -0
- package/data/llms/headless/components/radiobutton.md +195 -0
- package/data/llms/headless/components/rating/api.json +347 -0
- package/data/llms/headless/components/rating.md +181 -0
- package/data/llms/headless/components/scrollarea/api.json +730 -0
- package/data/llms/headless/components/scrollarea.md +232 -0
- package/data/llms/headless/components/select/api.json +829 -0
- package/data/llms/headless/components/select.md +262 -0
- package/data/llms/headless/components/sidebar/api.json +433 -0
- package/data/llms/headless/components/sidebar.md +266 -0
- package/data/llms/headless/components/skeleton/api.json +68 -0
- package/data/llms/headless/components/skeleton.md +95 -0
- package/data/llms/headless/components/slider/api.json +559 -0
- package/data/llms/headless/components/slider.md +158 -0
- package/data/llms/headless/components/speeddial/api.json +459 -0
- package/data/llms/headless/components/speeddial.md +181 -0
- package/data/llms/headless/components/splitter/api.json +582 -0
- package/data/llms/headless/components/splitter.md +159 -0
- package/data/llms/headless/components/stepper/api.json +385 -0
- package/data/llms/headless/components/stepper.md +183 -0
- package/data/llms/headless/components/styleclass/api.json +134 -0
- package/data/llms/headless/components/styleclass.md +129 -0
- package/data/llms/headless/components/tabs/api.json +336 -0
- package/data/llms/headless/components/tabs.md +158 -0
- package/data/llms/headless/components/tag/api.json +62 -0
- package/data/llms/headless/components/tag.md +121 -0
- package/data/llms/headless/components/terminal/api.json +117 -0
- package/data/llms/headless/components/terminal.md +183 -0
- package/data/llms/headless/components/textarea/api.json +81 -0
- package/data/llms/headless/components/textarea.md +110 -0
- package/data/llms/headless/components/timeline/api.json +270 -0
- package/data/llms/headless/components/timeline.md +117 -0
- package/data/llms/headless/components/toast/api.json +455 -0
- package/data/llms/headless/components/toast.md +277 -0
- package/data/llms/headless/components/togglebutton/api.json +357 -0
- package/data/llms/headless/components/togglebutton.md +183 -0
- package/data/llms/headless/components/toggleswitch/api.json +326 -0
- package/data/llms/headless/components/toggleswitch.md +164 -0
- package/data/llms/headless/components/toolbar/api.json +68 -0
- package/data/llms/headless/components/toolbar.md +96 -0
- package/data/llms/headless/components/tooltip/api.json +478 -0
- package/data/llms/headless/components/tooltip.md +233 -0
- package/data/llms/headless/components/tree/api.json +1297 -0
- package/data/llms/headless/components/tree.md +297 -0
- package/data/llms/headless/components/treetable/api.json +1680 -0
- package/data/llms/headless/components/treetable.md +177 -0
- package/data/llms/headless/guides/ai/llms.md +25 -0
- package/data/llms/headless/guides/installation.md +126 -0
- package/data/llms/headless/guides/introduction.md +20 -0
- package/data/llms/headless/guides/misc/accessibility.md +228 -0
- package/data/llms/headless/llms.md +25 -0
- package/data/llms/headless/resources/introduction.md +15 -0
- package/data/llms/hooks/gettingstarted/introduction.md +34 -0
- package/data/llms/hooks/gettingstarted/setup.md +54 -0
- package/data/llms/hooks/use-attr-selector.md +25 -0
- package/data/llms/hooks/use-controlled-state.md +31 -0
- package/data/llms/hooks/use-event-listener.md +37 -0
- package/data/llms/hooks/use-filter.md +312 -0
- package/data/llms/hooks/use-hot-key.md +40 -0
- package/data/llms/hooks/use-id.md +24 -0
- package/data/llms/hooks/use-intersection-observer.md +42 -0
- package/data/llms/hooks/use-is-mobile.md +24 -0
- package/data/llms/hooks/use-key-filter.md +139 -0
- package/data/llms/hooks/use-local-storage.md +28 -0
- package/data/llms/hooks/use-mask.md +53 -0
- package/data/llms/hooks/use-match-media.md +28 -0
- package/data/llms/hooks/use-mount-effect.md +25 -0
- package/data/llms/hooks/use-mounted.md +36 -0
- package/data/llms/hooks/use-number-formatter.md +48 -0
- package/data/llms/hooks/use-presence.md +44 -0
- package/data/llms/hooks/use-previous.md +28 -0
- package/data/llms/hooks/use-props.md +37 -0
- package/data/llms/hooks/use-queue-task.md +29 -0
- package/data/llms/hooks/use-scrolltop.md +87 -0
- package/data/llms/hooks/use-sortable-list.md +226 -0
- package/data/llms/hooks/use-tree-filter.md +216 -0
- package/data/llms/hooks/use-unmount-effect.md +23 -0
- package/data/llms/hooks/use-update-effect.md +27 -0
- package/data/llms/hooks/use-view-transition.md +31 -0
- package/data/llms/hooks/use-visibility-change.md +30 -0
- package/data/llms/llms-full.txt +125291 -0
- package/data/llms/llms.txt +379 -0
- package/data/llms/manifest.json +12409 -0
- package/data/llms/mcp-data.json +14481 -0
- package/data/llms/primitive/add-ons/introduction.md +16 -0
- package/data/llms/primitive/components/accordion/api.json +1411 -0
- package/data/llms/primitive/components/accordion.md +231 -0
- package/data/llms/primitive/components/animateonscroll/api.json +193 -0
- package/data/llms/primitive/components/animateonscroll.md +91 -0
- package/data/llms/primitive/components/autocomplete/api.json +3167 -0
- package/data/llms/primitive/components/autocomplete.md +344 -0
- package/data/llms/primitive/components/avatar/api.json +703 -0
- package/data/llms/primitive/components/avatar.md +134 -0
- package/data/llms/primitive/components/badge/api.json +363 -0
- package/data/llms/primitive/components/badge.md +118 -0
- package/data/llms/primitive/components/breadcrumb/api.json +1162 -0
- package/data/llms/primitive/components/breadcrumb.md +196 -0
- package/data/llms/primitive/components/button/api.json +246 -0
- package/data/llms/primitive/components/button.md +114 -0
- package/data/llms/primitive/components/buttongroup/api.json +168 -0
- package/data/llms/primitive/components/buttongroup.md +43 -0
- package/data/llms/primitive/components/card/api.json +1252 -0
- package/data/llms/primitive/components/card.md +159 -0
- package/data/llms/primitive/components/carousel/api.json +1374 -0
- package/data/llms/primitive/components/carousel.md +220 -0
- package/data/llms/primitive/components/checkbox/api.json +697 -0
- package/data/llms/primitive/components/checkbox.md +160 -0
- package/data/llms/primitive/components/checkboxgroup/api.json +252 -0
- package/data/llms/primitive/components/checkboxgroup.md +58 -0
- package/data/llms/primitive/components/chip/api.json +853 -0
- package/data/llms/primitive/components/chip.md +135 -0
- package/data/llms/primitive/components/collapsible/api.json +581 -0
- package/data/llms/primitive/components/collapsible.md +133 -0
- package/data/llms/primitive/components/compare/api.json +909 -0
- package/data/llms/primitive/components/compare.md +156 -0
- package/data/llms/primitive/components/contextmenu/api.json +3454 -0
- package/data/llms/primitive/components/contextmenu.md +483 -0
- package/data/llms/primitive/components/datatable/api.json +7832 -0
- package/data/llms/primitive/components/datatable.md +561 -0
- package/data/llms/primitive/components/dataview/api.json +819 -0
- package/data/llms/primitive/components/dataview.md +163 -0
- package/data/llms/primitive/components/datepicker/api.json +9055 -0
- package/data/llms/primitive/components/datepicker.md +760 -0
- package/data/llms/primitive/components/dialog/api.json +2491 -0
- package/data/llms/primitive/components/dialog.md +276 -0
- package/data/llms/primitive/components/divider/api.json +214 -0
- package/data/llms/primitive/components/divider.md +96 -0
- package/data/llms/primitive/components/drawer/api.json +1879 -0
- package/data/llms/primitive/components/drawer.md +220 -0
- package/data/llms/primitive/components/fieldset/api.json +1116 -0
- package/data/llms/primitive/components/fieldset.md +183 -0
- package/data/llms/primitive/components/fileupload/api.json +2445 -0
- package/data/llms/primitive/components/fileupload.md +282 -0
- package/data/llms/primitive/components/floatlabel/api.json +176 -0
- package/data/llms/primitive/components/floatlabel.md +47 -0
- package/data/llms/primitive/components/focustrap/api.json +241 -0
- package/data/llms/primitive/components/focustrap.md +93 -0
- package/data/llms/primitive/components/gallery/api.json +3622 -0
- package/data/llms/primitive/components/gallery.md +387 -0
- package/data/llms/primitive/components/iconfield/api.json +322 -0
- package/data/llms/primitive/components/iconfield.md +53 -0
- package/data/llms/primitive/components/iftalabel/api.json +177 -0
- package/data/llms/primitive/components/iftalabel.md +47 -0
- package/data/llms/primitive/components/inplace/api.json +783 -0
- package/data/llms/primitive/components/inplace.md +141 -0
- package/data/llms/primitive/components/inputcolor/api.json +2211 -0
- package/data/llms/primitive/components/inputcolor.md +295 -0
- package/data/llms/primitive/components/inputnumber/api.json +469 -0
- package/data/llms/primitive/components/inputnumber.md +99 -0
- package/data/llms/primitive/components/inputotp/api.json +469 -0
- package/data/llms/primitive/components/inputotp.md +121 -0
- package/data/llms/primitive/components/inputpassword/api.json +278 -0
- package/data/llms/primitive/components/inputpassword.md +84 -0
- package/data/llms/primitive/components/inputtags/api.json +407 -0
- package/data/llms/primitive/components/inputtags.md +243 -0
- package/data/llms/primitive/components/inputtext/api.json +207 -0
- package/data/llms/primitive/components/inputtext.md +81 -0
- package/data/llms/primitive/components/knob/api.json +841 -0
- package/data/llms/primitive/components/knob.md +148 -0
- package/data/llms/primitive/components/label/api.json +177 -0
- package/data/llms/primitive/components/label.md +44 -0
- package/data/llms/primitive/components/listbox/api.json +1741 -0
- package/data/llms/primitive/components/listbox.md +206 -0
- package/data/llms/primitive/components/menu/api.json +3836 -0
- package/data/llms/primitive/components/menu.md +479 -0
- package/data/llms/primitive/components/message/api.json +863 -0
- package/data/llms/primitive/components/message.md +151 -0
- package/data/llms/primitive/components/metergroup/api.json +1222 -0
- package/data/llms/primitive/components/metergroup.md +209 -0
- package/data/llms/primitive/components/motion.md +112 -0
- package/data/llms/primitive/components/navigationmenu/api.json +298 -0
- package/data/llms/primitive/components/navigationmenu.md +184 -0
- package/data/llms/primitive/components/organizationchart.md +133 -0
- package/data/llms/primitive/components/paginator/api.json +1637 -0
- package/data/llms/primitive/components/paginator.md +223 -0
- package/data/llms/primitive/components/panel/api.json +1270 -0
- package/data/llms/primitive/components/panel.md +186 -0
- package/data/llms/primitive/components/popover/api.json +2281 -0
- package/data/llms/primitive/components/popover.md +277 -0
- package/data/llms/primitive/components/portal/api.json +176 -0
- package/data/llms/primitive/components/portal.md +79 -0
- package/data/llms/primitive/components/progressbar/api.json +857 -0
- package/data/llms/primitive/components/progressbar.md +153 -0
- package/data/llms/primitive/components/progressspinner/api.json +725 -0
- package/data/llms/primitive/components/progressspinner.md +133 -0
- package/data/llms/primitive/components/radiobutton/api.json +929 -0
- package/data/llms/primitive/components/radiobutton.md +201 -0
- package/data/llms/primitive/components/rating/api.json +878 -0
- package/data/llms/primitive/components/rating.md +160 -0
- package/data/llms/primitive/components/scrollarea/api.json +1187 -0
- package/data/llms/primitive/components/scrollarea.md +255 -0
- package/data/llms/primitive/components/select/api.json +3167 -0
- package/data/llms/primitive/components/select.md +351 -0
- package/data/llms/primitive/components/sidebar/api.json +3699 -0
- package/data/llms/primitive/components/sidebar.md +444 -0
- package/data/llms/primitive/components/skeleton/api.json +213 -0
- package/data/llms/primitive/components/skeleton.md +80 -0
- package/data/llms/primitive/components/slider/api.json +1066 -0
- package/data/llms/primitive/components/slider.md +161 -0
- package/data/llms/primitive/components/speeddial/api.json +1002 -0
- package/data/llms/primitive/components/speeddial.md +197 -0
- package/data/llms/primitive/components/splitter/api.json +901 -0
- package/data/llms/primitive/components/splitter.md +137 -0
- package/data/llms/primitive/components/stepper/api.json +2102 -0
- package/data/llms/primitive/components/stepper.md +253 -0
- package/data/llms/primitive/components/styleclass.md +399 -0
- package/data/llms/primitive/components/tabs/api.json +1705 -0
- package/data/llms/primitive/components/tabs.md +200 -0
- package/data/llms/primitive/components/tag/api.json +189 -0
- package/data/llms/primitive/components/tag.md +100 -0
- package/data/llms/primitive/components/terminal/api.json +1709 -0
- package/data/llms/primitive/components/terminal.md +227 -0
- package/data/llms/primitive/components/textarea/api.json +213 -0
- package/data/llms/primitive/components/textarea.md +83 -0
- package/data/llms/primitive/components/timeline/api.json +1180 -0
- package/data/llms/primitive/components/timeline.md +185 -0
- package/data/llms/primitive/components/toast/api.json +2102 -0
- package/data/llms/primitive/components/toast.md +291 -0
- package/data/llms/primitive/components/togglebutton/api.json +433 -0
- package/data/llms/primitive/components/togglebutton.md +161 -0
- package/data/llms/primitive/components/togglebuttongroup/api.json +276 -0
- package/data/llms/primitive/components/togglebuttongroup.md +61 -0
- package/data/llms/primitive/components/toggleswitch/api.json +681 -0
- package/data/llms/primitive/components/toggleswitch.md +149 -0
- package/data/llms/primitive/components/toolbar/api.json +646 -0
- package/data/llms/primitive/components/toolbar.md +126 -0
- package/data/llms/primitive/components/tooltip/api.json +1534 -0
- package/data/llms/primitive/components/tooltip.md +202 -0
- package/data/llms/primitive/components/tree/api.json +2952 -0
- package/data/llms/primitive/components/tree.md +292 -0
- package/data/llms/primitive/components/treetable.md +187 -0
- package/data/llms/primitive/components/visuallyhidden/api.json +186 -0
- package/data/llms/primitive/components/visuallyhidden.md +87 -0
- package/data/llms/primitive/guides/ai/llms.md +25 -0
- package/data/llms/primitive/guides/icons/customicons.md +47 -0
- package/data/llms/primitive/guides/icons/primeicons.md +112 -0
- package/data/llms/primitive/guides/installation.md +115 -0
- package/data/llms/primitive/guides/introduction.md +20 -0
- package/data/llms/primitive/guides/misc/accessibility.md +215 -0
- package/data/llms/primitive/guides/misc/passthrough.md +95 -0
- package/data/llms/primitive/guides/misc/rtl.md +27 -0
- package/data/llms/primitive/llms.md +25 -0
- package/data/llms/primitive/resources/introduction.md +15 -0
- package/data/llms/styled/add-ons/introduction.md +16 -0
- package/data/llms/styled/components/accordion.md +735 -0
- package/data/llms/styled/components/animateonscroll.md +264 -0
- package/data/llms/styled/components/autocomplete.md +1597 -0
- package/data/llms/styled/components/avatar.md +313 -0
- package/data/llms/styled/components/badge.md +213 -0
- package/data/llms/styled/components/breadcrumb.md +461 -0
- package/data/llms/styled/components/button/api.json +246 -0
- package/data/llms/styled/components/button.md +641 -0
- package/data/llms/styled/components/buttongroup.md +614 -0
- package/data/llms/styled/components/card.md +228 -0
- package/data/llms/styled/components/carousel.md +388 -0
- package/data/llms/styled/components/checkbox.md +329 -0
- package/data/llms/styled/components/checkboxgroup.md +619 -0
- package/data/llms/styled/components/chip.md +300 -0
- package/data/llms/styled/components/compare.md +271 -0
- package/data/llms/styled/components/contextmenu.md +550 -0
- package/data/llms/styled/components/datatable.md +8259 -0
- package/data/llms/styled/components/dataview.md +907 -0
- package/data/llms/styled/components/datepicker.md +2807 -0
- package/data/llms/styled/components/dialog.md +1047 -0
- package/data/llms/styled/components/divider.md +207 -0
- package/data/llms/styled/components/drawer.md +470 -0
- package/data/llms/styled/components/fieldset.md +334 -0
- package/data/llms/styled/components/fileupload.md +747 -0
- package/data/llms/styled/components/floatlabel/api.json +210 -0
- package/data/llms/styled/components/floatlabel.md +231 -0
- package/data/llms/styled/components/fluid/api.json +204 -0
- package/data/llms/styled/components/fluid.md +177 -0
- package/data/llms/styled/components/focustrap.md +203 -0
- package/data/llms/styled/components/gallery.md +553 -0
- package/data/llms/styled/components/iconfield/api.json +382 -0
- package/data/llms/styled/components/iconfield.md +385 -0
- package/data/llms/styled/components/iftalabel/api.json +237 -0
- package/data/llms/styled/components/iftalabel.md +158 -0
- package/data/llms/styled/components/inplace.md +312 -0
- package/data/llms/styled/components/inputcolor.md +674 -0
- package/data/llms/styled/components/inputgroup/api.json +399 -0
- package/data/llms/styled/components/inputgroup.md +604 -0
- package/data/llms/styled/components/inputmask.md +282 -0
- package/data/llms/styled/components/inputnumber.md +563 -0
- package/data/llms/styled/components/inputotp.md +335 -0
- package/data/llms/styled/components/inputpassword.md +630 -0
- package/data/llms/styled/components/inputtags.md +727 -0
- package/data/llms/styled/components/inputtext.md +190 -0
- package/data/llms/styled/components/keyfilter.md +289 -0
- package/data/llms/styled/components/knob.md +305 -0
- package/data/llms/styled/components/label/api.json +237 -0
- package/data/llms/styled/components/label.md +224 -0
- package/data/llms/styled/components/listbox.md +807 -0
- package/data/llms/styled/components/menu.md +1175 -0
- package/data/llms/styled/components/message.md +570 -0
- package/data/llms/styled/components/metergroup.md +449 -0
- package/data/llms/styled/components/navigationmenu.md +926 -0
- package/data/llms/styled/components/orderlist.md +519 -0
- package/data/llms/styled/components/organizationchart/api.json +1457 -0
- package/data/llms/styled/components/organizationchart.md +791 -0
- package/data/llms/styled/components/overlaymanager.md +519 -0
- package/data/llms/styled/components/paginator.md +506 -0
- package/data/llms/styled/components/panel.md +394 -0
- package/data/llms/styled/components/picklist.md +1004 -0
- package/data/llms/styled/components/popover.md +372 -0
- package/data/llms/styled/components/progressbar.md +438 -0
- package/data/llms/styled/components/progressspinner.md +128 -0
- package/data/llms/styled/components/radiobutton.md +488 -0
- package/data/llms/styled/components/rating/api.json +766 -0
- package/data/llms/styled/components/rating.md +518 -0
- package/data/llms/styled/components/scrollarea.md +627 -0
- package/data/llms/styled/components/select.md +2122 -0
- package/data/llms/styled/components/sidebar.md +1587 -0
- package/data/llms/styled/components/skeleton.md +226 -0
- package/data/llms/styled/components/slider.md +453 -0
- package/data/llms/styled/components/speeddial.md +723 -0
- package/data/llms/styled/components/splitter.md +536 -0
- package/data/llms/styled/components/stepper.md +614 -0
- package/data/llms/styled/components/tabs.md +543 -0
- package/data/llms/styled/components/tag.md +263 -0
- package/data/llms/styled/components/terminal.md +543 -0
- package/data/llms/styled/components/textarea.md +257 -0
- package/data/llms/styled/components/timeline.md +620 -0
- package/data/llms/styled/components/toast.md +1013 -0
- package/data/llms/styled/components/togglebutton.md +287 -0
- package/data/llms/styled/components/togglebuttongroup.md +328 -0
- package/data/llms/styled/components/toggleswitch.md +262 -0
- package/data/llms/styled/components/toolbar.md +187 -0
- package/data/llms/styled/components/tooltip.md +430 -0
- package/data/llms/styled/components/tree.md +1386 -0
- package/data/llms/styled/components/treetable.md +6842 -0
- package/data/llms/styled/guides/ai/llms.md +25 -0
- package/data/llms/styled/guides/configuration.md +151 -0
- package/data/llms/styled/guides/icons/customicons.md +47 -0
- package/data/llms/styled/guides/icons/primeicons.md +112 -0
- package/data/llms/styled/guides/installation/astro.md +97 -0
- package/data/llms/styled/guides/installation/manual.md +3 -0
- package/data/llms/styled/guides/installation/nextjs.md +129 -0
- package/data/llms/styled/guides/installation/react-router.md +88 -0
- package/data/llms/styled/guides/installation/tanstack.md +92 -0
- package/data/llms/styled/guides/installation/vite.md +91 -0
- package/data/llms/styled/guides/installation.md +42 -0
- package/data/llms/styled/guides/introduction.md +20 -0
- package/data/llms/styled/guides/misc/accessibility.md +211 -0
- package/data/llms/styled/guides/misc/animations.md +389 -0
- package/data/llms/styled/guides/misc/passthrough.md +95 -0
- package/data/llms/styled/guides/misc/rtl.md +27 -0
- package/data/llms/styled/guides/theming/styled.md +779 -0
- package/data/llms/styled/guides/theming/tailwind.md +473 -0
- package/data/llms/styled/guides/theming/unstyled.md +115 -0
- package/data/llms/styled/resources/introduction.md +15 -0
- package/data/llms/tailwind/add-ons/introduction.md +16 -0
- package/data/llms/tailwind/components/accordion.md +383 -0
- package/data/llms/tailwind/components/autocomplete.md +1346 -0
- package/data/llms/tailwind/components/avatar.md +305 -0
- package/data/llms/tailwind/components/badge.md +207 -0
- package/data/llms/tailwind/components/breadcrumb.md +387 -0
- package/data/llms/tailwind/components/button/api.json +246 -0
- package/data/llms/tailwind/components/button.md +617 -0
- package/data/llms/tailwind/components/buttongroup.md +599 -0
- package/data/llms/tailwind/components/card.md +224 -0
- package/data/llms/tailwind/components/carousel.md +329 -0
- package/data/llms/tailwind/components/checkbox.md +179 -0
- package/data/llms/tailwind/components/checkboxgroup.md +279 -0
- package/data/llms/tailwind/components/chip.md +304 -0
- package/data/llms/tailwind/components/compare.md +295 -0
- package/data/llms/tailwind/components/contextmenu.md +415 -0
- package/data/llms/tailwind/components/datatable.md +4062 -0
- package/data/llms/tailwind/components/dataview.md +864 -0
- package/data/llms/tailwind/components/datepicker.md +823 -0
- package/data/llms/tailwind/components/dialog.md +1216 -0
- package/data/llms/tailwind/components/divider.md +205 -0
- package/data/llms/tailwind/components/drawer.md +500 -0
- package/data/llms/tailwind/components/fieldset.md +326 -0
- package/data/llms/tailwind/components/fluid.md +117 -0
- package/data/llms/tailwind/components/iconfield.md +197 -0
- package/data/llms/tailwind/components/inplace.md +324 -0
- package/data/llms/tailwind/components/inputcolor.md +493 -0
- package/data/llms/tailwind/components/inputgroup.md +375 -0
- package/data/llms/tailwind/components/inputnumber.md +463 -0
- package/data/llms/tailwind/components/inputotp.md +255 -0
- package/data/llms/tailwind/components/inputpassword.md +543 -0
- package/data/llms/tailwind/components/inputtext.md +141 -0
- package/data/llms/tailwind/components/label.md +100 -0
- package/data/llms/tailwind/components/listbox.md +886 -0
- package/data/llms/tailwind/components/menu.md +1049 -0
- package/data/llms/tailwind/components/message.md +575 -0
- package/data/llms/tailwind/components/metergroup.md +510 -0
- package/data/llms/tailwind/components/navigationmenu.md +528 -0
- package/data/llms/tailwind/components/overlaymanager.md +567 -0
- package/data/llms/tailwind/components/paginator.md +306 -0
- package/data/llms/tailwind/components/panel.md +395 -0
- package/data/llms/tailwind/components/popover.md +424 -0
- package/data/llms/tailwind/components/progressbar.md +313 -0
- package/data/llms/tailwind/components/radiobutton.md +366 -0
- package/data/llms/tailwind/components/rating.md +300 -0
- package/data/llms/tailwind/components/scrollarea.md +638 -0
- package/data/llms/tailwind/components/select.md +1220 -0
- package/data/llms/tailwind/components/sidebar.md +1511 -0
- package/data/llms/tailwind/components/skeleton.md +236 -0
- package/data/llms/tailwind/components/slider.md +291 -0
- package/data/llms/tailwind/components/splitter.md +546 -0
- package/data/llms/tailwind/components/tabs.md +462 -0
- package/data/llms/tailwind/components/tag.md +255 -0
- package/data/llms/tailwind/components/textarea.md +170 -0
- package/data/llms/tailwind/components/timeline.md +656 -0
- package/data/llms/tailwind/components/toast.md +246 -0
- package/data/llms/tailwind/components/togglebutton.md +264 -0
- package/data/llms/tailwind/components/togglebuttongroup.md +262 -0
- package/data/llms/tailwind/components/toggleswitch.md +203 -0
- package/data/llms/tailwind/components/toolbar.md +192 -0
- package/data/llms/tailwind/components/tooltip.md +449 -0
- package/data/llms/tailwind/guides/ai/llms.md +25 -0
- package/data/llms/tailwind/guides/icons/customicons.md +47 -0
- package/data/llms/tailwind/guides/icons/primeicons.md +112 -0
- package/data/llms/tailwind/guides/installation/astro.md +165 -0
- package/data/llms/tailwind/guides/installation/manual.md +3 -0
- package/data/llms/tailwind/guides/installation/nextjs.md +169 -0
- package/data/llms/tailwind/guides/installation/react-router.md +157 -0
- package/data/llms/tailwind/guides/installation/tanstack.md +161 -0
- package/data/llms/tailwind/guides/installation/vite.md +160 -0
- package/data/llms/tailwind/guides/installation.md +42 -0
- package/data/llms/tailwind/guides/introduction.md +20 -0
- package/data/llms/tailwind/guides/misc/accessibility.md +205 -0
- package/data/llms/tailwind/guides/misc/passthrough.md +95 -0
- package/data/llms/tailwind/guides/misc/rtl.md +27 -0
- package/data/llms/tailwind/guides/theming/guide.md +179 -0
- package/data/llms/tailwind/guides/theming.md +191 -0
- package/data/llms/tailwind/llms.md +25 -0
- package/data/llms/tailwind/resources/introduction.md +15 -0
- package/data/manifest.json +12409 -0
- package/data/mcp-data.json +14481 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.js +2 -0
- package/package.json +61 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# useMotion
|
|
2
|
+
|
|
3
|
+
Hook that manages enter/leave animations with CSS class transitions and visibility control.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```tsx
|
|
8
|
+
import { useMotion } from '@primereact/core/motion';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
const ref = React.useRef<HTMLDivElement>(undefined);
|
|
13
|
+
const motion = useMotion({
|
|
14
|
+
elementRef: ref,
|
|
15
|
+
visible: isOpen,
|
|
16
|
+
name: 'fade'
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
return <>{motion.state.rendered && <div ref={ref} {...motion.rootProps}></div>}</>;
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
`useMotion` runs a CSS class-based enter/leave animation lifecycle against a single element, returning `rootProps` for hidden styles and `state.rendered` for conditional mounting.
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
- **CSS class lifecycle**, applies `{name}-enter-from`, `{name}-enter-active`, `{name}-enter-to` on enter and mirrored `-leave-*` classes on leave
|
|
27
|
+
- **Mount management**, `state.rendered` combined with `mountOnEnter` / `unmountOnLeave` keeps the element in the DOM only while needed
|
|
28
|
+
- **Hide strategies**, choose how closed content is hidden: `display: none`, `visibility: hidden`, or let CSS animations handle it entirely
|
|
29
|
+
- **Dimension variables**, `cssVarPrefix` writes `--{prefix}-height` / `--{prefix}-width` on the element for collapsible transitions
|
|
30
|
+
- **Full lifecycle callbacks**, eight hooks covering before/during/after/cancelled for both enter and leave phases
|
|
31
|
+
- **Imperative control**, `enter()`, `leave()`, `cancel()`, and `update()` for programmatic transitions
|
|
32
|
+
|
|
33
|
+
## Working with callbacks
|
|
34
|
+
|
|
35
|
+
### Drive animations with a name prefix
|
|
36
|
+
|
|
37
|
+
Pick a `name` and define six CSS classes against that prefix. The hook applies them in order across the enter and leave phases.
|
|
38
|
+
|
|
39
|
+
```tsx
|
|
40
|
+
const motion = useMotion({ elementRef: ref, visible, name: 'slide' });
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
```css
|
|
44
|
+
.slide-enter-from {
|
|
45
|
+
opacity: 0;
|
|
46
|
+
transform: translateY(-10px);
|
|
47
|
+
}
|
|
48
|
+
.slide-enter-active {
|
|
49
|
+
transition: all 200ms ease-out;
|
|
50
|
+
}
|
|
51
|
+
.slide-enter-to {
|
|
52
|
+
opacity: 1;
|
|
53
|
+
transform: translateY(0);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
.slide-leave-from {
|
|
57
|
+
opacity: 1;
|
|
58
|
+
transform: translateY(0);
|
|
59
|
+
}
|
|
60
|
+
.slide-leave-active {
|
|
61
|
+
transition: all 200ms ease-in;
|
|
62
|
+
}
|
|
63
|
+
.slide-leave-to {
|
|
64
|
+
opacity: 0;
|
|
65
|
+
transform: translateY(-10px);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
### Collapsible height transitions
|
|
70
|
+
|
|
71
|
+
Set `cssVarPrefix` so the hook injects scroll-height into a CSS variable you can read from your transitions.
|
|
72
|
+
|
|
73
|
+
```tsx
|
|
74
|
+
const motion = useMotion({ elementRef: ref, visible, cssVarPrefix: 'panel-content' });
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
```css
|
|
78
|
+
.collapsible-enter-active,
|
|
79
|
+
.collapsible-leave-active {
|
|
80
|
+
transition: max-height 300ms ease;
|
|
81
|
+
overflow: hidden;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.collapsible-enter-to,
|
|
85
|
+
.collapsible-leave-from {
|
|
86
|
+
max-height: var(--panel-content-height);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.collapsible-enter-from,
|
|
90
|
+
.collapsible-leave-to {
|
|
91
|
+
max-height: 0;
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Run the enter animation on mount
|
|
96
|
+
|
|
97
|
+
Enable `appear` so the enter lifecycle plays the first time the element becomes visible, instead of jumping straight to its final state.
|
|
98
|
+
|
|
99
|
+
```tsx
|
|
100
|
+
const motion = useMotion({ elementRef: ref, visible: true, appear: true, name: 'fade' });
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### React to phase transitions
|
|
104
|
+
|
|
105
|
+
Use the lifecycle callbacks to coordinate side effects, trigger focus moves after enter, release listeners after leave, or clean up inline styles.
|
|
106
|
+
|
|
107
|
+
```tsx
|
|
108
|
+
const motion = useMotion({
|
|
109
|
+
elementRef: ref,
|
|
110
|
+
visible,
|
|
111
|
+
name: 'fade',
|
|
112
|
+
onBeforeEnter: (e) => e.el.style.setProperty('will-change', 'opacity'),
|
|
113
|
+
onAfterEnter: () => inputRef.current?.focus(),
|
|
114
|
+
onAfterLeave: () => releaseScrollLock()
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
| Callback | Phase |
|
|
119
|
+
| ------------------ | ------------------------------ |
|
|
120
|
+
| `onBeforeEnter` | Before enter transition starts |
|
|
121
|
+
| `onEnter` | Enter transition starts |
|
|
122
|
+
| `onAfterEnter` | Enter transition ends |
|
|
123
|
+
| `onEnterCancelled` | Enter transition cancelled |
|
|
124
|
+
| `onBeforeLeave` | Before leave transition starts |
|
|
125
|
+
| `onLeave` | Leave transition starts |
|
|
126
|
+
| `onAfterLeave` | Leave transition ends |
|
|
127
|
+
| `onLeaveCancelled` | Leave transition cancelled |
|
|
128
|
+
|
|
129
|
+
### Imperative control
|
|
130
|
+
|
|
131
|
+
Call `enter()`, `leave()`, or `cancel()` to drive the animation from outside a visibility prop, and `update()` to reconfigure the instance on an existing element.
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
const motion = useMotion({ elementRef: ref, visible, name: 'fade' });
|
|
135
|
+
|
|
136
|
+
motion.enter();
|
|
137
|
+
motion.leave();
|
|
138
|
+
motion.cancel();
|
|
139
|
+
motion.update(element, { name: 'slide', duration: 300 });
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
### Hide strategy reference
|
|
143
|
+
|
|
144
|
+
Switch `hideStrategy` to match what your CSS expects. `display` is the default because it removes the element from layout entirely.
|
|
145
|
+
|
|
146
|
+
| Value | Behavior |
|
|
147
|
+
| -------------- | ------------------------------------------------------ |
|
|
148
|
+
| `'display'` | Applies `display: none` (default) |
|
|
149
|
+
| `'visibility'` | Applies `visibility: hidden` and `max-height: 0` |
|
|
150
|
+
| `'none'` | No automatic hiding, CSS animations handle it entirely |
|
|
151
|
+
|
|
152
|
+
## API
|
|
153
|
+
|
|
154
|
+
### useMotion
|
|
155
|
+
|
|
156
|
+
<DocTable name="useMotion" category="api" />
|
|
157
|
+
|
|
158
|
+
## Accessibility
|
|
159
|
+
|
|
160
|
+
No keyboard behavior, a primitive for animation that does not affect accessibility. See [Primitive](/docs/primitive/components/motion#accessibility) for full WAI-ARIA compliance details.
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"name": "useNavigationMenu",
|
|
4
|
+
"source": "apps/showcase/assets/apidoc/usenavigationmenu.json",
|
|
5
|
+
"data": {
|
|
6
|
+
"description": "The useNavigationMenu manages the state and functionality of a navigationmenu component.",
|
|
7
|
+
"interfaces": {
|
|
8
|
+
"UseNavigationMenuProps": {
|
|
9
|
+
"description": "Defines valid properties in useNavigationMenu.",
|
|
10
|
+
"relatedProp": "",
|
|
11
|
+
"props": [
|
|
12
|
+
{
|
|
13
|
+
"name": "orientation",
|
|
14
|
+
"type": "NavigationMenuOrientation",
|
|
15
|
+
"default": "'horizontal'",
|
|
16
|
+
"description": "The orientation of the navigationmenu.\nDetermines which arrow keys move between triggers."
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"name": "loopFocus",
|
|
20
|
+
"type": "boolean",
|
|
21
|
+
"default": "true",
|
|
22
|
+
"description": "Whether keyboard focus loops back to the first/last item at the end of the list."
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"name": "modal",
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"default": "true",
|
|
28
|
+
"description": "Whether the navigationmenu is modal. When true, opening one menu prevents page interaction\noutside that menu."
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"name": "disabled",
|
|
32
|
+
"type": "boolean",
|
|
33
|
+
"default": "false",
|
|
34
|
+
"description": "Whether all menus in the navigationmenu are disabled."
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"methods": []
|
|
38
|
+
},
|
|
39
|
+
"UseNavigationMenuState": {
|
|
40
|
+
"description": "Defines valid state in useNavigationMenu.",
|
|
41
|
+
"relatedProp": "",
|
|
42
|
+
"props": [
|
|
43
|
+
{
|
|
44
|
+
"name": "openMenuId",
|
|
45
|
+
"type": "string",
|
|
46
|
+
"default": "",
|
|
47
|
+
"description": "The id of the currently open menu, or null if none is open."
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
"name": "hasOpenMenu",
|
|
51
|
+
"type": "boolean",
|
|
52
|
+
"default": "",
|
|
53
|
+
"description": "Whether any menu in the navigationmenu is currently open."
|
|
54
|
+
}
|
|
55
|
+
],
|
|
56
|
+
"methods": []
|
|
57
|
+
},
|
|
58
|
+
"UseNavigationMenuRootProps": {
|
|
59
|
+
"description": "Pre-built props for the navigationmenu root element.",
|
|
60
|
+
"relatedProp": "",
|
|
61
|
+
"props": [
|
|
62
|
+
{
|
|
63
|
+
"name": "role",
|
|
64
|
+
"type": "\"menubar\"",
|
|
65
|
+
"default": "",
|
|
66
|
+
"description": "ARIA role for the navigationmenu element."
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"name": "aria-orientation",
|
|
70
|
+
"type": "NavigationMenuOrientation",
|
|
71
|
+
"default": "",
|
|
72
|
+
"description": "The orientation of the navigationmenu."
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"name": "data-scope",
|
|
76
|
+
"type": "\"navigationmenu\"",
|
|
77
|
+
"default": "",
|
|
78
|
+
"description": "Component scope identifier."
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "data-part",
|
|
82
|
+
"type": "\"root\"",
|
|
83
|
+
"default": "",
|
|
84
|
+
"description": "Component part identifier."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"name": "data-orientation",
|
|
88
|
+
"type": "NavigationMenuOrientation",
|
|
89
|
+
"default": "",
|
|
90
|
+
"description": "The orientation of the navigationmenu."
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"name": "data-has-open-menu",
|
|
94
|
+
"type": "\"\"",
|
|
95
|
+
"default": "",
|
|
96
|
+
"description": "Present when any menu in the navigationmenu is open."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"name": "data-modal",
|
|
100
|
+
"type": "\"\"",
|
|
101
|
+
"default": "",
|
|
102
|
+
"description": "Present when the navigationmenu is modal."
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"name": "data-disabled",
|
|
106
|
+
"type": "\"\"",
|
|
107
|
+
"default": "",
|
|
108
|
+
"description": "Present when the navigationmenu is disabled."
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"methods": []
|
|
112
|
+
},
|
|
113
|
+
"UseNavigationMenuExposes": {
|
|
114
|
+
"description": "Defines the methods and properties exposed by useNavigationMenu.",
|
|
115
|
+
"relatedProp": "",
|
|
116
|
+
"props": [
|
|
117
|
+
{
|
|
118
|
+
"name": "state",
|
|
119
|
+
"type": "UseNavigationMenuState",
|
|
120
|
+
"default": "",
|
|
121
|
+
"description": "The state of the useNavigationMenu."
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"name": "rootProps",
|
|
125
|
+
"type": "UseNavigationMenuRootProps",
|
|
126
|
+
"default": "",
|
|
127
|
+
"description": "Pre-built props for the navigationmenu root element."
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "registerTrigger",
|
|
131
|
+
"type": "(menuId: string, element: HTMLElement) => void",
|
|
132
|
+
"default": "",
|
|
133
|
+
"description": "Register or unregister a menu trigger element with the navigationmenu.\nPass null as element to unregister."
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "setOpenMenuId",
|
|
137
|
+
"type": "(menuId: string) => void",
|
|
138
|
+
"default": "",
|
|
139
|
+
"description": "Set which menu is currently open. Pass null to close all."
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
"name": "isMenuOpen",
|
|
143
|
+
"type": "(menuId: string) => boolean",
|
|
144
|
+
"default": "",
|
|
145
|
+
"description": "Whether the menu with the given id is the currently open one."
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
"name": "onTriggerKeyDown",
|
|
149
|
+
"type": "(menuId: string, event: KeyboardEvent) => void",
|
|
150
|
+
"default": "",
|
|
151
|
+
"description": "Handle keyboard event on a trigger. Manages ArrowLeft/Right (horizontal)\nor ArrowUp/Down (vertical), Home, End between sibling triggers."
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "onTriggerMouseEnter",
|
|
155
|
+
"type": "(menuId: string) => void",
|
|
156
|
+
"default": "",
|
|
157
|
+
"description": "Handle mouse enter on a trigger. When a menu is already open,\nhovering another trigger switches to it."
|
|
158
|
+
},
|
|
159
|
+
{
|
|
160
|
+
"name": "onMenuOpenChange",
|
|
161
|
+
"type": "(menuId: string, open: boolean) => void",
|
|
162
|
+
"default": "",
|
|
163
|
+
"description": "Notify the navigationmenu that a menu's open state has changed.\nCalled by child Menu.Root via its onOpenChange."
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"name": "orientation",
|
|
167
|
+
"type": "NavigationMenuOrientation",
|
|
168
|
+
"default": "",
|
|
169
|
+
"description": "The orientation of the navigationmenu (echoed for child consumption)."
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "modal",
|
|
173
|
+
"type": "boolean",
|
|
174
|
+
"default": "",
|
|
175
|
+
"description": "Whether the navigationmenu is modal (echoed for child consumption)."
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "disabled",
|
|
179
|
+
"type": "boolean",
|
|
180
|
+
"default": "",
|
|
181
|
+
"description": "Whether all menus in the navigationmenu are disabled (echoed for child consumption)."
|
|
182
|
+
},
|
|
183
|
+
{
|
|
184
|
+
"name": "focusSibling",
|
|
185
|
+
"type": "(currentMenuId: string, direction: \"next\" | \"previous\") => void",
|
|
186
|
+
"default": "",
|
|
187
|
+
"description": "Move focus to the next or previous sibling trigger and (if a menu is\nalready open) switch the open menu accordingly. Used by the embedded\n `Menu` to forward ArrowRight / ArrowLeft from list-level into the\nnavigationmenu when the focused item is not a submenu trigger."
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
"name": "setPendingFocus",
|
|
191
|
+
"type": "(target: \"first\" | \"last\") => void",
|
|
192
|
+
"default": "",
|
|
193
|
+
"description": "Set the focus target the next time a menu opens. Used by NavigationMenu's\ntrigger keyboard handler so ArrowDown opens the menu and lands on its\nfirst item, while ArrowUp opens it on the last item (WAI-ARIA NavigationMenu\nkeyboard pattern)."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"name": "consumePendingFocus",
|
|
197
|
+
"type": "() => \"first\" | \"last\"",
|
|
198
|
+
"default": "",
|
|
199
|
+
"description": "Read and clear any pending focus target queued by the navigationmenu. The\nembedded `Menu` calls this from `onListFocus` to decide whether to\nfocus the first or last item on open."
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
"name": "registerInstantSignal",
|
|
203
|
+
"type": "(menuId: string, handler: () => void) => () => void",
|
|
204
|
+
"default": "",
|
|
205
|
+
"description": "Register a callback fired when the navigationmenu is about to switch between\ntwo sibling menus involving this menu. The child `Menu` uses this to\nflip its own `instantType` and skip the open/close animation during\nfast traversal. Returns an unregister function."
|
|
206
|
+
}
|
|
207
|
+
],
|
|
208
|
+
"methods": []
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
"types": {
|
|
212
|
+
"UseNavigationMenuInstance": {
|
|
213
|
+
"description": "Instance of useNavigationMenu headless.",
|
|
214
|
+
"values": "HeadlessInstance<UseNavigationMenuProps, UseNavigationMenuState, UseNavigationMenuExposes>"
|
|
215
|
+
}
|
|
216
|
+
},
|
|
217
|
+
"variables": {}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
]
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# useNavigationMenu
|
|
2
|
+
|
|
3
|
+
Hook that coordinates multiple useMenu instances inside a horizontal navigation bar with sibling traversal and single-open-at-a-time behavior.
|
|
4
|
+
|
|
5
|
+
```tsx
|
|
6
|
+
'use client';
|
|
7
|
+
import { useMenu } from '@primereact/headless/menu';
|
|
8
|
+
import { useNavigationMenu } from '@primereact/headless/navigationmenu';
|
|
9
|
+
import { usePortal } from '@primereact/headless/portal';
|
|
10
|
+
import { usePositioner } from '@primereact/headless/positioner';
|
|
11
|
+
import * as React from 'react';
|
|
12
|
+
import { createPortal } from 'react-dom';
|
|
13
|
+
|
|
14
|
+
function HeadlessMenu({
|
|
15
|
+
label,
|
|
16
|
+
items,
|
|
17
|
+
navigationmenu,
|
|
18
|
+
menuId
|
|
19
|
+
}: {
|
|
20
|
+
label: string;
|
|
21
|
+
items: string[];
|
|
22
|
+
navigationmenu: ReturnType<typeof useNavigationMenu>;
|
|
23
|
+
menuId: string;
|
|
24
|
+
}) {
|
|
25
|
+
const menu = useMenu({ navigationmenu, navigationmenuMenuId: menuId });
|
|
26
|
+
const { triggerProps, popupProps, positionerProps, getListProps, getItemProps, state, popover } = menu;
|
|
27
|
+
const portal = usePortal();
|
|
28
|
+
|
|
29
|
+
// Drive position via floating-ui through usePositioner — without it the
|
|
30
|
+
// popup would render at (0,0) since popover only tracks element refs.
|
|
31
|
+
usePositioner({
|
|
32
|
+
anchor: popover.state.anchorElement,
|
|
33
|
+
content: popover.state.positionerElement,
|
|
34
|
+
side: 'bottom',
|
|
35
|
+
align: 'start',
|
|
36
|
+
sideOffset: 4,
|
|
37
|
+
flip: true,
|
|
38
|
+
shift: true
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
// Compose the popover anchor ref from triggerProps with NavigationMenu's
|
|
42
|
+
// trigger registration so both popup positioning and sibling navigation
|
|
43
|
+
// work for the same button element.
|
|
44
|
+
const triggerRef = React.useCallback(
|
|
45
|
+
(node: HTMLButtonElement | null) => {
|
|
46
|
+
(triggerProps.ref as (n: HTMLElement | null) => void)?.(node);
|
|
47
|
+
navigationmenu.registerTrigger(menuId, node);
|
|
48
|
+
},
|
|
49
|
+
[triggerProps.ref, navigationmenu, menuId]
|
|
50
|
+
);
|
|
51
|
+
|
|
52
|
+
return (
|
|
53
|
+
<>
|
|
54
|
+
<button
|
|
55
|
+
{...triggerProps}
|
|
56
|
+
ref={triggerRef}
|
|
57
|
+
onKeyDown={(event) => navigationmenu.onTriggerKeyDown(menuId, event)}
|
|
58
|
+
onMouseEnter={() => navigationmenu.onTriggerMouseEnter(menuId)}
|
|
59
|
+
className="inline-flex items-center px-3 py-1.5 rounded-md text-sm font-medium text-surface-700 dark:text-surface-200 hover:bg-surface-100 dark:hover:bg-surface-800 data-open:bg-surface-100 dark:data-open:bg-surface-800 outline-none"
|
|
60
|
+
>
|
|
61
|
+
{label}
|
|
62
|
+
</button>
|
|
63
|
+
{portal.state.mounted &&
|
|
64
|
+
state.open &&
|
|
65
|
+
popover.state.rendered &&
|
|
66
|
+
createPortal(
|
|
67
|
+
<div {...positionerProps}>
|
|
68
|
+
<div
|
|
69
|
+
{...popupProps}
|
|
70
|
+
className="min-w-44 bg-surface-0 dark:bg-surface-900 border border-surface-200 dark:border-surface-700 rounded-lg shadow-md overflow-hidden"
|
|
71
|
+
>
|
|
72
|
+
<div {...getListProps()} className="list-none m-0 p-1 flex flex-col gap-0.5 outline-none">
|
|
73
|
+
{items.map((item) => (
|
|
74
|
+
<div
|
|
75
|
+
key={item}
|
|
76
|
+
{...getItemProps({ value: item.toLowerCase().replace(/\s+/g, '-') })}
|
|
77
|
+
className="flex items-center gap-2 px-3 py-2 rounded-md cursor-pointer text-sm text-surface-700 dark:text-surface-200 hover:bg-surface-100 dark:hover:bg-surface-800 data-focused:bg-surface-100 dark:data-focused:bg-surface-700 select-none"
|
|
78
|
+
>
|
|
79
|
+
{item}
|
|
80
|
+
</div>
|
|
81
|
+
))}
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
</div>,
|
|
85
|
+
document.body
|
|
86
|
+
)}
|
|
87
|
+
</>
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
export default function BasicDemo() {
|
|
92
|
+
const navigationmenu = useNavigationMenu();
|
|
93
|
+
|
|
94
|
+
return (
|
|
95
|
+
<div className="flex justify-center">
|
|
96
|
+
<div
|
|
97
|
+
{...navigationmenu.rootProps}
|
|
98
|
+
className="inline-flex items-center gap-1 p-1 bg-surface-0 dark:bg-surface-900 border border-surface-200 dark:border-surface-700 rounded-lg"
|
|
99
|
+
>
|
|
100
|
+
<HeadlessMenu label="File" items={['New Document', 'Open', 'Save', 'Save As…']} navigationmenu={navigationmenu} menuId="file" />
|
|
101
|
+
<HeadlessMenu label="Edit" items={['Undo', 'Redo', 'Cut', 'Copy', 'Paste']} navigationmenu={navigationmenu} menuId="edit" />
|
|
102
|
+
<HeadlessMenu label="View" items={['Zoom In', 'Zoom Out', 'Reset Zoom']} navigationmenu={navigationmenu} menuId="view" />
|
|
103
|
+
<HeadlessMenu label="Help" items={['Documentation', 'Support', 'About']} navigationmenu={navigationmenu} menuId="help" />
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
);
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Usage
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
import { useMenu } from '@primereact/headless/menu';
|
|
114
|
+
import { useNavigationMenu } from '@primereact/headless/navigationmenu';
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
```tsx
|
|
118
|
+
const navigationmenu = useNavigationMenu();
|
|
119
|
+
const fileMenu = useMenu({ navigationmenu, navigationmenuMenuId: 'file' });
|
|
120
|
+
const editMenu = useMenu({ navigationmenu, navigationmenuMenuId: 'edit' });
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
`useNavigationMenu` tracks which child menu is currently open and switches between them on hover or arrow-key traversal. Each `useMenu` registered to the bar surrenders its open-state to the navigation menu via the `navigationmenu` / `navigationmenuMenuId` props.
|
|
124
|
+
|
|
125
|
+
See [Primitive](/docs/primitive/components/navigationmenu) for a component-based API.
|
|
126
|
+
|
|
127
|
+
## Features
|
|
128
|
+
|
|
129
|
+
- **Single-open-at-a-time**, only one child menu may be open; opening another auto-closes the previous
|
|
130
|
+
- **Hover-to-switch**, moving the pointer onto a sibling trigger while a menu is open transfers focus and open state
|
|
131
|
+
- **Arrow-key traversal**, `focusSibling` lets child menus route arrow keys across triggers
|
|
132
|
+
- **Instant transition signal**, `registerInstantSignal` enables animation-less hand-off when switching siblings
|
|
133
|
+
- **Horizontal or vertical orientation**, exposed via `aria-orientation` and `data-orientation`
|
|
134
|
+
|
|
135
|
+
## API
|
|
136
|
+
|
|
137
|
+
### useNavigationMenu
|
|
138
|
+
|
|
139
|
+
<DocTable name="useNavigationMenu" category="api" />
|
|
140
|
+
|
|
141
|
+
### Returned values
|
|
142
|
+
|
|
143
|
+
| Property | Description |
|
|
144
|
+
| ------------------- | ---------------------------------------------------------------------------------- |
|
|
145
|
+
| `rootProps` | Props for the navigation menu container (`role="menubar"`, ARIA + data attributes) |
|
|
146
|
+
| `state.openMenuId` | Id of the currently open child menu, or `null` |
|
|
147
|
+
| `state.hasOpenMenu` | Whether any child menu is currently open |
|
|
148
|
+
| `isMenuOpen(id)` | Returns `true` when the menu with the given id is the active one |
|
|
149
|
+
| `onMenuOpenChange` | Callback used by child `useMenu` to report open-state changes back to the bar |
|
|
150
|
+
| `focusSibling` | `(currentMenuId, 'next' \| 'previous')`, moves focus to the adjacent trigger |
|
|
151
|
+
| `setPendingFocus` | Marks a sibling for focus after the current menu closes |
|
|
152
|
+
| `registerTrigger` | Used by child menus to register their trigger DOM ref for keyboard navigation |
|
|
153
|
+
|
|
154
|
+
## Accessibility
|
|
155
|
+
|
|
156
|
+
NavigationMenu exposes `role="menubar"` and reflects orientation via `aria-orientation`. Each child trigger participates in arrow-key navigation.
|
|
157
|
+
|
|
158
|
+
### Keyboard Support
|
|
159
|
+
|
|
160
|
+
| Key | Function |
|
|
161
|
+
| ---------------------------- | -------------------------------------------------------------------- |
|
|
162
|
+
| `left arrow` / `right arrow` | Moves focus to the previous / next trigger (horizontal orientation). |
|
|
163
|
+
| `up arrow` / `down arrow` | Moves focus to the previous / next trigger (vertical orientation). |
|
|
164
|
+
| `enter` / `space` | Opens the focused menu. |
|
|
165
|
+
| `home` / `end` | Moves focus to the first / last trigger. |
|
|
166
|
+
| `escape` | Closes the open menu and returns focus to its trigger. |
|