rsuite 5.39.0 → 5.41.0
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/CHANGELOG.md +26 -0
- package/Navbar/styles/index.less +1 -1
- package/SelectPicker/styles/index.less +4 -8
- package/cjs/@types/common.js +1 -0
- package/cjs/@types/utils.js +12 -2
- package/cjs/Affix/Affix.js +39 -59
- package/cjs/Affix/index.js +1 -3
- package/cjs/Animation/Bounce.js +4 -13
- package/cjs/Animation/Collapse.js +19 -40
- package/cjs/Animation/Fade.js +6 -15
- package/cjs/Animation/Slide.js +6 -15
- package/cjs/Animation/Transition.js +16 -83
- package/cjs/Animation/index.js +1 -7
- package/cjs/Animation/utils.js +1 -6
- package/cjs/AutoComplete/AutoComplete.js +55 -90
- package/cjs/AutoComplete/index.js +1 -3
- package/cjs/AutoComplete/utils.js +1 -9
- package/cjs/Avatar/Avatar.js +18 -32
- package/cjs/Avatar/index.js +1 -3
- package/cjs/AvatarGroup/AvatarGroup.js +13 -27
- package/cjs/AvatarGroup/index.js +1 -3
- package/cjs/Badge/Badge.js +14 -27
- package/cjs/Badge/index.js +1 -3
- package/cjs/Breadcrumb/Breadcrumb.js +19 -41
- package/cjs/Breadcrumb/BreadcrumbItem.js +14 -26
- package/cjs/Breadcrumb/index.js +1 -3
- package/cjs/Button/Button.js +22 -40
- package/cjs/Button/index.js +1 -3
- package/cjs/ButtonGroup/ButtonGroup.js +15 -26
- package/cjs/ButtonGroup/ButtonGroupContext.js +1 -4
- package/cjs/ButtonGroup/index.js +1 -4
- package/cjs/ButtonToolbar/ButtonToolbar.js +10 -20
- package/cjs/ButtonToolbar/index.js +1 -3
- package/cjs/Calendar/Calendar.js +24 -43
- package/cjs/Calendar/CalendarBody.js +14 -28
- package/cjs/Calendar/CalendarContainer.js +46 -69
- package/cjs/Calendar/CalendarContext.js +1 -6
- package/cjs/Calendar/CalendarHeader.js +32 -59
- package/cjs/Calendar/MonthDropdown.js +22 -45
- package/cjs/Calendar/MonthDropdownItem.js +16 -31
- package/cjs/Calendar/Table.js +10 -21
- package/cjs/Calendar/TableHeaderRow.js +11 -25
- package/cjs/Calendar/TableRow.js +35 -66
- package/cjs/Calendar/TimeDropdown.js +24 -64
- package/cjs/Calendar/index.js +1 -8
- package/cjs/Calendar/types.js +1 -0
- package/cjs/Calendar/useCalendarDate.js +3 -13
- package/cjs/Calendar/useCalendarState.js +3 -8
- package/cjs/Carousel/Carousel.js +40 -65
- package/cjs/Carousel/index.js +1 -3
- package/cjs/Cascader/Cascader.js +126 -197
- package/cjs/Cascader/DropdownMenu.js +33 -65
- package/cjs/Cascader/index.js +1 -3
- package/cjs/Cascader/utils.js +13 -24
- package/cjs/CheckPicker/CheckPicker.js +105 -156
- package/cjs/CheckPicker/index.js +1 -3
- package/cjs/CheckTree/index.js +1 -8
- package/cjs/CheckTreePicker/CheckTreeNode.js +28 -54
- package/cjs/CheckTreePicker/CheckTreePicker.js +166 -248
- package/cjs/CheckTreePicker/index.js +1 -3
- package/cjs/CheckTreePicker/utils.d.ts +1 -1
- package/cjs/CheckTreePicker/utils.js +14 -54
- package/cjs/Checkbox/Checkbox.js +48 -77
- package/cjs/Checkbox/index.js +1 -3
- package/cjs/CheckboxGroup/CheckboxGroup.js +20 -38
- package/cjs/CheckboxGroup/CheckboxGroupContext.js +1 -4
- package/cjs/CheckboxGroup/index.js +1 -4
- package/cjs/CloseButton/CloseButton.js +10 -20
- package/cjs/CloseButton/index.js +1 -3
- package/cjs/Col/Col.js +10 -23
- package/cjs/Col/index.js +1 -3
- package/cjs/Container/Container.js +11 -24
- package/cjs/Container/index.js +1 -3
- package/cjs/Content/Content.js +1 -3
- package/cjs/Content/index.js +1 -3
- package/cjs/CustomProvider/CustomProvider.js +13 -28
- package/cjs/CustomProvider/FormattedDate.js +3 -9
- package/cjs/CustomProvider/index.js +1 -6
- package/cjs/DOMHelper/index.js +1 -7
- package/cjs/DOMHelper/isElement.js +1 -2
- package/cjs/DatePicker/DatePicker.js +108 -161
- package/cjs/DatePicker/PredefinedRanges.js +12 -29
- package/cjs/DatePicker/Toolbar.js +20 -36
- package/cjs/DatePicker/index.js +1 -3
- package/cjs/DatePicker/types.js +1 -0
- package/cjs/DatePicker/utils.js +5 -13
- package/cjs/DateRangePicker/Calendar.js +18 -28
- package/cjs/DateRangePicker/DateRangePicker.js +128 -207
- package/cjs/DateRangePicker/DateRangePickerContext.js +1 -6
- package/cjs/DateRangePicker/disabledDateUtils.js +9 -32
- package/cjs/DateRangePicker/index.js +1 -3
- package/cjs/DateRangePicker/types.js +1 -0
- package/cjs/DateRangePicker/utils.js +7 -20
- package/cjs/Disclosure/Disclosure.js +14 -34
- package/cjs/Disclosure/DisclosureButton.js +4 -12
- package/cjs/Disclosure/DisclosureContent.js +1 -5
- package/cjs/Disclosure/DisclosureContext.js +1 -6
- package/cjs/Disclosure/index.js +1 -3
- package/cjs/Disclosure/useDisclosureContext.js +1 -6
- package/cjs/Divider/Divider.js +11 -20
- package/cjs/Divider/index.js +1 -3
- package/cjs/Drawer/Drawer.js +10 -27
- package/cjs/Drawer/index.js +1 -3
- package/cjs/Dropdown/Dropdown.js +35 -68
- package/cjs/Dropdown/DropdownContext.js +1 -4
- package/cjs/Dropdown/DropdownItem.js +22 -49
- package/cjs/Dropdown/DropdownMenu.js +36 -63
- package/cjs/Dropdown/DropdownSeparator.js +8 -17
- package/cjs/Dropdown/DropdownState.js +1 -10
- package/cjs/Dropdown/DropdownToggle.js +17 -29
- package/cjs/Dropdown/index.js +1 -3
- package/cjs/Dropdown/useRenderDropdownItem.js +1 -5
- package/cjs/FlexboxGrid/FlexboxGrid.js +12 -22
- package/cjs/FlexboxGrid/FlexboxGridItem.js +12 -22
- package/cjs/FlexboxGrid/index.js +1 -3
- package/cjs/Footer/Footer.js +1 -3
- package/cjs/Footer/index.js +1 -3
- package/cjs/Form/Form.js +36 -76
- package/cjs/Form/FormContext.js +1 -8
- package/cjs/Form/index.js +1 -4
- package/cjs/Form/useFormClassNames.js +11 -14
- package/cjs/Form/useSchemaModel.js +2 -6
- package/cjs/FormControl/FormControl.js +50 -82
- package/cjs/FormControl/index.js +1 -3
- package/cjs/FormControl/useRegisterModel.js +1 -3
- package/cjs/FormControlLabel/FormControlLabel.js +10 -22
- package/cjs/FormControlLabel/index.js +1 -3
- package/cjs/FormErrorMessage/FormErrorMessage.js +12 -27
- package/cjs/FormErrorMessage/index.js +1 -3
- package/cjs/FormGroup/FormGroup.js +9 -21
- package/cjs/FormGroup/index.js +1 -3
- package/cjs/FormHelpText/FormHelpText.js +11 -28
- package/cjs/FormHelpText/index.js +1 -3
- package/cjs/Grid/Grid.js +10 -19
- package/cjs/Grid/index.js +1 -3
- package/cjs/Header/Header.js +1 -3
- package/cjs/Header/index.js +1 -3
- package/cjs/IconButton/IconButton.js +11 -21
- package/cjs/IconButton/index.js +1 -3
- package/cjs/Input/Input.js +26 -43
- package/cjs/Input/index.js +1 -3
- package/cjs/InputGroup/InputGroup.js +23 -39
- package/cjs/InputGroup/InputGroupAddon.js +9 -18
- package/cjs/InputGroup/InputGroupButton.js +7 -17
- package/cjs/InputGroup/index.js +1 -3
- package/cjs/InputNumber/InputNumber.js +42 -88
- package/cjs/InputNumber/index.js +1 -3
- package/cjs/InputPicker/InputAutosize.js +17 -42
- package/cjs/InputPicker/InputPicker.js +149 -250
- package/cjs/InputPicker/InputSearch.js +15 -28
- package/cjs/InputPicker/index.js +1 -3
- package/cjs/List/List.js +37 -51
- package/cjs/List/ListContext.js +1 -5
- package/cjs/List/ListItem.js +26 -40
- package/cjs/List/helper/AutoScroller.js +11 -21
- package/cjs/List/helper/useManager.js +1 -8
- package/cjs/List/helper/useSortHelper.js +58 -82
- package/cjs/List/helper/utils.js +6 -19
- package/cjs/List/index.js +1 -3
- package/cjs/Loader/Loader.js +17 -26
- package/cjs/Loader/index.js +1 -3
- package/cjs/MaskedInput/MaskedInput.js +2 -8
- package/cjs/MaskedInput/TextMask.js +14 -23
- package/cjs/MaskedInput/adjustCaretPosition.js +99 -70
- package/cjs/MaskedInput/conformToMask.js +79 -73
- package/cjs/MaskedInput/createTextMaskInputElement.js +65 -71
- package/cjs/MaskedInput/index.js +1 -3
- package/cjs/MaskedInput/types.js +1 -0
- package/cjs/MaskedInput/utilities.js +1 -8
- package/cjs/Menu/Menu.js +35 -79
- package/cjs/Menu/MenuContext.js +1 -8
- package/cjs/Menu/MenuItem.js +15 -26
- package/cjs/Menu/Menubar.js +13 -32
- package/cjs/Menu/index.js +1 -3
- package/cjs/Menu/useMenu.js +5 -34
- package/cjs/Message/Message.js +23 -45
- package/cjs/Message/index.js +1 -3
- package/cjs/Modal/Modal.js +70 -91
- package/cjs/Modal/ModalBody.js +11 -25
- package/cjs/Modal/ModalContext.js +1 -4
- package/cjs/Modal/ModalDialog.js +14 -26
- package/cjs/Modal/ModalFooter.js +1 -3
- package/cjs/Modal/ModalHeader.js +14 -29
- package/cjs/Modal/ModalTitle.js +9 -20
- package/cjs/Modal/index.js +1 -3
- package/cjs/Modal/utils.js +8 -19
- package/cjs/MultiCascader/DropdownMenu.js +38 -64
- package/cjs/MultiCascader/MultiCascader.js +129 -192
- package/cjs/MultiCascader/index.js +1 -3
- package/cjs/MultiCascader/utils.js +44 -106
- package/cjs/Nav/Nav.js +27 -69
- package/cjs/Nav/NavContext.js +1 -4
- package/cjs/Nav/NavDropdown.js +28 -60
- package/cjs/Nav/NavDropdownItem.js +20 -42
- package/cjs/Nav/NavDropdownMenu.js +26 -54
- package/cjs/Nav/NavDropdownToggle.js +12 -26
- package/cjs/Nav/NavItem.js +20 -39
- package/cjs/Nav/NavMenu.js +2 -28
- package/cjs/Nav/index.js +1 -3
- package/cjs/Navbar/Navbar.js +10 -23
- package/cjs/Navbar/NavbarBody.js +1 -6
- package/cjs/Navbar/NavbarBrand.js +1 -3
- package/cjs/Navbar/NavbarDropdown.js +25 -49
- package/cjs/Navbar/NavbarDropdownItem.js +18 -44
- package/cjs/Navbar/NavbarDropdownMenu.js +22 -51
- package/cjs/Navbar/NavbarDropdownToggle.js +12 -25
- package/cjs/Navbar/NavbarHeader.js +1 -6
- package/cjs/Navbar/NavbarItem.js +19 -35
- package/cjs/Navbar/index.js +1 -3
- package/cjs/Notification/Notification.js +20 -43
- package/cjs/Notification/index.js +1 -3
- package/cjs/Overlay/Modal.js +40 -79
- package/cjs/Overlay/ModalManager.js +1 -26
- package/cjs/Overlay/Overlay.js +28 -50
- package/cjs/Overlay/OverlayContext.js +1 -4
- package/cjs/Overlay/OverlayTrigger.js +67 -116
- package/cjs/Overlay/Position.js +25 -64
- package/cjs/Overlay/index.js +1 -3
- package/cjs/Overlay/positionUtils.js +25 -86
- package/cjs/Pagination/Pagination.js +30 -70
- package/cjs/Pagination/PaginationButton.js +15 -29
- package/cjs/Pagination/PaginationGroup.js +38 -63
- package/cjs/Pagination/index.js +1 -3
- package/cjs/Panel/Panel.js +37 -61
- package/cjs/Panel/index.js +1 -3
- package/cjs/PanelGroup/PanelGroup.js +16 -29
- package/cjs/PanelGroup/index.js +1 -3
- package/cjs/Picker/DropdownMenu.js +50 -93
- package/cjs/Picker/DropdownMenuCheckItem.js +22 -33
- package/cjs/Picker/DropdownMenuGroup.js +10 -22
- package/cjs/Picker/DropdownMenuItem.js +15 -26
- package/cjs/Picker/PickerOverlay.js +12 -28
- package/cjs/Picker/PickerToggle.js +57 -89
- package/cjs/Picker/PickerToggleTrigger.js +8 -19
- package/cjs/Picker/SearchBar.js +14 -26
- package/cjs/Picker/SelectedElement.js +9 -17
- package/cjs/Picker/ToggleButton.js +1 -6
- package/cjs/Picker/index.js +1 -24
- package/cjs/Picker/propTypes.js +1 -7
- package/cjs/Picker/types.js +1 -0
- package/cjs/Picker/utils.js +94 -200
- package/cjs/Placeholder/Placeholder.js +1 -5
- package/cjs/Placeholder/PlaceholderGraph.js +13 -22
- package/cjs/Placeholder/PlaceholderGrid.js +18 -34
- package/cjs/Placeholder/PlaceholderParagraph.js +17 -29
- package/cjs/Placeholder/index.js +1 -3
- package/cjs/Plaintext/Plaintext.js +14 -23
- package/cjs/Plaintext/index.js +1 -3
- package/cjs/Popover/Popover.js +16 -27
- package/cjs/Popover/index.js +1 -3
- package/cjs/Progress/Progress.js +1 -4
- package/cjs/Progress/ProgressCircle.js +30 -47
- package/cjs/Progress/ProgressLine.js +19 -29
- package/cjs/Progress/index.js +1 -3
- package/cjs/Radio/Radio.js +42 -62
- package/cjs/Radio/index.js +1 -3
- package/cjs/RadioGroup/RadioGroup.js +22 -37
- package/cjs/RadioGroup/index.js +1 -3
- package/cjs/RadioTile/RadioTile.js +30 -47
- package/cjs/RadioTile/index.js +1 -3
- package/cjs/RadioTileGroup/RadioTileGroup.js +17 -32
- package/cjs/RadioTileGroup/index.js +1 -3
- package/cjs/RangeSlider/RangeSlider.js +63 -104
- package/cjs/RangeSlider/index.js +1 -3
- package/cjs/Rate/Character.js +16 -31
- package/cjs/Rate/Rate.js +35 -62
- package/cjs/Rate/index.js +1 -3
- package/cjs/Rate/utils.js +1 -6
- package/cjs/Ripple/Ripple.js +16 -40
- package/cjs/Ripple/index.js +1 -3
- package/cjs/Row/Row.js +11 -22
- package/cjs/Row/index.js +1 -3
- package/cjs/SafeAnchor/SafeAnchor.js +8 -19
- package/cjs/SafeAnchor/index.js +1 -3
- package/cjs/Schema/Schema.js +1 -2
- package/cjs/Schema/index.js +1 -3
- package/cjs/SelectPicker/SelectPicker.js +136 -170
- package/cjs/SelectPicker/index.js +1 -3
- package/cjs/Sidebar/Sidebar.js +13 -26
- package/cjs/Sidebar/index.js +1 -3
- package/cjs/Sidenav/ExpandedSidenavDropdown.js +32 -54
- package/cjs/Sidenav/ExpandedSidenavDropdownItem.js +19 -41
- package/cjs/Sidenav/ExpandedSidenavDropdownMenu.js +22 -46
- package/cjs/Sidenav/Node.js +1 -12
- package/cjs/Sidenav/Sidenav.js +22 -45
- package/cjs/Sidenav/SidenavBody.js +1 -3
- package/cjs/Sidenav/SidenavDropdown.js +39 -70
- package/cjs/Sidenav/SidenavDropdownCollapse.js +9 -22
- package/cjs/Sidenav/SidenavDropdownItem.js +19 -45
- package/cjs/Sidenav/SidenavDropdownMenu.js +26 -54
- package/cjs/Sidenav/SidenavDropdownToggle.js +12 -25
- package/cjs/Sidenav/SidenavHeader.js +1 -3
- package/cjs/Sidenav/SidenavItem.js +27 -55
- package/cjs/Sidenav/SidenavToggle.js +11 -31
- package/cjs/Sidenav/index.js +1 -3
- package/cjs/Slider/Graduated.js +14 -29
- package/cjs/Slider/Handle.js +27 -52
- package/cjs/Slider/Input.js +2 -8
- package/cjs/Slider/Mark.js +11 -20
- package/cjs/Slider/ProgressBar.js +14 -23
- package/cjs/Slider/Slider.js +51 -84
- package/cjs/Slider/index.js +1 -3
- package/cjs/Slider/utils.js +1 -6
- package/cjs/Stack/Stack.js +22 -35
- package/cjs/Stack/StackItem.js +11 -17
- package/cjs/Stack/index.js +1 -3
- package/cjs/Steps/StepItem.js +16 -32
- package/cjs/Steps/Steps.js +18 -32
- package/cjs/Steps/index.js +1 -3
- package/cjs/Table/Table.js +6 -16
- package/cjs/Table/index.js +1 -3
- package/cjs/Tag/Tag.js +16 -28
- package/cjs/Tag/index.js +1 -3
- package/cjs/TagGroup/TagGroup.js +1 -3
- package/cjs/TagGroup/index.js +1 -3
- package/cjs/TagInput/index.js +7 -14
- package/cjs/TagPicker/index.js +5 -12
- package/cjs/Timeline/Timeline.js +14 -29
- package/cjs/Timeline/TimelineItem.js +14 -23
- package/cjs/Timeline/index.js +1 -3
- package/cjs/Toggle/Toggle.js +26 -45
- package/cjs/Toggle/index.js +1 -3
- package/cjs/Tooltip/Tooltip.js +13 -22
- package/cjs/Tooltip/index.js +1 -3
- package/cjs/Tree/Tree.js +1 -10
- package/cjs/Tree/TreeContext.js +1 -4
- package/cjs/Tree/index.js +1 -3
- package/cjs/TreePicker/TreeNode.js +37 -60
- package/cjs/TreePicker/TreePicker.js +155 -231
- package/cjs/TreePicker/index.js +1 -3
- package/cjs/Uploader/UploadFileItem.js +37 -82
- package/cjs/Uploader/UploadTrigger.js +24 -46
- package/cjs/Uploader/Uploader.js +89 -141
- package/cjs/Uploader/index.js +1 -3
- package/cjs/Whisper/Whisper.js +8 -20
- package/cjs/Whisper/index.js +1 -3
- package/cjs/Windowing/AutoSizer.js +13 -33
- package/cjs/Windowing/List.d.ts +2 -2
- package/cjs/Windowing/List.js +6 -22
- package/cjs/Windowing/index.js +1 -7
- package/cjs/index.js +1 -164
- package/cjs/locales/ar_EG.js +1 -4
- package/cjs/locales/da_DK.js +1 -5
- package/cjs/locales/de_DE.js +1 -5
- package/cjs/locales/default.js +1 -5
- package/cjs/locales/en_GB.js +1 -3
- package/cjs/locales/en_US.js +1 -4
- package/cjs/locales/es_AR.js +1 -5
- package/cjs/locales/es_ES.js +1 -5
- package/cjs/locales/fa_IR.js +1 -4
- package/cjs/locales/fi_FI.js +1 -5
- package/cjs/locales/fr_FR.js +1 -4
- package/cjs/locales/hu_HU.js +1 -5
- package/cjs/locales/index.js +1 -47
- package/cjs/locales/it_IT.js +1 -5
- package/cjs/locales/ja_JP.js +1 -5
- package/cjs/locales/kk_KZ.js +1 -4
- package/cjs/locales/ko_KR.js +1 -5
- package/cjs/locales/ne_NP.js +1 -5
- package/cjs/locales/nl_NL.js +1 -4
- package/cjs/locales/pt_BR.js +1 -4
- package/cjs/locales/ru_RU.js +1 -4
- package/cjs/locales/sv_SE.js +1 -5
- package/cjs/locales/tr_TR.js +1 -4
- package/cjs/locales/zh_CN.js +1 -4
- package/cjs/locales/zh_TW.js +1 -4
- package/cjs/toaster/ToastContainer.js +29 -52
- package/cjs/toaster/ToastContext.js +1 -4
- package/cjs/toaster/index.js +1 -4
- package/cjs/toaster/toaster.js +4 -27
- package/cjs/toaster/useToaster.js +2 -8
- package/cjs/utils/BrowserDetection.js +7 -24
- package/cjs/utils/ReactChildren.js +2 -19
- package/cjs/utils/ajaxUpload.js +15 -33
- package/cjs/utils/appendTooltip.js +3 -9
- package/cjs/utils/attachParent.js +1 -1
- package/cjs/utils/clone.js +1 -2
- package/cjs/utils/composeFunctions.js +1 -3
- package/cjs/utils/constants.js +3 -8
- package/cjs/utils/createChainedFunction.js +2 -6
- package/cjs/utils/createComponent.js +12 -24
- package/cjs/utils/dateUtils.js +7 -121
- package/cjs/utils/deprecateComponent.js +1 -8
- package/cjs/utils/deprecatePropType.js +2 -9
- package/cjs/utils/dom.js +3 -2
- package/cjs/utils/events.js +2 -3
- package/cjs/utils/getDOMNode.js +16 -9
- package/cjs/utils/getDataGroupBy.d.ts +0 -23
- package/cjs/utils/getDataGroupBy.js +5 -44
- package/cjs/utils/getSafeRegExpString.js +1 -1
- package/cjs/utils/guid.js +1 -1
- package/cjs/utils/htmlPropsUtils.js +23 -20
- package/cjs/utils/index.js +1 -86
- package/cjs/utils/isOneOf.js +1 -2
- package/cjs/utils/mergeRefs.js +1 -2
- package/cjs/utils/placementPolyfill.js +2 -5
- package/cjs/utils/prefix.js +4 -15
- package/cjs/utils/previewFile.js +1 -6
- package/cjs/utils/propTypeChecker.js +1 -8
- package/cjs/utils/reactToString.js +1 -5
- package/cjs/utils/render.js +3 -10
- package/cjs/utils/scrollTopAnimation.js +1 -9
- package/cjs/utils/shallowEqual.js +8 -14
- package/cjs/utils/shallowEqualArray.js +1 -7
- package/cjs/utils/statusIcons.js +1 -9
- package/cjs/utils/stringToObject.js +1 -7
- package/cjs/utils/tplTransform.js +2 -7
- package/cjs/utils/treeUtils.d.ts +1 -1
- package/cjs/utils/treeUtils.js +119 -334
- package/cjs/utils/useClassNames.js +9 -15
- package/cjs/utils/useClickOutside.js +4 -8
- package/cjs/utils/useControlled.js +11 -7
- package/cjs/utils/useCustom.js +12 -25
- package/cjs/utils/useElementResize.js +1 -6
- package/cjs/utils/useEnsuredRef.js +1 -4
- package/cjs/utils/useEventCallback.js +1 -4
- package/cjs/utils/useEventListener.js +1 -5
- package/cjs/utils/useFocus.js +5 -6
- package/cjs/utils/useInternalId.js +1 -6
- package/cjs/utils/useIsMounted.js +1 -3
- package/cjs/utils/useMap.js +5 -7
- package/cjs/utils/useMount.js +1 -4
- package/cjs/utils/usePortal.js +7 -20
- package/cjs/utils/useRootClose.js +9 -19
- package/cjs/utils/useTimeout.js +3 -8
- package/cjs/utils/useToggleCaret.js +2 -14
- package/cjs/utils/useUniqueId.js +2 -9
- package/cjs/utils/useUpdateEffect.js +3 -5
- package/cjs/utils/useUpdatedRef.js +1 -2
- package/cjs/utils/useWillUnmount.js +3 -5
- package/cjs/utils/warnOnce.js +2 -2
- package/dist/rsuite-no-reset-rtl.css +23 -25
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +23 -25
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +23 -25
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +23 -25
- package/dist/rsuite.js +407 -440
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/@types/common.js +1 -0
- package/esm/@types/utils.js +14 -2
- package/esm/Affix/Affix.js +39 -50
- package/esm/Affix/index.js +1 -0
- package/esm/Animation/Bounce.js +4 -5
- package/esm/Animation/Collapse.js +19 -26
- package/esm/Animation/Fade.js +6 -7
- package/esm/Animation/Slide.js +6 -7
- package/esm/Animation/Transition.js +16 -69
- package/esm/Animation/index.js +1 -0
- package/esm/Animation/utils.js +1 -2
- package/esm/AutoComplete/AutoComplete.js +55 -75
- package/esm/AutoComplete/index.js +1 -0
- package/esm/AutoComplete/utils.js +1 -4
- package/esm/Avatar/Avatar.js +18 -22
- package/esm/Avatar/index.js +1 -0
- package/esm/AvatarGroup/AvatarGroup.js +13 -16
- package/esm/AvatarGroup/index.js +1 -0
- package/esm/Badge/Badge.js +14 -19
- package/esm/Badge/index.js +1 -0
- package/esm/Breadcrumb/Breadcrumb.js +19 -30
- package/esm/Breadcrumb/BreadcrumbItem.js +14 -17
- package/esm/Breadcrumb/index.js +1 -0
- package/esm/Button/Button.js +22 -28
- package/esm/Button/index.js +1 -0
- package/esm/ButtonGroup/ButtonGroup.js +15 -16
- package/esm/ButtonGroup/ButtonGroupContext.js +1 -0
- package/esm/ButtonGroup/index.js +1 -0
- package/esm/ButtonToolbar/ButtonToolbar.js +10 -12
- package/esm/ButtonToolbar/index.js +1 -0
- package/esm/Calendar/Calendar.js +24 -29
- package/esm/Calendar/CalendarBody.js +14 -18
- package/esm/Calendar/CalendarContainer.js +46 -51
- package/esm/Calendar/CalendarContext.js +1 -0
- package/esm/Calendar/CalendarHeader.js +32 -41
- package/esm/Calendar/MonthDropdown.js +22 -27
- package/esm/Calendar/MonthDropdownItem.js +16 -20
- package/esm/Calendar/Table.js +10 -11
- package/esm/Calendar/TableHeaderRow.js +11 -15
- package/esm/Calendar/TableRow.js +36 -50
- package/esm/Calendar/TimeDropdown.js +24 -48
- package/esm/Calendar/index.js +1 -0
- package/esm/Calendar/types.js +1 -0
- package/esm/Calendar/useCalendarDate.js +3 -11
- package/esm/Calendar/useCalendarState.js +3 -6
- package/esm/Carousel/Carousel.js +40 -52
- package/esm/Carousel/index.js +1 -0
- package/esm/Cascader/Cascader.js +126 -178
- package/esm/Cascader/DropdownMenu.js +33 -45
- package/esm/Cascader/index.js +1 -0
- package/esm/Cascader/utils.js +13 -22
- package/esm/CheckPicker/CheckPicker.js +105 -139
- package/esm/CheckPicker/index.js +1 -0
- package/esm/CheckTree/index.js +1 -0
- package/esm/CheckTreePicker/CheckTreeNode.js +28 -44
- package/esm/CheckTreePicker/CheckTreePicker.js +166 -233
- package/esm/CheckTreePicker/index.js +1 -0
- package/esm/CheckTreePicker/utils.d.ts +1 -1
- package/esm/CheckTreePicker/utils.js +14 -37
- package/esm/Checkbox/Checkbox.js +48 -66
- package/esm/Checkbox/index.js +1 -0
- package/esm/CheckboxGroup/CheckboxGroup.js +20 -25
- package/esm/CheckboxGroup/CheckboxGroupContext.js +1 -0
- package/esm/CheckboxGroup/index.js +1 -0
- package/esm/CloseButton/CloseButton.js +10 -13
- package/esm/CloseButton/index.js +1 -0
- package/esm/Col/Col.js +10 -13
- package/esm/Col/index.js +1 -0
- package/esm/Container/Container.js +11 -13
- package/esm/Container/index.js +1 -0
- package/esm/Content/Content.js +1 -1
- package/esm/Content/index.js +1 -0
- package/esm/CustomProvider/CustomProvider.js +13 -16
- package/esm/CustomProvider/FormattedDate.js +3 -6
- package/esm/CustomProvider/index.js +1 -0
- package/esm/DOMHelper/index.js +1 -2
- package/esm/DOMHelper/isElement.js +1 -1
- package/esm/DatePicker/DatePicker.js +108 -131
- package/esm/DatePicker/PredefinedRanges.js +12 -19
- package/esm/DatePicker/Toolbar.js +20 -26
- package/esm/DatePicker/index.js +1 -0
- package/esm/DatePicker/types.js +1 -0
- package/esm/DatePicker/utils.js +5 -8
- package/esm/DateRangePicker/Calendar.js +18 -18
- package/esm/DateRangePicker/DateRangePicker.js +128 -184
- package/esm/DateRangePicker/DateRangePickerContext.js +1 -0
- package/esm/DateRangePicker/disabledDateUtils.js +9 -24
- package/esm/DateRangePicker/index.js +1 -0
- package/esm/DateRangePicker/types.js +1 -0
- package/esm/DateRangePicker/utils.js +7 -12
- package/esm/Disclosure/Disclosure.js +13 -24
- package/esm/Disclosure/DisclosureButton.js +4 -7
- package/esm/Disclosure/DisclosureContent.js +1 -2
- package/esm/Disclosure/DisclosureContext.js +1 -2
- package/esm/Disclosure/index.js +1 -0
- package/esm/Disclosure/useDisclosureContext.js +1 -2
- package/esm/Divider/Divider.js +11 -12
- package/esm/Divider/index.js +1 -0
- package/esm/Drawer/Drawer.js +10 -11
- package/esm/Drawer/index.js +1 -0
- package/esm/Dropdown/Dropdown.js +35 -50
- package/esm/Dropdown/DropdownContext.js +1 -0
- package/esm/Dropdown/DropdownItem.js +22 -31
- package/esm/Dropdown/DropdownMenu.js +36 -49
- package/esm/Dropdown/DropdownSeparator.js +8 -10
- package/esm/Dropdown/DropdownState.js +1 -7
- package/esm/Dropdown/DropdownToggle.js +17 -17
- package/esm/Dropdown/index.js +1 -0
- package/esm/Dropdown/useRenderDropdownItem.js +1 -2
- package/esm/FlexboxGrid/FlexboxGrid.js +12 -13
- package/esm/FlexboxGrid/FlexboxGridItem.js +12 -14
- package/esm/FlexboxGrid/index.js +1 -0
- package/esm/Footer/Footer.js +1 -0
- package/esm/Footer/index.js +1 -0
- package/esm/Form/Form.js +36 -63
- package/esm/Form/FormContext.js +1 -0
- package/esm/Form/index.js +1 -0
- package/esm/Form/useFormClassNames.js +11 -13
- package/esm/Form/useSchemaModel.js +2 -4
- package/esm/FormControl/FormControl.js +48 -68
- package/esm/FormControl/index.js +1 -0
- package/esm/FormControl/useRegisterModel.js +1 -2
- package/esm/FormControlLabel/FormControlLabel.js +10 -12
- package/esm/FormControlLabel/index.js +1 -0
- package/esm/FormErrorMessage/FormErrorMessage.js +12 -18
- package/esm/FormErrorMessage/index.js +1 -0
- package/esm/FormGroup/FormGroup.js +9 -10
- package/esm/FormGroup/index.js +1 -0
- package/esm/FormHelpText/FormHelpText.js +11 -15
- package/esm/FormHelpText/index.js +1 -0
- package/esm/Grid/Grid.js +10 -11
- package/esm/Grid/index.js +1 -0
- package/esm/Header/Header.js +1 -0
- package/esm/Header/index.js +1 -0
- package/esm/IconButton/IconButton.js +11 -12
- package/esm/IconButton/index.js +1 -0
- package/esm/Input/Input.js +26 -32
- package/esm/Input/index.js +1 -0
- package/esm/InputGroup/InputGroup.js +23 -26
- package/esm/InputGroup/InputGroupAddon.js +9 -10
- package/esm/InputGroup/InputGroupButton.js +7 -9
- package/esm/InputGroup/index.js +1 -0
- package/esm/InputNumber/InputNumber.js +42 -72
- package/esm/InputNumber/index.js +1 -0
- package/esm/InputPicker/InputAutosize.js +17 -37
- package/esm/InputPicker/InputPicker.js +149 -225
- package/esm/InputPicker/InputSearch.js +15 -20
- package/esm/InputPicker/index.js +1 -0
- package/esm/List/List.js +37 -39
- package/esm/List/ListContext.js +1 -0
- package/esm/List/ListItem.js +26 -30
- package/esm/List/helper/AutoScroller.js +11 -21
- package/esm/List/helper/useManager.js +1 -6
- package/esm/List/helper/useSortHelper.js +58 -74
- package/esm/List/helper/utils.js +6 -11
- package/esm/List/index.js +1 -0
- package/esm/Loader/Loader.js +17 -19
- package/esm/Loader/index.js +1 -0
- package/esm/MaskedInput/MaskedInput.js +2 -1
- package/esm/MaskedInput/TextMask.js +12 -14
- package/esm/MaskedInput/adjustCaretPosition.js +99 -69
- package/esm/MaskedInput/conformToMask.js +79 -70
- package/esm/MaskedInput/createTextMaskInputElement.js +65 -62
- package/esm/MaskedInput/index.js +1 -0
- package/esm/MaskedInput/types.js +1 -0
- package/esm/MaskedInput/utilities.js +1 -6
- package/esm/Menu/Menu.js +35 -66
- package/esm/Menu/MenuContext.js +1 -4
- package/esm/Menu/MenuItem.js +15 -19
- package/esm/Menu/Menubar.js +13 -23
- package/esm/Menu/index.js +1 -0
- package/esm/Menu/useMenu.js +4 -27
- package/esm/Message/Message.js +23 -34
- package/esm/Message/index.js +1 -0
- package/esm/Modal/Modal.js +70 -69
- package/esm/Modal/ModalBody.js +11 -13
- package/esm/Modal/ModalContext.js +1 -0
- package/esm/Modal/ModalDialog.js +14 -18
- package/esm/Modal/ModalFooter.js +1 -0
- package/esm/Modal/ModalHeader.js +14 -16
- package/esm/Modal/ModalTitle.js +9 -10
- package/esm/Modal/index.js +1 -0
- package/esm/Modal/utils.js +8 -12
- package/esm/MultiCascader/DropdownMenu.js +38 -48
- package/esm/MultiCascader/MultiCascader.js +129 -174
- package/esm/MultiCascader/index.js +1 -0
- package/esm/MultiCascader/utils.js +44 -87
- package/esm/Nav/Nav.js +27 -45
- package/esm/Nav/NavContext.js +1 -0
- package/esm/Nav/NavDropdown.js +28 -44
- package/esm/Nav/NavDropdownItem.js +20 -31
- package/esm/Nav/NavDropdownMenu.js +26 -42
- package/esm/Nav/NavDropdownToggle.js +12 -15
- package/esm/Nav/NavItem.js +20 -28
- package/esm/Nav/NavMenu.js +2 -13
- package/esm/Nav/index.js +1 -0
- package/esm/Navbar/Navbar.js +10 -11
- package/esm/Navbar/NavbarBody.js +1 -0
- package/esm/Navbar/NavbarBrand.js +1 -0
- package/esm/Navbar/NavbarDropdown.js +25 -33
- package/esm/Navbar/NavbarDropdownItem.js +18 -30
- package/esm/Navbar/NavbarDropdownMenu.js +22 -37
- package/esm/Navbar/NavbarDropdownToggle.js +12 -14
- package/esm/Navbar/NavbarHeader.js +1 -0
- package/esm/Navbar/NavbarItem.js +19 -23
- package/esm/Navbar/index.js +1 -0
- package/esm/Notification/Notification.js +20 -32
- package/esm/Notification/index.js +1 -0
- package/esm/Overlay/Modal.js +40 -64
- package/esm/Overlay/ModalManager.js +1 -19
- package/esm/Overlay/Overlay.js +28 -37
- package/esm/Overlay/OverlayContext.js +1 -0
- package/esm/Overlay/OverlayTrigger.js +68 -101
- package/esm/Overlay/Position.js +25 -47
- package/esm/Overlay/index.js +1 -0
- package/esm/Overlay/positionUtils.js +25 -73
- package/esm/Pagination/Pagination.js +30 -55
- package/esm/Pagination/PaginationButton.js +15 -19
- package/esm/Pagination/PaginationGroup.js +38 -49
- package/esm/Pagination/index.js +1 -0
- package/esm/Panel/Panel.js +37 -49
- package/esm/Panel/index.js +1 -0
- package/esm/PanelGroup/PanelGroup.js +16 -18
- package/esm/PanelGroup/index.js +1 -0
- package/esm/Picker/DropdownMenu.js +50 -72
- package/esm/Picker/DropdownMenuCheckItem.js +22 -24
- package/esm/Picker/DropdownMenuGroup.js +10 -13
- package/esm/Picker/DropdownMenuItem.js +15 -18
- package/esm/Picker/PickerOverlay.js +12 -17
- package/esm/Picker/PickerToggle.js +57 -71
- package/esm/Picker/PickerToggleTrigger.js +8 -10
- package/esm/Picker/SearchBar.js +14 -15
- package/esm/Picker/SelectedElement.js +9 -14
- package/esm/Picker/ToggleButton.js +1 -0
- package/esm/Picker/index.js +1 -0
- package/esm/Picker/propTypes.js +1 -1
- package/esm/Picker/types.js +1 -0
- package/esm/Picker/utils.js +94 -182
- package/esm/Placeholder/Placeholder.js +1 -0
- package/esm/Placeholder/PlaceholderGraph.js +13 -16
- package/esm/Placeholder/PlaceholderGrid.js +18 -25
- package/esm/Placeholder/PlaceholderParagraph.js +17 -20
- package/esm/Placeholder/index.js +1 -0
- package/esm/Plaintext/Plaintext.js +14 -17
- package/esm/Plaintext/index.js +1 -0
- package/esm/Popover/Popover.js +16 -21
- package/esm/Popover/index.js +1 -0
- package/esm/Progress/Progress.js +1 -0
- package/esm/Progress/ProgressCircle.js +30 -39
- package/esm/Progress/ProgressLine.js +19 -21
- package/esm/Progress/index.js +1 -0
- package/esm/Radio/Radio.js +42 -52
- package/esm/Radio/index.js +1 -0
- package/esm/RadioGroup/RadioGroup.js +22 -25
- package/esm/RadioGroup/index.js +1 -0
- package/esm/RadioTile/RadioTile.js +30 -34
- package/esm/RadioTile/index.js +1 -0
- package/esm/RadioTileGroup/RadioTileGroup.js +17 -20
- package/esm/RadioTileGroup/index.js +1 -0
- package/esm/RangeSlider/RangeSlider.js +63 -86
- package/esm/RangeSlider/index.js +1 -0
- package/esm/Rate/Character.js +16 -21
- package/esm/Rate/Rate.js +35 -48
- package/esm/Rate/index.js +1 -0
- package/esm/Rate/utils.js +1 -2
- package/esm/Ripple/Ripple.js +16 -30
- package/esm/Ripple/index.js +1 -0
- package/esm/Row/Row.js +11 -14
- package/esm/Row/index.js +1 -0
- package/esm/SafeAnchor/SafeAnchor.js +8 -13
- package/esm/SafeAnchor/index.js +1 -0
- package/esm/Schema/Schema.js +1 -0
- package/esm/Schema/index.js +1 -0
- package/esm/SelectPicker/SelectPicker.js +137 -157
- package/esm/SelectPicker/index.js +1 -0
- package/esm/Sidebar/Sidebar.js +13 -18
- package/esm/Sidebar/index.js +1 -0
- package/esm/Sidenav/ExpandedSidenavDropdown.js +32 -35
- package/esm/Sidenav/ExpandedSidenavDropdownItem.js +19 -27
- package/esm/Sidenav/ExpandedSidenavDropdownMenu.js +22 -29
- package/esm/Sidenav/Node.js +1 -10
- package/esm/Sidenav/Sidenav.js +22 -28
- package/esm/Sidenav/SidenavBody.js +1 -0
- package/esm/Sidenav/SidenavDropdown.js +39 -52
- package/esm/Sidenav/SidenavDropdownCollapse.js +9 -13
- package/esm/Sidenav/SidenavDropdownItem.js +19 -31
- package/esm/Sidenav/SidenavDropdownMenu.js +26 -41
- package/esm/Sidenav/SidenavDropdownToggle.js +12 -14
- package/esm/Sidenav/SidenavHeader.js +1 -0
- package/esm/Sidenav/SidenavItem.js +27 -37
- package/esm/Sidenav/SidenavToggle.js +11 -18
- package/esm/Sidenav/index.js +1 -0
- package/esm/Slider/Graduated.js +14 -21
- package/esm/Slider/Handle.js +27 -39
- package/esm/Slider/Input.js +2 -2
- package/esm/Slider/Mark.js +11 -14
- package/esm/Slider/ProgressBar.js +14 -18
- package/esm/Slider/Slider.js +51 -67
- package/esm/Slider/index.js +1 -0
- package/esm/Slider/utils.js +1 -5
- package/esm/Stack/Stack.js +22 -27
- package/esm/Stack/StackItem.js +11 -11
- package/esm/Stack/index.js +1 -0
- package/esm/Steps/StepItem.js +16 -22
- package/esm/Steps/Steps.js +18 -22
- package/esm/Steps/index.js +1 -0
- package/esm/Table/Table.js +6 -7
- package/esm/Table/index.js +1 -0
- package/esm/Tag/Tag.js +16 -19
- package/esm/Tag/index.js +1 -0
- package/esm/TagGroup/TagGroup.js +1 -0
- package/esm/TagGroup/index.js +1 -0
- package/esm/TagInput/index.js +7 -7
- package/esm/TagPicker/index.js +5 -5
- package/esm/Timeline/Timeline.js +14 -19
- package/esm/Timeline/TimelineItem.js +14 -15
- package/esm/Timeline/index.js +1 -0
- package/esm/Toggle/Toggle.js +26 -35
- package/esm/Toggle/index.js +1 -0
- package/esm/Tooltip/Tooltip.js +13 -16
- package/esm/Tooltip/index.js +1 -0
- package/esm/Tree/Tree.js +1 -3
- package/esm/Tree/TreeContext.js +1 -0
- package/esm/Tree/index.js +1 -0
- package/esm/TreePicker/TreeNode.js +37 -49
- package/esm/TreePicker/TreePicker.js +155 -218
- package/esm/TreePicker/index.js +1 -0
- package/esm/Uploader/UploadFileItem.js +37 -68
- package/esm/Uploader/UploadTrigger.js +24 -38
- package/esm/Uploader/Uploader.js +90 -132
- package/esm/Uploader/index.js +1 -0
- package/esm/Whisper/Whisper.js +8 -10
- package/esm/Whisper/index.js +1 -0
- package/esm/Windowing/AutoSizer.js +13 -24
- package/esm/Windowing/List.d.ts +2 -2
- package/esm/Windowing/List.js +6 -15
- package/esm/Windowing/index.js +1 -0
- package/esm/index.js +3 -0
- package/esm/locales/ar_EG.js +1 -0
- package/esm/locales/da_DK.js +1 -1
- package/esm/locales/de_DE.js +1 -1
- package/esm/locales/default.js +1 -1
- package/esm/locales/en_GB.js +1 -0
- package/esm/locales/en_US.js +1 -0
- package/esm/locales/es_AR.js +1 -1
- package/esm/locales/es_ES.js +1 -1
- package/esm/locales/fa_IR.js +1 -0
- package/esm/locales/fi_FI.js +1 -1
- package/esm/locales/fr_FR.js +1 -0
- package/esm/locales/hu_HU.js +1 -1
- package/esm/locales/index.js +1 -0
- package/esm/locales/it_IT.js +1 -1
- package/esm/locales/ja_JP.js +1 -1
- package/esm/locales/kk_KZ.js +1 -0
- package/esm/locales/ko_KR.js +1 -1
- package/esm/locales/ne_NP.js +1 -1
- package/esm/locales/nl_NL.js +1 -0
- package/esm/locales/pt_BR.js +1 -0
- package/esm/locales/ru_RU.js +1 -0
- package/esm/locales/sv_SE.js +1 -1
- package/esm/locales/tr_TR.js +1 -0
- package/esm/locales/zh_CN.js +1 -0
- package/esm/locales/zh_TW.js +1 -0
- package/esm/toaster/ToastContainer.js +29 -42
- package/esm/toaster/ToastContext.js +1 -0
- package/esm/toaster/index.js +1 -0
- package/esm/toaster/toaster.js +4 -22
- package/esm/toaster/useToaster.js +3 -5
- package/esm/utils/BrowserDetection.js +9 -9
- package/esm/utils/ReactChildren.js +2 -8
- package/esm/utils/ajaxUpload.js +15 -32
- package/esm/utils/appendTooltip.js +3 -3
- package/esm/utils/attachParent.js +1 -0
- package/esm/utils/clone.js +1 -1
- package/esm/utils/composeFunctions.js +1 -1
- package/esm/utils/constants.js +4 -7
- package/esm/utils/createChainedFunction.js +2 -5
- package/esm/utils/createComponent.js +12 -16
- package/esm/utils/dateUtils.js +7 -23
- package/esm/utils/deprecateComponent.js +2 -2
- package/esm/utils/deprecatePropType.js +4 -6
- package/esm/utils/dom.js +3 -1
- package/esm/utils/events.js +2 -1
- package/esm/utils/getDOMNode.js +15 -8
- package/esm/utils/getDataGroupBy.d.ts +0 -23
- package/esm/utils/getDataGroupBy.js +5 -39
- package/esm/utils/getSafeRegExpString.js +1 -0
- package/esm/utils/guid.js +1 -0
- package/esm/utils/htmlPropsUtils.js +23 -14
- package/esm/utils/index.js +2 -1
- package/esm/utils/isOneOf.js +1 -1
- package/esm/utils/mergeRefs.js +1 -1
- package/esm/utils/placementPolyfill.js +2 -4
- package/esm/utils/prefix.js +4 -4
- package/esm/utils/previewFile.js +1 -3
- package/esm/utils/propTypeChecker.js +1 -3
- package/esm/utils/reactToString.js +1 -2
- package/esm/utils/render.js +3 -5
- package/esm/utils/scrollTopAnimation.js +1 -5
- package/esm/utils/shallowEqual.js +8 -13
- package/esm/utils/shallowEqualArray.js +1 -5
- package/esm/utils/statusIcons.js +1 -0
- package/esm/utils/stringToObject.js +3 -4
- package/esm/utils/tplTransform.js +2 -4
- package/esm/utils/treeUtils.d.ts +1 -1
- package/esm/utils/treeUtils.js +120 -272
- package/esm/utils/useClassNames.js +9 -9
- package/esm/utils/useClickOutside.js +4 -6
- package/esm/utils/useControlled.js +12 -6
- package/esm/utils/useCustom.js +12 -20
- package/esm/utils/useElementResize.js +2 -4
- package/esm/utils/useEnsuredRef.js +2 -3
- package/esm/utils/useEventCallback.js +2 -3
- package/esm/utils/useEventListener.js +2 -2
- package/esm/utils/useFocus.js +5 -4
- package/esm/utils/useInternalId.js +2 -3
- package/esm/utils/useIsMounted.js +1 -2
- package/esm/utils/useMap.js +5 -5
- package/esm/utils/useMount.js +1 -3
- package/esm/utils/usePortal.js +7 -13
- package/esm/utils/useRootClose.js +9 -13
- package/esm/utils/useTimeout.js +3 -7
- package/esm/utils/useToggleCaret.js +2 -7
- package/esm/utils/useUniqueId.js +2 -4
- package/esm/utils/useUpdateEffect.js +3 -4
- package/esm/utils/useUpdatedRef.js +2 -1
- package/esm/utils/useWillUnmount.js +4 -2
- package/esm/utils/warnOnce.js +2 -2
- package/package.json +2 -2
- package/styles/color-modes/light.less +4 -4
- package/styles/mixins/listbox.less +0 -2
- package/cjs/SelectPicker/Listbox.d.ts +0 -34
- package/cjs/SelectPicker/Listbox.js +0 -263
- package/cjs/SelectPicker/ListboxOption.d.ts +0 -11
- package/cjs/SelectPicker/ListboxOption.js +0 -50
- package/cjs/SelectPicker/ListboxOptionGroup.d.ts +0 -9
- package/cjs/SelectPicker/ListboxOptionGroup.js +0 -69
- package/esm/SelectPicker/Listbox.d.ts +0 -34
- package/esm/SelectPicker/Listbox.js +0 -240
- package/esm/SelectPicker/ListboxOption.d.ts +0 -11
- package/esm/SelectPicker/ListboxOption.js +0 -37
- package/esm/SelectPicker/ListboxOptionGroup.d.ts +0 -9
- package/esm/SelectPicker/ListboxOptionGroup.js +0 -53
|
@@ -1,61 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
var defaultArray = [];
|
|
2
3
|
var emptyString = '';
|
|
3
4
|
export default function adjustCaretPosition(_ref) {
|
|
4
5
|
var _ref$previousConforme = _ref.previousConformedValue,
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
6
|
+
previousConformedValue = _ref$previousConforme === void 0 ? emptyString : _ref$previousConforme,
|
|
7
|
+
_ref$previousPlacehol = _ref.previousPlaceholder,
|
|
8
|
+
previousPlaceholder = _ref$previousPlacehol === void 0 ? emptyString : _ref$previousPlacehol,
|
|
9
|
+
_ref$currentCaretPosi = _ref.currentCaretPosition,
|
|
10
|
+
currentCaretPosition = _ref$currentCaretPosi === void 0 ? 0 : _ref$currentCaretPosi,
|
|
11
|
+
conformedValue = _ref.conformedValue,
|
|
12
|
+
rawValue = _ref.rawValue,
|
|
13
|
+
placeholderChar = _ref.placeholderChar,
|
|
14
|
+
placeholder = _ref.placeholder,
|
|
15
|
+
_ref$indexesOfPipedCh = _ref.indexesOfPipedChars,
|
|
16
|
+
indexesOfPipedChars = _ref$indexesOfPipedCh === void 0 ? defaultArray : _ref$indexesOfPipedCh,
|
|
17
|
+
_ref$caretTrapIndexes = _ref.caretTrapIndexes,
|
|
18
|
+
caretTrapIndexes = _ref$caretTrapIndexes === void 0 ? defaultArray : _ref$caretTrapIndexes;
|
|
19
19
|
if (currentCaretPosition === 0 || !rawValue.length) {
|
|
20
20
|
return 0;
|
|
21
|
-
}
|
|
22
|
-
|
|
21
|
+
}
|
|
23
22
|
|
|
23
|
+
// Store lengths for faster performance?
|
|
24
24
|
var rawValueLength = rawValue.length;
|
|
25
25
|
var previousConformedValueLength = previousConformedValue.length;
|
|
26
26
|
var placeholderLength = placeholder.length;
|
|
27
|
-
var conformedValueLength = conformedValue.length;
|
|
27
|
+
var conformedValueLength = conformedValue.length;
|
|
28
|
+
|
|
29
|
+
// This tells us how long the edit is. If user modified input from `(2__)` to `(243__)`,
|
|
28
30
|
// we know the user in this instance pasted two characters
|
|
31
|
+
var editLength = rawValueLength - previousConformedValueLength;
|
|
29
32
|
|
|
30
|
-
|
|
33
|
+
// If the edit length is positive, that means the user is adding characters, not deleting.
|
|
34
|
+
var isAddition = editLength > 0;
|
|
31
35
|
|
|
32
|
-
|
|
36
|
+
// This is the first raw value the user entered that needs to be conformed to mask
|
|
37
|
+
var isFirstRawValue = previousConformedValueLength === 0;
|
|
33
38
|
|
|
34
|
-
|
|
39
|
+
// A partial multi-character edit happens when the user makes a partial selection in their
|
|
35
40
|
// input and edits that selection. That is going from `(123) 432-4348` to `() 432-4348` by
|
|
36
41
|
// selecting the first 3 digits and pressing backspace.
|
|
37
42
|
//
|
|
38
43
|
// Such cases can also happen when the user presses the backspace while holding down the ALT
|
|
39
44
|
// key.
|
|
45
|
+
var isPartialMultiCharEdit = editLength > 1 && !isFirstRawValue;
|
|
40
46
|
|
|
41
|
-
|
|
47
|
+
// This algorithm doesn't support all cases of multi-character edits, so we just return
|
|
42
48
|
// the current caret position.
|
|
43
49
|
//
|
|
44
50
|
// This works fine for most cases.
|
|
45
|
-
|
|
46
51
|
if (isPartialMultiCharEdit) {
|
|
47
52
|
return currentCaretPosition;
|
|
48
|
-
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// For a mask like (111), if the `previousConformedValue` is (1__) and user attempts to enter
|
|
49
56
|
// `f` so the `rawValue` becomes (1f__), the new `conformedValue` would be (1__), which is the
|
|
50
57
|
// same as the original `previousConformedValue`. We handle this case differently for caret
|
|
51
58
|
// positioning.
|
|
52
|
-
|
|
53
|
-
|
|
54
59
|
var possiblyHasRejectedChar = isAddition && (previousConformedValue === conformedValue || conformedValue === placeholder);
|
|
55
60
|
var startingSearchIndex = 0;
|
|
56
61
|
var trackRightCharacter;
|
|
57
62
|
var targetChar;
|
|
58
|
-
|
|
59
63
|
if (possiblyHasRejectedChar) {
|
|
60
64
|
startingSearchIndex = currentCaretPosition - editLength;
|
|
61
65
|
} else {
|
|
@@ -64,114 +68,131 @@ export default function adjustCaretPosition(_ref) {
|
|
|
64
68
|
//
|
|
65
69
|
// We do that by seeing what character lies immediately before the caret, and then look for that
|
|
66
70
|
// same character in the conformed input and place the caret there.
|
|
71
|
+
|
|
67
72
|
// First, we need to normalize the inputs so that letter capitalization between raw input and
|
|
68
73
|
// conformed input wouldn't matter.
|
|
69
74
|
var normalizedConformedValue = conformedValue.toLowerCase();
|
|
70
|
-
var normalizedRawValue = rawValue.toLowerCase();
|
|
75
|
+
var normalizedRawValue = rawValue.toLowerCase();
|
|
71
76
|
|
|
72
|
-
|
|
73
|
-
|
|
77
|
+
// Then we take all characters that come before where the caret currently is.
|
|
78
|
+
var leftHalfChars = normalizedRawValue.substr(0, currentCaretPosition).split(emptyString);
|
|
74
79
|
|
|
80
|
+
// Now we find all the characters in the left half that exist in the conformed input
|
|
81
|
+
// This step ensures that we don't look for a character that was filtered out or rejected by `conformToMask`.
|
|
75
82
|
var intersection = leftHalfChars.filter(function (char) {
|
|
76
83
|
return normalizedConformedValue.indexOf(char) !== -1;
|
|
77
|
-
});
|
|
84
|
+
});
|
|
85
|
+
|
|
86
|
+
// The last character in the intersection is the character we want to look for in the conformed
|
|
78
87
|
// value and the one we want to adjust the caret close to
|
|
88
|
+
targetChar = intersection[intersection.length - 1];
|
|
79
89
|
|
|
80
|
-
|
|
90
|
+
// Calculate the number of mask characters in the previous placeholder
|
|
81
91
|
// from the start of the string up to the place where the caret is
|
|
82
|
-
|
|
83
92
|
var previousLeftMaskChars = previousPlaceholder.substr(0, intersection.length).split(emptyString).filter(function (char) {
|
|
84
93
|
return char !== placeholderChar;
|
|
85
|
-
}).length;
|
|
86
|
-
// from the start of the string up to the place where the caret is
|
|
94
|
+
}).length;
|
|
87
95
|
|
|
96
|
+
// Calculate the number of mask characters in the current placeholder
|
|
97
|
+
// from the start of the string up to the place where the caret is
|
|
88
98
|
var leftMaskChars = placeholder.substr(0, intersection.length).split(emptyString).filter(function (char) {
|
|
89
99
|
return char !== placeholderChar;
|
|
90
|
-
}).length;
|
|
100
|
+
}).length;
|
|
91
101
|
|
|
92
|
-
|
|
102
|
+
// Has the number of mask characters up to the caret changed?
|
|
103
|
+
var masklengthChanged = leftMaskChars !== previousLeftMaskChars;
|
|
93
104
|
|
|
94
|
-
|
|
105
|
+
// Detect if `targetChar` is a mask character and has moved to the left
|
|
106
|
+
var targetIsMaskMovingLeft = previousPlaceholder[intersection.length - 1] !== undefined && placeholder[intersection.length - 2] !== undefined && previousPlaceholder[intersection.length - 1] !== placeholderChar && previousPlaceholder[intersection.length - 1] !== placeholder[intersection.length - 1] && previousPlaceholder[intersection.length - 1] === placeholder[intersection.length - 2];
|
|
107
|
+
|
|
108
|
+
// If deleting and the `targetChar` `is a mask character and `masklengthChanged` is true
|
|
95
109
|
// or the mask is moving to the left, we can't use the selected `targetChar` any longer
|
|
96
110
|
// if we are not at the end of the string.
|
|
97
111
|
// In this case, change tracking strategy and track the character to the right of the caret.
|
|
98
|
-
|
|
99
112
|
if (!isAddition && (masklengthChanged || targetIsMaskMovingLeft) && previousLeftMaskChars > 0 && placeholder.indexOf(targetChar) > -1 && rawValue[currentCaretPosition] !== undefined) {
|
|
100
113
|
trackRightCharacter = true;
|
|
101
114
|
targetChar = rawValue[currentCaretPosition];
|
|
102
|
-
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// It is possible that `targetChar` will appear multiple times in the conformed value.
|
|
103
118
|
// We need to know not to select a character that looks like our target character from the placeholder or
|
|
104
119
|
// the piped characters, so we inspect the piped characters and the placeholder to see if they contain
|
|
105
120
|
// characters that match our target character.
|
|
121
|
+
|
|
106
122
|
// If the `conformedValue` got piped, we need to know which characters were piped in so that when we look for
|
|
107
123
|
// our `targetChar`, we don't select a piped char by mistake
|
|
108
|
-
|
|
109
|
-
|
|
110
124
|
var pipedChars = indexesOfPipedChars.map(function (index) {
|
|
111
125
|
return normalizedConformedValue[index];
|
|
112
|
-
});
|
|
126
|
+
});
|
|
113
127
|
|
|
128
|
+
// We need to know how many times the `targetChar` occurs in the piped characters.
|
|
114
129
|
var countTargetCharInPipedChars = pipedChars.filter(function (char) {
|
|
115
130
|
return char === targetChar;
|
|
116
|
-
}).length;
|
|
131
|
+
}).length;
|
|
117
132
|
|
|
133
|
+
// We need to know how many times it occurs in the intersection
|
|
118
134
|
var countTargetCharInIntersection = intersection.filter(function (char) {
|
|
119
135
|
return char === targetChar;
|
|
120
|
-
}).length;
|
|
121
|
-
// our `targetChar`, so we don't select one of those by mistake.
|
|
136
|
+
}).length;
|
|
122
137
|
|
|
138
|
+
// We need to know if the placeholder contains characters that look like
|
|
139
|
+
// our `targetChar`, so we don't select one of those by mistake.
|
|
123
140
|
var countTargetCharInPlaceholder = placeholder.substr(0, placeholder.indexOf(placeholderChar)).split(emptyString).filter(function (char, index) {
|
|
124
|
-
return (
|
|
125
|
-
|
|
141
|
+
return (
|
|
142
|
+
// Check if `char` is the same as our `targetChar`, so we account for it
|
|
143
|
+
char === targetChar &&
|
|
144
|
+
// but also make sure that both the `rawValue` and placeholder don't have the same character at the same
|
|
126
145
|
// index because if they are equal, that means we are already counting those characters in
|
|
127
146
|
// `countTargetCharInIntersection`
|
|
128
147
|
rawValue[index] !== char
|
|
129
148
|
);
|
|
130
|
-
}).length;
|
|
131
|
-
// for is:
|
|
149
|
+
}).length;
|
|
132
150
|
|
|
133
|
-
|
|
151
|
+
// The number of times we need to see occurrences of the `targetChar` before we know it is the one we're looking
|
|
152
|
+
// for is:
|
|
153
|
+
var requiredNumberOfMatches = countTargetCharInPlaceholder + countTargetCharInIntersection + countTargetCharInPipedChars + (
|
|
154
|
+
// The character to the right of the caret isn't included in `intersection`
|
|
134
155
|
// so add one if we are tracking the character to the right
|
|
135
|
-
trackRightCharacter ? 1 : 0);
|
|
156
|
+
trackRightCharacter ? 1 : 0);
|
|
157
|
+
|
|
158
|
+
// Now we start looking for the location of the `targetChar`.
|
|
136
159
|
// We keep looping forward and store the index in every iteration. Once we have encountered
|
|
137
160
|
// enough occurrences of the target character, we break out of the loop
|
|
138
161
|
// If are searching for the second `1` in `1214`, `startingSearchIndex` will point at `4`.
|
|
139
|
-
|
|
140
162
|
var numberOfEncounteredMatches = 0;
|
|
141
|
-
|
|
142
163
|
for (var i = 0; i < conformedValueLength; i++) {
|
|
143
164
|
var conformedValueChar = normalizedConformedValue[i];
|
|
144
165
|
startingSearchIndex = i + 1;
|
|
145
|
-
|
|
146
166
|
if (conformedValueChar === targetChar) {
|
|
147
167
|
numberOfEncounteredMatches++;
|
|
148
168
|
}
|
|
149
|
-
|
|
150
169
|
if (numberOfEncounteredMatches >= requiredNumberOfMatches) {
|
|
151
170
|
break;
|
|
152
171
|
}
|
|
153
172
|
}
|
|
154
|
-
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// At this point, if we simply return `startingSearchIndex` as the adjusted caret position,
|
|
155
176
|
// most cases would be handled. However, we want to fast forward or rewind the caret to the
|
|
156
177
|
// closest placeholder character if it happens to be in a non-editable spot. That's what the next
|
|
157
178
|
// logic is for.
|
|
158
|
-
// In case of addition, we fast forward.
|
|
159
|
-
|
|
160
179
|
|
|
180
|
+
// In case of addition, we fast forward.
|
|
161
181
|
if (isAddition) {
|
|
162
182
|
// We want to remember the last placeholder character encountered so that if the mask
|
|
163
183
|
// contains more characters after the last placeholder character, we don't forward the caret
|
|
164
184
|
// that far to the right. Instead, we stop it at the last encountered placeholder character.
|
|
165
185
|
var lastPlaceholderChar = startingSearchIndex;
|
|
166
|
-
|
|
167
186
|
for (var _i = startingSearchIndex; _i <= placeholderLength; _i++) {
|
|
168
187
|
if (placeholder[_i] === placeholderChar) {
|
|
169
188
|
lastPlaceholderChar = _i;
|
|
170
189
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
placeholder[_i] === placeholderChar ||
|
|
174
|
-
|
|
190
|
+
if (
|
|
191
|
+
// If we're adding, we can position the caret at the next placeholder character.
|
|
192
|
+
placeholder[_i] === placeholderChar ||
|
|
193
|
+
// If a caret trap was set by a mask function, we need to stop at the trap.
|
|
194
|
+
caretTrapIndexes.indexOf(_i) !== -1 ||
|
|
195
|
+
// This is the end of the placeholder. We cannot move any further. Let's put the caret there.
|
|
175
196
|
_i === placeholderLength) {
|
|
176
197
|
return lastPlaceholderChar;
|
|
177
198
|
}
|
|
@@ -184,10 +205,14 @@ export default function adjustCaretPosition(_ref) {
|
|
|
184
205
|
for (var _i2 = startingSearchIndex - 1; _i2 >= 0; _i2--) {
|
|
185
206
|
// If tracking the character to the right of the cursor, we move to the left until
|
|
186
207
|
// we found the character and then place the caret right before it
|
|
187
|
-
|
|
208
|
+
|
|
209
|
+
if (
|
|
210
|
+
// `targetChar` should be in `conformedValue`, since it was in `rawValue`, just
|
|
188
211
|
// to the right of the caret
|
|
189
|
-
conformedValue[_i2] === targetChar ||
|
|
190
|
-
|
|
212
|
+
conformedValue[_i2] === targetChar ||
|
|
213
|
+
// If a caret trap was set by a mask function, we need to stop at the trap.
|
|
214
|
+
caretTrapIndexes.indexOf(_i2) !== -1 ||
|
|
215
|
+
// This is the beginning of the placeholder. We cannot move any further.
|
|
191
216
|
// Let's put the caret there.
|
|
192
217
|
_i2 === 0) {
|
|
193
218
|
return _i2;
|
|
@@ -195,14 +220,19 @@ export default function adjustCaretPosition(_ref) {
|
|
|
195
220
|
}
|
|
196
221
|
} else {
|
|
197
222
|
// Searching for the first placeholder or caret trap to the left
|
|
223
|
+
|
|
198
224
|
for (var _i3 = startingSearchIndex; _i3 >= 0; _i3--) {
|
|
199
225
|
// If we're deleting, we stop the caret right before the placeholder character.
|
|
200
226
|
// For example, for mask `(111) 11`, current conformed input `(456) 86`. If user
|
|
201
227
|
// modifies input to `(456 86`. That is, they deleted the `)`, we place the caret
|
|
202
228
|
// right after the first `6`
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
229
|
+
|
|
230
|
+
if (
|
|
231
|
+
// If we're deleting, we can position the caret right before the placeholder character
|
|
232
|
+
placeholder[_i3 - 1] === placeholderChar ||
|
|
233
|
+
// If a caret trap was set by a mask function, we need to stop at the trap.
|
|
234
|
+
caretTrapIndexes.indexOf(_i3) !== -1 ||
|
|
235
|
+
// This is the beginning of the placeholder. We cannot move any further.
|
|
206
236
|
// Let's put the caret there.
|
|
207
237
|
_i3 === 0) {
|
|
208
238
|
return _i3;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client';
|
|
1
2
|
import { convertMaskToPlaceholder, processCaretTraps, defaultPlaceholderChar } from './utilities';
|
|
2
3
|
export function isArray(value) {
|
|
3
4
|
return Array.isArray && Array.isArray(value) || value instanceof Array;
|
|
@@ -6,15 +7,12 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
6
7
|
if (rawValue === void 0) {
|
|
7
8
|
rawValue = '';
|
|
8
9
|
}
|
|
9
|
-
|
|
10
10
|
if (mask === void 0) {
|
|
11
11
|
mask = [];
|
|
12
12
|
}
|
|
13
|
-
|
|
14
13
|
if (config === void 0) {
|
|
15
14
|
config = {};
|
|
16
15
|
}
|
|
17
|
-
|
|
18
16
|
if (!isArray(mask)) {
|
|
19
17
|
// If someone passes a function as the mask property, we should call the
|
|
20
18
|
// function to get the mask array - Normally this is handled by the
|
|
@@ -22,43 +20,50 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
22
20
|
// to be used directly with `conformToMask`
|
|
23
21
|
if (typeof mask === 'function') {
|
|
24
22
|
// call the mask function to get the mask array
|
|
25
|
-
mask = mask(rawValue, config);
|
|
26
|
-
// the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask
|
|
23
|
+
mask = mask(rawValue, config);
|
|
27
24
|
|
|
25
|
+
// mask functions can setup caret traps to have some control over how the caret moves. We need to process
|
|
26
|
+
// the mask for any caret traps. `processCaretTraps` will remove the caret traps from the mask
|
|
28
27
|
mask = processCaretTraps(mask).maskWithoutCaretTraps;
|
|
29
28
|
} else {
|
|
30
29
|
throw new Error('Text-mask:conformToMask; The mask property must be an array.');
|
|
31
30
|
}
|
|
32
|
-
}
|
|
33
|
-
|
|
31
|
+
}
|
|
34
32
|
|
|
33
|
+
// These configurations tell us how to conform the mask
|
|
35
34
|
var _config = config,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
35
|
+
_config$guide = _config.guide,
|
|
36
|
+
guide = _config$guide === void 0 ? true : _config$guide,
|
|
37
|
+
_config$previousConfo = _config.previousConformedValue,
|
|
38
|
+
previousConformedValue = _config$previousConfo === void 0 ? '' : _config$previousConfo,
|
|
39
|
+
_config$placeholderCh = _config.placeholderChar,
|
|
40
|
+
placeholderChar = _config$placeholderCh === void 0 ? defaultPlaceholderChar : _config$placeholderCh,
|
|
41
|
+
_config$placeholder = _config.placeholder,
|
|
42
|
+
placeholder = _config$placeholder === void 0 ? convertMaskToPlaceholder(mask, placeholderChar) : _config$placeholder,
|
|
43
|
+
_config$currentCaretP = _config.currentCaretPosition,
|
|
44
|
+
currentCaretPosition = _config$currentCaretP === void 0 ? 0 : _config$currentCaretP,
|
|
45
|
+
keepCharPositions = _config.keepCharPositions; // The configs below indicate that the user wants the algorithm to work in *no guide* mode
|
|
46
|
+
var suppressGuide = guide === false && previousConformedValue !== undefined;
|
|
47
|
+
|
|
48
|
+
// Calculate lengths once for performance
|
|
50
49
|
var rawValueLength = rawValue.length;
|
|
51
50
|
var previousConformedValueLength = previousConformedValue.length;
|
|
52
51
|
var placeholderLength = placeholder.length;
|
|
53
|
-
var maskLength = mask.length;
|
|
52
|
+
var maskLength = mask.length;
|
|
53
|
+
|
|
54
|
+
// This tells us the number of edited characters and the direction in which they were edited (+/-)
|
|
55
|
+
var editDistance = rawValueLength - previousConformedValueLength;
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
// In *no guide* mode, we need to know if the user is trying to add a character or not
|
|
58
|
+
var isAddition = editDistance > 0;
|
|
56
59
|
|
|
57
|
-
|
|
60
|
+
// Tells us the index of the first change. For (438) 394-4938 to (38) 394-4938, that would be 1
|
|
61
|
+
var indexOfFirstChange = currentCaretPosition + (isAddition ? -editDistance : 0);
|
|
58
62
|
|
|
59
|
-
|
|
63
|
+
// We're also gonna need the index of last change, which we can derive as follows...
|
|
64
|
+
var indexOfLastChange = indexOfFirstChange + Math.abs(editDistance);
|
|
60
65
|
|
|
61
|
-
|
|
66
|
+
// If `conformToMask` is configured to keep character positions, that is, for mask 111, previous value
|
|
62
67
|
// _2_ and raw value 3_2_, the new conformed value should be 32_, not 3_2 (default behavior). That's in the case of
|
|
63
68
|
// addition. And in the case of deletion, previous value _23, raw value _3, the new conformed string should be
|
|
64
69
|
// __3, not _3_ (default behavior)
|
|
@@ -66,56 +71,57 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
66
71
|
// The next block of logic handles keeping character positions for the case of deletion. (Keeping
|
|
67
72
|
// character positions for the case of addition is further down since it is handled differently.)
|
|
68
73
|
// To do this, we want to compensate for all characters that were deleted
|
|
69
|
-
|
|
70
74
|
if (keepCharPositions === true && !isAddition) {
|
|
71
75
|
// We will be storing the new placeholder characters in this variable.
|
|
72
|
-
var compensatingPlaceholderChars = '';
|
|
76
|
+
var compensatingPlaceholderChars = '';
|
|
73
77
|
|
|
78
|
+
// For every character that was deleted from a placeholder position, we add a placeholder char
|
|
74
79
|
for (var i = indexOfFirstChange; i < indexOfLastChange; i++) {
|
|
75
80
|
if (placeholder[i] === placeholderChar) {
|
|
76
81
|
compensatingPlaceholderChars += placeholderChar;
|
|
77
82
|
}
|
|
78
|
-
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// Now we trick our algorithm by modifying the raw value to make it contain additional placeholder characters
|
|
79
86
|
// That way when the we start laying the characters again on the mask, it will keep the non-deleted characters
|
|
80
87
|
// in their positions.
|
|
81
|
-
|
|
82
|
-
|
|
83
88
|
rawValue = rawValue.slice(0, indexOfFirstChange) + compensatingPlaceholderChars + rawValue.slice(indexOfFirstChange, rawValueLength);
|
|
84
|
-
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// Convert `rawValue` string to an array, and mark characters based on whether they are newly added or have
|
|
85
92
|
// existed in the previous conformed value. Identifying new and old characters is needed for `conformToMask`
|
|
86
93
|
// to work if it is configured to keep character positions.
|
|
87
|
-
|
|
88
|
-
|
|
89
94
|
var rawValueArr = rawValue.split('').map(function (char, i) {
|
|
90
95
|
return {
|
|
91
96
|
char: char,
|
|
92
97
|
isNew: i >= indexOfFirstChange && i < indexOfLastChange
|
|
93
98
|
};
|
|
94
|
-
});
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// The loop below removes masking characters from user input. For example, for mask
|
|
95
102
|
// `00 (111)`, the placeholder would be `00 (___)`. If user input is `00 (234)`, the loop below
|
|
96
103
|
// would remove all characters but `234` from the `rawValueArr`. The rest of the algorithm
|
|
97
104
|
// then would lay `234` on top of the available placeholder positions in the mask.
|
|
98
|
-
|
|
99
105
|
for (var _i = rawValueLength - 1; _i >= 0; _i--) {
|
|
100
106
|
var char = rawValueArr[_i].char;
|
|
101
|
-
|
|
102
107
|
if (char !== placeholderChar) {
|
|
103
108
|
var shouldOffset = _i >= indexOfFirstChange && previousConformedValueLength === maskLength;
|
|
104
|
-
|
|
105
109
|
if (char === placeholder[shouldOffset ? _i - editDistance : _i]) {
|
|
106
110
|
rawValueArr.splice(_i, 1);
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
|
-
}
|
|
110
|
-
// in the algorithm below
|
|
111
|
-
|
|
113
|
+
}
|
|
112
114
|
|
|
115
|
+
// This is the variable that we will be filling with characters as we figure them out
|
|
116
|
+
// in the algorithm below
|
|
113
117
|
var conformedValue = '';
|
|
114
|
-
var someCharsRejected = false;
|
|
118
|
+
var someCharsRejected = false;
|
|
115
119
|
|
|
120
|
+
// Ok, so first we loop through the placeholder looking for placeholder characters to fill up.
|
|
116
121
|
placeholderLoop: for (var _i2 = 0; _i2 < placeholderLength; _i2++) {
|
|
117
|
-
var charInPlaceholder = placeholder[_i2];
|
|
122
|
+
var charInPlaceholder = placeholder[_i2];
|
|
118
123
|
|
|
124
|
+
// We see one. Let's find out what we can put in it.
|
|
119
125
|
if (charInPlaceholder === placeholderChar) {
|
|
120
126
|
// But before that, do we actually have any user characters that need a place?
|
|
121
127
|
if (rawValueArr.length > 0) {
|
|
@@ -125,17 +131,18 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
125
131
|
// Let's retrieve the first user character in the queue of characters we have left
|
|
126
132
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
127
133
|
var _ref = rawValueArr.shift(),
|
|
128
|
-
|
|
129
|
-
|
|
134
|
+
rawValueChar = _ref.char,
|
|
135
|
+
isNew = _ref.isNew; // If the character we got from the user input is a placeholder character (which happens
|
|
130
136
|
// regularly because user input could be something like (540) 90_-____, which includes
|
|
131
137
|
// a bunch of `_` which are placeholder characters) and we are not in *no guide* mode,
|
|
132
138
|
// then we map this placeholder character to the current spot in the placeholder
|
|
133
|
-
|
|
134
|
-
|
|
135
139
|
if (rawValueChar === placeholderChar && suppressGuide !== true) {
|
|
136
|
-
conformedValue += placeholderChar;
|
|
140
|
+
conformedValue += placeholderChar;
|
|
141
|
+
|
|
142
|
+
// And we go to find the next placeholder character that needs filling
|
|
143
|
+
continue placeholderLoop;
|
|
137
144
|
|
|
138
|
-
|
|
145
|
+
// Else if, the character we got from the user input is not a placeholder, let's see
|
|
139
146
|
// if the current position in the mask can accept it.
|
|
140
147
|
} else if (mask[_i2].test(rawValueChar)) {
|
|
141
148
|
// we map the character differently based on whether we are keeping character positions or not.
|
|
@@ -152,76 +159,79 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
152
159
|
// `9`, to the first available placeholder position, but then, there are no more spots available for the
|
|
153
160
|
// `4` and `2`. So, we discard them and end up with a conformed value of `92__`.
|
|
154
161
|
var rawValueArrLength = rawValueArr.length;
|
|
155
|
-
var indexOfNextAvailablePlaceholderChar = null;
|
|
162
|
+
var indexOfNextAvailablePlaceholderChar = null;
|
|
163
|
+
|
|
164
|
+
// Let's loop through the remaining raw value characters. We are looking for either a suitable spot, ie,
|
|
156
165
|
// a placeholder character or a non-suitable spot, ie, a non-placeholder character that is not new.
|
|
157
166
|
// If we see a suitable spot first, we store its position and exit the loop. If we see a non-suitable
|
|
158
167
|
// spot first, we exit the loop and our `indexOfNextAvailablePlaceholderChar` will stay as `null`.
|
|
159
|
-
|
|
160
168
|
for (var _i3 = 0; _i3 < rawValueArrLength; _i3++) {
|
|
161
169
|
var charData = rawValueArr[_i3];
|
|
162
|
-
|
|
163
170
|
if (charData.char !== placeholderChar && charData.isNew === false) {
|
|
164
171
|
break;
|
|
165
172
|
}
|
|
166
|
-
|
|
167
173
|
if (charData.char === placeholderChar) {
|
|
168
174
|
indexOfNextAvailablePlaceholderChar = _i3;
|
|
169
175
|
break;
|
|
170
176
|
}
|
|
171
|
-
}
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
// If `indexOfNextAvailablePlaceholderChar` is not `null`, that means the character is not blocked.
|
|
172
180
|
// We can map it. And to keep the character positions, we remove the placeholder character
|
|
173
181
|
// from the remaining characters
|
|
174
|
-
|
|
175
|
-
|
|
176
182
|
if (indexOfNextAvailablePlaceholderChar !== null) {
|
|
177
183
|
conformedValue += rawValueChar;
|
|
178
|
-
rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1);
|
|
184
|
+
rawValueArr.splice(indexOfNextAvailablePlaceholderChar, 1);
|
|
185
|
+
|
|
186
|
+
// If `indexOfNextAvailablePlaceholderChar` is `null`, that means the character is blocked. We have to
|
|
179
187
|
// discard it.
|
|
180
188
|
} else {
|
|
181
189
|
_i2--;
|
|
182
190
|
}
|
|
183
|
-
}
|
|
184
|
-
|
|
191
|
+
}
|
|
185
192
|
|
|
193
|
+
// Since we've mapped this placeholder position. We move on to the next one.
|
|
186
194
|
continue placeholderLoop;
|
|
187
195
|
} else {
|
|
188
196
|
someCharsRejected = true;
|
|
189
197
|
}
|
|
190
198
|
}
|
|
191
|
-
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
// We reach this point when we've mapped all the user input characters to placeholder
|
|
192
202
|
// positions in the mask. In *guide* mode, we append the left over characters in the
|
|
193
203
|
// placeholder to the `conformedString`, but in *no guide* mode, we don't wanna do that.
|
|
194
204
|
//
|
|
195
205
|
// That is, for mask `(111)` and user input `2`, we want to return `(2`, not `(2__)`.
|
|
196
|
-
|
|
197
|
-
|
|
198
206
|
if (suppressGuide === false) {
|
|
199
207
|
conformedValue += placeholder.substr(_i2, placeholderLength);
|
|
200
|
-
}
|
|
208
|
+
}
|
|
201
209
|
|
|
210
|
+
// And we break
|
|
211
|
+
break;
|
|
202
212
|
|
|
203
|
-
|
|
213
|
+
// Else, the charInPlaceholder is not a placeholderChar. That is, we cannot fill it
|
|
204
214
|
// with user input. So we just map it to the final output
|
|
205
215
|
} else {
|
|
206
216
|
conformedValue += charInPlaceholder;
|
|
207
217
|
}
|
|
208
|
-
}
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// The following logic is needed to deal with the case of deletion in *no guide* mode.
|
|
209
221
|
//
|
|
210
222
|
// Consider the silly mask `(111) /// 1`. What if user tries to delete the last placeholder
|
|
211
223
|
// position? Something like `(589) /// `. We want to conform that to `(589`. Not `(589) /// `.
|
|
212
224
|
// That's why the logic below finds the last filled placeholder character, and removes everything
|
|
213
225
|
// from that point on.
|
|
214
|
-
|
|
215
|
-
|
|
216
226
|
if (suppressGuide && isAddition === false) {
|
|
217
|
-
var indexOfLastFilledPlaceholderChar = null;
|
|
227
|
+
var indexOfLastFilledPlaceholderChar = null;
|
|
218
228
|
|
|
229
|
+
// Find the last filled placeholder position and substring from there
|
|
219
230
|
for (var _i4 = 0; _i4 < conformedValue.length; _i4++) {
|
|
220
231
|
if (placeholder[_i4] === placeholderChar) {
|
|
221
232
|
indexOfLastFilledPlaceholderChar = _i4;
|
|
222
233
|
}
|
|
223
234
|
}
|
|
224
|
-
|
|
225
235
|
if (indexOfLastFilledPlaceholderChar !== null) {
|
|
226
236
|
// We substring from the beginning until the position after the last filled placeholder char.
|
|
227
237
|
conformedValue = conformedValue.substr(0, indexOfLastFilledPlaceholderChar + 1);
|
|
@@ -231,7 +241,6 @@ export default function conformToMask(rawValue, mask, config) {
|
|
|
231
241
|
conformedValue = '';
|
|
232
242
|
}
|
|
233
243
|
}
|
|
234
|
-
|
|
235
244
|
return {
|
|
236
245
|
conformedValue: conformedValue,
|
|
237
246
|
meta: {
|