@primereact/headless 11.0.0-rc.1 → 11.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/accordion/index.mjs +1 -2
- package/animateonscroll/index.mjs +1 -2
- package/autocomplete/index.mjs +1 -2
- package/avatar/index.mjs +1 -2
- package/avatargroup/index.mjs +0 -1
- package/badge/index.mjs +1 -2
- package/breadcrumb/index.mjs +0 -1
- package/button/index.mjs +0 -1
- package/card/index.mjs +0 -1
- package/carousel/index.mjs +1 -2
- package/carousel/useCarousel.d.ts +28 -15
- package/checkbox/index.mjs +1 -2
- package/checkboxgroup/index.mjs +1 -2
- package/chip/index.mjs +1 -2
- package/collapsible/index.mjs +1 -2
- package/compare/index.mjs +1 -2
- package/contextmenu/index.mjs +1 -2
- package/contextmenu/submenu/index.mjs +0 -1
- package/datatable/features/index.mjs +8 -9
- package/datatable/features/useDataTableExport.d.ts +1 -1
- package/datatable/features/useDataTableKeyboard.d.ts +1 -1
- package/datatable/features/useDataTableSelection.d.ts +4 -4
- package/datatable/index.mjs +8 -9
- package/datatable/useDataTable.d.ts +2 -2
- package/datatable/utils/index.mjs +0 -1
- package/dataview/index.mjs +1 -2
- package/datepicker/index.mjs +1 -2
- package/dialog/index.mjs +1 -2
- package/dialog/useDialog.d.ts +12 -12
- package/divider/index.mjs +0 -1
- package/divider/useDivider.d.ts +1 -1
- package/dnd/index.mjs +1 -2
- package/drawer/index.mjs +1 -2
- package/fieldset/index.mjs +1 -2
- package/fileupload/index.mjs +1 -2
- package/fileupload/useFileUpload.d.ts +3 -0
- package/floatlabel/index.mjs +0 -1
- package/fluid/index.mjs +0 -1
- package/focustrap/index.mjs +1 -2
- package/gallery/index.mjs +1 -2
- package/gallery/item/index.mjs +1 -2
- package/gallery/useGallery.d.ts +17 -9
- package/iconfield/index.mjs +0 -1
- package/iftalabel/index.mjs +0 -1
- package/inplace/index.mjs +1 -2
- package/inplace/useInplace.d.ts +18 -6
- package/inputcolor/colorManager.d.ts +1 -1
- package/inputcolor/index.mjs +1 -2
- package/inputgroup/index.mjs +0 -1
- package/inputnumber/index.mjs +1 -2
- package/inputotp/index.mjs +1 -2
- package/inputpassword/index.mjs +1 -2
- package/inputtags/index.mjs +1 -2
- package/inputtext/index.mjs +1 -2
- package/knob/index.mjs +1 -2
- package/label/index.mjs +0 -1
- package/listbox/index.mjs +1 -2
- package/menu/checkboxitem/index.mjs +1 -2
- package/menu/index.mjs +1 -2
- package/menu/radioitem/index.mjs +1 -2
- package/menu/submenu/index.mjs +1 -2
- package/message/index.mjs +1 -2
- package/metergroup/index.mjs +1 -2
- package/navigationmenu/index.mjs +1 -2
- package/orderlist/index.mjs +1 -2
- package/orderlist/useOrderList.d.ts +1 -0
- package/organizationchart/index.mjs +1 -2
- package/overlaybadge/index.mjs +0 -1
- package/package.json +9 -7
- package/paginator/index.mjs +1 -2
- package/paginator/usePaginator.d.ts +1 -1
- package/panel/index.mjs +1 -2
- package/picklist/index.mjs +1 -2
- package/popover/index.mjs +1 -2
- package/portal/index.mjs +0 -1
- package/positioner/index.mjs +1 -2
- package/positioner/usePositioner.anchor.d.ts +2 -2
- package/positioner/usePositioner.fallback.d.ts +2 -2
- package/progressbar/index.mjs +1 -2
- package/progressspinner/index.mjs +1 -2
- package/radiobutton/index.mjs +1 -2
- package/radiobuttongroup/index.mjs +1 -2
- package/rating/index.mjs +1 -2
- package/scrollarea/index.mjs +1 -2
- package/scrollarea/useScrollArea.d.ts +1 -1
- package/select/index.mjs +1 -2
- package/sidebar/index.mjs +1 -2
- package/sidebar/useSidebar.d.ts +30 -4
- package/sidebar/useSidebarLayout.d.ts +4 -4
- package/sidebar/useSidebarMenuItem.d.ts +0 -1
- package/skeleton/index.mjs +0 -1
- package/slider/index.mjs +1 -2
- package/speeddial/index.mjs +1 -2
- package/splitter/index.mjs +1 -2
- package/stepper/index.mjs +1 -2
- package/styleclass/index.mjs +1 -2
- package/tabs/index.mjs +1 -2
- package/tag/index.mjs +0 -1
- package/terminal/index.mjs +1 -2
- package/textarea/index.mjs +1 -2
- package/timeline/index.mjs +0 -1
- package/toast/index.mjs +1 -2
- package/toaster/index.mjs +1 -2
- package/togglebutton/index.mjs +1 -2
- package/togglebuttongroup/index.mjs +1 -2
- package/toggleswitch/index.mjs +1 -2
- package/toolbar/index.mjs +0 -1
- package/tooltip/index.mjs +1 -2
- package/tooltipmanager/index.mjs +1 -2
- package/tree/index.mjs +1 -2
- package/tree/useTree.d.ts +4 -4
- package/tree/useTreeDragDrop.d.ts +2 -2
- package/tree/useTreeFlatten.d.ts +1 -1
- package/tree/useTreeSelection.d.ts +3 -3
- package/accordion/index.mjs.map +0 -1
- package/accordion/useAccordion.test.d.ts +0 -0
- package/animateonscroll/index.mjs.map +0 -1
- package/animateonscroll/useAnimateOnScroll.test.d.ts +0 -0
- package/autocomplete/index.mjs.map +0 -1
- package/autocomplete/useAutoComplete.test.d.ts +0 -0
- package/avatar/index.mjs.map +0 -1
- package/avatar/useAvatar.test.d.ts +0 -0
- package/avatargroup/index.mjs.map +0 -1
- package/badge/index.mjs.map +0 -1
- package/badge/useBadge.test.d.ts +0 -0
- package/breadcrumb/index.mjs.map +0 -1
- package/breadcrumb/useBreadcrumb.test.d.ts +0 -0
- package/button/index.mjs.map +0 -1
- package/button/useButton.test.d.ts +0 -0
- package/card/index.mjs.map +0 -1
- package/card/useCard.test.d.ts +0 -0
- package/carousel/index.mjs.map +0 -1
- package/carousel/useCarousel.test.d.ts +0 -0
- package/checkbox/index.mjs.map +0 -1
- package/checkbox/useCheckbox.test.d.ts +0 -0
- package/checkboxgroup/index.mjs.map +0 -1
- package/checkboxgroup/useCheckboxGroup.test.d.ts +0 -0
- package/chip/index.mjs.map +0 -1
- package/chip/useChip.test.d.ts +0 -0
- package/collapsible/index.mjs.map +0 -1
- package/collapsible/useCollapsible.test.d.ts +0 -0
- package/compare/index.mjs.map +0 -1
- package/compare/useCompare.test.d.ts +0 -0
- package/contextmenu/index.mjs.map +0 -1
- package/contextmenu/submenu/index.mjs.map +0 -1
- package/contextmenu/useContextMenu.test.d.ts +0 -0
- package/datatable/features/index.mjs.map +0 -1
- package/datatable/index.mjs.map +0 -1
- package/datatable/utils/index.mjs.map +0 -1
- package/dataview/index.mjs.map +0 -1
- package/dataview/useDataView.test.d.ts +0 -0
- package/datepicker/index.mjs.map +0 -1
- package/datepicker/useDatePicker.test.d.ts +0 -0
- package/dialog/index.mjs.map +0 -1
- package/dialog/useDialog.test.d.ts +0 -0
- package/divider/index.mjs.map +0 -1
- package/divider/useDivider.test.d.ts +0 -0
- package/dnd/index.mjs.map +0 -1
- package/drawer/index.mjs.map +0 -1
- package/drawer/useDrawer.test.d.ts +0 -0
- package/fieldset/index.mjs.map +0 -1
- package/fieldset/useFieldset.test.d.ts +0 -0
- package/fileupload/index.mjs.map +0 -1
- package/fileupload/useFileUpload.test.d.ts +0 -0
- package/floatlabel/index.mjs.map +0 -1
- package/floatlabel/useFloatLabel.test.d.ts +0 -0
- package/fluid/index.mjs.map +0 -1
- package/fluid/useFluid.test.d.ts +0 -0
- package/focustrap/index.mjs.map +0 -1
- package/focustrap/useFocusTrap.test.d.ts +0 -0
- package/gallery/index.mjs.map +0 -1
- package/gallery/item/index.mjs.map +0 -1
- package/gallery/useGallery.test.d.ts +0 -0
- package/iconfield/index.mjs.map +0 -1
- package/iconfield/useIconField.test.d.ts +0 -0
- package/iftalabel/index.mjs.map +0 -1
- package/iftalabel/useIftaLabel.test.d.ts +0 -0
- package/inplace/index.mjs.map +0 -1
- package/inplace/useInplace.test.d.ts +0 -0
- package/inputcolor/index.mjs.map +0 -1
- package/inputcolor/useInputColor.test.d.ts +0 -0
- package/inputgroup/index.mjs.map +0 -1
- package/inputgroup/useInputGroup.test.d.ts +0 -0
- package/inputnumber/index.mjs.map +0 -1
- package/inputnumber/useInputNumber.test.d.ts +0 -0
- package/inputotp/index.mjs.map +0 -1
- package/inputotp/useInputOtp.test.d.ts +0 -0
- package/inputpassword/index.mjs.map +0 -1
- package/inputpassword/useInputPassword.test.d.ts +0 -0
- package/inputtags/index.mjs.map +0 -1
- package/inputtags/useInputTags.test.d.ts +0 -0
- package/inputtext/index.mjs.map +0 -1
- package/inputtext/useInputText.test.d.ts +0 -0
- package/knob/index.mjs.map +0 -1
- package/knob/useKnob.test.d.ts +0 -0
- package/label/index.mjs.map +0 -1
- package/label/useLabel.test.d.ts +0 -0
- package/listbox/index.mjs.map +0 -1
- package/listbox/useListbox.test.d.ts +0 -0
- package/menu/checkboxitem/index.mjs.map +0 -1
- package/menu/index.mjs.map +0 -1
- package/menu/radioitem/index.mjs.map +0 -1
- package/menu/submenu/index.mjs.map +0 -1
- package/menu/useMenu.test.d.ts +0 -0
- package/message/index.mjs.map +0 -1
- package/message/useMessage.test.d.ts +0 -0
- package/metergroup/index.mjs.map +0 -1
- package/metergroup/useMeterGroup.test.d.ts +0 -0
- package/navigationmenu/index.mjs.map +0 -1
- package/navigationmenu/useNavigationMenu.test.d.ts +0 -0
- package/orderlist/index.mjs.map +0 -1
- package/organizationchart/index.mjs.map +0 -1
- package/organizationchart/useOrganizationChart.test.d.ts +0 -0
- package/overlaybadge/index.mjs.map +0 -1
- package/overlaybadge/useOverlayBadge.test.d.ts +0 -0
- package/paginator/index.mjs.map +0 -1
- package/paginator/usePaginator.test.d.ts +0 -0
- package/panel/index.mjs.map +0 -1
- package/panel/usePanel.test.d.ts +0 -0
- package/picklist/index.mjs.map +0 -1
- package/popover/index.mjs.map +0 -1
- package/popover/usePopover.test.d.ts +0 -0
- package/portal/index.mjs.map +0 -1
- package/portal/usePortal.test.d.ts +0 -0
- package/positioner/index.mjs.map +0 -1
- package/positioner/usePositioner.test.d.ts +0 -0
- package/progressbar/index.mjs.map +0 -1
- package/progressbar/useProgressBar.test.d.ts +0 -0
- package/progressspinner/index.mjs.map +0 -1
- package/radiobutton/index.mjs.map +0 -1
- package/radiobutton/useRadioButton.test.d.ts +0 -0
- package/radiobuttongroup/index.mjs.map +0 -1
- package/radiobuttongroup/useRadioButtonGroup.test.d.ts +0 -0
- package/rating/index.mjs.map +0 -1
- package/scrollarea/index.mjs.map +0 -1
- package/scrollarea/useScrollArea.test.d.ts +0 -0
- package/select/index.mjs.map +0 -1
- package/select/useSelect.test.d.ts +0 -1
- package/sidebar/index.mjs.map +0 -1
- package/skeleton/index.mjs.map +0 -1
- package/skeleton/useSkeleton.test.d.ts +0 -0
- package/slider/index.mjs.map +0 -1
- package/slider/useSlider.test.d.ts +0 -0
- package/speeddial/index.mjs.map +0 -1
- package/speeddial/useSpeedDial.test.d.ts +0 -0
- package/splitter/index.mjs.map +0 -1
- package/splitter/useSplitter.test.d.ts +0 -0
- package/stepper/index.mjs.map +0 -1
- package/stepper/useStepper.test.d.ts +0 -0
- package/styleclass/index.mjs.map +0 -1
- package/styleclass/useStyleClass.test.d.ts +0 -0
- package/tabs/index.mjs.map +0 -1
- package/tabs/useTabs.test.d.ts +0 -0
- package/tag/index.mjs.map +0 -1
- package/tag/useTag.test.d.ts +0 -0
- package/terminal/index.mjs.map +0 -1
- package/terminal/useTerminal.test.d.ts +0 -0
- package/textarea/index.mjs.map +0 -1
- package/textarea/useTextarea.test.d.ts +0 -0
- package/timeline/index.mjs.map +0 -1
- package/timeline/useTimeline.test.d.ts +0 -0
- package/toast/index.mjs.map +0 -1
- package/toast/useToast.test.d.ts +0 -0
- package/toaster/index.mjs.map +0 -1
- package/toaster/useToaster.test.d.ts +0 -0
- package/togglebutton/index.mjs.map +0 -1
- package/togglebutton/useToggle.test.d.ts +0 -0
- package/togglebuttongroup/index.mjs.map +0 -1
- package/togglebuttongroup/useToggleButtonGroup.test.d.ts +0 -0
- package/toggleswitch/index.mjs.map +0 -1
- package/toggleswitch/useToggleSwitch.test.d.ts +0 -0
- package/toolbar/index.mjs.map +0 -1
- package/toolbar/useToolbar.test.d.ts +0 -0
- package/tooltip/index.mjs.map +0 -1
- package/tooltip/useTooltip.test.d.ts +0 -0
- package/tooltipmanager/index.mjs.map +0 -1
- package/tooltipmanager/useTooltipManager.test.d.ts +0 -0
- package/tree/index.mjs.map +0 -1
- package/tree/useTree.test.d.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/inputnumber/useInputNumber.ts","../../src/inputnumber/useInputNumber.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState, useMountEffect, useNumberFormatter, useUnmountEffect, useUpdateEffect } from '@primereact/hooks';\nimport { UseInputNumberProps } from '@primereact/types/headless/inputnumber';\nimport { clearSelection, getSelection, isEmpty, isNotEmpty } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useInputNumber.props';\n\nexport const useInputNumber = withHeadless({\n name: 'useInputNumber',\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 formatter = useNumberFormatter({\n value: valueState,\n locale: props.locale,\n localeMatcher: props.localeMatcher,\n mode: props.mode,\n currency: props.currency,\n currencyDisplay: props.currencyDisplay,\n useGrouping: props.useGrouping,\n minFractionDigits: props.minFractionDigits,\n maxFractionDigits: props.maxFractionDigits,\n roundingMode: props.roundingMode,\n prefix: props.prefix,\n suffix: props.suffix,\n min: props.min,\n format: props.format\n });\n\n const {\n formattedValue,\n formatValue,\n parseValue,\n addWithPrecision,\n isDecimalMode,\n isNumeralChar,\n isMinusSign: isMinusSignFn,\n isDecimalSign: isDecimalSignFn,\n allowMinusSign,\n getDecimalCharIndexes,\n getCharIndexes,\n getDecimalLength,\n concatValues,\n groupChar,\n prefixChar,\n suffixChar,\n resolvedOptions\n } = formatter;\n\n const timer = React.useRef<NodeJS.Timeout | null>(null);\n const lastValue = React.useRef<string | null>(null);\n const isSpecialChar = React.useRef<boolean | null>(null);\n const valueRef = React.useRef(valueState);\n\n valueRef.current = valueState;\n\n const state = {\n value: valueState,\n formattedValue\n };\n\n const spin = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n const step = (props.step ?? 1) * dir;\n\n if (event) {\n const currentValue = parseValue((event.currentTarget as HTMLInputElement).value) || 0;\n const newValue = validateValue(addWithPrecision(Number(currentValue), step));\n\n updateInput(event, newValue as number, null, 'spin', String(currentValue));\n updateModel(event, newValue as UseInputNumberProps['value']);\n handleOnInput(event, String(currentValue), newValue as number);\n } else {\n const currentValue = valueRef.current ?? 0;\n const newValue = validateValue(addWithPrecision(Number(currentValue), step));\n\n updateModel(null, newValue as UseInputNumberProps['value']);\n handleOnInput(null, String(currentValue), newValue as number);\n }\n };\n\n const repeat = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, interval: number | undefined, dir: number) => {\n if (props.readOnly) {\n return;\n }\n\n const i = interval || 500;\n\n clearTimer();\n timer.current = setTimeout(() => {\n repeat(event, 40, dir);\n }, i);\n\n spin(event, dir);\n };\n\n const increment = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n if (!props.disabled) {\n repeat(event, undefined, dir ?? props.step ?? 1);\n event?.preventDefault();\n }\n };\n\n const decrement = (event: React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null, dir: number) => {\n if (!props.disabled) {\n repeat(event, undefined, dir ?? (props.step ?? 1) * -1);\n event?.preventDefault();\n }\n };\n\n const stepUp = () => {\n increment(null, 1);\n };\n\n const stepDown = () => {\n decrement(null, -1);\n };\n\n const stopSpin = () => {\n if (!props.disabled) {\n clearTimer();\n }\n };\n\n const onInput = (event: React.FormEvent<HTMLInputElement>) => {\n if (props.disabled || props.readOnly) {\n return;\n }\n\n if (isSpecialChar.current) {\n event.currentTarget.value = lastValue.current ?? '';\n }\n\n isSpecialChar.current = false;\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const inputElement = event.currentTarget;\n\n if (event.altKey || event.ctrlKey || event.metaKey) {\n isSpecialChar.current = true;\n lastValue.current = inputElement.value;\n\n return;\n }\n\n lastValue.current = inputElement.value;\n\n let selectionStart = inputElement.selectionStart ?? 0;\n const selectionEnd = inputElement.selectionEnd ?? 0;\n const selectionRange = selectionEnd - selectionStart;\n const inputValue = inputElement.value;\n let newValueStr = null;\n const code = event.code || event.key;\n\n switch (code) {\n case 'ArrowUp':\n spin(event, 1);\n event.preventDefault();\n break;\n\n case 'ArrowDown':\n spin(event, -1);\n event.preventDefault();\n break;\n\n case 'ArrowLeft':\n if (selectionRange > 1) {\n const cursorPosition = isNumeralChar(inputValue.charAt(selectionStart)) ? selectionStart + 1 : selectionStart + 2;\n\n event.currentTarget.setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart - 1))) {\n event.preventDefault();\n }\n\n break;\n\n case 'ArrowRight':\n if (selectionRange > 1) {\n const cursorPosition = selectionEnd - 1;\n\n event.currentTarget.setSelectionRange(cursorPosition, cursorPosition);\n } else if (!isNumeralChar(inputValue.charAt(selectionStart))) {\n event.preventDefault();\n }\n\n break;\n\n case 'Tab':\n case 'Enter':\n case 'NumpadEnter':\n newValueStr = validateValue(parseValue(inputValue)) as UseInputNumberProps['value'];\n event.currentTarget.value = formatValue(newValueStr);\n event.currentTarget.setAttribute('aria-valuenow', newValueStr != null ? String(newValueStr) : '');\n updateModel(event, newValueStr);\n break;\n\n case 'Backspace': {\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n if (selectionStart >= inputValue.length && suffixChar !== null) {\n selectionStart = inputValue.length - suffixChar.length;\n event.currentTarget.setSelectionRange(selectionStart, selectionStart);\n }\n\n const deleteChar = inputValue.charAt(selectionStart - 1);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (groupChar && new RegExp(`[${groupChar}]`, 'g').test(deleteChar)) {\n newValueStr = inputValue.slice(0, selectionStart - 2) + inputValue.slice(selectionStart - 1);\n } else if (isDecimalSignFn(deleteChar)) {\n if (decimalLength) {\n event.currentTarget.setSelectionRange(selectionStart - 1, selectionStart - 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart - 1) + insertedText + inputValue.slice(selectionStart);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart - 1) + '0' + inputValue.slice(selectionStart);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart - 1) + inputValue.slice(selectionStart);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n }\n\n case 'Delete':\n event.preventDefault();\n\n if (selectionStart === selectionEnd) {\n const deleteChar = inputValue.charAt(selectionStart);\n const { decimalCharIndex, decimalCharIndexWithoutPrefix } = getDecimalCharIndexes(inputValue);\n\n if (isNumeralChar(deleteChar)) {\n const decimalLength = getDecimalLength(inputValue);\n\n if (groupChar && new RegExp(`[${groupChar}]`, 'g').test(deleteChar)) {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 2);\n } else if (isDecimalSignFn(deleteChar)) {\n if (decimalLength) {\n event.currentTarget.setSelectionRange(selectionStart + 1, selectionStart + 1);\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n } else if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n const insertedText = isDecimalMode() && (props.minFractionDigits || 0) < decimalLength ? '' : '0';\n\n newValueStr = inputValue.slice(0, selectionStart) + insertedText + inputValue.slice(selectionStart + 1);\n } else if (decimalCharIndexWithoutPrefix === 1) {\n newValueStr = inputValue.slice(0, selectionStart) + '0' + inputValue.slice(selectionStart + 1);\n const parsed = parseValue(newValueStr);\n\n newValueStr = typeof parsed === 'number' && parsed > 0 ? newValueStr : '';\n } else {\n newValueStr = inputValue.slice(0, selectionStart) + inputValue.slice(selectionStart + 1);\n }\n }\n\n updateValue(event, newValueStr as string, null, 'delete-back-single');\n } else {\n newValueStr = deleteRange(inputValue, selectionStart, selectionEnd);\n updateValue(event, newValueStr, null, 'delete-range');\n }\n\n break;\n\n case 'Home':\n event.preventDefault();\n\n if (isNotEmpty(props.min)) {\n updateModel(event, props.min ?? 0);\n }\n\n break;\n\n case 'End':\n event.preventDefault();\n\n if (isNotEmpty(props.max)) {\n updateModel(event, props.max ?? 100);\n }\n\n break;\n\n default:\n break;\n }\n };\n\n const onKeyPress = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n const char = event.key;\n const isDecimalSign = isDecimalSignFn(char);\n const isMinusSign = isMinusSignFn(char);\n\n if (event.code !== 'Enter') {\n event.preventDefault();\n }\n\n if ((Number(char) >= 0 && Number(char) <= 9) || isMinusSign || isDecimalSign) {\n insert(event, char, { isDecimalSign, isMinusSign });\n }\n };\n\n const onPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (props.readOnly) {\n return;\n }\n\n event.preventDefault();\n const data = (event.clipboardData || (window as Window & { clipboardData?: DataTransfer }).clipboardData)?.getData('Text');\n\n if (data) {\n const filteredData = parseValue(data);\n\n if (filteredData != null) {\n insert(event, filteredData.toString());\n }\n }\n };\n\n const insert = (event: React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, text: string, sign = { isDecimalSign: false, isMinusSign: false }) => {\n const minusCharIndexOnText = text.search(/-/);\n\n if (!allowMinusSign() && minusCharIndexOnText !== -1) {\n return;\n }\n\n const selectionStart = (event.currentTarget as HTMLInputElement).selectionStart ?? 0;\n const selectionEnd = (event.currentTarget as HTMLInputElement).selectionEnd ?? 0;\n const inputValue = (event.currentTarget as HTMLInputElement).value.trim();\n const { decimalCharIndex, minusCharIndex, suffixCharIndex, currencyCharIndex } = getCharIndexes(inputValue);\n let newValueStr;\n\n if (sign.isMinusSign) {\n const isNewMinusSign = minusCharIndex === -1;\n\n if (selectionStart === 0 || selectionStart === currencyCharIndex + 1) {\n newValueStr = inputValue;\n\n if (isNewMinusSign || selectionEnd !== 0) {\n newValueStr = insertText(inputValue, text, 0, selectionEnd);\n }\n\n updateValue(event, newValueStr, text, 'insert');\n }\n } else if (sign.isDecimalSign) {\n if (decimalCharIndex > 0 && selectionStart === decimalCharIndex) {\n updateValue(event, inputValue, text, 'insert');\n } else if (decimalCharIndex > selectionStart && decimalCharIndex < selectionEnd) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n } else if (decimalCharIndex === -1 && props.maxFractionDigits) {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, 'insert');\n }\n } else {\n const maxFractionDigits = resolvedOptions()?.maximumFractionDigits ?? 0;\n const operation = selectionStart !== selectionEnd ? 'range-insert' : 'insert';\n\n if (decimalCharIndex > 0 && selectionStart > decimalCharIndex) {\n if (selectionStart + text.length - (decimalCharIndex + 1) <= maxFractionDigits) {\n const charIndex = currencyCharIndex >= selectionStart ? currencyCharIndex - 1 : suffixCharIndex >= selectionStart ? suffixCharIndex : inputValue.length;\n\n newValueStr = inputValue.slice(0, selectionStart) + text + inputValue.slice(selectionStart + text.length, charIndex) + inputValue.slice(charIndex);\n updateValue(event, newValueStr, text, operation);\n }\n } else {\n newValueStr = insertText(inputValue, text, selectionStart, selectionEnd);\n updateValue(event, newValueStr, text, operation);\n }\n }\n };\n\n const insertText = (value: string, text: string, start: number, end: number) => {\n const textSplit = text === '.' ? text : text.split('.');\n\n if (textSplit.length === 2) {\n const decimalCharIndex = value.slice(start, end).search(/[.,]/);\n\n return decimalCharIndex > 0 ? value.slice(0, start) + formatValue(text) + value.slice(end) : formatValue(text) || value;\n } else if (end - start === value.length) {\n return formatValue(text);\n } else if (start === 0) {\n return text + value.slice(end);\n } else if (end === value.length) {\n return value.slice(0, start) + text;\n } else {\n return value.slice(0, start) + text + value.slice(end);\n }\n };\n\n const deleteRange = (value: string, start: number, end: number) => {\n let newValueStr;\n\n if (end - start === value.length) newValueStr = '';\n else if (start === 0) newValueStr = value.slice(end);\n else if (end === value.length) newValueStr = value.slice(0, start);\n else newValueStr = value.slice(0, start) + value.slice(end);\n\n return newValueStr;\n };\n\n const initCursor = (event: React.SyntheticEvent<HTMLInputElement | HTMLButtonElement>) => {\n const inputEl = event.currentTarget as HTMLInputElement;\n\n let inputValue = inputEl.value;\n let selectionStart = inputEl.selectionStart ?? 0;\n const valueLength = inputValue.length;\n let index = null;\n\n // remove prefix\n const prefixLength = (prefixChar || '').length;\n\n inputValue = inputValue.replace(prefixChar || '', '');\n selectionStart = selectionStart - prefixLength;\n\n let char = inputValue.charAt(selectionStart);\n\n if (isNumeralChar(char)) {\n return selectionStart + prefixLength;\n }\n\n //left\n let i = selectionStart - 1;\n\n while (i >= 0) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i--;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index + 1, index + 1);\n } else {\n i = selectionStart;\n\n while (i < valueLength) {\n char = inputValue.charAt(i);\n\n if (isNumeralChar(char)) {\n index = i + prefixLength;\n break;\n } else {\n i++;\n }\n }\n\n if (index !== null) {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(index, index);\n }\n }\n\n return index || 0;\n };\n\n const onClick = (event: React.MouseEvent<HTMLInputElement>) => {\n if (!props.readOnly && (event.currentTarget as HTMLInputElement).value !== getSelection()) {\n initCursor(event);\n }\n };\n\n const changeValue = () => {\n const _value = valueState ?? null;\n const val = validateValueByLimit(_value);\n\n updateInputValue(val);\n\n const newValue = validateValue(_value);\n\n if (_value !== null && _value !== newValue) {\n updateModel(null, newValue as UseInputNumberProps['value']);\n }\n };\n\n const updateValue = (event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement>, valueStr: string, insertedValueStr: string | null, operation: string) => {\n const currentValue = (event.currentTarget as HTMLInputElement).value;\n let newValue = null;\n\n if (valueStr != null) {\n newValue = parseValue(valueStr);\n newValue = !newValue && !props.allowEmpty ? 0 : newValue;\n\n updateInput(event, newValue, insertedValueStr, operation, valueStr);\n handleOnInput(event, currentValue, newValue);\n }\n };\n\n const isValueChanged = (currentValue: string | number | null, newValue: number | string | null) => {\n if (newValue === null && currentValue !== null) {\n return true;\n }\n\n if (newValue != null) {\n const parsedCurrentValue = typeof currentValue === 'string' ? parseValue(currentValue) : currentValue;\n\n return newValue !== parsedCurrentValue;\n }\n\n return false;\n };\n\n const handleOnInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | null,\n currentValue: string,\n newValue: number | string | null\n ) => {\n if (props.onChange && isValueChanged(currentValue, newValue)) {\n props.onChange({\n originalEvent: event,\n value: newValue as number\n });\n }\n };\n\n const validateValue = (value: number | string | null) => {\n if (value === '-' || value == null) {\n return null;\n }\n\n if (props.min != null && typeof props.min === 'number' && typeof value === 'number' && value < props.min) {\n return props.min;\n }\n\n if (props.max != null && typeof props.max === 'number' && typeof value === 'number' && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const validateValueByLimit = (value: number | null) => {\n if (isEmpty(value)) {\n return null;\n }\n\n if (props.min !== undefined && props.min !== null && value !== null && value < props.min) {\n return props.min;\n }\n\n if (props.max !== undefined && props.max !== null && value !== null && value > props.max) {\n return props.max;\n }\n\n return value;\n };\n\n const updateInput = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.ClipboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement>,\n value: number | string | null,\n insertedValueStr: string | null,\n operation: string,\n valueStr: string\n ) => {\n const inputEl = event.currentTarget as HTMLInputElement;\n const inputValue = inputEl.value ?? '';\n\n let newValue = formatValue(value);\n const currentLength = inputValue.length;\n\n if (newValue !== valueStr) {\n newValue = concatValues(newValue, valueStr);\n }\n\n if (currentLength === 0) {\n inputEl.value = newValue;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor(event);\n const selectionEnd = index + (insertedValueStr ? insertedValueStr.length : 0);\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n const selectionStart = inputEl.selectionStart ?? 0;\n let selectionEnd = inputEl.selectionEnd ?? 0;\n\n inputEl.value = newValue;\n const newLength = newValue.length;\n\n if (operation === 'range-insert') {\n const startValue = parseValue(inputValue.slice(0, selectionStart));\n const startValueStr = startValue !== null ? startValue.toString() : '';\n const startExpr = startValueStr.split('').join(`(${groupChar})?`);\n const sRegex = new RegExp(startExpr, 'g');\n\n sRegex.test(newValue);\n\n const tExpr = (insertedValueStr ?? '').split('').join(`(${groupChar})?`);\n const tRegex = new RegExp(tExpr, 'g');\n\n tRegex.test(newValue.slice(sRegex.lastIndex));\n\n selectionEnd = sRegex.lastIndex + tRegex.lastIndex;\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (newLength === currentLength) {\n if (operation === 'insert' || operation === 'delete-back-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd + 1, selectionEnd + 1);\n } else if (operation === 'delete-single') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd - 1, selectionEnd - 1);\n } else if (operation === 'delete-range' || operation === 'spin') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n } else if (operation === 'delete-back-single') {\n const prevChar = inputValue.charAt(selectionEnd - 1);\n const nextChar = inputValue.charAt(selectionEnd);\n const diff = currentLength - newLength;\n const isGroupCharacter = groupChar ? new RegExp(`[${groupChar}]`, 'g').test(nextChar) : false;\n\n if (isGroupCharacter && diff === 1) {\n selectionEnd += 1;\n } else if (!isGroupCharacter && isNumeralChar(prevChar)) {\n selectionEnd += -1 * diff + 1;\n }\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else if (inputValue === '-' && operation === 'insert') {\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(0, 0);\n\n const index = initCursor(event);\n const selectionEnd = index + (insertedValueStr ? insertedValueStr.length : 0) + 1;\n\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n } else {\n selectionEnd = selectionEnd + (newLength - currentLength);\n if (inputEl.setSelectionRange) inputEl.setSelectionRange(selectionEnd, selectionEnd);\n }\n }\n\n inputEl.setAttribute('aria-valuenow', String(value));\n };\n\n const evaluateEmpty = (newValue: UseInputNumberProps['value']) => {\n return !newValue && !props.allowEmpty ? (props.min ?? 0) : newValue;\n };\n\n const updateInputValue = (newValue: UseInputNumberProps['value']) => {\n const newValueEvaluated = evaluateEmpty(newValue);\n\n setValueState([\n newValueEvaluated,\n {\n value: newValueEvaluated as number\n }\n ]);\n };\n\n const updateModel = (\n event: React.ChangeEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement> | React.MouseEvent<HTMLInputElement> | React.PointerEvent<HTMLButtonElement> | React.PointerEvent<HTMLButtonElement> | null,\n value: UseInputNumberProps['value']\n ) => {\n const originalEvent = event ?? null;\n\n setValueState([\n value,\n {\n originalEvent,\n value: value as number\n }\n ]);\n };\n\n const onFocus = (event: React.FocusEvent<HTMLInputElement>) => {\n if (!props.disabled && !props.readOnly && event.currentTarget.value !== getSelection() && props.highlightOnFocus) {\n event.currentTarget.select();\n }\n };\n\n const onBlur = (event: React.FocusEvent<HTMLInputElement>) => {\n const input = event.currentTarget as HTMLInputElement;\n const newValue = validateValue(parseValue(input.value)) as UseInputNumberProps['value'];\n\n updateModel(event, newValue);\n\n if (!props.disabled && !props.readOnly && props.highlightOnFocus) {\n clearSelection();\n }\n };\n\n const clearTimer = () => {\n if (timer.current) {\n clearInterval(timer.current);\n }\n };\n\n const maxBoundry = () => {\n return props.max !== undefined && (valueState ?? 0) >= props.max;\n };\n\n const minBoundry = () => {\n return props.min !== undefined && (valueState ?? 0) <= props.min;\n };\n\n useUnmountEffect(() => {\n clearTimer();\n });\n\n useMountEffect(() => {\n const newValue = validateValue(valueState as number | null);\n const valueForInput = typeof newValue === 'number' ? newValue : null;\n\n updateInputValue(valueForInput);\n\n if (valueState !== null && valueState !== newValue) {\n updateModel(null, newValue as number);\n }\n });\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.locale, props.localeMatcher, props.mode, props.currency, props.currencyDisplay, props.useGrouping, props.minFractionDigits, props.maxFractionDigits, props.suffix, props.prefix]);\n\n useUpdateEffect(() => {\n changeValue();\n }, [props.value, props.defaultValue]);\n\n useUpdateEffect(() => {\n if (props.disabled) {\n clearTimer();\n }\n }, [props.disabled]);\n\n // prop getters\n const rootProps = {\n 'data-scope': 'inputnumber',\n 'data-part': 'root',\n ...(props.disabled ? { 'data-disabled': '' as const } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(props.readOnly ? { 'data-readonly': '' as const } : {})\n };\n\n const inputProps = {\n 'data-scope': 'inputnumber',\n 'data-part': 'input',\n role: 'spinbutton' as const,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': valueState ?? undefined,\n inputMode: (props.mode === 'decimal' && !props.minFractionDigits ? 'numeric' : 'decimal') as 'numeric' | 'decimal',\n disabled: !!props.disabled || undefined,\n readOnly: !!props.readOnly || undefined,\n onChange: onInput,\n onInput,\n onKeyDown,\n onKeyPress,\n onClick,\n onPaste,\n onFocus,\n onBlur,\n ...(props.disabled ? { 'data-disabled': '' as const } : {}),\n ...(props.invalid ? { 'data-invalid': '' as const } : {}),\n ...(props.readOnly ? { 'data-readonly': '' as const } : {})\n };\n\n const incrementProps = {\n disabled: !!props.disabled || maxBoundry(),\n tabIndex: -1,\n onPointerDown: () => stepUp(),\n onPointerUp: () => stopSpin(),\n onPointerLeave: () => stopSpin(),\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') stepUp();\n },\n onKeyUp: () => stopSpin()\n };\n\n const decrementProps = {\n disabled: !!props.disabled || minBoundry(),\n tabIndex: -1,\n onPointerDown: () => stepDown(),\n onPointerUp: () => stopSpin(),\n onPointerLeave: () => stopSpin(),\n onKeyDown: (e: React.KeyboardEvent<HTMLButtonElement>) => {\n if (e.key === 'Enter' || e.key === ' ') stepDown();\n },\n onKeyUp: () => stopSpin()\n };\n\n return {\n state,\n // prop getters\n rootProps,\n inputProps,\n incrementProps,\n decrementProps,\n // methods\n maxBoundry,\n minBoundry,\n increment,\n decrement,\n stepUp,\n stepDown,\n stopSpin\n };\n }\n});\n","import type { UseInputNumberProps } from '@primereact/types/headless/inputnumber';\n\nexport const defaultProps: UseInputNumberProps = {\n value: undefined,\n defaultValue: undefined,\n format: true,\n locale: undefined,\n mode: 'decimal',\n prefix: undefined,\n suffix: undefined,\n currency: undefined,\n currencyDisplay: undefined,\n useGrouping: true,\n minFractionDigits: undefined,\n maxFractionDigits: undefined,\n roundingMode: undefined,\n min: undefined,\n max: undefined,\n step: 1,\n allowEmpty: true,\n highlightOnFocus: false,\n onValueChange: undefined,\n onChange: undefined,\n invalid: undefined,\n disabled: undefined,\n readOnly: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","useMountEffect","useNumberFormatter","useUnmountEffect","useUpdateEffect","clearSelection","getSelection","isEmpty","isNotEmpty","React","defaultProps","useInputNumber","withHeadless","defaultProps","props","valueState","setValueState","useControlledState","formatter","useNumberFormatter","formattedValue","formatValue","parseValue","addWithPrecision","isDecimalMode","isNumeralChar","isMinusSignFn","isDecimalSignFn","allowMinusSign","getDecimalCharIndexes","getCharIndexes","getDecimalLength","concatValues","groupChar","prefixChar","suffixChar","resolvedOptions","timer","lastValue","isSpecialChar","valueRef","state","spin","event","dir","_a","_b","step","currentValue","newValue","validateValue","updateInput","updateModel","handleOnInput","repeat","interval","i","clearTimer","increment","decrement","stepUp","stepDown","stopSpin","onInput","onKeyDown","_c","_d","inputElement","selectionStart","selectionEnd","selectionRange","inputValue","newValueStr","cursorPosition","deleteChar","decimalCharIndex","decimalCharIndexWithoutPrefix","decimalLength","insertedText","parsed","updateValue","deleteRange","isNotEmpty","onKeyPress","char","isDecimalSign","isMinusSign","insert","onPaste","data","filteredData","text","sign","minusCharIndexOnText","minusCharIndex","suffixCharIndex","currencyCharIndex","isNewMinusSign","insertText","maxFractionDigits","operation","charIndex","value","start","end","initCursor","inputEl","valueLength","index","prefixLength","onClick","getSelection","changeValue","_value","val","validateValueByLimit","updateInputValue","valueStr","insertedValueStr","isValueChanged","parsedCurrentValue","isEmpty","currentLength","newLength","startValue","startExpr","sRegex","tExpr","tRegex","prevChar","nextChar","diff","isGroupCharacter","evaluateEmpty","newValueEvaluated","originalEvent","onFocus","onBlur","input","clearSelection","maxBoundry","minBoundry","useUnmountEffect","useMountEffect","useUpdateEffect","rootProps","__spreadValues","inputProps","incrementProps","decrementProps"]}
|
|
File without changes
|
package/inputotp/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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, id }) {\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 rootRef = React.useRef<HTMLElement | null>(null);\n\n const setRootRef = React.useCallback((node: HTMLElement | null) => {\n rootRef.current = node;\n }, []);\n\n const getInputEls = React.useCallback((): HTMLInputElement[] => {\n if (!rootRef.current) return [];\n\n return Array.from(rootRef.current.querySelectorAll<HTMLInputElement>('[data-scope=\"inputotp\"][data-part=\"text\"]'));\n }, []);\n\n const state = {\n value: valueState,\n tokens\n };\n\n const isDigit = (key: string) => key >= '0' && key <= '9';\n\n const inputMode = React.useMemo((): 'numeric' | 'text' => {\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 >= getInputEls().length && 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, getInputEls().length);\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 // prop getters\n const rootProps = {\n ref: setRootRef,\n id,\n 'data-scope': 'inputotp' as const,\n 'data-part': 'root' as const\n };\n\n const getTextProps = (index: number, fallbackDisabled?: boolean) => {\n const handleInput = (e: React.SyntheticEvent<HTMLInputElement>) => onInput(e, index);\n const resolvedDisabled: boolean | undefined = props.disabled !== undefined ? props.disabled : fallbackDisabled;\n\n return {\n 'data-scope': 'inputotp' as const,\n 'data-part': 'text' as const,\n value: tokens[index] ?? '',\n type: inputType,\n inputMode: inputMode as 'numeric' | 'text',\n disabled: resolvedDisabled,\n 'data-index': index,\n onInput: handleInput,\n onClick,\n onKeyDown,\n onPaste\n };\n };\n\n return {\n state,\n // prop getters\n rootProps,\n getTextProps,\n // methods\n getInputEls,\n setRootRef,\n inputMode,\n inputType,\n onInput,\n onClick,\n onKeyDown,\n onPaste\n };\n }\n});\n","import type { UseInputOtpProps } from '@primereact/types/headless/inputotp';\n\nexport const defaultProps: UseInputOtpProps = {\n value: undefined,\n defaultValue: undefined,\n integerOnly: false,\n mask: false,\n disabled: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","isTouchDevice","React","defaultProps","useInputOtp","withHeadless","defaultProps","props","id","valueState","setValueState","useControlledState","tokens","val","rootRef","setRootRef","node","getInputEls","state","isDigit","key","inputMode","inputType","updateTokens","event","currentTokens","newValue","onInput","index","inputEvent","target","moveToPrev","isTouchDevice","moveToNext","prevInput","findPrevInput","nextInput","findNextInput","element","onClick","onKeyDown","onPaste","paste","pastedCode","newTokens","fallbackDisabled","_a","handleInput","e","resolvedDisabled"]}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/inputpassword/useInputPassword.ts","../../src/inputpassword/useInputPassword.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport * as React from 'react';\nimport { defaultProps } from './useInputPassword.props';\n\nexport const useInputPassword = withHeadless({\n name: 'useInputPassword',\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 [maskState, setMaskState] = useControlledState({\n value: props.mask,\n defaultValue: props.defaultMask ?? true,\n onChange: props.onMaskChange\n });\n\n const state = {\n value: valueState,\n mask: maskState ?? true\n };\n\n const onInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = event.target.value;\n\n setValueState([\n newValue,\n {\n originalEvent: event,\n value: newValue\n }\n ]);\n };\n\n const toggleMask = () => {\n setMaskState([!maskState, { value: !maskState }]);\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'password',\n 'data-part': 'root',\n type: maskState ? ('password' as const) : ('text' as const),\n onChange: onInputChange,\n ...(props.invalid ? { 'data-invalid': '' } : {})\n };\n\n return {\n state,\n // prop getters\n rootProps,\n // methods\n toggleMask\n };\n }\n});\n","import type { UseInputPasswordProps } from '@primereact/types/headless/inputpassword';\n\nexport const defaultProps: UseInputPasswordProps = {\n value: undefined,\n defaultValue: undefined,\n mask: undefined,\n defaultMask: true,\n onValueChange: undefined,\n onMaskChange: undefined,\n invalid: undefined\n};\n"],"mappings":"yVAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,sBAAAC,MAA0B,yCCC5B,IAAMC,EAAsC,CAC/C,MAAO,OACP,aAAc,OACd,KAAM,OACN,YAAa,GACb,cAAe,OACf,aAAc,OACd,QAAS,MACb,EDLO,IAAMC,EAAmBC,EAAa,CACzC,KAAM,mBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CARrB,IAAAC,EASQ,GAAM,CAACC,EAAYC,CAAa,EAAIC,EAAmB,CACnD,MAAOJ,EAAM,MACb,aAAcA,EAAM,aACpB,SAAUA,EAAM,aACpB,CAAC,EAEK,CAACK,EAAWC,CAAY,EAAIF,EAAmB,CACjD,MAAOJ,EAAM,KACb,cAAcC,EAAAD,EAAM,cAAN,KAAAC,EAAqB,GACnC,SAAUD,EAAM,YACpB,CAAC,EAEKO,EAAQ,CACV,MAAOL,EACP,KAAMG,GAAA,KAAAA,EAAa,EACvB,EAEMG,EAAiBC,GAA+C,CAClE,IAAMC,EAAWD,EAAM,OAAO,MAE9BN,EAAc,CACVO,EACA,CACI,cAAeD,EACf,MAAOC,CACX,CACJ,CAAC,CACL,EAEMC,EAAa,IAAM,CACrBL,EAAa,CAAC,CAACD,EAAW,CAAE,MAAO,CAACA,CAAU,CAAC,CAAC,CACpD,EAGMO,EAAYC,EAAA,CACd,aAAc,WACd,YAAa,OACb,KAAMR,EAAa,WAAwB,OAC3C,SAAUG,GACNR,EAAM,QAAU,CAAE,eAAgB,EAAG,EAAI,CAAC,GAGlD,MAAO,CACH,MAAAO,EAEA,UAAAK,EAEA,WAAAD,CACJ,CACJ,CACJ,CAAC","names":["withHeadless","useControlledState","defaultProps","useInputPassword","withHeadless","defaultProps","props","_a","valueState","setValueState","useControlledState","maskState","setMaskState","state","onInputChange","event","newValue","toggleMask","rootProps","__spreadValues"]}
|
|
File without changes
|
package/inputtags/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
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 { focus, toElement } 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 }) {\n const [focusedItemIndexState, setFocusedItemIndexState] = React.useState<number>(-1);\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 inputRef = React.useRef<HTMLInputElement | null>(null);\n const itemRefs = React.useRef<Map<number, HTMLElement>>(new Map());\n\n const state = {\n value: valueState ?? [],\n inputValue: inputValueState ?? '',\n focusedItemIndex: focusedItemIndexState,\n focused: focusedState\n };\n\n const getDelimiterRegex = (delimiter: string | RegExp) => {\n return typeof delimiter === 'string' ? new RegExp(delimiter.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')) : delimiter;\n };\n\n const isInputEmpty = !inputValueState || inputValueState.length === 0;\n const hasInputValue = !!(inputValueState && inputValueState.trim());\n\n const addItem = (tags: string | string[]) => {\n if (props.disabled) return [];\n\n const currentValue = valueState ?? [];\n const nextTags: string[] = [];\n const inputTags = Array.isArray(tags) ? tags : [tags];\n\n for (const tag of inputTags) {\n const trimmedTag = tag.trim();\n\n if (!trimmedTag) continue;\n\n if (props.max !== undefined && currentValue.length + nextTags.length >= props.max) break;\n\n if (!props.allowDuplicate && (currentValue.includes(trimmedTag) || nextTags.includes(trimmedTag))) continue;\n\n nextTags.push(trimmedTag);\n }\n\n if (!nextTags.length) return [];\n\n const newValue = [...currentValue, ...nextTags];\n\n setValueState([newValue, { value: newValue }]);\n nextTags.forEach((value) => props.onAdd?.({ value }));\n setInputValueState(['', { query: '' }]);\n\n return nextTags;\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([newValue, { value: newValue }]);\n props.onRemove?.({ value: valueState[index], index });\n setFocusedItemIndexState(-1);\n };\n\n const removeLast = () => {\n if (valueState && valueState.length > 0) removeItem(valueState.length - 1);\n };\n\n const removeAll = () => {\n if (props.disabled || !valueState) return;\n\n setValueState([[], { value: [] }]);\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) focusIndex = 0;\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) focus(toElement(inputRef) as HTMLInputElement);\n } else if (focusIndex !== -1) {\n focusIndex++;\n }\n }\n\n setFocusedItemIndexState(focusIndex);\n };\n\n const onBackspaceKey = () => {\n if (focusedItemIndexState !== -1) {\n removeItem(focusedItemIndexState);\n\n return;\n }\n\n if (!inputValueState && valueState && valueState.length > 0) removeItem(valueState.length - 1);\n };\n\n const onDeleteKey = () => {\n if (focusedItemIndexState !== -1) removeItem(focusedItemIndexState);\n };\n\n const onEnterKey = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.defaultPrevented) return;\n\n if (hasInputValue) {\n addItem(inputValueState!);\n event.preventDefault();\n }\n };\n\n const onTabKey = () => {\n if (props.addOnTab && hasInputValue) addItem(inputValueState!);\n };\n\n // Keyboard handler shared by the user-supplied control element. When the user\n // composes this onto AutoComplete.Input (or any other control), AC's own onKeyDown\n // runs first and may call preventDefault for option-selection on Enter; this\n // handler then skips its own Enter branch.\n const onControlKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (props.disabled) return;\n\n switch (event.key) {\n case 'Enter':\n onEnterKey(event);\n break;\n\n case 'Tab':\n onTabKey();\n break;\n\n case 'ArrowLeft':\n onArrowLeftKey();\n break;\n\n case 'ArrowRight':\n onArrowRightKey();\n break;\n\n case 'Backspace':\n onBackspaceKey();\n break;\n\n case 'Delete':\n onDeleteKey();\n break;\n\n default:\n if (hasInputValue && props.delimiter && typeof props.delimiter === 'string' && event.key === props.delimiter) {\n addItem(inputValueState!);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onControlChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n if (focusedItemIndexState !== -1) setFocusedItemIndexState(-1);\n\n const newValue = event.target.value;\n\n if (props.delimiter) {\n const delimiterRegex = getDelimiterRegex(props.delimiter);\n\n delimiterRegex.lastIndex = 0;\n\n if (delimiterRegex.test(newValue)) {\n delimiterRegex.lastIndex = 0;\n\n const tags = newValue\n .split(delimiterRegex)\n .map((tag) => tag.trim())\n .filter((tag) => tag.length > 0);\n\n addItem(tags);\n\n return;\n }\n }\n\n setInputValueState([newValue, { originalEvent: event, query: newValue }]);\n };\n\n const onControlFocus = () => {\n if (props.disabled) return;\n\n setFocusedState(true);\n };\n\n const onControlBlur = () => {\n setFocusedState(false);\n\n if (props.addOnBlur && hasInputValue) addItem(inputValueState!);\n\n if (focusedItemIndexState !== -1) setFocusedItemIndexState(-1);\n };\n\n const onControlPaste = (event: React.ClipboardEvent<HTMLInputElement>) => {\n if (!props.addOnPaste) return;\n\n const pastedText = event.clipboardData.getData('text');\n\n event.preventDefault();\n\n if (props.delimiter) {\n const delimiterRegex = getDelimiterRegex(props.delimiter);\n\n delimiterRegex.lastIndex = 0;\n\n const tags = pastedText\n .split(delimiterRegex)\n .map((tag) => tag.trim())\n .filter((tag) => tag.length > 0);\n\n addItem(tags);\n } else {\n addItem(pastedText);\n }\n };\n\n const onClick = (event: React.MouseEvent) => {\n const target = event.target as HTMLElement;\n\n if (target.closest?.('[data-part=\"item\"]')) return;\n\n setFocusedItemIndexState(-1);\n\n if (inputRef.current && !props.disabled) focus(toElement(inputRef) as HTMLInputElement);\n };\n\n // prop getters\n const rootProps = {\n 'data-scope': 'inputtags' as const,\n 'data-part': 'root' as const,\n role: 'listbox' as const,\n 'aria-orientation': 'horizontal' as const,\n onClick\n };\n\n const controlProps = {\n 'data-scope': 'inputtags' as const,\n 'data-part': 'control' as const,\n ref: inputRef,\n value: state.inputValue,\n disabled: props.disabled,\n onChange: onControlChange,\n onKeyDown: onControlKeyDown,\n onPaste: onControlPaste,\n onFocus: onControlFocus,\n onBlur: onControlBlur\n };\n\n const hiddenInputProps = {\n 'data-scope': 'inputtags' as const,\n 'data-part': 'hidden-input' as const,\n value: state.value.join(', '),\n type: 'hidden' as const,\n name: props.name\n };\n\n const getItemProps = (index: number) => ({\n role: 'option' as const,\n 'aria-selected': index === state.focusedItemIndex,\n 'aria-setsize': state.value.length,\n 'aria-posinset': index + 1,\n 'data-index': index,\n 'data-selected': index === state.focusedItemIndex ? ('' as const) : undefined,\n onKeyDown: onControlKeyDown\n });\n\n return {\n state,\n inputRef,\n itemRefs,\n // mutations\n addItem,\n removeItem,\n removeLast,\n removeAll,\n // prop getters\n rootProps,\n controlProps,\n hiddenInputProps,\n getItemProps\n };\n }\n});\n","import type { UseInputTagsProps } from '@primereact/types/headless/inputtags';\n\nexport const defaultProps: UseInputTagsProps = {\n defaultValue: undefined,\n value: undefined,\n defaultInputValue: '',\n inputValue: undefined,\n name: undefined,\n disabled: undefined,\n max: undefined,\n delimiter: undefined,\n allowDuplicate: undefined,\n invalid: false,\n variant: undefined,\n fluid: undefined,\n addOnBlur: undefined,\n addOnPaste: undefined,\n addOnTab: undefined,\n onAdd: undefined,\n onRemove: undefined,\n onValueChange: undefined,\n onInputValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","focus","toElement","React","defaultProps","useInputTags","withHeadless","defaultProps","props","_a","_b","focusedItemIndexState","setFocusedItemIndexState","focusedState","setFocusedState","defaultValueRef","valueState","setValueState","useControlledState","inputValueState","setInputValueState","inputRef","itemRefs","state","getDelimiterRegex","delimiter","isInputEmpty","hasInputValue","addItem","tags","currentValue","nextTags","inputTags","tag","trimmedTag","newValue","value","removeItem","index","_","i","removeLast","removeAll","onArrowLeftKey","focusIndex","onArrowRightKey","focus","toElement","onBackspaceKey","onDeleteKey","onEnterKey","event","onTabKey","onControlKeyDown","onControlChange","delimiterRegex","onControlFocus","onControlBlur","onControlPaste","pastedText","rootProps","target","controlProps","hiddenInputProps"]}
|
|
File without changes
|
package/inputtext/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/inputtext/useInputText.ts","../../src/inputtext/useInputText.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useInputText.props';\n\nexport const useInputText = withHeadless({\n name: 'useInputText',\n defaultProps,\n setup({ props }) {\n // prop getters\n const rootProps = {\n type: 'text' as const,\n 'data-scope': 'inputtext' as const,\n 'data-part': 'root' as const,\n ...(props.invalid ? { 'data-invalid': '' } : {})\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseInputTextProps } from '@primereact/types/headless/inputtext';\n\nexport const defaultProps: UseInputTextProps = {\n invalid: undefined\n};\n"],"mappings":"yVAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAAkC,CAC3C,QAAS,MACb,EDDO,IAAMC,EAAeC,EAAa,CACrC,KAAM,eACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CASb,MAAO,CACH,UARcC,EAAA,CACd,KAAM,OACN,aAAc,YACd,YAAa,QACTD,EAAM,QAAU,CAAE,eAAgB,EAAG,EAAI,CAAC,EAKlD,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useInputText","withHeadless","defaultProps","props","__spreadValues"]}
|
|
File without changes
|
package/knob/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/knob/useKnob.ts","../../src/knob/useKnob.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState, useEventListener } from '@primereact/hooks';\nimport * as React from 'react';\nimport { defaultProps } from './useKnob.props';\n\nconst radius = 40;\nconst midX = 50;\nconst midY = 50;\nconst minRadians = (4 * Math.PI) / 3;\nconst maxRadians = -Math.PI / 3;\n\n// Round to fixed precision to prevent SSR hydration mismatches\n// caused by floating-point differences across JS engine versions.\nconst round = (n: number) => Math.round(n * 1000) / 1000;\n\nexport const useKnob = withHeadless({\n name: 'useKnob',\n defaultProps,\n setup({ props, elementRef }) {\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue ?? null,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState\n };\n\n const mapRange = (x: number, inMin: number, inMax: number, outMin: number, outMax: number) => ((x - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;\n\n const zeroRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n\n return mapRange(min > 0 && max > 0 ? min : 0, min, max, minRadians, maxRadians);\n };\n\n const valueRadians = () => {\n const min = props.min ?? 0;\n const max = props.max ?? 100;\n const value = valueState ?? min;\n\n return mapRange(value, min, max, minRadians, maxRadians);\n };\n\n const minX = () => round(midX + Math.cos(minRadians) * radius);\n\n const minY = () => round(midY - Math.sin(minRadians) * radius);\n\n const maxX = () => round(midX + Math.cos(maxRadians) * radius);\n\n const maxY = () => round(midY - Math.sin(maxRadians) * radius);\n\n const zeroX = () => round(midX + Math.cos(zeroRadians()) * radius);\n\n const zeroY = () => round(midY - Math.sin(zeroRadians()) * radius);\n\n const valueX = () => round(midX + Math.cos(valueRadians()) * radius);\n\n const valueY = () => round(midY - Math.sin(valueRadians()) * radius);\n\n const largeArc = () => (Math.abs(zeroRadians() - valueRadians()) < Math.PI ? 0 : 1);\n\n const sweep = () => (valueRadians() > zeroRadians() ? 0 : 1);\n\n const rangePath = `M ${minX()} ${minY()} A ${radius} ${radius} 0 1 1 ${maxX()} ${maxY()}`;\n\n const valuePath = `M ${zeroX()} ${zeroY()} A ${radius} ${radius} 0 ${largeArc()} ${sweep()} ${valueX()} ${valueY()}`;\n\n const [bindWindowMouseMoveListener, unbindWindowMouseMoveListener] = useEventListener({\n target: 'window',\n type: 'mousemove',\n listener: (event: Event) => onMouseMove(event as MouseEvent)\n });\n\n const [bindWindowMouseUpListener, unbindWindowMouseUpListener] = useEventListener({\n target: 'window',\n type: 'mouseup',\n listener: () => onMouseUp()\n });\n\n const [bindWindowTouchMoveListener, unbindWindowTouchMoveListener] = useEventListener({\n target: 'window',\n type: 'touchmove',\n listener: (event: Event) => onTouchMove(event as TouchEvent)\n });\n\n const [bindWindowTouchEndListener, unbindWindowTouchEndListener] = useEventListener({\n target: 'window',\n type: 'touchend',\n listener: () => onTouchEnd()\n });\n\n const updateValueByOffset = (offsetX: number, offsetY: number, originalEvent: React.SyntheticEvent | Event) => {\n const dx = offsetX - (props.size ?? 100) / 2;\n const dy = (props.size ?? 100) / 2 - offsetY;\n const angle = Math.atan2(dy, dx);\n const start = -Math.PI / 2 - Math.PI / 6;\n\n updateModel(angle, start, originalEvent);\n };\n\n const updateModel = (angle: number, start: number, originalEvent: React.SyntheticEvent | Event) => {\n let mappedValue;\n\n if (angle > maxRadians) mappedValue = mapRange(angle, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else if (angle < start) mappedValue = mapRange(angle + 2 * Math.PI, minRadians, maxRadians, props.min ?? 0, props.max ?? 100);\n else return;\n\n const newValue = Math.round((mappedValue - (props.min ?? 0)) / (props.step ?? 1)) * (props.step ?? 1) + (props.min ?? 0);\n\n setValueState([newValue, { originalEvent, value: newValue }]);\n };\n\n const updateModelValue = (newValue: number, originalEvent: React.SyntheticEvent | Event) => {\n let currentValue;\n\n if (newValue > (props.max ?? 100)) {\n currentValue = props.max ?? 100;\n } else if (newValue < (props.min ?? 0)) {\n currentValue = props.min ?? 0;\n } else {\n currentValue = newValue;\n }\n\n setValueState([currentValue, { originalEvent, value: currentValue }]);\n };\n\n const onClick = (event: React.MouseEvent) => {\n updateValueByOffset(event.nativeEvent.offsetX, event.nativeEvent.offsetY, event);\n };\n\n const onMouseDown = (event: React.MouseEvent) => {\n bindWindowMouseMoveListener();\n bindWindowMouseUpListener();\n event.preventDefault();\n };\n\n const onMouseUp = () => {\n unbindWindowMouseMoveListener();\n unbindWindowMouseUpListener();\n };\n\n const onTouchStart = () => {\n bindWindowTouchMoveListener();\n bindWindowTouchEndListener();\n };\n\n const onTouchEnd = () => {\n unbindWindowTouchMoveListener();\n unbindWindowTouchEndListener();\n };\n\n const onMouseMove = (event: MouseEvent) => {\n updateValueByOffset(event.offsetX, event.offsetY, event);\n event.preventDefault();\n };\n\n const onTouchMove = (event: TouchEvent) => {\n if (event.touches.length == 1) {\n const rect = elementRef.current?.getBoundingClientRect();\n const touch = event.targetTouches.item(0);\n\n if (rect && touch) {\n const offsetX = touch.clientX - rect.left;\n const offsetY = touch.clientY - rect.top;\n\n updateValueByOffset(offsetX, offsetY, event);\n }\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowRight':\n\n case 'ArrowUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + (props.step ?? 1), event);\n break;\n }\n\n case 'ArrowLeft':\n\n case 'ArrowDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - (props.step ?? 1), event);\n break;\n }\n\n case 'Home': {\n event.preventDefault();\n updateModelValue(props.min ?? 0, event);\n break;\n }\n\n case 'End': {\n event.preventDefault();\n updateModelValue(props.max ?? 100, event);\n break;\n }\n\n case 'PageUp': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) + 10, event);\n break;\n }\n\n case 'PageDown': {\n event.preventDefault();\n updateModelValue((state.value ?? props.min ?? 0) - 10, event);\n break;\n }\n }\n };\n\n // prop getters\n const isInteractive = !props.disabled && !props.readOnly;\n\n const svgProps = {\n 'data-scope': 'knob',\n 'data-part': 'svg',\n viewBox: '0 0 100 100' as const,\n role: 'slider' as const,\n width: props.size,\n height: props.size,\n tabIndex: isInteractive ? (props.tabIndex ?? 0) : -1,\n 'aria-valuemin': props.min,\n 'aria-valuemax': props.max,\n 'aria-valuenow': state.value,\n 'aria-labelledby': props.ariaLabelledby,\n 'aria-label': props.ariaLabel,\n 'aria-disabled': props.disabled || undefined,\n 'aria-readonly': props.readOnly || undefined,\n ...(isInteractive && {\n onClick,\n onKeyDown,\n onMouseDown,\n onMouseUp,\n onTouchStart,\n onTouchEnd\n })\n };\n\n const rootProps = {\n 'data-scope': 'knob',\n 'data-part': 'root',\n ...(props.disabled ? { 'data-disabled': '' } : {}),\n ...(props.readOnly ? { 'data-readonly': '' } : {})\n };\n\n const rangeProps = {\n 'data-scope': 'knob',\n 'data-part': 'range',\n d: rangePath,\n strokeWidth: props.strokeWidth,\n stroke: props.rangeColor\n };\n\n const valueProps = {\n 'data-scope': 'knob',\n 'data-part': 'value',\n d: valuePath,\n strokeWidth: props.strokeWidth,\n stroke: props.valueColor\n };\n\n const textProps = {\n 'data-scope': 'knob',\n 'data-part': 'text',\n x: 50,\n y: 57,\n textAnchor: 'middle' as const,\n fill: props.textColor\n };\n\n return {\n state,\n rangePath,\n valuePath,\n // prop getters\n rootProps,\n svgProps,\n rangeProps,\n valueProps,\n textProps\n };\n }\n});\n","import type { UseKnobProps } from '@primereact/types/headless/knob';\n\nexport const defaultProps: UseKnobProps = {\n defaultValue: undefined,\n value: undefined,\n size: 100,\n step: 1,\n min: 0,\n max: 100,\n strokeWidth: 14,\n rangeColor: undefined,\n valueColor: undefined,\n textColor: undefined,\n tabIndex: undefined,\n disabled: undefined,\n readOnly: undefined,\n invalid: undefined,\n ariaLabelledby: undefined,\n ariaLabel: undefined,\n onValueChange: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","useEventListener","defaultProps","radius","midX","midY","minRadians","maxRadians","round","n","useKnob","withHeadless","defaultProps","props","elementRef","_a","_b","valueState","setValueState","useControlledState","state","mapRange","x","inMin","inMax","outMin","outMax","zeroRadians","min","max","valueRadians","value","minX","minY","maxX","maxY","zeroX","zeroY","valueX","valueY","largeArc","sweep","rangePath","valuePath","bindWindowMouseMoveListener","unbindWindowMouseMoveListener","useEventListener","event","onMouseMove","bindWindowMouseUpListener","unbindWindowMouseUpListener","onMouseUp","bindWindowTouchMoveListener","unbindWindowTouchMoveListener","onTouchMove","bindWindowTouchEndListener","unbindWindowTouchEndListener","onTouchEnd","updateValueByOffset","offsetX","offsetY","originalEvent","dx","dy","angle","start","updateModel","_c","_d","_e","_f","_g","_h","mappedValue","newValue","updateModelValue","currentValue","onClick","onMouseDown","onTouchStart","rect","touch","onKeyDown","_i","_j","_k","_l","isInteractive","svgProps","__spreadValues","rootProps","rangeProps","valueProps","textProps"]}
|
package/knob/useKnob.test.d.ts
DELETED
|
File without changes
|
package/label/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/label/useLabel.ts","../../src/label/useLabel.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { defaultProps } from './useLabel.props';\n\nexport const useLabel = withHeadless({\n name: 'useLabel',\n defaultProps,\n setup() {\n // prop getters\n const rootProps = {\n 'data-scope': 'label',\n 'data-part': 'root'\n };\n\n return {\n rootProps\n };\n }\n});\n","import type { UseLabelProps } from '@primereact/types/headless/label';\n\nexport const defaultProps: UseLabelProps = {};\n"],"mappings":"AAAA,OAAS,gBAAAA,MAAoB,4BCEtB,IAAMC,EAA8B,CAAC,EDCrC,IAAMC,EAAWC,EAAa,CACjC,KAAM,WACN,aAAAC,EACA,OAAQ,CAOJ,MAAO,CACH,UANc,CACd,aAAc,QACd,YAAa,MACjB,CAIA,CACJ,CACJ,CAAC","names":["withHeadless","defaultProps","useLabel","withHeadless","defaultProps"]}
|
package/label/useLabel.test.d.ts
DELETED
|
File without changes
|
package/listbox/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/listbox/useListbox.ts","../../src/listbox/useListbox.props.ts","../../src/listbox/useListboxOption.ts","../../src/listbox/useListboxOption.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useControlledState } from '@primereact/hooks/use-controlled-state';\nimport { equals, findLastIndex, findSingle, focus, getFirstFocusableElement, isElement, isNotEmpty, isNumber, isPrintableCharacter, isString, nextFrame, resolveFieldData, toElement } from '@primeuix/utils';\nimport * as React from 'react';\nimport { defaultProps } from './useListbox.props';\n\nexport const useListbox = withHeadless({\n name: 'useListbox',\n defaultProps,\n setup({ id, props, elementRef }) {\n const [focusedState, setFocusedState] = React.useState<boolean>(false);\n const [focusedOptionIndexState, setFocusedOptionIndexState] = React.useState<number>(-1);\n const [valueState, setValueState] = useControlledState({\n value: props.value,\n defaultValue: props.defaultValue ?? null,\n onChange: props.onValueChange\n });\n\n const state = {\n value: valueState,\n focused: focusedState,\n focusedOptionIndex: focusedOptionIndexState\n };\n\n // element refs\n const listRef = React.useRef<HTMLUListElement>(null);\n const firstHiddenElementRef = React.useRef<HTMLElement>(null);\n const lastHiddenElementRef = React.useRef<HTMLElement>(null);\n\n // refs\n const optionTouched = React.useRef<boolean>(false);\n const startRangeIndex = React.useRef<number>(-1);\n const searchTimeout = React.useRef<NodeJS.Timeout | null>(null);\n const searchValue = React.useRef<string>('');\n\n const getOptions = () => {\n return visibleOptions || [];\n };\n\n const getOptionId = (index: number) => {\n return `${id}_${index}`;\n };\n\n const getOptionLabel = (option: unknown) => {\n return props.optionLabel ? resolveFieldData(option, props.optionLabel) : isString(option) || isNumber(option) ? option : null;\n };\n\n const getOptionValue = (option: unknown) => {\n return props.optionValue ? resolveFieldData(option, props.optionValue) : option;\n };\n\n const isOptionDisabled = (option: unknown) => {\n return props.optionDisabled ? resolveFieldData(option, props.optionDisabled) : false;\n };\n\n const isOptionGroup = (option: unknown) => {\n return !!(props.optionGroupLabel && (option as Record<string, unknown>)?.optionGroup && (option as Record<string, unknown>)?.group);\n };\n\n const getOptionGroupLabel = (optionGroup: unknown) => {\n return props.optionGroupLabel ? resolveFieldData(optionGroup, props.optionGroupLabel) : isString(optionGroup) ? optionGroup : null;\n };\n\n const getOptionGroupChildren = (optionGroup: unknown) => {\n return props.optionGroupChildren ? resolveFieldData(optionGroup, props.optionGroupChildren) : null;\n };\n\n const getFocusedOptionId = () => {\n return focusedOptionIndexState !== -1 ? getOptionId(focusedOptionIndexState!) : undefined;\n };\n\n const onFirstHiddenFocus = () => {\n focus(listRef.current!);\n\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-focus-guard])');\n\n const lastHiddenEl = toElement(lastHiddenElementRef);\n\n if (lastHiddenEl) {\n lastHiddenEl.tabIndex = isElement(firstFocusableEl) ? 0 : -1;\n }\n\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (firstHiddenEl) {\n firstHiddenEl.tabIndex = -1;\n }\n };\n\n const onLastHiddenFocus = (event: React.FocusEvent) => {\n const relatedTarget = event.relatedTarget;\n\n if (relatedTarget === listRef.current) {\n const firstFocusableEl = getFirstFocusableElement(elementRef.current!, ':not([data-focus-guard])');\n\n if (firstFocusableEl instanceof HTMLElement) {\n focus(firstFocusableEl);\n }\n\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (firstHiddenEl) {\n firstHiddenEl.tabIndex = 0;\n }\n } else {\n focus(toElement(firstHiddenElementRef)!);\n }\n\n const lastHiddenEl = toElement(lastHiddenElementRef);\n\n if (lastHiddenEl) {\n lastHiddenEl.tabIndex = -1;\n }\n };\n\n const onFocusOut = (event: React.FocusEvent) => {\n const elementContains = elementRef.current instanceof HTMLElement && elementRef.current.contains(event.relatedTarget as Node);\n const lastHiddenEl = toElement(lastHiddenElementRef);\n const firstHiddenEl = toElement(firstHiddenElementRef);\n\n if (!elementContains && lastHiddenEl && firstHiddenEl) {\n lastHiddenEl.tabIndex = 0;\n firstHiddenEl.tabIndex = 0;\n }\n };\n\n const onListFocus = (event?: React.FocusEvent) => {\n const dndIndex = (event?.currentTarget as HTMLElement | null)?.dataset?.dndFocusIndex;\n const focusedOptionIndex = dndIndex !== undefined ? parseInt(dndIndex, 10) : focusedOptionIndexState !== -1 ? focusedOptionIndexState : props.autoOptionFocus ? findFirstFocusedOptionIndex() : findSelectedOptionIndex();\n\n setFocusedState(true);\n setFocusedOptionIndexState(focusedOptionIndex);\n\n autoUpdateModel();\n scrollInView(focusedOptionIndex);\n };\n\n const onListBlur = () => {\n setFocusedState(false);\n setFocusedOptionIndexState(-1);\n\n startRangeIndex.current = -1;\n searchValue.current = '';\n };\n\n const onListKeyDown = (event: React.KeyboardEvent) => {\n const metaKey = event.metaKey || event.ctrlKey;\n\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'Home':\n onHomeKey(event);\n break;\n\n case 'End':\n onEndKey(event);\n break;\n\n case 'PageDown':\n onPageDownKey(event);\n break;\n\n case 'PageUp':\n onPageUpKey(event);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n case 'Space':\n onSpaceKey(event);\n break;\n\n case 'Tab':\n //NOOP\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n if (props.multiple && event.code === 'KeyA' && metaKey) {\n const value = getOptions()\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n\n event.preventDefault();\n break;\n }\n\n if (!metaKey && isPrintableCharacter(event.key)) {\n searchOptions(event, event.key);\n event.preventDefault();\n }\n\n break;\n }\n };\n\n const onOptionSelect = (event: React.MouseEvent | React.KeyboardEvent, option: unknown, index = -1) => {\n if (props.disabled || isOptionDisabled(option)) {\n return;\n }\n\n if (props.multiple) {\n onOptionSelectMultiple(event, option);\n } else {\n onOptionSelectSingle(event, option);\n }\n\n optionTouched.current = false;\n\n if (index !== -1) {\n setFocusedOptionIndexState(index);\n }\n };\n\n const onOptionTouchEnd = () => {\n if (props.disabled) {\n return;\n }\n\n optionTouched.current = true;\n };\n\n const onOptionSelectSingle = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let valueChanged = false;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event && (event.metaKey || event.ctrlKey);\n\n if (selected) {\n if (metaKey) {\n value = null;\n valueChanged = true;\n }\n } else {\n value = getOptionValue(option);\n valueChanged = true;\n }\n } else {\n value = selected ? null : getOptionValue(option);\n valueChanged = true;\n }\n\n if (valueChanged) {\n updateModel(event, value);\n }\n };\n\n const onOptionSelectMultiple = (event: React.MouseEvent | React.KeyboardEvent, option: unknown) => {\n const selected = isSelected(option);\n const metaSelection = optionTouched.current ? false : props.metaKeySelection;\n let value = null;\n\n if (metaSelection) {\n const metaKey = event.metaKey || event.ctrlKey;\n\n if (selected) {\n value = metaKey ? removeOption(option) : [getOptionValue(option)];\n } else {\n value = metaKey ? (Array.isArray(valueState) ? valueState : []) : [];\n value = [...value, getOptionValue(option)];\n }\n } else {\n value = selected ? removeOption(option) : [...(Array.isArray(valueState) ? valueState : []), getOptionValue(option)];\n }\n\n updateModel(event, value);\n };\n\n const onOptionSelectRange = (event: React.MouseEvent | React.KeyboardEvent, start = -1, end = -1) => {\n start = start === -1 ? findNearestSelectedOptionIndex(end, true) : start;\n end = end === -1 ? findNearestSelectedOptionIndex(start) : end;\n\n if (start !== -1 && end !== -1) {\n const rangeStart = Math.min(start, end);\n const rangeEnd = Math.max(start, end);\n const value = getOptions()\n .slice(rangeStart, rangeEnd + 1)\n .filter((option: unknown) => isValidOption(option))\n .map((option: unknown) => getOptionValue(option));\n\n updateModel(event, value);\n }\n };\n\n const onFilterChange = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterBlur = () => {\n setFocusedOptionIndexState(-1);\n startRangeIndex.current = -1;\n };\n\n const onFilterKeyDown = (event: React.KeyboardEvent) => {\n switch (event.code) {\n case 'ArrowDown':\n onArrowDownKey(event);\n break;\n\n case 'ArrowUp':\n onArrowUpKey(event);\n break;\n\n case 'ArrowLeft':\n case 'ArrowRight':\n onArrowLeftKey(event, true);\n break;\n\n case 'Home':\n onHomeKey(event, true);\n break;\n\n case 'End':\n onEndKey(event, true);\n break;\n\n case 'Enter':\n case 'NumpadEnter':\n onEnterKey(event);\n break;\n\n case 'ShiftLeft':\n case 'ShiftRight':\n onShiftKey();\n break;\n\n default:\n break;\n }\n };\n\n const onClearClick = (event: React.MouseEvent) => {\n if (props.disabled) {\n return;\n }\n\n updateModel(event, props.multiple ? [] : null);\n };\n\n const onArrowDownKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findNextOptionIndex(focusedOptionIndexState) : findFirstFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowUpKey = (event: React.KeyboardEvent) => {\n const optionIndex = focusedOptionIndexState !== -1 ? findPrevOptionIndex(focusedOptionIndexState) : findLastFocusedOptionIndex();\n\n if (props.multiple && event.shiftKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n event.preventDefault();\n };\n\n const onArrowLeftKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n setFocusedOptionIndexState(-1);\n }\n };\n\n const onHomeKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n\n if (event.shiftKey) {\n target?.setSelectionRange(0, target.selectionStart);\n } else {\n target?.setSelectionRange(0, 0);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findFirstOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, optionIndex, startRangeIndex.current);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onEndKey = (event: React.KeyboardEvent, pressedInInputText = false) => {\n if (pressedInInputText) {\n const target = event.currentTarget as HTMLInputElement;\n const length = target.value.length;\n\n if (event.shiftKey) {\n target.setSelectionRange(target.selectionStart, length);\n } else {\n target.setSelectionRange(length, length);\n setFocusedOptionIndexState(-1);\n }\n } else {\n const metaKey = event.metaKey || event.ctrlKey;\n const optionIndex = findLastOptionIndex();\n\n if (props.multiple && event.shiftKey && metaKey) {\n onOptionSelectRange(event, startRangeIndex.current, optionIndex);\n }\n\n changeFocusedOptionIndex(event, optionIndex);\n }\n\n event.preventDefault();\n };\n\n const onPageUpKey = (event: React.KeyboardEvent) => {\n scrollInView(0);\n event.preventDefault();\n };\n\n const onPageDownKey = (event: React.KeyboardEvent) => {\n scrollInView(getOptions().length - 1);\n event.preventDefault();\n };\n\n const onEnterKey = (event: React.KeyboardEvent) => {\n if (focusedOptionIndexState !== -1) {\n if (props.multiple && event.shiftKey) onOptionSelectRange(event, focusedOptionIndexState);\n else onOptionSelect(event, getOptions()[focusedOptionIndexState!]);\n }\n };\n\n const onSpaceKey = (event: React.KeyboardEvent) => {\n event.preventDefault();\n onEnterKey(event);\n };\n\n const onShiftKey = () => {\n startRangeIndex.current = focusedOptionIndexState!;\n };\n\n const isOptionMatched = (option: unknown) => {\n return isValidOption(option) && getOptionLabel(option)?.toLocaleLowerCase(props.locale).startsWith(searchValue.current?.toLocaleLowerCase(props.locale));\n };\n\n const isValidOption = (option: unknown) => {\n return isNotEmpty(option) && !isOptionDisabled(option) && !isOptionGroup(option);\n };\n\n const isValidSelectedOption = (option: unknown) => {\n return isValidOption(option) && isSelected(option);\n };\n\n const isEquals = (value1: unknown, value2: unknown) => {\n return equals(value1, value2, equalityKey);\n };\n\n const isSelected = (option: unknown) => {\n const optionValue = getOptionValue(option);\n\n if (props.multiple) {\n return Array.isArray(valueState) && valueState.some((value: unknown) => isEquals(value, optionValue));\n } else {\n return isEquals(valueState, optionValue);\n }\n };\n\n const findFirstOptionIndex = () => {\n return getOptions().findIndex((option: unknown) => isValidOption(option));\n };\n\n const findLastOptionIndex = () => {\n return findLastIndex(getOptions(), (option: unknown) => isValidOption(option));\n };\n\n const findNextOptionIndex = (index: number) => {\n const matchedOptionIndex =\n index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option: unknown) => isValidOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : index;\n };\n\n const findPrevOptionIndex = (index: number) => {\n const matchedOptionIndex = index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findSelectedOptionIndex = () => {\n if (hasValue()) {\n if (props.multiple && Array.isArray(valueState)) {\n for (let index = valueState.length - 1; index >= 0; index--) {\n const value = valueState[index];\n const matchedOptionIndex = getOptions().findIndex((option: unknown) => isValidSelectedOption(option) && isEquals(value, getOptionValue(option)));\n\n if (matchedOptionIndex > -1) return matchedOptionIndex;\n }\n } else {\n return getOptions().findIndex((option: unknown) => isValidSelectedOption(option));\n }\n }\n\n return -1;\n };\n\n const findFirstSelectedOptionIndex = () => {\n return hasValue() ? getOptions().findIndex((option) => isValidSelectedOption(option)) : -1;\n };\n\n const findLastSelectedOptionIndex = () => {\n return hasValue() ? findLastIndex(getOptions(), (option) => isValidSelectedOption(option)) : -1;\n };\n\n const findNextSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex =\n hasValue() && index < getOptions().length - 1\n ? getOptions()\n .slice(index + 1)\n .findIndex((option) => isValidSelectedOption(option))\n : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex + index + 1 : -1;\n };\n\n const findPrevSelectedOptionIndex = (index: number) => {\n const matchedOptionIndex = hasValue() && index > 0 ? findLastIndex(getOptions().slice(0, index), (option) => isValidSelectedOption(option)) : -1;\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : -1;\n };\n\n const findNearestSelectedOptionIndex = (index: number, firstCheckUp = false) => {\n let matchedOptionIndex = -1;\n\n if (hasValue()) {\n if (firstCheckUp) {\n matchedOptionIndex = findPrevSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findNextSelectedOptionIndex(index) : matchedOptionIndex;\n } else {\n matchedOptionIndex = findNextSelectedOptionIndex(index);\n matchedOptionIndex = matchedOptionIndex === -1 ? findPrevSelectedOptionIndex(index) : matchedOptionIndex;\n }\n }\n\n return matchedOptionIndex > -1 ? matchedOptionIndex : index;\n };\n\n const findFirstFocusedOptionIndex = () => {\n const selectedIndex = findFirstSelectedOptionIndex();\n\n return selectedIndex < 0 ? findFirstOptionIndex() : selectedIndex;\n };\n\n const findLastFocusedOptionIndex = () => {\n const selectedIndex = findLastSelectedOptionIndex();\n\n return selectedIndex < 0 ? findLastOptionIndex() : selectedIndex;\n };\n\n const searchOptions = (event: React.KeyboardEvent, char: string) => {\n searchValue.current = (searchValue.current || '') + char;\n\n let optionIndex = -1;\n\n if (isNotEmpty(searchValue.current)) {\n if (focusedOptionIndexState !== -1) {\n optionIndex = getOptions()\n .slice(focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option));\n optionIndex =\n optionIndex === -1\n ? getOptions()\n .slice(0, focusedOptionIndexState)\n .findIndex((option: unknown) => isOptionMatched(option))\n : optionIndex + focusedOptionIndexState;\n } else {\n optionIndex = getOptions().findIndex((option: unknown) => isOptionMatched(option));\n }\n\n if (optionIndex === -1 && focusedOptionIndexState === -1) {\n optionIndex = findFirstFocusedOptionIndex() ?? -1;\n }\n\n if (optionIndex !== -1) {\n changeFocusedOptionIndex(event, optionIndex);\n }\n }\n\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n }\n\n searchTimeout.current = setTimeout(() => {\n searchValue.current = '';\n searchTimeout.current = null;\n }, 500);\n };\n\n const removeOption = (option: unknown) => {\n return Array.isArray(valueState) ? valueState.filter((val: unknown) => !isEquals(val, getOptionValue(option))) : [];\n };\n\n const changeFocusedOptionIndex = (event: React.MouseEvent | React.KeyboardEvent, index: number = -1) => {\n if (focusedOptionIndexState !== index) {\n setFocusedOptionIndexState(index);\n\n scrollInView(index);\n\n if (props.selectOnFocus && !props.multiple && index !== -1) {\n onOptionSelect(event, getOptions()[index]);\n }\n }\n };\n\n const scrollInView = (index = -1) => {\n nextFrame().then(() => {\n const id = index !== -1 ? getOptionId(index) : getFocusedOptionId();\n const element = findSingle(listRef.current!, `[id=\"${id}\"]`);\n\n element?.scrollIntoView?.({ block: 'nearest', inline: 'nearest', behavior: 'smooth' });\n });\n };\n\n const autoUpdateModel = () => {\n if (props.selectOnFocus && props.autoOptionFocus && !hasValue() && !props.multiple && focusedState) {\n const focusedOptionIndex = findFirstFocusedOptionIndex();\n\n setFocusedOptionIndexState(focusedOptionIndex);\n onOptionSelect(null as unknown as React.MouseEvent, getOptions()[focusedOptionIndex!]);\n }\n };\n\n const updateModel = (event: React.SyntheticEvent, value: unknown) => {\n setValueState([\n value,\n {\n originalEvent: event,\n value: value\n }\n ]);\n };\n\n const hasValue = () => {\n return isNotEmpty(valueState);\n };\n\n // effects\n React.useEffect(() => {\n autoUpdateModel();\n\n return () => {\n if (searchTimeout.current) {\n clearTimeout(searchTimeout.current);\n searchTimeout.current = null;\n }\n };\n }, []);\n\n // computed\n const optionsListGroup = React.useMemo(() => {\n const flattenOptions: unknown[] = [];\n\n (props.options || []).forEach((optionGroup) => {\n const optionGroupChildren = getOptionGroupChildren(optionGroup) || [];\n\n if (optionGroupChildren?.length) {\n flattenOptions.push({ optionGroup, group: true }, ...optionGroupChildren);\n }\n });\n\n return flattenOptions;\n }, [props.options]);\n\n const visibleOptions = props.optionGroupLabel ? optionsListGroup : props.options;\n const equalityKey = props.optionValue ? undefined : props.optionKey;\n\n const lastHiddenProps = {\n role: 'presentation' as const,\n ref: lastHiddenElementRef,\n 'aria-hidden': true as const,\n 'data-focus-guard': '' as const,\n onFocus: onLastHiddenFocus\n };\n\n const firstHiddenProps = {\n role: 'presentation' as const,\n ref: firstHiddenElementRef,\n 'aria-hidden': true as const,\n 'data-focus-guard': '' as const,\n onFocus: onFirstHiddenFocus\n };\n\n const filterProps = {\n role: 'searchbox' as const,\n autoComplete: 'off' as const,\n disabled: props.disabled,\n tabIndex: undefined as number | undefined,\n 'aria-owns': id ? `${id}_list` : undefined,\n 'aria-activedescendant': getFocusedOptionId(),\n 'data-scope': 'listbox',\n 'data-part': 'filter',\n onBlur: onFilterBlur,\n onChange: onFilterChange,\n onKeyDown: onFilterKeyDown\n };\n\n const listProps = {\n id: `${id}_list`,\n role: 'listbox' as const,\n ref: listRef,\n tabIndex: -1,\n 'aria-activedescendant': focusedState ? getFocusedOptionId() : undefined,\n 'data-scope': 'listbox',\n 'data-part': 'list',\n onFocus: onListFocus,\n onBlur: onListBlur,\n onKeyDown: onListKeyDown\n };\n\n const rootProps = {\n id,\n 'data-scope': 'listbox',\n 'data-part': 'root',\n 'data-disabled': props.disabled || undefined,\n 'data-invalid': props.invalid || undefined,\n onBlur: onFocusOut\n };\n\n return {\n state,\n // element refs\n listRef,\n firstHiddenElementRef,\n lastHiddenElementRef,\n // prop getters\n rootProps,\n listProps,\n filterProps,\n firstHiddenProps,\n lastHiddenProps,\n // methods\n getOptions,\n getOptionId,\n getOptionLabel,\n getOptionValue,\n isOptionDisabled,\n isOptionGroup,\n getOptionGroupLabel,\n getOptionGroupChildren,\n getFocusedOptionId,\n onOptionSelect,\n onOptionTouchEnd,\n onClearClick,\n isOptionMatched,\n isValidOption,\n isValidSelectedOption,\n isSelected,\n changeFocusedOptionIndex,\n findSelectedOptionIndex,\n findFirstFocusedOptionIndex,\n scrollInView,\n updateModel,\n autoUpdateModel,\n equalityKey,\n hasValue,\n isEquals\n };\n }\n});\n","import type { UseListboxProps } from '@primereact/types/headless/listbox';\n\nexport const defaultProps: UseListboxProps = {\n value: undefined,\n defaultValue: undefined,\n options: [],\n optionKey: undefined,\n optionLabel: undefined,\n optionValue: undefined,\n optionDisabled: undefined,\n optionGroupLabel: undefined,\n optionGroupChildren: undefined,\n disabled: false,\n invalid: false,\n locale: undefined,\n multiple: false,\n metaKeySelection: false,\n autoOptionFocus: true,\n selectOnFocus: false,\n focusOnHover: true,\n tabIndex: undefined,\n onValueChange: undefined\n};\n","import { withHeadless } from '@primereact/core/headless';\nimport type { UseListboxOptionElementProps } from '@primereact/types/headless/listbox';\nimport * as React from 'react';\nimport { defaultOptionProps } from './useListboxOption.props';\n\nexport const useListboxOption = withHeadless({\n name: 'useListboxOption',\n defaultProps: defaultOptionProps,\n setup({ props }) {\n const context = props.context;\n const option = props.option;\n const index = props.index ?? -1;\n const group = props.group ?? false;\n\n const selected = context?.isSelected(option) ?? false;\n const focused = context?.state?.focusedOptionIndex === index;\n const disabled = props.disabled ?? context?.isOptionDisabled(option) ?? false;\n\n const state = {\n selected,\n focused,\n disabled,\n group\n };\n\n const optionProps = React.useMemo(() => {\n if (group) {\n return {} as UseListboxOptionElementProps;\n }\n\n const options = context?.getOptions() ?? [];\n const ariaSetSize = options.filter((opt: unknown) => !context?.isOptionGroup(opt)).length;\n const ariaPosInset = (context?.props?.optionGroupLabel ? index - (options.slice(0, index).filter((opt: unknown) => context?.isOptionGroup(opt)).length || 0) : index) + 1;\n\n const handleClick = (event: React.MouseEvent) => context?.onOptionSelect(event, option, index);\n\n const handleMouseDown = (event: React.MouseEvent) => {\n context?.changeFocusedOptionIndex(event, index);\n };\n\n const handleMouseMove = (event: React.MouseEvent) => {\n if (context?.props?.focusOnHover && context?.state?.focused) {\n context?.changeFocusedOptionIndex(event, index);\n }\n };\n\n const handleTouchEnd = () => context?.onOptionTouchEnd();\n\n return {\n id: context?.getOptionId(index) ?? '',\n role: 'option' as const,\n 'aria-selected': selected,\n 'aria-disabled': disabled,\n 'aria-setsize': ariaSetSize,\n 'aria-posinset': ariaPosInset,\n [selected ? 'data-selected' : 'data-unselected']: '',\n ...(disabled && { 'data-disabled': '' }),\n ...(focused && { 'data-focused': '' }),\n 'data-scope': 'listbox',\n 'data-part': 'option',\n onClick: handleClick,\n onMouseDown: handleMouseDown,\n onMouseMove: handleMouseMove,\n onTouchEnd: handleTouchEnd\n };\n }, [context, option, index, selected, disabled, focused, group]);\n\n const groupProps = {\n role: 'presentation' as const,\n 'data-scope': 'listbox',\n 'data-part': 'optionGroup'\n };\n\n const optionIndicatorProps = {\n 'aria-hidden': true as const,\n 'data-scope': 'listbox',\n 'data-part': 'optionindicator',\n [selected ? 'data-selected' : 'data-unselected']: ''\n };\n\n return {\n state,\n // prop getters\n optionProps,\n groupProps,\n optionIndicatorProps\n };\n }\n});\n","import type { UseListboxOptionProps } from '@primereact/types/headless/listbox';\n\nexport const defaultOptionProps: UseListboxOptionProps = {\n option: undefined,\n index: undefined,\n group: false,\n disabled: undefined,\n context: undefined\n};\n"],"mappings":"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","names":["withHeadless","useControlledState","equals","findLastIndex","findSingle","focus","getFirstFocusableElement","isElement","isNotEmpty","isNumber","isPrintableCharacter","isString","nextFrame","resolveFieldData","toElement","React","defaultProps","useListbox","withHeadless","defaultProps","id","props","elementRef","_a","focusedState","setFocusedState","focusedOptionIndexState","setFocusedOptionIndexState","valueState","setValueState","useControlledState","state","listRef","firstHiddenElementRef","lastHiddenElementRef","optionTouched","startRangeIndex","searchTimeout","searchValue","getOptions","visibleOptions","getOptionId","index","getOptionLabel","option","resolveFieldData","isString","isNumber","getOptionValue","isOptionDisabled","isOptionGroup","getOptionGroupLabel","optionGroup","getOptionGroupChildren","getFocusedOptionId","onFirstHiddenFocus","focus","firstFocusableEl","getFirstFocusableElement","lastHiddenEl","toElement","isElement","firstHiddenEl","onLastHiddenFocus","event","onFocusOut","elementContains","onListFocus","_b","dndIndex","focusedOptionIndex","findFirstFocusedOptionIndex","findSelectedOptionIndex","autoUpdateModel","scrollInView","onListBlur","onListKeyDown","metaKey","onArrowDownKey","onArrowUpKey","onHomeKey","onEndKey","onPageDownKey","onPageUpKey","onSpaceKey","onShiftKey","value","isValidOption","updateModel","isPrintableCharacter","searchOptions","onOptionSelect","onOptionSelectMultiple","onOptionSelectSingle","onOptionTouchEnd","selected","isSelected","metaSelection","valueChanged","removeOption","onOptionSelectRange","start","end","findNearestSelectedOptionIndex","rangeStart","rangeEnd","onFilterChange","onFilterBlur","onFilterKeyDown","onArrowLeftKey","onEnterKey","onClearClick","optionIndex","findNextOptionIndex","changeFocusedOptionIndex","findPrevOptionIndex","findLastFocusedOptionIndex","pressedInInputText","target","findFirstOptionIndex","length","findLastOptionIndex","isOptionMatched","isNotEmpty","isValidSelectedOption","isEquals","value1","value2","equals","equalityKey","optionValue","findLastIndex","matchedOptionIndex","hasValue","findFirstSelectedOptionIndex","findLastSelectedOptionIndex","findNextSelectedOptionIndex","findPrevSelectedOptionIndex","firstCheckUp","selectedIndex","char","val","nextFrame","element","findSingle","optionsListGroup","flattenOptions","optionGroupChildren","lastHiddenProps","firstHiddenProps","filterProps","listProps","rootProps","withHeadless","React","defaultOptionProps","useListboxOption","withHeadless","defaultOptionProps","props","_a","_b","_c","_d","_e","_f","context","option","index","group","selected","focused","disabled","state","optionProps","options","ariaSetSize","opt","ariaPosInset","handleClick","event","handleMouseDown","handleMouseMove","handleTouchEnd","__spreadProps","__spreadValues","groupProps","optionIndicatorProps"]}
|
|
File without changes
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/checkboxitem/useMenuCheckboxItem.ts","../../../src/menu/checkboxitem/useMenuCheckboxItem.props.ts"],"sourcesContent":["import { withHeadless } from '@primereact/core/headless';\nimport { useCheckbox } from '@primereact/headless/checkbox';\nimport type { UseMenuCheckboxItemCheckedChangeEvent, UseMenuItemSelectEvent } from '@primereact/types/headless/menu';\nimport * as React from 'react';\nimport { defaultProps } from './useMenuCheckboxItem.props';\n\nexport const useMenuCheckboxItem = withHeadless({\n name: 'useMenuCheckboxItem',\n defaultProps,\n setup({ props }) {\n // Delegate native checkbox behavior to useCheckbox; the menu adapter\n // only adds the `closeOnSelect` resolution and the composite onSelect\n // that toggles the value when the parent menu activates the item.\n const checkbox = useCheckbox({\n ...props,\n onCheckedChange: props.onCheckedChange ? (event: UseMenuCheckboxItemCheckedChangeEvent) => props.onCheckedChange!(event) : undefined\n });\n\n const checked = !!checkbox.state.checked;\n const isDisabled = !!props.disabled;\n // Default closeOnSelect to false — toggling a checkbox should keep the\n // menu open. Consumers opt back in by passing `closeOnSelect={true}`.\n const closeOnSelect = props.closeOnSelect ?? false;\n\n const onSelect = React.useCallback(\n (event: UseMenuItemSelectEvent) => {\n if (isDisabled) return;\n\n checkbox.onChange({ target: { checked: !checked } } as unknown as React.ChangeEvent<HTMLInputElement>);\n props.onSelect?.(event);\n },\n [checkbox, checked, isDisabled, props.onSelect]\n );\n\n return {\n ...checkbox,\n state: {\n ...checkbox.state,\n checked\n },\n closeOnSelect,\n onSelect\n };\n }\n});\n","import type { UseMenuCheckboxItemProps } from '@primereact/types/headless/menu';\n\nexport const defaultProps: UseMenuCheckboxItemProps = {\n checked: undefined,\n defaultChecked: undefined,\n // Match useCheckbox's own defaults — passing `undefined` here would\n // override its `trueValue: true / falseValue: false / indeterminate:\n // false` and break the `checkedState === trueValue` comparison so\n // `state.checked` would always resolve to false.\n indeterminate: false,\n trueValue: true,\n falseValue: false,\n inputId: undefined,\n name: undefined,\n value: undefined,\n disabled: undefined,\n closeOnSelect: false,\n onSelect: undefined,\n onCheckedChange: undefined\n};\n"],"mappings":"6aAAA,OAAS,gBAAAA,MAAoB,4BAC7B,OAAS,eAAAC,MAAmB,gCAE5B,UAAYC,MAAW,QCDhB,IAAMC,EAAyC,CAClD,QAAS,OACT,eAAgB,OAKhB,cAAe,GACf,UAAW,GACX,WAAY,GACZ,QAAS,OACT,KAAM,OACN,MAAO,OACP,SAAU,OACV,cAAe,GACf,SAAU,OACV,gBAAiB,MACrB,EDbO,IAAMC,EAAsBC,EAAa,CAC5C,KAAM,sBACN,aAAAC,EACA,MAAM,CAAE,MAAAC,CAAM,EAAG,CATrB,IAAAC,EAaQ,IAAMC,EAAWC,EAAYC,EAAAC,EAAA,GACtBL,GADsB,CAEzB,gBAAiBA,EAAM,gBAAmBM,GAAiDN,EAAM,gBAAiBM,CAAK,EAAI,MAC/H,EAAC,EAEKC,EAAU,CAAC,CAACL,EAAS,MAAM,QAC3BM,EAAa,CAAC,CAACR,EAAM,SAGrBS,GAAgBR,EAAAD,EAAM,gBAAN,KAAAC,EAAuB,GAEvCS,EAAiB,cAClBJ,GAAkC,CAzB/C,IAAAL,EA0BoBO,IAEJN,EAAS,SAAS,CAAE,OAAQ,CAAE,QAAS,CAACK,CAAQ,CAAE,CAAmD,GACrGN,EAAAD,EAAM,WAAN,MAAAC,EAAA,KAAAD,EAAiBM,GACrB,EACA,CAACJ,EAAUK,EAASC,EAAYR,EAAM,QAAQ,CAClD,EAEA,OAAOI,EAAAC,EAAA,GACAH,GADA,CAEH,MAAOE,EAAAC,EAAA,GACAH,EAAS,OADT,CAEH,QAAAK,CACJ,GACA,cAAAE,EACA,SAAAC,CACJ,EACJ,CACJ,CAAC","names":["withHeadless","useCheckbox","React","defaultProps","useMenuCheckboxItem","withHeadless","defaultProps","props","_a","checkbox","useCheckbox","__spreadProps","__spreadValues","event","checked","isDisabled","closeOnSelect","onSelect"]}
|