@react-md/core 1.0.0-next.13 → 1.0.0-next.15
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/.eslintrc.cjs +8 -0
- package/.turbo/turbo-build.log +22 -22
- package/.turbo/turbo-lint.log +12 -0
- package/.turbo/turbo-test.log +5516 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/CHANGELOG.md +40 -0
- package/coverage/clover.xml +725 -141
- package/coverage/coverage-final.json +5 -4
- package/coverage/lcov-report/autocomplete/Autocomplete.tsx.html +876 -171
- package/coverage/lcov-report/{src/layout/LayoutCloseNavigationButton.tsx.html → autocomplete/AutocompleteClearButton.tsx.html} +54 -57
- package/coverage/lcov-report/{menu/MenuVisibilityProvider.tsx.html → autocomplete/FilterAutocompleteOptions.tsx.html} +147 -153
- package/coverage/lcov-report/autocomplete/index.html +35 -110
- package/coverage/lcov-report/button/Button.tsx.html +84 -84
- package/coverage/lcov-report/button/index.html +10 -10
- package/coverage/lcov-report/card/Card.tsx.html +5 -5
- package/coverage/lcov-report/{dialog/DialogTitle.tsx.html → card/CardSubtitle.tsx.html} +57 -48
- package/coverage/lcov-report/card/index.html +39 -9
- package/coverage/lcov-report/card/styles.ts.html +21 -33
- package/coverage/lcov-report/{src/positioning/createHorizontalPosition.ts.html → createHorizontalPosition.ts.html} +137 -137
- package/coverage/lcov-report/{src/positioning/createVerticalPosition.ts.html → createVerticalPosition.ts.html} +77 -77
- package/coverage/lcov-report/form/Option.tsx.html +141 -141
- package/coverage/lcov-report/form/index.html +28 -43
- package/coverage/lcov-report/form/useListboxProvider.ts.html +135 -96
- package/coverage/lcov-report/index.html +37 -22
- package/coverage/lcov-report/searching/fuzzy.ts.html +80 -83
- package/coverage/lcov-report/searching/index.html +13 -43
- package/coverage/lcov-report/src/card/Card.tsx.html +5 -5
- package/coverage/lcov-report/src/card/CardSubtitle.tsx.html +33 -6
- package/coverage/lcov-report/src/card/index.html +9 -84
- package/coverage/lcov-report/src/card/styles.ts.html +21 -33
- package/coverage/lcov-report/src/cssUtils.ts.html +65 -65
- package/coverage/lcov-report/src/index.html +21 -21
- package/coverage/lcov-report/src/transition/index.html +11 -311
- package/coverage/lcov-report/src/transition/useCSSTransition.ts.html +81 -81
- package/coverage/lcov-report/transition/index.html +12 -12
- package/coverage/lcov-report/{useCSSTransition.ts.html → transition/useCSSTransition.ts.html} +169 -166
- package/coverage/lcov-report/typography/SrOnly.tsx.html +52 -79
- package/coverage/lcov-report/typography/index.html +18 -18
- package/coverage/lcov-report/utils.ts.html +940 -97
- package/coverage/lcov.info +831 -181
- package/dist/CoreProviders.js.map +1 -1
- package/dist/NoSsr.js.map +1 -1
- package/dist/RootHtml.js.map +1 -1
- package/dist/SsrProvider.js.map +1 -1
- package/dist/_box-shadows.scss +7 -4
- package/dist/_core.scss +5 -1
- package/dist/_utils.scss +3 -3
- package/dist/app-bar/AppBar.js.map +1 -1
- package/dist/app-bar/AppBarTitle.d.ts +8 -4
- package/dist/app-bar/AppBarTitle.js +3 -2
- package/dist/app-bar/AppBarTitle.js.map +1 -1
- package/dist/autocomplete/Autocomplete.d.ts +85 -0
- package/dist/autocomplete/Autocomplete.js +138 -0
- package/dist/autocomplete/Autocomplete.js.map +1 -0
- package/dist/autocomplete/AutocompleteCircularProgress.d.ts +16 -0
- package/dist/autocomplete/AutocompleteCircularProgress.js +15 -0
- package/dist/autocomplete/AutocompleteCircularProgress.js.map +1 -0
- package/dist/autocomplete/AutocompleteDropdownButton.d.ts +32 -0
- package/dist/autocomplete/AutocompleteDropdownButton.js +29 -0
- package/dist/autocomplete/AutocompleteDropdownButton.js.map +1 -0
- package/dist/autocomplete/FilterAutocompleteOptions.d.ts +8 -0
- package/dist/autocomplete/FilterAutocompleteOptions.js +57 -0
- package/dist/autocomplete/FilterAutocompleteOptions.js.map +1 -0
- package/dist/autocomplete/_autocomplete.scss +75 -0
- package/dist/autocomplete/autocompleteStyles.d.ts +32 -0
- package/dist/autocomplete/autocompleteStyles.js +34 -0
- package/dist/autocomplete/autocompleteStyles.js.map +1 -0
- package/dist/autocomplete/defaults.d.ts +21 -0
- package/dist/autocomplete/defaults.js +52 -0
- package/dist/autocomplete/defaults.js.map +1 -0
- package/dist/autocomplete/types.d.ts +103 -0
- package/dist/autocomplete/types.js +5 -0
- package/dist/autocomplete/types.js.map +1 -0
- package/dist/avatar/Avatar.d.ts +1 -2
- package/dist/avatar/Avatar.js +1 -2
- package/dist/avatar/Avatar.js.map +1 -1
- package/dist/avatar/_avatar.scss +4 -3
- package/dist/avatar/styles.js.map +1 -1
- package/dist/badge/Badge.js.map +1 -1
- package/dist/box/Box.js.map +1 -1
- package/dist/box/styles.js.map +1 -1
- package/dist/button/AsyncButton.js +2 -2
- package/dist/button/AsyncButton.js.map +1 -1
- package/dist/button/Button.js.map +1 -1
- package/dist/button/ButtonUnstyled.js.map +1 -1
- package/dist/button/FloatingActionButton.js.map +1 -1
- package/dist/button/TooltippedButton.js.map +1 -1
- package/dist/button/buttonStyles.js.map +1 -1
- package/dist/button/buttonUnstyledStyles.js.map +1 -1
- package/dist/card/Card.d.ts +2 -1
- package/dist/card/Card.js.map +1 -1
- package/dist/card/CardContent.js.map +1 -1
- package/dist/card/CardFooter.js.map +1 -1
- package/dist/card/CardHeader.js.map +1 -1
- package/dist/card/CardSubtitle.d.ts +6 -0
- package/dist/card/CardSubtitle.js +2 -1
- package/dist/card/CardSubtitle.js.map +1 -1
- package/dist/card/CardTitle.js.map +1 -1
- package/dist/card/ClickableCard.js.map +1 -1
- package/dist/card/styles.js +2 -4
- package/dist/card/styles.js.map +1 -1
- package/dist/chip/Chip.js.map +1 -1
- package/dist/chip/styles.js.map +1 -1
- package/dist/cssUtils.d.ts +1 -1
- package/dist/cssUtils.js.map +1 -1
- package/dist/delegateEvent.js.map +1 -1
- package/dist/dialog/Dialog.js.map +1 -1
- package/dist/dialog/DialogContainer.js.map +1 -1
- package/dist/dialog/DialogContent.js.map +1 -1
- package/dist/dialog/DialogFooter.js.map +1 -1
- package/dist/dialog/DialogHeader.js.map +1 -1
- package/dist/dialog/DialogTitle.js.map +1 -1
- package/dist/dialog/FixedDialog.js.map +1 -1
- package/dist/dialog/NestedDialogProvider.js.map +1 -1
- package/dist/dialog/styles.js.map +1 -1
- package/dist/divider/Divider.js.map +1 -1
- package/dist/divider/styles.js.map +1 -1
- package/dist/draggable/useDraggable.js +2 -13
- package/dist/draggable/useDraggable.js.map +1 -1
- package/dist/draggable/utils.js.map +1 -1
- package/dist/expansion-panel/ExpansionList.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -1
- package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -1
- package/dist/expansion-panel/useExpansionList.js.map +1 -1
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -1
- package/dist/focus/useFocusContainer.js.map +1 -1
- package/dist/focus/utils.js.map +1 -1
- package/dist/form/Checkbox.js.map +1 -1
- package/dist/form/Fieldset.js.map +1 -1
- package/dist/form/FileInput.js.map +1 -1
- package/dist/form/Form.js.map +1 -1
- package/dist/form/FormMessage.js.map +1 -1
- package/dist/form/FormMessageContainer.js.map +1 -1
- package/dist/form/FormMessageCounter.js.map +1 -1
- package/dist/form/InputToggle.js.map +1 -1
- package/dist/form/InputToggleIcon.js.map +1 -1
- package/dist/form/Label.js.map +1 -1
- package/dist/form/Legend.js.map +1 -1
- package/dist/form/MenuItemCheckbox.js.map +1 -1
- package/dist/form/MenuItemFileInput.js.map +1 -1
- package/dist/form/MenuItemInputToggle.js.map +1 -1
- package/dist/form/MenuItemRadio.js.map +1 -1
- package/dist/form/MenuItemSwitch.js.map +1 -1
- package/dist/form/MenuItemTextField.js.map +1 -1
- package/dist/form/NativeSelect.js.map +1 -1
- package/dist/form/OptGroup.js.map +1 -1
- package/dist/form/Option.js.map +1 -1
- package/dist/form/Password.js.map +1 -1
- package/dist/form/Radio.js.map +1 -1
- package/dist/form/ResizingTextAreaWrapper.js.map +1 -1
- package/dist/form/Select.js.map +1 -1
- package/dist/form/SelectedOption.js.map +1 -1
- package/dist/form/Slider.js.map +1 -1
- package/dist/form/SliderContainer.js.map +1 -1
- package/dist/form/SliderMark.js.map +1 -1
- package/dist/form/SliderMarkLabel.js.map +1 -1
- package/dist/form/SliderThumb.js.map +1 -1
- package/dist/form/SliderTrack.js.map +1 -1
- package/dist/form/SliderValueMarks.js.map +1 -1
- package/dist/form/SliderValueTooltip.js.map +1 -1
- package/dist/form/Switch.js.map +1 -1
- package/dist/form/SwitchTrack.js.map +1 -1
- package/dist/form/TextArea.js.map +1 -1
- package/dist/form/TextField.d.ts +1 -10
- package/dist/form/TextField.js +1 -2
- package/dist/form/TextField.js.map +1 -1
- package/dist/form/TextFieldAddon.js +5 -2
- package/dist/form/TextFieldAddon.js.map +1 -1
- package/dist/form/TextFieldContainer.js.map +1 -1
- package/dist/form/_form.scss +81 -40
- package/dist/form/fileUtils.js.map +1 -1
- package/dist/form/formConfig.js.map +1 -1
- package/dist/form/formMessageStyles.js.map +1 -1
- package/dist/form/inputToggleStyles.js.map +1 -1
- package/dist/form/menuItemInputToggleStyles.js.map +1 -1
- package/dist/form/nativeSelectStyles.js.map +1 -1
- package/dist/form/optionStyles.js.map +1 -1
- package/dist/form/passwordStyles.js.map +1 -1
- package/dist/form/selectStyles.js.map +1 -1
- package/dist/form/selectUtils.js.map +1 -1
- package/dist/form/sliderUtils.js.map +1 -1
- package/dist/form/switchStyles.js.map +1 -1
- package/dist/form/textAreaStyles.js.map +1 -1
- package/dist/form/textFieldContainerStyles.js.map +1 -1
- package/dist/form/textFieldStyles.js.map +1 -1
- package/dist/form/types.js.map +1 -1
- package/dist/form/useCheckboxGroup.js.map +1 -1
- package/dist/form/useCombobox.d.ts +6 -6
- package/dist/form/useCombobox.js +1 -1
- package/dist/form/useCombobox.js.map +1 -1
- package/dist/form/useEditableCombobox.js +3 -0
- package/dist/form/useEditableCombobox.js.map +1 -1
- package/dist/form/useFileUpload.js.map +1 -1
- package/dist/form/useFormReset.js.map +1 -1
- package/dist/form/useListboxProvider.js.map +1 -1
- package/dist/form/useNumberField.js.map +1 -1
- package/dist/form/useRadioGroup.js.map +1 -1
- package/dist/form/useRangeSlider.js.map +1 -1
- package/dist/form/useResizingTextArea.js.map +1 -1
- package/dist/form/useSelectCombobox.js.map +1 -1
- package/dist/form/useSlider.js.map +1 -1
- package/dist/form/useTextField.js.map +1 -1
- package/dist/form/useTextFieldContainerAddons.d.ts +88 -0
- package/dist/form/useTextFieldContainerAddons.js +85 -0
- package/dist/form/useTextFieldContainerAddons.js.map +1 -0
- package/dist/form/utils.js.map +1 -1
- package/dist/form/validation.js.map +1 -1
- package/dist/hoverMode/useHoverMode.js.map +1 -1
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -1
- package/dist/icon/FontIcon.d.ts +10 -6
- package/dist/icon/FontIcon.js +1 -5
- package/dist/icon/FontIcon.js.map +1 -1
- package/dist/icon/IconRotator.js.map +1 -1
- package/dist/icon/MaterialIcon.d.ts +19 -2
- package/dist/icon/MaterialIcon.js +14 -2
- package/dist/icon/MaterialIcon.js.map +1 -1
- package/dist/icon/MaterialSymbol.js.map +1 -1
- package/dist/icon/SVGIcon.d.ts +3 -0
- package/dist/icon/SVGIcon.js.map +1 -1
- package/dist/icon/TextIconSpacing.js.map +1 -1
- package/dist/icon/iconConfig.d.ts +8 -0
- package/dist/icon/iconConfig.js +4 -0
- package/dist/icon/iconConfig.js.map +1 -1
- package/dist/icon/material.d.ts +1 -1
- package/dist/icon/material.js.map +1 -1
- package/dist/icon/materialConfig.js.map +1 -1
- package/dist/icon/styles.js.map +1 -1
- package/dist/interaction/Ripple.js.map +1 -1
- package/dist/interaction/RippleContainer.js.map +1 -1
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -1
- package/dist/interaction/config.js.map +1 -1
- package/dist/interaction/types.js.map +1 -1
- package/dist/interaction/useElementInteraction.js.map +1 -1
- package/dist/interaction/useHigherContrastChildren.js.map +1 -1
- package/dist/interaction/utils.js.map +1 -1
- package/dist/layout/LayoutAppBar.js.map +1 -1
- package/dist/layout/LayoutNav.js.map +1 -1
- package/dist/layout/LayoutWindowSplitter.js.map +1 -1
- package/dist/layout/Main.js.map +1 -1
- package/dist/layout/layoutNavStyles.js.map +1 -1
- package/dist/layout/layoutWindowSplitterStyles.js.map +1 -1
- package/dist/layout/mainStyles.js.map +1 -1
- package/dist/layout/useExpandableLayout.js.map +1 -1
- package/dist/layout/useHorizontalLayoutTransition.js.map +1 -1
- package/dist/layout/useLayoutAppBarHeight.js.map +1 -1
- package/dist/layout/useLayoutTree.js.map +1 -1
- package/dist/layout/useLayoutWindowSplitter.js.map +1 -1
- package/dist/layout/useMainTabIndex.js.map +1 -1
- package/dist/layout/useResizableLayout.js.map +1 -1
- package/dist/layout/useTemporaryLayout.js.map +1 -1
- package/dist/link/Link.d.ts +2 -4
- package/dist/link/Link.js +1 -2
- package/dist/link/Link.js.map +1 -1
- package/dist/link/SkipToMainContent.d.ts +10 -3
- package/dist/link/SkipToMainContent.js +4 -1
- package/dist/link/SkipToMainContent.js.map +1 -1
- package/dist/link/styles.d.ts +2 -2
- package/dist/link/styles.js.map +1 -1
- package/dist/list/List.js.map +1 -1
- package/dist/list/ListItem.js.map +1 -1
- package/dist/list/ListItemAddon.js.map +1 -1
- package/dist/list/ListItemChildren.js.map +1 -1
- package/dist/list/ListItemLink.js.map +1 -1
- package/dist/list/ListItemText.js.map +1 -1
- package/dist/list/ListSubheader.js.map +1 -1
- package/dist/list/getListItemHeight.js.map +1 -1
- package/dist/list/listItemStyles.js.map +1 -1
- package/dist/list/types.js.map +1 -1
- package/dist/media-queries/AppSizeProvider.js.map +1 -1
- package/dist/media-queries/appSize.js.map +1 -1
- package/dist/media-queries/useMediaQuery.js.map +1 -1
- package/dist/menu/DropdownMenu.js.map +1 -1
- package/dist/menu/Menu.js.map +1 -1
- package/dist/menu/MenuBar.js.map +1 -1
- package/dist/menu/MenuButton.js.map +1 -1
- package/dist/menu/MenuConfigurationProvider.js.map +1 -1
- package/dist/menu/MenuItem.js.map +1 -1
- package/dist/menu/MenuItemButton.js.map +1 -1
- package/dist/menu/MenuItemCircularProgress.d.ts +2 -2
- package/dist/menu/MenuItemCircularProgress.js +2 -2
- package/dist/menu/MenuItemCircularProgress.js.map +1 -1
- package/dist/menu/MenuItemGroup.js.map +1 -1
- package/dist/menu/MenuItemSeparator.js.map +1 -1
- package/dist/menu/MenuSheet.js.map +1 -1
- package/dist/menu/MenuVisibilityProvider.js.map +1 -1
- package/dist/menu/MenuWidget.js.map +1 -1
- package/dist/menu/MenuWidgetKeyboardProvider.js.map +1 -1
- package/dist/menu/useContextMenu.js.map +1 -1
- package/dist/menu/useMenuBarProvider.js.map +1 -1
- package/dist/menu/utils.js.map +1 -1
- package/dist/movement/constants.js.map +1 -1
- package/dist/movement/findMatchIndex.js.map +1 -1
- package/dist/movement/types.js.map +1 -1
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -1
- package/dist/movement/utils.js.map +1 -1
- package/dist/navigation/CollapsibleNavGroup.js.map +1 -1
- package/dist/navigation/DefaultNavigationRenderer.js.map +1 -1
- package/dist/navigation/NavGroup.js.map +1 -1
- package/dist/navigation/NavItem.js.map +1 -1
- package/dist/navigation/NavItemButton.js.map +1 -1
- package/dist/navigation/NavItemLink.js.map +1 -1
- package/dist/navigation/NavSubheader.js.map +1 -1
- package/dist/navigation/Navigation.js.map +1 -1
- package/dist/navigation/getHrefFromParents.js.map +1 -1
- package/dist/navigation/navGroupStyles.js.map +1 -1
- package/dist/navigation/navItemStyles.js.map +1 -1
- package/dist/navigation/types.js.map +1 -1
- package/dist/navigation/useActiveHeadingId.js.map +1 -1
- package/dist/overlay/Overlay.d.ts +1 -0
- package/dist/overlay/Overlay.js.map +1 -1
- package/dist/overlay/overlayStyles.js.map +1 -1
- package/dist/portal/Portal.d.ts +4 -0
- package/dist/portal/Portal.js.map +1 -1
- package/dist/portal/PortalContainerProvider.d.ts +8 -3
- package/dist/portal/PortalContainerProvider.js +1 -0
- package/dist/portal/PortalContainerProvider.js.map +1 -1
- package/dist/positioning/constants.d.ts +1 -1
- package/dist/positioning/constants.js.map +1 -1
- package/dist/positioning/createHorizontalPosition.d.ts +2 -2
- package/dist/positioning/createHorizontalPosition.js.map +1 -1
- package/dist/positioning/createVerticalPosition.d.ts +3 -3
- package/dist/positioning/createVerticalPosition.js.map +1 -1
- package/dist/positioning/getFixedPosition.d.ts +1 -1
- package/dist/positioning/getFixedPosition.js.map +1 -1
- package/dist/positioning/types.d.ts +1 -1
- package/dist/positioning/types.js.map +1 -1
- package/dist/positioning/useFixedPositioning.d.ts +3 -3
- package/dist/positioning/useFixedPositioning.js.map +1 -1
- package/dist/positioning/utils.d.ts +1 -1
- package/dist/positioning/utils.js.map +1 -1
- package/dist/progress/CircularProgress.d.ts +5 -4
- package/dist/progress/CircularProgress.js.map +1 -1
- package/dist/progress/LinearProgress.js.map +1 -1
- package/dist/progress/getProgressA11y.js.map +1 -1
- package/dist/progress/types.js.map +1 -1
- package/dist/responsive-item/ResponsiveItemContainer.js.map +1 -1
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -1
- package/dist/responsive-item/_responsive-item.scss +4 -1
- package/dist/responsive-item/styles.js.map +1 -1
- package/dist/scroll/ScrollLock.js.map +1 -1
- package/dist/scroll/getScrollbarWidth.js.map +1 -1
- package/dist/scroll/useScrollLock.js.map +1 -1
- package/dist/searching/caseInsensitive.js.map +1 -1
- package/dist/searching/fuzzy.js.map +1 -1
- package/dist/searching/toSearchQuery.js.map +1 -1
- package/dist/searching/types.js.map +1 -1
- package/dist/searching/useFuzzyMatch.js.map +1 -1
- package/dist/searching/utils.js.map +1 -1
- package/dist/segmented-button/SegmentedButton.js.map +1 -1
- package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -1
- package/dist/segmented-button/segmentedButtonContainerStyles.js.map +1 -1
- package/dist/segmented-button/segmentedButtonStyles.js.map +1 -1
- package/dist/sheet/Sheet.js.map +1 -1
- package/dist/sheet/styles.js.map +1 -1
- package/dist/snackbar/DefaultToastRenderer.js.map +1 -1
- package/dist/snackbar/Snackbar.js.map +1 -1
- package/dist/snackbar/Toast.js.map +1 -1
- package/dist/snackbar/ToastActionButton.js.map +1 -1
- package/dist/snackbar/ToastCloseButton.js.map +1 -1
- package/dist/snackbar/ToastContent.js.map +1 -1
- package/dist/snackbar/ToastManager.js.map +1 -1
- package/dist/snackbar/ToastManagerProvider.js.map +1 -1
- package/dist/snackbar/snackbarStyles.js.map +1 -1
- package/dist/snackbar/toastContentStyles.js.map +1 -1
- package/dist/snackbar/toastStyles.js.map +1 -1
- package/dist/snackbar/useCurrentToastActions.js.map +1 -1
- package/dist/suspense/CircularProgressSuspense.js.map +1 -1
- package/dist/suspense/NullSuspense.js.map +1 -1
- package/dist/table/StickyTableSection.d.ts +23 -0
- package/dist/table/StickyTableSection.js +56 -0
- package/dist/table/StickyTableSection.js.map +1 -0
- package/dist/table/Table.d.ts +1 -1
- package/dist/table/Table.js.map +1 -1
- package/dist/table/TableBody.d.ts +1 -1
- package/dist/table/TableBody.js.map +1 -1
- package/dist/table/TableCell.d.ts +3 -2
- package/dist/table/TableCell.js.map +1 -1
- package/dist/table/TableCellContent.d.ts +1 -2
- package/dist/table/TableCellContent.js.map +1 -1
- package/dist/table/TableCheckbox.js.map +1 -1
- package/dist/table/TableConfigurationProvider.d.ts +1 -73
- package/dist/table/TableConfigurationProvider.js.map +1 -1
- package/dist/table/TableContainer.js.map +1 -1
- package/dist/table/TableContainerProvider.js.map +1 -1
- package/dist/table/TableFooter.d.ts +8 -17
- package/dist/table/TableFooter.js +17 -80
- package/dist/table/TableFooter.js.map +1 -1
- package/dist/table/TableHeader.d.ts +8 -17
- package/dist/table/TableHeader.js +20 -87
- package/dist/table/TableHeader.js.map +1 -1
- package/dist/table/TableRadio.js.map +1 -1
- package/dist/table/TableRow.d.ts +1 -1
- package/dist/table/TableRow.js.map +1 -1
- package/dist/table/tableCellStyles.d.ts +1 -1
- package/dist/table/tableCellStyles.js.map +1 -1
- package/dist/table/tableContainerStyles.js.map +1 -1
- package/dist/table/tableFooterStyles.js.map +1 -1
- package/dist/table/tableHeaderStyles.js.map +1 -1
- package/dist/table/tableRowStyles.js.map +1 -1
- package/dist/table/tableStyles.js.map +1 -1
- package/dist/table/types.d.ts +89 -9
- package/dist/table/types.js.map +1 -1
- package/dist/table/useStickyTableSection.d.ts +27 -0
- package/dist/table/useStickyTableSection.js +84 -0
- package/dist/table/useStickyTableSection.js.map +1 -0
- package/dist/table/useTableSectionConfig.d.ts +13 -0
- package/dist/table/useTableSectionConfig.js +33 -0
- package/dist/table/useTableSectionConfig.js.map +1 -0
- package/dist/tabs/Tab.js.map +1 -1
- package/dist/tabs/TabList.js.map +1 -1
- package/dist/tabs/TabListScrollButton.js.map +1 -1
- package/dist/tabs/tabIndicatorStyles.js.map +1 -1
- package/dist/tabs/tabListScrollButtonStyles.js.map +1 -1
- package/dist/tabs/tabListStyles.js.map +1 -1
- package/dist/tabs/tabStyles.js.map +1 -1
- package/dist/tabs/useTabList.js.map +1 -1
- package/dist/tabs/useTabs.js.map +1 -1
- package/dist/tabs/utils.js.map +1 -1
- package/dist/test-utils/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/ResizeObserver.js.map +1 -1
- package/dist/test-utils/data-testid.js.map +1 -1
- package/dist/test-utils/index.js.map +1 -1
- package/dist/test-utils/jest-setup.js.map +1 -1
- package/dist/test-utils/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -1
- package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -1
- package/dist/test-utils/polyfills/TextDecoder.js.map +1 -1
- package/dist/test-utils/polyfills/TextEncoder.js.map +1 -1
- package/dist/test-utils/polyfills/index.js.map +1 -1
- package/dist/test-utils/polyfills/matchMedia.js.map +1 -1
- package/dist/test-utils/polyfills/offsetParent.js.map +1 -1
- package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -1
- package/dist/test-utils/render.js.map +1 -1
- package/dist/test-utils/timers.js.map +1 -1
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -1
- package/dist/theme/ThemeProvider.js.map +1 -1
- package/dist/theme/_theme.scss +6 -5
- package/dist/theme/colors.js.map +1 -1
- package/dist/theme/cssVars.js.map +1 -1
- package/dist/theme/types.js.map +1 -1
- package/dist/theme/useCSSVariables.js.map +1 -1
- package/dist/theme/useColorScheme.js.map +1 -1
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -1
- package/dist/theme/useColorSchemeProvider.js.map +1 -1
- package/dist/theme/usePrefersColorScheme.js.map +1 -1
- package/dist/theme/utils.js.map +1 -1
- package/dist/tooltip/Tooltip.d.ts +20 -9
- package/dist/tooltip/Tooltip.js.map +1 -1
- package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -1
- package/dist/tooltip/constants.js.map +1 -1
- package/dist/tooltip/tooltipStyles.js.map +1 -1
- package/dist/tooltip/useTooltip.d.ts +30 -16
- package/dist/tooltip/useTooltip.js.map +1 -1
- package/dist/tooltip/useTooltipPosition.d.ts +2 -4
- package/dist/tooltip/useTooltipPosition.js.map +1 -1
- package/dist/tooltip/utils.js.map +1 -1
- package/dist/transition/CSSTransition.js.map +1 -1
- package/dist/transition/Collapse.js.map +1 -1
- package/dist/transition/CrossFade.js +2 -3
- package/dist/transition/CrossFade.js.map +1 -1
- package/dist/transition/ScaleTransition.js.map +1 -1
- package/dist/transition/SkeletonPlaceholder.js.map +1 -1
- package/dist/transition/Slide.js.map +1 -1
- package/dist/transition/SlideContainer.js.map +1 -1
- package/dist/transition/collapseStyles.js.map +1 -1
- package/dist/transition/config.js.map +1 -1
- package/dist/transition/maxWidthTransition.js.map +1 -1
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -1
- package/dist/transition/types.d.ts +19 -24
- package/dist/transition/types.js.map +1 -1
- package/dist/transition/useCSSTransition.js.map +1 -1
- package/dist/transition/useCarousel.js.map +1 -1
- package/dist/transition/useCollapseTransition.js.map +1 -1
- package/dist/transition/useCrossFadeTransition.js +2 -1
- package/dist/transition/useCrossFadeTransition.js.map +1 -1
- package/dist/transition/useMaxWidthTransition.js.map +1 -1
- package/dist/transition/useScaleTransition.js +2 -1
- package/dist/transition/useScaleTransition.js.map +1 -1
- package/dist/transition/useSkeletonPlaceholder.js.map +1 -1
- package/dist/transition/useSlideTransition.js.map +1 -1
- package/dist/transition/useTransition.d.ts +1 -0
- package/dist/transition/useTransition.js +1 -0
- package/dist/transition/useTransition.js.map +1 -1
- package/dist/transition/utils.js.map +1 -1
- package/dist/tree/DefaultTreeItemRenderer.js.map +1 -1
- package/dist/tree/Tree.js.map +1 -1
- package/dist/tree/TreeGroup.js.map +1 -1
- package/dist/tree/TreeItem.js.map +1 -1
- package/dist/tree/TreeItemExpander.js.map +1 -1
- package/dist/tree/TreeProvider.js.map +1 -1
- package/dist/tree/styles.js.map +1 -1
- package/dist/tree/types.js.map +1 -1
- package/dist/tree/useTree.d.ts +3 -3
- package/dist/tree/useTree.js.map +1 -1
- package/dist/tree/useTreeExpansion.js.map +1 -1
- package/dist/tree/useTreeItems.js.map +1 -1
- package/dist/tree/useTreeMovement.js.map +1 -1
- package/dist/tree/useTreeSelection.js.map +1 -1
- package/dist/tree/utils.js.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/typography/SrOnly.js.map +1 -1
- package/dist/typography/TextContainer.d.ts +4 -0
- package/dist/typography/TextContainer.js +2 -0
- package/dist/typography/TextContainer.js.map +1 -1
- package/dist/typography/Typography.d.ts +10 -0
- package/dist/typography/Typography.js +3 -0
- package/dist/typography/Typography.js.map +1 -1
- package/dist/typography/WritingDirectionProvider.js.map +1 -1
- package/dist/typography/textContainerStyles.js.map +1 -1
- package/dist/typography/typographyStyles.js.map +1 -1
- package/dist/{useAsyncAction.d.ts → useAsyncFunction.d.ts} +10 -10
- package/dist/{useAsyncAction.js → useAsyncFunction.js} +6 -6
- package/dist/useAsyncFunction.js.map +1 -0
- package/dist/useDebouncedFunction.js.map +1 -1
- package/dist/useDropzone.js.map +1 -1
- package/dist/useElementSize.js.map +1 -1
- package/dist/useEnsuredId.js.map +1 -1
- package/dist/useEnsuredRef.js.map +1 -1
- package/dist/useEnsuredState.js.map +1 -1
- package/dist/useHtmlClassName.js.map +1 -1
- package/dist/useIntersectionObserver.js.map +1 -1
- package/dist/useIsomorphicLayoutEffect.js.map +1 -1
- package/dist/useLocalStorage.js.map +1 -1
- package/dist/useMutationObserver.d.ts +52 -0
- package/dist/useMutationObserver.js +84 -0
- package/dist/useMutationObserver.js.map +1 -0
- package/dist/useOrientation.js.map +1 -1
- package/dist/usePageInactive.js.map +1 -1
- package/dist/useResizeListener.js.map +1 -1
- package/dist/useResizeObserver.js.map +1 -1
- package/dist/useThrottledFunction.js.map +1 -1
- package/dist/useToggle.js.map +1 -1
- package/dist/useUnmounted.js.map +1 -1
- package/dist/useWindowSize.js.map +1 -1
- package/dist/utils/RenderRecursively.js.map +1 -1
- package/dist/utils/alphaNumericSort.js.map +1 -1
- package/dist/utils/applyRef.js.map +1 -1
- package/dist/utils/bem.js.map +1 -1
- package/dist/utils/getClientPosition.js.map +1 -1
- package/dist/utils/getMiddleOfRange.js.map +1 -1
- package/dist/utils/getPercentage.js.map +1 -1
- package/dist/utils/getRangeDefaultValue.js.map +1 -1
- package/dist/utils/getRangeSteps.js.map +1 -1
- package/dist/utils/identity.js.map +1 -1
- package/dist/utils/isElementVisible.js.map +1 -1
- package/dist/utils/loop.js.map +1 -1
- package/dist/utils/nearest.js.map +1 -1
- package/dist/utils/parseCssLengthUnit.js.map +1 -1
- package/dist/utils/randomInt.js.map +1 -1
- package/dist/utils/wait.js.map +1 -1
- package/dist/utils/withinRange.js.map +1 -1
- package/dist/window-splitter/WindowSplitter.js.map +1 -1
- package/dist/window-splitter/useWindowSplitter.js.map +1 -1
- package/package.json +26 -25
- package/scripts/getExportMap.ts +66 -0
- package/scripts/tsconfig.json +1 -1
- package/src/__tests__/{useAsyncAction.tsx → useAsyncFunction.tsx} +3 -3
- package/src/__tests__/useWindowSize.tsx +1 -2
- package/src/_box-shadows.scss +7 -4
- package/src/_core.scss +5 -1
- package/src/_utils.scss +3 -3
- package/src/app-bar/AppBarTitle.tsx +8 -4
- package/src/autocomplete/Autocomplete.tsx +294 -0
- package/src/autocomplete/AutocompleteCircularProgress.tsx +41 -0
- package/src/autocomplete/AutocompleteDropdownButton.tsx +66 -0
- package/src/autocomplete/FilterAutocompleteOptions.tsx +86 -0
- package/src/autocomplete/__tests__/Autocomplete.tsx +458 -0
- package/src/autocomplete/__tests__/__snapshots__/Autocomplete.tsx.snap +144 -0
- package/src/autocomplete/_autocomplete.scss +75 -0
- package/src/autocomplete/autocompleteStyles.ts +78 -0
- package/src/autocomplete/defaults.ts +83 -0
- package/src/autocomplete/types.ts +122 -0
- package/src/avatar/Avatar.tsx +1 -2
- package/src/avatar/_avatar.scss +4 -3
- package/src/button/AsyncButton.tsx +2 -2
- package/src/card/Card.tsx +2 -1
- package/src/card/CardSubtitle.tsx +9 -0
- package/src/card/__tests__/__snapshots__/CardHeader.tsx.snap +1 -1
- package/src/card/__tests__/__snapshots__/CardSubtitle.tsx.snap +2 -2
- package/src/card/__tests__/__snapshots__/styles.ts.snap +1 -1
- package/src/card/styles.ts +2 -6
- package/src/cssUtils.ts +1 -1
- package/src/draggable/useDraggable.ts +6 -13
- package/src/form/TextField.tsx +0 -13
- package/src/form/TextFieldAddon.tsx +6 -4
- package/src/form/__tests__/__snapshots__/Select.tsx.snap +2 -2
- package/src/form/__tests__/__snapshots__/TextArea.tsx.snap +2 -2
- package/src/form/__tests__/__snapshots__/TextField.tsx.snap +2 -2
- package/src/form/__tests__/useFormReset.tsx +1 -2
- package/src/form/_form.scss +81 -40
- package/src/form/useCombobox.ts +9 -19
- package/src/form/useEditableCombobox.ts +3 -0
- package/src/form/useTextFieldContainerAddons.ts +195 -0
- package/src/icon/FontIcon.tsx +19 -9
- package/src/icon/MaterialIcon.tsx +23 -4
- package/src/icon/SVGIcon.tsx +3 -0
- package/src/icon/iconConfig.tsx +10 -0
- package/src/icon/material.ts +276 -19
- package/src/link/Link.tsx +2 -4
- package/src/link/SkipToMainContent.tsx +11 -4
- package/src/link/styles.ts +2 -2
- package/src/menu/MenuItemCircularProgress.tsx +2 -2
- package/src/overlay/Overlay.tsx +1 -0
- package/src/portal/Portal.tsx +5 -0
- package/src/portal/PortalContainerProvider.tsx +16 -7
- package/src/positioning/__tests__/createHorizontalPosition.ts +2 -4
- package/src/positioning/constants.ts +1 -1
- package/src/positioning/createHorizontalPosition.ts +2 -2
- package/src/positioning/createVerticalPosition.ts +3 -3
- package/src/positioning/getFixedPosition.ts +1 -1
- package/src/positioning/types.ts +1 -1
- package/src/positioning/useFixedPositioning.ts +12 -4
- package/src/positioning/utils.ts +1 -1
- package/src/progress/CircularProgress.tsx +5 -4
- package/src/responsive-item/_responsive-item.scss +4 -1
- package/src/suspense/__tests__/CircularProgressSuspense.tsx +4 -4
- package/src/table/StickyTableSection.tsx +91 -0
- package/src/table/Table.tsx +2 -5
- package/src/table/TableBody.tsx +1 -2
- package/src/table/TableCell.tsx +3 -5
- package/src/table/TableCellContent.tsx +1 -3
- package/src/table/TableConfigurationProvider.tsx +1 -86
- package/src/table/TableFooter.tsx +19 -116
- package/src/table/TableHeader.tsx +20 -118
- package/src/table/TableRow.tsx +2 -4
- package/src/table/__tests__/Table.tsx +9 -8
- package/src/table/tableCellStyles.ts +1 -1
- package/src/table/types.ts +105 -10
- package/src/table/useStickyTableSection.tsx +126 -0
- package/src/table/useTableSectionConfig.ts +45 -0
- package/src/theme/_theme.scss +6 -5
- package/src/tooltip/Tooltip.tsx +24 -8
- package/src/tooltip/useTooltip.ts +52 -27
- package/src/tooltip/useTooltipPosition.ts +2 -4
- package/src/transition/CrossFade.tsx +1 -8
- package/src/transition/types.ts +23 -27
- package/src/transition/useCrossFadeTransition.ts +2 -0
- package/src/transition/useScaleTransition.ts +2 -0
- package/src/transition/useTransition.ts +1 -0
- package/src/tree/useTree.ts +3 -5
- package/src/typography/TextContainer.tsx +4 -0
- package/src/typography/Typography.tsx +10 -0
- package/src/{useAsyncAction.ts → useAsyncFunction.ts} +15 -15
- package/src/useMutationObserver.ts +118 -0
- package/src/useResizeListener.ts +1 -1
- package/coverage/lcov-report/AppBar.tsx.html +0 -784
- package/coverage/lcov-report/AsyncButton.tsx.html +0 -649
- package/coverage/lcov-report/AutoComplete.tsx.html +0 -283
- package/coverage/lcov-report/Avatar.tsx.html +0 -472
- package/coverage/lcov-report/Badge.tsx.html +0 -253
- package/coverage/lcov-report/CircularProgress.tsx.html +0 -799
- package/coverage/lcov-report/Collapse.tsx.html +0 -340
- package/coverage/lcov-report/CoreProviders.tsx.html +0 -502
- package/coverage/lcov-report/DefaultNavigationRenderer.tsx.html +0 -298
- package/coverage/lcov-report/DefaultToastRenderer.tsx.html +0 -526
- package/coverage/lcov-report/Dialog.tsx.html +0 -1309
- package/coverage/lcov-report/DialogContent.tsx.html +0 -178
- package/coverage/lcov-report/DialogFooter.tsx.html +0 -169
- package/coverage/lcov-report/ExpansionList.tsx.html +0 -205
- package/coverage/lcov-report/ExpansionPanel.tsx.html +0 -934
- package/coverage/lcov-report/ExpansionPanelHeader.tsx.html +0 -622
- package/coverage/lcov-report/FileInput.tsx.html +0 -733
- package/coverage/lcov-report/FontIcon.tsx.html +0 -265
- package/coverage/lcov-report/IconRotator.tsx.html +0 -322
- package/coverage/lcov-report/InputToggle.tsx.html +0 -1117
- package/coverage/lcov-report/InputToggleIcon.tsx.html +0 -478
- package/coverage/lcov-report/LinearProgress.tsx.html +0 -658
- package/coverage/lcov-report/ListItem.tsx.html +0 -892
- package/coverage/lcov-report/ListItemLink.tsx.html +0 -616
- package/coverage/lcov-report/MaterialIcon.tsx.html +0 -235
- package/coverage/lcov-report/MaterialSymbol.tsx.html +0 -421
- package/coverage/lcov-report/MenuItemCheckbox.tsx.html +0 -223
- package/coverage/lcov-report/MenuItemInputToggle.tsx.html +0 -925
- package/coverage/lcov-report/MenuItemRadio.tsx.html +0 -436
- package/coverage/lcov-report/MenuItemSeparator.tsx.html +0 -223
- package/coverage/lcov-report/MenuItemTextField.tsx.html +0 -289
- package/coverage/lcov-report/NativeSelect.tsx.html +0 -763
- package/coverage/lcov-report/Navigation.tsx.html +0 -358
- package/coverage/lcov-report/Portal.tsx.html +0 -223
- package/coverage/lcov-report/PortalContainerProvider.tsx.html +0 -367
- package/coverage/lcov-report/RootHtml.tsx.html +0 -370
- package/coverage/lcov-report/SVGIcon.tsx.html +0 -445
- package/coverage/lcov-report/SegmentedButton.tsx.html +0 -628
- package/coverage/lcov-report/SegmentedButtonContainer.tsx.html +0 -277
- package/coverage/lcov-report/Select.tsx.html +0 -1411
- package/coverage/lcov-report/SkeletonPlaceholder.tsx.html +0 -613
- package/coverage/lcov-report/Snackbar.tsx.html +0 -610
- package/coverage/lcov-report/SrOnly.tsx.html +0 -328
- package/coverage/lcov-report/Switch.tsx.html +0 -535
- package/coverage/lcov-report/SwitchTrack.tsx.html +0 -262
- package/coverage/lcov-report/Tab.tsx.html +0 -622
- package/coverage/lcov-report/TabList.tsx.html +0 -757
- package/coverage/lcov-report/TabListScrollButton.tsx.html +0 -472
- package/coverage/lcov-report/Table.tsx.html +0 -457
- package/coverage/lcov-report/TableCell.tsx.html +0 -982
- package/coverage/lcov-report/TableCheckbox.tsx.html +0 -709
- package/coverage/lcov-report/TableContainer.tsx.html +0 -220
- package/coverage/lcov-report/TableFooter.tsx.html +0 -502
- package/coverage/lcov-report/TableHeader.tsx.html +0 -541
- package/coverage/lcov-report/TableRadio.tsx.html +0 -670
- package/coverage/lcov-report/TableRow.tsx.html +0 -289
- package/coverage/lcov-report/TextArea.tsx.html +0 -940
- package/coverage/lcov-report/TextField.tsx.html +0 -829
- package/coverage/lcov-report/TextFieldAddon.tsx.html +0 -382
- package/coverage/lcov-report/TextFieldContainer.tsx.html +0 -364
- package/coverage/lcov-report/Toast.tsx.html +0 -868
- package/coverage/lcov-report/ToastCloseButton.tsx.html +0 -340
- package/coverage/lcov-report/ToastManager.tsx.html +0 -1783
- package/coverage/lcov-report/ToastManagerProvider.tsx.html +0 -400
- package/coverage/lcov-report/Tooltip.tsx.html +0 -559
- package/coverage/lcov-report/TooltipHoverModeProvider.tsx.html +0 -253
- package/coverage/lcov-report/Tree.tsx.html +0 -1135
- package/coverage/lcov-report/TreeGroup.tsx.html +0 -313
- package/coverage/lcov-report/Typography.tsx.html +0 -1027
- package/coverage/lcov-report/app-bar/AppBar.tsx.html +0 -928
- package/coverage/lcov-report/app-bar/AppBarTitle.tsx.html +0 -430
- package/coverage/lcov-report/app-bar/index.html +0 -131
- package/coverage/lcov-report/autocomplete/AutoComplete.tsx.html +0 -283
- package/coverage/lcov-report/autocomplete/AutocompleteGeneric.tsx.html +0 -304
- package/coverage/lcov-report/autocomplete/useAutoComplete.ts.html +0 -775
- package/coverage/lcov-report/autocomplete/useAutocomplete.ts.html +0 -1039
- package/coverage/lcov-report/autocomplete/useAutocompleteAgain.ts.html +0 -829
- package/coverage/lcov-report/autocomplete/useAutocompletev2.ts.html +0 -715
- package/coverage/lcov-report/autocomplete/useInlineAutoComplete.ts.html +0 -340
- package/coverage/lcov-report/autocomplete/useInlineAutocomplete.ts.html +0 -454
- package/coverage/lcov-report/autocomplete/useInlineSelection.ts.html +0 -373
- package/coverage/lcov-report/autocomplete/utils.ts.html +0 -196
- package/coverage/lcov-report/avatar/Avatar.tsx.html +0 -535
- package/coverage/lcov-report/avatar/index.html +0 -116
- package/coverage/lcov-report/avatar/styles.ts.html +0 -268
- package/coverage/lcov-report/badge/Badge.tsx.html +0 -364
- package/coverage/lcov-report/badge/index.html +0 -116
- package/coverage/lcov-report/box/Box.tsx.html +0 -562
- package/coverage/lcov-report/box/index.html +0 -131
- package/coverage/lcov-report/box/styles.ts.html +0 -622
- package/coverage/lcov-report/button/AsyncButton.tsx.html +0 -1045
- package/coverage/lcov-report/button/ButtonUnstyled.tsx.html +0 -214
- package/coverage/lcov-report/button/FloatingActionButton.tsx.html +0 -427
- package/coverage/lcov-report/button/TooltippedButton.tsx.html +0 -433
- package/coverage/lcov-report/button/buttonStyles.ts.html +0 -607
- package/coverage/lcov-report/button/buttonUnstyledStyles.ts.html +0 -142
- package/coverage/lcov-report/card/CardContent.tsx.html +0 -223
- package/coverage/lcov-report/card/CardHeader.tsx.html +0 -322
- package/coverage/lcov-report/card/ClickableCard.tsx.html +0 -400
- package/coverage/lcov-report/chip/Chip.tsx.html +0 -1072
- package/coverage/lcov-report/chip/index.html +0 -116
- package/coverage/lcov-report/chip/styles.ts.html +0 -436
- package/coverage/lcov-report/collapseStyles.ts.html +0 -184
- package/coverage/lcov-report/config.ts.html +0 -151
- package/coverage/lcov-report/cssUtils.ts.html +0 -814
- package/coverage/lcov-report/dialog/Dialog.tsx.html +0 -1309
- package/coverage/lcov-report/dialog/DialogContent.tsx.html +0 -178
- package/coverage/lcov-report/dialog/DialogFooter.tsx.html +0 -169
- package/coverage/lcov-report/dialog/DialogHeader.tsx.html +0 -148
- package/coverage/lcov-report/dialog/FixedDialog.tsx.html +0 -583
- package/coverage/lcov-report/dialog/index.html +0 -131
- package/coverage/lcov-report/dialog/styles.ts.html +0 -439
- package/coverage/lcov-report/divider/Divider.tsx.html +0 -280
- package/coverage/lcov-report/divider/index.html +0 -116
- package/coverage/lcov-report/draggable/index.html +0 -116
- package/coverage/lcov-report/draggable/useControlledDraggable.ts.html +0 -2131
- package/coverage/lcov-report/draggable/useDraggable.ts.html +0 -2398
- package/coverage/lcov-report/draggable/useDraggableOrig.ts.html +0 -316
- package/coverage/lcov-report/draggable/useLocalStorageDraggable.ts.html +0 -361
- package/coverage/lcov-report/draggable/useLocalStorageDraggableControls.ts.html +0 -487
- package/coverage/lcov-report/draggable/useLocalStorageDraggableLatest.ts.html +0 -334
- package/coverage/lcov-report/draggable/utils.ts.html +0 -808
- package/coverage/lcov-report/expansion-panel/ExpansionList.tsx.html +0 -211
- package/coverage/lcov-report/expansion-panel/ExpansionPanel.tsx.html +0 -943
- package/coverage/lcov-report/expansion-panel/ExpansionPanelHeader.tsx.html +0 -649
- package/coverage/lcov-report/expansion-panel/index.html +0 -146
- package/coverage/lcov-report/expansion-panel/useExpansionPanels.ts.html +0 -928
- package/coverage/lcov-report/filters.ts.html +0 -1045
- package/coverage/lcov-report/findMatchIndex.ts.html +0 -385
- package/coverage/lcov-report/form/AutoComplete.tsx.html +0 -283
- package/coverage/lcov-report/form/FileInput.tsx.html +0 -739
- package/coverage/lcov-report/form/Form.tsx.html +0 -238
- package/coverage/lcov-report/form/FormMessage.tsx.html +0 -322
- package/coverage/lcov-report/form/FormMessageContainer.tsx.html +0 -229
- package/coverage/lcov-report/form/InputToggle.tsx.html +0 -1108
- package/coverage/lcov-report/form/InputToggleIcon.tsx.html +0 -478
- package/coverage/lcov-report/form/Label.tsx.html +0 -442
- package/coverage/lcov-report/form/MenuItemInputToggle.tsx.html +0 -979
- package/coverage/lcov-report/form/MenuItemTextField.tsx.html +0 -289
- package/coverage/lcov-report/form/NativeSelect.tsx.html +0 -826
- package/coverage/lcov-report/form/OptGroup.tsx.html +0 -343
- package/coverage/lcov-report/form/Password.tsx.html +0 -721
- package/coverage/lcov-report/form/Radio.tsx.html +0 -169
- package/coverage/lcov-report/form/ResizingTextArea.tsx.html +0 -442
- package/coverage/lcov-report/form/ResizingTextAreaWrapper.tsx.html +0 -310
- package/coverage/lcov-report/form/Select.tsx.html +0 -1456
- package/coverage/lcov-report/form/SelectOriginal.tsx.html +0 -1630
- package/coverage/lcov-report/form/SelectV2.tsx.html +0 -1024
- package/coverage/lcov-report/form/SelectedOption.tsx.html +0 -250
- package/coverage/lcov-report/form/SimpleTextArea.tsx.html +0 -727
- package/coverage/lcov-report/form/Slider.tsx.html +0 -2014
- package/coverage/lcov-report/form/SliderThumb.tsx.html +0 -1030
- package/coverage/lcov-report/form/SliderValueTooltip.tsx.html +0 -319
- package/coverage/lcov-report/form/Switch.tsx.html +0 -535
- package/coverage/lcov-report/form/SwitchTrack.tsx.html +0 -262
- package/coverage/lcov-report/form/TextArea.tsx.html +0 -964
- package/coverage/lcov-report/form/TextArea2.tsx.html +0 -985
- package/coverage/lcov-report/form/TextAreaBackup.tsx.html +0 -1006
- package/coverage/lcov-report/form/TextField.tsx.html +0 -829
- package/coverage/lcov-report/form/fileUtils.ts.html +0 -2155
- package/coverage/lcov-report/form/formMessageStyles.ts.html +0 -238
- package/coverage/lcov-report/form/inputToggleStyles.ts.html +0 -316
- package/coverage/lcov-report/form/selectUtils.ts.html +0 -397
- package/coverage/lcov-report/form/switchStyles.ts.html +0 -172
- package/coverage/lcov-report/form/textAreaStyles.ts.html +0 -382
- package/coverage/lcov-report/form/useAutoComplete.ts.html +0 -787
- package/coverage/lcov-report/form/useCheckboxGroup.ts.html +0 -1087
- package/coverage/lcov-report/form/useCombobox-6-13.ts.html +0 -1054
- package/coverage/lcov-report/form/useCombobox-6-15.ts.html +0 -1048
- package/coverage/lcov-report/form/useCombobox.ts.html +0 -1045
- package/coverage/lcov-report/form/useComboboxBoth.ts.html +0 -85
- package/coverage/lcov-report/form/useComboboxDialog.ts.html +0 -85
- package/coverage/lcov-report/form/useComboboxList.ts.html +0 -418
- package/coverage/lcov-report/form/useComboboxOrig.ts.html +0 -781
- package/coverage/lcov-report/form/useFileUpload.ts.html +0 -1702
- package/coverage/lcov-report/form/useFormReset.ts.html +0 -229
- package/coverage/lcov-report/form/useInlineAutoComplete.ts.html +0 -379
- package/coverage/lcov-report/form/useNumberField.ts.html +0 -1561
- package/coverage/lcov-report/form/useRadioGroup.ts.html +0 -1009
- package/coverage/lcov-report/form/useRangeSlider.ts.html +0 -355
- package/coverage/lcov-report/form/useResizingTextArea.ts.html +0 -631
- package/coverage/lcov-report/form/useResizingTextArea2.ts.html +0 -631
- package/coverage/lcov-report/form/useSelectCombobox.ts.html +0 -499
- package/coverage/lcov-report/form/useSlider.ts.html +0 -421
- package/coverage/lcov-report/form/useTextField.ts.html +0 -2203
- package/coverage/lcov-report/form/utils.ts.html +0 -382
- package/coverage/lcov-report/form/validation.ts.html +0 -886
- package/coverage/lcov-report/getHrefFromParents.ts.html +0 -133
- package/coverage/lcov-report/getListItemHeight.ts.html +0 -298
- package/coverage/lcov-report/hoverMode/index.html +0 -116
- package/coverage/lcov-report/hoverMode/useHoverMode.ts.html +0 -676
- package/coverage/lcov-report/icon/FontIcon.tsx.html +0 -256
- package/coverage/lcov-report/icon/MaterialIcon.tsx.html +0 -235
- package/coverage/lcov-report/icon/index.html +0 -116
- package/coverage/lcov-report/icon/styles.ts.html +0 -586
- package/coverage/lcov-report/iconConfig.tsx.html +0 -973
- package/coverage/lcov-report/inputToggleStyles.ts.html +0 -316
- package/coverage/lcov-report/interaction/ElementInteractionProvider.tsx.html +0 -253
- package/coverage/lcov-report/interaction/UserInteractionModeProvider.tsx.html +0 -679
- package/coverage/lcov-report/interaction/config.ts.html +0 -181
- package/coverage/lcov-report/interaction/index.html +0 -131
- package/coverage/lcov-report/layout/LayoutAppBar.tsx.html +0 -358
- package/coverage/lcov-report/layout/LayoutNav.tsx.html +0 -682
- package/coverage/lcov-report/layout/LayoutWindowSplitter.tsx.html +0 -460
- package/coverage/lcov-report/layout/Main.tsx.html +0 -364
- package/coverage/lcov-report/layout/NavigationLink.tsx.html +0 -334
- package/coverage/lcov-report/layout/NavigationRail.tsx.html +0 -157
- package/coverage/lcov-report/layout/index.html +0 -161
- package/coverage/lcov-report/layout/layoutNavStyles.ts.html +0 -166
- package/coverage/lcov-report/layout/layoutWindowSplitterStyles.ts.html +0 -220
- package/coverage/lcov-report/layout/navigationLinkStyles.ts.html +0 -250
- package/coverage/lcov-report/layout/navigationRailStyles.ts.html +0 -148
- package/coverage/lcov-report/layout/useExpandableLayout.ts.html +0 -928
- package/coverage/lcov-report/layout/useExpandableLayoutAppBarTransition.ts.html +0 -199
- package/coverage/lcov-report/layout/useHorizontalLayoutTransition.ts.html +0 -349
- package/coverage/lcov-report/layout/useLayoutAppBarHeight.ts.html +0 -343
- package/coverage/lcov-report/layout/useLayoutNavigation.ts.html +0 -544
- package/coverage/lcov-report/layout/useLayoutTree.ts.html +0 -691
- package/coverage/lcov-report/layout/useLayoutWindowSplitter.ts.html +0 -517
- package/coverage/lcov-report/layout/useMainTabIndex.ts.html +0 -136
- package/coverage/lcov-report/layout/useResizableLayout.ts.html +0 -328
- package/coverage/lcov-report/layout/useTemporaryLayout.ts.html +0 -589
- package/coverage/lcov-report/link/Link.tsx.html +0 -358
- package/coverage/lcov-report/link/LinkProvider.tsx.html +0 -214
- package/coverage/lcov-report/link/SkipToMainContent.tsx.html +0 -448
- package/coverage/lcov-report/link/index.html +0 -116
- package/coverage/lcov-report/list/List.tsx.html +0 -490
- package/coverage/lcov-report/list/ListItem.tsx.html +0 -886
- package/coverage/lcov-report/list/ListItemAddon.tsx.html +0 -286
- package/coverage/lcov-report/list/ListItemChildren.tsx.html +0 -445
- package/coverage/lcov-report/list/ListItemLink.tsx.html +0 -616
- package/coverage/lcov-report/list/ListItemText.tsx.html +0 -280
- package/coverage/lcov-report/list/ListSubheader.tsx.html +0 -322
- package/coverage/lcov-report/list/index.html +0 -191
- package/coverage/lcov-report/list/listItemStyles.ts.html +0 -703
- package/coverage/lcov-report/materialConfig.ts.html +0 -703
- package/coverage/lcov-report/media-queries/AppSizeProvider.tsx.html +0 -499
- package/coverage/lcov-report/media-queries/appSize.ts.html +0 -445
- package/coverage/lcov-report/media-queries/index.html +0 -116
- package/coverage/lcov-report/media-queries/useMediaQuery.ts.html +0 -244
- package/coverage/lcov-report/media-queries/useMinWidthMediaQuery.ts.html +0 -115
- package/coverage/lcov-report/menu/DropdownMenu.tsx.html +0 -976
- package/coverage/lcov-report/menu/Menu.tsx.html +0 -1894
- package/coverage/lcov-report/menu/MenuConfigurationProvider.tsx.html +0 -637
- package/coverage/lcov-report/menu/MenuItem.tsx.html +0 -292
- package/coverage/lcov-report/menu/MenuItemCircularProgress.tsx.html +0 -433
- package/coverage/lcov-report/menu/MenuItemGroup.tsx.html +0 -382
- package/coverage/lcov-report/menu/MenuSheet.tsx.html +0 -502
- package/coverage/lcov-report/menu/MenuWidget.tsx.html +0 -634
- package/coverage/lcov-report/menu/index.html +0 -116
- package/coverage/lcov-report/menu/menuConfig.ts.html +0 -118
- package/coverage/lcov-report/menu/useContextMenu.ts.html +0 -490
- package/coverage/lcov-report/menuItemInputToggleStyles.ts.html +0 -319
- package/coverage/lcov-report/movement/index.html +0 -116
- package/coverage/lcov-report/movement/useKeyboardMovementProvider.ts.html +0 -1723
- package/coverage/lcov-report/navigation/CollapsibleNavGroup.tsx.html +0 -334
- package/coverage/lcov-report/navigation/DefaultNavigationRenderer.tsx.html +0 -298
- package/coverage/lcov-report/navigation/NavGroup.tsx.html +0 -193
- package/coverage/lcov-report/navigation/NavItem.tsx.html +0 -160
- package/coverage/lcov-report/navigation/NavItemButton.tsx.html +0 -397
- package/coverage/lcov-report/navigation/NavItemLink.tsx.html +0 -574
- package/coverage/lcov-report/navigation/NavSubheader.tsx.html +0 -184
- package/coverage/lcov-report/navigation/Navigation.tsx.html +0 -358
- package/coverage/lcov-report/navigation/getHrefFromParents.ts.html +0 -130
- package/coverage/lcov-report/navigation/index.html +0 -146
- package/coverage/lcov-report/navigation/navGroupStyles.ts.html +0 -148
- package/coverage/lcov-report/navigation/navItemStyles.ts.html +0 -298
- package/coverage/lcov-report/overlay/Overlay.tsx.html +0 -655
- package/coverage/lcov-report/overlay/index.html +0 -116
- package/coverage/lcov-report/positioning/constants.ts.html +0 -463
- package/coverage/lcov-report/positioning/createVerticalPosition.ts.html +0 -1009
- package/coverage/lcov-report/positioning/getFixedPosition.ts.html +0 -616
- package/coverage/lcov-report/positioning/index.html +0 -131
- package/coverage/lcov-report/positioning/useFixedPositioning.ts.html +0 -1321
- package/coverage/lcov-report/progress/CircularProgress.tsx.html +0 -799
- package/coverage/lcov-report/progress/LinearProgress.tsx.html +0 -658
- package/coverage/lcov-report/progress/index.html +0 -116
- package/coverage/lcov-report/searching/caseInsensitive.ts.html +0 -685
- package/coverage/lcov-report/searching/toSearchQuery.ts.html +0 -145
- package/coverage/lcov-report/searching/useFuzzyMatch.ts.html +0 -211
- package/coverage/lcov-report/searching/utils.ts.html +0 -244
- package/coverage/lcov-report/segmented-button/SegmentedButton.tsx.html +0 -628
- package/coverage/lcov-report/segmented-button/SegmentedButtonContainer.tsx.html +0 -259
- package/coverage/lcov-report/segmented-button/index.html +0 -161
- package/coverage/lcov-report/segmented-button/segmentedButtonContainerStyles.ts.html +0 -151
- package/coverage/lcov-report/segmented-button/segmentedButtonStyles.ts.html +0 -199
- package/coverage/lcov-report/segmentedButtonContainerStyles.ts.html +0 -160
- package/coverage/lcov-report/segmentedButtonStyles.ts.html +0 -199
- package/coverage/lcov-report/sheet/Sheet.tsx.html +0 -397
- package/coverage/lcov-report/sheet/index.html +0 -116
- package/coverage/lcov-report/sheet/styles.ts.html +0 -376
- package/coverage/lcov-report/skeletonPlaceholderUtils.ts.html +0 -400
- package/coverage/lcov-report/snackbar/DefaultToastRenderer.tsx.html +0 -529
- package/coverage/lcov-report/snackbar/Snackbar.tsx.html +0 -610
- package/coverage/lcov-report/snackbar/Toast.tsx.html +0 -868
- package/coverage/lcov-report/snackbar/ToastContent.tsx.html +0 -364
- package/coverage/lcov-report/snackbar/ToastManager.tsx.html +0 -1804
- package/coverage/lcov-report/snackbar/ToastManagerProvider.tsx.html +0 -400
- package/coverage/lcov-report/snackbar/index.html +0 -116
- package/coverage/lcov-report/snackbar/snackbarStyles.ts.html +0 -139
- package/coverage/lcov-report/snackbar/toastContentStyles.ts.html +0 -196
- package/coverage/lcov-report/snackbar/toastStyles.ts.html +0 -349
- package/coverage/lcov-report/snackbar/useCurrentToastActions.ts.html +0 -226
- package/coverage/lcov-report/snackbarStyles.ts.html +0 -139
- package/coverage/lcov-report/src/AppSize.tsx.html +0 -247
- package/coverage/lcov-report/src/AppSizeProvider.tsx.html +0 -787
- package/coverage/lcov-report/src/CoreProviders.tsx.html +0 -412
- package/coverage/lcov-report/src/NoSsr.tsx.html +0 -250
- package/coverage/lcov-report/src/NullSsrSuspense.tsx.html +0 -223
- package/coverage/lcov-report/src/RootHtml.tsx.html +0 -370
- package/coverage/lcov-report/src/SsrProvider.tsx.html +0 -211
- package/coverage/lcov-report/src/app-bar/AppBar.tsx.html +0 -937
- package/coverage/lcov-report/src/app-bar/AppBarTitle.tsx.html +0 -445
- package/coverage/lcov-report/src/app-bar/index.html +0 -131
- package/coverage/lcov-report/src/autocomplete/Autocomplete.tsx.html +0 -328
- package/coverage/lcov-report/src/autocomplete/AutocompleteGeneric.tsx.html +0 -304
- package/coverage/lcov-report/src/autocomplete/index.html +0 -221
- package/coverage/lcov-report/src/autocomplete/useAutocomplete.ts.html +0 -1039
- package/coverage/lcov-report/src/autocomplete/useAutocompleteAgain.ts.html +0 -829
- package/coverage/lcov-report/src/autocomplete/useAutocompletev2.ts.html +0 -715
- package/coverage/lcov-report/src/autocomplete/useInlineAutocomplete.ts.html +0 -454
- package/coverage/lcov-report/src/autocomplete/useInlineSelection.ts.html +0 -373
- package/coverage/lcov-report/src/autocomplete/utils.ts.html +0 -196
- package/coverage/lcov-report/src/avatar/Avatar.tsx.html +0 -472
- package/coverage/lcov-report/src/avatar/index.html +0 -131
- package/coverage/lcov-report/src/avatar/styles.ts.html +0 -268
- package/coverage/lcov-report/src/badge/Badge.tsx.html +0 -382
- package/coverage/lcov-report/src/badge/index.html +0 -116
- package/coverage/lcov-report/src/box/Box.tsx.html +0 -541
- package/coverage/lcov-report/src/box/index.html +0 -131
- package/coverage/lcov-report/src/box/styles.ts.html +0 -622
- package/coverage/lcov-report/src/button/AsyncButton.tsx.html +0 -1045
- package/coverage/lcov-report/src/button/Button.tsx.html +0 -688
- package/coverage/lcov-report/src/button/ButtonUnstyled.tsx.html +0 -211
- package/coverage/lcov-report/src/button/FloatingActionButton.tsx.html +0 -382
- package/coverage/lcov-report/src/button/TooltippedButton.tsx.html +0 -445
- package/coverage/lcov-report/src/button/buttonStyles.ts.html +0 -607
- package/coverage/lcov-report/src/button/buttonUnstyledStyles.ts.html +0 -142
- package/coverage/lcov-report/src/button/index.html +0 -116
- package/coverage/lcov-report/src/card/CardContent.tsx.html +0 -223
- package/coverage/lcov-report/src/card/CardFooter.tsx.html +0 -196
- package/coverage/lcov-report/src/card/CardHeader.tsx.html +0 -319
- package/coverage/lcov-report/src/card/CardTitle.tsx.html +0 -247
- package/coverage/lcov-report/src/card/ClickableCard.tsx.html +0 -400
- package/coverage/lcov-report/src/chip/Chip.tsx.html +0 -1102
- package/coverage/lcov-report/src/chip/index.html +0 -131
- package/coverage/lcov-report/src/chip/styles.ts.html +0 -457
- package/coverage/lcov-report/src/delegateEvent.ts.html +0 -619
- package/coverage/lcov-report/src/dialog/Dialog.tsx.html +0 -1309
- package/coverage/lcov-report/src/dialog/DialogContainer.tsx.html +0 -175
- package/coverage/lcov-report/src/dialog/DialogContent.tsx.html +0 -178
- package/coverage/lcov-report/src/dialog/DialogFooter.tsx.html +0 -169
- package/coverage/lcov-report/src/dialog/DialogHeader.tsx.html +0 -148
- package/coverage/lcov-report/src/dialog/DialogTitle.tsx.html +0 -256
- package/coverage/lcov-report/src/dialog/FixedDialog.tsx.html +0 -577
- package/coverage/lcov-report/src/dialog/NestedDialogProvider.ts.html +0 -127
- package/coverage/lcov-report/src/dialog/index.html +0 -236
- package/coverage/lcov-report/src/dialog/styles.ts.html +0 -439
- package/coverage/lcov-report/src/divider/Divider.tsx.html +0 -274
- package/coverage/lcov-report/src/divider/VerticalDivider.tsx.html +0 -235
- package/coverage/lcov-report/src/divider/index.html +0 -116
- package/coverage/lcov-report/src/divider/styles.ts.html +0 -232
- package/coverage/lcov-report/src/divider/useVerticalDividerHeight.ts.html +0 -301
- package/coverage/lcov-report/src/draggable/index.html +0 -131
- package/coverage/lcov-report/src/draggable/useControlledDraggable.ts.html +0 -2137
- package/coverage/lcov-report/src/draggable/useDraggable.ts.html +0 -2398
- package/coverage/lcov-report/src/draggable/useDraggableOrig.ts.html +0 -316
- package/coverage/lcov-report/src/draggable/useLocalStorageDraggable.ts.html +0 -370
- package/coverage/lcov-report/src/draggable/utils.ts.html +0 -808
- package/coverage/lcov-report/src/expansion-panel/ExpansionList.tsx.html +0 -211
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanel.tsx.html +0 -943
- package/coverage/lcov-report/src/expansion-panel/ExpansionPanelHeader.tsx.html +0 -649
- package/coverage/lcov-report/src/expansion-panel/index.html +0 -176
- package/coverage/lcov-report/src/expansion-panel/useExpansionList.ts.html +0 -322
- package/coverage/lcov-report/src/expansion-panel/useExpansionPanels.ts.html +0 -928
- package/coverage/lcov-report/src/focus/index.html +0 -131
- package/coverage/lcov-report/src/focus/useFocusContainer.ts.html +0 -883
- package/coverage/lcov-report/src/focus/utils.ts.html +0 -544
- package/coverage/lcov-report/src/form/AutoComplete.tsx.html +0 -283
- package/coverage/lcov-report/src/form/Checkbox.tsx.html +0 -160
- package/coverage/lcov-report/src/form/Fieldset.tsx.html +0 -355
- package/coverage/lcov-report/src/form/FileInput.tsx.html +0 -739
- package/coverage/lcov-report/src/form/Form.tsx.html +0 -238
- package/coverage/lcov-report/src/form/FormMessage.tsx.html +0 -322
- package/coverage/lcov-report/src/form/FormMessageContainer.tsx.html +0 -223
- package/coverage/lcov-report/src/form/FormMessageCounter.tsx.html +0 -262
- package/coverage/lcov-report/src/form/FormThemeProvider.tsx.html +0 -313
- package/coverage/lcov-report/src/form/InputToggle.tsx.html +0 -1108
- package/coverage/lcov-report/src/form/InputToggleIcon.tsx.html +0 -478
- package/coverage/lcov-report/src/form/Label.tsx.html +0 -439
- package/coverage/lcov-report/src/form/Legend.tsx.html +0 -199
- package/coverage/lcov-report/src/form/MenuItemCheckbox.tsx.html +0 -223
- package/coverage/lcov-report/src/form/MenuItemFileInput.tsx.html +0 -424
- package/coverage/lcov-report/src/form/MenuItemInputToggle.tsx.html +0 -925
- package/coverage/lcov-report/src/form/MenuItemRadio.tsx.html +0 -436
- package/coverage/lcov-report/src/form/MenuItemSwitch.tsx.html +0 -211
- package/coverage/lcov-report/src/form/MenuItemTextField.tsx.html +0 -289
- package/coverage/lcov-report/src/form/NativeSelect.tsx.html +0 -763
- package/coverage/lcov-report/src/form/OptGroup.tsx.html +0 -343
- package/coverage/lcov-report/src/form/Option.tsx.html +0 -709
- package/coverage/lcov-report/src/form/Password.tsx.html +0 -721
- package/coverage/lcov-report/src/form/Radio.tsx.html +0 -172
- package/coverage/lcov-report/src/form/ResizingTextArea.tsx.html +0 -988
- package/coverage/lcov-report/src/form/ResizingTextAreaWrapper.tsx.html +0 -310
- package/coverage/lcov-report/src/form/Select.tsx.html +0 -1411
- package/coverage/lcov-report/src/form/SelectValue.tsx.html +0 -202
- package/coverage/lcov-report/src/form/SimpleTextArea.tsx.html +0 -694
- package/coverage/lcov-report/src/form/Slider.tsx.html +0 -2008
- package/coverage/lcov-report/src/form/SliderContainer.tsx.html +0 -358
- package/coverage/lcov-report/src/form/SliderMark.tsx.html +0 -208
- package/coverage/lcov-report/src/form/SliderMarkLabel.tsx.html +0 -271
- package/coverage/lcov-report/src/form/SliderThumb.tsx.html +0 -1084
- package/coverage/lcov-report/src/form/SliderTrack.tsx.html +0 -454
- package/coverage/lcov-report/src/form/SliderValueMarks.tsx.html +0 -745
- package/coverage/lcov-report/src/form/SliderValueTooltip.tsx.html +0 -319
- package/coverage/lcov-report/src/form/Switch.tsx.html +0 -535
- package/coverage/lcov-report/src/form/SwitchTrack.tsx.html +0 -262
- package/coverage/lcov-report/src/form/TextArea.tsx.html +0 -1006
- package/coverage/lcov-report/src/form/TextArea2.tsx.html +0 -985
- package/coverage/lcov-report/src/form/TextAreaBackup.tsx.html +0 -985
- package/coverage/lcov-report/src/form/TextField.tsx.html +0 -829
- package/coverage/lcov-report/src/form/TextFieldAddon.tsx.html +0 -382
- package/coverage/lcov-report/src/form/TextFieldContainer.tsx.html +0 -364
- package/coverage/lcov-report/src/form/TextFieldContainerStyles.ts.html +0 -418
- package/coverage/lcov-report/src/form/fileUtils.ts.html +0 -2155
- package/coverage/lcov-report/src/form/formConfig.ts.html +0 -157
- package/coverage/lcov-report/src/form/formMessageStyles.ts.html +0 -238
- package/coverage/lcov-report/src/form/index.html +0 -176
- package/coverage/lcov-report/src/form/inputToggleStyles.ts.html +0 -316
- package/coverage/lcov-report/src/form/menuItemInputToggleStyles.ts.html +0 -319
- package/coverage/lcov-report/src/form/nativeSelectStyles.ts.html +0 -253
- package/coverage/lcov-report/src/form/optionStyles.ts.html +0 -151
- package/coverage/lcov-report/src/form/passwordStyles.ts.html +0 -235
- package/coverage/lcov-report/src/form/selectStyles.ts.html +0 -181
- package/coverage/lcov-report/src/form/selectUtils.ts.html +0 -430
- package/coverage/lcov-report/src/form/sliderUtils.ts.html +0 -790
- package/coverage/lcov-report/src/form/switchStyles.ts.html +0 -172
- package/coverage/lcov-report/src/form/textAreaStyles.ts.html +0 -385
- package/coverage/lcov-report/src/form/textFieldStyles.ts.html +0 -184
- package/coverage/lcov-report/src/form/useAutoComplete.ts.html +0 -787
- package/coverage/lcov-report/src/form/useCheckboxGroup.ts.html +0 -1087
- package/coverage/lcov-report/src/form/useCombobox.ts.html +0 -1540
- package/coverage/lcov-report/src/form/useComboboxBoth.ts.html +0 -85
- package/coverage/lcov-report/src/form/useComboboxDialog.ts.html +0 -85
- package/coverage/lcov-report/src/form/useComboboxList.ts.html +0 -403
- package/coverage/lcov-report/src/form/useComboboxOrig.ts.html +0 -781
- package/coverage/lcov-report/src/form/useEditableCombobox.ts.html +0 -502
- package/coverage/lcov-report/src/form/useFileUpload.ts.html +0 -1702
- package/coverage/lcov-report/src/form/useInlineAutoComplete.ts.html +0 -109
- package/coverage/lcov-report/src/form/useListboxProvider.ts.html +0 -214
- package/coverage/lcov-report/src/form/useNumberField.ts.html +0 -1561
- package/coverage/lcov-report/src/form/useRadioGroup.ts.html +0 -1021
- package/coverage/lcov-report/src/form/useRangeSlider.ts.html +0 -355
- package/coverage/lcov-report/src/form/useResizingTextArea.ts.html +0 -634
- package/coverage/lcov-report/src/form/useResizingTextArea.tsx.html +0 -523
- package/coverage/lcov-report/src/form/useSelectCombobox.ts.html +0 -295
- package/coverage/lcov-report/src/form/useSlider.ts.html +0 -421
- package/coverage/lcov-report/src/form/useTextField.ts.html +0 -2203
- package/coverage/lcov-report/src/form/utils.ts.html +0 -373
- package/coverage/lcov-report/src/form/validation.ts.html +0 -886
- package/coverage/lcov-report/src/hoverMode/index.html +0 -131
- package/coverage/lcov-report/src/hoverMode/useHoverMode.ts.html +0 -676
- package/coverage/lcov-report/src/hoverMode/useHoverModeProvider.ts.html +0 -1018
- package/coverage/lcov-report/src/icon/FontIcon.tsx.html +0 -256
- package/coverage/lcov-report/src/icon/IconProvider.tsx.html +0 -931
- package/coverage/lcov-report/src/icon/IconRotator.tsx.html +0 -322
- package/coverage/lcov-report/src/icon/MaterialIcon.tsx.html +0 -235
- package/coverage/lcov-report/src/icon/MaterialIconsProvider.ts.html +0 -154
- package/coverage/lcov-report/src/icon/MaterialSymbol.tsx.html +0 -421
- package/coverage/lcov-report/src/icon/MaterialSymbolsProvider.tsx.html +0 -757
- package/coverage/lcov-report/src/icon/SVGIcon.tsx.html +0 -445
- package/coverage/lcov-report/src/icon/TextIconSpacing.tsx.html +0 -679
- package/coverage/lcov-report/src/icon/iconConfig.tsx.html +0 -973
- package/coverage/lcov-report/src/icon/index.html +0 -116
- package/coverage/lcov-report/src/icon/material.ts.html +0 -15922
- package/coverage/lcov-report/src/icon/materialConfig.ts.html +0 -703
- package/coverage/lcov-report/src/icon/styles.ts.html +0 -586
- package/coverage/lcov-report/src/interaction/ElementInteractionProvider.tsx.html +0 -277
- package/coverage/lcov-report/src/interaction/LazyRippleContainer.tsx.html +0 -136
- package/coverage/lcov-report/src/interaction/Ripple.tsx.html +0 -283
- package/coverage/lcov-report/src/interaction/RippleContainer.tsx.html +0 -211
- package/coverage/lcov-report/src/interaction/UserInteractionModeProvider.tsx.html +0 -679
- package/coverage/lcov-report/src/interaction/config.ts.html +0 -181
- package/coverage/lcov-report/src/interaction/index.html +0 -206
- package/coverage/lcov-report/src/interaction/useElementInteraction.ts.html +0 -1474
- package/coverage/lcov-report/src/interaction/useElementInteraction.tsx.html +0 -1513
- package/coverage/lcov-report/src/interaction/useHigherContrastChildren.tsx.html +0 -355
- package/coverage/lcov-report/src/interaction/utils.ts.html +0 -496
- package/coverage/lcov-report/src/layout/DefaultLayoutNavigationItemRenderer.tsx.html +0 -169
- package/coverage/lcov-report/src/layout/DefaultLayoutNavigationMiniItemRenderer.tsx.html +0 -160
- package/coverage/lcov-report/src/layout/Layout.tsx.html +0 -235
- package/coverage/lcov-report/src/layout/LayoutAppBar.tsx.html +0 -364
- package/coverage/lcov-report/src/layout/LayoutAppBarTitle.tsx.html +0 -193
- package/coverage/lcov-report/src/layout/LayoutChildren.tsx.html +0 -718
- package/coverage/lcov-report/src/layout/LayoutMain.tsx.html +0 -580
- package/coverage/lcov-report/src/layout/LayoutNav.tsx.html +0 -688
- package/coverage/lcov-report/src/layout/LayoutNavToggle.tsx.html +0 -430
- package/coverage/lcov-report/src/layout/LayoutNavigation.tsx.html +0 -445
- package/coverage/lcov-report/src/layout/LayoutNavigationHeader.tsx.html +0 -274
- package/coverage/lcov-report/src/layout/LayoutProvider.tsx.html +0 -706
- package/coverage/lcov-report/src/layout/LayoutTree.tsx.html +0 -331
- package/coverage/lcov-report/src/layout/LayoutWindowSplitter.tsx.html +0 -472
- package/coverage/lcov-report/src/layout/Main.tsx.html +0 -364
- package/coverage/lcov-report/src/layout/MiniLayoutWrapper.tsx.html +0 -541
- package/coverage/lcov-report/src/layout/NavigationLink.tsx.html +0 -334
- package/coverage/lcov-report/src/layout/NavigationRail.tsx.html +0 -157
- package/coverage/lcov-report/src/layout/TemporaryLayout.tsx.html +0 -85
- package/coverage/lcov-report/src/layout/constants.ts.html +0 -169
- package/coverage/lcov-report/src/layout/index.html +0 -146
- package/coverage/lcov-report/src/layout/layoutNavStyles.ts.html +0 -166
- package/coverage/lcov-report/src/layout/layoutWindowSplitterStyles.ts.html +0 -220
- package/coverage/lcov-report/src/layout/mainStyles.ts.html +0 -217
- package/coverage/lcov-report/src/layout/navigationLinkStyles.ts.html +0 -250
- package/coverage/lcov-report/src/layout/navigationRailStyles.ts.html +0 -148
- package/coverage/lcov-report/src/layout/useExpandableLayout.ts.html +0 -742
- package/coverage/lcov-report/src/layout/useHorizontalLayoutTransition.ts.html +0 -349
- package/coverage/lcov-report/src/layout/useLayoutAppBarHeight.ts.html +0 -358
- package/coverage/lcov-report/src/layout/useLayoutNavigation.ts.html +0 -544
- package/coverage/lcov-report/src/layout/useLayoutTree.ts.html +0 -691
- package/coverage/lcov-report/src/layout/useLayoutWindowSplitter.ts.html +0 -496
- package/coverage/lcov-report/src/layout/useMainTabIndex.ts.html +0 -136
- package/coverage/lcov-report/src/layout/useResizableLayout.ts.html +0 -535
- package/coverage/lcov-report/src/layout/useTemporaryLayout.ts.html +0 -589
- package/coverage/lcov-report/src/layout/utils.ts.html +0 -391
- package/coverage/lcov-report/src/link/Link.tsx.html +0 -358
- package/coverage/lcov-report/src/link/LinkProvider.tsx.html +0 -238
- package/coverage/lcov-report/src/link/SkipToMainContent.tsx.html +0 -448
- package/coverage/lcov-report/src/link/index.html +0 -146
- package/coverage/lcov-report/src/link/styles.ts.html +0 -238
- package/coverage/lcov-report/src/list/List.tsx.html +0 -487
- package/coverage/lcov-report/src/list/ListItem.tsx.html +0 -892
- package/coverage/lcov-report/src/list/ListItemAddon.tsx.html +0 -286
- package/coverage/lcov-report/src/list/ListItemChildren.tsx.html +0 -445
- package/coverage/lcov-report/src/list/ListItemLink.tsx.html +0 -616
- package/coverage/lcov-report/src/list/ListItemText.tsx.html +0 -277
- package/coverage/lcov-report/src/list/ListSubheader.tsx.html +0 -319
- package/coverage/lcov-report/src/list/getListItemHeight.ts.html +0 -298
- package/coverage/lcov-report/src/list/index.html +0 -116
- package/coverage/lcov-report/src/list/listItemStyles.ts.html +0 -703
- package/coverage/lcov-report/src/main-layout/DefaultLayoutNavigationItemRenderer.tsx.html +0 -169
- package/coverage/lcov-report/src/main-layout/DefaultLayoutNavigationMiniItemRenderer.tsx.html +0 -160
- package/coverage/lcov-report/src/main-layout/Main.tsx.html +0 -298
- package/coverage/lcov-report/src/main-layout/MainLayout.tsx.html +0 -619
- package/coverage/lcov-report/src/main-layout/MainLayoutAppBar.tsx.html +0 -448
- package/coverage/lcov-report/src/main-layout/MainLayoutNavigationButton.tsx.html +0 -295
- package/coverage/lcov-report/src/main-layout/MainLayoutTitle.tsx.html +0 -184
- package/coverage/lcov-report/src/main-layout/MainNavWindowSplitter.tsx.html +0 -427
- package/coverage/lcov-report/src/main-layout/MainNavigation.tsx.html +0 -568
- package/coverage/lcov-report/src/main-layout/MainNavigationTree.tsx.html +0 -115
- package/coverage/lcov-report/src/main-layout/index.html +0 -296
- package/coverage/lcov-report/src/main-layout/useLayoutNavigation.ts.html +0 -727
- package/coverage/lcov-report/src/main-layout/useMainLayout.ts.html +0 -523
- package/coverage/lcov-report/src/main-layout/useMainLayoutProvider.ts.html +0 -484
- package/coverage/lcov-report/src/main-layout-current/DefaultLayoutNavigationItemRenderer.tsx.html +0 -169
- package/coverage/lcov-report/src/main-layout-current/DefaultLayoutNavigationMiniItemRenderer.tsx.html +0 -160
- package/coverage/lcov-report/src/main-layout-current/Main.tsx.html +0 -265
- package/coverage/lcov-report/src/main-layout-current/MainLayout.tsx.html +0 -739
- package/coverage/lcov-report/src/main-layout-current/MainLayoutAppBar.tsx.html +0 -352
- package/coverage/lcov-report/src/main-layout-current/MainLayoutProvider.ts.html +0 -991
- package/coverage/lcov-report/src/main-layout-current/MainLayoutTitle.tsx.html +0 -184
- package/coverage/lcov-report/src/main-layout-current/MainNavWindowSplitter.tsx.html +0 -520
- package/coverage/lcov-report/src/main-layout-current/MainNavigation.tsx.html +0 -586
- package/coverage/lcov-report/src/main-layout-current/NavigationButton.tsx.html +0 -283
- package/coverage/lcov-report/src/main-layout-current/index.html +0 -266
- package/coverage/lcov-report/src/main-layout-current/useLayoutNavigation.ts.html +0 -727
- package/coverage/lcov-report/src/media-queries/AppSizeProvider.tsx.html +0 -502
- package/coverage/lcov-report/src/media-queries/appSize.ts.html +0 -445
- package/coverage/lcov-report/src/media-queries/index.html +0 -146
- package/coverage/lcov-report/src/media-queries/useMediaQuery.ts.html +0 -244
- package/coverage/lcov-report/src/media-queries/useMinWidthMediaQuery.ts.html +0 -115
- package/coverage/lcov-report/src/menu/DropdownMenu.tsx.html +0 -976
- package/coverage/lcov-report/src/menu/Menu.tsx.html +0 -1870
- package/coverage/lcov-report/src/menu/MenuBar.tsx.html +0 -442
- package/coverage/lcov-report/src/menu/MenuButton.tsx.html +0 -490
- package/coverage/lcov-report/src/menu/MenuConfigurationProvider.tsx.html +0 -637
- package/coverage/lcov-report/src/menu/MenuItem.tsx.html +0 -292
- package/coverage/lcov-report/src/menu/MenuItemButton.tsx.html +0 -580
- package/coverage/lcov-report/src/menu/MenuItemCircularProgress.tsx.html +0 -433
- package/coverage/lcov-report/src/menu/MenuItemGroup.tsx.html +0 -376
- package/coverage/lcov-report/src/menu/MenuItemSeparator.tsx.html +0 -226
- package/coverage/lcov-report/src/menu/MenuSheet.tsx.html +0 -502
- package/coverage/lcov-report/src/menu/MenuVisibilityProvider.tsx.html +0 -370
- package/coverage/lcov-report/src/menu/MenuWidget.tsx.html +0 -631
- package/coverage/lcov-report/src/menu/MenuWidgetKeyboardProvider.tsx.html +0 -190
- package/coverage/lcov-report/src/menu/index.html +0 -116
- package/coverage/lcov-report/src/menu/useContextMenu.ts.html +0 -490
- package/coverage/lcov-report/src/menu/useMenuBarProvider.ts.html +0 -349
- package/coverage/lcov-report/src/menu/utils.ts.html +0 -271
- package/coverage/lcov-report/src/movement/constants.ts.html +0 -193
- package/coverage/lcov-report/src/movement/findMatchIndex.ts.html +0 -385
- package/coverage/lcov-report/src/movement/index.html +0 -116
- package/coverage/lcov-report/src/movement/useKeyboardMovementProvider.ts.html +0 -1687
- package/coverage/lcov-report/src/movement/utils.ts.html +0 -895
- package/coverage/lcov-report/src/navigation/CollapsibleNavGroup.tsx.html +0 -367
- package/coverage/lcov-report/src/navigation/DefaultNavigationRenderer.tsx.html +0 -325
- package/coverage/lcov-report/src/navigation/NavGroup.tsx.html +0 -202
- package/coverage/lcov-report/src/navigation/NavItem.tsx.html +0 -172
- package/coverage/lcov-report/src/navigation/NavSubheader.tsx.html +0 -193
- package/coverage/lcov-report/src/navigation/Navigation.tsx.html +0 -358
- package/coverage/lcov-report/src/navigation/index.html +0 -191
- package/coverage/lcov-report/src/overlay/Overlay.tsx.html +0 -556
- package/coverage/lcov-report/src/overlay/index.html +0 -131
- package/coverage/lcov-report/src/overlay/overlayStyles.ts.html +0 -340
- package/coverage/lcov-report/src/portal/Portal.tsx.html +0 -223
- package/coverage/lcov-report/src/portal/PortalContainerProvider.tsx.html +0 -367
- package/coverage/lcov-report/src/portal/index.html +0 -131
- package/coverage/lcov-report/src/positioning/constants.ts.html +0 -463
- package/coverage/lcov-report/src/positioning/getFixedPosition.ts.html +0 -610
- package/coverage/lcov-report/src/positioning/index.html +0 -191
- package/coverage/lcov-report/src/positioning/useFixedPositioning.ts.html +0 -1339
- package/coverage/lcov-report/src/positioning/utils.ts.html +0 -1225
- package/coverage/lcov-report/src/progress/CircularProgress.tsx.html +0 -799
- package/coverage/lcov-report/src/progress/LinearProgress.tsx.html +0 -658
- package/coverage/lcov-report/src/progress/getProgressA11y.ts.html +0 -160
- package/coverage/lcov-report/src/progress/index.html +0 -146
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemContainer.tsx.html +0 -628
- package/coverage/lcov-report/src/responsive-item/ResponsiveItemOverlay.tsx.html +0 -385
- package/coverage/lcov-report/src/responsive-item/index.html +0 -146
- package/coverage/lcov-report/src/responsive-item/styles.ts.html +0 -259
- package/coverage/lcov-report/src/scroll/ScrollLock.tsx.html +0 -133
- package/coverage/lcov-report/src/scroll/getScrollbarWidth.ts.html +0 -181
- package/coverage/lcov-report/src/scroll/index.html +0 -146
- package/coverage/lcov-report/src/scroll/useScrollLock.ts.html +0 -241
- package/coverage/lcov-report/src/segmented-button/SegmentedButton.tsx.html +0 -619
- package/coverage/lcov-report/src/segmented-button/SegmentedButtonContainer.tsx.html +0 -277
- package/coverage/lcov-report/src/segmented-button/index.html +0 -161
- package/coverage/lcov-report/src/segmented-button/segmentedButtonContainerStyles.ts.html +0 -160
- package/coverage/lcov-report/src/segmented-button/segmentedButtonStyles.ts.html +0 -205
- package/coverage/lcov-report/src/sheet/Sheet.tsx.html +0 -397
- package/coverage/lcov-report/src/sheet/index.html +0 -131
- package/coverage/lcov-report/src/sheet/styles.ts.html +0 -376
- package/coverage/lcov-report/src/snackbar/DefaultToastRenderer.tsx.html +0 -526
- package/coverage/lcov-report/src/snackbar/Snackbar.tsx.html +0 -628
- package/coverage/lcov-report/src/snackbar/Toast.tsx.html +0 -841
- package/coverage/lcov-report/src/snackbar/ToastActionButton.tsx.html +0 -298
- package/coverage/lcov-report/src/snackbar/ToastCloseButton.tsx.html +0 -349
- package/coverage/lcov-report/src/snackbar/ToastContent.tsx.html +0 -364
- package/coverage/lcov-report/src/snackbar/ToastManager.tsx.html +0 -1786
- package/coverage/lcov-report/src/snackbar/ToastManagerProvider.tsx.html +0 -400
- package/coverage/lcov-report/src/snackbar/index.html +0 -281
- package/coverage/lcov-report/src/snackbar/snackbarStyles.ts.html +0 -214
- package/coverage/lcov-report/src/snackbar/toastContentStyles.ts.html +0 -196
- package/coverage/lcov-report/src/snackbar/toastStyles.ts.html +0 -268
- package/coverage/lcov-report/src/snackbar/useCurrentToastActions.ts.html +0 -226
- package/coverage/lcov-report/src/snackbar/useDefaultToastRenderer.ts.html +0 -85
- package/coverage/lcov-report/src/snackbar/useDefaultToastRenderer.tsx.html +0 -394
- package/coverage/lcov-report/src/snackbar/useRemoveToast.ts.html +0 -169
- package/coverage/lcov-report/src/snackbar/useToast.ts.html +0 -184
- package/coverage/lcov-report/src/snackbar/useToastRenderer.ts.html +0 -85
- package/coverage/lcov-report/src/suspense/CircularProgressSuspense.tsx.html +0 -283
- package/coverage/lcov-report/src/suspense/NullSsrSuspense.tsx.html +0 -151
- package/coverage/lcov-report/src/suspense/NullSuspense.tsx.html +0 -202
- package/coverage/lcov-report/src/suspense/index.html +0 -131
- package/coverage/lcov-report/src/table/Table.tsx.html +0 -457
- package/coverage/lcov-report/src/table/TableBody.tsx.html +0 -280
- package/coverage/lcov-report/src/table/TableCell.tsx.html +0 -982
- package/coverage/lcov-report/src/table/TableCellContent.tsx.html +0 -436
- package/coverage/lcov-report/src/table/TableCheckbox.tsx.html +0 -715
- package/coverage/lcov-report/src/table/TableConfigurationProvider.tsx.html +0 -484
- package/coverage/lcov-report/src/table/TableContainer.tsx.html +0 -220
- package/coverage/lcov-report/src/table/TableContainerProvider.tsx.html +0 -193
- package/coverage/lcov-report/src/table/TableFooter.tsx.html +0 -538
- package/coverage/lcov-report/src/table/TableHeader.tsx.html +0 -565
- package/coverage/lcov-report/src/table/TableRadio.tsx.html +0 -676
- package/coverage/lcov-report/src/table/TableRow.tsx.html +0 -289
- package/coverage/lcov-report/src/table/index.html +0 -371
- package/coverage/lcov-report/src/table/tableCellStyles.ts.html +0 -334
- package/coverage/lcov-report/src/table/tableContainerStyles.ts.html +0 -142
- package/coverage/lcov-report/src/table/tableFooterStyles.ts.html +0 -166
- package/coverage/lcov-report/src/table/tableHeaderStyles.ts.html +0 -172
- package/coverage/lcov-report/src/table/tableRowStyles.ts.html +0 -169
- package/coverage/lcov-report/src/table/tableStyles.ts.html +0 -157
- package/coverage/lcov-report/src/tabs/Tab.tsx.html +0 -622
- package/coverage/lcov-report/src/tabs/TabList.tsx.html +0 -796
- package/coverage/lcov-report/src/tabs/TabListScrollButton.tsx.html +0 -490
- package/coverage/lcov-report/src/tabs/index.html +0 -251
- package/coverage/lcov-report/src/tabs/tabIndicatorStyles.ts.html +0 -187
- package/coverage/lcov-report/src/tabs/tabListScrollButtonStyles.ts.html +0 -226
- package/coverage/lcov-report/src/tabs/tabListStyles.ts.html +0 -241
- package/coverage/lcov-report/src/tabs/tabStyles.ts.html +0 -265
- package/coverage/lcov-report/src/tabs/useTabList.ts.html +0 -736
- package/coverage/lcov-report/src/tabs/useTabs.ts.html +0 -1567
- package/coverage/lcov-report/src/tabs/useTabsOriginal.ts.html +0 -760
- package/coverage/lcov-report/src/tabs/utils.ts.html +0 -337
- package/coverage/lcov-report/src/test-utils/IntersectionObserver.ts.html +0 -235
- package/coverage/lcov-report/src/test-utils/ResizeObserver.ts.html +0 -1045
- package/coverage/lcov-report/src/test-utils/data-testid.ts.html +0 -112
- package/coverage/lcov-report/src/test-utils/drag.ts.html +0 -337
- package/coverage/lcov-report/src/test-utils/index.html +0 -116
- package/coverage/lcov-report/src/test-utils/jest-setup.ts.html +0 -124
- package/coverage/lcov-report/src/test-utils/matchMedia.ts.html +0 -679
- package/coverage/lcov-report/src/test-utils/polyfills/IntersectionObserver.ts.html +0 -109
- package/coverage/lcov-report/src/test-utils/polyfills/ResizeObserver.ts.html +0 -100
- package/coverage/lcov-report/src/test-utils/polyfills/TextDecoder.ts.html +0 -106
- package/coverage/lcov-report/src/test-utils/polyfills/TextEncoder.ts.html +0 -100
- package/coverage/lcov-report/src/test-utils/polyfills/index.html +0 -176
- package/coverage/lcov-report/src/test-utils/polyfills/matchMedia.ts.html +0 -109
- package/coverage/lcov-report/src/test-utils/polyfills/offsetParent.ts.html +0 -202
- package/coverage/lcov-report/src/test-utils/polyfills/scrollIntoView.ts.html +0 -112
- package/coverage/lcov-report/src/test-utils/render.tsx.html +0 -220
- package/coverage/lcov-report/src/test-utils/root-html-environment.ts.html +0 -85
- package/coverage/lcov-report/src/test-utils/timers.ts.html +0 -223
- package/coverage/lcov-report/src/test-utils/utils.ts.html +0 -118
- package/coverage/lcov-report/src/theme/ColorSchemeProvider.tsx.html +0 -811
- package/coverage/lcov-report/src/theme/LocalStorageColorSchemeProvider.tsx.html +0 -475
- package/coverage/lcov-report/src/theme/ThemeProvider.tsx.html +0 -1510
- package/coverage/lcov-report/src/theme/colors.ts.html +0 -910
- package/coverage/lcov-report/src/theme/cssVars.ts.html +0 -130
- package/coverage/lcov-report/src/theme/index.html +0 -251
- package/coverage/lcov-report/src/theme/useCSSVariables.ts.html +0 -622
- package/coverage/lcov-report/src/theme/useColorScheme.ts.html +0 -490
- package/coverage/lcov-report/src/theme/useColorSchemeMetaTag.ts.html +0 -244
- package/coverage/lcov-report/src/theme/useColorSchemeProvider.ts.html +0 -433
- package/coverage/lcov-report/src/theme/usePrefersColorScheme.ts.html +0 -121
- package/coverage/lcov-report/src/theme/utils.ts.html +0 -670
- package/coverage/lcov-report/src/tooltip/Tooltip.tsx.html +0 -559
- package/coverage/lcov-report/src/tooltip/TooltipHoverModeProvider.tsx.html +0 -409
- package/coverage/lcov-report/src/tooltip/constants.ts.html +0 -208
- package/coverage/lcov-report/src/tooltip/index.html +0 -206
- package/coverage/lcov-report/src/tooltip/tooltipStyles.ts.html +0 -181
- package/coverage/lcov-report/src/tooltip/useOverflowTooltip.ts.html +0 -364
- package/coverage/lcov-report/src/tooltip/useTooltip.ts.html +0 -2095
- package/coverage/lcov-report/src/tooltip/useTooltipPosition.ts.html +0 -388
- package/coverage/lcov-report/src/tooltip/utils.ts.html +0 -238
- package/coverage/lcov-report/src/transition/CSSTransition.tsx.html +0 -358
- package/coverage/lcov-report/src/transition/Collapse.tsx.html +0 -337
- package/coverage/lcov-report/src/transition/CrossFade.tsx.html +0 -436
- package/coverage/lcov-report/src/transition/ScaleTransition.tsx.html +0 -328
- package/coverage/lcov-report/src/transition/SkeletonPlaceholder.tsx.html +0 -613
- package/coverage/lcov-report/src/transition/Slide.tsx.html +0 -367
- package/coverage/lcov-report/src/transition/SlideContainer.tsx.html +0 -649
- package/coverage/lcov-report/src/transition/collapseStyles.ts.html +0 -184
- package/coverage/lcov-report/src/transition/config.ts.html +0 -187
- package/coverage/lcov-report/src/transition/constants.ts.html +0 -103
- package/coverage/lcov-report/src/transition/maxWidthTransition.ts.html +0 -157
- package/coverage/lcov-report/src/transition/skeletonPlaceholderUtils.ts.html +0 -400
- package/coverage/lcov-report/src/transition/useCarousel.ts.html +0 -835
- package/coverage/lcov-report/src/transition/useCollapseTransition.ts.html +0 -1384
- package/coverage/lcov-report/src/transition/useCrossFadeTransition.ts.html +0 -469
- package/coverage/lcov-report/src/transition/useMaxWidthTransition.ts.html +0 -205
- package/coverage/lcov-report/src/transition/useScaleTransition.ts.html +0 -535
- package/coverage/lcov-report/src/transition/useSkeletonPlaceholder.ts.html +0 -958
- package/coverage/lcov-report/src/transition/useSlideTransition.ts.html +0 -424
- package/coverage/lcov-report/src/transition/useTransition.ts.html +0 -943
- package/coverage/lcov-report/src/transition/utils.ts.html +0 -529
- package/coverage/lcov-report/src/tree/DefaultTreeItemRenderer.tsx.html +0 -313
- package/coverage/lcov-report/src/tree/Tree.tsx.html +0 -1054
- package/coverage/lcov-report/src/tree/TreeGroup.tsx.html +0 -367
- package/coverage/lcov-report/src/tree/TreeItem.tsx.html +0 -1006
- package/coverage/lcov-report/src/tree/TreeItemExpander.tsx.html +0 -355
- package/coverage/lcov-report/src/tree/TreeProvider.tsx.html +0 -679
- package/coverage/lcov-report/src/tree/index.html +0 -116
- package/coverage/lcov-report/src/tree/styles.ts.html +0 -538
- package/coverage/lcov-report/src/tree/useTree.ts.html +0 -289
- package/coverage/lcov-report/src/tree/useTreeExpansion.ts.html +0 -241
- package/coverage/lcov-report/src/tree/useTreeItems.ts.html +0 -496
- package/coverage/lcov-report/src/tree/useTreeMovement.ts.html +0 -700
- package/coverage/lcov-report/src/tree/useTreeSelection.ts.html +0 -274
- package/coverage/lcov-report/src/tree/utils.ts.html +0 -277
- package/coverage/lcov-report/src/typography/SrOnly.tsx.html +0 -328
- package/coverage/lcov-report/src/typography/TextContainer.tsx.html +0 -403
- package/coverage/lcov-report/src/typography/Typography.tsx.html +0 -1027
- package/coverage/lcov-report/src/typography/WritingDirection.tsx.html +0 -775
- package/coverage/lcov-report/src/typography/WritingDirectionProvider.tsx.html +0 -781
- package/coverage/lcov-report/src/typography/index.html +0 -161
- package/coverage/lcov-report/src/useAsyncAction.ts.html +0 -685
- package/coverage/lcov-report/src/useDebounced.ts.html +0 -190
- package/coverage/lcov-report/src/useDebouncedFunction.ts.html +0 -436
- package/coverage/lcov-report/src/useDropzone.ts.html +0 -766
- package/coverage/lcov-report/src/useElementSize.ts.html +0 -409
- package/coverage/lcov-report/src/useEnsuredId.ts.html +0 -175
- package/coverage/lcov-report/src/useEnsuredRef.ts.html +0 -253
- package/coverage/lcov-report/src/useEnsuredState.ts.html +0 -235
- package/coverage/lcov-report/src/useHtmlClassName.ts.html +0 -142
- package/coverage/lcov-report/src/useIntersectionObserver.ts.html +0 -1075
- package/coverage/lcov-report/src/useIsomorphicLayoutEffect.ts.html +0 -130
- package/coverage/lcov-report/src/useLocalStorage.ts.html +0 -1852
- package/coverage/lcov-report/src/useLocalStorageEvents.ts.html +0 -85
- package/coverage/lcov-report/src/useMediaQuery.ts.html +0 -241
- package/coverage/lcov-report/src/useMinWidthMediaQuery.ts.html +0 -115
- package/coverage/lcov-report/src/useMutationObserver.ts.html +0 -310
- package/coverage/lcov-report/src/useOrientation.ts.html +0 -271
- package/coverage/lcov-report/src/usePageInactive.ts.html +0 -448
- package/coverage/lcov-report/src/useResizeListener.ts.html +0 -391
- package/coverage/lcov-report/src/useResizeObserver.ts.html +0 -790
- package/coverage/lcov-report/src/useThrottledFunction.ts.html +0 -484
- package/coverage/lcov-report/src/useToggle.ts.html +0 -253
- package/coverage/lcov-report/src/useUnmounted.ts.html +0 -217
- package/coverage/lcov-report/src/useWindowSize.ts.html +0 -460
- package/coverage/lcov-report/src/utils/RecursiveRender.tsx.html +0 -253
- package/coverage/lcov-report/src/utils/RenderRecursively.tsx.html +0 -790
- package/coverage/lcov-report/src/utils/alphaNumericSort.ts.html +0 -535
- package/coverage/lcov-report/src/utils/applyRef.ts.html +0 -214
- package/coverage/lcov-report/src/utils/bem.ts.html +0 -412
- package/coverage/lcov-report/src/utils/filters.ts.html +0 -1318
- package/coverage/lcov-report/src/utils/getClientPosition.ts.html +0 -226
- package/coverage/lcov-report/src/utils/getMiddleOfRange.ts.html +0 -163
- package/coverage/lcov-report/src/utils/getPercentage.ts.html +0 -253
- package/coverage/lcov-report/src/utils/getRangeDefaultValue.ts.html +0 -169
- package/coverage/lcov-report/src/utils/getRangeSteps.ts.html +0 -157
- package/coverage/lcov-report/src/utils/getUseStateSetterValue.ts.html +0 -85
- package/coverage/lcov-report/src/utils/identity.ts.html +0 -100
- package/coverage/lcov-report/src/utils/index.html +0 -116
- package/coverage/lcov-report/src/utils/isElementVisible.ts.html +0 -214
- package/coverage/lcov-report/src/utils/isValidNumber.ts.html +0 -118
- package/coverage/lcov-report/src/utils/loop.ts.html +0 -262
- package/coverage/lcov-report/src/utils/nearest.ts.html +0 -220
- package/coverage/lcov-report/src/utils/parseCssLengthUnit.ts.html +0 -280
- package/coverage/lcov-report/src/utils/randomInt.ts.html +0 -148
- package/coverage/lcov-report/src/utils/wait.ts.html +0 -139
- package/coverage/lcov-report/src/utils/withinRange.ts.html +0 -184
- package/coverage/lcov-report/src/window-splitter/WindowSplitter.tsx.html +0 -445
- package/coverage/lcov-report/src/window-splitter/index.html +0 -131
- package/coverage/lcov-report/src/window-splitter/useControlledWindowSplitter.ts.html +0 -562
- package/coverage/lcov-report/src/window-splitter/useLocalStorageWindowSplitter.ts.html +0 -331
- package/coverage/lcov-report/src/window-splitter/useWindowSplitter.ts.html +0 -508
- package/coverage/lcov-report/src/window-splitter/useWindowSplitterDefault.ts.html +0 -466
- package/coverage/lcov-report/src/window-splitter/useWindowSplitterMaxValue.ts.html +0 -256
- package/coverage/lcov-report/styles.ts.html +0 -457
- package/coverage/lcov-report/suspense/CircularProgressSuspense.tsx.html +0 -283
- package/coverage/lcov-report/suspense/NullSuspense.tsx.html +0 -202
- package/coverage/lcov-report/suspense/index.html +0 -131
- package/coverage/lcov-report/switchStyles.ts.html +0 -172
- package/coverage/lcov-report/tabIndicatorStyles.ts.html +0 -187
- package/coverage/lcov-report/tabListScrollButtonStyles.ts.html +0 -226
- package/coverage/lcov-report/tabListStyles.ts.html +0 -241
- package/coverage/lcov-report/tabStyles.ts.html +0 -265
- package/coverage/lcov-report/table/Table.tsx.html +0 -526
- package/coverage/lcov-report/table/TableBody.tsx.html +0 -280
- package/coverage/lcov-report/table/TableCell.tsx.html +0 -1180
- package/coverage/lcov-report/table/TableCheckbox.tsx.html +0 -709
- package/coverage/lcov-report/table/TableFooter.tsx.html +0 -508
- package/coverage/lcov-report/table/TableHeader.tsx.html +0 -607
- package/coverage/lcov-report/table/TableRadio.tsx.html +0 -670
- package/coverage/lcov-report/table/TableRow.tsx.html +0 -370
- package/coverage/lcov-report/table/index.html +0 -191
- package/coverage/lcov-report/tableCellStyles.ts.html +0 -334
- package/coverage/lcov-report/tableContainerStyles.ts.html +0 -142
- package/coverage/lcov-report/tableFooterStyles.ts.html +0 -157
- package/coverage/lcov-report/tableHeaderStyles.ts.html +0 -163
- package/coverage/lcov-report/tableRowStyles.ts.html +0 -169
- package/coverage/lcov-report/tableStyles.ts.html +0 -157
- package/coverage/lcov-report/tabs/Tab.tsx.html +0 -592
- package/coverage/lcov-report/tabs/TabList.tsx.html +0 -796
- package/coverage/lcov-report/tabs/TabListScrollButton.tsx.html +0 -472
- package/coverage/lcov-report/tabs/index.html +0 -206
- package/coverage/lcov-report/tabs/tabIndicatorStyles.ts.html +0 -187
- package/coverage/lcov-report/tabs/tabListStyles.ts.html +0 -241
- package/coverage/lcov-report/tabs/tabStyles.ts.html +0 -253
- package/coverage/lcov-report/tabs/useTabList.ts.html +0 -736
- package/coverage/lcov-report/tabs/useTabs.ts.html +0 -1567
- package/coverage/lcov-report/tabs/utils.ts.html +0 -337
- package/coverage/lcov-report/test-utils/index.html +0 -116
- package/coverage/lcov-report/test-utils/jest-setup.ts.html +0 -124
- package/coverage/lcov-report/test-utils/matchMedia.ts.html +0 -667
- package/coverage/lcov-report/test-utils/polyfills/index.html +0 -116
- package/coverage/lcov-report/test-utils/polyfills/matchMedia.ts.html +0 -109
- package/coverage/lcov-report/test-utils/polyfills/offsetParent.ts.html +0 -202
- package/coverage/lcov-report/test-utils/use.ts.html +0 -187
- package/coverage/lcov-report/theme/ColorSchemeProvider.tsx.html +0 -811
- package/coverage/lcov-report/theme/LocalStorageColorSchemeProvider.tsx.html +0 -268
- package/coverage/lcov-report/theme/ThemeProvider.tsx.html +0 -1453
- package/coverage/lcov-report/theme/cssVars.ts.html +0 -130
- package/coverage/lcov-report/theme/index.html +0 -191
- package/coverage/lcov-report/theme/useColorScheme.ts.html +0 -475
- package/coverage/lcov-report/theme/useColorSchemeMetaTag.ts.html +0 -175
- package/coverage/lcov-report/theme/useColorSchemeProvider.ts.html +0 -244
- package/coverage/lcov-report/theme/usePrefersColorScheme.ts.html +0 -103
- package/coverage/lcov-report/tooltip/Tooltip.tsx.html +0 -559
- package/coverage/lcov-report/tooltip/TooltipHoverModeProvider.tsx.html +0 -409
- package/coverage/lcov-report/tooltip/constants.ts.html +0 -208
- package/coverage/lcov-report/tooltip/index.html +0 -116
- package/coverage/lcov-report/tooltip/tooltipStyles.ts.html +0 -181
- package/coverage/lcov-report/tooltip/useOverflowTooltip.ts.html +0 -364
- package/coverage/lcov-report/tooltip/useTooltip.ts.html +0 -2095
- package/coverage/lcov-report/tooltipStyles.ts.html +0 -181
- package/coverage/lcov-report/transition/SkeletonPlaceholder.tsx.html +0 -595
- package/coverage/lcov-report/transition/config.ts.html +0 -187
- package/coverage/lcov-report/transition/maxWidthTransition.ts.html +0 -157
- package/coverage/lcov-report/transition/skeletonPlaceholderUtils.ts.html +0 -400
- package/coverage/lcov-report/transition/useMaxWidthTransition.ts.html +0 -199
- package/coverage/lcov-report/transition/useScaleTransition.ts.html +0 -535
- package/coverage/lcov-report/transition/useSkeletonPlaceholder.ts.html +0 -952
- package/coverage/lcov-report/transition/useTransition.ts.html +0 -943
- package/coverage/lcov-report/tree/DefaultTreeItemRenderer.tsx.html +0 -301
- package/coverage/lcov-report/tree/Tree.tsx.html +0 -1054
- package/coverage/lcov-report/tree/TreeGroup.tsx.html +0 -370
- package/coverage/lcov-report/tree/TreeItem.tsx.html +0 -1006
- package/coverage/lcov-report/tree/TreeItemExpander.tsx.html +0 -328
- package/coverage/lcov-report/tree/TreeProvider.tsx.html +0 -679
- package/coverage/lcov-report/tree/index.html +0 -116
- package/coverage/lcov-report/tree/styles.ts.html +0 -538
- package/coverage/lcov-report/tree/useTree.ts.html +0 -289
- package/coverage/lcov-report/tree/useTreeExpansion.ts.html +0 -241
- package/coverage/lcov-report/tree/useTreeItems.ts.html +0 -496
- package/coverage/lcov-report/tree/useTreeMovement.ts.html +0 -700
- package/coverage/lcov-report/tree/useTreeSelection.ts.html +0 -274
- package/coverage/lcov-report/tree/utils.ts.html +0 -277
- package/coverage/lcov-report/typography/TextContainer.tsx.html +0 -433
- package/coverage/lcov-report/typography/Typography.tsx.html +0 -1027
- package/coverage/lcov-report/typography/WritingDirection.tsx.html +0 -775
- package/coverage/lcov-report/typography/WritingDirectionProvider.tsx.html +0 -781
- package/coverage/lcov-report/useAutoComplete.ts.html +0 -787
- package/coverage/lcov-report/useCollapseTransition.ts.html +0 -1384
- package/coverage/lcov-report/useCombobox.ts.html +0 -1513
- package/coverage/lcov-report/useDraggable.ts.html +0 -2458
- package/coverage/lcov-report/useDropzone.ts.html +0 -763
- package/coverage/lcov-report/useEnsuredRef.ts.html +0 -250
- package/coverage/lcov-report/useExpandableLayout.ts.html +0 -802
- package/coverage/lcov-report/useExpansionPanels.ts.html +0 -913
- package/coverage/lcov-report/useHigherContrastChildren.tsx.html +0 -355
- package/coverage/lcov-report/useInlineAutoComplete.ts.html +0 -379
- package/coverage/lcov-report/useLayoutTree.ts.html +0 -691
- package/coverage/lcov-report/useLocalStorage.ts.html +0 -1828
- package/coverage/lcov-report/useMinWidthMediaQuery.ts.html +0 -115
- package/coverage/lcov-report/useMutationObserver.ts.html +0 -310
- package/coverage/lcov-report/useRemoveToast.ts.html +0 -160
- package/coverage/lcov-report/useResizeObserver.ts.html +0 -874
- package/coverage/lcov-report/useResizingTextArea.ts.html +0 -523
- package/coverage/lcov-report/useSelectCombobox.ts.html +0 -295
- package/coverage/lcov-report/useSkeletonPlaceholder.ts.html +0 -952
- package/coverage/lcov-report/useTabList.ts.html +0 -736
- package/coverage/lcov-report/useTabs.ts.html +0 -757
- package/coverage/lcov-report/useThrottledFunction.ts.html +0 -475
- package/coverage/lcov-report/useTooltip.ts.html +0 -2041
- package/coverage/lcov-report/useTransition.ts.html +0 -934
- package/coverage/lcov-report/useTree.ts.html +0 -286
- package/coverage/lcov-report/useWindowSplitter.ts.html +0 -640
- package/coverage/lcov-report/useWindowSplitterMaxValue.ts.html +0 -256
- package/coverage/lcov-report/utils/RecursiveRender.tsx.html +0 -253
- package/coverage/lcov-report/utils/RenderRecursively.tsx.html +0 -688
- package/coverage/lcov-report/utils/alphaNumericSort.ts.html +0 -496
- package/coverage/lcov-report/utils/caseInsensitiveFilter.ts.html +0 -397
- package/coverage/lcov-report/utils/filters.ts.html +0 -1318
- package/coverage/lcov-report/utils/fuzzyFilter.ts.html +0 -241
- package/coverage/lcov-report/utils/index.html +0 -116
- package/coverage/lcov-report/utils/isElementVisible.ts.html +0 -211
- package/coverage/lcov-report/utils/parseCssLengthUnit.ts.html +0 -280
- package/coverage/lcov-report/utils/randomInt.ts.html +0 -148
- package/coverage/lcov-report/utils/searching.ts.html +0 -85
- package/coverage/lcov-report/utils/wait.ts.html +0 -139
- package/coverage/lcov-report/wait.ts.html +0 -139
- package/coverage/lcov-report/window-splitter/WindowSplitter.tsx.html +0 -448
- package/coverage/lcov-report/window-splitter/index.html +0 -116
- package/coverage/lcov-report/window-splitter/useControlledWindowSplitter.ts.html +0 -562
- package/coverage/lcov-report/window-splitter/useLocalStorageWindowSplitter.ts.html +0 -331
- package/coverage/lcov-report/window-splitter/useWindowSplitter.ts.html +0 -640
- package/coverage/lcov-report/window-splitter/useWindowSplitterDefault.ts.html +0 -466
- package/coverage/lcov-report/window-splitter/useWindowSplitterOrig.ts.html +0 -598
- package/dist/useAsyncAction.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useRadioGroup.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useRef,\n useState,\n type ChangeEventHandler,\n type FormEventHandler,\n} from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/** @since 6.0.0 */\nexport interface RadioGroupOptions<T extends string | number> {\n /**\n * A `name` to apply to all the radios within the group. This is required if\n * unless {@link menu} is set to `true`.\n */\n name?: string;\n\n /**\n * Set this to `true` if using the `MenuItemRadio` component instead of the\n * `Radio` so the correct props can be provided.\n *\n * @defaultValue `false`\n */\n menu?: boolean;\n\n /**\n * The value of a radio that should be checked by default. If you want to\n * force the user to select one of the radios, keep this as the empty string\n * or set it to a string or number that does not represent a valid radio\n * value.\n *\n * @defaultValue `\"\"`\n */\n defaultValue?: UseStateInitializer<T>;\n\n /**\n * Set this to `true` if one of the radios within the group must be checked before\n * a form can be submitted.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `false`\n */\n required?: boolean;\n\n /**\n * If you need to prevent the default behavior in a radio group for some\n * reason, you can provide a custom `onChange` event handler and call\n * `event.stopPropagation()`. This will be called whenever a new radio button\n * is checked.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `() => {}`\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n\n /**\n * If the radio group has {@link required} set to `true`, the radios will gain\n * the `error` state if a form is submitted without a checked radio. If you\n * want to prevent that behavior for some reason, you can provide this\n * function and call `event.stopPropagation()`.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `() => {}`\n */\n onInvalid?: FormEventHandler<HTMLInputElement>;\n}\n\n/** @since 6.0.0 */\nexport interface ProvidedRadioGroupProps<V extends string | number> {\n name: string;\n value: V;\n checked: boolean;\n onChange: ChangeEventHandler<HTMLInputElement>;\n error: boolean;\n required: boolean;\n onInvalid: FormEventHandler<HTMLInputElement>;\n}\n\n/** @since 6.0.0 */\nexport type GetRadioGroupProps<V extends string | number> = (\n value: V\n) => Readonly<ProvidedRadioGroupProps<V>>;\n\n/** @since 6.0.0 */\nexport interface RadioGroupImplementation<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps: GetRadioGroupProps<V>;\n}\n\nexport type GetMenuItemRadioGroupProps<V extends string | number> = (\n value: V\n) => Readonly<{ checked: boolean; onCheckedChange(): void }>;\n\n/** @since 6.0.0 */\nexport interface MenuItemRadioGroupImplementation<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps: GetMenuItemRadioGroupProps<V>;\n}\n\n/** @since 6.0.0 */\nexport interface CombinedRadioGroupReturnValue<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps?(value: V): {\n name?: string;\n value?: V;\n checked: boolean;\n error?: boolean;\n required?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onCheckedChange?(): void;\n onInvalid?: FormEventHandler<HTMLInputElement>;\n };\n}\n\n// Note: These overrides are set up so that the value will default to any\n// string.\n\n/**\n * @example Generic Number Example\n * ```tsx\n * const { value, getRadioProps } = useRadioGroup<number>({\n * name: \"group\",\n * defaultValue: -1\n * });\n *\n *\n * return (\n * <>\n * <Radio {...getRadioProps(0)} label=\"First\" />\n * <Radio {...getRadioProps(1)} label=\"Second\" />\n * <Radio {...getRadioProps(2)} label=\"Third\" />\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends number>(\n options: RadioGroupOptions<V> & {\n menu?: false;\n name: string;\n defaultValue: UseStateInitializer<V>;\n }\n): RadioGroupImplementation<V>;\nexport function useRadioGroup<V extends number>(\n options: RadioGroupOptions<V> & {\n menu: true;\n name?: never;\n required?: never;\n onChange?: never;\n onInvalid?: never;\n defaultValue: UseStateInitializer<V>;\n }\n): MenuItemRadioGroupImplementation<V>;\n/**\n * @example Generic String Example\n * ```tsx\n * const { value, getRadioProps } = useRadioGroup({ name: \"group\" });\n *\n * return (\n * <>\n * <Radio {...getRadioProps(\"a\")} label=\"First\" />\n * <Radio {...getRadioProps(\"b\")} label=\"Second\" />\n * <Radio {...getRadioProps(\"c\")} label=\"Third\" />\n * </>\n * );\n * ```\n *\n * @example String Union Example\n * ```tsx\n * const values = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const;\n *\n * type Values = typeof values[number][\"value\"];\n * // ^ \"a\" | \"b\" | \"c\"\n *\n * const { value, getRadioProps } = useRadioGroup<Values | \"\">({\n * name: \"group\",\n * defaultValue: \"\",\n * });\n *\n *\n * return (\n * <>\n * {values.map(({ label, value }) => (\n * <Radio {...getRadioProps(value)} key={value} label={label} />\n * ))}\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends string>(\n options: RadioGroupOptions<V> & {\n menu?: false;\n name: string;\n defaultValue?: UseStateInitializer<V>;\n }\n): RadioGroupImplementation<V>;\nexport function useRadioGroup<V extends string>(\n options: RadioGroupOptions<V> & {\n menu: true;\n name?: never;\n required?: never;\n onChange?: never;\n onInvalid?: never;\n defaultValue?: UseStateInitializer<V>;\n }\n): MenuItemRadioGroupImplementation<V>;\n/**\n * @example Strict Union Example\n * ```tsx\n * type ValidValues = 1 | 2 | 3 | 4 | \"\" | \"a\" | \"b\";\n *\n * const { value, getRadioProps } = useRadioGroup<ValidValues>({\n * name: \"group\",\n * defaultValue: \"\"\n * });\n *\n *\n * return (\n * <>\n * <Radio {...getRadioProps(1)} label=\"First\" />\n * <Radio {...getRadioProps(2)} label=\"Second\" />\n * <Radio {...getRadioProps(3)} label=\"Third\" />\n * <Radio {...getRadioProps(4)} label=\"Forth\" />\n * <Radio {...getRadioProps(\"a\")} label=\"Fifth\" />\n * <Radio {...getRadioProps(\"b\")} label=\"Sixth\" />\n * <Radio {...getRadioProps(\"c\")} label=\"Seventh\" />\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends string | number>(\n options: RadioGroupOptions<V>\n): CombinedRadioGroupReturnValue<V> {\n const {\n name,\n defaultValue,\n menu = false,\n required,\n onChange = noop,\n onInvalid = noop,\n } = options;\n const [value, setValue] = useState<V>(() => {\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n return defaultValue ?? (\"\" as V);\n });\n const initial = useRef(value);\n const [error, setError] = useState(false);\n\n return {\n reset: useCallback(() => {\n setError(false);\n setValue(initial.current);\n }, []),\n value,\n setValue,\n getRadioProps(radioValue) {\n const checked = value === radioValue;\n if (menu) {\n return {\n checked,\n onCheckedChange() {\n setValue(radioValue);\n },\n };\n }\n\n return {\n name,\n value: radioValue,\n error,\n checked,\n required,\n onChange(event) {\n onChange(event);\n setError(false);\n setValue(radioValue);\n },\n onInvalid(event) {\n onInvalid(event);\n setError(true);\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useState","noop","useRadioGroup","options","name","defaultValue","menu","required","onChange","onInvalid","value","setValue","initial","error","setError","reset","current","getRadioProps","radioValue","checked","onCheckedChange","event"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/useRadioGroup.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useRef,\n useState,\n type ChangeEventHandler,\n type FormEventHandler,\n} from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/** @since 6.0.0 */\nexport interface RadioGroupOptions<T extends string | number> {\n /**\n * A `name` to apply to all the radios within the group. This is required if\n * unless {@link menu} is set to `true`.\n */\n name?: string;\n\n /**\n * Set this to `true` if using the `MenuItemRadio` component instead of the\n * `Radio` so the correct props can be provided.\n *\n * @defaultValue `false`\n */\n menu?: boolean;\n\n /**\n * The value of a radio that should be checked by default. If you want to\n * force the user to select one of the radios, keep this as the empty string\n * or set it to a string or number that does not represent a valid radio\n * value.\n *\n * @defaultValue `\"\"`\n */\n defaultValue?: UseStateInitializer<T>;\n\n /**\n * Set this to `true` if one of the radios within the group must be checked before\n * a form can be submitted.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `false`\n */\n required?: boolean;\n\n /**\n * If you need to prevent the default behavior in a radio group for some\n * reason, you can provide a custom `onChange` event handler and call\n * `event.stopPropagation()`. This will be called whenever a new radio button\n * is checked.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `() => {}`\n */\n onChange?: ChangeEventHandler<HTMLInputElement>;\n\n /**\n * If the radio group has {@link required} set to `true`, the radios will gain\n * the `error` state if a form is submitted without a checked radio. If you\n * want to prevent that behavior for some reason, you can provide this\n * function and call `event.stopPropagation()`.\n *\n * This option is invalid and will be ignored if {@link menu} is `true`.\n *\n * @defaultValue `() => {}`\n */\n onInvalid?: FormEventHandler<HTMLInputElement>;\n}\n\n/** @since 6.0.0 */\nexport interface ProvidedRadioGroupProps<V extends string | number> {\n name: string;\n value: V;\n checked: boolean;\n onChange: ChangeEventHandler<HTMLInputElement>;\n error: boolean;\n required: boolean;\n onInvalid: FormEventHandler<HTMLInputElement>;\n}\n\n/** @since 6.0.0 */\nexport type GetRadioGroupProps<V extends string | number> = (\n value: V\n) => Readonly<ProvidedRadioGroupProps<V>>;\n\n/** @since 6.0.0 */\nexport interface RadioGroupImplementation<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps: GetRadioGroupProps<V>;\n}\n\nexport type GetMenuItemRadioGroupProps<V extends string | number> = (\n value: V\n) => Readonly<{ checked: boolean; onCheckedChange(): void }>;\n\n/** @since 6.0.0 */\nexport interface MenuItemRadioGroupImplementation<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps: GetMenuItemRadioGroupProps<V>;\n}\n\n/** @since 6.0.0 */\nexport interface CombinedRadioGroupReturnValue<V extends string | number> {\n reset(): void;\n value: V;\n setValue: UseStateSetter<V>;\n getRadioProps?(value: V): {\n name?: string;\n value?: V;\n checked: boolean;\n error?: boolean;\n required?: boolean;\n onChange?: ChangeEventHandler<HTMLInputElement>;\n onCheckedChange?(): void;\n onInvalid?: FormEventHandler<HTMLInputElement>;\n };\n}\n\n// Note: These overrides are set up so that the value will default to any\n// string.\n\n/**\n * @example Generic Number Example\n * ```tsx\n * const { value, getRadioProps } = useRadioGroup<number>({\n * name: \"group\",\n * defaultValue: -1\n * });\n *\n *\n * return (\n * <>\n * <Radio {...getRadioProps(0)} label=\"First\" />\n * <Radio {...getRadioProps(1)} label=\"Second\" />\n * <Radio {...getRadioProps(2)} label=\"Third\" />\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends number>(\n options: RadioGroupOptions<V> & {\n menu?: false;\n name: string;\n defaultValue: UseStateInitializer<V>;\n }\n): RadioGroupImplementation<V>;\nexport function useRadioGroup<V extends number>(\n options: RadioGroupOptions<V> & {\n menu: true;\n name?: never;\n required?: never;\n onChange?: never;\n onInvalid?: never;\n defaultValue: UseStateInitializer<V>;\n }\n): MenuItemRadioGroupImplementation<V>;\n/**\n * @example Generic String Example\n * ```tsx\n * const { value, getRadioProps } = useRadioGroup({ name: \"group\" });\n *\n * return (\n * <>\n * <Radio {...getRadioProps(\"a\")} label=\"First\" />\n * <Radio {...getRadioProps(\"b\")} label=\"Second\" />\n * <Radio {...getRadioProps(\"c\")} label=\"Third\" />\n * </>\n * );\n * ```\n *\n * @example String Union Example\n * ```tsx\n * const values = [\n * { label: \"First\", value: \"a\" },\n * { label: \"Second\", value: \"b\" },\n * { label: \"Third\", value: \"c\" },\n * ] as const;\n *\n * type Values = typeof values[number][\"value\"];\n * // ^ \"a\" | \"b\" | \"c\"\n *\n * const { value, getRadioProps } = useRadioGroup<Values | \"\">({\n * name: \"group\",\n * defaultValue: \"\",\n * });\n *\n *\n * return (\n * <>\n * {values.map(({ label, value }) => (\n * <Radio {...getRadioProps(value)} key={value} label={label} />\n * ))}\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends string>(\n options: RadioGroupOptions<V> & {\n menu?: false;\n name: string;\n defaultValue?: UseStateInitializer<V>;\n }\n): RadioGroupImplementation<V>;\nexport function useRadioGroup<V extends string>(\n options: RadioGroupOptions<V> & {\n menu: true;\n name?: never;\n required?: never;\n onChange?: never;\n onInvalid?: never;\n defaultValue?: UseStateInitializer<V>;\n }\n): MenuItemRadioGroupImplementation<V>;\n/**\n * @example Strict Union Example\n * ```tsx\n * type ValidValues = 1 | 2 | 3 | 4 | \"\" | \"a\" | \"b\";\n *\n * const { value, getRadioProps } = useRadioGroup<ValidValues>({\n * name: \"group\",\n * defaultValue: \"\"\n * });\n *\n *\n * return (\n * <>\n * <Radio {...getRadioProps(1)} label=\"First\" />\n * <Radio {...getRadioProps(2)} label=\"Second\" />\n * <Radio {...getRadioProps(3)} label=\"Third\" />\n * <Radio {...getRadioProps(4)} label=\"Forth\" />\n * <Radio {...getRadioProps(\"a\")} label=\"Fifth\" />\n * <Radio {...getRadioProps(\"b\")} label=\"Sixth\" />\n * <Radio {...getRadioProps(\"c\")} label=\"Seventh\" />\n * </>\n * );\n * ```\n * @since 6.0.0\n */\nexport function useRadioGroup<V extends string | number>(\n options: RadioGroupOptions<V>\n): CombinedRadioGroupReturnValue<V> {\n const {\n name,\n defaultValue,\n menu = false,\n required,\n onChange = noop,\n onInvalid = noop,\n } = options;\n const [value, setValue] = useState<V>(() => {\n if (typeof defaultValue === \"function\") {\n return defaultValue();\n }\n\n return defaultValue ?? (\"\" as V);\n });\n const initial = useRef(value);\n const [error, setError] = useState(false);\n\n return {\n reset: useCallback(() => {\n setError(false);\n setValue(initial.current);\n }, []),\n value,\n setValue,\n getRadioProps(radioValue) {\n const checked = value === radioValue;\n if (menu) {\n return {\n checked,\n onCheckedChange() {\n setValue(radioValue);\n },\n };\n }\n\n return {\n name,\n value: radioValue,\n error,\n checked,\n required,\n onChange(event) {\n onChange(event);\n setError(false);\n setValue(radioValue);\n },\n onInvalid(event) {\n onInvalid(event);\n setError(true);\n },\n };\n },\n };\n}\n"],"names":["useCallback","useRef","useState","noop","useRadioGroup","options","name","defaultValue","menu","required","onChange","onInvalid","value","setValue","initial","error","setError","reset","current","getRadioProps","radioValue","checked","onCheckedChange","event"],"mappings":"AAAA;AACA,SACEA,WAAW,EACXC,MAAM,EACNC,QAAQ,QAGH,QAAQ;AAGf,MAAMC,OAAO;AACX,aAAa;AACf;AAqNA;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASC,cACdC,OAA6B;IAE7B,MAAM,EACJC,IAAI,EACJC,YAAY,EACZC,OAAO,KAAK,EACZC,QAAQ,EACRC,WAAWP,IAAI,EACfQ,YAAYR,IAAI,EACjB,GAAGE;IACJ,MAAM,CAACO,OAAOC,SAAS,GAAGX,SAAY;QACpC,IAAI,OAAOK,iBAAiB,YAAY;YACtC,OAAOA;QACT;QAEA,OAAOA,gBAAiB;IAC1B;IACA,MAAMO,UAAUb,OAAOW;IACvB,MAAM,CAACG,OAAOC,SAAS,GAAGd,SAAS;IAEnC,OAAO;QACLe,OAAOjB,YAAY;YACjBgB,SAAS;YACTH,SAASC,QAAQI,OAAO;QAC1B,GAAG,EAAE;QACLN;QACAC;QACAM,eAAcC,UAAU;YACtB,MAAMC,UAAUT,UAAUQ;YAC1B,IAAIZ,MAAM;gBACR,OAAO;oBACLa;oBACAC;wBACET,SAASO;oBACX;gBACF;YACF;YAEA,OAAO;gBACLd;gBACAM,OAAOQ;gBACPL;gBACAM;gBACAZ;gBACAC,UAASa,KAAK;oBACZb,SAASa;oBACTP,SAAS;oBACTH,SAASO;gBACX;gBACAT,WAAUY,KAAK;oBACbZ,UAAUY;oBACVP,SAAS;gBACX;YACF;QACF;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useRangeSlider.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { type SliderValueOptions } from \"./useSlider.js\";\n\n/**\n * @since 2.5.0\n * @since 6.0.0 Updated to use labeled tuple.\n */\nexport type RangeSliderValue = readonly [minValue: number, maxValue: number];\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderState {\n rangeValue: RangeSliderValue;\n setRangeValue: UseStateSetter<RangeSliderValue>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderOptions extends SliderValueOptions {\n defaultValue?: UseStateInitializer<RangeSliderValue>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderImplementation\n extends Required<SliderValueOptions>,\n RangeSliderState {}\n\n/**\n * @example Range Slider Example\n * ```tsx\n * import { Fieldset, Form, Legend, Slider, useRangeSlider } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useId } from \"react\";\n *\n * function Example(): ReactElement {\n * const slider = useRangeSlider({\n * // these are the defaults and can be changed\n * min: 0,\n * max: 100,\n * step: 1,\n * defaultValue: [0, 100],\n * });\n *\n * // if you need access to the current value or manually change the value\n * // yourself.\n * const { rangeValue, setRangeValue } = slider;\n * const [minPrice, maxPrice] = rangeValue;\n *\n * return (\n * <Form>\n * <Fieldset>\n * <Legend>Price Range</Legend>\n * <Slider {...slider} />\n * </Fieldset>\n * </Form>\n * );\n * }\n * ```\n *\n * @see The `Slider` component for additional examples.\n * @since 2.5.0\n * @since 6.0.0 Now returns an object instead of an ordered tuple and only\n * return the `rangeValue` and `setRangeValue` instead of all the slider\n * functionality. In addition, the hook only accepts a single object argument.\n */\nexport function useRangeSlider(\n options: RangeSliderOptions = {}\n): RangeSliderImplementation {\n const { min = 0, max = 100, step = 1, defaultValue } = options;\n const [rangeValue, setRangeValue] = useState<RangeSliderValue>(\n defaultValue ?? [min, max]\n );\n\n return {\n min,\n max,\n step,\n rangeValue,\n setRangeValue,\n };\n}\n"],"names":["useState","useRangeSlider","options","min","max","step","defaultValue","rangeValue","setRangeValue"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/useRangeSlider.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { type SliderValueOptions } from \"./useSlider.js\";\n\n/**\n * @since 2.5.0\n * @since 6.0.0 Updated to use labeled tuple.\n */\nexport type RangeSliderValue = readonly [minValue: number, maxValue: number];\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderState {\n rangeValue: RangeSliderValue;\n setRangeValue: UseStateSetter<RangeSliderValue>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderOptions extends SliderValueOptions {\n defaultValue?: UseStateInitializer<RangeSliderValue>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface RangeSliderImplementation\n extends Required<SliderValueOptions>,\n RangeSliderState {}\n\n/**\n * @example Range Slider Example\n * ```tsx\n * import { Fieldset, Form, Legend, Slider, useRangeSlider } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n * import { useId } from \"react\";\n *\n * function Example(): ReactElement {\n * const slider = useRangeSlider({\n * // these are the defaults and can be changed\n * min: 0,\n * max: 100,\n * step: 1,\n * defaultValue: [0, 100],\n * });\n *\n * // if you need access to the current value or manually change the value\n * // yourself.\n * const { rangeValue, setRangeValue } = slider;\n * const [minPrice, maxPrice] = rangeValue;\n *\n * return (\n * <Form>\n * <Fieldset>\n * <Legend>Price Range</Legend>\n * <Slider {...slider} />\n * </Fieldset>\n * </Form>\n * );\n * }\n * ```\n *\n * @see The `Slider` component for additional examples.\n * @since 2.5.0\n * @since 6.0.0 Now returns an object instead of an ordered tuple and only\n * return the `rangeValue` and `setRangeValue` instead of all the slider\n * functionality. In addition, the hook only accepts a single object argument.\n */\nexport function useRangeSlider(\n options: RangeSliderOptions = {}\n): RangeSliderImplementation {\n const { min = 0, max = 100, step = 1, defaultValue } = options;\n const [rangeValue, setRangeValue] = useState<RangeSliderValue>(\n defaultValue ?? [min, max]\n );\n\n return {\n min,\n max,\n step,\n rangeValue,\n setRangeValue,\n };\n}\n"],"names":["useState","useRangeSlider","options","min","max","step","defaultValue","rangeValue","setRangeValue"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AAgCjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqCC,GACD,OAAO,SAASC,eACdC,UAA8B,CAAC,CAAC;IAEhC,MAAM,EAAEC,MAAM,CAAC,EAAEC,MAAM,GAAG,EAAEC,OAAO,CAAC,EAAEC,YAAY,EAAE,GAAGJ;IACvD,MAAM,CAACK,YAAYC,cAAc,GAAGR,SAClCM,gBAAgB;QAACH;QAAKC;KAAI;IAG5B,OAAO;QACLD;QACAC;QACAC;QACAE;QACAC;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useResizingTextArea.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEventHandler,\n type Ref,\n type RefCallback,\n} from \"react\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useResizeObserver } from \"../useResizeObserver.js\";\n\n// this is the default of 1.5rem line-height in the styles\nconst DEFAULT_LINE_HEIGHT = 24;\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * A textarea is normally resizable in browsers by default by dragging the\n * bottom right corner to the desired size which will set inline styles for\n * `height` and `width`. Since this makes creating layouts a bit more difficult,\n * this is disabled by default but can be configured using one of these values:\n *\n * - `\"auto\"` - The textarea will automatically grow in in height as the user\n * types until a max number of rows have been added. If there is additional\n * text, a scrollbar will appear in the textarea. The browser's native resize\n * behavior is disabled.\n * - `\"none\"` - The textarea's height and width will remain static\n * - `\"horizontal\"` - The textarea's width can be resized by the browser's\n * native resize behavior.\n * - `\"vertical\"` - The textarea's height can be resized by the browser's native\n * resize behavior.\n * - `\"both\"` - The browser's native resize behavior will be allowed.\n */\nexport type TextAreaResize =\n | \"none\"\n | \"auto\"\n | \"horizontal\"\n | \"vertical\"\n | \"both\";\n\n/** @internal */\nexport interface ResizingTextAreaOptions {\n resize: TextAreaResize;\n maxRows: number;\n onChange: ChangeEventHandler<HTMLTextAreaElement> | undefined;\n containerRef?: Ref<HTMLDivElement>;\n disableTransition: boolean | undefined;\n}\n\n/** @internal */\nexport interface ResizingTextAreaReturnValue {\n height: string | undefined;\n maskRef: RefCallback<HTMLTextAreaElement>;\n containerRef: RefCallback<HTMLDivElement>;\n onChange: ChangeEventHandler<HTMLTextAreaElement>;\n scrollable: boolean;\n disableTransition: boolean;\n}\n\n/** @internal */\nexport function useResizingTextArea(\n options: ResizingTextAreaOptions\n): ResizingTextAreaReturnValue {\n const {\n maxRows,\n resize,\n onChange = noop,\n containerRef: propContainerRef,\n disableTransition,\n } = options;\n\n const maskRef = useRef<HTMLTextAreaElement>(null);\n const [containerRef, containerRefCallback] = useEnsuredRef(propContainerRef);\n const [height, setHeight] = useState<number>();\n useEffect(() => {\n if (resize !== \"auto\") {\n setHeight(undefined);\n }\n }, [resize]);\n\n // Since access to the DOM is required to calculate the current height of the\n // textarea, do not enable the height transition until it has been calculated\n // once.\n const isHeightSet = useRef(true);\n useEffect(() => {\n isHeightSet.current = !height;\n }, [height]);\n\n // Do not enable the scrollbar until the max height has been reached since\n // it'll flash as the user types on OS that display scrollbars.\n //\n // Note: This does cause an infinite loop issue on browsers that display OS\n // when rendered in a flex/grid container and a \"fluid\" width since:\n // - the width changes when the overflow changes to `auto`\n // - the resize observer triggers since there was a width change\n // - the number of rows imght change because of this width change\n // - it might no longer be at the max height, so remove the scrollbar\n // - restart\n const [isMaxHeightReached, setMaxHeightReached] = useState(false);\n const updateHeight = useCallback(() => {\n const mask = maskRef.current;\n const container = containerRef.current;\n /* c8 ignore start */\n if (!mask || !container) {\n return;\n }\n /* c8 ignore stop */\n\n const containerStyles = window.getComputedStyle(container);\n const isBorderBox = containerStyles.boxSizing === \"border-box\";\n let borderHeight = 0;\n if (isBorderBox) {\n borderHeight =\n parseFloat(containerStyles.borderTopWidth) +\n parseFloat(containerStyles.borderBottomWidth);\n }\n\n let nextHeight = mask.scrollHeight + borderHeight;\n if (maxRows > 0) {\n nextHeight -= borderHeight;\n const maskStyles = window.getComputedStyle(mask);\n // in tests, this is `\"normal\"` by default instead of a number\n let lineHeight = parseFloat(maskStyles.lineHeight);\n if (Number.isNaN(lineHeight)) {\n lineHeight = DEFAULT_LINE_HEIGHT;\n }\n\n const maxHeight = maxRows * lineHeight;\n nextHeight = Math.min(maxHeight, nextHeight);\n setMaxHeightReached(nextHeight === maxHeight);\n nextHeight += borderHeight;\n }\n\n // This just makes snapshots look nicer since `nextHeight` will be 0 in\n // tests unless the user mocks out all the DOM properties\n if (nextHeight) {\n setHeight(nextHeight);\n }\n }, [containerRef, maxRows]);\n\n const maskRefCallback = useResizeObserver({\n ref: maskRef,\n onUpdate: updateHeight,\n disableHeight: true,\n });\n\n return {\n height: typeof height === \"number\" ? `${height}px` : undefined,\n maskRef: maskRefCallback,\n containerRef: containerRefCallback,\n scrollable: maxRows > 0 && isMaxHeightReached,\n disableTransition: disableTransition || isHeightSet.current,\n onChange(event) {\n onChange(event);\n\n const mask = maskRef.current;\n if (!mask || resize !== \"auto\") {\n return;\n }\n\n // to get the height transition to work, you have to set the height on:\n // - the main container element (including padding) that has the height\n // transition enabled\n // - a child div wrapper (without padding) that has the height transition\n // enabled\n // - the textarea element (without padding) and without a height transition\n //\n // if it isn't done this way, the height transition will look weird since\n // the text will be fixed to the bottom of the area and more text at the top\n // will become visible as the height transition completes. applying the\n // transition on the two parent elements work because:\n // - the height is set immediately on the text field so it expands to show all\n // the text\n // - the height is correctly applied to both parent elements, but their height\n // haven't fully been adjusted due to the animation\n // - the parent divs have overflow visible by default, so the textarea's text\n // will expand past the boundaries of the divs and not cause the upwards\n // animation weirdness.\n mask.value = event.currentTarget.value;\n updateHeight();\n },\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useEnsuredRef","useResizeObserver","DEFAULT_LINE_HEIGHT","noop","useResizingTextArea","options","maxRows","resize","onChange","containerRef","propContainerRef","disableTransition","maskRef","containerRefCallback","height","setHeight","undefined","isHeightSet","current","isMaxHeightReached","setMaxHeightReached","updateHeight","mask","container","containerStyles","window","getComputedStyle","isBorderBox","boxSizing","borderHeight","parseFloat","borderTopWidth","borderBottomWidth","nextHeight","scrollHeight","maskStyles","lineHeight","Number","isNaN","maxHeight","Math","min","maskRefCallback","ref","onUpdate","disableHeight","scrollable","event","value","currentTarget"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/useResizingTextArea.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type ChangeEventHandler,\n type Ref,\n type RefCallback,\n} from \"react\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { useResizeObserver } from \"../useResizeObserver.js\";\n\n// this is the default of 1.5rem line-height in the styles\nconst DEFAULT_LINE_HEIGHT = 24;\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * A textarea is normally resizable in browsers by default by dragging the\n * bottom right corner to the desired size which will set inline styles for\n * `height` and `width`. Since this makes creating layouts a bit more difficult,\n * this is disabled by default but can be configured using one of these values:\n *\n * - `\"auto\"` - The textarea will automatically grow in in height as the user\n * types until a max number of rows have been added. If there is additional\n * text, a scrollbar will appear in the textarea. The browser's native resize\n * behavior is disabled.\n * - `\"none\"` - The textarea's height and width will remain static\n * - `\"horizontal\"` - The textarea's width can be resized by the browser's\n * native resize behavior.\n * - `\"vertical\"` - The textarea's height can be resized by the browser's native\n * resize behavior.\n * - `\"both\"` - The browser's native resize behavior will be allowed.\n */\nexport type TextAreaResize =\n | \"none\"\n | \"auto\"\n | \"horizontal\"\n | \"vertical\"\n | \"both\";\n\n/** @internal */\nexport interface ResizingTextAreaOptions {\n resize: TextAreaResize;\n maxRows: number;\n onChange: ChangeEventHandler<HTMLTextAreaElement> | undefined;\n containerRef?: Ref<HTMLDivElement>;\n disableTransition: boolean | undefined;\n}\n\n/** @internal */\nexport interface ResizingTextAreaReturnValue {\n height: string | undefined;\n maskRef: RefCallback<HTMLTextAreaElement>;\n containerRef: RefCallback<HTMLDivElement>;\n onChange: ChangeEventHandler<HTMLTextAreaElement>;\n scrollable: boolean;\n disableTransition: boolean;\n}\n\n/** @internal */\nexport function useResizingTextArea(\n options: ResizingTextAreaOptions\n): ResizingTextAreaReturnValue {\n const {\n maxRows,\n resize,\n onChange = noop,\n containerRef: propContainerRef,\n disableTransition,\n } = options;\n\n const maskRef = useRef<HTMLTextAreaElement>(null);\n const [containerRef, containerRefCallback] = useEnsuredRef(propContainerRef);\n const [height, setHeight] = useState<number>();\n useEffect(() => {\n if (resize !== \"auto\") {\n setHeight(undefined);\n }\n }, [resize]);\n\n // Since access to the DOM is required to calculate the current height of the\n // textarea, do not enable the height transition until it has been calculated\n // once.\n const isHeightSet = useRef(true);\n useEffect(() => {\n isHeightSet.current = !height;\n }, [height]);\n\n // Do not enable the scrollbar until the max height has been reached since\n // it'll flash as the user types on OS that display scrollbars.\n //\n // Note: This does cause an infinite loop issue on browsers that display OS\n // when rendered in a flex/grid container and a \"fluid\" width since:\n // - the width changes when the overflow changes to `auto`\n // - the resize observer triggers since there was a width change\n // - the number of rows imght change because of this width change\n // - it might no longer be at the max height, so remove the scrollbar\n // - restart\n const [isMaxHeightReached, setMaxHeightReached] = useState(false);\n const updateHeight = useCallback(() => {\n const mask = maskRef.current;\n const container = containerRef.current;\n /* c8 ignore start */\n if (!mask || !container) {\n return;\n }\n /* c8 ignore stop */\n\n const containerStyles = window.getComputedStyle(container);\n const isBorderBox = containerStyles.boxSizing === \"border-box\";\n let borderHeight = 0;\n if (isBorderBox) {\n borderHeight =\n parseFloat(containerStyles.borderTopWidth) +\n parseFloat(containerStyles.borderBottomWidth);\n }\n\n let nextHeight = mask.scrollHeight + borderHeight;\n if (maxRows > 0) {\n nextHeight -= borderHeight;\n const maskStyles = window.getComputedStyle(mask);\n // in tests, this is `\"normal\"` by default instead of a number\n let lineHeight = parseFloat(maskStyles.lineHeight);\n if (Number.isNaN(lineHeight)) {\n lineHeight = DEFAULT_LINE_HEIGHT;\n }\n\n const maxHeight = maxRows * lineHeight;\n nextHeight = Math.min(maxHeight, nextHeight);\n setMaxHeightReached(nextHeight === maxHeight);\n nextHeight += borderHeight;\n }\n\n // This just makes snapshots look nicer since `nextHeight` will be 0 in\n // tests unless the user mocks out all the DOM properties\n if (nextHeight) {\n setHeight(nextHeight);\n }\n }, [containerRef, maxRows]);\n\n const maskRefCallback = useResizeObserver({\n ref: maskRef,\n onUpdate: updateHeight,\n disableHeight: true,\n });\n\n return {\n height: typeof height === \"number\" ? `${height}px` : undefined,\n maskRef: maskRefCallback,\n containerRef: containerRefCallback,\n scrollable: maxRows > 0 && isMaxHeightReached,\n disableTransition: disableTransition || isHeightSet.current,\n onChange(event) {\n onChange(event);\n\n const mask = maskRef.current;\n if (!mask || resize !== \"auto\") {\n return;\n }\n\n // to get the height transition to work, you have to set the height on:\n // - the main container element (including padding) that has the height\n // transition enabled\n // - a child div wrapper (without padding) that has the height transition\n // enabled\n // - the textarea element (without padding) and without a height transition\n //\n // if it isn't done this way, the height transition will look weird since\n // the text will be fixed to the bottom of the area and more text at the top\n // will become visible as the height transition completes. applying the\n // transition on the two parent elements work because:\n // - the height is set immediately on the text field so it expands to show all\n // the text\n // - the height is correctly applied to both parent elements, but their height\n // haven't fully been adjusted due to the animation\n // - the parent divs have overflow visible by default, so the textarea's text\n // will expand past the boundaries of the divs and not cause the upwards\n // animation weirdness.\n mask.value = event.currentTarget.value;\n updateHeight();\n },\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useEnsuredRef","useResizeObserver","DEFAULT_LINE_HEIGHT","noop","useResizingTextArea","options","maxRows","resize","onChange","containerRef","propContainerRef","disableTransition","maskRef","containerRefCallback","height","setHeight","undefined","isHeightSet","current","isMaxHeightReached","setMaxHeightReached","updateHeight","mask","container","containerStyles","window","getComputedStyle","isBorderBox","boxSizing","borderHeight","parseFloat","borderTopWidth","borderBottomWidth","nextHeight","scrollHeight","maskStyles","lineHeight","Number","isNaN","maxHeight","Math","min","maskRefCallback","ref","onUpdate","disableHeight","scrollable","event","value","currentTarget"],"mappings":"AAAA;AACA,SACEA,WAAW,EACXC,SAAS,EACTC,MAAM,EACNC,QAAQ,QAIH,QAAQ;AACf,SAASC,aAAa,QAAQ,sBAAsB;AACpD,SAASC,iBAAiB,QAAQ,0BAA0B;AAE5D,0DAA0D;AAC1D,MAAMC,sBAAsB;AAE5B,MAAMC,OAAO;AACX,aAAa;AACf;AA6CA,cAAc,GACd,OAAO,SAASC,oBACdC,OAAgC;IAEhC,MAAM,EACJC,OAAO,EACPC,MAAM,EACNC,WAAWL,IAAI,EACfM,cAAcC,gBAAgB,EAC9BC,iBAAiB,EAClB,GAAGN;IAEJ,MAAMO,UAAUd,OAA4B;IAC5C,MAAM,CAACW,cAAcI,qBAAqB,GAAGb,cAAcU;IAC3D,MAAM,CAACI,QAAQC,UAAU,GAAGhB;IAC5BF,UAAU;QACR,IAAIU,WAAW,QAAQ;YACrBQ,UAAUC;QACZ;IACF,GAAG;QAACT;KAAO;IAEX,6EAA6E;IAC7E,6EAA6E;IAC7E,QAAQ;IACR,MAAMU,cAAcnB,OAAO;IAC3BD,UAAU;QACRoB,YAAYC,OAAO,GAAG,CAACJ;IACzB,GAAG;QAACA;KAAO;IAEX,0EAA0E;IAC1E,+DAA+D;IAC/D,EAAE;IACF,2EAA2E;IAC3E,oEAAoE;IACpE,0DAA0D;IAC1D,gEAAgE;IAChE,iEAAiE;IACjE,qEAAqE;IACrE,YAAY;IACZ,MAAM,CAACK,oBAAoBC,oBAAoB,GAAGrB,SAAS;IAC3D,MAAMsB,eAAezB,YAAY;QAC/B,MAAM0B,OAAOV,QAAQM,OAAO;QAC5B,MAAMK,YAAYd,aAAaS,OAAO;QACtC,mBAAmB,GACnB,IAAI,CAACI,QAAQ,CAACC,WAAW;YACvB;QACF;QACA,kBAAkB,GAElB,MAAMC,kBAAkBC,OAAOC,gBAAgB,CAACH;QAChD,MAAMI,cAAcH,gBAAgBI,SAAS,KAAK;QAClD,IAAIC,eAAe;QACnB,IAAIF,aAAa;YACfE,eACEC,WAAWN,gBAAgBO,cAAc,IACzCD,WAAWN,gBAAgBQ,iBAAiB;QAChD;QAEA,IAAIC,aAAaX,KAAKY,YAAY,GAAGL;QACrC,IAAIvB,UAAU,GAAG;YACf2B,cAAcJ;YACd,MAAMM,aAAaV,OAAOC,gBAAgB,CAACJ;YAC3C,8DAA8D;YAC9D,IAAIc,aAAaN,WAAWK,WAAWC,UAAU;YACjD,IAAIC,OAAOC,KAAK,CAACF,aAAa;gBAC5BA,aAAalC;YACf;YAEA,MAAMqC,YAAYjC,UAAU8B;YAC5BH,aAAaO,KAAKC,GAAG,CAACF,WAAWN;YACjCb,oBAAoBa,eAAeM;YACnCN,cAAcJ;QAChB;QAEA,uEAAuE;QACvE,yDAAyD;QACzD,IAAII,YAAY;YACdlB,UAAUkB;QACZ;IACF,GAAG;QAACxB;QAAcH;KAAQ;IAE1B,MAAMoC,kBAAkBzC,kBAAkB;QACxC0C,KAAK/B;QACLgC,UAAUvB;QACVwB,eAAe;IACjB;IAEA,OAAO;QACL/B,QAAQ,OAAOA,WAAW,WAAW,CAAC,EAAEA,OAAO,EAAE,CAAC,GAAGE;QACrDJ,SAAS8B;QACTjC,cAAcI;QACdiC,YAAYxC,UAAU,KAAKa;QAC3BR,mBAAmBA,qBAAqBM,YAAYC,OAAO;QAC3DV,UAASuC,KAAK;YACZvC,SAASuC;YAET,MAAMzB,OAAOV,QAAQM,OAAO;YAC5B,IAAI,CAACI,QAAQf,WAAW,QAAQ;gBAC9B;YACF;YAEA,uEAAuE;YACvE,uEAAuE;YACvE,wBAAwB;YACxB,yEAAyE;YACzE,aAAa;YACb,2EAA2E;YAC3E,EAAE;YACF,yEAAyE;YACzE,4EAA4E;YAC5E,uEAAuE;YACvE,sDAAsD;YACtD,8EAA8E;YAC9E,cAAc;YACd,8EAA8E;YAC9E,sDAAsD;YACtD,6EAA6E;YAC7E,2EAA2E;YAC3E,0BAA0B;YAC1Be,KAAK0B,KAAK,GAAGD,MAAME,aAAa,CAACD,KAAK;YACtC3B;QACF;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useSelectCombobox.ts"],"sourcesContent":["\"use client\";\nimport {\n useCombobox,\n type BaseComboboxOptions,\n type ComboboxImplementation,\n} from \"./useCombobox.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface SelectComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends BaseComboboxOptions<ComboboxEl, PopupEl> {\n value: string;\n values: readonly string[];\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SelectComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxImplementation<ComboboxEl, PopupEl> {}\n\n/**\n * @since 6.0.0\n */\nexport function useSelectCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: SelectComboboxOptions<ComboboxEl, PopupEl>\n): SelectComboboxImplementation<ComboboxEl, PopupEl> {\n const { value, values, ...comboboxOptions } = options;\n\n return useCombobox({\n ...comboboxOptions,\n searchable: true,\n extendKeyDown(movementData) {\n const { event, show, focusLast, visible } = movementData;\n if (visible) {\n return;\n }\n\n switch (event.key) {\n case \" \":\n case \"Home\":\n case \"End\":\n event.preventDefault();\n event.stopPropagation();\n focusLast.current = event.key === \"End\";\n show();\n break;\n }\n },\n getEnterDefaultFocusedIndex(options) {\n const { focusLast } = options;\n if (focusLast && !value) {\n return values.length - 1;\n }\n\n return Math.max(\n 0,\n values.findIndex((option) => option === value)\n );\n },\n });\n}\n"],"names":["useCombobox","useSelectCombobox","options","value","values","comboboxOptions","searchable","extendKeyDown","movementData","event","show","focusLast","visible","key","preventDefault","stopPropagation","current","getEnterDefaultFocusedIndex","length","Math","max","findIndex","option"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/useSelectCombobox.ts"],"sourcesContent":["\"use client\";\nimport {\n useCombobox,\n type BaseComboboxOptions,\n type ComboboxImplementation,\n} from \"./useCombobox.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface SelectComboboxOptions<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends BaseComboboxOptions<ComboboxEl, PopupEl> {\n value: string;\n values: readonly string[];\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SelectComboboxImplementation<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n> extends ComboboxImplementation<ComboboxEl, PopupEl> {}\n\n/**\n * @since 6.0.0\n */\nexport function useSelectCombobox<\n ComboboxEl extends HTMLElement = HTMLInputElement,\n PopupEl extends HTMLElement = HTMLElement,\n>(\n options: SelectComboboxOptions<ComboboxEl, PopupEl>\n): SelectComboboxImplementation<ComboboxEl, PopupEl> {\n const { value, values, ...comboboxOptions } = options;\n\n return useCombobox({\n ...comboboxOptions,\n searchable: true,\n extendKeyDown(movementData) {\n const { event, show, focusLast, visible } = movementData;\n if (visible) {\n return;\n }\n\n switch (event.key) {\n case \" \":\n case \"Home\":\n case \"End\":\n event.preventDefault();\n event.stopPropagation();\n focusLast.current = event.key === \"End\";\n show();\n break;\n }\n },\n getEnterDefaultFocusedIndex(options) {\n const { focusLast } = options;\n if (focusLast && !value) {\n return values.length - 1;\n }\n\n return Math.max(\n 0,\n values.findIndex((option) => option === value)\n );\n },\n });\n}\n"],"names":["useCombobox","useSelectCombobox","options","value","values","comboboxOptions","searchable","extendKeyDown","movementData","event","show","focusLast","visible","key","preventDefault","stopPropagation","current","getEnterDefaultFocusedIndex","length","Math","max","findIndex","option"],"mappings":"AAAA;AACA,SACEA,WAAW,QAGN,mBAAmB;AAqB1B;;CAEC,GACD,OAAO,SAASC,kBAIdC,OAAmD;IAEnD,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAE,GAAGC,iBAAiB,GAAGH;IAE9C,OAAOF,YAAY;QACjB,GAAGK,eAAe;QAClBC,YAAY;QACZC,eAAcC,YAAY;YACxB,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGJ;YAC5C,IAAII,SAAS;gBACX;YACF;YAEA,OAAQH,MAAMI,GAAG;gBACf,KAAK;gBACL,KAAK;gBACL,KAAK;oBACHJ,MAAMK,cAAc;oBACpBL,MAAMM,eAAe;oBACrBJ,UAAUK,OAAO,GAAGP,MAAMI,GAAG,KAAK;oBAClCH;oBACA;YACJ;QACF;QACAO,6BAA4Bf,OAAO;YACjC,MAAM,EAAES,SAAS,EAAE,GAAGT;YACtB,IAAIS,aAAa,CAACR,OAAO;gBACvB,OAAOC,OAAOc,MAAM,GAAG;YACzB;YAEA,OAAOC,KAAKC,GAAG,CACb,GACAhB,OAAOiB,SAAS,CAAC,CAACC,SAAWA,WAAWnB;QAE5C;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useSlider.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { getRangeDefaultValue } from \"../utils/getRangeDefaultValue.js\";\n\n/**\n * @since 2.5.0\n */\nexport interface SliderValueOptions {\n /**\n * The min value for the slider.\n *\n * @defaultValue `0`\n */\n min?: number;\n\n /**\n * The max value for the slider.\n *\n * @defaultValue `100`\n */\n max?: number;\n\n /**\n * A positive number representing the value to \"jump\" while incrementing or\n * decrementing the slider's value. This should normally stay as the default\n * value of `1`, but can also be decimal values if needed.\n *\n * @defaultValue `1`\n */\n step?: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderState {\n value: number;\n setValue: UseStateSetter<number>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderImplementation\n extends Required<SliderValueOptions>,\n SliderState {}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderOptions extends SliderValueOptions {\n /**\n * @defaultValue `(max - min ) / 2`\n */\n defaultValue?: UseStateInitializer<number>;\n}\n\n/**\n * @example Simple Example\n * ```tsx\n * import { Form, Slider, useSlider } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const slider = useSlider({\n * // these are the defaults and can be changed\n * min: 0,\n * max: 100,\n * step: 1,\n * defaultValue: 50,\n * });\n *\n * // if you need access to the current value or manually change the value\n * // yourself.\n * const { value, setValue } = slider;\n *\n * return (\n * <Form>\n * <Slider {...slider} aria-label=\"Volume\" />\n * </Form>\n * );\n * }\n * ```\n *\n * @see The `Slider` component for additional examples.\n * @since 2.5.0\n * @since 6.0.0 Now returns an object instead of an ordered tuple and only\n * return the `value` and `setValue` instead of all the slider functionality. In\n * addition, the hook only accepts a single object argument.\n */\nexport function useSlider(options: SliderOptions = {}): SliderImplementation {\n const { min = 0, max = 100, step = 1, defaultValue } = options;\n const [value, setValue] = useState(\n getRangeDefaultValue({\n min,\n max,\n step,\n defaultValue,\n })\n );\n\n return {\n min,\n max,\n step,\n value,\n setValue,\n };\n}\n"],"names":["useState","getRangeDefaultValue","useSlider","options","min","max","step","defaultValue","value","setValue"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/useSlider.ts"],"sourcesContent":["\"use client\";\nimport { useState } from \"react\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { getRangeDefaultValue } from \"../utils/getRangeDefaultValue.js\";\n\n/**\n * @since 2.5.0\n */\nexport interface SliderValueOptions {\n /**\n * The min value for the slider.\n *\n * @defaultValue `0`\n */\n min?: number;\n\n /**\n * The max value for the slider.\n *\n * @defaultValue `100`\n */\n max?: number;\n\n /**\n * A positive number representing the value to \"jump\" while incrementing or\n * decrementing the slider's value. This should normally stay as the default\n * value of `1`, but can also be decimal values if needed.\n *\n * @defaultValue `1`\n */\n step?: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderState {\n value: number;\n setValue: UseStateSetter<number>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderImplementation\n extends Required<SliderValueOptions>,\n SliderState {}\n\n/**\n * @since 6.0.0\n */\nexport interface SliderOptions extends SliderValueOptions {\n /**\n * @defaultValue `(max - min ) / 2`\n */\n defaultValue?: UseStateInitializer<number>;\n}\n\n/**\n * @example Simple Example\n * ```tsx\n * import { Form, Slider, useSlider } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const slider = useSlider({\n * // these are the defaults and can be changed\n * min: 0,\n * max: 100,\n * step: 1,\n * defaultValue: 50,\n * });\n *\n * // if you need access to the current value or manually change the value\n * // yourself.\n * const { value, setValue } = slider;\n *\n * return (\n * <Form>\n * <Slider {...slider} aria-label=\"Volume\" />\n * </Form>\n * );\n * }\n * ```\n *\n * @see The `Slider` component for additional examples.\n * @since 2.5.0\n * @since 6.0.0 Now returns an object instead of an ordered tuple and only\n * return the `value` and `setValue` instead of all the slider functionality. In\n * addition, the hook only accepts a single object argument.\n */\nexport function useSlider(options: SliderOptions = {}): SliderImplementation {\n const { min = 0, max = 100, step = 1, defaultValue } = options;\n const [value, setValue] = useState(\n getRangeDefaultValue({\n min,\n max,\n step,\n defaultValue,\n })\n );\n\n return {\n min,\n max,\n step,\n value,\n setValue,\n };\n}\n"],"names":["useState","getRangeDefaultValue","useSlider","options","min","max","step","defaultValue","value","setValue"],"mappings":"AAAA;AACA,SAASA,QAAQ,QAAQ,QAAQ;AAEjC,SAASC,oBAAoB,QAAQ,mCAAmC;AAuDxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCC,GACD,OAAO,SAASC,UAAUC,UAAyB,CAAC,CAAC;IACnD,MAAM,EAAEC,MAAM,CAAC,EAAEC,MAAM,GAAG,EAAEC,OAAO,CAAC,EAAEC,YAAY,EAAE,GAAGJ;IACvD,MAAM,CAACK,OAAOC,SAAS,GAAGT,SACxBC,qBAAqB;QACnBG;QACAC;QACAC;QACAC;IACF;IAGF,OAAO;QACLH;QACAC;QACAC;QACAE;QACAC;IACF;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/useTextField.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n type RefCallback,\n type RefObject,\n} from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { type TextFieldProps } from \"./TextField.js\";\nimport {\n type FormMessageInputLengthCounterProps,\n type FormMessageProps,\n} from \"./types.js\";\nimport {\n defaultGetErrorIcon,\n defaultGetErrorMessage,\n defaultIsErrored,\n type ErrorMessageOptions,\n type GetErrorIcon,\n type GetErrorMessage,\n type IsErrored,\n type TextFieldValidationOptions,\n type TextFieldValidationType,\n} from \"./validation.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 2.5.0\n * @since 6.0.0 Added the `onInvalid` handler\n */\nexport type TextFieldChangeHandlers<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> = Pick<HTMLAttributes<E>, \"onBlur\" | \"onChange\" | \"onInvalid\">;\n\n/** @since 6.0.0 */\nexport interface ErrorChangeHandlerOptions<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> {\n /**\n * A ref containing the `TextField` or `TextArea` if you need access to that\n * DOM node for error reporting.\n */\n ref: RefObject<E>;\n\n /**\n * The current name for the `TextField` or `TextArea`.\n */\n name: string;\n\n /**\n * This will be `true` when the `TextField`/`TextArea` has an error.\n */\n error: boolean;\n\n /**\n * The error message returned by {@link GetErrorMessage}/the browser's\n * validation message. This is normally an empty string when the {@link error}\n * state is `false`.\n */\n errorMessage: string;\n}\n\n/**\n * A function that reports the error state changing. A good use-case for this is\n * to keep track of all the errors within your form and keep a submit button\n * disabled until they have been resolved.\n *\n * Example:\n *\n * ```ts\n * const [errors, setErrors] = useState<Record<string, boolean | undefined>>({});\n * const onErrorChange: ErrorChangeHandler = ({ name, error }) =>\n * setErrors((prevErrors) => ({ ...prevErrors, [name]: error }));\n *\n * const invalid = Object.values(errors).some(Boolean);\n *\n * // form implementation is left as an exercise for the reader\n * <Button type=\"submit\" disabled={invalid} onClick={submitForm}>Submit</Button>\n * ```\n *\n * @since 2.5.0\n * @since 6.0.0 Changed to object argument.\n */\nexport type ErrorChangeHandler<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> = (options: ErrorChangeHandlerOptions<E>) => void;\n\n/** @since 2.5.6 */\nexport interface TextFieldHookState {\n /**\n * The current value for the `TextField` or `TextArea`.\n */\n value: string;\n\n /**\n * This will be `true` when the `TextField`/`TextArea` has an error.\n */\n error: boolean;\n\n /**\n * The error message returned by {@link GetErrorMessage}/the browser's\n * validation message. This is normally an empty string when the {@link error}\n * state is `false`.\n */\n errorMessage: string;\n}\n\n/**\n * All the props that will be generated and return from the `useTextField` hook\n * that should be passed to a `FormMessage` component.\n *\n * @since 2.5.0\n */\nexport interface ProvidedFormMessageProps\n extends Pick<FormMessageProps, \"id\" | \"theme\" | \"children\">,\n Required<Pick<TextFieldProps, \"error\">>,\n Partial<Pick<FormMessageInputLengthCounterProps, \"length\" | \"maxLength\">> {}\n\n/**\n * All the props that will be generated and returned by the `useTextField` hook\n * that should be passed to a `TextField` component.\n *\n * @since 2.5.0\n */\nexport interface ProvidedTextFieldProps<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldValidationOptions,\n TextFieldChangeHandlers<E>,\n Required<Pick<TextFieldProps, \"id\" | \"name\" | \"value\" | \"error\">>,\n Pick<TextFieldProps, \"aria-describedby\" | \"rightAddon\"> {\n /**\n * A ref that must be passed to the `TextField`/`TextArea` so that the custom\n * validity behavior can work.\n *\n * @since 6.0.0\n */\n ref: RefCallback<E>;\n}\n\n/**\n * @since 2.5.0\n */\nexport interface ProvidedTextFieldMessageProps<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends ProvidedTextFieldProps<E> {\n /**\n * These props will be defined as long as the `disableMessage` prop is not\n * `true` from the `useTextField` hook.\n */\n messageProps: ProvidedFormMessageProps;\n}\n\n/** @since 2.5.6 */\nexport interface TextFieldHookOptions<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldValidationOptions,\n TextFieldChangeHandlers<E> {\n /**\n * An optional id to use for the `TextField` or `TextArea` that is also used\n * to create an id for the inline help/error messages.\n *\n * @defaultValue `\"text-field-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref that should be merged with the ref returned by this hook.\n * This should really only be used if you are making a custom component using\n * this hook and forwarding refs. If you need a ref to access the `<input>` or\n * `<textarea>` DOM node, you can use the `fieldRef` returned by this hook\n * instead.\n *\n * @example Accessing TextField DOM Node\n * ```tsx\n * import { TextField, useTextField } from \"@react-md/core\";\n * import { useEffect } from \"react\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { fieldRef, fieldProps } = useTextField({ name: \"example\" });\n *\n * useEffect(() => {\n * fieldRef.current;\n * // ^ HTMLInputElement | null\n * }, [fieldRef]);\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n */\n ref?: Ref<E>;\n\n /**\n * A unique name to attach to the `TextField`, `TextArea` or `Password`\n * component.\n */\n name: string;\n\n /**\n * Boolean if the `FormMessage` should also display a counter for the\n * remaining letters allowed based on the `maxLength`.\n *\n * This will still be considered false if the `maxLength` value is not\n * provided.\n *\n * @defaultValue `false`\n */\n counter?: boolean;\n\n /**\n * This is used internally for the `useNumberField` hook and probably\n * shouldn't be used otherwise. This is just passed into the\n * {@link getErrorMessage} options and is used for additional validation.\n *\n * @defaultValue `false`\n */\n isNumber?: boolean;\n\n /**\n * The default value to use for the `TextField` or `TextArea` one initial\n * render. If you want to manually change the value to something else after\n * the initial render, either change the `key` for the component containing\n * this hook, or use the `setState` function returned from this hook.\n *\n * @defaultValue `\"\"`\n */\n defaultValue?: UseStateInitializer<string>;\n\n /**\n * An optional help text to display in the `FormMessage` component when there\n * is not an error.\n */\n helpText?: ReactNode;\n\n /**\n * A function used to determine if the `TextField` or `TextArea` is an in\n * errored state.\n *\n * @see {@link defaultIsErrored}\n * @defaultValue `defaultIsErrored`\n */\n isErrored?: IsErrored;\n\n /**\n * An optional error icon used in the {@link getErrorIcon} option.\n *\n * @defaultValue `getIcon(\"error\")`\n */\n errorIcon?: ReactNode;\n\n /**\n * A function used to get the error icon to display at the right of the\n * `TextField` or `TextArea`. The default behavior will only show an icon when\n * the `error` state is `true` and an `errorIcon` option has been provided.\n *\n * @see {@link defaultGetErrorIcon}\n * @defaultValue `defaultGetErrorIcon`\n */\n getErrorIcon?: GetErrorIcon;\n\n /**\n * A function to get and display an error message based on the `TextField` or\n * `TextArea` validity.\n *\n * @see {@link defaultGetErrorMessage}\n * @defaultValue `defaultGetErrorMessage`\n */\n getErrorMessage?: GetErrorMessage;\n\n /**\n * An optional function that will be called whenever the `error` state is\n * changed. This can be used for more complex forms to `disable` the Submit\n * button or anything else if any field has an error.\n *\n * @defaultValue `() => {}`\n */\n onErrorChange?: ErrorChangeHandler<E>;\n\n /**\n * Boolean if the `TextField` or `TextArea` will **not** be rendered along\n * with a `FormMessage` component. This will prevent the `aria-describedby`\n * prop from being returned when set to `true`.\n *\n * @defaultValue `false`\n */\n disableMessage?: boolean;\n\n /**\n * Boolean if the `maxLength` prop should not be passed to the `TextField`\n * component since it will prevent any additional characters from being\n * entered in the text field which might feel like weird behavior to some\n * users. This should really only be used when the `counter` option is also\n * enabled and rendering along with a `FormMessage` component.\n *\n * @defaultValue `false`\n */\n disableMaxLength?: boolean;\n\n /**\n * @defaultValue `\"recommended\"`\n */\n validationType?: TextFieldValidationType;\n}\n\n/** @since 6.0.0 */\nexport interface TextFieldImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldHookState {\n fieldRef: RefObject<E>;\n reset(): void;\n setState: UseStateSetter<Readonly<TextFieldHookState>>;\n fieldProps: ProvidedTextFieldProps<E>;\n}\n\n/** @since 6.0.0 */\nexport interface TextFieldWithMessageImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldImplementation<E> {\n fieldProps: ProvidedTextFieldMessageProps<E>;\n}\n\n/** @since 6.0.0 */\nexport interface ValidatedTextFieldImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldImplementation<E> {\n fieldProps: ProvidedTextFieldProps<E> | ProvidedTextFieldMessageProps<E>;\n}\n\n/**\n * If you do not want to display the error messages below the `TextField` and\n * handle error messages separately, set the `disableMessage` option to `true`.\n *\n * @example No Inline Error Messages\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * disableMessage: true,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * Look at the other {@link useTextField} override for additional examples.\n */\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E> & { disableMessage: true }\n): TextFieldImplementation<E>;\n\n/**\n * @example Simple Example\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Inline Counter\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * counter: true,\n * required: true,\n * maxLength: 20,\n * disableMaxLength: true,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Adding Constraints\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * required: true,\n * pattern: \"^[A-z]+$\",\n * minLength: 4,\n * maxLength: 20,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Custom Validation\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * required: true,\n * getErrorMessage(options) {\n * const {\n * value,\n * pattern,\n * required,\n * minLength,\n * maxLength,\n * validity,\n * validationMessage,\n * isNumber,\n * isBlurEvent,\n * validationType,\n * } = options;\n *\n * if (validity.tooLong) {\n * return `No more than ${maxLength} characters.`;\n * }\n *\n * if (validity.tooShort) {\n * return `No more than ${minLength} characters.`;\n * }\n *\n * if (validity.valueMissing) {\n * return \"This value is required!\";\n * }\n *\n * if (value === \"bad value\") {\n * return \"Value cannot be bad value\";\n * }\n *\n * return defaultGetErrorMessage(options);\n * }\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n * @since 2.5.6\n * @since 6.0.0 This hook returns an object instead of an ordered list.\n */\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E>\n): TextFieldWithMessageImplementation<E>;\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E>\n): ValidatedTextFieldImplementation<E> {\n const {\n id: propId,\n ref: propRef,\n name,\n defaultValue = \"\",\n isNumber = false,\n required,\n pattern,\n minLength,\n maxLength,\n onBlur = noop,\n onChange = noop,\n onInvalid = noop,\n counter = false,\n helpText,\n validationType = \"recommended\",\n disableMessage = false,\n disableMaxLength = false,\n errorIcon: propErrorIcon,\n isErrored = defaultIsErrored,\n onErrorChange = noop,\n getErrorIcon = defaultGetErrorIcon,\n getErrorMessage = defaultGetErrorMessage,\n } = options;\n\n const id = useEnsuredId(propId, \"text-field\");\n const messageId = `${id}-message`;\n const [fieldRef, ref] = useEnsuredRef(propRef);\n const [state, setState] = useState<TextFieldHookState>(() => {\n const value =\n typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n\n return {\n value,\n error: false,\n errorMessage: \"\",\n };\n });\n const { value, error, errorMessage } = state;\n\n // using a `ref` instead of a `useCallback` makes it so the `defaultValue`\n // will always be used once reset.\n const reset = useRef(() => {\n fieldRef.current?.setCustomValidity(\"\");\n setState({ value, error: false, errorMessage: \"\" });\n }).current;\n\n const errored = useRef(error);\n const checkValidity = useCallback(\n (isBlurEvent: boolean) => {\n const field = fieldRef.current;\n if (!field) {\n throw new Error(\"Unable to check validity due to missing ref\");\n }\n\n // need to temporarily set the `maxLength` back so it can be \"verified\"\n // through the validity api\n /* istanbul ignore next */\n if (isBlurEvent && disableMaxLength && typeof maxLength === \"number\") {\n field.maxLength = maxLength;\n }\n\n const { value } = field;\n field.setCustomValidity(\"\");\n field.checkValidity();\n\n // remove the temporarily set `maxLength` attribute after checking the\n // validity\n /* istanbul ignore next */\n if (disableMaxLength && typeof maxLength === \"number\") {\n field.removeAttribute(\"maxLength\");\n }\n\n const options: ErrorMessageOptions = {\n value,\n pattern,\n required,\n minLength,\n maxLength,\n isBlurEvent,\n isNumber,\n validationType,\n validity: field.validity,\n validationMessage: field.validationMessage,\n };\n const errorMessage = getErrorMessage(options);\n const error = isErrored({ ...options, errorMessage });\n\n if (errored.current !== error) {\n errored.current = error;\n onErrorChange({\n ref: fieldRef,\n name,\n error,\n errorMessage,\n });\n }\n\n /* istanbul ignore next */\n if (errorMessage !== field.validationMessage) {\n field.setCustomValidity(errorMessage);\n }\n\n setState((prevState) => {\n if (\n prevState.value === value &&\n prevState.error === error &&\n prevState.errorMessage === errorMessage\n ) {\n return prevState;\n }\n\n return {\n value,\n error,\n errorMessage,\n };\n });\n },\n [\n disableMaxLength,\n fieldRef,\n getErrorMessage,\n isErrored,\n isNumber,\n maxLength,\n minLength,\n name,\n onErrorChange,\n pattern,\n required,\n validationType,\n ]\n );\n\n const errorIcon = getIcon(\"error\", propErrorIcon);\n const fieldProps: ProvidedTextFieldProps<E> & {\n messageProps?: ProvidedFormMessageProps;\n } = {\n id,\n ref,\n name,\n value,\n error,\n required,\n pattern,\n minLength,\n maxLength: disableMaxLength ? undefined : maxLength,\n rightAddon: getErrorIcon({\n error,\n errorIcon,\n errorMessage,\n }),\n onBlur(event) {\n onBlur(event);\n if (event.isPropagationStopped()) {\n return;\n }\n checkValidity(true);\n },\n onChange(event) {\n onChange(event);\n if (event.isPropagationStopped()) {\n return;\n }\n\n if (validationType === \"blur\") {\n setState((prevState) => ({\n ...prevState,\n value: event.currentTarget.value,\n }));\n return;\n }\n\n checkValidity(false);\n },\n onInvalid(event) {\n onInvalid(event);\n if (\n event.isPropagationStopped() ||\n event.currentTarget === document.activeElement\n ) {\n return;\n }\n\n // this makes it so that if a submit button is clicked in a form, all\n // textfields will gain the error state immediately\n // also need to extract the validationMessage immediately because of the\n // SyntheticEvent behavior in React. By the time the `setState` is called,\n // the event might've been deleted\n const { validationMessage } = event.currentTarget;\n\n setState((prevState) => {\n if (prevState.error) {\n return prevState;\n }\n\n return {\n ...prevState,\n error: true,\n errorMessage: validationMessage,\n };\n });\n },\n };\n\n if (!disableMessage) {\n fieldProps[\"aria-describedby\"] = messageId;\n fieldProps.messageProps = {\n id: messageId,\n error,\n length: counter ? value.length : undefined,\n maxLength:\n counter && typeof maxLength === \"number\" ? maxLength : undefined,\n children: errorMessage || helpText,\n };\n }\n\n return {\n ...state,\n reset,\n setState,\n fieldRef,\n fieldProps,\n };\n}\n"],"names":["useCallback","useRef","useState","getIcon","useEnsuredId","useEnsuredRef","defaultGetErrorIcon","defaultGetErrorMessage","defaultIsErrored","noop","useTextField","options","id","propId","ref","propRef","name","defaultValue","isNumber","required","pattern","minLength","maxLength","onBlur","onChange","onInvalid","counter","helpText","validationType","disableMessage","disableMaxLength","errorIcon","propErrorIcon","isErrored","onErrorChange","getErrorIcon","getErrorMessage","messageId","fieldRef","state","setState","value","error","errorMessage","reset","current","setCustomValidity","errored","checkValidity","isBlurEvent","field","Error","removeAttribute","validity","validationMessage","prevState","fieldProps","undefined","rightAddon","event","isPropagationStopped","currentTarget","document","activeElement","messageProps","length","children"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA;AACA,SACEA,WAAW,EACXC,MAAM,EACNC,QAAQ,QAMH,QAAQ;AACf,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,aAAa,QAAQ,sBAAsB;AAMpD,SACEC,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,QAOX,kBAAkB;AAEzB,MAAMC,OAAO;AACX,aAAa;AACf;AAkbA,OAAO,SAASC,aACdC,OAAgC;IAEhC,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAKC,OAAO,EACZC,IAAI,EACJC,eAAe,EAAE,EACjBC,WAAW,KAAK,EAChBC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,SAASd,IAAI,EACbe,WAAWf,IAAI,EACfgB,YAAYhB,IAAI,EAChBiB,UAAU,KAAK,EACfC,QAAQ,EACRC,iBAAiB,aAAa,EAC9BC,iBAAiB,KAAK,EACtBC,mBAAmB,KAAK,EACxBC,WAAWC,aAAa,EACxBC,YAAYzB,gBAAgB,EAC5B0B,gBAAgBzB,IAAI,EACpB0B,eAAe7B,mBAAmB,EAClC8B,kBAAkB7B,sBAAsB,EACzC,GAAGI;IAEJ,MAAMC,KAAKR,aAAaS,QAAQ;IAChC,MAAMwB,YAAY,CAAC,EAAEzB,GAAG,QAAQ,CAAC;IACjC,MAAM,CAAC0B,UAAUxB,IAAI,GAAGT,cAAcU;IACtC,MAAM,CAACwB,OAAOC,SAAS,GAAGtC,SAA6B;QACrD,MAAMuC,QACJ,OAAOxB,iBAAiB,aAAaA,iBAAiBA;QAExD,OAAO;YACLwB;YACAC,OAAO;YACPC,cAAc;QAChB;IACF;IACA,MAAM,EAAEF,KAAK,EAAEC,KAAK,EAAEC,YAAY,EAAE,GAAGJ;IAEvC,0EAA0E;IAC1E,kCAAkC;IAClC,MAAMK,QAAQ3C,OAAO;QACnBqC,SAASO,OAAO,EAAEC,kBAAkB;QACpCN,SAAS;YAAEC;YAAOC,OAAO;YAAOC,cAAc;QAAG;IACnD,GAAGE,OAAO;IAEV,MAAME,UAAU9C,OAAOyC;IACvB,MAAMM,gBAAgBhD,YACpB,CAACiD;QACC,MAAMC,QAAQZ,SAASO,OAAO;QAC9B,IAAI,CAACK,OAAO;YACV,MAAM,IAAIC,MAAM;QAClB;QAEA,uEAAuE;QACvE,2BAA2B;QAC3B,wBAAwB,GACxB,IAAIF,eAAenB,oBAAoB,OAAOR,cAAc,UAAU;YACpE4B,MAAM5B,SAAS,GAAGA;QACpB;QAEA,MAAM,EAAEmB,KAAK,EAAE,GAAGS;QAClBA,MAAMJ,iBAAiB,CAAC;QACxBI,MAAMF,aAAa;QAEnB,sEAAsE;QACtE,WAAW;QACX,wBAAwB,GACxB,IAAIlB,oBAAoB,OAAOR,cAAc,UAAU;YACrD4B,MAAME,eAAe,CAAC;QACxB;QAEA,MAAMzC,UAA+B;YACnC8B;YACArB;YACAD;YACAE;YACAC;YACA2B;YACA/B;YACAU;YACAyB,UAAUH,MAAMG,QAAQ;YACxBC,mBAAmBJ,MAAMI,iBAAiB;QAC5C;QACA,MAAMX,eAAeP,gBAAgBzB;QACrC,MAAM+B,QAAQT,UAAU;YAAE,GAAGtB,OAAO;YAAEgC;QAAa;QAEnD,IAAII,QAAQF,OAAO,KAAKH,OAAO;YAC7BK,QAAQF,OAAO,GAAGH;YAClBR,cAAc;gBACZpB,KAAKwB;gBACLtB;gBACA0B;gBACAC;YACF;QACF;QAEA,wBAAwB,GACxB,IAAIA,iBAAiBO,MAAMI,iBAAiB,EAAE;YAC5CJ,MAAMJ,iBAAiB,CAACH;QAC1B;QAEAH,SAAS,CAACe;YACR,IACEA,UAAUd,KAAK,KAAKA,SACpBc,UAAUb,KAAK,KAAKA,SACpBa,UAAUZ,YAAY,KAAKA,cAC3B;gBACA,OAAOY;YACT;YAEA,OAAO;gBACLd;gBACAC;gBACAC;YACF;QACF;IACF,GACA;QACEb;QACAQ;QACAF;QACAH;QACAf;QACAI;QACAD;QACAL;QACAkB;QACAd;QACAD;QACAS;KACD;IAGH,MAAMG,YAAY5B,QAAQ,SAAS6B;IACnC,MAAMwB,aAEF;QACF5C;QACAE;QACAE;QACAyB;QACAC;QACAvB;QACAC;QACAC;QACAC,WAAWQ,mBAAmB2B,YAAYnC;QAC1CoC,YAAYvB,aAAa;YACvBO;YACAX;YACAY;QACF;QACApB,QAAOoC,KAAK;YACVpC,OAAOoC;YACP,IAAIA,MAAMC,oBAAoB,IAAI;gBAChC;YACF;YACAZ,cAAc;QAChB;QACAxB,UAASmC,KAAK;YACZnC,SAASmC;YACT,IAAIA,MAAMC,oBAAoB,IAAI;gBAChC;YACF;YAEA,IAAIhC,mBAAmB,QAAQ;gBAC7BY,SAAS,CAACe,YAAe,CAAA;wBACvB,GAAGA,SAAS;wBACZd,OAAOkB,MAAME,aAAa,CAACpB,KAAK;oBAClC,CAAA;gBACA;YACF;YAEAO,cAAc;QAChB;QACAvB,WAAUkC,KAAK;YACblC,UAAUkC;YACV,IACEA,MAAMC,oBAAoB,MAC1BD,MAAME,aAAa,KAAKC,SAASC,aAAa,EAC9C;gBACA;YACF;YAEA,qEAAqE;YACrE,mDAAmD;YACnD,wEAAwE;YACxE,0EAA0E;YAC1E,kCAAkC;YAClC,MAAM,EAAET,iBAAiB,EAAE,GAAGK,MAAME,aAAa;YAEjDrB,SAAS,CAACe;gBACR,IAAIA,UAAUb,KAAK,EAAE;oBACnB,OAAOa;gBACT;gBAEA,OAAO;oBACL,GAAGA,SAAS;oBACZb,OAAO;oBACPC,cAAcW;gBAChB;YACF;QACF;IACF;IAEA,IAAI,CAACzB,gBAAgB;QACnB2B,UAAU,CAAC,mBAAmB,GAAGnB;QACjCmB,WAAWQ,YAAY,GAAG;YACxBpD,IAAIyB;YACJK;YACAuB,QAAQvC,UAAUe,MAAMwB,MAAM,GAAGR;YACjCnC,WACEI,WAAW,OAAOJ,cAAc,WAAWA,YAAYmC;YACzDS,UAAUvB,gBAAgBhB;QAC5B;IACF;IAEA,OAAO;QACL,GAAGY,KAAK;QACRK;QACAJ;QACAF;QACAkB;IACF;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../src/form/useTextField.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n type Ref,\n type RefCallback,\n type RefObject,\n} from \"react\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { type UseStateInitializer, type UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredRef } from \"../useEnsuredRef.js\";\nimport { type TextFieldProps } from \"./TextField.js\";\nimport {\n type FormMessageInputLengthCounterProps,\n type FormMessageProps,\n} from \"./types.js\";\nimport {\n defaultGetErrorIcon,\n defaultGetErrorMessage,\n defaultIsErrored,\n type ErrorMessageOptions,\n type GetErrorIcon,\n type GetErrorMessage,\n type IsErrored,\n type TextFieldValidationOptions,\n type TextFieldValidationType,\n} from \"./validation.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @since 2.5.0\n * @since 6.0.0 Added the `onInvalid` handler\n */\nexport type TextFieldChangeHandlers<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> = Pick<HTMLAttributes<E>, \"onBlur\" | \"onChange\" | \"onInvalid\">;\n\n/** @since 6.0.0 */\nexport interface ErrorChangeHandlerOptions<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> {\n /**\n * A ref containing the `TextField` or `TextArea` if you need access to that\n * DOM node for error reporting.\n */\n ref: RefObject<E>;\n\n /**\n * The current name for the `TextField` or `TextArea`.\n */\n name: string;\n\n /**\n * This will be `true` when the `TextField`/`TextArea` has an error.\n */\n error: boolean;\n\n /**\n * The error message returned by {@link GetErrorMessage}/the browser's\n * validation message. This is normally an empty string when the {@link error}\n * state is `false`.\n */\n errorMessage: string;\n}\n\n/**\n * A function that reports the error state changing. A good use-case for this is\n * to keep track of all the errors within your form and keep a submit button\n * disabled until they have been resolved.\n *\n * Example:\n *\n * ```ts\n * const [errors, setErrors] = useState<Record<string, boolean | undefined>>({});\n * const onErrorChange: ErrorChangeHandler = ({ name, error }) =>\n * setErrors((prevErrors) => ({ ...prevErrors, [name]: error }));\n *\n * const invalid = Object.values(errors).some(Boolean);\n *\n * // form implementation is left as an exercise for the reader\n * <Button type=\"submit\" disabled={invalid} onClick={submitForm}>Submit</Button>\n * ```\n *\n * @since 2.5.0\n * @since 6.0.0 Changed to object argument.\n */\nexport type ErrorChangeHandler<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> = (options: ErrorChangeHandlerOptions<E>) => void;\n\n/** @since 2.5.6 */\nexport interface TextFieldHookState {\n /**\n * The current value for the `TextField` or `TextArea`.\n */\n value: string;\n\n /**\n * This will be `true` when the `TextField`/`TextArea` has an error.\n */\n error: boolean;\n\n /**\n * The error message returned by {@link GetErrorMessage}/the browser's\n * validation message. This is normally an empty string when the {@link error}\n * state is `false`.\n */\n errorMessage: string;\n}\n\n/**\n * All the props that will be generated and return from the `useTextField` hook\n * that should be passed to a `FormMessage` component.\n *\n * @since 2.5.0\n */\nexport interface ProvidedFormMessageProps\n extends Pick<FormMessageProps, \"id\" | \"theme\" | \"children\">,\n Required<Pick<TextFieldProps, \"error\">>,\n Partial<Pick<FormMessageInputLengthCounterProps, \"length\" | \"maxLength\">> {}\n\n/**\n * All the props that will be generated and returned by the `useTextField` hook\n * that should be passed to a `TextField` component.\n *\n * @since 2.5.0\n */\nexport interface ProvidedTextFieldProps<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldValidationOptions,\n TextFieldChangeHandlers<E>,\n Required<Pick<TextFieldProps, \"id\" | \"name\" | \"value\" | \"error\">>,\n Pick<TextFieldProps, \"aria-describedby\" | \"rightAddon\"> {\n /**\n * A ref that must be passed to the `TextField`/`TextArea` so that the custom\n * validity behavior can work.\n *\n * @since 6.0.0\n */\n ref: RefCallback<E>;\n}\n\n/**\n * @since 2.5.0\n */\nexport interface ProvidedTextFieldMessageProps<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends ProvidedTextFieldProps<E> {\n /**\n * These props will be defined as long as the `disableMessage` prop is not\n * `true` from the `useTextField` hook.\n */\n messageProps: ProvidedFormMessageProps;\n}\n\n/** @since 2.5.6 */\nexport interface TextFieldHookOptions<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldValidationOptions,\n TextFieldChangeHandlers<E> {\n /**\n * An optional id to use for the `TextField` or `TextArea` that is also used\n * to create an id for the inline help/error messages.\n *\n * @defaultValue `\"text-field-\" + useId()`\n */\n id?: string;\n\n /**\n * An optional ref that should be merged with the ref returned by this hook.\n * This should really only be used if you are making a custom component using\n * this hook and forwarding refs. If you need a ref to access the `<input>` or\n * `<textarea>` DOM node, you can use the `fieldRef` returned by this hook\n * instead.\n *\n * @example Accessing TextField DOM Node\n * ```tsx\n * import { TextField, useTextField } from \"@react-md/core\";\n * import { useEffect } from \"react\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { fieldRef, fieldProps } = useTextField({ name: \"example\" });\n *\n * useEffect(() => {\n * fieldRef.current;\n * // ^ HTMLInputElement | null\n * }, [fieldRef]);\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n */\n ref?: Ref<E>;\n\n /**\n * A unique name to attach to the `TextField`, `TextArea` or `Password`\n * component.\n */\n name: string;\n\n /**\n * Boolean if the `FormMessage` should also display a counter for the\n * remaining letters allowed based on the `maxLength`.\n *\n * This will still be considered false if the `maxLength` value is not\n * provided.\n *\n * @defaultValue `false`\n */\n counter?: boolean;\n\n /**\n * This is used internally for the `useNumberField` hook and probably\n * shouldn't be used otherwise. This is just passed into the\n * {@link getErrorMessage} options and is used for additional validation.\n *\n * @defaultValue `false`\n */\n isNumber?: boolean;\n\n /**\n * The default value to use for the `TextField` or `TextArea` one initial\n * render. If you want to manually change the value to something else after\n * the initial render, either change the `key` for the component containing\n * this hook, or use the `setState` function returned from this hook.\n *\n * @defaultValue `\"\"`\n */\n defaultValue?: UseStateInitializer<string>;\n\n /**\n * An optional help text to display in the `FormMessage` component when there\n * is not an error.\n */\n helpText?: ReactNode;\n\n /**\n * A function used to determine if the `TextField` or `TextArea` is an in\n * errored state.\n *\n * @see {@link defaultIsErrored}\n * @defaultValue `defaultIsErrored`\n */\n isErrored?: IsErrored;\n\n /**\n * An optional error icon used in the {@link getErrorIcon} option.\n *\n * @defaultValue `getIcon(\"error\")`\n */\n errorIcon?: ReactNode;\n\n /**\n * A function used to get the error icon to display at the right of the\n * `TextField` or `TextArea`. The default behavior will only show an icon when\n * the `error` state is `true` and an `errorIcon` option has been provided.\n *\n * @see {@link defaultGetErrorIcon}\n * @defaultValue `defaultGetErrorIcon`\n */\n getErrorIcon?: GetErrorIcon;\n\n /**\n * A function to get and display an error message based on the `TextField` or\n * `TextArea` validity.\n *\n * @see {@link defaultGetErrorMessage}\n * @defaultValue `defaultGetErrorMessage`\n */\n getErrorMessage?: GetErrorMessage;\n\n /**\n * An optional function that will be called whenever the `error` state is\n * changed. This can be used for more complex forms to `disable` the Submit\n * button or anything else if any field has an error.\n *\n * @defaultValue `() => {}`\n */\n onErrorChange?: ErrorChangeHandler<E>;\n\n /**\n * Boolean if the `TextField` or `TextArea` will **not** be rendered along\n * with a `FormMessage` component. This will prevent the `aria-describedby`\n * prop from being returned when set to `true`.\n *\n * @defaultValue `false`\n */\n disableMessage?: boolean;\n\n /**\n * Boolean if the `maxLength` prop should not be passed to the `TextField`\n * component since it will prevent any additional characters from being\n * entered in the text field which might feel like weird behavior to some\n * users. This should really only be used when the `counter` option is also\n * enabled and rendering along with a `FormMessage` component.\n *\n * @defaultValue `false`\n */\n disableMaxLength?: boolean;\n\n /**\n * @defaultValue `\"recommended\"`\n */\n validationType?: TextFieldValidationType;\n}\n\n/** @since 6.0.0 */\nexport interface TextFieldImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldHookState {\n fieldRef: RefObject<E>;\n reset(): void;\n setState: UseStateSetter<Readonly<TextFieldHookState>>;\n fieldProps: ProvidedTextFieldProps<E>;\n}\n\n/** @since 6.0.0 */\nexport interface TextFieldWithMessageImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldImplementation<E> {\n fieldProps: ProvidedTextFieldMessageProps<E>;\n}\n\n/** @since 6.0.0 */\nexport interface ValidatedTextFieldImplementation<\n E extends HTMLInputElement | HTMLTextAreaElement,\n> extends TextFieldImplementation<E> {\n fieldProps: ProvidedTextFieldProps<E> | ProvidedTextFieldMessageProps<E>;\n}\n\n/**\n * If you do not want to display the error messages below the `TextField` and\n * handle error messages separately, set the `disableMessage` option to `true`.\n *\n * @example No Inline Error Messages\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * disableMessage: true,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * Look at the other {@link useTextField} override for additional examples.\n */\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E> & { disableMessage: true }\n): TextFieldImplementation<E>;\n\n/**\n * @example Simple Example\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Inline Counter\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * counter: true,\n * required: true,\n * maxLength: 20,\n * disableMaxLength: true,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Adding Constraints\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * required: true,\n * pattern: \"^[A-z]+$\",\n * minLength: 4,\n * maxLength: 20,\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @example Custom Validation\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { TextField, useTextField } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const { fieldProps } = useTextField({\n * name: \"example\",\n * required: true,\n * getErrorMessage(options) {\n * const {\n * value,\n * pattern,\n * required,\n * minLength,\n * maxLength,\n * validity,\n * validationMessage,\n * isNumber,\n * isBlurEvent,\n * validationType,\n * } = options;\n *\n * if (validity.tooLong) {\n * return `No more than ${maxLength} characters.`;\n * }\n *\n * if (validity.tooShort) {\n * return `No more than ${minLength} characters.`;\n * }\n *\n * if (validity.valueMissing) {\n * return \"This value is required!\";\n * }\n *\n * if (value === \"bad value\") {\n * return \"Value cannot be bad value\";\n * }\n *\n * return defaultGetErrorMessage(options);\n * }\n * });\n *\n * return <TextField {...fieldProps} label=\"Example\" />;\n * }\n * ```\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation\n * @since 2.5.6\n * @since 6.0.0 This hook returns an object instead of an ordered list.\n */\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E>\n): TextFieldWithMessageImplementation<E>;\nexport function useTextField<E extends HTMLInputElement | HTMLTextAreaElement>(\n options: TextFieldHookOptions<E>\n): ValidatedTextFieldImplementation<E> {\n const {\n id: propId,\n ref: propRef,\n name,\n defaultValue = \"\",\n isNumber = false,\n required,\n pattern,\n minLength,\n maxLength,\n onBlur = noop,\n onChange = noop,\n onInvalid = noop,\n counter = false,\n helpText,\n validationType = \"recommended\",\n disableMessage = false,\n disableMaxLength = false,\n errorIcon: propErrorIcon,\n isErrored = defaultIsErrored,\n onErrorChange = noop,\n getErrorIcon = defaultGetErrorIcon,\n getErrorMessage = defaultGetErrorMessage,\n } = options;\n\n const id = useEnsuredId(propId, \"text-field\");\n const messageId = `${id}-message`;\n const [fieldRef, ref] = useEnsuredRef(propRef);\n const [state, setState] = useState<TextFieldHookState>(() => {\n const value =\n typeof defaultValue === \"function\" ? defaultValue() : defaultValue;\n\n return {\n value,\n error: false,\n errorMessage: \"\",\n };\n });\n const { value, error, errorMessage } = state;\n\n // using a `ref` instead of a `useCallback` makes it so the `defaultValue`\n // will always be used once reset.\n const reset = useRef(() => {\n fieldRef.current?.setCustomValidity(\"\");\n setState({ value, error: false, errorMessage: \"\" });\n }).current;\n\n const errored = useRef(error);\n const checkValidity = useCallback(\n (isBlurEvent: boolean) => {\n const field = fieldRef.current;\n if (!field) {\n throw new Error(\"Unable to check validity due to missing ref\");\n }\n\n // need to temporarily set the `maxLength` back so it can be \"verified\"\n // through the validity api\n /* istanbul ignore next */\n if (isBlurEvent && disableMaxLength && typeof maxLength === \"number\") {\n field.maxLength = maxLength;\n }\n\n const { value } = field;\n field.setCustomValidity(\"\");\n field.checkValidity();\n\n // remove the temporarily set `maxLength` attribute after checking the\n // validity\n /* istanbul ignore next */\n if (disableMaxLength && typeof maxLength === \"number\") {\n field.removeAttribute(\"maxLength\");\n }\n\n const options: ErrorMessageOptions = {\n value,\n pattern,\n required,\n minLength,\n maxLength,\n isBlurEvent,\n isNumber,\n validationType,\n validity: field.validity,\n validationMessage: field.validationMessage,\n };\n const errorMessage = getErrorMessage(options);\n const error = isErrored({ ...options, errorMessage });\n\n if (errored.current !== error) {\n errored.current = error;\n onErrorChange({\n ref: fieldRef,\n name,\n error,\n errorMessage,\n });\n }\n\n /* istanbul ignore next */\n if (errorMessage !== field.validationMessage) {\n field.setCustomValidity(errorMessage);\n }\n\n setState((prevState) => {\n if (\n prevState.value === value &&\n prevState.error === error &&\n prevState.errorMessage === errorMessage\n ) {\n return prevState;\n }\n\n return {\n value,\n error,\n errorMessage,\n };\n });\n },\n [\n disableMaxLength,\n fieldRef,\n getErrorMessage,\n isErrored,\n isNumber,\n maxLength,\n minLength,\n name,\n onErrorChange,\n pattern,\n required,\n validationType,\n ]\n );\n\n const errorIcon = getIcon(\"error\", propErrorIcon);\n const fieldProps: ProvidedTextFieldProps<E> & {\n messageProps?: ProvidedFormMessageProps;\n } = {\n id,\n ref,\n name,\n value,\n error,\n required,\n pattern,\n minLength,\n maxLength: disableMaxLength ? undefined : maxLength,\n rightAddon: getErrorIcon({\n error,\n errorIcon,\n errorMessage,\n }),\n onBlur(event) {\n onBlur(event);\n if (event.isPropagationStopped()) {\n return;\n }\n checkValidity(true);\n },\n onChange(event) {\n onChange(event);\n if (event.isPropagationStopped()) {\n return;\n }\n\n if (validationType === \"blur\") {\n setState((prevState) => ({\n ...prevState,\n value: event.currentTarget.value,\n }));\n return;\n }\n\n checkValidity(false);\n },\n onInvalid(event) {\n onInvalid(event);\n if (\n event.isPropagationStopped() ||\n event.currentTarget === document.activeElement\n ) {\n return;\n }\n\n // this makes it so that if a submit button is clicked in a form, all\n // textfields will gain the error state immediately\n // also need to extract the validationMessage immediately because of the\n // SyntheticEvent behavior in React. By the time the `setState` is called,\n // the event might've been deleted\n const { validationMessage } = event.currentTarget;\n\n setState((prevState) => {\n if (prevState.error) {\n return prevState;\n }\n\n return {\n ...prevState,\n error: true,\n errorMessage: validationMessage,\n };\n });\n },\n };\n\n if (!disableMessage) {\n fieldProps[\"aria-describedby\"] = messageId;\n fieldProps.messageProps = {\n id: messageId,\n error,\n length: counter ? value.length : undefined,\n maxLength:\n counter && typeof maxLength === \"number\" ? maxLength : undefined,\n children: errorMessage || helpText,\n };\n }\n\n return {\n ...state,\n reset,\n setState,\n fieldRef,\n fieldProps,\n };\n}\n"],"names":["useCallback","useRef","useState","getIcon","useEnsuredId","useEnsuredRef","defaultGetErrorIcon","defaultGetErrorMessage","defaultIsErrored","noop","useTextField","options","id","propId","ref","propRef","name","defaultValue","isNumber","required","pattern","minLength","maxLength","onBlur","onChange","onInvalid","counter","helpText","validationType","disableMessage","disableMaxLength","errorIcon","propErrorIcon","isErrored","onErrorChange","getErrorIcon","getErrorMessage","messageId","fieldRef","state","setState","value","error","errorMessage","reset","current","setCustomValidity","errored","checkValidity","isBlurEvent","field","Error","removeAttribute","validity","validationMessage","prevState","fieldProps","undefined","rightAddon","event","isPropagationStopped","currentTarget","document","activeElement","messageProps","length","children"],"mappings":"AAAA;AACA,SACEA,WAAW,EACXC,MAAM,EACNC,QAAQ,QAMH,QAAQ;AACf,SAASC,OAAO,QAAQ,wBAAwB;AAEhD,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,aAAa,QAAQ,sBAAsB;AAMpD,SACEC,mBAAmB,EACnBC,sBAAsB,EACtBC,gBAAgB,QAOX,kBAAkB;AAEzB,MAAMC,OAAO;AACX,aAAa;AACf;AAkbA,OAAO,SAASC,aACdC,OAAgC;IAEhC,MAAM,EACJC,IAAIC,MAAM,EACVC,KAAKC,OAAO,EACZC,IAAI,EACJC,eAAe,EAAE,EACjBC,WAAW,KAAK,EAChBC,QAAQ,EACRC,OAAO,EACPC,SAAS,EACTC,SAAS,EACTC,SAASd,IAAI,EACbe,WAAWf,IAAI,EACfgB,YAAYhB,IAAI,EAChBiB,UAAU,KAAK,EACfC,QAAQ,EACRC,iBAAiB,aAAa,EAC9BC,iBAAiB,KAAK,EACtBC,mBAAmB,KAAK,EACxBC,WAAWC,aAAa,EACxBC,YAAYzB,gBAAgB,EAC5B0B,gBAAgBzB,IAAI,EACpB0B,eAAe7B,mBAAmB,EAClC8B,kBAAkB7B,sBAAsB,EACzC,GAAGI;IAEJ,MAAMC,KAAKR,aAAaS,QAAQ;IAChC,MAAMwB,YAAY,CAAC,EAAEzB,GAAG,QAAQ,CAAC;IACjC,MAAM,CAAC0B,UAAUxB,IAAI,GAAGT,cAAcU;IACtC,MAAM,CAACwB,OAAOC,SAAS,GAAGtC,SAA6B;QACrD,MAAMuC,QACJ,OAAOxB,iBAAiB,aAAaA,iBAAiBA;QAExD,OAAO;YACLwB;YACAC,OAAO;YACPC,cAAc;QAChB;IACF;IACA,MAAM,EAAEF,KAAK,EAAEC,KAAK,EAAEC,YAAY,EAAE,GAAGJ;IAEvC,0EAA0E;IAC1E,kCAAkC;IAClC,MAAMK,QAAQ3C,OAAO;QACnBqC,SAASO,OAAO,EAAEC,kBAAkB;QACpCN,SAAS;YAAEC;YAAOC,OAAO;YAAOC,cAAc;QAAG;IACnD,GAAGE,OAAO;IAEV,MAAME,UAAU9C,OAAOyC;IACvB,MAAMM,gBAAgBhD,YACpB,CAACiD;QACC,MAAMC,QAAQZ,SAASO,OAAO;QAC9B,IAAI,CAACK,OAAO;YACV,MAAM,IAAIC,MAAM;QAClB;QAEA,uEAAuE;QACvE,2BAA2B;QAC3B,wBAAwB,GACxB,IAAIF,eAAenB,oBAAoB,OAAOR,cAAc,UAAU;YACpE4B,MAAM5B,SAAS,GAAGA;QACpB;QAEA,MAAM,EAAEmB,KAAK,EAAE,GAAGS;QAClBA,MAAMJ,iBAAiB,CAAC;QACxBI,MAAMF,aAAa;QAEnB,sEAAsE;QACtE,WAAW;QACX,wBAAwB,GACxB,IAAIlB,oBAAoB,OAAOR,cAAc,UAAU;YACrD4B,MAAME,eAAe,CAAC;QACxB;QAEA,MAAMzC,UAA+B;YACnC8B;YACArB;YACAD;YACAE;YACAC;YACA2B;YACA/B;YACAU;YACAyB,UAAUH,MAAMG,QAAQ;YACxBC,mBAAmBJ,MAAMI,iBAAiB;QAC5C;QACA,MAAMX,eAAeP,gBAAgBzB;QACrC,MAAM+B,QAAQT,UAAU;YAAE,GAAGtB,OAAO;YAAEgC;QAAa;QAEnD,IAAII,QAAQF,OAAO,KAAKH,OAAO;YAC7BK,QAAQF,OAAO,GAAGH;YAClBR,cAAc;gBACZpB,KAAKwB;gBACLtB;gBACA0B;gBACAC;YACF;QACF;QAEA,wBAAwB,GACxB,IAAIA,iBAAiBO,MAAMI,iBAAiB,EAAE;YAC5CJ,MAAMJ,iBAAiB,CAACH;QAC1B;QAEAH,SAAS,CAACe;YACR,IACEA,UAAUd,KAAK,KAAKA,SACpBc,UAAUb,KAAK,KAAKA,SACpBa,UAAUZ,YAAY,KAAKA,cAC3B;gBACA,OAAOY;YACT;YAEA,OAAO;gBACLd;gBACAC;gBACAC;YACF;QACF;IACF,GACA;QACEb;QACAQ;QACAF;QACAH;QACAf;QACAI;QACAD;QACAL;QACAkB;QACAd;QACAD;QACAS;KACD;IAGH,MAAMG,YAAY5B,QAAQ,SAAS6B;IACnC,MAAMwB,aAEF;QACF5C;QACAE;QACAE;QACAyB;QACAC;QACAvB;QACAC;QACAC;QACAC,WAAWQ,mBAAmB2B,YAAYnC;QAC1CoC,YAAYvB,aAAa;YACvBO;YACAX;YACAY;QACF;QACApB,QAAOoC,KAAK;YACVpC,OAAOoC;YACP,IAAIA,MAAMC,oBAAoB,IAAI;gBAChC;YACF;YACAZ,cAAc;QAChB;QACAxB,UAASmC,KAAK;YACZnC,SAASmC;YACT,IAAIA,MAAMC,oBAAoB,IAAI;gBAChC;YACF;YAEA,IAAIhC,mBAAmB,QAAQ;gBAC7BY,SAAS,CAACe,YAAe,CAAA;wBACvB,GAAGA,SAAS;wBACZd,OAAOkB,MAAME,aAAa,CAACpB,KAAK;oBAClC,CAAA;gBACA;YACF;YAEAO,cAAc;QAChB;QACAvB,WAAUkC,KAAK;YACblC,UAAUkC;YACV,IACEA,MAAMC,oBAAoB,MAC1BD,MAAME,aAAa,KAAKC,SAASC,aAAa,EAC9C;gBACA;YACF;YAEA,qEAAqE;YACrE,mDAAmD;YACnD,wEAAwE;YACxE,0EAA0E;YAC1E,kCAAkC;YAClC,MAAM,EAAET,iBAAiB,EAAE,GAAGK,MAAME,aAAa;YAEjDrB,SAAS,CAACe;gBACR,IAAIA,UAAUb,KAAK,EAAE;oBACnB,OAAOa;gBACT;gBAEA,OAAO;oBACL,GAAGA,SAAS;oBACZb,OAAO;oBACPC,cAAcW;gBAChB;YACF;QACF;IACF;IAEA,IAAI,CAACzB,gBAAgB;QACnB2B,UAAU,CAAC,mBAAmB,GAAGnB;QACjCmB,WAAWQ,YAAY,GAAG;YACxBpD,IAAIyB;YACJK;YACAuB,QAAQvC,UAAUe,MAAMwB,MAAM,GAAGR;YACjCnC,WACEI,WAAW,OAAOJ,cAAc,WAAWA,YAAYmC;YACzDS,UAAUvB,gBAAgBhB;QAC5B;IACF;IAEA,OAAO;QACL,GAAGY,KAAK;QACRK;QACAJ;QACAF;QACAkB;IACF;AACF"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { type CSSProperties, type Ref, type RefCallback } from "react";
|
|
2
|
+
import { type FormTheme } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* @since 6.0.0
|
|
5
|
+
*/
|
|
6
|
+
export interface TextFieldContainerAddonsOptions {
|
|
7
|
+
/**
|
|
8
|
+
* This style will automatically be merged with the returned `style`.
|
|
9
|
+
*/
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
/** @defaultValue `getFormConfig("theme")` */
|
|
12
|
+
theme?: FormTheme;
|
|
13
|
+
/**
|
|
14
|
+
* Set this to `true` if the `leftAddon` should be watched for size changes.
|
|
15
|
+
*/
|
|
16
|
+
leftAddon: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* An optional ref that will be merged with the returned
|
|
19
|
+
* {@link TextFieldContainerAddonsImplementation.leftAddonRef}.
|
|
20
|
+
*/
|
|
21
|
+
leftAddonRef?: Ref<HTMLSpanElement>;
|
|
22
|
+
/**
|
|
23
|
+
* This can be used to update the CSS `calc()` expression to change the
|
|
24
|
+
* padding.
|
|
25
|
+
*
|
|
26
|
+
* @example Add an additional 0.25rem padding
|
|
27
|
+
* ```
|
|
28
|
+
* leftAddonExtraCalc="+ 0.25rem"
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @defaultValue `""`
|
|
32
|
+
*/
|
|
33
|
+
leftAddonExtraCalc?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Set this to `true` if the `rightAddon` should be watched for size changes.
|
|
36
|
+
*/
|
|
37
|
+
rightAddon: boolean;
|
|
38
|
+
/**
|
|
39
|
+
* An optional ref that will be merged with the returned
|
|
40
|
+
* {@link TextFieldContainerAddonsImplementation.rightAddonRef}.
|
|
41
|
+
*/
|
|
42
|
+
rightAddonRef?: Ref<HTMLSpanElement>;
|
|
43
|
+
/**
|
|
44
|
+
* This can be used to update the CSS `calc()` expression to change the
|
|
45
|
+
* padding.
|
|
46
|
+
*
|
|
47
|
+
* @example Add an additional 0.25rem padding
|
|
48
|
+
* ```
|
|
49
|
+
* leftAddonExtraCalc="+ 0.25rem"
|
|
50
|
+
* ```
|
|
51
|
+
*
|
|
52
|
+
* @defaultValue `""`
|
|
53
|
+
*/
|
|
54
|
+
rightAddonExtraCalc?: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* @since 6.0.0
|
|
58
|
+
*/
|
|
59
|
+
export interface TextFieldContainerAddonsImplementation {
|
|
60
|
+
style?: CSSProperties;
|
|
61
|
+
leftAddonRef: RefCallback<HTMLSpanElement>;
|
|
62
|
+
rightAddonRef: RefCallback<HTMLSpanElement>;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* This hook can be used to automatically update the padding on the
|
|
66
|
+
* `TextFieldContainer` based on the size of the `leftAddon` and `rightAddon`.
|
|
67
|
+
*
|
|
68
|
+
* @example Simple Example
|
|
69
|
+
* ```tsx
|
|
70
|
+
* const { style, leftAddonRef, rightAddonRef } = useTextFieldContainerAddons({
|
|
71
|
+
* leftAddon: true,
|
|
72
|
+
* rightAddon: true,
|
|
73
|
+
* });
|
|
74
|
+
*
|
|
75
|
+
* return (
|
|
76
|
+
* <TextField
|
|
77
|
+
* style={style}
|
|
78
|
+
* leftAddon={<SomeDynamicAddon />}
|
|
79
|
+
* leftAddonProps={{ ref: leftAddonRef }}
|
|
80
|
+
* rightAddon={<SomeDynamicAddon />}
|
|
81
|
+
* rightAddonProps={{ ref: rightAddonRef }}
|
|
82
|
+
* />
|
|
83
|
+
* );
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @since 6.0.0
|
|
87
|
+
*/
|
|
88
|
+
export declare function useTextFieldContainerAddons(options: TextFieldContainerAddonsOptions): TextFieldContainerAddonsImplementation;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useCallback, useState } from "react";
|
|
3
|
+
import { useResizeObserver } from "../useResizeObserver.js";
|
|
4
|
+
import { getFormConfig } from "./formConfig.js";
|
|
5
|
+
/**
|
|
6
|
+
* @since 6.0.0
|
|
7
|
+
* @internal
|
|
8
|
+
*/ function useAddonPadding(options) {
|
|
9
|
+
const { ref, addon, theme, extra } = options;
|
|
10
|
+
const [padding, setPadding] = useState();
|
|
11
|
+
const addonRef = useResizeObserver({
|
|
12
|
+
ref,
|
|
13
|
+
onUpdate: useCallback((entry)=>{
|
|
14
|
+
const inlineSize = entry.borderBoxSize[0]?.inlineSize;
|
|
15
|
+
if (typeof inlineSize !== "number") {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
// the leading space for the extra calc is required
|
|
19
|
+
setPadding(`calc(var(--rmd-text-field-${theme}d-padding) + ${inlineSize}px${extra ? ` ${extra}` : ""})`);
|
|
20
|
+
}, [
|
|
21
|
+
extra,
|
|
22
|
+
theme
|
|
23
|
+
]),
|
|
24
|
+
disabled: !addon,
|
|
25
|
+
disableHeight: true
|
|
26
|
+
});
|
|
27
|
+
return [
|
|
28
|
+
padding,
|
|
29
|
+
addonRef
|
|
30
|
+
];
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* This hook can be used to automatically update the padding on the
|
|
34
|
+
* `TextFieldContainer` based on the size of the `leftAddon` and `rightAddon`.
|
|
35
|
+
*
|
|
36
|
+
* @example Simple Example
|
|
37
|
+
* ```tsx
|
|
38
|
+
* const { style, leftAddonRef, rightAddonRef } = useTextFieldContainerAddons({
|
|
39
|
+
* leftAddon: true,
|
|
40
|
+
* rightAddon: true,
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* return (
|
|
44
|
+
* <TextField
|
|
45
|
+
* style={style}
|
|
46
|
+
* leftAddon={<SomeDynamicAddon />}
|
|
47
|
+
* leftAddonProps={{ ref: leftAddonRef }}
|
|
48
|
+
* rightAddon={<SomeDynamicAddon />}
|
|
49
|
+
* rightAddonProps={{ ref: rightAddonRef }}
|
|
50
|
+
* />
|
|
51
|
+
* );
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @since 6.0.0
|
|
55
|
+
*/ export function useTextFieldContainerAddons(options) {
|
|
56
|
+
const { style: propStyle, theme: propTheme, leftAddon, rightAddon, leftAddonRef: propLeftAddonRef, rightAddonRef: propRightAddonRef, leftAddonExtraCalc = "", rightAddonExtraCalc = "" } = options;
|
|
57
|
+
const theme = getFormConfig("theme", propTheme);
|
|
58
|
+
const [paddingLeft, leftAddonRef] = useAddonPadding({
|
|
59
|
+
ref: propLeftAddonRef,
|
|
60
|
+
theme,
|
|
61
|
+
addon: leftAddon,
|
|
62
|
+
extra: `+ var(--rmd-addon-spacing)${leftAddonExtraCalc ? ` ${leftAddonExtraCalc}` : ""}`
|
|
63
|
+
});
|
|
64
|
+
const [paddingRight, rightAddonRef] = useAddonPadding({
|
|
65
|
+
ref: propRightAddonRef,
|
|
66
|
+
theme,
|
|
67
|
+
addon: rightAddon,
|
|
68
|
+
extra: rightAddonExtraCalc
|
|
69
|
+
});
|
|
70
|
+
let style = propStyle;
|
|
71
|
+
if (typeof paddingLeft === "string" || typeof paddingRight === "string") {
|
|
72
|
+
style = {
|
|
73
|
+
...propStyle,
|
|
74
|
+
"--rmd-text-field-padding-left": paddingLeft ?? propStyle?.["--rmd-text-field-padding-left"],
|
|
75
|
+
"--rmd-text-field-padding-right": paddingRight ?? propStyle?.["--rmd-text-field-padding-right"]
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
return {
|
|
79
|
+
style,
|
|
80
|
+
leftAddonRef,
|
|
81
|
+
rightAddonRef
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
//# sourceMappingURL=useTextFieldContainerAddons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/form/useTextFieldContainerAddons.ts"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useState,\n type CSSProperties,\n type Ref,\n type RefCallback,\n} from \"react\";\nimport { useResizeObserver } from \"../useResizeObserver.js\";\nimport { getFormConfig } from \"./formConfig.js\";\nimport { type FormTheme } from \"./types.js\";\n\n/**\n * @since 6.0.0\n * @internal\n */\ninterface AddonPaddingOptions {\n ref?: Ref<HTMLSpanElement>;\n addon: boolean;\n theme: FormTheme;\n extra: string;\n}\n\n/**\n * @since 6.0.0\n * @internal\n */\nfunction useAddonPadding(\n options: AddonPaddingOptions\n): [padding: string | undefined, addonRef: RefCallback<HTMLSpanElement>] {\n const { ref, addon, theme, extra } = options;\n const [padding, setPadding] = useState<string | undefined>();\n const addonRef = useResizeObserver({\n ref,\n onUpdate: useCallback(\n (entry) => {\n const inlineSize = entry.borderBoxSize[0]?.inlineSize;\n if (typeof inlineSize !== \"number\") {\n return;\n }\n\n // the leading space for the extra calc is required\n setPadding(\n `calc(var(--rmd-text-field-${theme}d-padding) + ${inlineSize}px${extra ? ` ${extra}` : \"\"})`\n );\n },\n [extra, theme]\n ),\n disabled: !addon,\n disableHeight: true,\n });\n\n return [padding, addonRef];\n}\n\n/**\n * @since 6.0.0\n */\nexport interface TextFieldContainerAddonsOptions {\n /**\n * This style will automatically be merged with the returned `style`.\n */\n style?: CSSProperties;\n\n /** @defaultValue `getFormConfig(\"theme\")` */\n theme?: FormTheme;\n\n /**\n * Set this to `true` if the `leftAddon` should be watched for size changes.\n */\n leftAddon: boolean;\n\n /**\n * An optional ref that will be merged with the returned\n * {@link TextFieldContainerAddonsImplementation.leftAddonRef}.\n */\n leftAddonRef?: Ref<HTMLSpanElement>;\n\n /**\n * This can be used to update the CSS `calc()` expression to change the\n * padding.\n *\n * @example Add an additional 0.25rem padding\n * ```\n * leftAddonExtraCalc=\"+ 0.25rem\"\n * ```\n *\n * @defaultValue `\"\"`\n */\n leftAddonExtraCalc?: string;\n\n /**\n * Set this to `true` if the `rightAddon` should be watched for size changes.\n */\n rightAddon: boolean;\n\n /**\n * An optional ref that will be merged with the returned\n * {@link TextFieldContainerAddonsImplementation.rightAddonRef}.\n */\n rightAddonRef?: Ref<HTMLSpanElement>;\n\n /**\n * This can be used to update the CSS `calc()` expression to change the\n * padding.\n *\n * @example Add an additional 0.25rem padding\n * ```\n * leftAddonExtraCalc=\"+ 0.25rem\"\n * ```\n *\n * @defaultValue `\"\"`\n */\n rightAddonExtraCalc?: string;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface TextFieldContainerAddonsImplementation {\n style?: CSSProperties;\n leftAddonRef: RefCallback<HTMLSpanElement>;\n rightAddonRef: RefCallback<HTMLSpanElement>;\n}\n\n/**\n * This hook can be used to automatically update the padding on the\n * `TextFieldContainer` based on the size of the `leftAddon` and `rightAddon`.\n *\n * @example Simple Example\n * ```tsx\n * const { style, leftAddonRef, rightAddonRef } = useTextFieldContainerAddons({\n * leftAddon: true,\n * rightAddon: true,\n * });\n *\n * return (\n * <TextField\n * style={style}\n * leftAddon={<SomeDynamicAddon />}\n * leftAddonProps={{ ref: leftAddonRef }}\n * rightAddon={<SomeDynamicAddon />}\n * rightAddonProps={{ ref: rightAddonRef }}\n * />\n * );\n * ```\n *\n * @since 6.0.0\n */\nexport function useTextFieldContainerAddons(\n options: TextFieldContainerAddonsOptions\n): TextFieldContainerAddonsImplementation {\n const {\n style: propStyle,\n theme: propTheme,\n leftAddon,\n rightAddon,\n leftAddonRef: propLeftAddonRef,\n rightAddonRef: propRightAddonRef,\n leftAddonExtraCalc = \"\",\n rightAddonExtraCalc = \"\",\n } = options;\n const theme = getFormConfig(\"theme\", propTheme);\n\n const [paddingLeft, leftAddonRef] = useAddonPadding({\n ref: propLeftAddonRef,\n theme,\n addon: leftAddon,\n extra: `+ var(--rmd-addon-spacing)${leftAddonExtraCalc ? ` ${leftAddonExtraCalc}` : \"\"}`,\n });\n\n const [paddingRight, rightAddonRef] = useAddonPadding({\n ref: propRightAddonRef,\n theme,\n addon: rightAddon,\n extra: rightAddonExtraCalc,\n });\n\n let style = propStyle;\n if (typeof paddingLeft === \"string\" || typeof paddingRight === \"string\") {\n style = {\n ...propStyle,\n \"--rmd-text-field-padding-left\":\n paddingLeft ?? propStyle?.[\"--rmd-text-field-padding-left\"],\n \"--rmd-text-field-padding-right\":\n paddingRight ?? propStyle?.[\"--rmd-text-field-padding-right\"],\n };\n }\n\n return {\n style,\n leftAddonRef,\n rightAddonRef,\n };\n}\n"],"names":["useCallback","useState","useResizeObserver","getFormConfig","useAddonPadding","options","ref","addon","theme","extra","padding","setPadding","addonRef","onUpdate","entry","inlineSize","borderBoxSize","disabled","disableHeight","useTextFieldContainerAddons","style","propStyle","propTheme","leftAddon","rightAddon","leftAddonRef","propLeftAddonRef","rightAddonRef","propRightAddonRef","leftAddonExtraCalc","rightAddonExtraCalc","paddingLeft","paddingRight"],"mappings":"AAAA;AACA,SACEA,WAAW,EACXC,QAAQ,QAIH,QAAQ;AACf,SAASC,iBAAiB,QAAQ,0BAA0B;AAC5D,SAASC,aAAa,QAAQ,kBAAkB;AAchD;;;CAGC,GACD,SAASC,gBACPC,OAA4B;IAE5B,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGJ;IACrC,MAAM,CAACK,SAASC,WAAW,GAAGV;IAC9B,MAAMW,WAAWV,kBAAkB;QACjCI;QACAO,UAAUb,YACR,CAACc;YACC,MAAMC,aAAaD,MAAME,aAAa,CAAC,EAAE,EAAED;YAC3C,IAAI,OAAOA,eAAe,UAAU;gBAClC;YACF;YAEA,mDAAmD;YACnDJ,WACE,CAAC,0BAA0B,EAAEH,MAAM,aAAa,EAAEO,WAAW,EAAE,EAAEN,QAAQ,CAAC,CAAC,EAAEA,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QAEhG,GACA;YAACA;YAAOD;SAAM;QAEhBS,UAAU,CAACV;QACXW,eAAe;IACjB;IAEA,OAAO;QAACR;QAASE;KAAS;AAC5B;AAwEA;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,SAASO,4BACdd,OAAwC;IAExC,MAAM,EACJe,OAAOC,SAAS,EAChBb,OAAOc,SAAS,EAChBC,SAAS,EACTC,UAAU,EACVC,cAAcC,gBAAgB,EAC9BC,eAAeC,iBAAiB,EAChCC,qBAAqB,EAAE,EACvBC,sBAAsB,EAAE,EACzB,GAAGzB;IACJ,MAAMG,QAAQL,cAAc,SAASmB;IAErC,MAAM,CAACS,aAAaN,aAAa,GAAGrB,gBAAgB;QAClDE,KAAKoB;QACLlB;QACAD,OAAOgB;QACPd,OAAO,CAAC,0BAA0B,EAAEoB,qBAAqB,CAAC,CAAC,EAAEA,mBAAmB,CAAC,GAAG,GAAG,CAAC;IAC1F;IAEA,MAAM,CAACG,cAAcL,cAAc,GAAGvB,gBAAgB;QACpDE,KAAKsB;QACLpB;QACAD,OAAOiB;QACPf,OAAOqB;IACT;IAEA,IAAIV,QAAQC;IACZ,IAAI,OAAOU,gBAAgB,YAAY,OAAOC,iBAAiB,UAAU;QACvEZ,QAAQ;YACN,GAAGC,SAAS;YACZ,iCACEU,eAAeV,WAAW,CAAC,gCAAgC;YAC7D,kCACEW,gBAAgBX,WAAW,CAAC,iCAAiC;QACjE;IACF;IAEA,OAAO;QACLD;QACAK;QACAE;IACF;AACF"}
|
package/dist/form/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/utils.ts"],"sourcesContent":["import { type KeyboardEvent } from \"react\";\n\n/**\n * This util should be used to implement the native \"Enter\" keypress behavior\n * for \"fake\" form components to submit the form if exists.\n *\n * The way this will work will be:\n * - attempt to find a form by querying for a parent form element. if no parent\n * form element can be found, try to use the `formId` in a\n * `document.getElementById`\n * - if a form element is found, find the submit button within the form. If\n * there are no submit buttons within the form, try to find a submit button in\n * the document that is linked to this form by `form={formId}`\n * - if the submit button was found, click it to trigger the form submit\n * behavior\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit\n * @internal\n * @since 2.7.0\n * @since 6.0.0 No longer returns a boolean, added the `formId` parameter, and\n * moved into the form package.\n * @since 6.0.0 Uses `form.requestSubmit` instead of clicking the submit button\n */\nexport function tryToSubmitRelatedForm<E extends HTMLElement>(\n event: KeyboardEvent<E>,\n formId: string | undefined\n): void {\n const { currentTarget } = event;\n let form: HTMLElement | null = null;\n if (formId) {\n form = document.getElementById(formId);\n } else {\n form = currentTarget.closest(\"form\");\n }\n\n if (!form || !(form instanceof HTMLFormElement)) {\n return;\n }\n\n formId = formId || form.id;\n let submit = form.querySelector<HTMLButtonElement>('[type=\"submit\"]');\n if (!submit && formId) {\n submit = document.querySelector<HTMLButtonElement>(\n `[type=\"submit\"][form=\"${formId}\"]`\n );\n }\n\n form.requestSubmit(submit);\n}\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport type EditableHTMLElement = HTMLInputElement | HTMLTextAreaElement;\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport type ChangeableHTMLElement = EditableHTMLElement | HTMLSelectElement;\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport function isChangeableHTMLElement(\n element: Element | null\n): element is ChangeableHTMLElement {\n return !!element && \"value\" in element;\n}\n\n/**\n * This is used to trigger a change event for a form element.\n *\n * @internal\n * @see https://stackoverflow.com/a/46012210\n * @since 6.0.0\n */\nexport function triggerManualChangeEvent(\n element: ChangeableHTMLElement | null,\n value: string | number\n): void {\n if (!element) {\n return;\n }\n\n const prototype = Object.getPrototypeOf(element);\n const setter = Object.getOwnPropertyDescriptor(prototype, \"value\")?.set;\n if (!setter) {\n return;\n }\n\n setter.call(element, value);\n const event = new Event(\"input\", { bubbles: true });\n element.dispatchEvent(event);\n}\n"],"names":["tryToSubmitRelatedForm","event","formId","currentTarget","form","document","getElementById","closest","HTMLFormElement","id","submit","querySelector","requestSubmit","isChangeableHTMLElement","element","triggerManualChangeEvent","value","prototype","Object","getPrototypeOf","setter","getOwnPropertyDescriptor","set","call","Event","bubbles","dispatchEvent"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/utils.ts"],"sourcesContent":["import { type KeyboardEvent } from \"react\";\n\n/**\n * This util should be used to implement the native \"Enter\" keypress behavior\n * for \"fake\" form components to submit the form if exists.\n *\n * The way this will work will be:\n * - attempt to find a form by querying for a parent form element. if no parent\n * form element can be found, try to use the `formId` in a\n * `document.getElementById`\n * - if a form element is found, find the submit button within the form. If\n * there are no submit buttons within the form, try to find a submit button in\n * the document that is linked to this form by `form={formId}`\n * - if the submit button was found, click it to trigger the form submit\n * behavior\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/requestSubmit\n * @see https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/submit\n * @internal\n * @since 2.7.0\n * @since 6.0.0 No longer returns a boolean, added the `formId` parameter, and\n * moved into the form package.\n * @since 6.0.0 Uses `form.requestSubmit` instead of clicking the submit button\n */\nexport function tryToSubmitRelatedForm<E extends HTMLElement>(\n event: KeyboardEvent<E>,\n formId: string | undefined\n): void {\n const { currentTarget } = event;\n let form: HTMLElement | null = null;\n if (formId) {\n form = document.getElementById(formId);\n } else {\n form = currentTarget.closest(\"form\");\n }\n\n if (!form || !(form instanceof HTMLFormElement)) {\n return;\n }\n\n formId = formId || form.id;\n let submit = form.querySelector<HTMLButtonElement>('[type=\"submit\"]');\n if (!submit && formId) {\n submit = document.querySelector<HTMLButtonElement>(\n `[type=\"submit\"][form=\"${formId}\"]`\n );\n }\n\n form.requestSubmit(submit);\n}\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport type EditableHTMLElement = HTMLInputElement | HTMLTextAreaElement;\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport type ChangeableHTMLElement = EditableHTMLElement | HTMLSelectElement;\n\n/**\n * @internal\n * @since 6.0.0\n */\nexport function isChangeableHTMLElement(\n element: Element | null\n): element is ChangeableHTMLElement {\n return !!element && \"value\" in element;\n}\n\n/**\n * This is used to trigger a change event for a form element.\n *\n * @internal\n * @see https://stackoverflow.com/a/46012210\n * @since 6.0.0\n */\nexport function triggerManualChangeEvent(\n element: ChangeableHTMLElement | null,\n value: string | number\n): void {\n if (!element) {\n return;\n }\n\n const prototype = Object.getPrototypeOf(element);\n const setter = Object.getOwnPropertyDescriptor(prototype, \"value\")?.set;\n if (!setter) {\n return;\n }\n\n setter.call(element, value);\n const event = new Event(\"input\", { bubbles: true });\n element.dispatchEvent(event);\n}\n"],"names":["tryToSubmitRelatedForm","event","formId","currentTarget","form","document","getElementById","closest","HTMLFormElement","id","submit","querySelector","requestSubmit","isChangeableHTMLElement","element","triggerManualChangeEvent","value","prototype","Object","getPrototypeOf","setter","getOwnPropertyDescriptor","set","call","Event","bubbles","dispatchEvent"],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;CAqBC,GACD,OAAO,SAASA,uBACdC,KAAuB,EACvBC,MAA0B;IAE1B,MAAM,EAAEC,aAAa,EAAE,GAAGF;IAC1B,IAAIG,OAA2B;IAC/B,IAAIF,QAAQ;QACVE,OAAOC,SAASC,cAAc,CAACJ;IACjC,OAAO;QACLE,OAAOD,cAAcI,OAAO,CAAC;IAC/B;IAEA,IAAI,CAACH,QAAQ,CAAEA,CAAAA,gBAAgBI,eAAc,GAAI;QAC/C;IACF;IAEAN,SAASA,UAAUE,KAAKK,EAAE;IAC1B,IAAIC,SAASN,KAAKO,aAAa,CAAoB;IACnD,IAAI,CAACD,UAAUR,QAAQ;QACrBQ,SAASL,SAASM,aAAa,CAC7B,CAAC,sBAAsB,EAAET,OAAO,EAAE,CAAC;IAEvC;IAEAE,KAAKQ,aAAa,CAACF;AACrB;AAcA;;;CAGC,GACD,OAAO,SAASG,wBACdC,OAAuB;IAEvB,OAAO,CAAC,CAACA,WAAW,WAAWA;AACjC;AAEA;;;;;;CAMC,GACD,OAAO,SAASC,yBACdD,OAAqC,EACrCE,KAAsB;IAEtB,IAAI,CAACF,SAAS;QACZ;IACF;IAEA,MAAMG,YAAYC,OAAOC,cAAc,CAACL;IACxC,MAAMM,SAASF,OAAOG,wBAAwB,CAACJ,WAAW,UAAUK;IACpE,IAAI,CAACF,QAAQ;QACX;IACF;IAEAA,OAAOG,IAAI,CAACT,SAASE;IACrB,MAAMf,QAAQ,IAAIuB,MAAM,SAAS;QAAEC,SAAS;IAAK;IACjDX,QAAQY,aAAa,CAACzB;AACxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/form/validation.ts"],"sourcesContent":["import { type InputHTMLAttributes, type ReactNode } from \"react\";\n\n/**\n * @since 2.5.6\n * @since 6.0.0 Renamed from `TextConstraints` to\n * `TextFieldValidationOptions`\n */\nexport type TextFieldValidationOptions = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n \"minLength\" | \"maxLength\" | \"required\" | \"pattern\"\n>;\n\n/**\n * Since the default validation messages can be verbose, this type is used to\n * configure when/how to display the native browser messages when the validation\n * state changes during the `change` event phase. The validation message will\n * always be shown on blur.\n *\n * When this is:\n *\n * - `true` -> always show the browser message when it exists\n * - `false` -> never show the browser message\n * - `\"recommended\"` -> only shows the browser message if it is one of the\n * `RECOMMENDED_STATE_KEYS`/`RECOMMENDED_NUMBER_STATE_KEYS` validation errors\n * - `keyof ValidityState` -> only shows the browser message if it is not the\n * specific validation error\n * - `(keyof ValidityState)[]` -> only shows the browser message if it is not\n * the specific validation errors\n *\n * @see {@link RECOMMENDED_STATE_KEYS}\n * @see {@link RECOMMENDED_NUMBER_STATE_KEYS}\n * @since 2.5.6\n * @since 6.0.0 Renamed from `ChangeValidationBehavior` to\n * `TextFieldValidationType`\n */\nexport type TextFieldValidationType =\n | \"blur\"\n | \"change\"\n | \"recommended\"\n | keyof ValidityState\n | readonly (keyof ValidityState)[];\n\n/**\n * @since 2.5.0\n */\nexport interface ErrorMessageOptions extends TextFieldValidationOptions {\n /**\n * The current input or textarea's validity state.\n */\n validity: ValidityState;\n\n /**\n * The browser defined validation message based on the validity state. This\n * will be the empty string when there are no errors.\n */\n validationMessage: string;\n\n /**\n * The current `TextField` or `TextArea` value.\n */\n value: string;\n\n /**\n * This will only be `true` if called by the `useNumberField` hook.\n */\n isNumber: boolean;\n\n /**\n * Boolean if this is triggered from a blur event instead of a change event.\n */\n isBlurEvent: boolean;\n\n /**\n * The validation type defined by the `useTextField` hook.\n */\n validationType: TextFieldValidationType;\n}\n\n/**\n * A function to get a custom error message for specific errors. This is really\n * useful when using the `pattern` attribute to give additional information or\n * changing the native \"language translated\" error message.\n *\n * @param options - An object containing metadata that can be used to create an\n * error message for your `TextField` or `TextArea`.\n * @returns An error message to display or an empty string.\n * @since 2.5.0\n */\nexport type GetErrorMessage = (options: ErrorMessageOptions) => string;\n\n/**\n * @internal\n * @since 2.5.0\n */\nconst VALIDITY_STATE_KEYS: readonly (keyof ValidityState)[] = [\n \"badInput\",\n \"customError\",\n \"patternMismatch\",\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"stepMismatch\",\n \"tooLong\",\n \"tooShort\",\n \"typeMismatch\",\n \"valueMissing\",\n];\n\n/**\n * @internal\n * @since 2.5.0\n */\nexport const RECOMMENDED_STATE_KEYS: readonly (keyof ValidityState)[] = [\n \"badInput\",\n \"tooLong\",\n \"valueMissing\",\n];\n\n/**\n * @internal\n * @since 2.5.0\n */\nexport const RECOMMENDED_NUMBER_STATE_KEYS: readonly (keyof ValidityState)[] = [\n ...RECOMMENDED_STATE_KEYS,\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"tooShort\",\n \"typeMismatch\",\n];\n\n/**\n * The validation message is actually kind of weird since it's possible for a\n * form element to have multiple errors at once. The validation message will be\n * the first error that appears, so need to make sure that the first error is\n * one of the recommended state keys so the message appears for only those types\n * of errors.\n *\n * @internal\n * @since 2.5.0\n */\nconst isRecommended = (validity: ValidityState, isNumber: boolean): boolean => {\n const errorable = isNumber\n ? RECOMMENDED_NUMBER_STATE_KEYS\n : RECOMMENDED_STATE_KEYS;\n\n return VALIDITY_STATE_KEYS.every((key) => {\n const errored = validity[key];\n return !errored || errorable.includes(key);\n });\n};\n\n/**\n * The default implementation for getting an error message for the `TextField`\n * or `TextArea` components that relies on the behavior of the\n * {@link ChangeValidationBehavior}\n *\n * @since 2.5.0\n */\nexport const defaultGetErrorMessage: GetErrorMessage = (options) => {\n const {\n isNumber,\n isBlurEvent,\n validity,\n validationMessage,\n validationType: validate,\n } = options;\n\n if (isBlurEvent || !validationMessage || validate === \"change\") {\n return validationMessage;\n }\n\n if (validate === \"blur\") {\n return \"\";\n }\n\n if (validate === \"recommended\") {\n return isRecommended(validity, isNumber) ? validationMessage : \"\";\n }\n\n const keys = typeof validate === \"string\" ? [validate] : validate;\n\n return keys.length &&\n VALIDITY_STATE_KEYS.some((key) => validity[key] && keys.includes(key))\n ? validationMessage\n : \"\";\n};\n\n/**\n * @since 2.5.0\n */\nexport interface IsErroredOptions extends ErrorMessageOptions {\n /**\n * The current error message or an empty string.\n */\n errorMessage: string;\n}\n\n/**\n * A function that is used to determine if a `TextField` or `TextArea` is in an\n * errored state.\n *\n * @param options - All the current options that can be used to determine the\n * error state.\n * @returns True if the component is considered to be in an errored state.\n * @since 2.5.0\n */\nexport type IsErrored = (options: IsErroredOptions) => boolean;\n\n/**\n * The default implementation for checking if a `TextField` or `TextArea` is\n * errored by returning `true` if the `errorMessage` string is truthy or the\n * value is not within the `minLength` and `maxLength` constraints when they\n * exist.\n *\n * @since 2.5.0\n */\nexport const defaultIsErrored: IsErrored = (options) => {\n const { value, errorMessage, minLength, maxLength, isBlurEvent } = options;\n\n return (\n !!errorMessage ||\n (typeof maxLength === \"number\" && value.length > maxLength) ||\n (isBlurEvent && typeof minLength === \"number\" && value.length < minLength)\n );\n};\n\n/**\n * @since 6.0.0\n */\nexport interface GetErrorIconOptions {\n /**\n * This will be `true` if the `TextField` or `TextArea` is in an errored state.\n */\n error: boolean;\n\n /**\n * The current error icon that was provided.\n */\n errorIcon: ReactNode;\n\n /**\n * The current error message or an empty string.\n */\n errorMessage: string;\n}\n\n/**\n * A function that can be used to dynamically get an error icon based on the\n * current visible error.\n *\n * @param options - The {@link GetErrorIconOptions}\n * @returns An icon to render or falsey to render nothing.\n * @since 2.5.0\n * @since 6.0.0 Updated to accept a single object argument\n */\nexport type GetErrorIcon = (options: GetErrorIconOptions) => ReactNode;\n\n/**\n * The default implementation for showing an error icon in `TextField` and\n * `TextArea` components that will only display when the error flag is enabled.\n *\n * @since 2.5.0\n */\nexport const defaultGetErrorIcon: GetErrorIcon = (options) => {\n const { error, errorIcon } = options;\n\n return error && errorIcon;\n};\n"],"names":["VALIDITY_STATE_KEYS","RECOMMENDED_STATE_KEYS","RECOMMENDED_NUMBER_STATE_KEYS","isRecommended","validity","isNumber","errorable","every","key","errored","includes","defaultGetErrorMessage","options","isBlurEvent","validationMessage","validationType","validate","keys","length","some","defaultIsErrored","value","errorMessage","minLength","maxLength","defaultGetErrorIcon","error","errorIcon"],"
|
|
1
|
+
{"version":3,"sources":["../../src/form/validation.ts"],"sourcesContent":["import { type InputHTMLAttributes, type ReactNode } from \"react\";\n\n/**\n * @since 2.5.6\n * @since 6.0.0 Renamed from `TextConstraints` to\n * `TextFieldValidationOptions`\n */\nexport type TextFieldValidationOptions = Pick<\n InputHTMLAttributes<HTMLInputElement>,\n \"minLength\" | \"maxLength\" | \"required\" | \"pattern\"\n>;\n\n/**\n * Since the default validation messages can be verbose, this type is used to\n * configure when/how to display the native browser messages when the validation\n * state changes during the `change` event phase. The validation message will\n * always be shown on blur.\n *\n * When this is:\n *\n * - `true` -> always show the browser message when it exists\n * - `false` -> never show the browser message\n * - `\"recommended\"` -> only shows the browser message if it is one of the\n * `RECOMMENDED_STATE_KEYS`/`RECOMMENDED_NUMBER_STATE_KEYS` validation errors\n * - `keyof ValidityState` -> only shows the browser message if it is not the\n * specific validation error\n * - `(keyof ValidityState)[]` -> only shows the browser message if it is not\n * the specific validation errors\n *\n * @see {@link RECOMMENDED_STATE_KEYS}\n * @see {@link RECOMMENDED_NUMBER_STATE_KEYS}\n * @since 2.5.6\n * @since 6.0.0 Renamed from `ChangeValidationBehavior` to\n * `TextFieldValidationType`\n */\nexport type TextFieldValidationType =\n | \"blur\"\n | \"change\"\n | \"recommended\"\n | keyof ValidityState\n | readonly (keyof ValidityState)[];\n\n/**\n * @since 2.5.0\n */\nexport interface ErrorMessageOptions extends TextFieldValidationOptions {\n /**\n * The current input or textarea's validity state.\n */\n validity: ValidityState;\n\n /**\n * The browser defined validation message based on the validity state. This\n * will be the empty string when there are no errors.\n */\n validationMessage: string;\n\n /**\n * The current `TextField` or `TextArea` value.\n */\n value: string;\n\n /**\n * This will only be `true` if called by the `useNumberField` hook.\n */\n isNumber: boolean;\n\n /**\n * Boolean if this is triggered from a blur event instead of a change event.\n */\n isBlurEvent: boolean;\n\n /**\n * The validation type defined by the `useTextField` hook.\n */\n validationType: TextFieldValidationType;\n}\n\n/**\n * A function to get a custom error message for specific errors. This is really\n * useful when using the `pattern` attribute to give additional information or\n * changing the native \"language translated\" error message.\n *\n * @param options - An object containing metadata that can be used to create an\n * error message for your `TextField` or `TextArea`.\n * @returns An error message to display or an empty string.\n * @since 2.5.0\n */\nexport type GetErrorMessage = (options: ErrorMessageOptions) => string;\n\n/**\n * @internal\n * @since 2.5.0\n */\nconst VALIDITY_STATE_KEYS: readonly (keyof ValidityState)[] = [\n \"badInput\",\n \"customError\",\n \"patternMismatch\",\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"stepMismatch\",\n \"tooLong\",\n \"tooShort\",\n \"typeMismatch\",\n \"valueMissing\",\n];\n\n/**\n * @internal\n * @since 2.5.0\n */\nexport const RECOMMENDED_STATE_KEYS: readonly (keyof ValidityState)[] = [\n \"badInput\",\n \"tooLong\",\n \"valueMissing\",\n];\n\n/**\n * @internal\n * @since 2.5.0\n */\nexport const RECOMMENDED_NUMBER_STATE_KEYS: readonly (keyof ValidityState)[] = [\n ...RECOMMENDED_STATE_KEYS,\n \"rangeOverflow\",\n \"rangeUnderflow\",\n \"tooShort\",\n \"typeMismatch\",\n];\n\n/**\n * The validation message is actually kind of weird since it's possible for a\n * form element to have multiple errors at once. The validation message will be\n * the first error that appears, so need to make sure that the first error is\n * one of the recommended state keys so the message appears for only those types\n * of errors.\n *\n * @internal\n * @since 2.5.0\n */\nconst isRecommended = (validity: ValidityState, isNumber: boolean): boolean => {\n const errorable = isNumber\n ? RECOMMENDED_NUMBER_STATE_KEYS\n : RECOMMENDED_STATE_KEYS;\n\n return VALIDITY_STATE_KEYS.every((key) => {\n const errored = validity[key];\n return !errored || errorable.includes(key);\n });\n};\n\n/**\n * The default implementation for getting an error message for the `TextField`\n * or `TextArea` components that relies on the behavior of the\n * {@link ChangeValidationBehavior}\n *\n * @since 2.5.0\n */\nexport const defaultGetErrorMessage: GetErrorMessage = (options) => {\n const {\n isNumber,\n isBlurEvent,\n validity,\n validationMessage,\n validationType: validate,\n } = options;\n\n if (isBlurEvent || !validationMessage || validate === \"change\") {\n return validationMessage;\n }\n\n if (validate === \"blur\") {\n return \"\";\n }\n\n if (validate === \"recommended\") {\n return isRecommended(validity, isNumber) ? validationMessage : \"\";\n }\n\n const keys = typeof validate === \"string\" ? [validate] : validate;\n\n return keys.length &&\n VALIDITY_STATE_KEYS.some((key) => validity[key] && keys.includes(key))\n ? validationMessage\n : \"\";\n};\n\n/**\n * @since 2.5.0\n */\nexport interface IsErroredOptions extends ErrorMessageOptions {\n /**\n * The current error message or an empty string.\n */\n errorMessage: string;\n}\n\n/**\n * A function that is used to determine if a `TextField` or `TextArea` is in an\n * errored state.\n *\n * @param options - All the current options that can be used to determine the\n * error state.\n * @returns True if the component is considered to be in an errored state.\n * @since 2.5.0\n */\nexport type IsErrored = (options: IsErroredOptions) => boolean;\n\n/**\n * The default implementation for checking if a `TextField` or `TextArea` is\n * errored by returning `true` if the `errorMessage` string is truthy or the\n * value is not within the `minLength` and `maxLength` constraints when they\n * exist.\n *\n * @since 2.5.0\n */\nexport const defaultIsErrored: IsErrored = (options) => {\n const { value, errorMessage, minLength, maxLength, isBlurEvent } = options;\n\n return (\n !!errorMessage ||\n (typeof maxLength === \"number\" && value.length > maxLength) ||\n (isBlurEvent && typeof minLength === \"number\" && value.length < minLength)\n );\n};\n\n/**\n * @since 6.0.0\n */\nexport interface GetErrorIconOptions {\n /**\n * This will be `true` if the `TextField` or `TextArea` is in an errored state.\n */\n error: boolean;\n\n /**\n * The current error icon that was provided.\n */\n errorIcon: ReactNode;\n\n /**\n * The current error message or an empty string.\n */\n errorMessage: string;\n}\n\n/**\n * A function that can be used to dynamically get an error icon based on the\n * current visible error.\n *\n * @param options - The {@link GetErrorIconOptions}\n * @returns An icon to render or falsey to render nothing.\n * @since 2.5.0\n * @since 6.0.0 Updated to accept a single object argument\n */\nexport type GetErrorIcon = (options: GetErrorIconOptions) => ReactNode;\n\n/**\n * The default implementation for showing an error icon in `TextField` and\n * `TextArea` components that will only display when the error flag is enabled.\n *\n * @since 2.5.0\n */\nexport const defaultGetErrorIcon: GetErrorIcon = (options) => {\n const { error, errorIcon } = options;\n\n return error && errorIcon;\n};\n"],"names":["VALIDITY_STATE_KEYS","RECOMMENDED_STATE_KEYS","RECOMMENDED_NUMBER_STATE_KEYS","isRecommended","validity","isNumber","errorable","every","key","errored","includes","defaultGetErrorMessage","options","isBlurEvent","validationMessage","validationType","validate","keys","length","some","defaultIsErrored","value","errorMessage","minLength","maxLength","defaultGetErrorIcon","error","errorIcon"],"mappings":"AA0FA;;;CAGC,GACD,MAAMA,sBAAwD;IAC5D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED;;;CAGC,GACD,OAAO,MAAMC,yBAA2D;IACtE;IACA;IACA;CACD,CAAC;AAEF;;;CAGC,GACD,OAAO,MAAMC,gCAAkE;OAC1ED;IACH;IACA;IACA;IACA;CACD,CAAC;AAEF;;;;;;;;;CASC,GACD,MAAME,gBAAgB,CAACC,UAAyBC;IAC9C,MAAMC,YAAYD,WACdH,gCACAD;IAEJ,OAAOD,oBAAoBO,KAAK,CAAC,CAACC;QAChC,MAAMC,UAAUL,QAAQ,CAACI,IAAI;QAC7B,OAAO,CAACC,WAAWH,UAAUI,QAAQ,CAACF;IACxC;AACF;AAEA;;;;;;CAMC,GACD,OAAO,MAAMG,yBAA0C,CAACC;IACtD,MAAM,EACJP,QAAQ,EACRQ,WAAW,EACXT,QAAQ,EACRU,iBAAiB,EACjBC,gBAAgBC,QAAQ,EACzB,GAAGJ;IAEJ,IAAIC,eAAe,CAACC,qBAAqBE,aAAa,UAAU;QAC9D,OAAOF;IACT;IAEA,IAAIE,aAAa,QAAQ;QACvB,OAAO;IACT;IAEA,IAAIA,aAAa,eAAe;QAC9B,OAAOb,cAAcC,UAAUC,YAAYS,oBAAoB;IACjE;IAEA,MAAMG,OAAO,OAAOD,aAAa,WAAW;QAACA;KAAS,GAAGA;IAEzD,OAAOC,KAAKC,MAAM,IAChBlB,oBAAoBmB,IAAI,CAAC,CAACX,MAAQJ,QAAQ,CAACI,IAAI,IAAIS,KAAKP,QAAQ,CAACF,QAC/DM,oBACA;AACN,EAAE;AAuBF;;;;;;;CAOC,GACD,OAAO,MAAMM,mBAA8B,CAACR;IAC1C,MAAM,EAAES,KAAK,EAAEC,YAAY,EAAEC,SAAS,EAAEC,SAAS,EAAEX,WAAW,EAAE,GAAGD;IAEnE,OACE,CAAC,CAACU,gBACD,OAAOE,cAAc,YAAYH,MAAMH,MAAM,GAAGM,aAChDX,eAAe,OAAOU,cAAc,YAAYF,MAAMH,MAAM,GAAGK;AAEpE,EAAE;AAiCF;;;;;CAKC,GACD,OAAO,MAAME,sBAAoC,CAACb;IAChD,MAAM,EAAEc,KAAK,EAAEC,SAAS,EAAE,GAAGf;IAE7B,OAAOc,SAASC;AAClB,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hoverMode/useHoverMode.ts"],"sourcesContent":["\"use client\";\nimport type { MouseEvent } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { UseStateInitializer, UseStateSetter } from \"../types.js\";\nimport type { SimpleHoverModeContext } from \"./useHoverModeProvider.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface HoverModeConfigurationOptions extends SimpleHoverModeContext {\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /**\n * This can be used to override the `HoverModeContext`'s hover time.\n */\n hoverTimeout?: number;\n\n /**\n * This can be used to override the `HoverModeContext`'s leave time.\n */\n leaveTimeout?: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ControlledHoverModeOptions\n extends HoverModeConfigurationOptions {\n setVisible: UseStateSetter<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ControlledHoverModeImplementation {\n startShowFlow(id?: string | MouseEvent): void;\n startHideFlow(): void;\n clearVisibilityTimeout(): void;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface UncontrolledHoverModeOptions\n extends HoverModeConfigurationOptions {\n defaultVisible?: UseStateInitializer<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface UncontrolledHoverModeImplementation\n extends ControlledHoverModeImplementation {\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface HoverModeImplementation\n extends ControlledHoverModeImplementation {\n visible?: boolean;\n setVisible?: UseStateSetter<boolean>;\n}\n\n/**\n * @since 2.8.0\n * @since 5.0.0 This hook no longer returns `handlers` or\n * `stickyHandlers` and does not hide when an element on the page is clicked.\n * @since 6.0.0 Requires passing the custom hover mode context to\n * work.\n */\nexport function useHoverMode(\n options: ControlledHoverModeOptions\n): ControlledHoverModeImplementation;\nexport function useHoverMode(\n options: UncontrolledHoverModeOptions\n): UncontrolledHoverModeImplementation;\nexport function useHoverMode(\n options: ControlledHoverModeOptions | UncontrolledHoverModeOptions\n): HoverModeImplementation {\n const {\n disabled,\n hoverTimeout: hoverTime,\n hoverTimeoutRef,\n leaveTimeout: leaveTime,\n leaveTimeoutRef,\n enableHoverMode,\n disableHoverMode,\n startDisableTimer,\n clearDisableTimer,\n setVisible: propSetVisible,\n defaultVisible = false,\n } = options as ControlledHoverModeOptions & UncontrolledHoverModeOptions;\n\n const state = useState(defaultVisible);\n let visible: boolean | undefined;\n let setVisible: UseStateSetter<boolean>;\n if (typeof propSetVisible !== \"undefined\") {\n setVisible = propSetVisible;\n } else {\n [visible, setVisible] = state;\n }\n\n const visibilityTimeout = useRef<number | undefined>();\n const clearVisibilityTimeout = useCallback(() => {\n window.clearTimeout(visibilityTimeout.current);\n }, []);\n\n // if the element is near the viewport edge, the mouseleave event might not\n // trigger correctly. for these cases, just clear any timeouts to be safe.\n // do not hide the visibility so that you can still inspect things in the\n // devtools\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n const handler = (): void => {\n window.clearTimeout(visibilityTimeout.current);\n\n // might need to play with this more or make it configurable. if the mouse\n // leaves the window, you're _normally_ not interacting with the app\n // anymore and state should reset.\n disableHoverMode();\n };\n\n document.addEventListener(\"mouseleave\", handler);\n return () => {\n document.removeEventListener(\"mouseleave\", handler);\n };\n }, [disableHoverMode, disabled]);\n\n useEffect(() => {\n return () => {\n window.clearTimeout(visibilityTimeout.current);\n };\n }, []);\n\n return {\n visible,\n setVisible: setVisible === propSetVisible ? undefined : setVisible,\n startShowFlow: useCallback(\n (eventOrId) => {\n const hoverTimeout = hoverTime ?? hoverTimeoutRef.current;\n if (disabled || typeof hoverTimeout === \"undefined\") {\n return;\n }\n\n let id: string;\n if (typeof eventOrId === \"string\" || typeof eventOrId === \"undefined\") {\n id = eventOrId || \"\";\n } else {\n id = eventOrId.currentTarget.id;\n }\n\n clearDisableTimer();\n clearVisibilityTimeout();\n visibilityTimeout.current = window.setTimeout(() => {\n enableHoverMode(id);\n setVisible(true);\n }, hoverTimeout);\n },\n [\n clearDisableTimer,\n clearVisibilityTimeout,\n disabled,\n enableHoverMode,\n hoverTime,\n hoverTimeoutRef,\n setVisible,\n ]\n ),\n startHideFlow: useCallback(() => {\n if (disabled) {\n return;\n }\n\n startDisableTimer();\n clearVisibilityTimeout();\n visibilityTimeout.current = window.setTimeout(() => {\n setVisible(false);\n }, leaveTime ?? leaveTimeoutRef.current);\n }, [\n clearVisibilityTimeout,\n disabled,\n leaveTime,\n leaveTimeoutRef,\n setVisible,\n startDisableTimer,\n ]),\n clearVisibilityTimeout,\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useHoverMode","options","disabled","hoverTimeout","hoverTime","hoverTimeoutRef","leaveTimeout","leaveTime","leaveTimeoutRef","enableHoverMode","disableHoverMode","startDisableTimer","clearDisableTimer","setVisible","propSetVisible","defaultVisible","state","visible","visibilityTimeout","clearVisibilityTimeout","window","clearTimeout","current","handler","document","addEventListener","removeEventListener","undefined","startShowFlow","eventOrId","id","currentTarget","setTimeout","startHideFlow"],"
|
|
1
|
+
{"version":3,"sources":["../../src/hoverMode/useHoverMode.ts"],"sourcesContent":["\"use client\";\nimport type { MouseEvent } from \"react\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport type { UseStateInitializer, UseStateSetter } from \"../types.js\";\nimport type { SimpleHoverModeContext } from \"./useHoverModeProvider.js\";\n\n/**\n * @since 6.0.0\n */\nexport interface HoverModeConfigurationOptions extends SimpleHoverModeContext {\n /** @defaultValue `false` */\n disabled?: boolean;\n\n /**\n * This can be used to override the `HoverModeContext`'s hover time.\n */\n hoverTimeout?: number;\n\n /**\n * This can be used to override the `HoverModeContext`'s leave time.\n */\n leaveTimeout?: number;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ControlledHoverModeOptions\n extends HoverModeConfigurationOptions {\n setVisible: UseStateSetter<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface ControlledHoverModeImplementation {\n startShowFlow(id?: string | MouseEvent): void;\n startHideFlow(): void;\n clearVisibilityTimeout(): void;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface UncontrolledHoverModeOptions\n extends HoverModeConfigurationOptions {\n defaultVisible?: UseStateInitializer<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface UncontrolledHoverModeImplementation\n extends ControlledHoverModeImplementation {\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n}\n\n/**\n * @since 6.0.0\n */\nexport interface HoverModeImplementation\n extends ControlledHoverModeImplementation {\n visible?: boolean;\n setVisible?: UseStateSetter<boolean>;\n}\n\n/**\n * @since 2.8.0\n * @since 5.0.0 This hook no longer returns `handlers` or\n * `stickyHandlers` and does not hide when an element on the page is clicked.\n * @since 6.0.0 Requires passing the custom hover mode context to\n * work.\n */\nexport function useHoverMode(\n options: ControlledHoverModeOptions\n): ControlledHoverModeImplementation;\nexport function useHoverMode(\n options: UncontrolledHoverModeOptions\n): UncontrolledHoverModeImplementation;\nexport function useHoverMode(\n options: ControlledHoverModeOptions | UncontrolledHoverModeOptions\n): HoverModeImplementation {\n const {\n disabled,\n hoverTimeout: hoverTime,\n hoverTimeoutRef,\n leaveTimeout: leaveTime,\n leaveTimeoutRef,\n enableHoverMode,\n disableHoverMode,\n startDisableTimer,\n clearDisableTimer,\n setVisible: propSetVisible,\n defaultVisible = false,\n } = options as ControlledHoverModeOptions & UncontrolledHoverModeOptions;\n\n const state = useState(defaultVisible);\n let visible: boolean | undefined;\n let setVisible: UseStateSetter<boolean>;\n if (typeof propSetVisible !== \"undefined\") {\n setVisible = propSetVisible;\n } else {\n [visible, setVisible] = state;\n }\n\n const visibilityTimeout = useRef<number | undefined>();\n const clearVisibilityTimeout = useCallback(() => {\n window.clearTimeout(visibilityTimeout.current);\n }, []);\n\n // if the element is near the viewport edge, the mouseleave event might not\n // trigger correctly. for these cases, just clear any timeouts to be safe.\n // do not hide the visibility so that you can still inspect things in the\n // devtools\n useEffect(() => {\n if (disabled) {\n return;\n }\n\n const handler = (): void => {\n window.clearTimeout(visibilityTimeout.current);\n\n // might need to play with this more or make it configurable. if the mouse\n // leaves the window, you're _normally_ not interacting with the app\n // anymore and state should reset.\n disableHoverMode();\n };\n\n document.addEventListener(\"mouseleave\", handler);\n return () => {\n document.removeEventListener(\"mouseleave\", handler);\n };\n }, [disableHoverMode, disabled]);\n\n useEffect(() => {\n return () => {\n window.clearTimeout(visibilityTimeout.current);\n };\n }, []);\n\n return {\n visible,\n setVisible: setVisible === propSetVisible ? undefined : setVisible,\n startShowFlow: useCallback(\n (eventOrId) => {\n const hoverTimeout = hoverTime ?? hoverTimeoutRef.current;\n if (disabled || typeof hoverTimeout === \"undefined\") {\n return;\n }\n\n let id: string;\n if (typeof eventOrId === \"string\" || typeof eventOrId === \"undefined\") {\n id = eventOrId || \"\";\n } else {\n id = eventOrId.currentTarget.id;\n }\n\n clearDisableTimer();\n clearVisibilityTimeout();\n visibilityTimeout.current = window.setTimeout(() => {\n enableHoverMode(id);\n setVisible(true);\n }, hoverTimeout);\n },\n [\n clearDisableTimer,\n clearVisibilityTimeout,\n disabled,\n enableHoverMode,\n hoverTime,\n hoverTimeoutRef,\n setVisible,\n ]\n ),\n startHideFlow: useCallback(() => {\n if (disabled) {\n return;\n }\n\n startDisableTimer();\n clearVisibilityTimeout();\n visibilityTimeout.current = window.setTimeout(() => {\n setVisible(false);\n }, leaveTime ?? leaveTimeoutRef.current);\n }, [\n clearVisibilityTimeout,\n disabled,\n leaveTime,\n leaveTimeoutRef,\n setVisible,\n startDisableTimer,\n ]),\n clearVisibilityTimeout,\n };\n}\n"],"names":["useCallback","useEffect","useRef","useState","useHoverMode","options","disabled","hoverTimeout","hoverTime","hoverTimeoutRef","leaveTimeout","leaveTime","leaveTimeoutRef","enableHoverMode","disableHoverMode","startDisableTimer","clearDisableTimer","setVisible","propSetVisible","defaultVisible","state","visible","visibilityTimeout","clearVisibilityTimeout","window","clearTimeout","current","handler","document","addEventListener","removeEventListener","undefined","startShowFlow","eventOrId","id","currentTarget","setTimeout","startHideFlow"],"mappings":"AAAA;AAEA,SAASA,WAAW,EAAEC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AA8EjE,OAAO,SAASC,aACdC,OAAkE;IAElE,MAAM,EACJC,QAAQ,EACRC,cAAcC,SAAS,EACvBC,eAAe,EACfC,cAAcC,SAAS,EACvBC,eAAe,EACfC,eAAe,EACfC,gBAAgB,EAChBC,iBAAiB,EACjBC,iBAAiB,EACjBC,YAAYC,cAAc,EAC1BC,iBAAiB,KAAK,EACvB,GAAGd;IAEJ,MAAMe,QAAQjB,SAASgB;IACvB,IAAIE;IACJ,IAAIJ;IACJ,IAAI,OAAOC,mBAAmB,aAAa;QACzCD,aAAaC;IACf,OAAO;QACL,CAACG,SAASJ,WAAW,GAAGG;IAC1B;IAEA,MAAME,oBAAoBpB;IAC1B,MAAMqB,yBAAyBvB,YAAY;QACzCwB,OAAOC,YAAY,CAACH,kBAAkBI,OAAO;IAC/C,GAAG,EAAE;IAEL,2EAA2E;IAC3E,0EAA0E;IAC1E,yEAAyE;IACzE,WAAW;IACXzB,UAAU;QACR,IAAIK,UAAU;YACZ;QACF;QAEA,MAAMqB,UAAU;YACdH,OAAOC,YAAY,CAACH,kBAAkBI,OAAO;YAE7C,0EAA0E;YAC1E,oEAAoE;YACpE,kCAAkC;YAClCZ;QACF;QAEAc,SAASC,gBAAgB,CAAC,cAAcF;QACxC,OAAO;YACLC,SAASE,mBAAmB,CAAC,cAAcH;QAC7C;IACF,GAAG;QAACb;QAAkBR;KAAS;IAE/BL,UAAU;QACR,OAAO;YACLuB,OAAOC,YAAY,CAACH,kBAAkBI,OAAO;QAC/C;IACF,GAAG,EAAE;IAEL,OAAO;QACLL;QACAJ,YAAYA,eAAeC,iBAAiBa,YAAYd;QACxDe,eAAehC,YACb,CAACiC;YACC,MAAM1B,eAAeC,aAAaC,gBAAgBiB,OAAO;YACzD,IAAIpB,YAAY,OAAOC,iBAAiB,aAAa;gBACnD;YACF;YAEA,IAAI2B;YACJ,IAAI,OAAOD,cAAc,YAAY,OAAOA,cAAc,aAAa;gBACrEC,KAAKD,aAAa;YACpB,OAAO;gBACLC,KAAKD,UAAUE,aAAa,CAACD,EAAE;YACjC;YAEAlB;YACAO;YACAD,kBAAkBI,OAAO,GAAGF,OAAOY,UAAU,CAAC;gBAC5CvB,gBAAgBqB;gBAChBjB,WAAW;YACb,GAAGV;QACL,GACA;YACES;YACAO;YACAjB;YACAO;YACAL;YACAC;YACAQ;SACD;QAEHoB,eAAerC,YAAY;YACzB,IAAIM,UAAU;gBACZ;YACF;YAEAS;YACAQ;YACAD,kBAAkBI,OAAO,GAAGF,OAAOY,UAAU,CAAC;gBAC5CnB,WAAW;YACb,GAAGN,aAAaC,gBAAgBc,OAAO;QACzC,GAAG;YACDH;YACAjB;YACAK;YACAC;YACAK;YACAF;SACD;QACDQ;IACF;AACF"}
|