@vkontakte/vkui 4.28.0 → 4.28.1
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/.browserslistrc +2 -0
- package/.cache/.eslintcache +1 -0
- package/.cache/.stylelintcache +1 -0
- package/.cache/.tsbuildinfo +58386 -0
- package/.cache/ts/src/appearance/constants.d.ts +1 -0
- package/.cache/ts/src/components/ActionSheet/ActionSheet.d.ts +26 -0
- package/.cache/ts/src/components/ActionSheet/ActionSheetContext.d.ts +8 -0
- package/.cache/ts/src/components/ActionSheet/ActionSheetDropdown.d.ts +4 -0
- package/.cache/ts/src/components/ActionSheet/ActionSheetDropdownDesktop.d.ts +4 -0
- package/.cache/ts/src/components/ActionSheet/types.d.ts +9 -0
- package/.cache/ts/src/components/ActionSheetItem/ActionSheetItem.d.ts +20 -0
- package/.cache/ts/src/components/AdaptivityProvider/AdaptivityContext.d.ts +46 -0
- package/.cache/ts/src/components/AdaptivityProvider/AdaptivityProvider.d.ts +10 -0
- package/.cache/ts/src/components/Alert/Alert.d.ts +24 -0
- package/.cache/ts/src/components/AppRoot/AppRoot.d.ts +14 -0
- package/.cache/ts/src/components/AppRoot/AppRootContext.d.ts +9 -0
- package/.cache/ts/src/components/AppRoot/AppRootPortal.d.ts +5 -0
- package/.cache/ts/src/components/AppRoot/ScrollContext.d.ts +23 -0
- package/.cache/ts/src/components/AppearanceProvider/AppearanceProvider.d.ts +7 -0
- package/.cache/ts/src/components/AppearanceProvider/AppearanceProviderContext.d.ts +3 -0
- package/.cache/ts/src/components/Avatar/Avatar.d.ts +22 -0
- package/.cache/ts/src/components/Badge/Badge.d.ts +6 -0
- package/.cache/ts/src/components/Banner/Banner.d.ts +65 -0
- package/.cache/ts/src/components/Button/Button.d.ts +20 -0
- package/.cache/ts/src/components/ButtonGroup/ButtonGroup.d.ts +20 -0
- package/.cache/ts/src/components/Calendar/Calendar.d.ts +21 -0
- package/.cache/ts/src/components/CalendarDay/CalendarDay.d.ts +22 -0
- package/.cache/ts/src/components/CalendarDays/CalendarDays.d.ts +22 -0
- package/.cache/ts/src/components/CalendarHeader/CalendarHeader.d.ts +16 -0
- package/.cache/ts/src/components/CalendarRange/CalendarRange.d.ts +16 -0
- package/.cache/ts/src/components/CalendarTime/CalendarTime.d.ts +11 -0
- package/.cache/ts/src/components/Card/Card.d.ts +7 -0
- package/.cache/ts/src/components/CardGrid/CardGrid.d.ts +8 -0
- package/.cache/ts/src/components/CardScroll/CardScroll.d.ts +12 -0
- package/.cache/ts/src/components/Cell/Cell.d.ts +47 -0
- package/.cache/ts/src/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/.cache/ts/src/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/.cache/ts/src/components/Cell/useDraggable.d.ts +13 -0
- package/.cache/ts/src/components/CellButton/CellButton.d.ts +9 -0
- package/.cache/ts/src/components/Checkbox/Checkbox.d.ts +10 -0
- package/.cache/ts/src/components/Chip/Chip.d.ts +16 -0
- package/.cache/ts/src/components/ChipsInput/ChipsInput.d.ts +30 -0
- package/.cache/ts/src/components/ChipsInput/useChipsInput.d.ts +14 -0
- package/.cache/ts/src/components/ChipsSelect/ChipsSelect.d.ts +40 -0
- package/.cache/ts/src/components/ChipsSelect/useChipsSelect.d.ts +22 -0
- package/.cache/ts/src/components/ClickPopper/ClickPopper.d.ts +21 -0
- package/.cache/ts/src/components/ConfigProvider/ConfigProvider.d.ts +16 -0
- package/.cache/ts/src/components/ConfigProvider/ConfigProviderContext.d.ts +36 -0
- package/.cache/ts/src/components/ContentCard/ContentCard.d.ts +34 -0
- package/.cache/ts/src/components/Counter/Counter.d.ts +11 -0
- package/.cache/ts/src/components/CustomScrollView/CustomScrollView.d.ts +10 -0
- package/.cache/ts/src/components/CustomSelect/CustomSelect.d.ts +65 -0
- package/.cache/ts/src/components/CustomSelectDropdown/CustomSelectDropdown.d.ts +15 -0
- package/.cache/ts/src/components/CustomSelectOption/CustomSelectOption.d.ts +15 -0
- package/.cache/ts/src/components/DateInput/DateInput.d.ts +12 -0
- package/.cache/ts/src/components/DatePicker/DatePicker.d.ts +24 -0
- package/.cache/ts/src/components/DateRangeInput/DateRangeInput.d.ts +18 -0
- package/.cache/ts/src/components/Div/Div.d.ts +6 -0
- package/.cache/ts/src/components/Dropdown/Dropdown.d.ts +8 -0
- package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/.cache/ts/src/components/Epic/Epic.d.ts +10 -0
- package/.cache/ts/src/components/Epic/ScrollSaver.d.ts +6 -0
- package/.cache/ts/src/components/File/File.d.ts +9 -0
- package/.cache/ts/src/components/FixedLayout/FixedLayout.d.ts +19 -0
- package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +8 -0
- package/.cache/ts/src/components/FocusVisible/FocusVisible.d.ts +8 -0
- package/.cache/ts/src/components/Footer/Footer.d.ts +5 -0
- package/.cache/ts/src/components/FormField/FormField.d.ts +14 -0
- package/.cache/ts/src/components/FormItem/FormItem.d.ts +14 -0
- package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +6 -0
- package/.cache/ts/src/components/FormLayoutGroup/FormLayoutGroup.d.ts +13 -0
- package/.cache/ts/src/components/FormStatus/FormStatus.d.ts +7 -0
- package/.cache/ts/src/components/Gallery/Gallery.d.ts +39 -0
- package/.cache/ts/src/components/Gradient/Gradient.d.ts +7 -0
- package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +8 -0
- package/.cache/ts/src/components/Group/Group.d.ts +23 -0
- package/.cache/ts/src/components/Header/Header.d.ts +18 -0
- package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +10 -0
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +19 -0
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScrollArrow.d.ts +8 -0
- package/.cache/ts/src/components/HoverPopper/HoverPopper.d.ts +29 -0
- package/.cache/ts/src/components/IconButton/IconButton.d.ts +11 -0
- package/.cache/ts/src/components/InfoRow/InfoRow.d.ts +7 -0
- package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +32 -0
- package/.cache/ts/src/components/Input/Input.d.ts +9 -0
- package/.cache/ts/src/components/InputLike/InputLike.d.ts +10 -0
- package/.cache/ts/src/components/InputLike/InputLikeDivider.d.ts +3 -0
- package/.cache/ts/src/components/Link/Link.d.ts +6 -0
- package/.cache/ts/src/components/List/List.d.ts +4 -0
- package/.cache/ts/src/components/List/ListContext.d.ts +4 -0
- package/.cache/ts/src/components/LocaleProviderContext/LocaleProviderContext.d.ts +2 -0
- package/.cache/ts/src/components/MiniInfoCell/MiniInfoCell.d.ts +39 -0
- package/.cache/ts/src/components/ModalCard/ModalCard.d.ts +10 -0
- package/.cache/ts/src/components/ModalCardBase/ModalCardBase.d.ts +32 -0
- package/.cache/ts/src/components/ModalDismissButton/ModalDismissButton.d.ts +5 -0
- package/.cache/ts/src/components/ModalPage/ModalPage.d.ts +22 -0
- package/.cache/ts/src/components/ModalPageHeader/ModalPageHeader.d.ts +8 -0
- package/.cache/ts/src/components/ModalRoot/ModalRoot.d.ts +16 -0
- package/.cache/ts/src/components/ModalRoot/ModalRootAdaptive.d.ts +10 -0
- package/.cache/ts/src/components/ModalRoot/ModalRootContext.d.ts +20 -0
- package/.cache/ts/src/components/ModalRoot/ModalRootDesktop.d.ts +16 -0
- package/.cache/ts/src/components/ModalRoot/constants.d.ts +3 -0
- package/.cache/ts/src/components/ModalRoot/types.d.ts +45 -0
- package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
- package/.cache/ts/src/components/ModalRoot/withModalRootContext.d.ts +5 -0
- package/.cache/ts/src/components/NativeSelect/NativeSelect.d.ts +15 -0
- package/.cache/ts/src/components/NavTransitionContext/NavTransitionContext.d.ts +7 -0
- package/.cache/ts/src/components/Pagination/Pagination.d.ts +42 -0
- package/.cache/ts/src/components/Panel/Panel.d.ts +9 -0
- package/.cache/ts/src/components/PanelHeader/PanelHeader.d.ts +21 -0
- package/.cache/ts/src/components/PanelHeaderBack/PanelHeaderBack.d.ts +9 -0
- package/.cache/ts/src/components/PanelHeaderButton/PanelHeaderButton.d.ts +8 -0
- package/.cache/ts/src/components/PanelHeaderClose/PanelHeaderClose.d.ts +4 -0
- package/.cache/ts/src/components/PanelHeaderContent/PanelHeaderContent.d.ts +9 -0
- package/.cache/ts/src/components/PanelHeaderContext/PanelHeaderContext.d.ts +7 -0
- package/.cache/ts/src/components/PanelHeaderEdit/PanelHeaderEdit.d.ts +18 -0
- package/.cache/ts/src/components/PanelHeaderSubmit/PanelHeaderSubmit.d.ts +4 -0
- package/.cache/ts/src/components/PanelSpinner/PanelSpinner.d.ts +7 -0
- package/.cache/ts/src/components/Placeholder/Placeholder.d.ts +23 -0
- package/.cache/ts/src/components/PopoutRoot/PopoutRoot.d.ts +10 -0
- package/.cache/ts/src/components/PopoutWrapper/PopoutWrapper.d.ts +10 -0
- package/.cache/ts/src/components/Popper/Popper.d.ts +32 -0
- package/.cache/ts/src/components/Progress/Progress.d.ts +8 -0
- package/.cache/ts/src/components/PromoBanner/PromoBanner.d.ts +40 -0
- package/.cache/ts/src/components/PullToRefresh/PullToRefresh.d.ts +37 -0
- package/.cache/ts/src/components/PullToRefresh/PullToRefreshSpinner.d.ts +11 -0
- package/.cache/ts/src/components/Radio/Radio.d.ts +9 -0
- package/.cache/ts/src/components/RadioGroup/RadioGroup.d.ts +6 -0
- package/.cache/ts/src/components/RangeSlider/RangeSlider.d.ts +6 -0
- package/.cache/ts/src/components/RangeSlider/UniversalSlider.d.ts +16 -0
- package/.cache/ts/src/components/Removable/Removable.d.ts +21 -0
- package/.cache/ts/src/components/RichCell/RichCell.d.ts +37 -0
- package/.cache/ts/src/components/RichTooltip/RichTooltip.d.ts +5 -0
- package/.cache/ts/src/components/Root/Root.d.ts +31 -0
- package/.cache/ts/src/components/ScreenSpinner/ScreenSpinner.d.ts +6 -0
- package/.cache/ts/src/components/Search/Search.d.ts +17 -0
- package/.cache/ts/src/components/SegmentedControl/SegmentedControl.d.ts +17 -0
- package/.cache/ts/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.d.ts +4 -0
- package/.cache/ts/src/components/Select/Select.d.ts +7 -0
- package/.cache/ts/src/components/SelectMimicry/SelectMimicry.d.ts +14 -0
- package/.cache/ts/src/components/Separator/Separator.d.ts +11 -0
- package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +39 -0
- package/.cache/ts/src/components/SimpleCheckbox/SimpleCheckbox.d.ts +8 -0
- package/.cache/ts/src/components/Slider/Slider.d.ts +5 -0
- package/.cache/ts/src/components/SliderSwitch/SliderSwitch.d.ts +47 -0
- package/.cache/ts/src/components/SliderSwitch/SliderSwitchButton.d.ts +11 -0
- package/.cache/ts/src/components/Snackbar/Snackbar.d.ts +35 -0
- package/.cache/ts/src/components/Spacing/Spacing.d.ts +18 -0
- package/.cache/ts/src/components/Spinner/Spinner.d.ts +7 -0
- package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +22 -0
- package/.cache/ts/src/components/SplitLayout/SplitLayout.d.ts +15 -0
- package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +7 -0
- package/.cache/ts/src/components/SubnavigationButton/SubnavigationButton.d.ts +21 -0
- package/.cache/ts/src/components/Switch/Switch.d.ts +7 -0
- package/.cache/ts/src/components/Tabbar/Tabbar.d.ts +11 -0
- package/.cache/ts/src/components/TabbarItem/TabbarItem.d.ts +21 -0
- package/.cache/ts/src/components/Tabs/Tabs.d.ts +10 -0
- package/.cache/ts/src/components/TabsItem/TabsItem.d.ts +8 -0
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +42 -0
- package/.cache/ts/src/components/TextTooltip/TextTooltip.d.ts +14 -0
- package/.cache/ts/src/components/Textarea/Textarea.d.ts +11 -0
- package/.cache/ts/src/components/Tooltip/Tooltip.d.ts +55 -0
- package/.cache/ts/src/components/Tooltip/TooltipContainer.d.ts +5 -0
- package/.cache/ts/src/components/Touch/Touch.d.ts +49 -0
- package/.cache/ts/src/components/Touch/TouchContext.d.ts +7 -0
- package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +14 -0
- package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +8 -0
- package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +13 -0
- package/.cache/ts/src/components/Typography/Text/Text.d.ts +8 -0
- package/.cache/ts/src/components/Typography/Title/Title.d.ts +14 -0
- package/.cache/ts/src/components/UsersStack/UsersStack.d.ts +23 -0
- package/.cache/ts/src/components/UsersStack/masks.d.ts +1 -0
- package/.cache/ts/src/components/View/View.d.ts +80 -0
- package/.cache/ts/src/components/View/ViewInfinite.d.ts +66 -0
- package/.cache/ts/src/components/View/utils.d.ts +2 -0
- package/.cache/ts/src/components/VisuallyHiddenInput/VisuallyHiddenInput.d.ts +12 -0
- package/.cache/ts/src/components/WriteBar/WriteBar.d.ts +23 -0
- package/.cache/ts/src/components/WriteBarIcon/WriteBarIcon.d.ts +18 -0
- package/.cache/ts/src/helpers/avatar.d.ts +5 -0
- package/.cache/ts/src/helpers/getClassName.d.ts +2 -0
- package/.cache/ts/src/helpers/getScheme.d.ts +8 -0
- package/.cache/ts/src/helpers/math.d.ts +5 -0
- package/.cache/ts/src/helpers/scheme.d.ts +34 -0
- package/.cache/ts/src/helpers/typography.d.ts +1 -0
- package/.cache/ts/src/hoc/withAdaptivity.d.ts +13 -0
- package/.cache/ts/src/hoc/withContext.d.ts +2 -0
- package/.cache/ts/src/hoc/withInsets.d.ts +3 -0
- package/.cache/ts/src/hoc/withPlatform.d.ts +3 -0
- package/.cache/ts/src/hooks/useAdaptivity.d.ts +3 -0
- package/.cache/ts/src/hooks/useAppearance.d.ts +1 -0
- package/.cache/ts/src/hooks/useBooleanState.d.ts +6 -0
- package/.cache/ts/src/hooks/useBrowserInfo.d.ts +2 -0
- package/.cache/ts/src/hooks/useCalendar.d.ts +18 -0
- package/.cache/ts/src/hooks/useDateInput.d.ts +30 -0
- package/.cache/ts/src/hooks/useEffectDev.d.ts +2 -0
- package/.cache/ts/src/hooks/useEnsuredControl.d.ts +6 -0
- package/.cache/ts/src/hooks/useEventListener.d.ts +7 -0
- package/.cache/ts/src/hooks/useExternRef.d.ts +2 -0
- package/.cache/ts/src/hooks/useFocusVisible.d.ts +6 -0
- package/.cache/ts/src/hooks/useGlobalEventListener.d.ts +2 -0
- package/.cache/ts/src/hooks/useInsets.d.ts +8 -0
- package/.cache/ts/src/hooks/useKeyboard.d.ts +11 -0
- package/.cache/ts/src/hooks/useKeyboardInputTracker.d.ts +3 -0
- package/.cache/ts/src/hooks/useObjectMemo.d.ts +2 -0
- package/.cache/ts/src/hooks/useOrientationChange.d.ts +7 -0
- package/.cache/ts/src/hooks/usePagination.d.ts +34 -0
- package/.cache/ts/src/hooks/usePatchChildrenRef.d.ts +6 -0
- package/.cache/ts/src/hooks/usePlatform.d.ts +2 -0
- package/.cache/ts/src/hooks/useTimeout.d.ts +4 -0
- package/.cache/ts/src/hooks/useWaitTransitionFinish.d.ts +3 -0
- package/.cache/ts/src/index.d.ts +289 -0
- package/.cache/ts/src/lib/SSR.d.ts +14 -0
- package/.cache/ts/src/lib/accessibility.d.ts +10 -0
- package/.cache/ts/src/lib/animate.d.ts +15 -0
- package/.cache/ts/src/lib/browser.d.ts +11 -0
- package/.cache/ts/src/lib/calendar.d.ts +14 -0
- package/.cache/ts/src/lib/callMultiple.d.ts +1 -0
- package/.cache/ts/src/lib/classNames.d.ts +6 -0
- package/.cache/ts/src/lib/classScopingMode.d.ts +8 -0
- package/.cache/ts/src/lib/dom.d.ts +21 -0
- package/.cache/ts/src/lib/fx.d.ts +5 -0
- package/.cache/ts/src/lib/getNavId.d.ts +6 -0
- package/.cache/ts/src/lib/is.d.ts +1 -0
- package/.cache/ts/src/lib/isRefObject.d.ts +2 -0
- package/.cache/ts/src/lib/jsxRuntime.d.ts +8 -0
- package/.cache/ts/src/lib/offset.d.ts +7 -0
- package/.cache/ts/src/lib/platform.d.ts +19 -0
- package/.cache/ts/src/lib/polyfills.d.ts +6 -0
- package/.cache/ts/src/lib/prefixClass.d.ts +1 -0
- package/.cache/ts/src/lib/removeObjectKeys.d.ts +1 -0
- package/.cache/ts/src/lib/select.d.ts +7 -0
- package/.cache/ts/src/lib/styles.d.ts +1 -0
- package/.cache/ts/src/lib/supportEvents.d.ts +9 -0
- package/.cache/ts/src/lib/taptic.d.ts +2 -0
- package/.cache/ts/src/lib/testing.d.ts +1 -0
- package/.cache/ts/src/lib/touch.d.ts +9 -0
- package/.cache/ts/src/lib/useIsomorphicLayoutEffect.d.ts +2 -0
- package/.cache/ts/src/lib/utils.d.ts +16 -0
- package/.cache/ts/src/lib/warnOnce.d.ts +1 -0
- package/.cache/ts/src/testing/setup.d.ts +1 -0
- package/.cache/ts/src/testing/utils.d.ts +30 -0
- package/.cache/ts/src/tokenized/index.d.ts +24 -0
- package/.cache/ts/src/types.d.ts +34 -0
- package/.cache/ts/src/unstable/index.d.ts +17 -0
- package/.codesandbox/ci.json +5 -0
- package/.editorconfig +14 -0
- package/.eslintignore +6 -0
- package/.eslintrc.json +145 -0
- package/.gitattributes +1 -0
- package/.gitmodules +0 -0
- package/.prettierignore +14 -0
- package/.prettierrc.json +1 -0
- package/.stylelintignore +2 -0
- package/CONTRIBUTING.md +3 -2
- package/CSS_GUIDE.md +145 -0
- package/TESTING.md +58 -0
- package/babel.cjs.config.js +15 -0
- package/babel.config.js +72 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +4 -7
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js +3 -5
- package/dist/cjs/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cjs/components/Alert/Alert.js +5 -8
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/Button/Button.js +4 -8
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/CalendarDays/CalendarDays.js +2 -2
- package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cjs/components/Checkbox/Checkbox.js +2 -5
- package/dist/cjs/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.js +2 -4
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -4
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/ContentCard/ContentCard.js +5 -7
- package/dist/cjs/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cjs/components/Counter/Counter.js +3 -3
- package/dist/cjs/components/Counter/Counter.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +17 -9
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js +2 -4
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/Footer/Footer.js +2 -4
- package/dist/cjs/components/Footer/Footer.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.js +2 -4
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormStatus/FormStatus.js +3 -8
- package/dist/cjs/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cjs/components/Group/Group.js +3 -5
- package/dist/cjs/components/Group/Group.js.map +1 -1
- package/dist/cjs/components/Header/Header.js +9 -18
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js +4 -7
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cjs/components/ModalPage/ModalPage.js +5 -5
- package/dist/cjs/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js +2 -4
- package/dist/cjs/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cjs/components/PromoBanner/PromoBanner.js +3 -7
- package/dist/cjs/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cjs/components/Radio/Radio.js +2 -5
- package/dist/cjs/components/Radio/Radio.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js +3 -4
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/cjs/components/Typography/Caption/Caption.js +12 -14
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +3 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.d.ts +3 -1
- package/dist/cjs/components/Typography/Title/Title.js +3 -1
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/UsersStack/UsersStack.js +3 -4
- package/dist/cjs/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cjs/helpers/typography.d.ts +1 -0
- package/dist/cjs/helpers/typography.js +25 -0
- package/dist/cjs/helpers/typography.js.map +1 -0
- package/dist/cjs/hooks/useOrientationChange.d.ts +7 -0
- package/dist/cjs/hooks/useOrientationChange.js +56 -0
- package/dist/cjs/hooks/useOrientationChange.js.map +1 -0
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/tokenized/index.d.ts +2 -0
- package/dist/cjs/tokenized/index.js +8 -0
- package/dist/cjs/tokenized/index.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js +2 -5
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheetItem/ActionSheetItem.js +2 -4
- package/dist/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/components/Alert/Alert.js +3 -6
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/Button/Button.js +3 -7
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/components/Checkbox/Checkbox.js +1 -4
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/Chip/Chip.js +1 -3
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +1 -3
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.js +3 -5
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/Counter/Counter.js +2 -2
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +16 -8
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.js +1 -3
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/Footer/Footer.js +1 -3
- package/dist/components/Footer/Footer.js.map +1 -1
- package/dist/components/FormItem/FormItem.js +1 -3
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormStatus/FormStatus.js +2 -7
- package/dist/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/components/Group/Group.js +2 -4
- package/dist/components/Group/Group.js.map +1 -1
- package/dist/components/Header/Header.js +6 -15
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js +2 -5
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/ModalPage/ModalPage.js +4 -5
- package/dist/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
- package/dist/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/components/PromoBanner/PromoBanner.js +1 -5
- package/dist/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/components/Radio/Radio.js +1 -4
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js +2 -3
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/components/Typography/Caption/Caption.js +10 -14
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.d.ts +3 -1
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts +3 -1
- package/dist/components/Typography/Title/Title.js +2 -1
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/UsersStack/UsersStack.js +2 -3
- package/dist/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/components.css +2 -2
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +2 -5
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js +2 -4
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +3 -6
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/Button/Button.js +3 -7
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/CalendarDay/CalendarDay.css +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js +1 -1
- package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
- package/dist/cssm/components/Checkbox/Checkbox.js +1 -4
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/Chip/Chip.js +1 -3
- package/dist/cssm/components/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +1 -3
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js +3 -5
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js +2 -2
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +16 -8
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js +1 -3
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/Footer/Footer.js +1 -3
- package/dist/cssm/components/Footer/Footer.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.js +1 -3
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormStatus/FormStatus.js +2 -7
- package/dist/cssm/components/FormStatus/FormStatus.js.map +1 -1
- package/dist/cssm/components/Group/Group.js +2 -4
- package/dist/cssm/components/Group/Group.js.map +1 -1
- package/dist/cssm/components/Header/Header.js +6 -15
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js +2 -5
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/ModalPage/ModalPage.js +4 -5
- package/dist/cssm/components/ModalPage/ModalPage.js.map +1 -1
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js +1 -3
- package/dist/cssm/components/PanelHeaderContent/PanelHeaderContent.js.map +1 -1
- package/dist/cssm/components/PromoBanner/PromoBanner.js +1 -5
- package/dist/cssm/components/PromoBanner/PromoBanner.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js +1 -4
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js +2 -3
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.css +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.d.ts +8 -4
- package/dist/cssm/components/Typography/Caption/Caption.js +10 -14
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.d.ts +3 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.d.ts +3 -1
- package/dist/cssm/components/Typography/Title/Title.js +2 -1
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/UsersStack/UsersStack.js +2 -3
- package/dist/cssm/components/UsersStack/UsersStack.js.map +1 -1
- package/dist/cssm/helpers/typography.d.ts +1 -0
- package/dist/cssm/helpers/typography.js +18 -0
- package/dist/cssm/helpers/typography.js.map +1 -0
- package/dist/cssm/hooks/useOrientationChange.d.ts +7 -0
- package/dist/cssm/hooks/useOrientationChange.js +42 -0
- package/dist/cssm/hooks/useOrientationChange.js.map +1 -0
- package/dist/cssm/index.d.ts +1 -1
- package/dist/cssm/index.js +1 -1
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/styles/components.css +2 -2
- package/dist/cssm/tokenized/index.d.ts +2 -0
- package/dist/cssm/tokenized/index.js +1 -0
- package/dist/cssm/tokenized/index.js.map +1 -1
- package/dist/helpers/typography.d.ts +1 -0
- package/dist/helpers/typography.js +18 -0
- package/dist/helpers/typography.js.map +1 -0
- package/dist/hooks/useOrientationChange.d.ts +7 -0
- package/dist/hooks/useOrientationChange.js +42 -0
- package/dist/hooks/useOrientationChange.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tokenized/index.d.ts +2 -0
- package/dist/tokenized/index.js +1 -0
- package/dist/tokenized/index.js.map +1 -1
- package/dist/vkui.css +2 -2
- package/dist/vkui.css.map +1 -1
- package/jest.unit.config.js +14 -0
- package/package.json +6 -9
- package/src/appearance/constants.ts +1 -0
- package/src/components/ActionSheet/ActionSheet.css +145 -0
- package/src/components/ActionSheet/ActionSheet.tsx +158 -0
- package/src/components/ActionSheet/ActionSheetContext.ts +18 -0
- package/src/components/ActionSheet/ActionSheetDropdown.tsx +33 -0
- package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +97 -0
- package/src/components/ActionSheet/Readme.md +256 -0
- package/src/components/ActionSheet/types.ts +16 -0
- package/src/components/ActionSheetItem/ActionSheetItem.css +306 -0
- package/src/components/ActionSheetItem/ActionSheetItem.tsx +182 -0
- package/src/components/ActionSheetItem/Readme.md +2 -0
- package/src/components/AdaptivityProvider/AdaptivityContext.tsx +62 -0
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +138 -0
- package/src/components/AdaptivityProvider/Readme.md +3 -0
- package/src/components/Alert/Alert.css +297 -0
- package/src/components/Alert/Alert.tsx +288 -0
- package/src/components/Alert/Readme.md +133 -0
- package/src/components/AppRoot/AppRoot.css +20 -0
- package/src/components/AppRoot/AppRoot.tsx +205 -0
- package/src/components/AppRoot/AppRootContext.ts +13 -0
- package/src/components/AppRoot/AppRootPortal.tsx +24 -0
- package/src/components/AppRoot/Readme.md +9 -0
- package/src/components/AppRoot/ScrollContext.ts +44 -0
- package/src/components/AppearanceProvider/AppearanceProvider.tsx +61 -0
- package/src/components/AppearanceProvider/AppearanceProviderContext.tsx +7 -0
- package/src/components/Avatar/Avatar.css +192 -0
- package/src/components/Avatar/Avatar.tsx +183 -0
- package/src/components/Avatar/Readme.md +838 -0
- package/src/components/Badge/Badge.css +21 -0
- package/src/components/Badge/Badge.tsx +27 -0
- package/src/components/Badge/Readme.md +55 -0
- package/src/components/Banner/Banner.css +154 -0
- package/src/components/Banner/Banner.tsx +220 -0
- package/src/components/Banner/Readme.md +215 -0
- package/src/components/Button/Button.css +594 -0
- package/src/components/Button/Button.tsx +225 -0
- package/src/components/Button/Readme.md +186 -0
- package/src/components/ButtonGroup/ButtonGroup.css +52 -0
- package/src/components/ButtonGroup/ButtonGroup.tsx +48 -0
- package/src/components/ButtonGroup/Readme.md +311 -0
- package/src/components/Calendar/Calendar.css +31 -0
- package/src/components/Calendar/Calendar.tsx +184 -0
- package/src/components/Calendar/Readme.md +124 -0
- package/src/components/CalendarDay/CalendarDay.css +85 -0
- package/src/components/CalendarDay/CalendarDay.tsx +114 -0
- package/src/components/CalendarDays/CalendarDays.css +31 -0
- package/src/components/CalendarDays/CalendarDays.tsx +131 -0
- package/src/components/CalendarHeader/CalendarHeader.css +50 -0
- package/src/components/CalendarHeader/CalendarHeader.tsx +167 -0
- package/src/components/CalendarRange/CalendarRange.css +27 -0
- package/src/components/CalendarRange/CalendarRange.tsx +278 -0
- package/src/components/CalendarRange/Readme.md +85 -0
- package/src/components/CalendarTime/CalendarTime.css +18 -0
- package/src/components/CalendarTime/CalendarTime.tsx +88 -0
- package/src/components/Card/Card.css +83 -0
- package/src/components/Card/Card.tsx +31 -0
- package/src/components/Card/Readme.md +39 -0
- package/src/components/CardGrid/CardGrid.css +82 -0
- package/src/components/CardGrid/CardGrid.tsx +41 -0
- package/src/components/CardGrid/Readme.md +41 -0
- package/src/components/CardScroll/CardScroll.css +47 -0
- package/src/components/CardScroll/CardScroll.tsx +116 -0
- package/src/components/CardScroll/Readme.md +62 -0
- package/src/components/Cell/Cell.css +56 -0
- package/src/components/Cell/Cell.tsx +204 -0
- package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
- package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +41 -0
- package/src/components/Cell/CellDragger/CellDragger.css +4 -0
- package/src/components/Cell/CellDragger/CellDragger.tsx +37 -0
- package/src/components/Cell/Readme.md +163 -0
- package/src/components/Cell/useDraggable.tsx +126 -0
- package/src/components/CellButton/CellButton.css +46 -0
- package/src/components/CellButton/CellButton.tsx +35 -0
- package/src/components/CellButton/Readme.md +53 -0
- package/src/components/Checkbox/Checkbox.css +127 -0
- package/src/components/Checkbox/Checkbox.tsx +102 -0
- package/src/components/Checkbox/Readme.md +20 -0
- package/src/components/Chip/Chip.css +56 -0
- package/src/components/Chip/Chip.tsx +69 -0
- package/src/components/Chip/Readme.md +81 -0
- package/src/components/ChipsInput/ChipsInput.css +72 -0
- package/src/components/ChipsInput/ChipsInput.tsx +238 -0
- package/src/components/ChipsInput/Readme.md +94 -0
- package/src/components/ChipsInput/useChipsInput.ts +90 -0
- package/src/components/ChipsSelect/ChipsSelect.css +23 -0
- package/src/components/ChipsSelect/ChipsSelect.tsx +452 -0
- package/src/components/ChipsSelect/Readme.md +115 -0
- package/src/components/ChipsSelect/useChipsSelect.ts +72 -0
- package/src/components/ClickPopper/ClickPopper.tsx +86 -0
- package/src/components/ConfigProvider/ConfigProvider.tsx +144 -0
- package/src/components/ConfigProvider/ConfigProviderContext.tsx +48 -0
- package/src/components/ConfigProvider/Readme.md +1 -0
- package/src/components/ContentCard/ContentCard.css +39 -0
- package/src/components/ContentCard/ContentCard.tsx +152 -0
- package/src/components/ContentCard/Readme.md +65 -0
- package/src/components/Counter/Counter.css +161 -0
- package/src/components/Counter/Counter.tsx +76 -0
- package/src/components/Counter/Readme.md +114 -0
- package/src/components/CustomScrollView/CustomScrollView.css +62 -0
- package/src/components/CustomScrollView/CustomScrollView.tsx +168 -0
- package/src/components/CustomSelect/CustomSelect.css +24 -0
- package/src/components/CustomSelect/CustomSelect.tsx +778 -0
- package/src/components/CustomSelect/Readme.md +248 -0
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.css +38 -0
- package/src/components/CustomSelectDropdown/CustomSelectDropdown.tsx +75 -0
- package/src/components/CustomSelectOption/CustomSelectOption.css +63 -0
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +88 -0
- package/src/components/CustomSelectOption/Readme.md +33 -0
- package/src/components/DateInput/DateInput.css +20 -0
- package/src/components/DateInput/DateInput.tsx +317 -0
- package/src/components/DateInput/Readme.md +116 -0
- package/src/components/DatePicker/DatePicker.css +30 -0
- package/src/components/DatePicker/DatePicker.tsx +238 -0
- package/src/components/DatePicker/Readme.md +40 -0
- package/src/components/DateRangeInput/DateRangeInput.css +16 -0
- package/src/components/DateRangeInput/DateRangeInput.tsx +350 -0
- package/src/components/DateRangeInput/Readme.md +96 -0
- package/src/components/Div/Div.css +7 -0
- package/src/components/Div/Div.tsx +26 -0
- package/src/components/Div/Readme.md +17 -0
- package/src/components/Dropdown/Dropdown.css +19 -0
- package/src/components/Dropdown/Dropdown.tsx +42 -0
- package/src/components/Dropdown/Readme.md +49 -0
- package/src/components/DropdownIcon/DropdownIcon.css +3 -0
- package/src/components/DropdownIcon/DropdownIcon.tsx +18 -0
- package/src/components/Epic/Epic.css +4 -0
- package/src/components/Epic/Epic.tsx +61 -0
- package/src/components/Epic/Readme.md +240 -0
- package/src/components/Epic/ScrollSaver.tsx +23 -0
- package/src/components/File/File.css +6 -0
- package/src/components/File/File.tsx +74 -0
- package/src/components/File/Readme.md +20 -0
- package/src/components/FixedLayout/FixedLayout.css +27 -0
- package/src/components/FixedLayout/FixedLayout.tsx +71 -0
- package/src/components/FixedLayout/Readme.md +117 -0
- package/src/components/FocusTrap/FocusTrap.tsx +144 -0
- package/src/components/FocusVisible/FocusVisible.css +72 -0
- package/src/components/FocusVisible/FocusVisible.tsx +18 -0
- package/src/components/Footer/Footer.css +8 -0
- package/src/components/Footer/Footer.tsx +17 -0
- package/src/components/Footer/Readme.md +23 -0
- package/src/components/FormField/FormField.css +152 -0
- package/src/components/FormField/FormField.tsx +76 -0
- package/src/components/FormField/Readme.md +42 -0
- package/src/components/FormItem/FormItem.css +83 -0
- package/src/components/FormItem/FormItem.tsx +85 -0
- package/src/components/FormItem/Readme.md +183 -0
- package/src/components/FormLayout/FormLayout.css +16 -0
- package/src/components/FormLayout/FormLayout.tsx +39 -0
- package/src/components/FormLayout/Readme.md +2 -0
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +22 -0
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +71 -0
- package/src/components/FormLayoutGroup/Readme.md +63 -0
- package/src/components/FormStatus/FormStatus.css +34 -0
- package/src/components/FormStatus/FormStatus.tsx +45 -0
- package/src/components/FormStatus/Readme.md +23 -0
- package/src/components/Gallery/Gallery.css +71 -0
- package/src/components/Gallery/Gallery.tsx +562 -0
- package/src/components/Gallery/Readme.md +99 -0
- package/src/components/Gradient/Gradient.css +83 -0
- package/src/components/Gradient/Gradient.tsx +29 -0
- package/src/components/Gradient/Readme.md +55 -0
- package/src/components/GridAvatar/GridAvatar.css +37 -0
- package/src/components/GridAvatar/GridAvatar.tsx +53 -0
- package/src/components/GridAvatar/Readme.md +24 -0
- package/src/components/Group/Group.css +86 -0
- package/src/components/Group/Group.tsx +94 -0
- package/src/components/Group/Readme.md +156 -0
- package/src/components/Header/Header.css +152 -0
- package/src/components/Header/Header.tsx +171 -0
- package/src/components/Header/Readme.md +114 -0
- package/src/components/HorizontalCell/HorizontalCell.css +95 -0
- package/src/components/HorizontalCell/HorizontalCell.tsx +86 -0
- package/src/components/HorizontalCell/Readme.md +236 -0
- package/src/components/HorizontalScroll/HorizontalScroll.css +31 -0
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +217 -0
- package/src/components/HorizontalScroll/HorizontalScrollArrow.css +69 -0
- package/src/components/HorizontalScroll/HorizontalScrollArrow.tsx +35 -0
- package/src/components/HorizontalScroll/Readme.md +67 -0
- package/src/components/HoverPopper/HoverPopper.tsx +102 -0
- package/src/components/IconButton/IconButton.css +93 -0
- package/src/components/IconButton/IconButton.tsx +57 -0
- package/src/components/InfoRow/InfoRow.css +14 -0
- package/src/components/InfoRow/InfoRow.tsx +37 -0
- package/src/components/InfoRow/Readme.md +27 -0
- package/src/components/InitialsAvatar/InitialsAvatar.css +55 -0
- package/src/components/InitialsAvatar/InitialsAvatar.tsx +95 -0
- package/src/components/InitialsAvatar/Readme.md +20 -0
- package/src/components/Input/Input.css +52 -0
- package/src/components/Input/Input.tsx +54 -0
- package/src/components/Input/Readme.md +46 -0
- package/src/components/InputLike/InputLike.css +25 -0
- package/src/components/InputLike/InputLike.tsx +72 -0
- package/src/components/InputLike/InputLikeDivider.css +4 -0
- package/src/components/InputLike/InputLikeDivider.tsx +12 -0
- package/src/components/Link/Link.css +18 -0
- package/src/components/Link/Link.tsx +27 -0
- package/src/components/Link/Readme.md +8 -0
- package/src/components/List/List.css +2 -0
- package/src/components/List/List.tsx +31 -0
- package/src/components/List/ListContext.ts +6 -0
- package/src/components/List/Readme.md +22 -0
- package/src/components/LocaleProviderContext/LocaleProviderContext.tsx +5 -0
- package/src/components/MiniInfoCell/MiniInfoCell.css +67 -0
- package/src/components/MiniInfoCell/MiniInfoCell.tsx +94 -0
- package/src/components/MiniInfoCell/Readme.md +150 -0
- package/src/components/ModalCard/ModalCard.css +77 -0
- package/src/components/ModalCard/ModalCard.tsx +93 -0
- package/src/components/ModalCard/Readme.md +9 -0
- package/src/components/ModalCardBase/ModalCardBase.css +94 -0
- package/src/components/ModalCardBase/ModalCardBase.tsx +141 -0
- package/src/components/ModalCardBase/Readme.md +38 -0
- package/src/components/ModalDismissButton/ModalDismissButton.css +37 -0
- package/src/components/ModalDismissButton/ModalDismissButton.tsx +32 -0
- package/src/components/ModalDismissButton/Readme.md +53 -0
- package/src/components/ModalPage/ModalPage.css +146 -0
- package/src/components/ModalPage/ModalPage.tsx +131 -0
- package/src/components/ModalPage/Readme.md +9 -0
- package/src/components/ModalPageHeader/ModalPageHeader.css +24 -0
- package/src/components/ModalPageHeader/ModalPageHeader.tsx +57 -0
- package/src/components/ModalPageHeader/Readme.md +46 -0
- package/src/components/ModalRoot/ModalRoot.css +67 -0
- package/src/components/ModalRoot/ModalRoot.tsx +816 -0
- package/src/components/ModalRoot/ModalRootAdaptive.tsx +42 -0
- package/src/components/ModalRoot/ModalRootContext.tsx +51 -0
- package/src/components/ModalRoot/ModalRootDesktop.tsx +261 -0
- package/src/components/ModalRoot/Readme.md +662 -0
- package/src/components/ModalRoot/constants.ts +4 -0
- package/src/components/ModalRoot/types.ts +53 -0
- package/src/components/ModalRoot/useModalManager.tsx +203 -0
- package/src/components/ModalRoot/withModalRootContext.tsx +19 -0
- package/src/components/NativeSelect/NativeSelect.tsx +113 -0
- package/src/components/NativeSelect/Readme.md +17 -0
- package/src/components/NavTransitionContext/NavTransitionContext.tsx +24 -0
- package/src/components/Pagination/Pagination.css +62 -0
- package/src/components/Pagination/Pagination.tsx +196 -0
- package/src/components/Pagination/Readme.md +110 -0
- package/src/components/Panel/Panel.css +116 -0
- package/src/components/Panel/Panel.tsx +58 -0
- package/src/components/Panel/Readme.md +97 -0
- package/src/components/PanelHeader/PanelHeader.css +271 -0
- package/src/components/PanelHeader/PanelHeader.tsx +142 -0
- package/src/components/PanelHeader/Readme.md +244 -0
- package/src/components/PanelHeaderBack/PanelHeaderBack.css +7 -0
- package/src/components/PanelHeaderBack/PanelHeaderBack.tsx +60 -0
- package/src/components/PanelHeaderBack/Readme.md +9 -0
- package/src/components/PanelHeaderButton/PanelHeaderButton.css +102 -0
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +109 -0
- package/src/components/PanelHeaderButton/Readme.md +47 -0
- package/src/components/PanelHeaderClose/PanelHeaderClose.tsx +35 -0
- package/src/components/PanelHeaderClose/Readme.md +9 -0
- package/src/components/PanelHeaderContent/PanelHeaderContent.css +107 -0
- package/src/components/PanelHeaderContent/PanelHeaderContent.tsx +105 -0
- package/src/components/PanelHeaderContent/Readme.md +33 -0
- package/src/components/PanelHeaderContext/PanelHeaderContext.css +143 -0
- package/src/components/PanelHeaderContext/PanelHeaderContext.tsx +85 -0
- package/src/components/PanelHeaderContext/Readme.md +110 -0
- package/src/components/PanelHeaderEdit/PanelHeaderEdit.tsx +49 -0
- package/src/components/PanelHeaderEdit/Readme.md +1 -0
- package/src/components/PanelHeaderSubmit/PanelHeaderSubmit.tsx +37 -0
- package/src/components/PanelHeaderSubmit/Readme.md +13 -0
- package/src/components/PanelSpinner/PanelSpinner.tsx +21 -0
- package/src/components/PanelSpinner/Readme.md +15 -0
- package/src/components/Placeholder/Placeholder.css +50 -0
- package/src/components/Placeholder/Placeholder.tsx +70 -0
- package/src/components/Placeholder/Readme.md +104 -0
- package/src/components/PopoutRoot/PopoutRoot.css +36 -0
- package/src/components/PopoutRoot/PopoutRoot.tsx +72 -0
- package/src/components/PopoutRoot/Readme.md +50 -0
- package/src/components/PopoutWrapper/PopoutWrapper.css +109 -0
- package/src/components/PopoutWrapper/PopoutWrapper.tsx +77 -0
- package/src/components/PopoutWrapper/Readme.md +12 -0
- package/src/components/Popper/Popper.css +39 -0
- package/src/components/Popper/Popper.tsx +231 -0
- package/src/components/Popper/Readme.md +33 -0
- package/src/components/Progress/Progress.css +12 -0
- package/src/components/Progress/Progress.tsx +49 -0
- package/src/components/Progress/Readme.md +14 -0
- package/src/components/PromoBanner/PromoBanner.css +55 -0
- package/src/components/PromoBanner/PromoBanner.tsx +135 -0
- package/src/components/PromoBanner/Readme.md +25 -0
- package/src/components/PullToRefresh/PullToRefresh.css +98 -0
- package/src/components/PullToRefresh/PullToRefresh.tsx +353 -0
- package/src/components/PullToRefresh/PullToRefreshSpinner.tsx +78 -0
- package/src/components/PullToRefresh/Readme.md +71 -0
- package/src/components/Radio/Radio.css +187 -0
- package/src/components/Radio/Radio.tsx +82 -0
- package/src/components/Radio/Readme.md +29 -0
- package/src/components/RadioGroup/RadioGroup.css +12 -0
- package/src/components/RadioGroup/RadioGroup.tsx +29 -0
- package/src/components/RadioGroup/Readme.md +56 -0
- package/src/components/RangeSlider/RangeSlider.tsx +54 -0
- package/src/components/RangeSlider/Readme.md +32 -0
- package/src/components/RangeSlider/UniversalSlider.tsx +162 -0
- package/src/components/Removable/Removable.css +125 -0
- package/src/components/Removable/Removable.tsx +176 -0
- package/src/components/RichCell/Readme.md +65 -0
- package/src/components/RichCell/RichCell.css +115 -0
- package/src/components/RichCell/RichCell.tsx +104 -0
- package/src/components/RichTooltip/Readme.md +59 -0
- package/src/components/RichTooltip/RichTooltip.css +10 -0
- package/src/components/RichTooltip/RichTooltip.tsx +32 -0
- package/src/components/Root/Readme.md +36 -0
- package/src/components/Root/Root.css +184 -0
- package/src/components/Root/Root.tsx +209 -0
- package/src/components/ScreenSpinner/Readme.md +43 -0
- package/src/components/ScreenSpinner/ScreenSpinner.css +31 -0
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +37 -0
- package/src/components/Search/Readme.md +235 -0
- package/src/components/Search/Search.css +359 -0
- package/src/components/Search/Search.tsx +196 -0
- package/src/components/SegmentedControl/Readme.md +94 -0
- package/src/components/SegmentedControl/SegmentedControl.css +42 -0
- package/src/components/SegmentedControl/SegmentedControl.tsx +105 -0
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.css +30 -0
- package/src/components/SegmentedControl/SegmentedControlOption/SegmentedControlOption.tsx +42 -0
- package/src/components/Select/Readme.md +27 -0
- package/src/components/Select/Select.css +64 -0
- package/src/components/Select/Select.tsx +39 -0
- package/src/components/SelectMimicry/Readme.md +87 -0
- package/src/components/SelectMimicry/SelectMimicry.css +10 -0
- package/src/components/SelectMimicry/SelectMimicry.tsx +94 -0
- package/src/components/Separator/Readme.md +23 -0
- package/src/components/Separator/Separator.css +48 -0
- package/src/components/Separator/Separator.tsx +40 -0
- package/src/components/SimpleCell/Readme.md +136 -0
- package/src/components/SimpleCell/SimpleCell.css +258 -0
- package/src/components/SimpleCell/SimpleCell.tsx +132 -0
- package/src/components/SimpleCheckbox/Readme.md +25 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.css +129 -0
- package/src/components/SimpleCheckbox/SimpleCheckbox.tsx +143 -0
- package/src/components/Slider/Readme.md +83 -0
- package/src/components/Slider/Slider.css +145 -0
- package/src/components/Slider/Slider.tsx +54 -0
- package/src/components/SliderSwitch/Readme.md +27 -0
- package/src/components/SliderSwitch/SliderSwitch.css +87 -0
- package/src/components/SliderSwitch/SliderSwitch.tsx +209 -0
- package/src/components/SliderSwitch/SliderSwitchButton.tsx +53 -0
- package/src/components/Snackbar/Readme.md +145 -0
- package/src/components/Snackbar/Snackbar.css +159 -0
- package/src/components/Snackbar/Snackbar.tsx +254 -0
- package/src/components/Spacing/Readme.md +98 -0
- package/src/components/Spacing/Spacing.css +46 -0
- package/src/components/Spacing/Spacing.tsx +53 -0
- package/src/components/Spinner/Readme.md +11 -0
- package/src/components/Spinner/Spinner.css +33 -0
- package/src/components/Spinner/Spinner.tsx +53 -0
- package/src/components/SplitCol/Readme.md +1 -0
- package/src/components/SplitCol/SplitCol.css +28 -0
- package/src/components/SplitCol/SplitCol.tsx +75 -0
- package/src/components/SplitLayout/Readme.md +154 -0
- package/src/components/SplitLayout/SplitLayout.css +52 -0
- package/src/components/SplitLayout/SplitLayout.tsx +54 -0
- package/src/components/SubnavigationBar/Readme.md +264 -0
- package/src/components/SubnavigationBar/SubnavigationBar.css +32 -0
- package/src/components/SubnavigationBar/SubnavigationBar.tsx +66 -0
- package/src/components/SubnavigationButton/Readme.md +128 -0
- package/src/components/SubnavigationButton/SubnavigationButton.css +103 -0
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +99 -0
- package/src/components/Switch/Readme.md +57 -0
- package/src/components/Switch/Switch.css +198 -0
- package/src/components/Switch/Switch.tsx +56 -0
- package/src/components/Tabbar/Readme.md +7 -0
- package/src/components/Tabbar/Tabbar.css +53 -0
- package/src/components/Tabbar/Tabbar.tsx +50 -0
- package/src/components/TabbarItem/Readme.md +102 -0
- package/src/components/TabbarItem/TabbarItem.css +127 -0
- package/src/components/TabbarItem/TabbarItem.tsx +94 -0
- package/src/components/Tabs/Readme.md +274 -0
- package/src/components/Tabs/Tabs.css +102 -0
- package/src/components/Tabs/Tabs.tsx +57 -0
- package/src/components/TabsItem/Readme.md +0 -0
- package/src/components/TabsItem/TabsItem.css +178 -0
- package/src/components/TabsItem/TabsItem.tsx +62 -0
- package/src/components/Tappable/Tappable.css +141 -0
- package/src/components/Tappable/Tappable.tsx +349 -0
- package/src/components/TextTooltip/Readme.md +11 -0
- package/src/components/TextTooltip/TextTooltip.css +18 -0
- package/src/components/TextTooltip/TextTooltip.tsx +58 -0
- package/src/components/Textarea/Readme.md +24 -0
- package/src/components/Textarea/Textarea.css +39 -0
- package/src/components/Textarea/Textarea.tsx +80 -0
- package/src/components/Tooltip/Readme.md +263 -0
- package/src/components/Tooltip/Tooltip.css +73 -0
- package/src/components/Tooltip/Tooltip.tsx +314 -0
- package/src/components/Tooltip/TooltipContainer.tsx +10 -0
- package/src/components/Touch/Readme.md +116 -0
- package/src/components/Touch/Touch.tsx +285 -0
- package/src/components/Touch/TouchContext.ts +11 -0
- package/src/components/Typography/Caption/Caption.css +97 -0
- package/src/components/Typography/Caption/Caption.tsx +53 -0
- package/src/components/Typography/Caption/Readme.md +29 -0
- package/src/components/Typography/Headline/Headline.css +25 -0
- package/src/components/Typography/Headline/Headline.tsx +36 -0
- package/src/components/Typography/Headline/Readme.md +24 -0
- package/src/components/Typography/Subhead/Readme.md +21 -0
- package/src/components/Typography/Subhead/Subhead.css +43 -0
- package/src/components/Typography/Subhead/Subhead.tsx +54 -0
- package/src/components/Typography/Text/Readme.md +22 -0
- package/src/components/Typography/Text/Text.css +25 -0
- package/src/components/Typography/Text/Text.tsx +49 -0
- package/src/components/Typography/Title/Readme.md +31 -0
- package/src/components/Typography/Title/Title.css +59 -0
- package/src/components/Typography/Title/Title.tsx +64 -0
- package/src/components/UsersStack/Readme.md +94 -0
- package/src/components/UsersStack/UsersStack.css +99 -0
- package/src/components/UsersStack/UsersStack.tsx +102 -0
- package/src/components/UsersStack/masks.tsx +46 -0
- package/src/components/View/Readme.md +98 -0
- package/src/components/View/View.css +125 -0
- package/src/components/View/View.tsx +673 -0
- package/src/components/View/ViewIOS.css +155 -0
- package/src/components/View/ViewInfinite.tsx +731 -0
- package/src/components/View/utils.ts +9 -0
- package/src/components/VisuallyHiddenInput/VisuallyHiddenInput.css +9 -0
- package/src/components/VisuallyHiddenInput/VisuallyHiddenInput.tsx +25 -0
- package/src/components/WriteBar/Readme.md +224 -0
- package/src/components/WriteBar/WriteBar.css +106 -0
- package/src/components/WriteBar/WriteBar.tsx +137 -0
- package/src/components/WriteBarIcon/Readme.md +11 -0
- package/src/components/WriteBarIcon/WriteBarIcon.css +75 -0
- package/src/components/WriteBarIcon/WriteBarIcon.tsx +104 -0
- package/src/fonts/VK_Sans_Display_Medium.woff +0 -0
- package/src/fonts/VK_Sans_Display_Medium.woff2 +0 -0
- package/src/fonts/fonts.css +7 -0
- package/src/helpers/avatar.ts +10 -0
- package/src/helpers/getClassName.ts +8 -0
- package/src/helpers/getScheme.ts +27 -0
- package/src/helpers/math.ts +40 -0
- package/src/helpers/scheme.ts +86 -0
- package/src/helpers/typography.ts +24 -0
- package/src/hoc/withAdaptivity.tsx +86 -0
- package/src/hoc/withContext.tsx +14 -0
- package/src/hoc/withInsets.tsx +12 -0
- package/src/hoc/withPlatform.tsx +17 -0
- package/src/hooks/useAdaptivity.ts +12 -0
- package/src/hooks/useAppearance.ts +4 -0
- package/src/hooks/useBooleanState.ts +19 -0
- package/src/hooks/useBrowserInfo.ts +11 -0
- package/src/hooks/useCalendar.ts +78 -0
- package/src/hooks/useDateInput.ts +213 -0
- package/src/hooks/useEffectDev.ts +5 -0
- package/src/hooks/useEnsuredControl.ts +17 -0
- package/src/hooks/useEventListener.ts +62 -0
- package/src/hooks/useExternRef.ts +26 -0
- package/src/hooks/useFocusVisible.ts +31 -0
- package/src/hooks/useGlobalEventListener.ts +35 -0
- package/src/hooks/useInsets.ts +69 -0
- package/src/hooks/useKeyboard.ts +75 -0
- package/src/hooks/useKeyboardInputTracker.ts +64 -0
- package/src/hooks/useObjectMemo.ts +16 -0
- package/src/hooks/useOrientationChange.ts +39 -0
- package/src/hooks/usePagination.ts +96 -0
- package/src/hooks/usePatchChildrenRef.ts +39 -0
- package/src/hooks/usePlatform.ts +10 -0
- package/src/hooks/useTimeout.ts +33 -0
- package/src/hooks/useWaitTransitionFinish.ts +28 -0
- package/src/index.ts +334 -0
- package/src/lib/SSR.tsx +45 -0
- package/src/lib/accessibility.ts +87 -0
- package/src/lib/animate.ts +47 -0
- package/src/lib/browser.ts +44 -0
- package/src/lib/calendar.ts +123 -0
- package/src/lib/callMultiple.ts +4 -0
- package/src/lib/classNames.ts +44 -0
- package/src/lib/classScopingMode.ts +21 -0
- package/src/lib/dom.tsx +45 -0
- package/src/lib/fx.ts +7 -0
- package/src/lib/getNavId.ts +13 -0
- package/src/lib/is.ts +10 -0
- package/src/lib/isRefObject.ts +11 -0
- package/src/lib/jsxRuntime.d.ts +6 -0
- package/src/lib/jsxRuntime.ts +43 -0
- package/src/lib/offset.ts +17 -0
- package/src/lib/platform.ts +36 -0
- package/src/lib/polyfills.ts +96 -0
- package/src/lib/prefixClass.ts +34 -0
- package/src/lib/removeObjectKeys.ts +10 -0
- package/src/lib/select.ts +54 -0
- package/src/lib/styles.ts +12 -0
- package/src/lib/supportEvents.ts +38 -0
- package/src/lib/taptic.ts +9 -0
- package/src/lib/testing.ts +4 -0
- package/src/lib/touch.ts +59 -0
- package/src/lib/useIsomorphicLayoutEffect.ts +7 -0
- package/src/lib/utils.ts +99 -0
- package/src/lib/warnOnce.ts +9 -0
- package/src/styles/animations.css +19 -0
- package/src/styles/bright_light.css +244 -0
- package/src/styles/common.css +39 -0
- package/src/styles/components.css +152 -0
- package/src/styles/constants.css +72 -0
- package/src/styles/space_gray.css +243 -0
- package/src/styles/themes.css +10 -0
- package/src/styles/unstable.css +6 -0
- package/src/styles/vkcom_dark.css +249 -0
- package/src/styles/vkcom_light.css +254 -0
- package/src/testing/setup.ts +1 -0
- package/src/testing/utils.tsx +192 -0
- package/src/tokenized/index.ts +39 -0
- package/src/types.ts +43 -0
- package/src/unstable/index.ts +23 -0
- package/src/vkui.js +1 -0
- package/stylelint.config.js +46 -0
- package/tasks/generate_scheme.js +13 -0
- package/tasks/postcss-check-keyframes.js +36 -0
- package/tasks/postcss-scope-root.js +9 -0
- package/tasks/styleint-atomic.js +57 -0
- package/tokenized/index.d.ts +1 -0
- package/tokenized/package.json +4 -0
- package/tsconfig.dist.json +16 -0
- package/tsconfig.json +38 -0
- package/types/global.d.ts +7 -0
- package/unstable/index.d.ts +1 -0
- package/unstable/package.json +4 -0
- package/webpack.config.js +86 -0
- package/webpack.styles.config.js +67 -0
- package/dist/components.js.tmp +0 -24
- package/dist/default_scheme.js.tmp +0 -24
- package/dist/fonts.js.tmp +0 -24
- package/dist/stable.js.tmp +0 -166
- package/dist/unstable.js.tmp +0 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":["React","DropdownIcon","classNames","ChipsInput","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","withAdaptivity","noop","useDOM","Caption","prefixClass","useExternRef","useGlobalEventListener","defaultFilterFn","CustomSelectDropdown","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","emptyText","creatableText","onChangeStart","creatable","fetching","showSelected","closeAfterSelect","options","filterFn","renderOption","option","restProps","ChipsSelectComponent","props","propsWithDefault","style","onFocus","onKeyDown","className","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","sizeY","after","document","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","rootNode","current","target","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemoveWrapper","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter","ChipsSelect"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { classNames } from \"../../lib/classNames\";\nimport ChipsInput, {\n ChipsInputOption,\n ChipsInputProps,\n ChipsInputValue,\n RenderChip,\n chipsInputDefaultProps,\n} from \"../ChipsInput/ChipsInput\";\nimport CustomSelectOption, {\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { useChipsSelect } from \"./useChipsSelect\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { noop } from \"../../lib/utils\";\nimport { useDOM } from \"../../lib/dom\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { prefixClass } from \"../../lib/prefixClass\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport \"./ChipsSelect.css\";\n\nexport interface ChipsSelectProps<Option extends ChipsInputOption>\n extends ChipsInputProps<Option>,\n AdaptivityProps {\n popupDirection?: \"top\" | \"bottom\";\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<\n ChipsInputProps<Option>,\n \"getOptionLabel\"\n >[\"getOptionLabel\"]\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (\n e: React.MouseEvent | React.KeyboardEvent,\n option: Option\n ) => void;\n /**\n * Закрытие выпадающиего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n}\n\ntype focusActionType = \"next\" | \"prev\";\n\nconst FOCUS_ACTION_NEXT: focusActionType = \"next\";\nconst FOCUS_ACTION_PREV: focusActionType = \"prev\";\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: \"Ничего не найдено\",\n creatableText: \"Создать значение\",\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption({ option, ...restProps }) {\n return <CustomSelectOption {...restProps} />;\n },\n};\n\nconst ChipsSelectComponent = <Option extends ChipsInputOption>(\n props: ChipsSelectProps<Option>\n) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n sizeY,\n closeAfterSelect,\n onChangeStart,\n after,\n options,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus!(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const { current: rootNode } = rootRef;\n if (\n rootNode &&\n e.target !== rootNode &&\n !rootNode.contains(e.target as Node)\n ) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: focusActionType) => {\n let index = typeof nextIndex !== \"number\" ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n if (focusedOptionIndex != null) {\n focusOptionByIndex(index, focusedOptionIndex);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === \"ArrowUp\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === \"ArrowDown\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (\n e.key === \"Enter\" &&\n !e.defaultPrevented &&\n opened &&\n focusedOptionIndex != null\n ) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if ([\"Escape\", \"Tab\"].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n React.useEffect(() => {\n const index = focusedOption\n ? filteredOptions.findIndex(({ value }) => value === focusedOption.value)\n : -1;\n\n if (\n index === -1 &&\n !!filteredOptions.length &&\n !showCreatable &&\n closeAfterSelect\n ) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [\n filteredOptions,\n focusedOption,\n showCreatable,\n closeAfterSelect,\n setFocusedOption,\n ]);\n\n useGlobalEventListener(document, \"click\", handleClickOutside);\n\n const renderChipWrapper = (\n renderChipProps: RenderChip<Option> | undefined\n ) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (\n e: React.MouseEvent | undefined,\n value: ChipsInputValue | undefined\n ) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes(\"top\");\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement]\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n return (\n <div\n vkuiClass={classNames(\"ChipsSelect\", `ChipsSelect--sizeY-${sizeY}`)}\n ref={rootRef}\n style={style}\n className={className}\n >\n <ChipsInput\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n vkuiClass={classNames({\n [\"ChipsSelect__open\"]: opened,\n [\"ChipsSelect__open--popupDirectionTop\"]: isPopperDirectionTop,\n })}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n after={<DropdownIcon />}\n />\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n vkuiClass=\"ChipsSelect__options\"\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"ChipsSelect__empty\">\n {emptyText}\n </Caption>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption &&\n getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find(\n (selectedOption: Option) => {\n return (\n getOptionValue!(selectedOption) === getOptionValue!(option)\n );\n }\n );\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n className: prefixClass(\"ChipsSelect__option\"),\n option,\n hovered: Boolean(hovered),\n children: label,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </div>\n );\n};\n\nexport const ChipsSelect = withAdaptivity(ChipsSelectComponent, {\n sizeY: true,\n});\n"],"file":"ChipsSelect.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":["React","DropdownIcon","classNames","ChipsInput","chipsInputDefaultProps","CustomSelectOption","useChipsSelect","withAdaptivity","noop","useDOM","Caption","prefixClass","useExternRef","useGlobalEventListener","defaultFilterFn","CustomSelectDropdown","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","emptyText","creatableText","onChangeStart","creatable","fetching","showSelected","closeAfterSelect","options","filterFn","renderOption","option","restProps","ChipsSelectComponent","props","propsWithDefault","style","onFocus","onKeyDown","className","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","sizeY","after","document","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleClickOutside","rootNode","current","target","contains","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","defaultPrevented","preventDefault","includes","useEffect","findIndex","value","renderChipWrapper","renderChipProps","onRemoveWrapper","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","map","label","hovered","selected","find","selectedOption","children","onMouseDown","onMouseEnter","ChipsSelect"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { classNames } from \"../../lib/classNames\";\nimport ChipsInput, {\n ChipsInputOption,\n ChipsInputProps,\n ChipsInputValue,\n RenderChip,\n chipsInputDefaultProps,\n} from \"../ChipsInput/ChipsInput\";\nimport CustomSelectOption, {\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { useChipsSelect } from \"./useChipsSelect\";\nimport { withAdaptivity, AdaptivityProps } from \"../../hoc/withAdaptivity\";\nimport { noop } from \"../../lib/utils\";\nimport { useDOM } from \"../../lib/dom\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { prefixClass } from \"../../lib/prefixClass\";\nimport { useExternRef } from \"../../hooks/useExternRef\";\nimport { useGlobalEventListener } from \"../../hooks/useGlobalEventListener\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport \"./ChipsSelect.css\";\n\nexport interface ChipsSelectProps<Option extends ChipsInputOption>\n extends ChipsInputProps<Option>,\n AdaptivityProps {\n popupDirection?: \"top\" | \"bottom\";\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<\n ChipsInputProps<Option>,\n \"getOptionLabel\"\n >[\"getOptionLabel\"]\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (\n e: React.MouseEvent | React.KeyboardEvent,\n option: Option\n ) => void;\n /**\n * Закрытие выпадающиего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n}\n\ntype focusActionType = \"next\" | \"prev\";\n\nconst FOCUS_ACTION_NEXT: focusActionType = \"next\";\nconst FOCUS_ACTION_PREV: focusActionType = \"prev\";\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: \"Ничего не найдено\",\n creatableText: \"Создать значение\",\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption({ option, ...restProps }) {\n return <CustomSelectOption {...restProps} />;\n },\n};\n\nconst ChipsSelectComponent = <Option extends ChipsInputOption>(\n props: ChipsSelectProps<Option>\n) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n sizeY,\n closeAfterSelect,\n onChangeStart,\n after,\n options,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<\n Placement | undefined\n >(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(0);\n onFocus!(e);\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const { current: rootNode } = rootRef;\n if (\n rootNode &&\n e.target !== rootNode &&\n !rootNode.contains(e.target as Node)\n ) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: focusActionType) => {\n let index = typeof nextIndex !== \"number\" ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n if (focusedOptionIndex != null) {\n focusOptionByIndex(index, focusedOptionIndex);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === \"ArrowUp\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === \"ArrowDown\" && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (\n e.key === \"Enter\" &&\n !e.defaultPrevented &&\n opened &&\n focusedOptionIndex != null\n ) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if ([\"Escape\", \"Tab\"].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n React.useEffect(() => {\n const index = focusedOption\n ? filteredOptions.findIndex(({ value }) => value === focusedOption.value)\n : -1;\n\n if (\n index === -1 &&\n !!filteredOptions.length &&\n !showCreatable &&\n closeAfterSelect\n ) {\n setFocusedOption(filteredOptions[0]);\n }\n }, [\n filteredOptions,\n focusedOption,\n showCreatable,\n closeAfterSelect,\n setFocusedOption,\n ]);\n\n useGlobalEventListener(document, \"click\", handleClickOutside);\n\n const renderChipWrapper = (\n renderChipProps: RenderChip<Option> | undefined\n ) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (\n e: React.MouseEvent | undefined,\n value: ChipsInputValue | undefined\n ) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes(\"top\");\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement]\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n return (\n <div\n vkuiClass={classNames(\"ChipsSelect\", `ChipsSelect--sizeY-${sizeY}`)}\n ref={rootRef}\n style={style}\n className={className}\n >\n <ChipsInput\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n vkuiClass={classNames({\n [\"ChipsSelect__open\"]: opened,\n [\"ChipsSelect__open--popupDirectionTop\"]: isPopperDirectionTop,\n })}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n after={<DropdownIcon />}\n />\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n vkuiClass=\"ChipsSelect__options\"\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Caption vkuiClass=\"ChipsSelect__empty\">{emptyText}</Caption>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption &&\n getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find(\n (selectedOption: Option) => {\n return (\n getOptionValue!(selectedOption) === getOptionValue!(option)\n );\n }\n );\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n className: prefixClass(\"ChipsSelect__option\"),\n option,\n hovered: Boolean(hovered),\n children: label,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </div>\n );\n};\n\nexport const ChipsSelect = withAdaptivity(ChipsSelectComponent, {\n sizeY: true,\n});\n"],"file":"ChipsSelect.js"}
|
|
@@ -3,7 +3,7 @@ import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProper
|
|
|
3
3
|
var _excluded = ["subtitle", "header", "text", "caption", "className", "mode", "style", "getRootRef", "getRef", "maxHeight", "image", "src", "srcSet", "alt", "width", "height", "crossOrigin", "decoding", "loading", "referrerPolicy", "sizes", "useMap"];
|
|
4
4
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
5
|
import { Card } from "../Card/Card";
|
|
6
|
-
import Caption from "../Typography/Caption/Caption";
|
|
6
|
+
import { Caption } from "../Typography/Caption/Caption";
|
|
7
7
|
import Title from "../Typography/Title/Title";
|
|
8
8
|
import Text from "../Typography/Text/Text";
|
|
9
9
|
import Tappable from "../Tappable/Tappable";
|
|
@@ -82,7 +82,7 @@ var ContentCard = function ContentCard(props) {
|
|
|
82
82
|
}, hasReactNode(subtitle) && createScopedElement(Caption, {
|
|
83
83
|
caps: true,
|
|
84
84
|
vkuiClass: "ContentCard__text",
|
|
85
|
-
weight: "
|
|
85
|
+
weight: "1",
|
|
86
86
|
level: "3"
|
|
87
87
|
}, subtitle), hasReactNode(header) && createScopedElement(Title, {
|
|
88
88
|
vkuiClass: "ContentCard__text",
|
|
@@ -92,9 +92,7 @@ var ContentCard = function ContentCard(props) {
|
|
|
92
92
|
vkuiClass: "ContentCard__text",
|
|
93
93
|
weight: "regular"
|
|
94
94
|
}, text), hasReactNode(caption) && createScopedElement(Caption, {
|
|
95
|
-
vkuiClass: "ContentCard__text"
|
|
96
|
-
weight: "regular",
|
|
97
|
-
level: "1"
|
|
95
|
+
vkuiClass: "ContentCard__text"
|
|
98
96
|
}, caption))));
|
|
99
97
|
};
|
|
100
98
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","warnOnce","classNames","warn","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","process","env","NODE_ENV","disabled","onClick","href","defaultProps"],"mappings":";;;;AACA,SAASA,IAAT;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ContentCard/ContentCard.tsx"],"names":["Card","Caption","Title","Text","Tappable","getClassName","usePlatform","hasReactNode","warnOnce","classNames","warn","ContentCard","props","subtitle","header","text","caption","className","mode","style","getRootRef","getRef","maxHeight","image","src","srcSet","alt","width","height","crossOrigin","decoding","loading","referrerPolicy","sizes","useMap","restProps","platform","source","process","env","NODE_ENV","disabled","onClick","href","defaultProps"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport { Card, CardProps } from \"../Card/Card\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport Title from \"../Typography/Title/Title\";\nimport Text from \"../Typography/Text/Text\";\nimport Tappable, { TappableProps } from \"../Tappable/Tappable\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { HasRef, HasRootRef } from \"../../types\";\nimport { classNames } from \"../../lib/classNames\";\nimport \"./ContentCard.css\";\n\nexport interface ContentCardProps\n extends HasRootRef<HTMLDivElement>,\n Omit<TappableProps, \"getRootRef\" | \"crossOrigin\">,\n Omit<\n React.ImgHTMLAttributes<HTMLImageElement>,\n keyof React.HTMLAttributes<HTMLImageElement>\n >,\n HasRef<HTMLImageElement> {\n /**\n Текст над заголовком\n */\n subtitle?: React.ReactNode;\n /**\n Заголовок\n */\n header?: React.ReactNode;\n /**\n Текст\n */\n text?: React.ReactNode;\n /**\n Нижний текст\n */\n caption?: React.ReactNode;\n /**\n @deprecated будет удалено в 5.0.0. Используйте src\n */\n image?: string;\n /**\n Максимальная высота изображения\n */\n maxHeight?: number;\n mode?: CardProps[\"mode\"];\n}\n\nconst warn = warnOnce(\"ContentCard\");\nconst ContentCard: React.FC<ContentCardProps> = (props: ContentCardProps) => {\n const {\n subtitle,\n header,\n text,\n caption,\n // card props\n className,\n mode,\n style,\n getRootRef,\n // img props\n getRef,\n maxHeight,\n image,\n src,\n srcSet,\n alt,\n width,\n height,\n crossOrigin,\n decoding,\n loading,\n referrerPolicy,\n sizes,\n useMap,\n ...restProps\n } = props;\n const platform = usePlatform();\n\n const source = image || src;\n\n if (image && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство image устарело и будет удалено в 5.0.0. Используйте src\");\n }\n\n return (\n <Card\n mode={mode}\n getRootRef={getRootRef}\n vkuiClass={classNames(getClassName(\"ContentCard\", platform), {\n \"ContentCard--disabled\": restProps.disabled,\n })}\n style={style}\n className={className}\n >\n <Tappable\n {...restProps}\n disabled={restProps.disabled || (!restProps.onClick && !restProps.href)}\n hasHover={false}\n hasActive={false}\n vkuiClass=\"ContentCard__tappable\"\n >\n {(source || srcSet) && (\n <img\n ref={getRef}\n vkuiClass=\"ContentCard__img\"\n src={source}\n srcSet={srcSet}\n alt={alt}\n crossOrigin={crossOrigin}\n decoding={decoding}\n loading={loading}\n referrerPolicy={referrerPolicy}\n sizes={sizes}\n useMap={useMap}\n height={height}\n style={{ maxHeight }}\n width=\"100%\"\n />\n )}\n <div vkuiClass=\"ContentCard__body\">\n {hasReactNode(subtitle) && (\n <Caption caps vkuiClass=\"ContentCard__text\" weight=\"1\" level=\"3\">\n {subtitle}\n </Caption>\n )}\n {hasReactNode(header) && (\n <Title vkuiClass=\"ContentCard__text\" weight=\"3\" level=\"1\">\n {header}\n </Title>\n )}\n {hasReactNode(text) && (\n <Text vkuiClass=\"ContentCard__text\" weight=\"regular\">\n {text}\n </Text>\n )}\n {hasReactNode(caption) && (\n <Caption vkuiClass=\"ContentCard__text\">{caption}</Caption>\n )}\n </div>\n </Tappable>\n </Card>\n );\n};\n\nContentCard.defaultProps = {\n mode: \"shadow\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default ContentCard;\n"],"file":"ContentCard.js"}
|
|
@@ -7,7 +7,7 @@ import * as React from "react";
|
|
|
7
7
|
import { classNames } from "../../lib/classNames";
|
|
8
8
|
import { getClassName } from "../../helpers/getClassName";
|
|
9
9
|
import { usePlatform } from "../../hooks/usePlatform";
|
|
10
|
-
import Caption from "../Typography/Caption/Caption";
|
|
10
|
+
import { Caption } from "../Typography/Caption/Caption";
|
|
11
11
|
import Text from "../Typography/Text/Text";
|
|
12
12
|
import { VKCOM } from "../../lib/platform";
|
|
13
13
|
import { hasReactNode } from "../../lib/utils";
|
|
@@ -20,7 +20,7 @@ var CounterTypography = function CounterTypography(_ref) {
|
|
|
20
20
|
|
|
21
21
|
return size === "s" ? createScopedElement(Caption, _extends({
|
|
22
22
|
level: "2",
|
|
23
|
-
weight: platform === VKCOM ? "
|
|
23
|
+
weight: platform === VKCOM ? "1" : undefined
|
|
24
24
|
}, restProps)) : createScopedElement(Text, _extends({
|
|
25
25
|
weight: "medium"
|
|
26
26
|
}, restProps));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Counter/Counter.tsx"],"names":["React","classNames","getClassName","usePlatform","Caption","Text","VKCOM","hasReactNode","CounterTypography","size","platform","restProps","Counter","props","mode","children","Children","count","defaultProps","memo"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Counter/Counter.tsx"],"names":["React","classNames","getClassName","usePlatform","Caption","Text","VKCOM","hasReactNode","CounterTypography","size","platform","restProps","undefined","Counter","props","mode","children","Children","count","defaultProps","memo"],"mappings":";;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,SAASC,WAAT;AACA,SAASC,OAAT;AACA,OAAOC,IAAP;AACA,SAASC,KAAT;AACA,SAASC,YAAT;AAEA;;AAcA,IAAMC,iBAAmD,GAAG,SAAtDA,iBAAsD,OAItD;AAAA,MAHJC,IAGI,QAHJA,IAGI;AAAA,MAFJC,QAEI,QAFJA,QAEI;AAAA,MADDC,SACC;;AACJ,SAAOF,IAAI,KAAK,GAAT,GACL,oBAAC,OAAD;AACE,IAAA,KAAK,EAAC,GADR;AAEE,IAAA,MAAM,EAAEC,QAAQ,KAAKJ,KAAb,GAAqB,GAArB,GAA2BM;AAFrC,KAGMD,SAHN,EADK,GAOL,oBAAC,IAAD;AAAM,IAAA,MAAM,EAAC;AAAb,KAA0BA,SAA1B,EAPF;AASD,CAdD;;AAgBA,IAAME,OAA+B,GAAG,SAAlCA,OAAkC,CAACC,KAAD,EAAyB;AAC/D,MAAQC,IAAR,GAA+CD,KAA/C,CAAQC,IAAR;AAAA,MAAcN,IAAd,GAA+CK,KAA/C,CAAcL,IAAd;AAAA,MAAoBO,QAApB,GAA+CF,KAA/C,CAAoBE,QAApB;AAAA,MAAiCL,SAAjC,4BAA+CG,KAA/C;;AACA,MAAMJ,QAAQ,GAAGP,WAAW,EAA5B;;AAEA,MAAIH,KAAK,CAACiB,QAAN,CAAeC,KAAf,CAAqBF,QAArB,MAAmC,CAAvC,EAA0C;AACxC,WAAO,IAAP;AACD;;AAED,SACE,yCACML,SADN;AAEE,IAAA,SAAS,EAAEV,UAAU,CACnBC,YAAY,CAAC,SAAD,EAAYQ,QAAZ,CADO,qBAEPK,IAFO,wBAGLN,IAHK;AAFvB,MAQGF,YAAY,CAACS,QAAD,CAAZ,IACC,oBAAC,iBAAD;AACE,IAAA,QAAQ,EAAEN,QADZ;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,SAAS,EAAC;AAHZ,KAKGO,QALH,CATJ,CADF;AAoBD,CA5BD;;AA8BAH,OAAO,CAACM,YAAR,GAAuB;AACrBJ,EAAAA,IAAI,EAAE,WADe;AAErBN,EAAAA,IAAI,EAAE;AAFe,CAAvB,C,CAKA;;AACA,4BAAeT,KAAK,CAACoB,IAAN,CAAWP,OAAX,CAAf","sourcesContent":["import * as React from \"react\";\nimport { classNames } from \"../../lib/classNames\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { usePlatform } from \"../../hooks/usePlatform\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport Text from \"../Typography/Text/Text\";\nimport { VKCOM } from \"../../lib/platform\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport { HasComponent, HasPlatform } from \"../../types\";\nimport \"./Counter.css\";\n\nexport interface CounterProps extends React.HTMLAttributes<HTMLSpanElement> {\n /**\n * Тип счетчика. При использовании компонента в качестве значения свойства `after` у `Button` эти значения игнорируются\n */\n mode?: \"secondary\" | \"primary\" | \"prominent\";\n size?: \"s\" | \"m\";\n}\n\ntype CounterTypographyProps = Pick<CounterProps, \"size\"> &\n HasPlatform &\n HasComponent;\n\nconst CounterTypography: React.FC<CounterTypographyProps> = ({\n size,\n platform,\n ...restProps\n}) => {\n return size === \"s\" ? (\n <Caption\n level=\"2\"\n weight={platform === VKCOM ? \"1\" : undefined}\n {...restProps}\n />\n ) : (\n <Text weight=\"medium\" {...restProps} />\n );\n};\n\nconst Counter: React.FC<CounterProps> = (props: CounterProps) => {\n const { mode, size, children, ...restProps } = props;\n const platform = usePlatform();\n\n if (React.Children.count(children) === 0) {\n return null;\n }\n\n return (\n <span\n {...restProps}\n vkuiClass={classNames(\n getClassName(\"Counter\", platform),\n `Counter--${mode}`,\n `Counter--s-${size}`\n )}\n >\n {hasReactNode(children) && (\n <CounterTypography\n platform={platform}\n size={size}\n vkuiClass=\"Counter__in\"\n >\n {children}\n </CounterTypography>\n )}\n </span>\n );\n};\n\nCounter.defaultProps = {\n mode: \"secondary\",\n size: \"m\",\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default React.memo(Counter);\n"],"file":"Counter.js"}
|
|
@@ -20,7 +20,7 @@ import CustomSelectOption from "../CustomSelectOption/CustomSelectOption";
|
|
|
20
20
|
import { getClassName } from "../../helpers/getClassName";
|
|
21
21
|
import Input from "../Input/Input";
|
|
22
22
|
import { DropdownIcon } from "../DropdownIcon/DropdownIcon";
|
|
23
|
-
import Caption from "../Typography/Caption/Caption";
|
|
23
|
+
import { Caption } from "../Typography/Caption/Caption";
|
|
24
24
|
import { warnOnce } from "../../lib/warnOnce";
|
|
25
25
|
import { defaultFilterFn } from "../../lib/select";
|
|
26
26
|
import { is } from "../../lib/is";
|
|
@@ -223,10 +223,12 @@ var CustomSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
223
223
|
|
|
224
224
|
scrollTo && _this.scrollToElement(index);
|
|
225
225
|
|
|
226
|
-
_this.setState(function () {
|
|
227
|
-
return
|
|
228
|
-
focusedOptionIndex
|
|
229
|
-
|
|
226
|
+
_this.setState(function (prevState) {
|
|
227
|
+
return (// Это оптимизация, прежде всего, под `onMouseOver`
|
|
228
|
+
prevState.focusedOptionIndex !== index ? {
|
|
229
|
+
focusedOptionIndex: index
|
|
230
|
+
} : null
|
|
231
|
+
);
|
|
230
232
|
});
|
|
231
233
|
});
|
|
232
234
|
|
|
@@ -431,7 +433,15 @@ var CustomSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
431
433
|
disabled: option.disabled,
|
|
432
434
|
onClick: _this.handleOptionClick,
|
|
433
435
|
onMouseDown: _this.handleOptionDown,
|
|
434
|
-
onMouseEnter
|
|
436
|
+
// Используем `onMouseOver` вместо `onMouseEnter`.
|
|
437
|
+
// При параметре `searchable`, обновляется "ребёнок", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:
|
|
438
|
+
// 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.
|
|
439
|
+
// > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.
|
|
440
|
+
// 2. Если это тач-устройство.
|
|
441
|
+
// > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,
|
|
442
|
+
// но не на тот, на который нажали в первый раз.
|
|
443
|
+
// Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744
|
|
444
|
+
onMouseOver: _this.handleOptionHover
|
|
435
445
|
}));
|
|
436
446
|
});
|
|
437
447
|
|
|
@@ -587,8 +597,6 @@ var CustomSelect = /*#__PURE__*/function (_React$Component) {
|
|
|
587
597
|
var selected = this.getSelectedItem();
|
|
588
598
|
var label = selected ? selected.label : undefined;
|
|
589
599
|
var defaultDropdownContent = stateOptions !== undefined && stateOptions.length > 0 ? stateOptions.map(this.renderOption) : createScopedElement(Caption, {
|
|
590
|
-
level: "1",
|
|
591
|
-
weight: "regular",
|
|
592
600
|
vkuiClass: "CustomSelect__empty"
|
|
593
601
|
}, this.props.emptyText);
|
|
594
602
|
var resolvedContent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["React","SelectMimicry","debounce","setRef","multiRef","classNames","withAdaptivity","withPlatform","CustomSelectOption","getClassName","Input","DropdownIcon","Caption","warnOnce","defaultFilterFn","is","CustomSelectDropdown","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","undefined","warn","checkOptionsValueType","Set","map","item","value","size","SelectType","CustomSelect","props","createRef","keyboardInput","state","selectedOptionIndex","inputValue","filterFn","filter","setState","opened","focusedOptionIndex","isValidIndex","scrollToElement","onOpen","resetKeyboardInput","onClose","select","index","nativeSelectValue","event","Event","bubbles","selectEl","dispatchEvent","close","open","scrollTo","type","nextIndex","beforeIndex","focusOptionByIndex","e","Array","prototype","indexOf","call","currentTarget","parentNode","children","preventDefault","selectFocused","key","fullInput","optionIndex","label","toLowerCase","includes","scrollBoxRef","current","contains","target","newSelectedOptionIndex","findSelectedIndex","isControlledOutside","onChange","onInputChange","process","env","NODE_ENV","areOptionsShown","focusOption","onKeyboardInput","renderOption","hovered","selected","onClick","handleOptionClick","onMouseDown","handleOptionDown","onMouseEnter","handleOptionHover","element","getRef","placement","popperPlacement","defaultValue","initialValue","Number","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","prevProps","searchable","stateOptions","name","className","getRootRef","popupDirection","sizeY","platform","style","onBlur","onFocus","emptyText","renderDropdown","fetching","icon","dropdownOffsetDistance","fixDropdownWidth","forceDropdownPortal","restProps","getSelectedItem","defaultDropdownContent","resolvedContent","isPopperDirectionTop","containerRef","onLabelClick","CustomSelect__open","onInputKeyDown","placeholder","handleKeyDownSelect","handleKeyUp","selectRef","onNativeSelectChange","onPlacementChange","resetFocusedOption","Component","selectType","Default"],"mappings":";;;;;;;;;;;;AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AACA,OAAOC,aAAP;AACA,SAASC,QAAT,EAAmBC,MAAnB,EAA2BC,QAA3B;AACA,SAASC,UAAT;AAEA,SAASC,cAAT;AACA,SAASC,YAAT;AACA,OAAOC,kBAAP;AAGA,SAASC,YAAT;AAGA,OAAOC,KAAP;AACA,SAASC,YAAT;AACA,OAAOC,OAAP;AACA,SAASC,QAAT;AACA,SAASC,eAAT;AACA,SAASC,EAAT;AAEA,SAASC,oBAAT;AACA;;AAEA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAGlB;AAAA,MAFHC,OAEG,uEAFsC,EAEtC;AAAA,MADHC,UACG,uEADU,CAAC,CACX;;AACH,MAAIA,UAAU,IAAID,OAAO,CAACE,MAAR,GAAiB,CAAnC,EAAsC;AACpC,WAAO,CAAC,CAAR;AACD;;AACD,SAAOF,OAAO,CAACG,SAAR,CAAkB,UAACC,MAAD,EAASC,CAAT;AAAA,WAAeA,CAAC,GAAGJ,UAAJ,IAAkB,CAACG,MAAM,CAACE,QAAzC;AAAA,GAAlB,CAAP;AACD,CARD;;AAUA,IAAMC,eAAe,GAAG,SAAlBA,eAAkB,GAGnB;AAAA,MAFHP,OAEG,uEAFsC,EAEtC;AAAA,MADHQ,QACG,uEADgBR,OAAO,CAACE,MACxB;AACH,MAAIO,MAAM,GAAG,CAAC,CAAd;;AACA,MAAIT,OAAO,KAAKU,SAAZ,IAAyBF,QAAQ,IAAI,CAAzC,EAA4C;AAC1C,WAAOC,MAAP;AACD;;AACD,OAAK,IAAIJ,CAAC,GAAGG,QAAQ,GAAG,CAAxB,EAA2BH,CAAC,IAAI,CAAhC,EAAmCA,CAAC,EAApC,EAAwC;AACtC,QAAID,OAAM,GAAGJ,OAAO,CAACK,CAAD,CAApB;;AAEA,QAAI,CAACD,OAAM,CAACE,QAAZ,EAAsB;AACpBG,MAAAA,MAAM,GAAGJ,CAAT;AACA;AACD;AACF;;AACD,SAAOI,MAAP;AACD,CAjBD;;AAmBA,IAAME,IAAI,GAAGhB,QAAQ,CAAC,cAAD,CAArB;;AAEA,IAAMiB,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACZ,OAAD,EAA4C;AACxE,MAAI,IAAIa,GAAJ,CAAQb,OAAO,CAACc,GAAR,CAAY,UAACC,IAAD;AAAA,mBAAiBA,IAAI,CAACC,KAAtB;AAAA,GAAZ,CAAR,EAAkDC,IAAlD,GAAyD,CAA7D,EAAgE;AAC9DN,IAAAA,IAAI,CACF,uGADE,CAAJ;AAGD;AACF,CAND;;AAUA,WAAYO,UAAZ;;WAAYA,U;AAAAA,EAAAA,U;AAAAA,EAAAA,U;GAAAA,U,KAAAA,U;;IAuFNC,Y;;;;;AAkBJ,wBAAmBC,KAAnB,EAA6C;AAAA;;AAAA;;AAC3C,8BAAMA,KAAN;;AAD2C;;AAAA,0EA4Bf,KA5Be;;AAAA,+DA6BA,IA7BA;;AAAA,gFA8BbtC,KAAK,CAACuC,SAAN,EA9Ba;;AAAA,gFA+BbvC,KAAK,CAACuC,SAAN,EA/Ba;;AAAA,yEAiCP,YAAM;AAC1C,YAAKC,aAAL,GAAqB,EAArB;AACD,KAnC4C;;AAAA,sEAqCV,YAAM;AACvC,wBAAyC,MAAKC,KAA9C;AAAA,UAAQC,mBAAR,eAAQA,mBAAR;AAAA,UAA6BxB,OAA7B,eAA6BA,OAA7B;;AAEA,UAAI,EAACA,OAAD,aAACA,OAAD,eAACA,OAAO,CAAEE,MAAV,CAAJ,EAAsB;AACpB,eAAO,IAAP;AACD;;AAED,aAAOsB,mBAAmB,KAAKd,SAAxB,GACHV,OAAO,CAACwB,mBAAD,CADJ,GAEHd,SAFJ;AAGD,KA/C4C;;AAAA,6DAqDpC,UACPV,OADO,EAEPyB,UAFO,EAGPC,QAHO,EAIJ;AACH,aAAO,OAAOA,QAAP,KAAoB,UAApB,GACH1B,OAAO,CAAC2B,MAAR,CAAe,UAACvB,MAAD;AAAA,eAAYsB,QAAQ,CAACD,UAAD,EAAarB,MAAb,CAApB;AAAA,OAAf,CADG,GAEHJ,OAFJ;AAGD,KA7D4C;;AAAA,2DA2EtC,YAAM;AACX,YAAK4B,QAAL,CACE;AAAA,YAAGJ,mBAAH,QAAGA,mBAAH;AAAA,eAA8B;AAC5BK,UAAAA,MAAM,EAAE,IADoB;AAE5BC,UAAAA,kBAAkB,EAAEN;AAFQ,SAA9B;AAAA,OADF,EAKE,YAAM;AACJ,YAAQA,mBAAR,GAAgC,MAAKD,KAArC,CAAQC,mBAAR;;AAEA,YACEA,mBAAmB,KAAKd,SAAxB,IACA,MAAKqB,YAAL,CAAkBP,mBAAlB,CAFF,EAGE;AACA,gBAAKQ,eAAL,CAAqBR,mBAArB,EAA0C,IAA1C;AACD;AACF,OAdH;;AAgBA,aAAO,MAAKJ,KAAL,CAAWa,MAAlB,KAA6B,UAA7B,IAA2C,MAAKb,KAAL,CAAWa,MAAX,EAA3C;AACD,KA7F4C;;AAAA,4DA+FrC,YAAM;AACZ,YAAKC,kBAAL;;AAEA,YAAKN,QAAL,CAAc;AAAA,eAAO;AACnBH,UAAAA,UAAU,EAAE,EADO;AAEnBI,UAAAA,MAAM,EAAE,KAFW;AAGnBC,UAAAA,kBAAkB,EAAE,CAAC,CAHF;AAInB9B,UAAAA,OAAO,EAAE,MAAKoB,KAAL,CAAWpB;AAJD,SAAP;AAAA,OAAd;;AAMA,aAAO,MAAKoB,KAAL,CAAWe,OAAlB,KAA8B,UAA9B,IAA4C,MAAKf,KAAL,CAAWe,OAAX,EAA5C;AACD,KAzG4C;;AAAA,oEA+G7B,YAAM;AACpB,UAAQL,kBAAR,GAA+B,MAAKP,KAApC,CAAQO,kBAAR;;AAEA,UAAIA,kBAAkB,KAAKpB,SAA3B,EAAsC;AACpC,cAAK0B,MAAL,CAAYN,kBAAZ;AACD;AACF,KArH4C;;AAAA,6DAuHpC,UAACO,KAAD,EAAmB;AAAA;;AAC1B,UAAI,CAAC,MAAKN,YAAL,CAAkBM,KAAlB,CAAL,EAA+B;AAC7B;AACD;;AAED,UAAMtB,IAAI,0BAAG,MAAKQ,KAAL,CAAWvB,OAAd,wDAAG,oBAAqBqC,KAArB,CAAb;;AAEA,YAAKT,QAAL,CACE;AACEU,QAAAA,iBAAiB,EAAEvB,IAAF,aAAEA,IAAF,uBAAEA,IAAI,CAAEC;AAD3B,OADF,EAIE,YAAM;AAAA;;AACJ,YAAMuB,KAAK,GAAG,IAAIC,KAAJ,CAAU,QAAV,EAAoB;AAAEC,UAAAA,OAAO,EAAE;AAAX,SAApB,CAAd;AACA,gCAAKC,QAAL,kEAAeC,aAAf,CAA6BJ,KAA7B;AACD,OAPH;;AASA,YAAKK,KAAL;AACD,KAxI4C;;AAAA,8DA0InC,YAAM;AACd,YAAKrB,KAAL,CAAWM,MAAX,GAAoB,MAAKe,KAAL,EAApB,GAAmC,MAAKC,IAAL,EAAnC;AACD,KA5I4C;;AAAA,8DA8InC,YAAM;AAAA;;AACd,UAAMN,KAAK,GAAG,IAAIC,KAAJ,CAAU,OAAV,CAAd;AACA,+BAAKE,QAAL,oEAAeC,aAAf,CAA6BJ,KAA7B;AACD,KAjJ4C;;AAAA,6DAmJpC,YAAM;AAAA;;AACb,YAAKK,KAAL;;AACA,UAAML,KAAK,GAAG,IAAIC,KAAJ,CAAU,MAAV,CAAd;AACA,+BAAKE,QAAL,oEAAeC,aAAf,CAA6BJ,KAA7B;AACD,KAvJ4C;;AAAA,yEA+KxB,UAACF,KAAD,EAAgD;AAAA;;AAAA,UAApBS,QAAoB,uEAAT,IAAS;;AACnE,UACET,KAAK,KAAK3B,SAAV,IACA2B,KAAK,GAAG,CADR,IAEAA,KAAK,GAAG,kDAAC,MAAKd,KAAL,CAAWvB,OAAZ,yDAAC,qBAAoBE,MAArB,yEAA+B,CAA/B,IAAoC,CAH9C,EAIE;AACA;AACD;;AAED,UAAME,MAAM,2BAAG,MAAKmB,KAAL,CAAWvB,OAAd,yDAAG,qBAAqBqC,KAArB,CAAf;;AAEA,UAAIjC,MAAJ,aAAIA,MAAJ,eAAIA,MAAM,CAAEE,QAAZ,EAAsB;AACpB;AACD;;AAEDwC,MAAAA,QAAQ,IAAI,MAAKd,eAAL,CAAqBK,KAArB,CAAZ;;AAEA,YAAKT,QAAL,CAAc;AAAA,eAAO;AACnBE,UAAAA,kBAAkB,EAAEO;AADD,SAAP;AAAA,OAAd;AAGD,KAnM4C;;AAAA,kEAqM/B,UAACU,IAAD,EAA2B;AACvC,UAAQjB,kBAAR,GAA+B,MAAKP,KAApC,CAAQO,kBAAR;AACA,UAAIO,KAAK,GAAGP,kBAAZ;;AAEA,UAAIiB,IAAI,KAAK,MAAb,EAAqB;AACnB,YAAMC,SAAS,GAAGjD,cAAc,CAAC,MAAKwB,KAAL,CAAWvB,OAAZ,EAAqBqC,KAArB,CAAhC;AACAA,QAAAA,KAAK,GAAGW,SAAS,KAAK,CAAC,CAAf,GAAmBjD,cAAc,CAAC,MAAKwB,KAAL,CAAWvB,OAAZ,CAAjC,GAAwDgD,SAAhE,CAFmB,CAEwD;AAC5E,OAHD,MAGO,IAAID,IAAI,KAAK,MAAb,EAAqB;AAC1B,YAAME,WAAW,GAAG1C,eAAe,CAAC,MAAKgB,KAAL,CAAWvB,OAAZ,EAAqBqC,KAArB,CAAnC;AACAA,QAAAA,KAAK,GACHY,WAAW,KAAK,CAAC,CAAjB,GAAqB1C,eAAe,CAAC,MAAKgB,KAAL,CAAWvB,OAAZ,CAApC,GAA2DiD,WAD7D,CAF0B,CAGgD;AAC3E;;AAED,YAAKC,kBAAL,CAAwBb,KAAxB;AACD,KAnN4C;;AAAA,wEAqNN,UAACc,CAAD,EAAsC;AAAA;;AAC3E,YAAKD,kBAAL,CACEE,KAAK,CAACC,SAAN,CAAgBC,OAAhB,CAAwBC,IAAxB,0BACEJ,CAAC,CAACK,aAAF,CAAgBC,UADlB,0DACE,sBAA4BC,QAD9B,EAEEP,CAAC,CAACK,aAFJ,CADF,EAKE,KALF;AAOD,KA7N4C;;AAAA,uEA+NP,UAACL,CAAD,EAAsC;AAC1EA,MAAAA,CAAC,CAACQ,cAAF;AACD,KAjO4C;;AAAA,wEAmON,UAACR,CAAD,EAAsC;AAAA;;AAC3E,UAAMd,KAAK,GAAGe,KAAK,CAACC,SAAN,CAAgBC,OAAhB,CAAwBC,IAAxB,2BACZJ,CAAC,CAACK,aAAF,CAAgBC,UADJ,2DACZ,uBAA4BC,QADhB,EAEZP,CAAC,CAACK,aAFU,CAAd;AAIA,UAAMpD,MAAM,2BAAG,MAAKmB,KAAL,CAAWvB,OAAd,yDAAG,qBAAqBqC,KAArB,CAAf;;AAEA,UAAIjC,MAAM,IAAI,CAACA,MAAM,CAACE,QAAtB,EAAgC;AAC9B,cAAKsD,aAAL;AACD;AACF,KA7O4C;;AAAA,yEA+OxB,YAAM;AACzB,YAAKhC,QAAL,CAAc;AAAEE,QAAAA,kBAAkB,EAAE,CAAC;AAAvB,OAAd;AACD,KAjP4C;;AAAA,sEAmP3B,UAAC+B,GAAD,EAAiB;AAAA;;AACjC,UAAMC,SAAS,GAAG,MAAKxC,aAAL,GAAqBuC,GAAvC;AAEA,UAAME,WAAW,2BAAG,MAAKxC,KAAL,CAAWvB,OAAd,yDAAG,qBAAoBG,SAApB,CAA8B,UAACC,MAAD,EAAY;AAC5D,eAAOA,MAAM,CAAC4D,KAAP,CAAaC,WAAb,GAA2BC,QAA3B,CAAoCJ,SAApC,CAAP;AACD,OAFmB,CAApB;;AAIA,UAAIC,WAAW,KAAKrD,SAAhB,IAA6BqD,WAAW,GAAG,CAAC,CAAhD,EAAmD;AACjD,cAAKb,kBAAL,CAAwBa,WAAxB;AACD;;AAED,YAAKzC,aAAL,GAAqBwC,SAArB;AACD,KA/P4C;;AAAA,mEAqQ9B,UAACX,CAAD,EAA2C;AAAA;;AACxD,mCAAI,MAAKgB,YAAL,CAAkBC,OAAtB,kDAAI,sBAA2BC,QAA3B,CAAoClB,CAAC,CAACmB,MAAtC,CAAJ,EAA2D;AACzDnB,QAAAA,CAAC,CAACQ,cAAF;AACD;AACF,KAzQ4C;;AAAA,2EA2QuB,UAACR,CAAD,EAAO;AACzE,UAAMoB,sBAAsB,GAAG,MAAKC,iBAAL,CAC7B,MAAKjD,KAAL,CAAWvB,OADkB,EAE7BmD,CAAC,CAACK,aAAF,CAAgBxC,KAFa,CAA/B;;AAKA,UAAI,MAAKO,KAAL,CAAWC,mBAAX,KAAmC+C,sBAAvC,EAA+D;AAAA;;AAC7D,YAAI,CAAC,MAAKE,mBAAV,EAA+B;AAC7B,gBAAK7C,QAAL,CAAc;AACZJ,YAAAA,mBAAmB,EAAE+C;AADT,WAAd;AAGD;;AACD,qDAAKnD,KAAL,EAAWsD,QAAX,gGAAsBvB,CAAtB;AACD;AACF,KAzR4C;;AAAA,oEA2Re,UAACA,CAAD,EAAO;AACjE,UAAI,MAAK/B,KAAL,CAAWuD,aAAf,EAA8B;AAC5B,YAAM3E,QAAO,GAAG,MAAKoB,KAAL,CAAWuD,aAAX,CAAyBxB,CAAzB,EAA4B,MAAK/B,KAAL,CAAWpB,OAAvC,CAAhB;;AACA,YAAIA,QAAJ,EAAa;AACX,cAAI4E,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;AAC1CnE,YAAAA,IAAI,CACF,6EACE,+GAFA,CAAJ;AAID;;AACD,gBAAKiB,QAAL,CAAc;AACZ5B,YAAAA,OAAO,EAAPA,QADY;AAEZwB,YAAAA,mBAAmB,EAAE,MAAKgD,iBAAL,CACnBxE,QADmB,EAEnB,MAAKuB,KAAL,CAAWe,iBAFQ,CAFT;AAMZb,YAAAA,UAAU,EAAE0B,CAAC,CAACmB,MAAF,CAAStD;AANT,WAAd;AAQD,SAfD,MAeO;AACL,gBAAKY,QAAL,CAAc;AAAEH,YAAAA,UAAU,EAAE0B,CAAC,CAACmB,MAAF,CAAStD;AAAvB,WAAd;AACD;AACF,OApBD,MAoBO;AACL,YAAMhB,SAAO,GAAG,MAAK2B,MAAL,CACd,MAAKP,KAAL,CAAWpB,OADG,EAEdmD,CAAC,CAACmB,MAAF,CAAStD,KAFK,EAGd,MAAKI,KAAL,CAAWM,QAHG,CAAhB;;AAKA,cAAKE,QAAL,CAAc;AACZ5B,UAAAA,OAAO,EAAPA,SADY;AAEZwB,UAAAA,mBAAmB,EAAE,MAAKgD,iBAAL,CACnBxE,SADmB,EAEnB,MAAKuB,KAAL,CAAWe,iBAFQ,CAFT;AAMZb,UAAAA,UAAU,EAAE0B,CAAC,CAACmB,MAAF,CAAStD;AANT,SAAd;AAQD;AACF,KA/T4C;;AAAA,qEAiUkB,UAACuB,KAAD,EAAW;AACxE,OAAC,SAAD,EAAY,WAAZ,EAAyB,QAAzB,EAAmC,OAAnC,EAA4C2B,QAA5C,CAAqD3B,KAAK,CAACsB,GAA3D,KACE,MAAKkB,eADP,IAEExC,KAAK,CAACoB,cAAN,EAFF;;AAIA,cAAQpB,KAAK,CAACsB,GAAd;AACE,aAAK,SAAL;AACE,gBAAKkB,eAAL,IAAwB,MAAKC,WAAL,CAAiB,MAAjB,CAAxB;AACA;;AACF,aAAK,WAAL;AACE,gBAAKD,eAAL,IAAwB,MAAKC,WAAL,CAAiB,MAAjB,CAAxB;AACA;;AACF,aAAK,QAAL;AACE,gBAAKpC,KAAL;;AACA;;AACF,aAAK,OAAL;AACE,gBAAKmC,eAAL,IAAwB,MAAKnB,aAAL,EAAxB;AACA;AAZJ;AAcD,KApV4C;;AAAA,0EAsVvB,UAACrB,KAAD,EAAgC;AACpD,UAAQV,MAAR,GAAmB,MAAKN,KAAxB,CAAQM,MAAR;;AAEA,UAAIU,KAAK,CAACsB,GAAN,CAAU3D,MAAV,KAAqB,CAArB,IAA0BqC,KAAK,CAACsB,GAAN,KAAc,GAA5C,EAAiD;AAC/C,cAAKoB,eAAL,CAAqB1C,KAAK,CAACsB,GAA3B;;AACA;AACD;;AAED,OAAC,SAAD,EAAY,WAAZ,EAAyB,QAAzB,EAAmC,OAAnC,EAA4CK,QAA5C,CAAqD3B,KAAK,CAACsB,GAA3D,KACE,MAAKkB,eADP,IAEExC,KAAK,CAACoB,cAAN,EAFF;;AAIA,cAAQpB,KAAK,CAACsB,GAAd;AACE,aAAK,SAAL;AACE,cAAIhC,MAAJ,EAAY;AACV,kBAAKkD,eAAL,IAAwB,MAAKC,WAAL,CAAiB,MAAjB,CAAxB;AACD,WAFD,MAEO;AACL,kBAAKnC,IAAL;AACD;;AACD;;AACF,aAAK,WAAL;AACE,cAAIhB,MAAJ,EAAY;AACV,kBAAKkD,eAAL,IAAwB,MAAKC,WAAL,CAAiB,MAAjB,CAAxB;AACD,WAFD,MAEO;AACL,kBAAKnC,IAAL;AACD;;AACD;;AACF,aAAK,QAAL;AACE,gBAAKD,KAAL;;AACA;;AACF,aAAK,OAAL;AACA,aAAK,UAAL;AACA,aAAK,GAAL;AACE,cAAIf,MAAJ,EAAY;AACV,kBAAKkD,eAAL,IAAwB,MAAKnB,aAAL,EAAxB;AACD,WAFD,MAEO;AACL,kBAAKf,IAAL;AACD;;AACD;AA1BJ;AA4BD,KA9X4C;;AAAA,kEAgY/B7D,QAAQ,CAAC,MAAKkD,kBAAN,EAA0B,IAA1B,CAhYuB;;AAAA,mEAia9B,UAAC9B,MAAD,EAAsCiC,KAAtC,EAAwD;AACrE,yBAAoD,MAAKd,KAAzD;AAAA,UAAQO,kBAAR,gBAAQA,kBAAR;AAAA,UAA4BN,mBAA5B,gBAA4BA,mBAA5B;AACA,UAAQ0D,YAAR,GAAyB,MAAK9D,KAA9B,CAAQ8D,YAAR;AACA,UAAMC,OAAO,GAAG9C,KAAK,KAAKP,kBAA1B;AACA,UAAMsD,QAAQ,GAAG/C,KAAK,KAAKb,mBAA3B;AAEA,aACE,oBAAC,KAAD,CAAO,QAAP;AAAgB,QAAA,GAAG,YAAKpB,MAAM,CAACY,KAAZ;AAAnB,SACGkE,YAAY,CAAE;AACb9E,QAAAA,MAAM,EAANA,MADa;AAEb+E,QAAAA,OAAO,EAAPA,OAFa;AAGbzB,QAAAA,QAAQ,EAAEtD,MAAM,CAAC4D,KAHJ;AAIboB,QAAAA,QAAQ,EAARA,QAJa;AAKb9E,QAAAA,QAAQ,EAAEF,MAAM,CAACE,QALJ;AAMb+E,QAAAA,OAAO,EAAE,MAAKC,iBAND;AAObC,QAAAA,WAAW,EAAE,MAAKC,gBAPL;AAQbC,QAAAA,YAAY,EAAE,MAAKC;AARN,OAAF,CADf,CADF;AAcD,KArb4C;;AAAA,gEAubjC,UAACC,OAAD,EAAgC;AAC1C,YAAKjD,QAAL,GAAgBiD,OAAhB;;AACA,UAAI,MAAKvE,KAAL,CAAWwE,MAAf,EAAuB;AACrB3G,QAAAA,MAAM,CAAC0G,OAAD,EAAU,MAAKvE,KAAL,CAAWwE,MAArB,CAAN;AACD;AACF,KA5b4C;;AAAA,wEA8bzB,UAACC,SAAD,EAA2B;AAC7C,YAAKjE,QAAL,CAAc;AAAA,eAAO;AACnBkE,UAAAA,eAAe,EAAED;AADE,SAAP;AAAA,OAAd;AAGD,KAlc4C;;AAG3C,QAAQ7E,KAAR,GAAgCI,KAAhC,CAAQJ,KAAR;AAAA,QAAe+E,YAAf,GAAgC3E,KAAhC,CAAe2E,YAAf;AAEA,QAAMC,YAAY,GAAGhF,KAAK,KAAKN,SAAV,GAAsBM,KAAtB,GAA8B+E,YAAnD;AAEA,UAAKzE,aAAL,GAAqB,EAArB;;AAEA,QAAIsD,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;AAC1ClE,MAAAA,qBAAqB,CAACQ,KAAK,CAACpB,OAAP,CAArB;AACD;;AAED,UAAKuB,KAAL,GAAa;AACXM,MAAAA,MAAM,EAAE,KADG;AAEXC,MAAAA,kBAAkB,EAAE,CAAC,CAFV;AAGXN,MAAAA,mBAAmB,EAAE,MAAKgD,iBAAL,CAAuBpD,KAAK,CAACpB,OAA7B,EAAsCgG,YAAtC,CAHV;AAIX1D,MAAAA,iBAAiB,EAAE0D,YAJR;AAKXhG,MAAAA,OAAO,EAAEoB,KAAK,CAACpB,OALJ;AAMXyB,MAAAA,UAAU,EAAE;AAND,KAAb;;AASA,QAAIL,KAAK,CAACJ,KAAN,KAAgBN,SAApB,EAA+B;AAC7B,YAAK+D,mBAAL,GAA2B,IAA3B;AACD;;AAxB0C;AAyB5C;;;;SAwBD,eAAsB;AACpB,aAAO,KAAKN,YAAL,CAAkBC,OAAlB,KAA8B,IAArC;AACD;;;WAYD,2BACEpE,OADF,EAEEgB,KAFF,EAGE;AAAA;;AACA,mCACEhB,OADF,aACEA,OADF,uBACEA,OAAO,CAAEG,SAAT,CAAmB,UAACY,IAAD,EAAU;AAC3BC,QAAAA,KAAK,GAAG,OAAOD,IAAI,CAACC,KAAZ,KAAsB,QAAtB,GAAiCiF,MAAM,CAACjF,KAAD,CAAvC,GAAiDA,KAAzD;AACA,eAAOD,IAAI,CAACC,KAAL,KAAeA,KAAtB;AACD,OAHD,CADF,mEAIQ,CAAC,CAJT;AAMD;;;WAkCD,sBAAqBqB,KAArB,EAAoC;AAAA;;AAClC,aAAOA,KAAK,IAAI,CAAT,IAAcA,KAAK,sDAAI,KAAKd,KAAL,CAAWvB,OAAf,yDAAI,qBAAoBE,MAAxB,2EAAkC,CAAlC,CAA1B;AACD;;;WA4CD,yBAAwBmC,KAAxB,EAAuD;AAAA,UAAhB6D,MAAgB,uEAAP,KAAO;AACrD,UAAMC,QAAQ,GAAG,KAAKhC,YAAL,CAAkBC,OAAnC;AACA,UAAMrD,IAAI,GAAGoF,QAAQ,GAAIA,QAAQ,CAACzC,QAAT,CAAkBrB,KAAlB,CAAJ,GAA+C,IAApE;;AAEA,UAAI,CAACtB,IAAD,IAAS,CAACoF,QAAd,EAAwB;AACtB;AACD;;AAED,UAAMC,cAAc,GAAGD,QAAQ,CAACE,YAAhC;AACA,UAAMC,SAAS,GAAGH,QAAQ,CAACG,SAA3B;AACA,UAAMC,OAAO,GAAGxF,IAAI,CAACyF,SAArB;AACA,UAAMC,UAAU,GAAG1F,IAAI,CAACsF,YAAxB;;AAEA,UAAIH,MAAJ,EAAY;AACVC,QAAAA,QAAQ,CAACG,SAAT,GAAqBC,OAAO,GAAGH,cAAc,GAAG,CAA3B,GAA+BK,UAAU,GAAG,CAAjE;AACD,OAFD,MAEO,IAAIF,OAAO,GAAGE,UAAV,GAAuBL,cAAc,GAAGE,SAA5C,EAAuD;AAC5DH,QAAAA,QAAQ,CAACG,SAAT,GAAqBC,OAAO,GAAGH,cAAV,GAA2BK,UAAhD;AACD,OAFM,MAEA,IAAIF,OAAO,GAAGD,SAAd,EAAyB;AAC9BH,QAAAA,QAAQ,CAACG,SAAT,GAAqBC,OAArB;AACD;AACF;;;WAqND,4BAAmBG,SAAnB,EAAiD;AAC/C;AACA,UACE,CAAC7G,EAAE,CAAC6G,SAAS,CAAC1F,KAAX,EAAkB,KAAKI,KAAL,CAAWJ,KAA7B,CAAH,IACA0F,SAAS,CAAC1G,OAAV,KAAsB,KAAKoB,KAAL,CAAWpB,OAFnC,EAGE;AACA,YAAI4E,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAA7B,EAA4C;AAC1ClE,UAAAA,qBAAqB,CAAC,KAAKQ,KAAL,CAAWpB,OAAZ,CAArB;AACD;;AAED,aAAKyE,mBAAL,GAA2B,KAAKrD,KAAL,CAAWJ,KAAX,KAAqBN,SAAhD;;AACA,YAAMM,MAAK,GACT,KAAKI,KAAL,CAAWJ,KAAX,KAAqBN,SAArB,GACI,KAAKa,KAAL,CAAWe,iBADf,GAEI,KAAKlB,KAAL,CAAWJ,KAHjB;;AAIA,YAAMhB,SAAO,GACX,KAAKoB,KAAL,CAAWuF,UAAX,IAAyB,KAAKpF,KAAL,CAAWE,UAAX,KAA0Bf,SAAnD,GACI,KAAKiB,MAAL,CACE,KAAKP,KAAL,CAAWpB,OADb,EAEE,KAAKuB,KAAL,CAAWE,UAFb,EAGE,KAAKL,KAAL,CAAWM,QAHb,CADJ,GAMI,KAAKN,KAAL,CAAWpB,OAPjB;;AAQA,aAAK4B,QAAL,CAAc;AACZU,UAAAA,iBAAiB,EAAEtB,MADP;AAEZQ,UAAAA,mBAAmB,EAAE,KAAKgD,iBAAL,CAAuBxE,SAAvB,EAAgCgB,MAAhC,CAFT;AAGZhB,UAAAA,OAAO,EAAPA;AAHY,SAAd;AAKD;AACF;;;WAqCD,kBAAS;AAAA;;AACP,yBAA6D,KAAKuB,KAAlE;AAAA,UAAQM,MAAR,gBAAQA,MAAR;AAAA,UAAgBS,iBAAhB,gBAAgBA,iBAAhB;AAAA,UAA4CsE,YAA5C,gBAAmC5G,OAAnC;;AACA,yBA6BI,KAAKoB,KA7BT;AAAA,UACEuF,UADF,gBACEA,UADF;AAAA,UAEEE,IAFF,gBAEEA,IAFF;AAAA,UAGEC,SAHF,gBAGEA,SAHF;AAAA,UAIElB,MAJF,gBAIEA,MAJF;AAAA,UAKEmB,UALF,gBAKEA,UALF;AAAA,UAMEC,cANF,gBAMEA,cANF;AAAA,UAOEhH,OAPF,gBAOEA,OAPF;AAAA,UAQEiH,KARF,gBAQEA,KARF;AAAA,UASEC,QATF,gBASEA,QATF;AAAA,UAUEC,KAVF,gBAUEA,KAVF;AAAA,UAWEzC,QAXF,gBAWEA,QAXF;AAAA,UAYE0C,MAZF,gBAYEA,MAZF;AAAA,UAaEC,OAbF,gBAaEA,OAbF;AAAA,UAcEhC,OAdF,gBAcEA,OAdF;AAAA,UAeEH,YAfF,gBAeEA,YAfF;AAAA,UAgBExB,QAhBF,gBAgBEA,QAhBF;AAAA,UAiBE4D,SAjBF,gBAiBEA,SAjBF;AAAA,UAkBE3C,aAlBF,gBAkBEA,aAlBF;AAAA,UAmBEjD,QAnBF,gBAmBEA,QAnBF;AAAA,UAoBE6F,cApBF,gBAoBEA,cApBF;AAAA,UAqBEtF,MArBF,gBAqBEA,MArBF;AAAA,UAsBEE,OAtBF,gBAsBEA,OAtBF;AAAA,UAuBEqF,QAvBF,gBAuBEA,QAvBF;AAAA,UAwBEC,IAxBF,gBAwBEA,IAxBF;AAAA,UAyBEC,sBAzBF,gBAyBEA,sBAzBF;AAAA,UA0BEC,gBA1BF,gBA0BEA,gBA1BF;AAAA,UA2BEC,mBA3BF,gBA2BEA,mBA3BF;AAAA,UA4BKC,SA5BL;;AA8BA,UAAMzC,QAAQ,GAAG,KAAK0C,eAAL,EAAjB;AACA,UAAM9D,KAAK,GAAGoB,QAAQ,GAAGA,QAAQ,CAACpB,KAAZ,GAAoBtD,SAA1C;AAEA,UAAMqH,sBAAsB,GAC1BnB,YAAY,KAAKlG,SAAjB,IAA8BkG,YAAY,CAAC1G,MAAb,GAAsB,CAApD,GACE0G,YAAY,CAAC9F,GAAb,CAAiB,KAAKoE,YAAtB,CADF,GAGE,oBAAC,OAAD;AAAS,QAAA,KAAK,EAAC,GAAf;AAAmB,QAAA,MAAM,EAAC,SAA1B;AAAoC,QAAA,SAAS,EAAC;AAA9C,SACG,KAAK9D,KAAL,CAAWkG,SADd,CAJJ;AASA,UAAIU,eAAJ;;AAEA,UAAI,OAAOT,cAAP,KAA0B,UAA9B,EAA0C;AACxCS,QAAAA,eAAe,GAAGT,cAAc,CAAC;AAAEQ,UAAAA,sBAAsB,EAAtBA;AAAF,SAAD,CAAhC;AACD,OAFD,MAEO;AACLC,QAAAA,eAAe,GAAGD,sBAAlB;AACD;;AAED,UAAME,oBAAoB,4BAAG,KAAK1G,KAAL,CAAWuE,eAAd,0DAAG,sBAA4B5B,QAA5B,CAAqC,KAArC,CAA7B;AAEA,aACE;AACE,QAAA,SAAS,EAAE3E,YAAY,CAAC,cAAD,EAAiB2H,QAAjB,CADzB;AAEE,QAAA,SAAS,EAAEJ,SAFb;AAGE,QAAA,KAAK,EAAEK,KAHT;AAIE,QAAA,GAAG,EAAEjI,QAAQ,CAAC,KAAKgJ,YAAN,EAAoBnB,UAApB,CAJf;AAKE,QAAA,OAAO,EAAE,KAAKoB;AALhB,SAOGtG,MAAM,IAAI8E,UAAV,GACC,oBAAC,KAAD,eACMkB,SADN;AAEE,QAAA,SAAS,MAFX;AAGE,QAAA,MAAM,EAAE,KAAKT,MAHf;AAIE,QAAA,SAAS,EAAEjI,UAAU,CAAC;AACpBiJ,UAAAA,kBAAkB,EAAEvG,MADA;AAEpB,mDAAyCoG,oBAFrB;AAGpB,8CACGP,sBAAD,GAAqC;AAJnB,SAAD,CAJvB;AAUE,QAAA,KAAK,EAAE,KAAKnG,KAAL,CAAWE,UAVpB;AAWE,QAAA,SAAS,EAAE,KAAK4G,cAXlB;AAYE,QAAA,QAAQ,EAAE,KAAK1D,aAZjB,CAaE;AACA;AACA;AAfF;AAgBE,QAAA,OAAO,EAAEU,OAhBX;AAiBE,QAAA,KAAK,EAAEoC,IAjBT;AAkBE,QAAA,WAAW,EAAEI,SAAS,CAACS;AAlBzB,SADD,GAsBC,oBAAC,aAAD,eACMT,SADN;AAEE,uBAAa,IAFf;AAGE,QAAA,OAAO,EAAE,KAAKxC,OAHhB;AAIE,QAAA,SAAS,EAAE,KAAKkD,mBAJlB;AAKE,QAAA,OAAO,EAAE,KAAKC,WALhB;AAME,QAAA,OAAO,EAAE,KAAKnB,OANhB;AAOE,QAAA,MAAM,EAAE,KAAKD,MAPf;AAQE,QAAA,SAAS,EAAEjI,UAAU,CAAC;AACpBiJ,UAAAA,kBAAkB,EAAEvG,MADA;AAEpB,mDAAyCoG,oBAFrB;AAGpB,8CACGP,sBAAD,GAAqC;AAJnB,SAAD,CARvB;AAcE,QAAA,KAAK,EAAED;AAdT,UAgBGzD,KAhBH,CA7BJ,EAgDE;AACE,QAAA,GAAG,EAAE,KAAKyE,SADZ;AAEE,QAAA,IAAI,EAAE5B,IAFR;AAGE,QAAA,QAAQ,EAAE,KAAK6B,oBAHjB;AAIE,QAAA,MAAM,EAAEtB,MAJV;AAKE,QAAA,OAAO,EAAEC,OALX;AAME,QAAA,OAAO,EAAEhC,OANX;AAOE,QAAA,KAAK,EAAE/C,iBAPT;AAQE,uBAAa,IARf;AASE,QAAA,SAAS,EAAC;AATZ,SAWGtC,OAAO,CAACc,GAAR,CAAY,UAACC,IAAD;AAAA,eACX;AAAQ,UAAA,GAAG,YAAKA,IAAI,CAACC,KAAV,CAAX;AAA8B,UAAA,KAAK,EAAED,IAAI,CAACC;AAA1C,UADW;AAAA,OAAZ,CAXH,CAhDF,EA+DGa,MAAM,IACL,oBAAC,oBAAD;AACE,QAAA,SAAS,EAAE,KAAKqG,YADlB;AAEE,QAAA,SAAS,EAAElB,cAFb;AAGE,QAAA,YAAY,EAAE,KAAK7C,YAHrB;AAIE,QAAA,iBAAiB,EAAE,KAAKwE,iBAJ1B;AAKE,QAAA,YAAY,EAAE,KAAKC,kBALrB;AAME,QAAA,QAAQ,EAAEpB,QANZ;AAOE,QAAA,cAAc,EAAEE,sBAPlB;AAQE,QAAA,SAAS,EAAEC,gBARb;AASE,QAAA,WAAW,EAAEC;AATf,SAWGI,eAXH,CAhEJ,CADF;AAiFD;;;;EA7lBwBlJ,KAAK,CAAC+J,S,GAgmBjC;;;gBAhmBM1H,Y,kBAI8C;AAChDwF,EAAAA,UAAU,EAAE,KADoC;AAEhDzB,EAAAA,YAFgD,+BAEI;AAAA,QAArC9E,MAAqC,SAArCA,MAAqC;AAAA,QAA1BgB,KAA0B;;AAClD,WAAO,oBAAC,kBAAD,EAAwBA,KAAxB,CAAP;AACD,GAJ+C;AAKhDpB,EAAAA,OAAO,EAAE,EALuC;AAMhDsH,EAAAA,SAAS,EAAE,mBANqC;AAOhD5F,EAAAA,QAAQ,EAAE9B,eAPsC;AAQhD6H,EAAAA,IAAI,EAAE,oBAAC,YAAD,OAR0C;AAShDC,EAAAA,sBAAsB,EAAE,CATwB;AAUhDC,EAAAA,gBAAgB,EAAE,IAV8B;AAWhDmB,EAAAA,UAAU,EAAE5H,UAAU,CAAC6H;AAXyB,C;;AA6lBpD,eAAe1J,YAAY,CACzBD,cAAc,CAAC+B,YAAD,EAAe;AAC3B8F,EAAAA,KAAK,EAAE;AADoB,CAAf,CADW,CAA3B","sourcesContent":["import * as React from \"react\";\nimport SelectMimicry from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, setRef, multiRef } from \"../../lib/utils\";\nimport { classNames } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { withPlatform } from \"../../hoc/withPlatform\";\nimport CustomSelectOption, {\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { HasPlatform } from \"../../types\";\nimport Input from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport Caption from \"../Typography/Caption/Caption\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { is } from \"../../lib/is\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport \"./CustomSelect.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (options === undefined || endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Some values of your options have different types. CustomSelect onChange always returns a string type.\"\n );\n }\n};\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport enum SelectType {\n Default = \"default\",\n Plain = \"plain\",\n}\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: string;\n disabled?: boolean;\n [index: string]: any;\n}\n\ninterface CustomSelectState {\n inputValue?: string;\n opened?: boolean;\n focusedOptionIndex?: number;\n selectedOptionIndex?: number;\n nativeSelectValue?: SelectValue;\n options?: CustomSelectOptionInterface[];\n popperPlacement?: Placement;\n}\n\nexport interface CustomSelectProps\n extends NativeSelectProps,\n HasPlatform,\n FormFieldProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`\n */\n emptyText?: string;\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: Array<{\n value: SelectValue;\n label: string;\n [index: string]: any;\n }>;\n /**\n * Функция для кастомной фильтрации. По-умолчанию поиск производится по option.label.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В defaultDropdownContent содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если true, то в дропдауне вместо списка опций рисуется спиннер. При переданных renderDropdown и fetching: true,\n * \"победит\" renderDropdown\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nclass CustomSelect extends React.Component<\n CustomSelectProps,\n CustomSelectState\n> {\n static defaultProps: Partial<CustomSelectProps> = {\n searchable: false,\n renderOption({ option, ...props }): React.ReactNode {\n return <CustomSelectOption {...props} />;\n },\n options: [],\n emptyText: \"Ничего не найдено\",\n filterFn: defaultFilterFn,\n icon: <DropdownIcon />,\n dropdownOffsetDistance: 0,\n fixDropdownWidth: true,\n selectType: SelectType.Default,\n };\n\n public constructor(props: CustomSelectProps) {\n super(props);\n\n const { value, defaultValue } = props;\n\n const initialValue = value !== undefined ? value : defaultValue;\n\n this.keyboardInput = \"\";\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(props.options);\n }\n\n this.state = {\n opened: false,\n focusedOptionIndex: -1,\n selectedOptionIndex: this.findSelectedIndex(props.options, initialValue),\n nativeSelectValue: initialValue,\n options: props.options,\n inputValue: \"\",\n };\n\n if (props.value !== undefined) {\n this.isControlledOutside = true;\n }\n }\n\n private keyboardInput: string;\n private isControlledOutside = false;\n private selectEl: HTMLSelectElement | null = null;\n private readonly scrollBoxRef = React.createRef<HTMLDivElement>();\n private readonly containerRef = React.createRef<HTMLLabelElement>();\n\n private readonly resetKeyboardInput = () => {\n this.keyboardInput = \"\";\n };\n\n private readonly getSelectedItem = () => {\n const { selectedOptionIndex, options } = this.state;\n\n if (!options?.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n };\n\n get areOptionsShown() {\n return this.scrollBoxRef.current !== null;\n }\n\n filter = (\n options: CustomSelectProps[\"options\"],\n inputValue: string,\n filterFn: CustomSelectProps[\"filterFn\"]\n ) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n };\n\n findSelectedIndex(\n options: CustomSelectOptionInterface[] | undefined,\n value: SelectValue\n ) {\n return (\n options?.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n }\n\n open = () => {\n this.setState(\n ({ selectedOptionIndex }) => ({\n opened: true,\n focusedOptionIndex: selectedOptionIndex,\n }),\n () => {\n const { selectedOptionIndex } = this.state;\n\n if (\n selectedOptionIndex !== undefined &&\n this.isValidIndex(selectedOptionIndex)\n ) {\n this.scrollToElement(selectedOptionIndex, true);\n }\n }\n );\n typeof this.props.onOpen === \"function\" && this.props.onOpen();\n };\n\n close = () => {\n this.resetKeyboardInput();\n\n this.setState(() => ({\n inputValue: \"\",\n opened: false,\n focusedOptionIndex: -1,\n options: this.props.options,\n }));\n typeof this.props.onClose === \"function\" && this.props.onClose();\n };\n\n private isValidIndex(index: number) {\n return index >= 0 && index < (this.state.options?.length ?? 0);\n }\n\n selectFocused = () => {\n const { focusedOptionIndex } = this.state;\n\n if (focusedOptionIndex !== undefined) {\n this.select(focusedOptionIndex);\n }\n };\n\n select = (index: number) => {\n if (!this.isValidIndex(index)) {\n return;\n }\n\n const item = this.state.options?.[index];\n\n this.setState(\n {\n nativeSelectValue: item?.value,\n },\n () => {\n const event = new Event(\"change\", { bubbles: true });\n this.selectEl?.dispatchEvent(event);\n }\n );\n this.close();\n };\n\n onClick = () => {\n this.state.opened ? this.close() : this.open();\n };\n\n onFocus = () => {\n const event = new Event(\"focus\");\n this.selectEl?.dispatchEvent(event);\n };\n\n onBlur = () => {\n this.close();\n const event = new Event(\"blur\");\n this.selectEl?.dispatchEvent(event);\n };\n\n private scrollToElement(index: number, center = false) {\n const dropdown = this.scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }\n\n focusOptionByIndex = (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (this.state.options?.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = this.state.options?.[index];\n\n if (option?.disabled) {\n return;\n }\n\n scrollTo && this.scrollToElement(index);\n\n this.setState(() => ({\n focusedOptionIndex: index,\n }));\n };\n\n focusOption = (type: \"next\" | \"prev\") => {\n const { focusedOptionIndex } = this.state;\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(this.state.options, index);\n index = nextIndex === -1 ? findIndexAfter(this.state.options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(this.state.options, index);\n index =\n beforeIndex === -1 ? findIndexBefore(this.state.options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n this.focusOptionByIndex(index);\n };\n\n handleOptionHover: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n this.focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n };\n\n handleOptionDown: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n };\n\n handleOptionClick: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = this.state.options?.[index];\n\n if (option && !option.disabled) {\n this.selectFocused();\n }\n };\n\n resetFocusedOption = () => {\n this.setState({ focusedOptionIndex: -1 });\n };\n\n onKeyboardInput = (key: string) => {\n const fullInput = this.keyboardInput + key;\n\n const optionIndex = this.state.options?.findIndex((option) => {\n return option.label.toLowerCase().includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n this.focusOptionByIndex(optionIndex);\n }\n\n this.keyboardInput = fullInput;\n };\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n onLabelClick = (e: React.MouseEvent<HTMLLabelElement>) => {\n if (this.scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n };\n\n onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n const newSelectedOptionIndex = this.findSelectedIndex(\n this.state.options,\n e.currentTarget.value\n );\n\n if (this.state.selectedOptionIndex !== newSelectedOptionIndex) {\n if (!this.isControlledOutside) {\n this.setState({\n selectedOptionIndex: newSelectedOptionIndex,\n });\n }\n this.props.onChange?.(e);\n }\n };\n\n onInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n if (this.props.onInputChange) {\n const options = this.props.onInputChange(e, this.props.options);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"This filtration method is deprecated. Return value of onInputChange will\" +\n \" be ignored in v5.0.0. For custom filtration please update props.options by yourself or use filterFn property\"\n );\n }\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(\n options,\n this.state.nativeSelectValue\n ),\n inputValue: e.target.value,\n });\n } else {\n this.setState({ inputValue: e.target.value });\n }\n } else {\n const options = this.filter(\n this.props.options,\n e.target.value,\n this.props.filterFn\n );\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(\n options,\n this.state.nativeSelectValue\n ),\n inputValue: e.target.value,\n });\n }\n };\n\n onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n this.areOptionsShown &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n this.areOptionsShown && this.focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n this.areOptionsShown && this.focusOption(\"next\");\n break;\n case \"Escape\":\n this.close();\n break;\n case \"Enter\":\n this.areOptionsShown && this.selectFocused();\n break;\n }\n };\n\n handleKeyDownSelect = (event: React.KeyboardEvent) => {\n const { opened } = this.state;\n\n if (event.key.length === 1 && event.key !== \" \") {\n this.onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n this.areOptionsShown &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n this.areOptionsShown && this.focusOption(\"prev\");\n } else {\n this.open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n this.areOptionsShown && this.focusOption(\"next\");\n } else {\n this.open();\n }\n break;\n case \"Escape\":\n this.close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n this.areOptionsShown && this.selectFocused();\n } else {\n this.open();\n }\n break;\n }\n };\n\n handleKeyUp = debounce(this.resetKeyboardInput, 1000);\n\n componentDidUpdate(prevProps: CustomSelectProps) {\n // Внутри useEffect и так is, можно убрать\n if (\n !is(prevProps.value, this.props.value) ||\n prevProps.options !== this.props.options\n ) {\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(this.props.options);\n }\n\n this.isControlledOutside = this.props.value !== undefined;\n const value =\n this.props.value === undefined\n ? this.state.nativeSelectValue\n : this.props.value;\n const options =\n this.props.searchable && this.state.inputValue !== undefined\n ? this.filter(\n this.props.options,\n this.state.inputValue,\n this.props.filterFn\n )\n : this.props.options;\n this.setState({\n nativeSelectValue: value,\n selectedOptionIndex: this.findSelectedIndex(options, value),\n options,\n });\n }\n }\n\n renderOption = (option: CustomSelectOptionInterface, index: number) => {\n const { focusedOptionIndex, selectedOptionIndex } = this.state;\n const { renderOption } = this.props;\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOption!({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: this.handleOptionClick,\n onMouseDown: this.handleOptionDown,\n onMouseEnter: this.handleOptionHover,\n })}\n </React.Fragment>\n );\n };\n\n selectRef = (element: HTMLSelectElement) => {\n this.selectEl = element;\n if (this.props.getRef) {\n setRef(element, this.props.getRef);\n }\n };\n\n onPlacementChange = (placement?: Placement) => {\n this.setState(() => ({\n popperPlacement: placement,\n }));\n };\n\n render() {\n const { opened, nativeSelectValue, options: stateOptions } = this.state;\n const {\n searchable,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n options,\n sizeY,\n platform,\n style,\n onChange,\n onBlur,\n onFocus,\n onClick,\n renderOption,\n children,\n emptyText,\n onInputChange,\n filterFn,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n icon,\n dropdownOffsetDistance,\n fixDropdownWidth,\n forceDropdownPortal,\n ...restProps\n } = this.props;\n const selected = this.getSelectedItem();\n const label = selected ? selected.label : undefined;\n\n const defaultDropdownContent =\n stateOptions !== undefined && stateOptions.length > 0 ? (\n stateOptions.map(this.renderOption)\n ) : (\n <Caption level=\"1\" weight=\"regular\" vkuiClass=\"CustomSelect__empty\">\n {this.props.emptyText}\n </Caption>\n );\n\n let resolvedContent;\n\n if (typeof renderDropdown === \"function\") {\n resolvedContent = renderDropdown({ defaultDropdownContent });\n } else {\n resolvedContent = defaultDropdownContent;\n }\n\n const isPopperDirectionTop = this.state.popperPlacement?.includes(\"top\");\n\n return (\n <label\n vkuiClass={getClassName(\"CustomSelect\", platform)}\n className={className}\n style={style}\n ref={multiRef(this.containerRef, getRootRef)}\n onClick={this.onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={this.onBlur}\n vkuiClass={classNames({\n CustomSelect__open: opened,\n \"CustomSelect__open--popupDirectionTop\": isPopperDirectionTop,\n \"CustomSelect__open--not-adjacent\":\n (dropdownOffsetDistance as number) > 0,\n })}\n value={this.state.inputValue}\n onKeyDown={this.onInputKeyDown}\n onChange={this.onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехвает Input. К сожалению, это приводит конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={onClick}\n after={icon}\n placeholder={restProps.placeholder}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={this.onClick}\n onKeyDown={this.handleKeyDownSelect}\n onKeyUp={this.handleKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n vkuiClass={classNames({\n CustomSelect__open: opened,\n \"CustomSelect__open--popupDirectionTop\": isPopperDirectionTop,\n \"CustomSelect__open--not-adjacent\":\n (dropdownOffsetDistance as number) > 0,\n })}\n after={icon}\n >\n {label}\n </SelectMimicry>\n )}\n <select\n ref={this.selectRef}\n name={name}\n onChange={this.onNativeSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {options.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={this.containerRef}\n placement={popupDirection}\n scrollBoxRef={this.scrollBoxRef}\n onPlacementChange={this.onPlacementChange}\n onMouseLeave={this.resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default withPlatform(\n withAdaptivity(CustomSelect, {\n sizeY: true,\n })\n);\n"],"file":"CustomSelect.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":["React","SelectMimicry","debounce","setRef","multiRef","classNames","withAdaptivity","withPlatform","CustomSelectOption","getClassName","Input","DropdownIcon","Caption","warnOnce","defaultFilterFn","is","CustomSelectDropdown","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","undefined","warn","checkOptionsValueType","Set","map","item","value","size","SelectType","CustomSelect","props","createRef","keyboardInput","state","selectedOptionIndex","inputValue","filterFn","filter","setState","opened","focusedOptionIndex","isValidIndex","scrollToElement","onOpen","resetKeyboardInput","onClose","select","index","nativeSelectValue","event","Event","bubbles","selectEl","dispatchEvent","close","open","scrollTo","prevState","type","nextIndex","beforeIndex","focusOptionByIndex","e","Array","prototype","indexOf","call","currentTarget","parentNode","children","preventDefault","selectFocused","key","fullInput","optionIndex","label","toLowerCase","includes","scrollBoxRef","current","contains","target","newSelectedOptionIndex","findSelectedIndex","isControlledOutside","onChange","onInputChange","process","env","NODE_ENV","areOptionsShown","focusOption","onKeyboardInput","renderOption","hovered","selected","onClick","handleOptionClick","onMouseDown","handleOptionDown","onMouseOver","handleOptionHover","element","getRef","placement","popperPlacement","defaultValue","initialValue","Number","center","dropdown","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","prevProps","searchable","stateOptions","name","className","getRootRef","popupDirection","sizeY","platform","style","onBlur","onFocus","emptyText","renderDropdown","fetching","icon","dropdownOffsetDistance","fixDropdownWidth","forceDropdownPortal","restProps","getSelectedItem","defaultDropdownContent","resolvedContent","isPopperDirectionTop","containerRef","onLabelClick","CustomSelect__open","onInputKeyDown","placeholder","handleKeyDownSelect","handleKeyUp","selectRef","onNativeSelectChange","onPlacementChange","resetFocusedOption","Component","selectType","Default"],"mappings":"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","sourcesContent":["import * as React from \"react\";\nimport SelectMimicry from \"../SelectMimicry/SelectMimicry\";\nimport { debounce, setRef, multiRef } from \"../../lib/utils\";\nimport { classNames } from \"../../lib/classNames\";\nimport { NativeSelectProps } from \"../NativeSelect/NativeSelect\";\nimport { withAdaptivity } from \"../../hoc/withAdaptivity\";\nimport { withPlatform } from \"../../hoc/withPlatform\";\nimport CustomSelectOption, {\n CustomSelectOptionProps,\n} from \"../CustomSelectOption/CustomSelectOption\";\nimport { getClassName } from \"../../helpers/getClassName\";\nimport { FormFieldProps } from \"../FormField/FormField\";\nimport { HasPlatform } from \"../../types\";\nimport Input from \"../Input/Input\";\nimport { DropdownIcon } from \"../DropdownIcon/DropdownIcon\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport { defaultFilterFn } from \"../../lib/select\";\nimport { is } from \"../../lib/is\";\nimport { Placement } from \"../Popper/Popper\";\nimport { CustomSelectDropdown } from \"../CustomSelectDropdown/CustomSelectDropdown\";\nimport \"./CustomSelect.css\";\n\nconst findIndexAfter = (\n options: CustomSelectOptionInterface[] = [],\n startIndex = -1\n) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = (\n options: CustomSelectOptionInterface[] = [],\n endIndex: number = options.length\n) => {\n let result = -1;\n if (options === undefined || endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nconst warn = warnOnce(\"CustomSelect\");\n\nconst checkOptionsValueType = (options: CustomSelectOptionInterface[]) => {\n if (new Set(options.map((item) => typeof item.value)).size > 1) {\n warn(\n \"Some values of your options have different types. CustomSelect onChange always returns a string type.\"\n );\n }\n};\n\ntype SelectValue = React.SelectHTMLAttributes<HTMLSelectElement>[\"value\"];\n\nexport enum SelectType {\n Default = \"default\",\n Plain = \"plain\",\n}\n\nexport interface CustomSelectOptionInterface {\n value: SelectValue;\n label: string;\n disabled?: boolean;\n [index: string]: any;\n}\n\ninterface CustomSelectState {\n inputValue?: string;\n opened?: boolean;\n focusedOptionIndex?: number;\n selectedOptionIndex?: number;\n nativeSelectValue?: SelectValue;\n options?: CustomSelectOptionInterface[];\n popperPlacement?: Placement;\n}\n\nexport interface CustomSelectProps\n extends NativeSelectProps,\n HasPlatform,\n FormFieldProps {\n /**\n * Если `true`, то при клике на селект в нём появится текстовое поле для поиска по `options`. По умолчанию поиск\n * производится по `option.label`.\n */\n searchable?: boolean;\n /**\n * Текст, который будет отображен, если приходит пустой `options`\n */\n emptyText?: string;\n onInputChange?: (\n e: React.ChangeEvent,\n options: CustomSelectOptionInterface[]\n ) => void | CustomSelectOptionInterface[];\n options: Array<{\n value: SelectValue;\n label: string;\n [index: string]: any;\n }>;\n /**\n * Функция для кастомной фильтрации. По-умолчанию поиск производится по option.label.\n */\n filterFn?:\n | false\n | ((\n value: string,\n option: CustomSelectOptionInterface,\n getOptionLabel?: (\n option: Partial<CustomSelectOptionInterface>\n ) => string\n ) => boolean);\n popupDirection?: \"top\" | \"bottom\";\n /**\n * Рендер-проп для кастомного рендера опции.\n * В объекте аргумента приходят [свойства опции](#/CustomSelectOption?id=props)\n */\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Рендер-проп для кастомного рендера содержимого дропдауна.\n * В defaultDropdownContent содержится список опций в виде скроллящегося блока.\n */\n renderDropdown?: ({\n defaultDropdownContent,\n }: {\n defaultDropdownContent: React.ReactNode;\n }) => React.ReactNode;\n /**\n * Если true, то в дропдауне вместо списка опций рисуется спиннер. При переданных renderDropdown и fetching: true,\n * \"победит\" renderDropdown\n */\n fetching?: boolean;\n onClose?: VoidFunction;\n onOpen?: VoidFunction;\n icon?: React.ReactNode;\n dropdownOffsetDistance?: number;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n selectType?: SelectType;\n}\n\ntype MouseEventHandler = (event: React.MouseEvent<HTMLElement>) => void;\n\nclass CustomSelect extends React.Component<\n CustomSelectProps,\n CustomSelectState\n> {\n static defaultProps: Partial<CustomSelectProps> = {\n searchable: false,\n renderOption({ option, ...props }): React.ReactNode {\n return <CustomSelectOption {...props} />;\n },\n options: [],\n emptyText: \"Ничего не найдено\",\n filterFn: defaultFilterFn,\n icon: <DropdownIcon />,\n dropdownOffsetDistance: 0,\n fixDropdownWidth: true,\n selectType: SelectType.Default,\n };\n\n public constructor(props: CustomSelectProps) {\n super(props);\n\n const { value, defaultValue } = props;\n\n const initialValue = value !== undefined ? value : defaultValue;\n\n this.keyboardInput = \"\";\n\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(props.options);\n }\n\n this.state = {\n opened: false,\n focusedOptionIndex: -1,\n selectedOptionIndex: this.findSelectedIndex(props.options, initialValue),\n nativeSelectValue: initialValue,\n options: props.options,\n inputValue: \"\",\n };\n\n if (props.value !== undefined) {\n this.isControlledOutside = true;\n }\n }\n\n private keyboardInput: string;\n private isControlledOutside = false;\n private selectEl: HTMLSelectElement | null = null;\n private readonly scrollBoxRef = React.createRef<HTMLDivElement>();\n private readonly containerRef = React.createRef<HTMLLabelElement>();\n\n private readonly resetKeyboardInput = () => {\n this.keyboardInput = \"\";\n };\n\n private readonly getSelectedItem = () => {\n const { selectedOptionIndex, options } = this.state;\n\n if (!options?.length) {\n return null;\n }\n\n return selectedOptionIndex !== undefined\n ? options[selectedOptionIndex]\n : undefined;\n };\n\n get areOptionsShown() {\n return this.scrollBoxRef.current !== null;\n }\n\n filter = (\n options: CustomSelectProps[\"options\"],\n inputValue: string,\n filterFn: CustomSelectProps[\"filterFn\"]\n ) => {\n return typeof filterFn === \"function\"\n ? options.filter((option) => filterFn(inputValue, option))\n : options;\n };\n\n findSelectedIndex(\n options: CustomSelectOptionInterface[] | undefined,\n value: SelectValue\n ) {\n return (\n options?.findIndex((item) => {\n value = typeof item.value === \"number\" ? Number(value) : value;\n return item.value === value;\n }) ?? -1\n );\n }\n\n open = () => {\n this.setState(\n ({ selectedOptionIndex }) => ({\n opened: true,\n focusedOptionIndex: selectedOptionIndex,\n }),\n () => {\n const { selectedOptionIndex } = this.state;\n\n if (\n selectedOptionIndex !== undefined &&\n this.isValidIndex(selectedOptionIndex)\n ) {\n this.scrollToElement(selectedOptionIndex, true);\n }\n }\n );\n typeof this.props.onOpen === \"function\" && this.props.onOpen();\n };\n\n close = () => {\n this.resetKeyboardInput();\n\n this.setState(() => ({\n inputValue: \"\",\n opened: false,\n focusedOptionIndex: -1,\n options: this.props.options,\n }));\n typeof this.props.onClose === \"function\" && this.props.onClose();\n };\n\n private isValidIndex(index: number) {\n return index >= 0 && index < (this.state.options?.length ?? 0);\n }\n\n selectFocused = () => {\n const { focusedOptionIndex } = this.state;\n\n if (focusedOptionIndex !== undefined) {\n this.select(focusedOptionIndex);\n }\n };\n\n select = (index: number) => {\n if (!this.isValidIndex(index)) {\n return;\n }\n\n const item = this.state.options?.[index];\n\n this.setState(\n {\n nativeSelectValue: item?.value,\n },\n () => {\n const event = new Event(\"change\", { bubbles: true });\n this.selectEl?.dispatchEvent(event);\n }\n );\n this.close();\n };\n\n onClick = () => {\n this.state.opened ? this.close() : this.open();\n };\n\n onFocus = () => {\n const event = new Event(\"focus\");\n this.selectEl?.dispatchEvent(event);\n };\n\n onBlur = () => {\n this.close();\n const event = new Event(\"blur\");\n this.selectEl?.dispatchEvent(event);\n };\n\n private scrollToElement(index: number, center = false) {\n const dropdown = this.scrollBoxRef.current;\n const item = dropdown ? (dropdown.children[index] as HTMLElement) : null;\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n }\n\n focusOptionByIndex = (index: number | undefined, scrollTo = true) => {\n if (\n index === undefined ||\n index < 0 ||\n index > (this.state.options?.length ?? 0) - 1\n ) {\n return;\n }\n\n const option = this.state.options?.[index];\n\n if (option?.disabled) {\n return;\n }\n\n scrollTo && this.scrollToElement(index);\n\n this.setState((prevState) =>\n // Это оптимизация, прежде всего, под `onMouseOver`\n prevState.focusedOptionIndex !== index\n ? {\n focusedOptionIndex: index,\n }\n : null\n );\n };\n\n focusOption = (type: \"next\" | \"prev\") => {\n const { focusedOptionIndex } = this.state;\n let index = focusedOptionIndex;\n\n if (type === \"next\") {\n const nextIndex = findIndexAfter(this.state.options, index);\n index = nextIndex === -1 ? findIndexAfter(this.state.options) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === \"prev\") {\n const beforeIndex = findIndexBefore(this.state.options, index);\n index =\n beforeIndex === -1 ? findIndexBefore(this.state.options) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n this.focusOptionByIndex(index);\n };\n\n handleOptionHover: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n this.focusOptionByIndex(\n Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n ),\n false\n );\n };\n\n handleOptionDown: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n e.preventDefault();\n };\n\n handleOptionClick: MouseEventHandler = (e: React.MouseEvent<HTMLElement>) => {\n const index = Array.prototype.indexOf.call(\n e.currentTarget.parentNode?.children,\n e.currentTarget\n );\n const option = this.state.options?.[index];\n\n if (option && !option.disabled) {\n this.selectFocused();\n }\n };\n\n resetFocusedOption = () => {\n this.setState({ focusedOptionIndex: -1 });\n };\n\n onKeyboardInput = (key: string) => {\n const fullInput = this.keyboardInput + key;\n\n const optionIndex = this.state.options?.findIndex((option) => {\n return option.label.toLowerCase().includes(fullInput);\n });\n\n if (optionIndex !== undefined && optionIndex > -1) {\n this.focusOptionByIndex(optionIndex);\n }\n\n this.keyboardInput = fullInput;\n };\n\n /**\n * Нужен для правильного поведения обработчика onClick на select. Фильтрует клики, которые были сделаны по\n * выпадающему списку.\n */\n onLabelClick = (e: React.MouseEvent<HTMLLabelElement>) => {\n if (this.scrollBoxRef.current?.contains(e.target as Node)) {\n e.preventDefault();\n }\n };\n\n onNativeSelectChange: React.ChangeEventHandler<HTMLSelectElement> = (e) => {\n const newSelectedOptionIndex = this.findSelectedIndex(\n this.state.options,\n e.currentTarget.value\n );\n\n if (this.state.selectedOptionIndex !== newSelectedOptionIndex) {\n if (!this.isControlledOutside) {\n this.setState({\n selectedOptionIndex: newSelectedOptionIndex,\n });\n }\n this.props.onChange?.(e);\n }\n };\n\n onInputChange: React.ChangeEventHandler<HTMLInputElement> = (e) => {\n if (this.props.onInputChange) {\n const options = this.props.onInputChange(e, this.props.options);\n if (options) {\n if (process.env.NODE_ENV === \"development\") {\n warn(\n \"This filtration method is deprecated. Return value of onInputChange will\" +\n \" be ignored in v5.0.0. For custom filtration please update props.options by yourself or use filterFn property\"\n );\n }\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(\n options,\n this.state.nativeSelectValue\n ),\n inputValue: e.target.value,\n });\n } else {\n this.setState({ inputValue: e.target.value });\n }\n } else {\n const options = this.filter(\n this.props.options,\n e.target.value,\n this.props.filterFn\n );\n this.setState({\n options,\n selectedOptionIndex: this.findSelectedIndex(\n options,\n this.state.nativeSelectValue\n ),\n inputValue: e.target.value,\n });\n }\n };\n\n onInputKeyDown: React.KeyboardEventHandler<HTMLInputElement> = (event) => {\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n this.areOptionsShown &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n this.areOptionsShown && this.focusOption(\"prev\");\n break;\n case \"ArrowDown\":\n this.areOptionsShown && this.focusOption(\"next\");\n break;\n case \"Escape\":\n this.close();\n break;\n case \"Enter\":\n this.areOptionsShown && this.selectFocused();\n break;\n }\n };\n\n handleKeyDownSelect = (event: React.KeyboardEvent) => {\n const { opened } = this.state;\n\n if (event.key.length === 1 && event.key !== \" \") {\n this.onKeyboardInput(event.key);\n return;\n }\n\n [\"ArrowUp\", \"ArrowDown\", \"Escape\", \"Enter\"].includes(event.key) &&\n this.areOptionsShown &&\n event.preventDefault();\n\n switch (event.key) {\n case \"ArrowUp\":\n if (opened) {\n this.areOptionsShown && this.focusOption(\"prev\");\n } else {\n this.open();\n }\n break;\n case \"ArrowDown\":\n if (opened) {\n this.areOptionsShown && this.focusOption(\"next\");\n } else {\n this.open();\n }\n break;\n case \"Escape\":\n this.close();\n break;\n case \"Enter\":\n case \"Spacebar\":\n case \" \":\n if (opened) {\n this.areOptionsShown && this.selectFocused();\n } else {\n this.open();\n }\n break;\n }\n };\n\n handleKeyUp = debounce(this.resetKeyboardInput, 1000);\n\n componentDidUpdate(prevProps: CustomSelectProps) {\n // Внутри useEffect и так is, можно убрать\n if (\n !is(prevProps.value, this.props.value) ||\n prevProps.options !== this.props.options\n ) {\n if (process.env.NODE_ENV === \"development\") {\n checkOptionsValueType(this.props.options);\n }\n\n this.isControlledOutside = this.props.value !== undefined;\n const value =\n this.props.value === undefined\n ? this.state.nativeSelectValue\n : this.props.value;\n const options =\n this.props.searchable && this.state.inputValue !== undefined\n ? this.filter(\n this.props.options,\n this.state.inputValue,\n this.props.filterFn\n )\n : this.props.options;\n this.setState({\n nativeSelectValue: value,\n selectedOptionIndex: this.findSelectedIndex(options, value),\n options,\n });\n }\n }\n\n renderOption = (option: CustomSelectOptionInterface, index: number) => {\n const { focusedOptionIndex, selectedOptionIndex } = this.state;\n const { renderOption } = this.props;\n const hovered = index === focusedOptionIndex;\n const selected = index === selectedOptionIndex;\n\n return (\n <React.Fragment key={`${option.value}`}>\n {renderOption!({\n option,\n hovered,\n children: option.label,\n selected,\n disabled: option.disabled,\n onClick: this.handleOptionClick,\n onMouseDown: this.handleOptionDown,\n // Используем `onMouseOver` вместо `onMouseEnter`.\n // При параметре `searchable`, обновляется \"ребёнок\", из-за чего `onMouseEnter` не срабатывает в следующих кейсах:\n // 1. До загрузки выпадающего списка, курсор мышки находится над произвольным элементом этого списка.\n // > Лечение: только увод курсора мыши и возвращении его обратно вызывает событие `onMouseEnter` на этот элемент.\n // 2. Если это тач-устройство.\n // > Лечение: нужно нажать на какой-нибудь произвольный элемент списка, после чего `onMouseEnter` будет работать на соседние элементы,\n // но не на тот, на который нажали в первый раз.\n // Более подробно по ссылке https://github.com/facebook/react/issues/13956#issuecomment-1082055744\n onMouseOver: this.handleOptionHover,\n })}\n </React.Fragment>\n );\n };\n\n selectRef = (element: HTMLSelectElement) => {\n this.selectEl = element;\n if (this.props.getRef) {\n setRef(element, this.props.getRef);\n }\n };\n\n onPlacementChange = (placement?: Placement) => {\n this.setState(() => ({\n popperPlacement: placement,\n }));\n };\n\n render() {\n const { opened, nativeSelectValue, options: stateOptions } = this.state;\n const {\n searchable,\n name,\n className,\n getRef,\n getRootRef,\n popupDirection,\n options,\n sizeY,\n platform,\n style,\n onChange,\n onBlur,\n onFocus,\n onClick,\n renderOption,\n children,\n emptyText,\n onInputChange,\n filterFn,\n renderDropdown,\n onOpen,\n onClose,\n fetching,\n icon,\n dropdownOffsetDistance,\n fixDropdownWidth,\n forceDropdownPortal,\n ...restProps\n } = this.props;\n const selected = this.getSelectedItem();\n const label = selected ? selected.label : undefined;\n\n const defaultDropdownContent =\n stateOptions !== undefined && stateOptions.length > 0 ? (\n stateOptions.map(this.renderOption)\n ) : (\n <Caption vkuiClass=\"CustomSelect__empty\">\n {this.props.emptyText}\n </Caption>\n );\n\n let resolvedContent;\n\n if (typeof renderDropdown === \"function\") {\n resolvedContent = renderDropdown({ defaultDropdownContent });\n } else {\n resolvedContent = defaultDropdownContent;\n }\n\n const isPopperDirectionTop = this.state.popperPlacement?.includes(\"top\");\n\n return (\n <label\n vkuiClass={getClassName(\"CustomSelect\", platform)}\n className={className}\n style={style}\n ref={multiRef(this.containerRef, getRootRef)}\n onClick={this.onLabelClick}\n >\n {opened && searchable ? (\n <Input\n {...restProps}\n autoFocus\n onBlur={this.onBlur}\n vkuiClass={classNames({\n CustomSelect__open: opened,\n \"CustomSelect__open--popupDirectionTop\": isPopperDirectionTop,\n \"CustomSelect__open--not-adjacent\":\n (dropdownOffsetDistance as number) > 0,\n })}\n value={this.state.inputValue}\n onKeyDown={this.onInputKeyDown}\n onChange={this.onInputChange}\n // TODO Ожидается, что клик поймает нативный select, но его перехвает Input. К сожалению, это приводит конфликтам типизации.\n // TODO Нужно перестать пытаться превратить CustomSelect в select. Тогда эта проблема уйдёт.\n // @ts-ignore\n onClick={onClick}\n after={icon}\n placeholder={restProps.placeholder}\n />\n ) : (\n <SelectMimicry\n {...restProps}\n aria-hidden={true}\n onClick={this.onClick}\n onKeyDown={this.handleKeyDownSelect}\n onKeyUp={this.handleKeyUp}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n vkuiClass={classNames({\n CustomSelect__open: opened,\n \"CustomSelect__open--popupDirectionTop\": isPopperDirectionTop,\n \"CustomSelect__open--not-adjacent\":\n (dropdownOffsetDistance as number) > 0,\n })}\n after={icon}\n >\n {label}\n </SelectMimicry>\n )}\n <select\n ref={this.selectRef}\n name={name}\n onChange={this.onNativeSelectChange}\n onBlur={onBlur}\n onFocus={onFocus}\n onClick={onClick}\n value={nativeSelectValue}\n aria-hidden={true}\n vkuiClass=\"CustomSelect__control\"\n >\n {options.map((item) => (\n <option key={`${item.value}`} value={item.value} />\n ))}\n </select>\n {opened && (\n <CustomSelectDropdown\n targetRef={this.containerRef}\n placement={popupDirection}\n scrollBoxRef={this.scrollBoxRef}\n onPlacementChange={this.onPlacementChange}\n onMouseLeave={this.resetFocusedOption}\n fetching={fetching}\n offsetDistance={dropdownOffsetDistance}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n >\n {resolvedContent}\n </CustomSelectDropdown>\n )}\n </label>\n );\n }\n}\n\n// eslint-disable-next-line import/no-default-export\nexport default withPlatform(\n withAdaptivity(CustomSelect, {\n sizeY: true,\n })\n);\n"],"file":"CustomSelect.js"}
|
|
@@ -6,7 +6,7 @@ import { Icon16Done } from "@vkontakte/icons";
|
|
|
6
6
|
import { classNames } from "../../lib/classNames";
|
|
7
7
|
import { hasReactNode } from "../../lib/utils";
|
|
8
8
|
import Text from "../Typography/Text/Text";
|
|
9
|
-
import Caption from "../Typography/Caption/Caption";
|
|
9
|
+
import { Caption } from "../Typography/Caption/Caption";
|
|
10
10
|
import { useAdaptivity } from "../../hooks/useAdaptivity";
|
|
11
11
|
import { warnOnce } from "../../lib/warnOnce";
|
|
12
12
|
import "./CustomSelectOption.css";
|
|
@@ -51,8 +51,6 @@ var CustomSelectOption = function CustomSelectOption(_ref) {
|
|
|
51
51
|
}, createScopedElement("div", {
|
|
52
52
|
vkuiClass: "CustomSelectOption__children"
|
|
53
53
|
}, children), hasReactNode(description) && createScopedElement(Caption, {
|
|
54
|
-
level: "1",
|
|
55
|
-
weight: "regular",
|
|
56
54
|
vkuiClass: "CustomSelectOption__description"
|
|
57
55
|
}, description)), createScopedElement("div", {
|
|
58
56
|
vkuiClass: "CustomSelectOption__after"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CustomSelectOption/CustomSelectOption.tsx"],"names":["Icon16Done","classNames","hasReactNode","Text","Caption","useAdaptivity","warnOnce","warn","CustomSelectOption","children","hovered","selected","before","after","option","description","disabled","restProps","title","undefined","sizeY","process","env","NODE_ENV"],"mappings":";;;;AACA,SAASA,UAAT,QAA2B,kBAA3B;AACA,SAASC,UAAT;AACA,SAASC,YAAT;AACA,OAAOC,IAAP;AACA,SAASC,OAAT;AAEA,SAASC,aAAT;AACA,SAASC,QAAT;AACA;AAeA,IAAMC,IAAI,GAAGD,QAAQ,CAAC,oBAAD,CAArB;;AAEA,IAAME,kBAAqD,GAAG,SAAxDA,kBAAwD,OAU/B;AAAA,MAT7BC,QAS6B,QAT7BA,QAS6B;AAAA,MAR7BC,OAQ6B,QAR7BA,OAQ6B;AAAA,MAP7BC,QAO6B,QAP7BA,QAO6B;AAAA,MAN7BC,MAM6B,QAN7BA,MAM6B;AAAA,MAL7BC,KAK6B,QAL7BA,KAK6B;AAAA,MAJ7BC,MAI6B,QAJ7BA,MAI6B;AAAA,MAH7BC,WAG6B,QAH7BA,WAG6B;AAAA,MAF7BC,QAE6B,QAF7BA,QAE6B;AAAA,MAD1BC,SAC0B;;AAC7B,MAAMC,KAAK,GAAG,OAAOT,QAAP,KAAoB,QAApB,GAA+BA,QAA/B,GAA0CU,SAAxD;;AACA,uBAAkBd,aAAa,EAA/B;AAAA,MAAQe,KAAR,kBAAQA,KAAR;;AAEA,MAAI,CAAC,CAACN,MAAF,IAAYO,OAAO,CAACC,GAAR,CAAYC,QAAZ,KAAyB,aAAzC,EAAwD;AACtDhB,IAAAA,IAAI,CAAC,mEAAD,CAAJ;AACD;;AAED,SACE,oBAAC,IAAD,eACMU,SADN;AAEE,IAAA,SAAS,EAAC,KAFZ;AAGE,IAAA,MAAM,EAAC,SAHT;AAIE,IAAA,IAAI,EAAC,QAJP;AAKE,IAAA,KAAK,EAAEC,KALT;AAME,qBAAeF,QANjB;AAOE,qBAAeL,QAPjB;AAQE,IAAA,SAAS,EAAEV,UAAU,CACnB,oBADmB,sCAEUmB,KAFV,GAGnB;AACE,mCAA6BV,OAAO,IAAI,CAACM,QAD3C;AAEE,sCAAgCL,QAFlC;AAGE,sCAAgCK;AAHlC,KAHmB;AARvB,MAkBGd,YAAY,CAACU,MAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA6CA,MAA7C,CAnBJ,EAqBE;AAAK,IAAA,SAAS,EAAC;AAAf,KACE;AAAK,IAAA,SAAS,EAAC;AAAf,KAA+CH,QAA/C,CADF,EAEGP,YAAY,CAACa,WAAD,CAAZ,IACC,oBAAC,OAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KACGA,WADH,CAHJ,CArBF,EA6BE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGb,YAAY,CAACW,KAAD,CAAZ,IACC;AAAK,IAAA,SAAS,EAAC;AAAf,KAA8CA,KAA9C,CAFJ,EAIGF,QAAQ,IACP,oBAAC,UAAD;AAAY,IAAA,SAAS,EAAC;AAAtB,IALJ,CA7BF,CADF;AAwCD,CA1DD,C,CA4DA;;;AACA,eAAeH,kBAAf","sourcesContent":["import * as React from \"react\";\nimport { Icon16Done } from \"@vkontakte/icons\";\nimport { classNames } from \"../../lib/classNames\";\nimport { hasReactNode } from \"../../lib/utils\";\nimport Text from \"../Typography/Text/Text\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport { HasRootRef } from \"../../types\";\nimport { useAdaptivity } from \"../../hooks/useAdaptivity\";\nimport { warnOnce } from \"../../lib/warnOnce\";\nimport \"./CustomSelectOption.css\";\n\nexport interface CustomSelectOptionProps\n extends React.HTMLAttributes<HTMLDivElement>,\n HasRootRef<HTMLDivElement> {\n option?: any;\n selected?: boolean;\n focused?: boolean;\n hovered?: boolean;\n before?: React.ReactNode;\n after?: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nconst warn = warnOnce(\"CustomSelectOption\");\n\nconst CustomSelectOption: React.FC<CustomSelectOptionProps> = ({\n children,\n hovered,\n selected,\n before,\n after,\n option,\n description,\n disabled,\n ...restProps\n}: CustomSelectOptionProps) => {\n const title = typeof children === \"string\" ? children : undefined;\n const { sizeY } = useAdaptivity();\n\n if (!!option && process.env.NODE_ENV === \"development\") {\n warn(\"Свойство option было добавлено по ошибке и будет удалено в 5.0.0.\");\n }\n\n return (\n <Text\n {...restProps}\n Component=\"div\"\n weight=\"regular\"\n role=\"option\"\n title={title}\n aria-disabled={disabled}\n aria-selected={selected}\n vkuiClass={classNames(\n \"CustomSelectOption\",\n `CustomSelectOption--sizeY-${sizeY}`,\n {\n \"CustomSelectOption--hover\": hovered && !disabled,\n \"CustomSelectOption--selected\": selected,\n \"CustomSelectOption--disabled\": disabled,\n }\n )}\n >\n {hasReactNode(before) && (\n <div vkuiClass=\"CustomSelectOption__before\">{before}</div>\n )}\n <div vkuiClass=\"CustomSelectOption__main\">\n <div vkuiClass=\"CustomSelectOption__children\">{children}</div>\n {hasReactNode(description) && (\n <Caption vkuiClass=\"CustomSelectOption__description\">\n {description}\n </Caption>\n )}\n </div>\n <div vkuiClass=\"CustomSelectOption__after\">\n {hasReactNode(after) && (\n <div vkuiClass=\"CustomSelectOption__afterIn\">{after}</div>\n )}\n {selected && (\n <Icon16Done vkuiClass=\"CustomSelectOption__selectedIcon\" />\n )}\n </div>\n </Text>\n );\n};\n\n// eslint-disable-next-line import/no-default-export\nexport default CustomSelectOption;\n"],"file":"CustomSelectOption.js"}
|
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
|
2
2
|
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
|
|
3
3
|
var _excluded = ["children"];
|
|
4
4
|
import { createScopedElement } from "../../lib/jsxRuntime";
|
|
5
|
-
import Caption from "../Typography/Caption/Caption";
|
|
5
|
+
import { Caption } from "../Typography/Caption/Caption";
|
|
6
6
|
import "./Footer.css";
|
|
7
7
|
export var Footer = function Footer(_ref) {
|
|
8
8
|
var children = _ref.children,
|
|
@@ -11,8 +11,6 @@ export var Footer = function Footer(_ref) {
|
|
|
11
11
|
return createScopedElement(Caption, _extends({
|
|
12
12
|
Component: "footer"
|
|
13
13
|
}, restProps, {
|
|
14
|
-
level: "1",
|
|
15
|
-
weight: "regular",
|
|
16
14
|
vkuiClass: "Footer"
|
|
17
15
|
}), children);
|
|
18
16
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Footer/Footer.tsx"],"names":["Caption","Footer","children","restProps"],"mappings":";;;;AAEA,
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Footer/Footer.tsx"],"names":["Caption","Footer","children","restProps"],"mappings":";;;;AAEA,SAASA,OAAT;AACA;AAIA,OAAO,IAAMC,MAA6B,GAAG,SAAhCA,MAAgC,OAG1B;AAAA,MAFjBC,QAEiB,QAFjBA,QAEiB;AAAA,MADdC,SACc;;AACjB,SACE,oBAAC,OAAD;AAAS,IAAA,SAAS,EAAC;AAAnB,KAAgCA,SAAhC;AAA2C,IAAA,SAAS,EAAC;AAArD,MACGD,QADH,CADF;AAKD,CATM","sourcesContent":["import * as React from \"react\";\nimport { HasComponent } from \"../../types\";\nimport { Caption } from \"../Typography/Caption/Caption\";\nimport \"./Footer.css\";\n\nexport type FooterProps = React.AllHTMLAttributes<HTMLElement> & HasComponent;\n\nexport const Footer: React.FC<FooterProps> = ({\n children,\n ...restProps\n}: FooterProps) => {\n return (\n <Caption Component=\"footer\" {...restProps} vkuiClass=\"Footer\">\n {children}\n </Caption>\n );\n};\n"],"file":"Footer.js"}
|