@primereact/headless 11.0.0-alpha.1 → 11.0.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.mjs +1 -1
- package/accordion/index.mjs.map +1 -1
- package/accordion/useAccordion.d.ts +6 -6
- package/animateonscroll/index.d.ts +2 -0
- package/animateonscroll/index.mjs +2 -0
- package/animateonscroll/index.mjs.map +1 -0
- package/animateonscroll/useAnimateOnScroll.d.ts +3 -0
- package/animateonscroll/useAnimateOnScroll.props.d.ts +2 -0
- package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
- package/autocomplete/index.d.ts +2 -0
- package/autocomplete/index.mjs +2 -0
- package/autocomplete/index.mjs.map +1 -0
- package/autocomplete/useAutoComplete.d.ts +87 -0
- package/autocomplete/useAutoComplete.props.d.ts +2 -0
- package/autocomplete/useAutoComplete.test.d.ts +0 -0
- package/breadcrumb/index.d.ts +2 -0
- package/breadcrumb/index.mjs +2 -0
- package/breadcrumb/index.mjs.map +1 -0
- package/breadcrumb/useBreadcrumb.d.ts +3 -0
- package/breadcrumb/useBreadcrumb.props.d.ts +2 -0
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/carousel/index.d.ts +2 -0
- package/carousel/index.mjs +2 -0
- package/carousel/index.mjs.map +1 -0
- package/carousel/useCarousel.d.ts +23 -0
- package/carousel/useCarousel.props.d.ts +2 -0
- package/carousel/useCarousel.test.d.ts +0 -0
- package/checkboxgroup/index.d.ts +2 -0
- package/checkboxgroup/index.mjs +2 -0
- package/checkboxgroup/index.mjs.map +1 -0
- package/checkboxgroup/useCheckboxGroup.d.ts +7 -0
- package/checkboxgroup/useCheckboxGroup.props.d.ts +2 -0
- package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
- package/collapsible/index.d.ts +2 -0
- package/collapsible/index.mjs +2 -0
- package/collapsible/index.mjs.map +1 -0
- package/collapsible/useCollapsible.d.ts +9 -0
- package/collapsible/useCollapsible.props.d.ts +2 -0
- package/collapsible/useCollapsible.test.d.ts +0 -0
- package/colorpicker/colorManager.d.ts +102 -0
- package/colorpicker/index.d.ts +3 -0
- package/colorpicker/index.mjs +2 -0
- package/colorpicker/index.mjs.map +1 -0
- package/colorpicker/useColorPicker.d.ts +59 -0
- package/colorpicker/useColorPicker.props.d.ts +2 -0
- package/colorpicker/useColorPicker.test.d.ts +0 -0
- package/commandmenu/index.d.ts +2 -0
- package/commandmenu/index.mjs +2 -0
- package/commandmenu/index.mjs.map +1 -0
- package/commandmenu/useCommandMenu.d.ts +11 -0
- package/commandmenu/useCommandMenu.props.d.ts +2 -0
- package/commandmenu/useCommandMenu.test.d.ts +0 -0
- package/compare/index.d.ts +2 -0
- package/compare/index.mjs +2 -0
- package/compare/index.mjs.map +1 -0
- package/compare/useCompare.d.ts +35 -0
- package/compare/useCompare.props.d.ts +2 -0
- package/compare/useCompare.test.d.ts +0 -0
- package/confirmdialog/index.d.ts +2 -0
- package/confirmdialog/index.mjs +2 -0
- package/confirmdialog/index.mjs.map +1 -0
- package/confirmdialog/useConfirmDialog.d.ts +43 -0
- package/confirmdialog/useConfirmDialog.props.d.ts +2 -0
- package/confirmdialog/useConfirmDialog.test.d.ts +0 -0
- package/confirmpopup/index.d.ts +2 -0
- package/confirmpopup/index.mjs +2 -0
- package/confirmpopup/index.mjs.map +1 -0
- package/confirmpopup/useConfirmPopup.d.ts +25 -0
- package/confirmpopup/useConfirmPopup.props.d.ts +2 -0
- package/confirmpopup/useConfirmPopup.test.d.ts +0 -0
- package/contextmenu/index.d.ts +2 -0
- package/contextmenu/index.mjs +2 -0
- package/contextmenu/index.mjs.map +1 -0
- package/contextmenu/useContextMenu.d.ts +1 -0
- package/contextmenu/useContextMenu.props.d.ts +2 -0
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/dataview/index.d.ts +2 -0
- package/dataview/index.mjs +2 -0
- package/dataview/index.mjs.map +1 -0
- package/dataview/useDataView.d.ts +3 -0
- package/dataview/useDataView.props.d.ts +2 -0
- package/dataview/useDataView.test.d.ts +0 -0
- package/datepicker/index.d.ts +2 -0
- package/datepicker/index.mjs +2 -0
- package/datepicker/index.mjs.map +1 -0
- package/datepicker/useDatePicker.d.ts +114 -0
- package/datepicker/useDatePicker.props.d.ts +2 -0
- package/datepicker/useDatePicker.test.d.ts +0 -0
- package/dialog/index.d.ts +2 -0
- package/dialog/index.mjs +2 -0
- package/dialog/index.mjs.map +1 -0
- package/dialog/useDialog.d.ts +30 -0
- package/dialog/useDialog.props.d.ts +2 -0
- package/dialog/useDialog.test.d.ts +0 -0
- package/drawer/index.d.ts +2 -0
- package/drawer/index.mjs +2 -0
- package/drawer/index.mjs.map +1 -0
- package/drawer/useDrawer.d.ts +24 -0
- package/drawer/useDrawer.props.d.ts +2 -0
- package/drawer/useDrawer.test.d.ts +0 -0
- package/fieldset/index.mjs +1 -1
- package/fieldset/index.mjs.map +1 -1
- package/fieldset/useFieldset.d.ts +29 -1
- package/fileupload/index.d.ts +2 -0
- package/fileupload/index.mjs +2 -0
- package/fileupload/index.mjs.map +1 -0
- package/fileupload/useFileUpload.d.ts +26 -0
- package/fileupload/useFileUpload.props.d.ts +2 -0
- package/fileupload/useFileUpload.test.d.ts +0 -0
- package/floatlabel/index.d.ts +2 -0
- package/floatlabel/index.mjs +2 -0
- package/floatlabel/index.mjs.map +1 -0
- package/floatlabel/useFloatLabel.d.ts +1 -0
- package/floatlabel/useFloatLabel.props.d.ts +2 -0
- package/floatlabel/useFloatLabel.test.d.ts +0 -0
- package/fluid/index.d.ts +2 -0
- package/fluid/index.mjs +2 -0
- package/fluid/index.mjs.map +1 -0
- package/fluid/useFluid.d.ts +1 -0
- package/fluid/useFluid.props.d.ts +2 -0
- package/fluid/useFluid.test.d.ts +0 -0
- package/focustrap/index.d.ts +2 -0
- package/focustrap/index.mjs +2 -0
- package/focustrap/index.mjs.map +1 -0
- package/focustrap/useFocusTrap.d.ts +9 -0
- package/focustrap/useFocusTrap.props.d.ts +2 -0
- package/focustrap/useFocusTrap.test.d.ts +0 -0
- package/gallery/index.d.ts +2 -0
- package/gallery/index.mjs +2 -0
- package/gallery/index.mjs.map +1 -0
- package/gallery/item/index.d.ts +2 -0
- package/gallery/item/index.mjs +2 -0
- package/gallery/item/index.mjs.map +1 -0
- package/gallery/item/useGalleryItem.d.ts +45 -0
- package/gallery/item/useGalleryItem.props.d.ts +2 -0
- package/gallery/useGallery.d.ts +31 -0
- package/gallery/useGallery.props.d.ts +2 -0
- package/gallery/useGallery.test.d.ts +0 -0
- package/iconfield/index.d.ts +2 -0
- package/iconfield/index.mjs +2 -0
- package/iconfield/index.mjs.map +1 -0
- package/iconfield/useIconField.d.ts +1 -0
- package/iconfield/useIconField.props.d.ts +2 -0
- package/iconfield/useIconField.test.d.ts +0 -0
- package/iftalabel/index.d.ts +2 -0
- package/iftalabel/index.mjs +2 -0
- package/iftalabel/index.mjs.map +1 -0
- package/iftalabel/useIftaLabel.d.ts +1 -0
- package/iftalabel/useIftaLabel.props.d.ts +2 -0
- package/iftalabel/useIftaLabel.test.d.ts +0 -0
- package/inplace/index.mjs +1 -1
- package/inplace/index.mjs.map +1 -1
- package/inplace/useInplace.d.ts +1 -1
- package/inputgroup/index.d.ts +2 -0
- package/inputgroup/index.mjs +2 -0
- package/inputgroup/index.mjs.map +1 -0
- package/inputgroup/useInputGroup.d.ts +1 -0
- package/inputgroup/useInputGroup.props.d.ts +2 -0
- package/inputgroup/useInputGroup.test.d.ts +0 -0
- package/inputnumber/index.d.ts +2 -0
- package/inputnumber/index.mjs +2 -0
- package/inputnumber/index.mjs.map +1 -0
- package/inputnumber/useInputNumber.d.ts +23 -0
- package/inputnumber/useInputNumber.props.d.ts +2 -0
- package/inputnumber/useInputNumber.test.d.ts +0 -0
- package/inputotp/index.d.ts +2 -0
- package/inputotp/index.mjs +2 -0
- package/inputotp/index.mjs.map +1 -0
- package/inputotp/useInputOtp.d.ts +14 -0
- package/inputotp/useInputOtp.props.d.ts +2 -0
- package/inputotp/useInputOtp.test.d.ts +0 -0
- package/inputtags/index.d.ts +2 -0
- package/inputtags/index.mjs +2 -0
- package/inputtags/index.mjs.map +1 -0
- package/inputtags/useInputTags.d.ts +86 -0
- package/inputtags/useInputTags.props.d.ts +2 -0
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/knob/index.d.ts +2 -0
- package/knob/index.mjs +2 -0
- package/knob/index.mjs.map +1 -0
- package/knob/useKnob.d.ts +17 -0
- package/knob/useKnob.props.d.ts +2 -0
- package/knob/useKnob.test.d.ts +0 -0
- package/listbox/index.d.ts +2 -0
- package/listbox/index.mjs +2 -0
- package/listbox/index.mjs.map +1 -0
- package/listbox/useListbox.d.ts +52 -0
- package/listbox/useListbox.props.d.ts +2 -0
- package/listbox/useListbox.test.d.ts +0 -0
- package/menu/index.d.ts +2 -0
- package/menu/index.mjs +2 -0
- package/menu/index.mjs.map +1 -0
- package/menu/sub/index.d.ts +2 -0
- package/menu/sub/index.mjs +2 -0
- package/menu/sub/index.mjs.map +1 -0
- package/menu/sub/useMenuSub.d.ts +19 -0
- package/menu/sub/useMenuSub.props.d.ts +2 -0
- package/menu/useMenu.d.ts +34 -0
- package/menu/useMenu.props.d.ts +2 -0
- package/menu/useMenu.test.d.ts +0 -0
- package/message/index.d.ts +2 -0
- package/message/index.mjs +2 -0
- package/message/index.mjs.map +1 -0
- package/message/useMessage.d.ts +6 -0
- package/message/useMessage.props.d.ts +2 -0
- package/message/useMessage.test.d.ts +0 -0
- package/orgchart/index.d.ts +2 -0
- package/orgchart/index.mjs +2 -0
- package/orgchart/index.mjs.map +1 -0
- package/orgchart/useOrgChart.d.ts +20 -0
- package/orgchart/useOrgChart.props.d.ts +2 -0
- package/orgchart/useOrgChart.test.d.ts +0 -0
- package/overlay/index.d.ts +2 -0
- package/overlay/index.mjs +2 -0
- package/overlay/index.mjs.map +1 -0
- package/overlay/useOverlay.d.ts +16 -0
- package/overlay/useOverlay.props.d.ts +2 -0
- package/overlay/useOverlay.test.d.ts +0 -0
- package/overlaybadge/index.d.ts +2 -0
- package/overlaybadge/index.mjs +2 -0
- package/overlaybadge/index.mjs.map +1 -0
- package/overlaybadge/useOverlayBadge.d.ts +1 -0
- package/overlaybadge/useOverlayBadge.props.d.ts +2 -0
- package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
- package/package.json +6 -6
- package/paginator/index.d.ts +2 -0
- package/paginator/index.mjs +2 -0
- package/paginator/index.mjs.map +1 -0
- package/paginator/usePaginator.d.ts +19 -0
- package/paginator/usePaginator.props.d.ts +2 -0
- package/paginator/usePaginator.test.d.ts +0 -0
- package/panel/index.mjs +1 -1
- package/panel/index.mjs.map +1 -1
- package/panel/usePanel.d.ts +24 -7
- package/password/index.d.ts +2 -0
- package/password/index.mjs +2 -0
- package/password/index.mjs.map +1 -0
- package/password/usePassword.d.ts +9 -0
- package/password/usePassword.props.d.ts +2 -0
- package/password/usePassword.test.d.ts +0 -0
- package/placer/index.d.ts +2 -0
- package/placer/index.mjs +2 -0
- package/placer/index.mjs.map +1 -0
- package/placer/usePlacer.d.ts +12 -0
- package/placer/usePlacer.props.d.ts +2 -0
- package/placer/usePlacer.test.d.ts +0 -0
- package/popover/index.d.ts +2 -0
- package/popover/index.mjs +2 -0
- package/popover/index.mjs.map +1 -0
- package/popover/usePopover.d.ts +19 -0
- package/popover/usePopover.props.d.ts +2 -0
- package/popover/usePopover.test.d.ts +0 -0
- package/portal/index.d.ts +2 -0
- package/portal/index.mjs +2 -0
- package/portal/index.mjs.map +1 -0
- package/portal/usePortal.d.ts +3 -0
- package/portal/usePortal.props.d.ts +2 -0
- package/portal/usePortal.test.d.ts +0 -0
- package/positioner/index.d.ts +2 -0
- package/positioner/index.mjs +2 -0
- package/positioner/index.mjs.map +1 -0
- package/positioner/usePositioner copy.d.ts +18 -0
- package/positioner/usePositioner.d.ts +11 -0
- package/positioner/usePositioner.props.d.ts +2 -0
- package/positioner/usePositioner.test.d.ts +0 -0
- package/radiobuttongroup/index.d.ts +2 -0
- package/radiobuttongroup/index.mjs +2 -0
- package/radiobuttongroup/index.mjs.map +1 -0
- package/radiobuttongroup/useRadioButtonGroup.d.ts +7 -0
- package/radiobuttongroup/useRadioButtonGroup.props.d.ts +2 -0
- package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
- package/rating/index.d.ts +2 -0
- package/rating/index.mjs +2 -0
- package/rating/index.mjs.map +1 -0
- package/rating/useRating.d.ts +15 -0
- package/rating/useRating.props.d.ts +2 -0
- package/rating/useRating.test.d.ts +0 -0
- package/select/index.d.ts +2 -0
- package/select/index.mjs +2 -0
- package/select/index.mjs.map +1 -0
- package/select/useSelect.d.ts +87 -0
- package/select/useSelect.props.d.ts +2 -0
- package/select/useSelect.test.d.ts +1 -0
- package/slider/index.d.ts +2 -0
- package/slider/index.mjs +2 -0
- package/slider/index.mjs.map +1 -0
- package/slider/useSlider.d.ts +20 -0
- package/slider/useSlider.props.d.ts +2 -0
- package/slider/useSlider.test.d.ts +0 -0
- package/speeddial/index.d.ts +2 -0
- package/speeddial/index.mjs +2 -0
- package/speeddial/index.mjs.map +1 -0
- package/speeddial/useSpeedDial.d.ts +16 -0
- package/speeddial/useSpeedDial.props.d.ts +2 -0
- package/speeddial/useSpeedDial.test.d.ts +0 -0
- package/terminal/index.d.ts +2 -0
- package/terminal/index.mjs +2 -0
- package/terminal/index.mjs.map +1 -0
- package/terminal/useTerminal.d.ts +13 -0
- package/terminal/useTerminal.props.d.ts +2 -0
- package/terminal/useTerminal.test.d.ts +0 -0
- package/textarea/index.d.ts +2 -0
- package/textarea/index.mjs +2 -0
- package/textarea/index.mjs.map +1 -0
- package/textarea/useTextarea.d.ts +4 -0
- package/textarea/useTextarea.props.d.ts +2 -0
- package/textarea/useTextarea.test.d.ts +0 -0
- package/timeline/index.d.ts +2 -0
- package/timeline/index.mjs +2 -0
- package/timeline/index.mjs.map +1 -0
- package/timeline/useTimeline.d.ts +1 -0
- package/timeline/useTimeline.props.d.ts +2 -0
- package/timeline/useTimeline.test.d.ts +0 -0
- package/toast/index.d.ts +2 -0
- package/toast/index.mjs +2 -0
- package/toast/index.mjs.map +1 -0
- package/toast/useToast.d.ts +31 -0
- package/toast/useToast.props.d.ts +2 -0
- package/toast/useToast.test.d.ts +0 -0
- package/toaster/index.d.ts +3 -0
- package/toaster/index.mjs +2 -0
- package/toaster/index.mjs.map +1 -0
- package/toaster/toastStore.d.ts +40 -0
- package/toaster/useToaster.d.ts +26 -0
- package/toaster/useToaster.props.d.ts +2 -0
- package/toaster/useToaster.test.d.ts +0 -0
- package/togglebuttongroup/index.d.ts +2 -0
- package/togglebuttongroup/index.mjs +2 -0
- package/togglebuttongroup/index.mjs.map +1 -0
- package/togglebuttongroup/useToggleButtonGroup.d.ts +8 -0
- package/togglebuttongroup/useToggleButtonGroup.props.d.ts +2 -0
- package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
- package/tooltip/group/index.d.ts +2 -0
- package/tooltip/group/index.mjs +2 -0
- package/tooltip/group/index.mjs.map +1 -0
- package/tooltip/group/useTooltipGroup.d.ts +9 -0
- package/tooltip/group/useTooltipGroup.props.d.ts +2 -0
- package/tooltip/group/useTooltipGroup.test.d.ts +0 -0
- package/tooltip/index.d.ts +2 -0
- package/tooltip/index.mjs +2 -0
- package/tooltip/index.mjs.map +1 -0
- package/tooltip/useTooltip.d.ts +28 -0
- package/tooltip/useTooltip.props.d.ts +2 -0
- package/tooltip/useTooltip.test.d.ts +0 -0
- package/tree/TreeDragDropService.d.ts +24 -0
- package/tree/index.d.ts +3 -0
- package/tree/index.mjs +2 -0
- package/tree/index.mjs.map +1 -0
- package/tree/useTree.d.ts +27 -0
- package/tree/useTree.props.d.ts +2 -0
- package/tree/useTree.test.d.ts +0 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { useInputNumberProps } from '@primereact/types/shared/inputnumber';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const useInputNumber: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<useInputNumberProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
value: number | null | undefined;
|
|
6
|
+
formattedValue: string;
|
|
7
|
+
};
|
|
8
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
9
|
+
onInput: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
10
|
+
onInputKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
11
|
+
onInputKeyPress: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
12
|
+
onInputClick: (event: React.MouseEvent<HTMLInputElement>) => void;
|
|
13
|
+
onInputPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
14
|
+
onInputFocus: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
15
|
+
onInputBlur: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
16
|
+
maxBoundry: () => boolean;
|
|
17
|
+
minBoundry: () => boolean;
|
|
18
|
+
increment: (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => void;
|
|
19
|
+
decrement: (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => void;
|
|
20
|
+
stepUp: () => void;
|
|
21
|
+
stepDown: () => void;
|
|
22
|
+
stopSpin: () => void;
|
|
23
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as k}from"@primereact/core/headless";import{useControlledState as b}from"@primereact/hooks/use-controlled-state";import{isTouchDevice as x}from"@primeuix/utils";import*as u from"react";var E={value:void 0,defaultValue:void 0,integerOnly:!1,mask:!1,onValueChange:void 0};var O=k({name:"useInputOtp",defaultProps:E,setup({props:n}){let[r,T]=b({value:n.value,defaultValue:n.defaultValue,onChange:n.onValueChange}),o=u.useMemo(()=>{let e=r!=null?r:"";return typeof e=="string"&&e?e.split(""):[]},[r]),s=u.useRef(0),I={value:r,tokens:o},g=u.useCallback(()=>{let e=s.current;return s.current+=1,e},[]),M=e=>e>="0"&&e<="9",y=u.useMemo(()=>n.integerOnly?"numeric":"text",[n.integerOnly]),H=u.useMemo(()=>n.mask?"password":"text",[n.mask]),i=(e,t)=>{let a=t.join("");T([a,{originalEvent:e,value:a}])},L=(e,t)=>{let a=e.nativeEvent,c=e.target,d=[...o];d[t]=c.value,i(e,d),a.inputType==="deleteContentBackward"?l(e):(a.inputType==="insertText"||a.inputType==="deleteContentForward"||x()&&e instanceof CustomEvent)&&p(e)},l=e=>{let t=f(e.target);t&&(t.focus(),t.select())},p=e=>{let t=m(e.target);t&&(t.focus(),t.select())},m=e=>{let t=e.nextElementSibling;return t?t.nodeName==="INPUT"?t:m(t):null},f=e=>{let t=e.previousElementSibling;return t?t.nodeName==="INPUT"?t:f(t):null};return{state:I,registerText:g,inputMode:y,inputType:H,onInput:L,onClick:e=>{setTimeout(()=>e.target.select(),1)},onKeyDown:e=>{if(!(e.ctrlKey||e.metaKey))switch(e.code){case"ArrowLeft":l(e),e.preventDefault();break;case"ArrowUp":case"ArrowDown":e.preventDefault();break;case"Backspace":e.target.value.length===0&&(l(e),e.preventDefault());break;case"ArrowRight":p(e),e.preventDefault();break;case"Enter":case"NumpadEnter":case"Tab":break;default:(n.integerOnly&&(e.code==="Space"||!M(e.key))||o.length>=s.current&&e.code!=="Delete")&&e.preventDefault();break}},onPaste:e=>{let t=e.clipboardData.getData("text");if(t.length){let a=t.substring(0,s.current);if(!n.integerOnly||!isNaN(Number(a))){let c=a.split("");i(e,c)}}e.preventDefault()}}}});export{E as defaultProps,O as useInputOtp};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/inputotp/useInputOtp.ts","../../src/inputotp/useInputOtp.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { isTouchDevice } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputOtp.props';\n\nexport const useInputOtp = withHeadless({\n name: 'useInputOtp',\n defaultProps,\n setup({ props }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue,\n onChange: props.onValueChange\n });\n\n const tokens = React.useMemo(() => {\n const val = valueState ?? '';\n\n return typeof val === 'string' && val ? val.split('') : [];\n }, [valueState]);\n\n const textCounter = React.useRef(0);\n\n const state = {\n value: valueState,\n tokens\n };\n\n const registerText = React.useCallback(() => {\n const index = textCounter.current;\n\n textCounter.current += 1;\n\n return index;\n }, []);\n\n const isDigit = (key: string) => key >= '0' && key <= '9';\n\n const inputMode = React.useMemo(() => {\n return props.integerOnly ? 'numeric' : 'text';\n }, [props.integerOnly]);\n\n const inputType = React.useMemo(() => {\n return props.mask ? 'password' : 'text';\n }, [props.mask]);\n\n const updateTokens = (event: React.SyntheticEvent<HTMLInputElement>, currentTokens: string[]) => {\n const newValue = currentTokens.join('');\n\n setValueState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n };\n\n const onInput = (event: React.SyntheticEvent<HTMLInputElement>, index: number) => {\n const inputEvent = event.nativeEvent as InputEvent;\n const target = event.target as HTMLInputElement;\n const currentTokens = [...tokens];\n\n currentTokens[index] = target.value;\n updateTokens(event, currentTokens);\n\n if (inputEvent.inputType === 'deleteContentBackward') {\n moveToPrev(event);\n } else if (inputEvent.inputType === 'insertText' || inputEvent.inputType === 'deleteContentForward' || (isTouchDevice() && event instanceof CustomEvent)) {\n moveToNext(event);\n }\n };\n\n const moveToPrev = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const prevInput = findPrevInput(event.target as HTMLInputElement);\n\n if (prevInput) {\n prevInput.focus();\n prevInput.select();\n }\n };\n\n const moveToNext = (event: React.SyntheticEvent<HTMLInputElement>) => {\n const nextInput = findNextInput(event.target as HTMLInputElement);\n\n if (nextInput) {\n nextInput.focus();\n nextInput.select();\n }\n };\n\n const findNextInput = (element: HTMLInputElement): HTMLInputElement | null => {\n const nextInput = element.nextElementSibling;\n\n if (!nextInput) return null;\n\n return nextInput.nodeName === 'INPUT' ? (nextInput as HTMLInputElement) : findNextInput(nextInput as HTMLInputElement);\n };\n\n const findPrevInput = (element: HTMLInputElement): HTMLInputElement | null => {\n const prevInput = element.previousElementSibling;\n\n if (!prevInput) return null;\n\n return prevInput.nodeName === 'INPUT' ? (prevInput as HTMLInputElement) : findPrevInput(prevInput as HTMLInputElement);\n };\n\n const onClick = (event: React.MouseEvent<HTMLInputElement>) => {\n setTimeout(() => (event.target as HTMLInputElement).select(), 1);\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.ctrlKey || event.metaKey) {\n return;\n }\n\n switch (event.code) {\n case 'ArrowLeft':\n moveToPrev(event);\n event.preventDefault();\n\n break;\n\n case 'ArrowUp':\n case 'ArrowDown':\n event.preventDefault();\n\n break;\n\n case 'Backspace':\n if ((event.target as HTMLInputElement).value.length === 0) {\n moveToPrev(event);\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n moveToNext(event);\n event.preventDefault();\n\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Tab':\n break;\n\n default:\n if ((props.integerOnly && (event.code === 'Space' || !isDigit(event.key))) || (tokens.length >= textCounter.current && event.code !== 'Delete')) {\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n const paste = event.clipboardData.getData('text');\n\n if (paste.length) {\n const pastedCode = paste.substring(0, textCounter.current);\n\n if (!props.integerOnly || !isNaN(Number(pastedCode))) {\n const newTokens = pastedCode.split('');\n\n updateTokens(event, newTokens);\n }\n }\n\n event.preventDefault();\n };\n\n return {\n state,\n // methods\n registerText,\n inputMode,\n inputType,\n onInput,\n onClick,\n onKeyDown,\n onPaste\n };\n }\n});\n","import type { useInputOtpProps } from '@primereact/types/shared/inputotp';\n\nexport const defaultProps: useInputOtpProps = {\n value: undefined,\n defaultValue: undefined,\n integerOnly: false,\n mask: false,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","isTouchDevice","React","defaultProps","useInputOtp","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","tokens","val","textCounter","state","registerText","index","isDigit","key","inputMode","inputType","updateTokens","event","currentTokens","newValue","onInput","inputEvent","target","moveToPrev","isTouchDevice","moveToNext","prevInput","findPrevInput","nextInput","findNextInput","element","paste","pastedCode","newTokens"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useInputOtp: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/inputotp").useInputOtpProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: string | null | undefined;
|
|
5
|
+
tokens: string[];
|
|
6
|
+
};
|
|
7
|
+
registerText: () => number;
|
|
8
|
+
inputMode: string;
|
|
9
|
+
inputType: string;
|
|
10
|
+
onInput: (event: React.SyntheticEvent<HTMLInputElement>, index: number) => void;
|
|
11
|
+
onClick: (event: React.MouseEvent<HTMLInputElement>) => void;
|
|
12
|
+
onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
13
|
+
onPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
14
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as se}from"@primereact/core/headless";import{useControlledState as C}from"@primereact/hooks/use-controlled-state";import{useListbox as re}from"@primereact/headless/listbox";import{focus as O,getOuterWidth as de}from"@primeuix/utils";import*as i from"react";var G={defaultValue:void 0,value:void 0,defaultInputValue:"",inputValue:void 0,open:void 0,defaultOpen:void 0,max:void 0,delimiter:void 0,allowDuplicate:void 0,options:[],optionKey:void 0,optionLabel:void 0,optionValue:void 0,optionDisabled:void 0,optionGroupLabel:void 0,optionGroupChildren:void 0,delay:300,minLength:1,appendTo:"body",addOnBlur:void 0,addOnPaste:void 0,addOnTab:void 0,onAdd:void 0,onRemove:void 0,onValueChange:void 0,onInputValueChange:void 0,onComplete:void 0,onOpenChange:void 0};var ve=se({name:"useInputTags",defaultProps:G,setup({props:t,elementRef:v}){var M,H,P;let[m,g]=i.useState(-1),[r,w]=C({value:t.open,defaultValue:(M=t.defaultOpen)!=null?M:!1,onChange:t.onOpenChange}),[B,y]=i.useState(!1),[k,S]=i.useState(!1),q=i.useRef((H=t.defaultValue)!=null?H:[]),[a,E]=C({value:t.value,defaultValue:q.current,onChange:t.onValueChange}),[c,x]=C({value:t.inputValue,defaultValue:(P=t.defaultInputValue)!=null?P:"",onChange:t.onInputValueChange}),I=i.useRef(null),o=re({options:t.options,optionKey:t.optionKey,optionLabel:t.optionLabel,optionValue:t.optionValue,optionDisabled:t.optionDisabled,optionGroupLabel:t.optionGroupLabel,optionGroupChildren:t.optionGroupChildren,multiple:!1,disabled:t.disabled,onValueChange:e=>{var n;return(n=I.current)==null?void 0:n.call(I,e)}}),d=i.useRef(null),R=i.useRef(null),$=i.useRef(new Map),h=i.useRef(null),V=i.useRef(!1),b=!!t.onComplete,j={value:a!=null?a:[],inputValue:c!=null?c:"",focusedItemIndex:m,opened:r,searching:B,focused:k,focusedOptionIndex:o.state.focusedOptionIndex},D=(e,n)=>{n!=null&&t.onComplete&&t.onComplete({originalEvent:e,query:n})},T=()=>{w([!0,{value:!0}])},L=()=>{w([!1,{value:!1}]),y(!1),o.changeFocusedOptionIndex(new Event("blur"),-1)},U=e=>{w([e,{value:e}])},W=()=>{var e,n,l,s;if((s=(l=(n=(e=R==null?void 0:R.current)==null?void 0:e.containerRef)==null?void 0:n.current)==null?void 0:l.elementRef)!=null&&s.current){let u=R.current.containerRef.current.elementRef.current;v!=null&&v.current&&(u.style.minWidth=de(v.current)+"px")}},_=()=>{V.current&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{let e=o.state.focusedOptionIndex,n=e!==-1?e:o.findFirstFocusedOptionIndex();o.changeFocusedOptionIndex(new Event("focus"),n),V.current=!1})})},K=e=>{var u;let n=e.value,l=o.getOptions().find(le=>{let ce=o.getOptionValue(le);return o.isEquals(ce,n)}),s=l?o.getOptionLabel(l):String(n);f(s),o.changeFocusedOptionIndex(new Event("select"),-1),O((u=d.current)==null?void 0:u.elementRef.current)};I.current=K;let f=e=>{let n=e.trim();if(!n||t.disabled||t.max&&a&&a.length>=t.max||!t.allowDuplicate&&a&&a.includes(n))return;let l=[...a||[],n];E([l,{value:l}]),t.onAdd&&t.onAdd({value:n}),x(["",{query:""}])},F=e=>{if(t.disabled||!a)return;let n=a.filter((l,s)=>s!==e);E([n,{value:n}]),t.onRemove&&t.onRemove({value:a[e],index:e}),g(-1)},J=e=>{h.current&&clearTimeout(h.current);let n=e.target.value;if(m!==-1&&g(-1),t.delimiter){let l=typeof t.delimiter=="string"?new RegExp(t.delimiter.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")):t.delimiter;if(l.test(n)){n.split(l).map(u=>u.trim()).filter(u=>u.length>0).forEach(u=>f(u));return}}x([n,{originalEvent:e,query:n}]),b&&(y(!0),h.current=setTimeout(()=>{D(e,n),o.changeFocusedOptionIndex(new Event("input"),-1)},t.delay))},N=e=>{var n;if(!t.disabled)switch(e.key){case"Tab":te();break;case"Enter":ne(e);break;case"ArrowDown":case"ArrowUp":b&&(!r&&c&&c.length>=((n=t.minLength)!=null?n:1)&&(V.current=!0,T()),o.onListKeyDown(e),e.preventDefault());break;case"ArrowLeft":Z();break;case"ArrowRight":ee();break;case"Backspace":ae();break;case"Escape":r&&(L(),e.preventDefault());break;case"Home":case"End":case"PageUp":case"PageDown":b&&r&&o.onListKeyDown(e);break;default:p&&t.delimiter&&typeof t.delimiter=="string"&&e.key===t.delimiter&&f(c);break}},z=()=>{var e;g(-1),d.current&&!t.disabled&&O((e=d.current)==null?void 0:e.elementRef.current)},Q=e=>{if(!t.addOnPaste)return;let n=e.clipboardData.getData("text");if(t.delimiter){let l=typeof t.delimiter=="string"?new RegExp(t.delimiter.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")):t.delimiter;n.split(l).map(u=>u.trim()).filter(u=>u.length>0).forEach(u=>f(u))}else f(n);setTimeout(()=>{x(["",{query:""}])},0)},X=e=>{t.disabled||(S(!0),b&&(D(e,e.target.value),t.options&&t.options.length>0&&T()))},Y=()=>{S(!1),t.addOnBlur&&p&&f(c),m!==-1&&g(-1)},Z=()=>{let e=m;A&&a&&a.length>0&&(e=e===-1?a.length-1:e-1,e<0&&(e=0)),g(e)},ee=()=>{var n;let e=m;A&&a&&a.length>0&&(e===a.length-1?(e=-1,d.current&&O((n=d.current)==null?void 0:n.elementRef.current)):e!==-1&&e++),g(e)},te=()=>{t.addOnTab&&p&&f(c),r&&L()},ne=e=>{if(b&&r&&o.state.focusedOptionIndex!==-1){let n=o.getOptions()[o.state.focusedOptionIndex];n&&K({originalEvent:e,value:o.getOptionValue(n)}),e.preventDefault()}else p&&f(c)},ae=()=>{if(!c&&a&&a.length>0){let e=a.length-1;F(e)}m!==-1&&F(m)},oe=e=>{var l;if(!a)return;let n=a.filter((s,u)=>u!==e);E([n,{value:n}]),d.current&&O((l=d.current)==null?void 0:l.elementRef.current)},ue=()=>{t.disabled||!a||E([[],{value:[]}])},ie=()=>o.getFocusedOptionId(),A=i.useMemo(()=>!c||c.length===0,[c]),p=i.useMemo(()=>c&&c.trim(),[c]);return i.useEffect(()=>{h.current&&(clearTimeout(h.current),h.current=null)},[]),i.useEffect(()=>{if(!b)return;y(!1);let e=t.options&&t.options.length>0;e&&k&&!r?T():!e&&r&&L()},[t.options]),{state:j,listbox:o,inputRef:d,portalRef:R,itemRefs:$,onClick:z,onChange:J,onKeyDown:N,onPaste:Q,onBlur:Y,onFocus:X,onItemRemoveClick:oe,onRemoveAllItems:ue,changeVisibleState:U,onOverlayEnter:W,onOverlayAfterEnter:_,getFocusedOptionId:ie}}});export{G as defaultProps,ve as useInputTags};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/inputtags/useInputTags.ts","../../src/inputtags/useInputTags.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { useListbox } from '@primereact/headless/listbox';\nimport type { useListboxValueChangeEvent } from '@primereact/types/shared/listbox';\nimport { focus, getOuterWidth } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputTags.props';\n\nexport const useInputTags = withHeadless({\n name: 'useInputTags',\n defaultProps,\n setup({ props, elementRef }) {\n const [focusedItemIndexState, setFocusedItemIndexState] = React.useState<number>(-1);\n const [openState, setOpenState] = useControlledState({\n value: props.open,\n defaultValue: props.defaultOpen ?? false,\n onChange: props.onOpenChange\n });\n const [searchingState, setSearchingState] = React.useState<boolean>(false);\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n\n const defaultValueRef = React.useRef(props.defaultValue ?? []);\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: defaultValueRef.current,\n onChange: props.onValueChange\n });\n\n const [inputValueState, setInputValueState] = useControlledState({\n value: props.inputValue,\n defaultValue: props.defaultInputValue ?? '',\n onChange: props.onInputValueChange\n });\n\n const onListboxValueChange = React.useRef<((event: useListboxValueChangeEvent) => void) | null>(null);\n const listbox = useListbox({\n options: props.options,\n optionKey: props.optionKey,\n optionLabel: props.optionLabel,\n optionValue: props.optionValue,\n optionDisabled: props.optionDisabled,\n optionGroupLabel: props.optionGroupLabel,\n optionGroupChildren: props.optionGroupChildren,\n multiple: false,\n disabled: props.disabled,\n onValueChange: (event: useListboxValueChangeEvent) => onListboxValueChange.current?.(event)\n });\n\n const inputRef = React.useRef<{ elementRef: React.RefObject<HTMLInputElement> } | null>(null); //TODO:\n const portalRef = React.useRef<{ containerRef: { current: { elementRef: React.RefObject<HTMLDivElement> } } } | null>(null);\n const itemRefs = React.useRef<Map<number, HTMLElement>>(new Map());\n const searchTimeout = React.useRef<NodeJS.Timeout | null>(null);\n const focusOnShow = React.useRef<boolean>(false);\n\n const hasDropdown = !!props.onComplete;\n\n const state = {\n value: valueState ?? [],\n inputValue: inputValueState ?? '',\n focusedItemIndex: focusedItemIndexState,\n opened: openState,\n searching: searchingState,\n focused: focusedState,\n focusedOptionIndex: listbox.state.focusedOptionIndex\n };\n\n const search = (event: React.SyntheticEvent, query: string) => {\n //allow empty string but not undefined or null\n if (query === undefined || query === null) {\n return;\n }\n\n if (props.onComplete) {\n props.onComplete({\n originalEvent: event,\n query\n });\n }\n };\n\n const show = () => {\n setOpenState([true, { value: true }]);\n };\n\n const hide = () => {\n setOpenState([false, { value: false }]);\n setSearchingState(false);\n listbox.changeFocusedOptionIndex(new Event('blur') as unknown as React.KeyboardEvent, -1);\n };\n\n const changeVisibleState = (isVisible: boolean) => {\n setOpenState([isVisible, { value: isVisible }]);\n };\n\n const onOverlayEnter = () => {\n if (portalRef?.current?.containerRef?.current?.elementRef?.current) {\n const element = portalRef.current.containerRef.current.elementRef.current;\n\n if (elementRef?.current) {\n element.style.minWidth = getOuterWidth(elementRef.current) + 'px';\n }\n }\n };\n\n const onOverlayAfterEnter = () => {\n if (focusOnShow.current) {\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n const focusedOptionIndex = listbox.state.focusedOptionIndex;\n const indexToFocus = focusedOptionIndex !== -1 ? focusedOptionIndex : listbox.findFirstFocusedOptionIndex();\n\n listbox.changeFocusedOptionIndex(new Event('focus') as unknown as React.KeyboardEvent, indexToFocus);\n focusOnShow.current = false;\n });\n });\n }\n };\n\n const onOptionSelect = (event: { originalEvent: React.SyntheticEvent; value: unknown }) => {\n const selectedValue = event.value;\n const option = listbox.getOptions().find((opt: unknown) => {\n const optValue = listbox.getOptionValue(opt);\n\n return listbox.isEquals(optValue, selectedValue);\n });\n\n const optionLabel = option ? listbox.getOptionLabel(option) : String(selectedValue);\n\n addItem(optionLabel);\n listbox.changeFocusedOptionIndex(new Event('select') as unknown as React.KeyboardEvent, -1);\n focus(inputRef.current?.elementRef.current as HTMLInputElement);\n };\n\n // Connect listbox onValueChange to onOptionSelect\n onListboxValueChange.current = onOptionSelect;\n\n const addItem = (tag: string) => {\n const trimmedTag = tag.trim();\n\n if (!trimmedTag || props.disabled) return;\n\n if (props.max && valueState && valueState.length >= props.max) return;\n\n if (!props.allowDuplicate && valueState && valueState.includes(trimmedTag)) return;\n\n const newValue = [...(valueState || []), trimmedTag];\n\n setValueState([\n newValue,\n {\n value: newValue\n }\n ]);\n\n if (props.onAdd) {\n props.onAdd({\n value: trimmedTag\n });\n }\n\n setInputValueState([\n '',\n {\n query: ''\n }\n ]);\n };\n\n const removeItem = (index: number) => {\n if (props.disabled || !valueState) return;\n\n const newValue = valueState.filter((_: unknown, i: number) => i !== index);\n\n setValueState([\n newValue,\n {\n value: newValue\n }\n ]);\n\n if (props.onRemove) {\n props.onRemove({\n value: valueState[index],\n index\n });\n }\n\n setFocusedItemIndexState(-1);\n };\n\n const onChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n }\n\n const newValue = event.target.value;\n\n if (focusedItemIndexState !== -1) {\n setFocusedItemIndexState(-1);\n }\n\n if (props.delimiter) {\n const delimiterRegex = typeof props.delimiter === 'string' ? new RegExp(props.delimiter.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')) : props.delimiter;\n\n if (delimiterRegex.test(newValue)) {\n const tags = newValue\n .split(delimiterRegex)\n .map((tag) => tag.trim())\n .filter((tag) => tag.length > 0);\n\n tags.forEach((tag) => addItem(tag));\n\n return;\n }\n }\n\n setInputValueState([\n newValue,\n {\n originalEvent: event,\n query: newValue\n }\n ]);\n\n if (hasDropdown) {\n setSearchingState(true);\n\n searchTimeout.current = setTimeout(() => {\n search(event, newValue);\n listbox.changeFocusedOptionIndex(new Event('input') as unknown as React.KeyboardEvent, -1);\n }, props.delay);\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.disabled) return;\n\n switch (event.key) {\n case 'Tab':\n onTabKey();\n break;\n\n case 'Enter':\n onEnterKey(event);\n break;\n\n case 'ArrowDown':\n case 'ArrowUp':\n if (hasDropdown) {\n if (!openState && inputValueState && inputValueState.length >= (props.minLength ?? 1)) {\n focusOnShow.current = true;\n show();\n }\n\n listbox.onListKeyDown(event);\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowLeft':\n onArrowLeftKey();\n\n break;\n\n case 'ArrowRight':\n onArrowRightKey();\n\n break;\n\n case 'Backspace':\n onBackspaceKey();\n\n break;\n\n case 'Escape':\n if (openState) {\n hide();\n event.preventDefault();\n }\n\n break;\n\n case 'Home':\n case 'End':\n case 'PageUp':\n case 'PageDown':\n if (hasDropdown && openState) {\n listbox.onListKeyDown(event);\n }\n\n break;\n\n default:\n if (hasInputValue && props.delimiter && typeof props.delimiter === 'string' && event.key === props.delimiter) {\n addItem(inputValueState!);\n }\n\n break;\n }\n };\n\n const onClick = () => {\n setFocusedItemIndexState(-1);\n\n if (inputRef.current && !props.disabled) {\n focus(inputRef.current?.elementRef.current);\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!props.addOnPaste) return;\n\n const pastedText = event.clipboardData.getData('text');\n\n if (props.delimiter) {\n const delimiterRegex = typeof props.delimiter === 'string' ? new RegExp(props.delimiter.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')) : props.delimiter;\n\n const tags = pastedText\n .split(delimiterRegex)\n .map((tag) => tag.trim())\n .filter((tag) => tag.length > 0);\n\n tags.forEach((tag) => addItem(tag));\n } else {\n addItem(pastedText);\n }\n\n setTimeout(() => {\n setInputValueState([\n '',\n {\n query: ''\n }\n ]);\n }, 0);\n };\n\n const onFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (props.disabled) {\n return;\n }\n\n setFocusedState(true);\n\n if (hasDropdown) {\n search(event, event.target.value);\n\n if (props.options && props.options.length > 0) {\n show();\n }\n }\n };\n\n const onBlur = () => {\n setFocusedState(false);\n\n if (props.addOnBlur && hasInputValue) {\n addItem(inputValueState!);\n }\n\n if (focusedItemIndexState !== -1) {\n setFocusedItemIndexState(-1);\n }\n };\n\n const onArrowLeftKey = () => {\n let focusIndex = focusedItemIndexState;\n\n if (isInputEmpty && valueState && valueState.length > 0) {\n focusIndex = focusIndex === -1 ? valueState.length - 1 : focusIndex - 1;\n\n if (focusIndex < 0) {\n focusIndex = 0;\n }\n }\n\n setFocusedItemIndexState(focusIndex);\n };\n\n const onArrowRightKey = () => {\n let focusIndex = focusedItemIndexState;\n\n if (isInputEmpty && valueState && valueState.length > 0) {\n if (focusIndex === valueState.length - 1) {\n focusIndex = -1;\n\n if (inputRef.current) {\n focus(inputRef.current?.elementRef.current);\n }\n } else if (focusIndex !== -1) {\n focusIndex++;\n }\n }\n\n setFocusedItemIndexState(focusIndex);\n };\n\n const onTabKey = () => {\n if (props.addOnTab && hasInputValue) {\n addItem(inputValueState!);\n }\n\n if (openState) {\n hide();\n }\n };\n\n const onEnterKey = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (hasDropdown && openState && listbox.state.focusedOptionIndex !== -1) {\n const selectedOption = listbox.getOptions()[listbox.state.focusedOptionIndex];\n\n if (selectedOption) {\n onOptionSelect({\n originalEvent: event,\n value: listbox.getOptionValue(selectedOption)\n });\n }\n\n event.preventDefault();\n } else if (hasInputValue) {\n addItem(inputValueState!);\n }\n };\n\n const onBackspaceKey = () => {\n if (!inputValueState && valueState && valueState.length > 0) {\n const lastIndex = valueState.length - 1;\n\n removeItem(lastIndex);\n }\n\n if (focusedItemIndexState !== -1) {\n removeItem(focusedItemIndexState);\n }\n };\n\n const onItemRemoveClick = (index: number) => {\n if (!valueState) return;\n\n const newValue = valueState.filter((_: unknown, i: number) => i !== index);\n\n setValueState([\n newValue,\n {\n value: newValue\n }\n ]);\n\n if (inputRef.current) {\n focus(inputRef.current?.elementRef.current);\n }\n };\n\n const onRemoveAllItems = () => {\n if (props.disabled || !valueState) return;\n\n setValueState([\n [],\n {\n value: []\n }\n ]);\n };\n\n const getFocusedOptionId = () => {\n return listbox.getFocusedOptionId();\n };\n\n // Computed\n const isInputEmpty = React.useMemo(() => !inputValueState || inputValueState.length === 0, [inputValueState]);\n const hasInputValue = React.useMemo(() => inputValueState && inputValueState.trim(), [inputValueState]);\n\n // Effects\n React.useEffect(() => {\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n searchTimeout.current = null;\n }\n }, []);\n\n React.useEffect(() => {\n if (!hasDropdown) return;\n\n setSearchingState(false);\n\n const hasOptions = props.options && props.options.length > 0;\n\n if (hasOptions && focusedState && !openState) {\n show();\n } else if (!hasOptions && openState) {\n hide();\n }\n }, [props.options]);\n\n return {\n state,\n listbox,\n // refs\n inputRef,\n portalRef,\n itemRefs,\n // methods\n onClick,\n onChange,\n onKeyDown,\n onPaste,\n onBlur,\n onFocus,\n onItemRemoveClick,\n onRemoveAllItems,\n changeVisibleState,\n onOverlayEnter,\n onOverlayAfterEnter,\n getFocusedOptionId\n };\n }\n});\n","import type { useInputTagsProps } from '@primereact/types/shared/inputtags';\n\nexport const defaultProps: useInputTagsProps = {\n defaultValue: undefined,\n value: undefined,\n defaultInputValue: '',\n inputValue: undefined,\n open: undefined,\n defaultOpen: undefined,\n max: undefined,\n delimiter: undefined,\n allowDuplicate: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n delay: 300,\n minLength: 1,\n appendTo: 'body',\n addOnBlur: undefined,\n addOnPaste: undefined,\n addOnTab: undefined,\n onAdd: undefined,\n onRemove: undefined,\n onValueChange: undefined,\n onInputValueChange: undefined,\n onComplete: undefined,\n onOpenChange: undefined\n};\n"],"mappings":"AAAA,OAAS,gBAAAA,OAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCACnC,OAAS,cAAAC,OAAkB,+BAE3B,OAAS,SAAAC,EAAO,iBAAAC,OAAqB,kBACrC,UAAYC,MAAW,QCHhB,IAAMC,EAAkC,CAC3C,aAAc,OACd,MAAO,OACP,kBAAmB,GACnB,WAAY,OACZ,KAAM,OACN,YAAa,OACb,IAAK,OACL,UAAW,OACX,eAAgB,OAChB,QAAS,CAAC,EACV,UAAW,OACX,YAAa,OACb,YAAa,OACb,eAAgB,OAChB,iBAAkB,OAClB,oBAAqB,OACrB,MAAO,IACP,UAAW,EACX,SAAU,OACV,UAAW,OACX,WAAY,OACZ,SAAU,OACV,MAAO,OACP,SAAU,OACV,cAAe,OACf,mBAAoB,OACpB,WAAY,OACZ,aAAc,MAClB,EDvBO,IAAMC,GAAeC,GAAa,CACrC,KAAM,eACN,aAAAC,EACA,MAAM,CAAE,MAAAC,EAAO,WAAAC,CAAW,EAAG,CAXjC,IAAAC,EAAAC,EAAAC,EAYQ,GAAM,CAACC,EAAuBC,CAAwB,EAAU,WAAiB,EAAE,EAC7E,CAACC,EAAWC,CAAY,EAAIC,EAAmB,CACjD,MAAOT,EAAM,KACb,cAAcE,EAAAF,EAAM,cAAN,KAAAE,EAAqB,GACnC,SAAUF,EAAM,YACpB,CAAC,EACK,CAACU,EAAgBC,CAAiB,EAAU,WAAkB,EAAK,EACnE,CAACC,EAAcC,CAAe,EAAU,WAAkB,EAAK,EAE/DC,EAAwB,UAAOX,EAAAH,EAAM,eAAN,KAAAG,EAAsB,CAAC,CAAC,EACvD,CAACY,EAAYC,CAAa,EAAIP,EAAmB,CACnD,MAAOT,EAAM,MACb,aAAcc,EAAgB,QAC9B,SAAUd,EAAM,aACpB,CAAC,EAEK,CAACiB,EAAiBC,CAAkB,EAAIT,EAAmB,CAC7D,MAAOT,EAAM,WACb,cAAcI,EAAAJ,EAAM,oBAAN,KAAAI,EAA2B,GACzC,SAAUJ,EAAM,kBACpB,CAAC,EAEKmB,EAA6B,SAA6D,IAAI,EAC9FC,EAAUC,GAAW,CACvB,QAASrB,EAAM,QACf,UAAWA,EAAM,UACjB,YAAaA,EAAM,YACnB,YAAaA,EAAM,YACnB,eAAgBA,EAAM,eACtB,iBAAkBA,EAAM,iBACxB,oBAAqBA,EAAM,oBAC3B,SAAU,GACV,SAAUA,EAAM,SAChB,cAAgBsB,GAAmC,CA7C/D,IAAApB,EA6CkE,OAAAA,EAAAiB,EAAqB,UAArB,YAAAjB,EAAA,KAAAiB,EAA+BG,GACzF,CAAC,EAEKC,EAAiB,SAAiE,IAAI,EACtFC,EAAkB,SAA8F,IAAI,EACpHC,EAAiB,SAAiC,IAAI,GAAK,EAC3DC,EAAsB,SAA8B,IAAI,EACxDC,EAAoB,SAAgB,EAAK,EAEzCC,EAAc,CAAC,CAAC5B,EAAM,WAEtB6B,EAAQ,CACV,MAAOd,GAAA,KAAAA,EAAc,CAAC,EACtB,WAAYE,GAAA,KAAAA,EAAmB,GAC/B,iBAAkBZ,EAClB,OAAQE,EACR,UAAWG,EACX,QAASE,EACT,mBAAoBQ,EAAQ,MAAM,kBACtC,EAEMU,EAAS,CAACR,EAA6BS,IAAkB,CAEhCA,GAAU,MAIjC/B,EAAM,YACNA,EAAM,WAAW,CACb,cAAesB,EACf,MAAAS,CACJ,CAAC,CAET,EAEMC,EAAO,IAAM,CACfxB,EAAa,CAAC,GAAM,CAAE,MAAO,EAAK,CAAC,CAAC,CACxC,EAEMyB,EAAO,IAAM,CACfzB,EAAa,CAAC,GAAO,CAAE,MAAO,EAAM,CAAC,CAAC,EACtCG,EAAkB,EAAK,EACvBS,EAAQ,yBAAyB,IAAI,MAAM,MAAM,EAAqC,EAAE,CAC5F,EAEMc,EAAsBC,GAAuB,CAC/C3B,EAAa,CAAC2B,EAAW,CAAE,MAAOA,CAAU,CAAC,CAAC,CAClD,EAEMC,EAAiB,IAAM,CA9FrC,IAAAlC,EAAAC,EAAAC,EAAAiC,EA+FY,IAAIA,GAAAjC,GAAAD,GAAAD,EAAAsB,GAAA,YAAAA,EAAW,UAAX,YAAAtB,EAAoB,eAApB,YAAAC,EAAkC,UAAlC,YAAAC,EAA2C,aAA3C,MAAAiC,EAAuD,QAAS,CAChE,IAAMC,EAAUd,EAAU,QAAQ,aAAa,QAAQ,WAAW,QAE9DvB,GAAA,MAAAA,EAAY,UACZqC,EAAQ,MAAM,SAAWC,GAActC,EAAW,OAAO,EAAI,KAErE,CACJ,EAEMuC,EAAsB,IAAM,CAC1Bb,EAAY,SACZ,sBAAsB,IAAM,CACxB,sBAAsB,IAAM,CACxB,IAAMc,EAAqBrB,EAAQ,MAAM,mBACnCsB,EAAeD,IAAuB,GAAKA,EAAqBrB,EAAQ,4BAA4B,EAE1GA,EAAQ,yBAAyB,IAAI,MAAM,OAAO,EAAqCsB,CAAY,EACnGf,EAAY,QAAU,EAC1B,CAAC,CACL,CAAC,CAET,EAEMgB,EAAkBrB,GAAmE,CAtHnG,IAAApB,EAuHY,IAAM0C,EAAgBtB,EAAM,MACtBuB,EAASzB,EAAQ,WAAW,EAAE,KAAM0B,IAAiB,CACvD,IAAMC,GAAW3B,EAAQ,eAAe0B,EAAG,EAE3C,OAAO1B,EAAQ,SAAS2B,GAAUH,CAAa,CACnD,CAAC,EAEKI,EAAcH,EAASzB,EAAQ,eAAeyB,CAAM,EAAI,OAAOD,CAAa,EAElFK,EAAQD,CAAW,EACnB5B,EAAQ,yBAAyB,IAAI,MAAM,QAAQ,EAAqC,EAAE,EAC1F8B,GAAMhD,EAAAqB,EAAS,UAAT,YAAArB,EAAkB,WAAW,OAA2B,CAClE,EAGAiB,EAAqB,QAAUwB,EAE/B,IAAMM,EAAWE,GAAgB,CAC7B,IAAMC,EAAaD,EAAI,KAAK,EAM5B,GAJI,CAACC,GAAcpD,EAAM,UAErBA,EAAM,KAAOe,GAAcA,EAAW,QAAUf,EAAM,KAEtD,CAACA,EAAM,gBAAkBe,GAAcA,EAAW,SAASqC,CAAU,EAAG,OAE5E,IAAMC,EAAW,CAAC,GAAItC,GAAc,CAAC,EAAIqC,CAAU,EAEnDpC,EAAc,CACVqC,EACA,CACI,MAAOA,CACX,CACJ,CAAC,EAEGrD,EAAM,OACNA,EAAM,MAAM,CACR,MAAOoD,CACX,CAAC,EAGLlC,EAAmB,CACf,GACA,CACI,MAAO,EACX,CACJ,CAAC,CACL,EAEMoC,EAAcC,GAAkB,CAClC,GAAIvD,EAAM,UAAY,CAACe,EAAY,OAEnC,IAAMsC,EAAWtC,EAAW,OAAO,CAACyC,EAAYC,IAAcA,IAAMF,CAAK,EAEzEvC,EAAc,CACVqC,EACA,CACI,MAAOA,CACX,CACJ,CAAC,EAEGrD,EAAM,UACNA,EAAM,SAAS,CACX,MAAOe,EAAWwC,CAAK,EACvB,MAAAA,CACJ,CAAC,EAGLjD,EAAyB,EAAE,CAC/B,EAEMoD,EAAYpC,GAA+C,CACzDI,EAAc,SACd,aAAaA,EAAc,OAAO,EAGtC,IAAM2B,EAAW/B,EAAM,OAAO,MAM9B,GAJIjB,IAA0B,IAC1BC,EAAyB,EAAE,EAG3BN,EAAM,UAAW,CACjB,IAAM2D,EAAiB,OAAO3D,EAAM,WAAc,SAAW,IAAI,OAAOA,EAAM,UAAU,QAAQ,sBAAuB,MAAM,CAAC,EAAIA,EAAM,UAExI,GAAI2D,EAAe,KAAKN,CAAQ,EAAG,CAClBA,EACR,MAAMM,CAAc,EACpB,IAAKR,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAE9B,QAASA,GAAQF,EAAQE,CAAG,CAAC,EAElC,MACJ,CACJ,CAEAjC,EAAmB,CACfmC,EACA,CACI,cAAe/B,EACf,MAAO+B,CACX,CACJ,CAAC,EAEGzB,IACAjB,EAAkB,EAAI,EAEtBe,EAAc,QAAU,WAAW,IAAM,CACrCI,EAAOR,EAAO+B,CAAQ,EACtBjC,EAAQ,yBAAyB,IAAI,MAAM,OAAO,EAAqC,EAAE,CAC7F,EAAGpB,EAAM,KAAK,EAEtB,EAEM4D,EAAatC,GAAiD,CA1O5E,IAAApB,EA2OY,GAAI,CAAAF,EAAM,SAEV,OAAQsB,EAAM,IAAK,CACf,IAAK,MACDuC,GAAS,EACT,MAEJ,IAAK,QACDC,GAAWxC,CAAK,EAChB,MAEJ,IAAK,YACL,IAAK,UACGM,IACI,CAACrB,GAAaU,GAAmBA,EAAgB,UAAWf,EAAAF,EAAM,YAAN,KAAAE,EAAmB,KAC/EyB,EAAY,QAAU,GACtBK,EAAK,GAGTZ,EAAQ,cAAcE,CAAK,EAC3BA,EAAM,eAAe,GAGzB,MAEJ,IAAK,YACDyC,EAAe,EAEf,MAEJ,IAAK,aACDC,GAAgB,EAEhB,MAEJ,IAAK,YACDC,GAAe,EAEf,MAEJ,IAAK,SACG1D,IACA0B,EAAK,EACLX,EAAM,eAAe,GAGzB,MAEJ,IAAK,OACL,IAAK,MACL,IAAK,SACL,IAAK,WACGM,GAAerB,GACfa,EAAQ,cAAcE,CAAK,EAG/B,MAEJ,QACQ4C,GAAiBlE,EAAM,WAAa,OAAOA,EAAM,WAAc,UAAYsB,EAAM,MAAQtB,EAAM,WAC/FiD,EAAQhC,CAAgB,EAG5B,KACR,CACJ,EAEMkD,EAAU,IAAM,CA9S9B,IAAAjE,EA+SYI,EAAyB,EAAE,EAEvBiB,EAAS,SAAW,CAACvB,EAAM,UAC3BkD,GAAMhD,EAAAqB,EAAS,UAAT,YAAArB,EAAkB,WAAW,OAAO,CAElD,EAEMkE,EAAW9C,GAAkD,CAC/D,GAAI,CAACtB,EAAM,WAAY,OAEvB,IAAMqE,EAAa/C,EAAM,cAAc,QAAQ,MAAM,EAErD,GAAItB,EAAM,UAAW,CACjB,IAAM2D,EAAiB,OAAO3D,EAAM,WAAc,SAAW,IAAI,OAAOA,EAAM,UAAU,QAAQ,sBAAuB,MAAM,CAAC,EAAIA,EAAM,UAE3HqE,EACR,MAAMV,CAAc,EACpB,IAAKR,GAAQA,EAAI,KAAK,CAAC,EACvB,OAAQA,GAAQA,EAAI,OAAS,CAAC,EAE9B,QAASA,GAAQF,EAAQE,CAAG,CAAC,CACtC,MACIF,EAAQoB,CAAU,EAGtB,WAAW,IAAM,CACbnD,EAAmB,CACf,GACA,CACI,MAAO,EACX,CACJ,CAAC,CACL,EAAG,CAAC,CACR,EAEMoD,EAAWhD,GAA8C,CACvDtB,EAAM,WAIVa,EAAgB,EAAI,EAEhBe,IACAE,EAAOR,EAAOA,EAAM,OAAO,KAAK,EAE5BtB,EAAM,SAAWA,EAAM,QAAQ,OAAS,GACxCgC,EAAK,GAGjB,EAEMuC,EAAS,IAAM,CACjB1D,EAAgB,EAAK,EAEjBb,EAAM,WAAakE,GACnBjB,EAAQhC,CAAgB,EAGxBZ,IAA0B,IAC1BC,EAAyB,EAAE,CAEnC,EAEMyD,EAAiB,IAAM,CACzB,IAAIS,EAAanE,EAEboE,GAAgB1D,GAAcA,EAAW,OAAS,IAClDyD,EAAaA,IAAe,GAAKzD,EAAW,OAAS,EAAIyD,EAAa,EAElEA,EAAa,IACbA,EAAa,IAIrBlE,EAAyBkE,CAAU,CACvC,EAEMR,GAAkB,IAAM,CA5XtC,IAAA9D,EA6XY,IAAIsE,EAAanE,EAEboE,GAAgB1D,GAAcA,EAAW,OAAS,IAC9CyD,IAAezD,EAAW,OAAS,GACnCyD,EAAa,GAETjD,EAAS,SACT2B,GAAMhD,EAAAqB,EAAS,UAAT,YAAArB,EAAkB,WAAW,OAAO,GAEvCsE,IAAe,IACtBA,KAIRlE,EAAyBkE,CAAU,CACvC,EAEMX,GAAW,IAAM,CACf7D,EAAM,UAAYkE,GAClBjB,EAAQhC,CAAgB,EAGxBV,GACA0B,EAAK,CAEb,EAEM6B,GAAcxC,GAAiD,CACjE,GAAIM,GAAerB,GAAaa,EAAQ,MAAM,qBAAuB,GAAI,CACrE,IAAMsD,EAAiBtD,EAAQ,WAAW,EAAEA,EAAQ,MAAM,kBAAkB,EAExEsD,GACA/B,EAAe,CACX,cAAerB,EACf,MAAOF,EAAQ,eAAesD,CAAc,CAChD,CAAC,EAGLpD,EAAM,eAAe,CACzB,MAAW4C,GACPjB,EAAQhC,CAAgB,CAEhC,EAEMgD,GAAiB,IAAM,CACzB,GAAI,CAAChD,GAAmBF,GAAcA,EAAW,OAAS,EAAG,CACzD,IAAM4D,EAAY5D,EAAW,OAAS,EAEtCuC,EAAWqB,CAAS,CACxB,CAEItE,IAA0B,IAC1BiD,EAAWjD,CAAqB,CAExC,EAEMuE,GAAqBrB,GAAkB,CArbrD,IAAArD,EAsbY,GAAI,CAACa,EAAY,OAEjB,IAAMsC,EAAWtC,EAAW,OAAO,CAACyC,EAAYC,IAAcA,IAAMF,CAAK,EAEzEvC,EAAc,CACVqC,EACA,CACI,MAAOA,CACX,CACJ,CAAC,EAEG9B,EAAS,SACT2B,GAAMhD,EAAAqB,EAAS,UAAT,YAAArB,EAAkB,WAAW,OAAO,CAElD,EAEM2E,GAAmB,IAAM,CACvB7E,EAAM,UAAY,CAACe,GAEvBC,EAAc,CACV,CAAC,EACD,CACI,MAAO,CAAC,CACZ,CACJ,CAAC,CACL,EAEM8D,GAAqB,IAChB1D,EAAQ,mBAAmB,EAIhCqD,EAAqB,UAAQ,IAAM,CAACxD,GAAmBA,EAAgB,SAAW,EAAG,CAACA,CAAe,CAAC,EACtGiD,EAAsB,UAAQ,IAAMjD,GAAmBA,EAAgB,KAAK,EAAG,CAACA,CAAe,CAAC,EAGtG,OAAM,YAAU,IAAM,CACdS,EAAc,UACd,aAAaA,EAAc,OAAO,EAClCA,EAAc,QAAU,KAEhC,EAAG,CAAC,CAAC,EAEC,YAAU,IAAM,CAClB,GAAI,CAACE,EAAa,OAElBjB,EAAkB,EAAK,EAEvB,IAAMoE,EAAa/E,EAAM,SAAWA,EAAM,QAAQ,OAAS,EAEvD+E,GAAcnE,GAAgB,CAACL,EAC/ByB,EAAK,EACE,CAAC+C,GAAcxE,GACtB0B,EAAK,CAEb,EAAG,CAACjC,EAAM,OAAO,CAAC,EAEX,CACH,MAAA6B,EACA,QAAAT,EAEA,SAAAG,EACA,UAAAC,EACA,SAAAC,EAEA,QAAA0C,EACA,SAAAT,EACA,UAAAE,EACA,QAAAQ,EACA,OAAAG,EACA,QAAAD,EACA,kBAAAM,GACA,iBAAAC,GACA,mBAAA3C,EACA,eAAAE,EACA,oBAAAI,EACA,mBAAAsC,EACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","useListbox","focus","getOuterWidth","React","defaultProps","useInputTags","withHeadless","defaultProps","props","elementRef","_a","_b","_c","focusedItemIndexState","setFocusedItemIndexState","openState","setOpenState","useControlledState","searchingState","setSearchingState","focusedState","setFocusedState","defaultValueRef","valueState","setValueState","inputValueState","setInputValueState","onListboxValueChange","listbox","useListbox","event","inputRef","portalRef","itemRefs","searchTimeout","focusOnShow","hasDropdown","state","search","query","show","hide","changeVisibleState","isVisible","onOverlayEnter","_d","element","getOuterWidth","onOverlayAfterEnter","focusedOptionIndex","indexToFocus","onOptionSelect","selectedValue","option","opt","optValue","optionLabel","addItem","focus","tag","trimmedTag","newValue","removeItem","index","_","i","onChange","delimiterRegex","onKeyDown","onTabKey","onEnterKey","onArrowLeftKey","onArrowRightKey","onBackspaceKey","hasInputValue","onClick","onPaste","pastedText","onFocus","onBlur","focusIndex","isInputEmpty","selectedOption","lastIndex","onItemRemoveClick","onRemoveAllItems","getFocusedOptionId","hasOptions"]}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useInputTags: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/inputtags").useInputTagsProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: string[];
|
|
5
|
+
inputValue: string;
|
|
6
|
+
focusedItemIndex: number;
|
|
7
|
+
opened: boolean | undefined;
|
|
8
|
+
searching: boolean;
|
|
9
|
+
focused: boolean;
|
|
10
|
+
focusedOptionIndex: number;
|
|
11
|
+
};
|
|
12
|
+
listbox: import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/listbox").useListboxProps, unknown, {
|
|
13
|
+
state: {
|
|
14
|
+
value: unknown;
|
|
15
|
+
focused: boolean;
|
|
16
|
+
focusedOptionIndex: number;
|
|
17
|
+
};
|
|
18
|
+
listRef: React.RefObject<HTMLElement | null>;
|
|
19
|
+
firstHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
20
|
+
lastHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
21
|
+
getOptions: () => unknown[];
|
|
22
|
+
getOptionId: (index: number) => string;
|
|
23
|
+
getOptionLabel: (option: unknown) => any;
|
|
24
|
+
getOptionValue: (option: unknown) => any;
|
|
25
|
+
isOptionDisabled: (option: unknown) => any;
|
|
26
|
+
isOptionGroup: (option: unknown) => boolean;
|
|
27
|
+
getOptionGroupLabel: (optionGroup: unknown) => any;
|
|
28
|
+
getOptionGroupChildren: (optionGroup: unknown) => any;
|
|
29
|
+
getFocusedOptionId: () => string | null;
|
|
30
|
+
getAriaSetSize: () => number;
|
|
31
|
+
getAriaPosInset: (index: number) => number;
|
|
32
|
+
onFirstHiddenFocus: () => void;
|
|
33
|
+
onLastHiddenFocus: (event: React.FocusEvent) => void;
|
|
34
|
+
onFocusOut: (event: React.FocusEvent) => void;
|
|
35
|
+
onListFocus: () => void;
|
|
36
|
+
onListBlur: () => void;
|
|
37
|
+
onListKeyDown: (event: React.KeyboardEvent) => void;
|
|
38
|
+
onArrowDownKey: (event: React.KeyboardEvent) => void;
|
|
39
|
+
onArrowUpKey: (event: React.KeyboardEvent) => void;
|
|
40
|
+
onArrowLeftKey: (event: React.KeyboardEvent, pressedInInputText?: boolean) => void;
|
|
41
|
+
onEnterKey: (event: React.KeyboardEvent) => void;
|
|
42
|
+
onOptionSelect: (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index?: number) => void;
|
|
43
|
+
onOptionMouseDown: (event: React.MouseEvent, index: number) => void;
|
|
44
|
+
onOptionMouseMove: (event: React.MouseEvent, index: number) => void;
|
|
45
|
+
onOptionTouchEnd: () => void;
|
|
46
|
+
onFilterChange: () => void;
|
|
47
|
+
onFilterBlur: () => void;
|
|
48
|
+
onFilterKeyDown: (event: React.KeyboardEvent) => void;
|
|
49
|
+
isOptionMatched: (option: unknown) => any;
|
|
50
|
+
isValidOption: (option: unknown) => boolean;
|
|
51
|
+
isValidSelectedOption: (option: unknown) => boolean;
|
|
52
|
+
isSelected: (option: unknown) => boolean;
|
|
53
|
+
changeFocusedOptionIndex: (event: React.MouseEvent | React.KeyboardEvent, index?: number) => void;
|
|
54
|
+
findSelectedOptionIndex: () => number;
|
|
55
|
+
findFirstFocusedOptionIndex: () => number;
|
|
56
|
+
scrollInView: (index?: number) => void;
|
|
57
|
+
updateModel: (event: React.SyntheticEvent, value: unknown) => void;
|
|
58
|
+
autoUpdateModel: () => void;
|
|
59
|
+
equalityKey: string | undefined;
|
|
60
|
+
hasValue: () => boolean;
|
|
61
|
+
isEquals: (value1: unknown, value2: unknown) => boolean;
|
|
62
|
+
}>;
|
|
63
|
+
inputRef: React.RefObject<{
|
|
64
|
+
elementRef: React.RefObject<HTMLInputElement>;
|
|
65
|
+
} | null>;
|
|
66
|
+
portalRef: React.RefObject<{
|
|
67
|
+
containerRef: {
|
|
68
|
+
current: {
|
|
69
|
+
elementRef: React.RefObject<HTMLDivElement>;
|
|
70
|
+
};
|
|
71
|
+
};
|
|
72
|
+
} | null>;
|
|
73
|
+
itemRefs: React.RefObject<Map<number, HTMLElement>>;
|
|
74
|
+
onClick: () => void;
|
|
75
|
+
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void;
|
|
76
|
+
onKeyDown: (event: React.KeyboardEvent<HTMLInputElement>) => void;
|
|
77
|
+
onPaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;
|
|
78
|
+
onBlur: () => void;
|
|
79
|
+
onFocus: (event: React.FocusEvent<HTMLInputElement>) => void;
|
|
80
|
+
onItemRemoveClick: (index: number) => void;
|
|
81
|
+
onRemoveAllItems: () => void;
|
|
82
|
+
changeVisibleState: (isVisible: boolean) => void;
|
|
83
|
+
onOverlayEnter: () => void;
|
|
84
|
+
onOverlayAfterEnter: () => void;
|
|
85
|
+
getFocusedOptionId: () => string | null;
|
|
86
|
+
}>;
|
|
File without changes
|
package/knob/index.d.ts
ADDED
package/knob/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as de}from"@primereact/core/headless";import{useEventListener as R}from"@primereact/hooks";import*as $ from"react";var C={defaultValue:void 0,value:void 0,size:100,step:1,min:0,max:100,readOnly:!1,disabled:!1,onValueChange:void 0};var i=40,y=50,P=50,r=4*Math.PI/3,l=-Math.PI/3,k=3.14159265358979,he=de({name:"useKnob",defaultProps:C,setup({props:e,elementRef:z}){var K,W;let[w,D]=$.useState((W=(K=e.value)!=null?K:e.defaultValue)!=null?W:null),f={value:w},E=(n,t,o,a,s)=>(n-t)*(s-a)/(o-t)+a,x=()=>{var o,a;let n=(o=e.min)!=null?o:0,t=(a=e.max)!=null?a:100;return E(n>0&&t>0?n:0,n,t,r,l)},g=()=>{var a,s;let n=(a=e.min)!=null?a:0,t=(s=e.max)!=null?s:100,o=w!=null?w:n;return E(o,n,t,r,l)},O=()=>y+Math.cos(r)*i,U=()=>P-Math.sin(r)*i,I=()=>y+Math.cos(l)*i,B=()=>P-Math.sin(l)*i,H=()=>y+Math.cos(x())*i,S=()=>P-Math.sin(x())*i,_=()=>y+Math.cos(g())*i,j=()=>P-Math.sin(g())*i,q=()=>Math.abs(x()-g())<k?0:1,F=()=>g()>x()?0:1,G=`M ${O()} ${U()} A ${i} ${i} 0 1 1 ${I()} ${B()}`,J=`M ${H()} ${S()} A ${i} ${i} 0 ${q()} ${F()} ${_()} ${j()}`,[N,Q]=R({target:"window",type:"mousemove",listener:n=>X(n)}),[Z,p]=R({target:"window",type:"mouseup",listener:()=>L()}),[ee,ne]=R({target:"window",type:"touchmove",listener:n=>Y(n)}),[te,ae]=R({target:"window",type:"touchend",listener:()=>T()}),V=(n,t)=>{var c,d;let o=n-((c=e.size)!=null?c:100)/2,a=((d=e.size)!=null?d:100)/2-t,s=Math.atan2(a,o),u=-k/2-k/6;oe(s,u)},oe=(n,t)=>{var s,u,c,d,h,v,b,M;let o;if(n>l)o=E(n,r,l,(s=e.min)!=null?s:0,(u=e.max)!=null?u:100);else if(n<t)o=E(n+2*Math.PI,r,l,(c=e.min)!=null?c:0,(d=e.max)!=null?d:100);else return;let a=Math.round((o-((h=e.min)!=null?h:0))/((v=e.step)!=null?v:1))*((b=e.step)!=null?b:1)+((M=e.min)!=null?M:0);D(a),e.onValueChange&&e.onValueChange({value:a})},m=n=>{var o,a,s,u;let t;n>((o=e.max)!=null?o:100)?t=(a=e.max)!=null?a:100:n<((s=e.min)!=null?s:0)?t=(u=e.min)!=null?u:0:t=n,D(t),e.onValueChange&&e.onValueChange({value:t})},se=n=>{!e.disabled&&!e.readOnly&&V(n.nativeEvent.offsetX,n.nativeEvent.offsetY)},ue=n=>{N(),Z(),n.preventDefault()},L=()=>{Q(),p()},ie=()=>{ee(),te()},T=()=>{ne(),ae()},X=n=>{!e.disabled&&!e.readOnly&&(V(n.nativeEvent.offsetX,n.nativeEvent.offsetY),n.preventDefault())},Y=n=>{var t;if(!e.disabled&&!e.readOnly&&n.touches.length==1){let o=(t=z.current)==null?void 0:t.getBoundingClientRect(),a=n.targetTouches.item(0);if(o&&a){let s=a.clientX-o.left,u=a.clientY-o.top;V(s,u)}}},ce=n=>{var t,o,a,s,u,c,d,h,v,b,M,A;if(!e.disabled&&!e.readOnly)switch(n.code){case"ArrowRight":case"ArrowUp":{n.preventDefault(),m(((o=(t=f.value)!=null?t:e.min)!=null?o:0)+((a=e.step)!=null?a:1));break}case"ArrowLeft":case"ArrowDown":{n.preventDefault(),m(((u=(s=f.value)!=null?s:e.min)!=null?u:0)-((c=e.step)!=null?c:1));break}case"Home":{n.preventDefault(),m((d=e.min)!=null?d:0);break}case"End":{n.preventDefault(),m((h=e.max)!=null?h:100);break}case"PageUp":{n.preventDefault(),m(((b=(v=f.value)!=null?v:e.min)!=null?b:0)+10);break}case"PageDown":{n.preventDefault(),m(((A=(M=f.value)!=null?M:e.min)!=null?A:0)-10);break}}};return $.useEffect(()=>{e.value!==void 0&&D(e.value)},[e.value]),{state:f,rangePath:G,valuePath:J,onClick:se,onMouseDown:ue,onMouseUp:L,onTouchStart:ie,onTouchEnd:T,onMouseMove:X,onTouchMove:Y,onKeyDown:ce}}});export{C as defaultProps,he as useKnob};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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"]}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useKnobProps } from '@primereact/types/shared/knob';
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
export declare const useKnob: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<useKnobProps, unknown, {
|
|
4
|
+
state: {
|
|
5
|
+
value: number | null | undefined;
|
|
6
|
+
};
|
|
7
|
+
rangePath: string;
|
|
8
|
+
valuePath: string;
|
|
9
|
+
onClick: (event: React.MouseEvent) => void;
|
|
10
|
+
onMouseDown: (event: React.MouseEvent) => void;
|
|
11
|
+
onMouseUp: () => void;
|
|
12
|
+
onTouchStart: () => void;
|
|
13
|
+
onTouchEnd: () => void;
|
|
14
|
+
onMouseMove: (event: React.MouseEvent) => void;
|
|
15
|
+
onTouchMove: (event: React.TouchEvent) => void;
|
|
16
|
+
onKeyDown: (event: React.KeyboardEvent) => void;
|
|
17
|
+
}>;
|
|
File without changes
|
|
@@ -0,0 +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 B,getFirstFocusableElement as le,isElement as _e,isNotEmpty as z,isNumber as je,isPrintableCharacter as Qe,isString as de,resolveFieldData as L}from"@primeuix/utils";import*as s 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,locale:void 0,multiple:!1,metaKeySelection:!1,autoOptionFocus:!0,selectOnFocus:!1,focusOnHover:!0,onValueChange:void 0};var tn=Be({name:"useListbox",defaultProps:ie,setup({id:fe,props:o,elementRef:F}){var se;let[P,J]=s.useState(!1),[a,d]=s.useState(-1),[i,me]=ze({value:o.value,defaultValue:(se=o.defaultValue)!=null?se:null,onChange:o.onValueChange}),be={value:i,focused:P,focusedOptionIndex:a},M=s.useRef(null),b=s.useRef(null),k=s.useRef(null),A=s.useRef(!1),y=s.useRef(-1),K=s.useRef(null),O=s.useRef(""),c=()=>$e||[],v=e=>`${fe}_${e}`,W=e=>o.optionLabel?L(e,o.optionLabel):de(e)||je(e)?e:null,l=e=>o.optionValue?L(e,o.optionValue):e,G=e=>o.optionDisabled?L(e,o.optionDisabled):!1,D=e=>!!(o.optionGroupLabel&&(e!=null&&e.optionGroup)&&(e!=null&&e.group)),ye=e=>o.optionGroupLabel?L(e,o.optionGroupLabel):de(e)?e:null,_=e=>o.optionGroupChildren?L(e,o.optionGroupChildren):null,j=()=>a!==-1?v(a):null,he=()=>c().filter(e=>!D(e)).length,we=e=>(o.optionGroupLabel?e-(c().slice(0,e).filter(n=>D(n)).length||0):e)+1,ke=()=>{B(M.current);let e=le(F.current,':not([data-p-hidden-focusable="true"])');k.current&&(k.current.tabIndex=_e(e)?0:-1),b.current&&(b.current.tabIndex=-1)},Ke=e=>{if(e.relatedTarget===M.current){let t=le(F.current,':not([data-p-hidden-focusable="true"])');t instanceof HTMLElement&&B(t),b.current&&(b.current.tabIndex=0)}else B(b.current);k.current&&(k.current.tabIndex=-1)},Re=e=>{!(F.current instanceof HTMLElement&&F.current.contains(e.relatedTarget))&&k.current&&b.current&&(k.current.tabIndex=0,b.current.tabIndex=0)},Oe=()=>{let e=a!==-1?a:o.autoOptionFocus?E():te();J(!0),d(e),$(),S(e)},Ie=()=>{J(!1),d(-1),y.current=-1,O.current=""},ge=e=>{let n=e.metaKey||e.ctrlKey;switch(e.code){case"ArrowDown":N(e);break;case"ArrowUp":U(e);break;case"Home":X(e);break;case"End":Y(e);break;case"PageDown":Te(e);break;case"PageUp":De(e);break;case"Enter":case"NumpadEnter":case"Space":Ve(e);break;case"Tab":break;case"ShiftLeft":case"ShiftRight":Z();break;default:if(o.multiple&&e.code==="KeyA"&&n){let t=c().filter(r=>f(r)).map(r=>l(r));x(e,t),e.preventDefault();break}!n&&Qe(e.key)&&(Ne(e,e.key),e.preventDefault());break}},T=(e,n,t=-1)=>{o.disabled||G(n)||(o.multiple?Le(e,n):pe(e,n),A.current=!1,t!==-1&&d(t))},Ee=(e,n)=>{h(e,n)},Se=(e,n)=>{o.focusOnHover&&P&&h(e,n)},xe=()=>{o.disabled||(A.current=!0)},pe=(e,n)=>{let t=H(n),r=A.current?!1:o.metaKeySelection,u=!1,m=null;if(r){let p=e&&(e.metaKey||e.ctrlKey);t?p&&(m=null,u=!0):(m=l(n),u=!0)}else m=t?null:l(n),u=!0;u&&x(e,m)},Le=(e,n)=>{let t=H(n),r=A.current?!1:o.metaKeySelection,u=null;if(r){let m=e.metaKey||e.ctrlKey;t?u=m?ae(n):[l(n)]:(u=m?Array.isArray(i)?i:[]:[],u=[...u,l(n)])}else u=t?ae(n):[...Array.isArray(i)?i:[],l(n)];x(e,u)},I=(e,n=-1,t=-1)=>{if(n=n===-1?ce(t,!0):n,t=t===-1?ce(n):t,n!==-1&&t!==-1){let r=Math.min(n,t),u=Math.max(n,t),m=c().slice(r,u+1).filter(p=>f(p)).map(p=>l(p));x(e,m)}},Fe=()=>{d(-1),y.current=-1},Me=()=>{d(-1),y.current=-1},Ae=e=>{switch(e.code){case"ArrowDown":N(e);break;case"ArrowUp":U(e);break;case"ArrowLeft":case"ArrowRight":Q(e,!0);break;case"Home":X(e,!0);break;case"End":Y(e,!0);break;case"Enter":case"NumpadEnter":q(e);break;case"ShiftLeft":case"ShiftRight":Z();break;default:break}},N=e=>{let n=a!==-1?He(a):E();o.multiple&&e.shiftKey&&I(e,y.current,n),h(e,n),e.preventDefault()},U=e=>{let n=a!==-1?Ce(a):Ge();o.multiple&&e.shiftKey&&I(e,n,y.current),h(e,n),e.preventDefault()},Q=(e,n=!1)=>{n&&d(-1)},X=(e,n=!1)=>{if(n){let t=e.currentTarget;e.shiftKey?t==null||t.setSelectionRange(0,t.selectionStart):(t==null||t.setSelectionRange(0,0),d(-1))}else{let t=e.metaKey||e.ctrlKey,r=ee();o.multiple&&e.shiftKey&&t&&I(e,r,y.current),h(e,r)}e.preventDefault()},Y=(e,n=!1)=>{if(n){let t=e.currentTarget,r=t.value.length;e.shiftKey?t.setSelectionRange(t.selectionStart,r):(t.setSelectionRange(r,r),d(-1))}else{let t=e.metaKey||e.ctrlKey,r=ne();o.multiple&&e.shiftKey&&t&&I(e,y.current,r),h(e,r)}e.preventDefault()},De=e=>{S(0),e.preventDefault()},Te=e=>{S(c().length-1),e.preventDefault()},q=e=>{a!==-1&&(o.multiple&&e.shiftKey?I(e,a):T(e,c()[a]))},Ve=e=>{e.preventDefault(),q(e)},Z=()=>{y.current=a},V=e=>{var n,t;return f(e)&&((t=W(e))==null?void 0:t.toLocaleLowerCase(o.locale).startsWith((n=O.current)==null?void 0:n.toLocaleLowerCase(o.locale)))},f=e=>z(e)&&!G(e)&&!D(e),R=e=>f(e)&&H(e),g=(e,n)=>Je(e,n,ue),H=e=>{let n=l(e);return o.multiple?Array.isArray(i)&&i.some(t=>g(t,n)):g(i,n)},ee=()=>c().findIndex(e=>f(e)),ne=()=>C(c(),e=>f(e)),He=e=>{let n=e<c().length-1?c().slice(e+1).findIndex(t=>f(t)):-1;return n>-1?n+e+1:e},Ce=e=>{let n=e>0?C(c().slice(0,e),t=>f(t)):-1;return n>-1?n:e},te=()=>{if(w())if(o.multiple&&Array.isArray(i))for(let e=i.length-1;e>=0;e--){let n=i[e],t=c().findIndex(r=>R(r)&&g(n,l(r)));if(t>-1)return t}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,oe=e=>{let n=w()&&e<c().length-1?c().slice(e+1).findIndex(t=>R(t)):-1;return n>-1?n+e+1:-1},re=e=>{let n=w()&&e>0?C(c().slice(0,e),t=>R(t)):-1;return n>-1?n:-1},ce=(e,n=!1)=>{let t=-1;return w()&&(n?(t=re(e),t=t===-1?oe(e):t):(t=oe(e),t=t===-1?re(e):t)),t>-1?t:e},E=()=>{let e=Pe();return e<0?ee():e},Ge=()=>{let e=ve();return e<0?ne():e},Ne=(e,n)=>{var r;O.current=(O.current||"")+n;let t=-1;z(O.current)&&(a!==-1?(t=c().slice(a).findIndex(u=>V(u)),t=t===-1?c().slice(0,a).findIndex(u=>V(u)):t+a):t=c().findIndex(u=>V(u)),t===-1&&a===-1&&(t=(r=E())!=null?r:-1),t!==-1&&h(e,t)),K.current&&clearTimeout(K.current),K.current=setTimeout(()=>{O.current="",K.current=null},500)},ae=e=>Array.isArray(i)?i.filter(n=>!g(n,l(e))):[],h=(e,n=-1)=>{a!==n&&(d(n),S(n),o.selectOnFocus&&!o.multiple&&T(e,c()[n]))},Ue=()=>new Promise(e=>{requestAnimationFrame(()=>{requestAnimationFrame(e)})}),S=(e=-1)=>{Ue().then(()=>{var r;let n=e!==-1?v(e):j(),t=We(M.current,`[id="${n}"]`);(r=t==null?void 0:t.scrollIntoView)==null||r.call(t,{block:"nearest",inline:"nearest",behavior:"smooth"})})},$=()=>{if(o.selectOnFocus&&o.autoOptionFocus&&!w()&&!o.multiple&&P){let e=E();d(e),T(null,c()[e])}},x=(e,n)=>{me([n,{originalEvent:e,value:n}])},w=()=>z(i);s.useEffect(()=>($(),()=>{K.current&&(clearTimeout(K.current),K.current=null)}),[]);let qe=s.useMemo(()=>{let e=[];return(o.options||[]).forEach(n=>{let t=_(n)||[];t!=null&&t.length&&e.push({optionGroup:n,group:!0},...t)}),e},[o.options]),$e=o.optionGroupLabel?qe:o.options,ue=o.optionValue?void 0:o.optionKey;return{state:be,listRef:M,firstHiddenFocusableRef:b,lastHiddenFocusableRef:k,getOptions:c,getOptionId:v,getOptionLabel:W,getOptionValue:l,isOptionDisabled:G,isOptionGroup:D,getOptionGroupLabel:ye,getOptionGroupChildren:_,getFocusedOptionId:j,getAriaSetSize:he,getAriaPosInset:we,onFirstHiddenFocus:ke,onLastHiddenFocus:Ke,onFocusOut:Re,onListFocus:Oe,onListBlur:Ie,onListKeyDown:ge,onArrowDownKey:N,onArrowUpKey:U,onArrowLeftKey:Q,onEnterKey:q,onOptionSelect:T,onOptionMouseDown:Ee,onOptionMouseMove:Se,onOptionTouchEnd:xe,onFilterChange:Fe,onFilterBlur:Me,onFilterKeyDown:Ae,isOptionMatched:V,isValidOption:f,isValidSelectedOption:R,isSelected:H,changeFocusedOptionIndex:h,findSelectedOptionIndex:te,findFirstFocusedOptionIndex:E,scrollInView:S,updateModel:x,autoUpdateModel:$,equalityKey:ue,hasValue:w,isEquals:g}}});export{ie as defaultProps,tn as useListbox};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +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, isNumber, 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) || 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!) : 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(index);\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 onArrowDownKey,\n onArrowUpKey,\n onArrowLeftKey,\n onEnterKey,\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 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/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","isNumber","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","isNumber","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"]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export declare const useListbox: (inProps?: unknown) => import("@primereact/types/core").HeadlessInstance<import("@primereact/types/shared/listbox").useListboxProps, unknown, {
|
|
3
|
+
state: {
|
|
4
|
+
value: unknown;
|
|
5
|
+
focused: boolean;
|
|
6
|
+
focusedOptionIndex: number;
|
|
7
|
+
};
|
|
8
|
+
listRef: React.RefObject<HTMLElement | null>;
|
|
9
|
+
firstHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
10
|
+
lastHiddenFocusableRef: React.RefObject<HTMLElement | null>;
|
|
11
|
+
getOptions: () => unknown[];
|
|
12
|
+
getOptionId: (index: number) => string;
|
|
13
|
+
getOptionLabel: (option: unknown) => any;
|
|
14
|
+
getOptionValue: (option: unknown) => any;
|
|
15
|
+
isOptionDisabled: (option: unknown) => any;
|
|
16
|
+
isOptionGroup: (option: unknown) => boolean;
|
|
17
|
+
getOptionGroupLabel: (optionGroup: unknown) => any;
|
|
18
|
+
getOptionGroupChildren: (optionGroup: unknown) => any;
|
|
19
|
+
getFocusedOptionId: () => string | null;
|
|
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;
|
|
28
|
+
onArrowDownKey: (event: React.KeyboardEvent) => void;
|
|
29
|
+
onArrowUpKey: (event: React.KeyboardEvent) => void;
|
|
30
|
+
onArrowLeftKey: (event: React.KeyboardEvent, pressedInInputText?: boolean) => void;
|
|
31
|
+
onEnterKey: (event: React.KeyboardEvent) => void;
|
|
32
|
+
onOptionSelect: (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index?: number) => void;
|
|
33
|
+
onOptionMouseDown: (event: React.MouseEvent, index: number) => void;
|
|
34
|
+
onOptionMouseMove: (event: React.MouseEvent, index: number) => void;
|
|
35
|
+
onOptionTouchEnd: () => void;
|
|
36
|
+
onFilterChange: () => void;
|
|
37
|
+
onFilterBlur: () => void;
|
|
38
|
+
onFilterKeyDown: (event: React.KeyboardEvent) => void;
|
|
39
|
+
isOptionMatched: (option: unknown) => any;
|
|
40
|
+
isValidOption: (option: unknown) => boolean;
|
|
41
|
+
isValidSelectedOption: (option: unknown) => boolean;
|
|
42
|
+
isSelected: (option: unknown) => boolean;
|
|
43
|
+
changeFocusedOptionIndex: (event: React.MouseEvent | React.KeyboardEvent, index?: number) => void;
|
|
44
|
+
findSelectedOptionIndex: () => number;
|
|
45
|
+
findFirstFocusedOptionIndex: () => number;
|
|
46
|
+
scrollInView: (index?: number) => void;
|
|
47
|
+
updateModel: (event: React.SyntheticEvent, value: unknown) => void;
|
|
48
|
+
autoUpdateModel: () => void;
|
|
49
|
+
equalityKey: string | undefined;
|
|
50
|
+
hasValue: () => boolean;
|
|
51
|
+
isEquals: (value1: unknown, value2: unknown) => boolean;
|
|
52
|
+
}>;
|
|
File without changes
|
package/menu/index.d.ts
ADDED
package/menu/index.mjs
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{withHeadless as N}from"@primereact/core/headless";import{findSingle as Q,focus as A,isPrintableCharacter as ee}from"@primeuix/utils";import*as u from"react";var F={open:void 0,defaultOpen:void 0,composite:!1,appendTo:"body",baseZIndex:0,autoZIndex:!0,tabIndex:0,onOpenChange:void 0};var ae=N({name:"useMenu",defaultProps:F,setup({props:r}){var C;let[L,h]=u.useState(r.open!==void 0?r.open:(C=r.defaultOpen)!=null?C:!1),[S,M]=u.useState(!1),[d,a]=u.useState(r.composite?[]:""),[K,R]=u.useState(null),v=u.useRef(!1),O=u.useRef(null),I=u.useRef(null),f=u.useRef(null),p=u.useRef(new Map),P={opened:L,focused:S,focusedOptionId:d,contextMenuTarget:K},H=u.useCallback((e,t)=>{p.current.set(e,t)},[]),_=u.useCallback(e=>{p.current.delete(e)},[]),w=e=>{r.onOpenChange&&r.onOpenChange({value:e})};u.useEffect(()=>{r.open!==void 0&&h(r.open)},[r.open]);let j=e=>{h(e),w(e)},g=u.useCallback(()=>{let e=[];return p.current.forEach((t,n)=>{if(t.getAttribute("data-p-disabled")==="true")return;let s=t,l=!0;for(;s&&s!==f.current;){let c=s.closest('[data-pc-name="menulist"]');if(!c||c===f.current)break;let i=c.previousElementSibling;if(i&&i.getAttribute("aria-expanded")==="false"){l=!1;break}s=c.parentElement}l&&e.push({id:n,element:t})}),e},[]),y=u.useCallback(()=>{let e=g();if(e.length===0)return[];let t=Math.min(...e.map(c=>c.id.split("_").length));if(d.length===0)return e.filter(i=>i.id.split("_").length===t);let o=d[d.length-1].split("_"),s=o.length;return e.filter(c=>{let i=c.id.split("_");if(i.length!==s)return!1;if(s===t)return i.length===t;let b=o.slice(0,-1).join("_"),x=i.slice(0,-1).join("_");return b===x})},[r.composite,d,g]),m=e=>{v.current=!0,r.composite?a(t=>{let n=Array.isArray(t)?t:[];if(n.length===0)return[e];if(n.includes(e)){let o=e.length,s=n.findIndex(l=>l.length===o);return s!==-1?[...n.slice(0,s),e]:n}else if(n[n.length-1].length===e.length)return[...n.slice(0,-1),e];return[...n,e]}):a(e)},E=()=>r.composite&&Array.isArray(d)?d[d.length-1]||"":typeof d=="string"?d:"",B=e=>{var l,c;let t=r.composite?y():g();if(t.length===0)return;let n=E(),o=n?t.findIndex(i=>i.id===n)+1:0,s=e.toLowerCase();for(let i=o;i<t.length;i++){let b=t[i];if((((l=b.element.textContent)==null?void 0:l.trim().toLowerCase())||"").startsWith(s)){r.composite?m(b.id):a(b.id);return}}for(let i=0;i<o;i++){let b=t[i];if((((c=b.element.textContent)==null?void 0:c.trim().toLowerCase())||"").startsWith(s)){r.composite?m(b.id):a(b.id);return}}},U=e=>{e.preventDefault();let t=r.composite?y():g();if(t.length===0)return;let n=E();if(!n){r.composite?m(t[0].id):a(t[0].id);return}let o=t.findIndex(l=>l.id===n),s=o<t.length-1?o+1:0;r.composite?m(t[s].id):a(t[s].id)},W=e=>{if(e.preventDefault(),e.altKey&&I.current){D();return}let t=r.composite?y():g();if(t.length===0)return;let n=E();if(!n){r.composite?m(t[t.length-1].id):a(t[t.length-1].id);return}let o=t.findIndex(l=>l.id===n),s=o>0?o-1:t.length-1;r.composite?m(t[s].id):a(t[s].id)},X=e=>{if(!r.composite)return;e.preventDefault();let t=E();if(!t)return;let n=p.current.get(t);if(!n)return;let o=n.getAttribute("aria-expanded");if(o!==null){if(o==="false"){let s=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(s)}setTimeout(()=>{let l=g().filter(c=>c.id.startsWith(t+"_")&&c.id.split("_").length===t.split("_").length+1);l.length>0&&a(c=>[...Array.isArray(c)?c:[],l[0].id])},10)}},Y=e=>{if(!(!r.composite||(e.preventDefault(),!E()||!Array.isArray(d)))&&d.length>1){let n=d[d.length-2],o=p.current.get(n);if(o&&o.getAttribute("aria-expanded")==="true"){let s=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});o.dispatchEvent(s)}}},Z=e=>{e.preventDefault();let t=r.composite?y():g();t.length!==0&&(r.composite?m(t[0].id):a(t[0].id))},V=e=>{e.preventDefault();let t=r.composite?y():g();t.length!==0&&(r.composite?m(t[t.length-1].id):a(t[t.length-1].id))},$=e=>{if(r.composite&&T(),f!=null&&f.current){let t=E(),n=Q(f==null?void 0:f.current,`[id="${t}"]`);if(n){let o=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(o)}}e.preventDefault()},T=()=>{k(),setTimeout(()=>{I.current&&A(I.current.elementRef.current)},10)},q=e=>{let t=e.metaKey||e.ctrlKey;switch(e.key){case"ArrowDown":U(e);break;case"ArrowUp":W(e);break;case"ArrowRight":r.composite&&X(e);break;case"ArrowLeft":r.composite&&Y(e);break;case"Home":Z(e);break;case"End":V(e);break;case"Enter":case" ":$(e);break;case"PageDown":case"PageUp":case"Backspace":case"ShiftLeft":case"ShiftRight":break;case"Escape":T();break;default:!t&&ee(e.key)&&B(e.key);break}},z=()=>{if(M(!0),E()===""&&!v.current){let t=r.composite?y():g();t.length>0&&(r.composite?m(t[0].id):a(t[0].id))}v.current=!1},G=()=>{M(!1),r.composite?k():a("")},k=()=>{r.composite?(p.current.forEach(e=>{if(e.getAttribute("aria-expanded")==="true"){let n=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});e.dispatchEvent(n)}}),a([])):a("")},J=e=>{if(!r.composite||!Array.isArray(d))return;let t=e.split("_").length-1;p.current.forEach((n,o)=>{let s=o.split("_").length-1;if(n.getAttribute("aria-expanded")==="true"&&s>=t){let c=new MouseEvent("mousedown",{bubbles:!0,cancelable:!0,view:window});n.dispatchEvent(c)}}),a(n=>(Array.isArray(n)?n:[]).filter(s=>s.split("_").length-1<t))},D=()=>{h(!1),w(!1),r.composite?a([]):a(""),setTimeout(()=>{I.current&&A(I.current.elementRef.current)},10)};return{state:P,portalRef:O,triggerRef:I,listRef:f,registerItem:H,unregisterItem:_,changeVisibleState:j,changeFocusedOptionId:m,hideSubmenusAfterLevel:J,onListKeyDown:q,onListFocus:z,onListBlur:G,onOverlayEnter:()=>{f.current&&A(f.current)},onTriggerClick:e=>{if(e&&e.type==="contextmenu"){e.preventDefault(),e.stopPropagation();let t={pageX:e.pageX,pageY:e.pageY};L?(w(!1),h(!1),setTimeout(()=>{R(t),w(!0),h(!0)},0)):(R(t),h(!0),w(!0))}else R(null),h(!0),w(!0)},onItemClick:e=>{e.preventDefault(),D()}}}});export{F as defaultProps,ae as useMenu};
|
|
2
|
+
//# sourceMappingURL=index.mjs.map
|