@vkontakte/vkui 7.3.8 → 7.4.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/dist/components/ActionSheet/ActionSheet.d.ts +1 -1
- package/dist/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js +2 -2
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/Banner/Banner.d.ts +2 -2
- package/dist/components/Banner/Banner.d.ts.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Button/Button.d.ts +2 -2
- package/dist/components/Button/Button.d.ts.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +9 -7
- package/dist/components/Calendar/Calendar.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +9 -2
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +48 -35
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/CalendarRange/types.d.ts +2 -0
- package/dist/components/CalendarRange/types.d.ts.map +1 -0
- package/dist/components/CalendarRange/types.js +3 -0
- package/dist/components/CalendarRange/types.js.map +1 -0
- package/dist/components/CalendarRange/utils.d.ts +29 -0
- package/dist/components/CalendarRange/utils.d.ts.map +1 -0
- package/dist/components/CalendarRange/utils.js +123 -0
- package/dist/components/CalendarRange/utils.js.map +1 -0
- package/dist/components/Checkbox/Checkbox.d.ts +2 -2
- package/dist/components/Checkbox/Checkbox.d.ts.map +1 -1
- package/dist/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.d.ts.map +1 -1
- package/dist/components/ChipsInput/useChipsInput.js +21 -2
- package/dist/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/components/ChipsInputBase/types.d.ts +5 -1
- package/dist/components/ChipsInputBase/types.d.ts.map +1 -1
- package/dist/components/ChipsInputBase/types.js.map +1 -1
- package/dist/components/Clickable/Clickable.d.ts +4 -0
- package/dist/components/Clickable/Clickable.d.ts.map +1 -1
- package/dist/components/Clickable/Clickable.js +9 -5
- package/dist/components/Clickable/Clickable.js.map +1 -1
- package/dist/components/Clickable/RealClickable.d.ts +1 -1
- package/dist/components/Clickable/RealClickable.d.ts.map +1 -1
- package/dist/components/Clickable/RealClickable.js +3 -2
- package/dist/components/Clickable/RealClickable.js.map +1 -1
- package/dist/components/ContentCard/ContentCard.d.ts +2 -2
- package/dist/components/ContentCard/ContentCard.d.ts.map +1 -1
- package/dist/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +4 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +48 -50
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts +22 -2
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js +159 -66
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
- package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
- package/dist/components/FocusTrap/FocusTrap.js +6 -3
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -2
- package/dist/components/HorizontalCell/HorizontalCell.d.ts.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts +2 -2
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.d.ts.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/components/IconButton/IconButton.d.ts +2 -2
- package/dist/components/IconButton/IconButton.d.ts.map +1 -1
- package/dist/components/IconButton/IconButton.js.map +1 -1
- package/dist/components/InputLike/InputLike.d.ts +1 -1
- package/dist/components/InputLike/InputLike.d.ts.map +1 -1
- package/dist/components/InputLike/InputLike.js +7 -6
- package/dist/components/InputLike/InputLike.js.map +1 -1
- package/dist/components/Link/Link.d.ts +2 -2
- package/dist/components/Link/Link.d.ts.map +1 -1
- package/dist/components/Link/Link.js +2 -1
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.d.ts.map +1 -1
- package/dist/components/MiniInfoCell/MiniInfoCell.js +1 -8
- package/dist/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts +2 -2
- package/dist/components/ModalOutsideButton/ModalOutsideButton.d.ts.map +1 -1
- package/dist/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/components/NumberInputLike/NumberInputLike.d.ts +8 -0
- package/dist/components/NumberInputLike/NumberInputLike.d.ts.map +1 -0
- package/dist/components/NumberInputLike/NumberInputLike.js +45 -0
- package/dist/components/NumberInputLike/NumberInputLike.js.map +1 -0
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts +2 -2
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.d.ts.map +1 -1
- package/dist/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts +3 -1
- package/dist/components/PanelHeader/PanelHeader.d.ts.map +1 -1
- package/dist/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts +2 -2
- package/dist/components/PanelHeaderButton/PanelHeaderButton.d.ts.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/Radio/Radio.d.ts +2 -2
- package/dist/components/Radio/Radio.d.ts.map +1 -1
- package/dist/components/Radio/Radio.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +1 -4
- package/dist/components/Removable/Removable.d.ts.map +1 -1
- package/dist/components/Removable/Removable.js +39 -116
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/Removable/RemovableIos.d.ts +10 -0
- package/dist/components/Removable/RemovableIos.d.ts.map +1 -0
- package/dist/components/Removable/RemovableIos.js +124 -0
- package/dist/components/Removable/RemovableIos.js.map +1 -0
- package/dist/components/RichCell/RichCell.d.ts +2 -2
- package/dist/components/RichCell/RichCell.d.ts.map +1 -1
- package/dist/components/RichCell/RichCell.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinner.js +4 -2
- package/dist/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts +2 -2
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.d.ts.map +1 -1
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js +4 -3
- package/dist/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.d.ts +2 -2
- package/dist/components/SelectionControl/SelectionControl.d.ts.map +1 -1
- package/dist/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/components/SimpleCell/SimpleCell.d.ts.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/Skeleton/Skeleton.d.ts +5 -1
- package/dist/components/Skeleton/Skeleton.d.ts.map +1 -1
- package/dist/components/Skeleton/Skeleton.js +7 -4
- package/dist/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/Spinner/Spinner.d.ts +5 -1
- package/dist/components/Spinner/Spinner.d.ts.map +1 -1
- package/dist/components/Spinner/Spinner.js +6 -3
- package/dist/components/Spinner/Spinner.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts +2 -2
- package/dist/components/SubnavigationButton/SubnavigationButton.d.ts.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Tabs/Tabs.d.ts +13 -9
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +14 -10
- package/dist/components/Tabs/Tabs.js.map +1 -1
- package/dist/components/Tabs/TabsController.d.ts +7 -0
- package/dist/components/Tabs/TabsController.d.ts.map +1 -0
- package/dist/components/Tabs/TabsController.js +19 -0
- package/dist/components/Tabs/TabsController.js.map +1 -0
- package/dist/components/Tabs/TabsModeContext.d.ts +13 -0
- package/dist/components/Tabs/TabsModeContext.d.ts.map +1 -0
- package/dist/components/Tabs/TabsModeContext.js +11 -0
- package/dist/components/Tabs/TabsModeContext.js.map +1 -0
- package/dist/components/TabsItem/TabsItem.d.ts +3 -3
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +21 -6
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +1 -0
- package/dist/components/Tappable/Tappable.d.ts.map +1 -1
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/ToolButton/ToolButton.d.ts +2 -2
- package/dist/components/ToolButton/ToolButton.d.ts.map +1 -1
- package/dist/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js +2 -2
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Calendar/Calendar.js +9 -7
- package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +44 -31
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/CalendarRange/types.js +3 -0
- package/dist/cssm/components/CalendarRange/types.js.map +1 -0
- package/dist/cssm/components/CalendarRange/utils.js +122 -0
- package/dist/cssm/components/CalendarRange/utils.js.map +1 -0
- package/dist/cssm/components/Checkbox/Checkbox.js.map +1 -1
- package/dist/cssm/components/ChipsInput/useChipsInput.js +21 -2
- package/dist/cssm/components/ChipsInput/useChipsInput.js.map +1 -1
- package/dist/cssm/components/ChipsInputBase/types.js.map +1 -1
- package/dist/cssm/components/Clickable/Clickable.js +4 -3
- package/dist/cssm/components/Clickable/Clickable.js.map +1 -1
- package/dist/cssm/components/Clickable/RealClickable.js +1 -1
- package/dist/cssm/components/Clickable/RealClickable.js.map +1 -1
- package/dist/cssm/components/ContentCard/ContentCard.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +45 -46
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js +148 -58
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/FocusTrap/FocusTrap.js +4 -2
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.module.css +2 -3
- package/dist/cssm/components/IconButton/IconButton.js.map +1 -1
- package/dist/cssm/components/ImageBase/ImageBase.module.css +2 -3
- package/dist/cssm/components/InputLike/InputLike.js +3 -3
- package/dist/cssm/components/InputLike/InputLike.js.map +1 -1
- package/dist/cssm/components/Link/Link.js +1 -0
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js +1 -8
- package/dist/cssm/components/MiniInfoCell/MiniInfoCell.js.map +1 -1
- package/dist/cssm/components/ModalOutsideButton/ModalOutsideButton.js.map +1 -1
- package/dist/cssm/components/NumberInputLike/NumberInputLike.js +33 -0
- package/dist/cssm/components/NumberInputLike/NumberInputLike.js.map +1 -0
- package/dist/cssm/components/Pagination/PaginationPage/PaginationPageButton.js.map +1 -1
- package/dist/cssm/components/PanelHeader/PanelHeader.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/Radio/Radio.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.js +39 -115
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.module.css +9 -0
- package/dist/cssm/components/Removable/RemovableIos.js +118 -0
- package/dist/cssm/components/Removable/RemovableIos.js.map +1 -0
- package/dist/cssm/components/RichCell/RichCell.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js +2 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinner.js.map +1 -1
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js +3 -2
- package/dist/cssm/components/ScreenSpinner/ScreenSpinnerContainer.js.map +1 -1
- package/dist/cssm/components/SelectionControl/SelectionControl.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/Skeleton/Skeleton.js +6 -3
- package/dist/cssm/components/Skeleton/Skeleton.js.map +1 -1
- package/dist/cssm/components/Spinner/Spinner.js +5 -2
- package/dist/cssm/components/Spinner/Spinner.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Tabs/Tabs.js +10 -9
- package/dist/cssm/components/Tabs/Tabs.js.map +1 -1
- package/dist/cssm/components/Tabs/TabsController.js +19 -0
- package/dist/cssm/components/Tabs/TabsController.js.map +1 -0
- package/dist/cssm/components/Tabs/TabsModeContext.js +11 -0
- package/dist/cssm/components/Tabs/TabsModeContext.js.map +1 -0
- package/dist/cssm/components/TabsItem/TabsItem.js +17 -4
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/ToolButton/ToolButton.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/hooks/useCalendar.js +0 -10
- package/dist/cssm/hooks/useCalendar.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +28 -17
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useEventListener.js.map +1 -1
- package/dist/cssm/hooks/useExternRef.js.map +1 -1
- package/dist/cssm/hooks/useFocusTrap.js +2 -2
- package/dist/cssm/hooks/useFocusTrap.js.map +1 -1
- package/dist/cssm/hooks/useMutationObserver.js +6 -5
- package/dist/cssm/hooks/useMutationObserver.js.map +1 -1
- package/dist/cssm/lib/dom.js +7 -1
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/customResizeObserver.js.map +1 -1
- package/dist/cssm/lib/floating/index.js.map +1 -1
- package/dist/cssm/lib/floating/types/common.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/cssm/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/cssm/styles/animationVisibilityDelay.js +10 -0
- package/dist/cssm/styles/animationVisibilityDelay.js.map +1 -0
- package/dist/cssm/styles/animationVisibilityDelay.module.css +13 -0
- package/dist/cssm/styles/themes.css +4 -2
- package/dist/hooks/useCalendar.d.ts +0 -3
- package/dist/hooks/useCalendar.d.ts.map +1 -1
- package/dist/hooks/useCalendar.js +0 -10
- package/dist/hooks/useCalendar.js.map +1 -1
- package/dist/hooks/useDateInput.d.ts.map +1 -1
- package/dist/hooks/useDateInput.js +29 -18
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useEventListener.js.map +1 -1
- package/dist/hooks/useExternRef.js.map +1 -1
- package/dist/hooks/useFocusTrap.d.ts +5 -1
- package/dist/hooks/useFocusTrap.d.ts.map +1 -1
- package/dist/hooks/useFocusTrap.js +2 -2
- package/dist/hooks/useFocusTrap.js.map +1 -1
- package/dist/hooks/useMutationObserver.d.ts +2 -1
- package/dist/hooks/useMutationObserver.d.ts.map +1 -1
- package/dist/hooks/useMutationObserver.js +6 -5
- package/dist/hooks/useMutationObserver.js.map +1 -1
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +7 -1
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/customResizeObserver.js.map +1 -1
- package/dist/lib/floating/index.d.ts +1 -1
- package/dist/lib/floating/index.d.ts.map +1 -1
- package/dist/lib/floating/index.js.map +1 -1
- package/dist/lib/floating/types/common.d.ts +1 -1
- package/dist/lib/floating/types/common.d.ts.map +1 -1
- package/dist/lib/floating/types/common.js.map +1 -1
- package/dist/lib/sheet/controllers/BottomSheetController.js.map +1 -1
- package/dist/lib/sheet/controllers/CSSTransitionController.js.map +1 -1
- package/dist/styles/animationVisibilityDelay.d.ts +3 -0
- package/dist/styles/animationVisibilityDelay.d.ts.map +1 -0
- package/dist/styles/animationVisibilityDelay.js +10 -0
- package/dist/styles/animationVisibilityDelay.js.map +1 -0
- package/dist/vkui.css +1 -1
- package/dist/vkui.css.map +1 -1
- package/package.json +3 -6
- package/src/components/ActionSheet/ActionSheet.tsx +4 -1
- package/src/components/AppRoot/AppRoot.mdx +1 -1
- package/src/components/AppRoot/ScrollContext.tsx +2 -2
- package/src/components/Banner/Banner.tsx +2 -2
- package/src/components/Button/Button.tsx +2 -2
- package/src/components/Calendar/Calendar.tsx +8 -7
- package/src/components/CalendarRange/CalendarRange.tsx +65 -42
- package/src/components/CalendarRange/types.ts +1 -0
- package/src/components/CalendarRange/utils.ts +190 -0
- package/src/components/Checkbox/Checkbox.tsx +2 -2
- package/src/components/ChipsInput/useChipsInput.ts +23 -2
- package/src/components/ChipsInputBase/types.ts +5 -1
- package/src/components/Clickable/Clickable.tsx +12 -4
- package/src/components/Clickable/RealClickable.tsx +1 -0
- package/src/components/ContentCard/ContentCard.tsx +2 -2
- package/src/components/CustomSelect/CustomSelect.tsx +11 -7
- package/src/components/DateInput/DateInput.tsx +41 -43
- package/src/components/DateRangeInput/DateRangeInput.tsx +183 -65
- package/src/components/FocusTrap/FocusTrap.tsx +3 -0
- package/src/components/FormItem/FormItemTop/FormItemTop.mdx +1 -1
- package/src/components/HorizontalCell/HorizontalCell.tsx +2 -2
- package/src/components/HorizontalScroll/HorizontalCellShowMore/HorizontalCellShowMore.tsx +2 -2
- package/src/components/HorizontalScroll/HorizontalScroll.module.css +2 -3
- package/src/components/HorizontalScroll/HorizontalScroll.module.css.d.ts.map +1 -1
- package/src/components/IconButton/IconButton.tsx +2 -2
- package/src/components/ImageBase/ImageBase.module.css +2 -3
- package/src/components/ImageBase/ImageBase.module.css.d.ts.map +1 -1
- package/src/components/InputLike/InputLike.tsx +4 -3
- package/src/components/Link/Link.tsx +3 -2
- package/src/components/MiniInfoCell/MiniInfoCell.tsx +2 -7
- package/src/components/ModalOutsideButton/ModalOutsideButton.tsx +2 -2
- package/src/components/NumberInputLike/NumberInputLike.tsx +56 -0
- package/src/components/Pagination/PaginationPage/PaginationPageButton.tsx +2 -2
- package/src/components/PanelHeader/PanelHeader.tsx +3 -1
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +2 -2
- package/src/components/Radio/Radio.tsx +2 -2
- package/src/components/Removable/Removable.module.css +9 -0
- package/src/components/Removable/Removable.module.css.d.ts.map +1 -1
- package/src/components/Removable/Removable.tsx +50 -120
- package/src/components/Removable/RemovableIos.tsx +135 -0
- package/src/components/RichCell/RichCell.tsx +2 -2
- package/src/components/ScreenSpinner/ScreenSpinner.tsx +8 -1
- package/src/components/ScreenSpinner/ScreenSpinnerContainer.tsx +4 -1
- package/src/components/SelectionControl/SelectionControl.tsx +2 -2
- package/src/components/SimpleCell/SimpleCell.tsx +2 -2
- package/src/components/Skeleton/Skeleton.tsx +15 -2
- package/src/components/Spinner/Spinner.tsx +13 -1
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -2
- package/src/components/Tabs/Tabs.tsx +23 -19
- package/src/components/Tabs/TabsController.ts +37 -0
- package/src/components/Tabs/TabsModeContext.ts +24 -0
- package/src/components/TabsItem/TabsItem.tsx +22 -5
- package/src/components/Tappable/Tappable.tsx +5 -0
- package/src/components/ToolButton/ToolButton.tsx +2 -2
- package/src/components/UnstyledTextField/UnstyledTextField.mdx +1 -1
- package/src/hooks/useCalendar.ts +0 -12
- package/src/hooks/useDateInput.ts +21 -12
- package/src/hooks/useFocusTrap.ts +10 -1
- package/src/hooks/useMutationObserver.ts +7 -4
- package/src/lib/dom.tsx +7 -1
- package/src/lib/floating/index.ts +2 -0
- package/src/lib/floating/types/common.ts +2 -0
- package/src/styles/animationVisibilityDelay.module.css +13 -0
- package/src/styles/animationVisibilityDelay.module.css.d.ts.map +1 -0
- package/src/styles/animationVisibilityDelay.ts +13 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/PanelHeaderButton/PanelHeaderButton.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames, isPrimitiveReactNode } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { hasAccessibleName } from '../../lib/accessibility';\nimport { COMMON_WARNINGS, warnOnce } from '../../lib/warnOnce';\nimport { Tappable, type TappableOmitProps } from '../Tappable/Tappable';\nimport { Text } from '../Typography/Text/Text';\nimport { Title } from '../Typography/Title/Title';\nimport styles from './PanelHeaderButton.module.css';\n\nconst platformClassNames = {\n ios: styles.ios,\n android: styles.android,\n vkcom: styles.vkcom,\n};\n\nexport interface PanelHeaderButtonProps extends Omit<TappableOmitProps, 'label'> {\n /**\n * Флаг для обозначения первичной кнопки\n * Влияет на стилизацию кнопки.\n */\n primary?: boolean;\n /**\n * Текст или содержимое кнопки.\n */\n label?: React.ReactNode; // TODO [>=8]: добавить св-во indicator, чтобы разграничить кейсы.\n}\n\ninterface ButtonTypographyProps extends React.AllHTMLAttributes<HTMLElement> {\n /**\n * Флаг для обозначения первичной кнопки\n * Наследуется от PanelHeaderButtonProps['primary'].\n */\n primary?: PanelHeaderButtonProps['primary'];\n}\n\nconst ButtonTypography = ({ primary, children }: ButtonTypographyProps) => {\n const platform = usePlatform();\n\n if (platform === 'ios') {\n return (\n <Title Component=\"span\" level=\"3\" weight={primary ? '1' : '3'}>\n {children}\n </Title>\n );\n }\n\n return <Text weight={platform === 'vkcom' ? undefined : '2'}>{children}</Text>;\n};\n\nconst warn = warnOnce('PanelHeaderButton');\n\n/**\n * @see https://vkcom.github.io/VKUI/#/PanelHeaderButton\n */\nexport const PanelHeaderButton = ({\n children,\n primary = false,\n label,\n ...restProps\n}: PanelHeaderButtonProps): React.ReactNode => {\n const isPrimitive = isPrimitiveReactNode(children);\n const isPrimitiveLabel = isPrimitiveReactNode(label);\n const platform = usePlatform();\n\n let hoverMode;\n let activeMode;\n\n switch (platform) {\n case 'ios':\n hoverMode = 'background';\n activeMode = 'opacity';\n break;\n case 'vkcom':\n hoverMode = styles.hover;\n activeMode = styles.active;\n break;\n default:\n hoverMode = 'background';\n activeMode = 'background';\n }\n\n if (process.env.NODE_ENV === 'development') {\n /* istanbul ignore next: проверка в dev mode, тест на hasAccessibleName() есть в lib/accessibility.test.tsx */\n const isAccessible = hasAccessibleName({\n children: [children, label],\n ...restProps,\n });\n\n if (!isAccessible) {\n warn(COMMON_WARNINGS.a11y[restProps.href ? 'link-name' : 'button-name'], 'error');\n }\n }\n const elements = [label, children].filter((item) => !!item);\n\n const onlyPrimitive = elements.length === 1 && isPrimitiveReactNode(elements[0]);\n\n return (\n <Tappable\n Component={restProps.href ? 'a' : 'button'}\n hoverMode={hoverMode}\n activeEffectDelay={200}\n activeMode={activeMode}\n {...restProps}\n baseClassName={classNames(\n styles.host,\n platformClassNames.hasOwnProperty(platform)\n ? platformClassNames[platform]\n : platformClassNames.android,\n onlyPrimitive && styles.primitive,\n !isPrimitive && !isPrimitiveLabel && styles.notPrimitive,\n )}\n >\n {isPrimitive ? <ButtonTypography primary={primary}>{children}</ButtonTypography> : children}\n {isPrimitiveLabel ? (\n <ButtonTypography primary={primary} className={styles.label}>\n {label}\n </ButtonTypography>\n ) : (\n label\n )}\n </Tappable>\n );\n};\n"],"names":["React","classNames","isPrimitiveReactNode","usePlatform","hasAccessibleName","COMMON_WARNINGS","warnOnce","Tappable","Text","Title","styles","platformClassNames","ios","android","vkcom","ButtonTypography","primary","children","platform","Component","level","weight","undefined","warn","PanelHeaderButton","label","restProps","isPrimitive","isPrimitiveLabel","hoverMode","activeMode","hover","active","process","env","NODE_ENV","isAccessible","a11y","href","elements","filter","item","onlyPrimitive","length","activeEffectDelay","baseClassName","host","hasOwnProperty","primitive","notPrimitive","className"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,EAAEC,oBAAoB,QAAQ,kBAAkB;AACnE,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,iBAAiB,QAAQ,6BAA0B;AAC5D,SAASC,eAAe,EAAEC,QAAQ,QAAQ,wBAAqB;AAC/D,SAASC,QAAQ,QAAgC,0BAAuB;AACxE,SAASC,IAAI,QAAQ,6BAA0B;AAC/C,SAASC,KAAK,QAAQ,+BAA4B;AAClD,OAAOC,YAAY,iCAAiC;AAEpD,MAAMC,qBAAqB;IACzBC,KAAKF,OAAOE,GAAG;IACfC,SAASH,OAAOG,OAAO;IACvBC,OAAOJ,OAAOI,KAAK;AACrB;AAsBA,MAAMC,mBAAmB,CAAC,EAAEC,OAAO,EAAEC,QAAQ,EAAyB;IACpE,MAAMC,WAAWf;IAEjB,IAAIe,aAAa,OAAO;QACtB,qBACE,KAACT;YAAMU,WAAU;YAAOC,OAAM;YAAIC,QAAQL,UAAU,MAAM;sBACvDC;;IAGP;IAEA,qBAAO,KAACT;QAAKa,QAAQH,aAAa,UAAUI,YAAY;kBAAML;;AAChE;AAEA,MAAMM,OAAOjB,SAAS;AAEtB;;CAEC,GACD,OAAO,MAAMkB,oBAAoB,CAAC,EAChCP,QAAQ,EACRD,UAAU,KAAK,EACfS,KAAK,EACL,GAAGC,WACoB;IACvB,MAAMC,cAAczB,qBAAqBe;IACzC,MAAMW,mBAAmB1B,qBAAqBuB;IAC9C,MAAMP,WAAWf;IAEjB,IAAI0B;IACJ,IAAIC;IAEJ,OAAQZ;QACN,KAAK;YACHW,YAAY;YACZC,aAAa;YACb;QACF,KAAK;YACHD,YAAYnB,OAAOqB,KAAK;YACxBD,aAAapB,OAAOsB,MAAM;YAC1B;QACF;YACEH,YAAY;YACZC,aAAa;IACjB;IAEA,IAAIG,QAAQC,GAAG,CAACC,QAAQ,KAAK,eAAe;QAC1C,4GAA4G,GAC5G,MAAMC,eAAehC,kBAAkB;YACrCa,UAAU;gBAACA;gBAAUQ;aAAM;YAC3B,GAAGC,SAAS;QACd;QAEA,IAAI,CAACU,cAAc;YACjBb,KAAKlB,gBAAgBgC,IAAI,CAACX,UAAUY,IAAI,GAAG,cAAc,cAAc,EAAE;QAC3E;IACF;IACA,MAAMC,WAAW;QAACd;QAAOR;KAAS,CAACuB,MAAM,CAAC,CAACC,OAAS,CAAC,CAACA;IAEtD,MAAMC,gBAAgBH,SAASI,MAAM,KAAK,KAAKzC,qBAAqBqC,QAAQ,CAAC,EAAE;IAE/E,qBACE,MAAChC;QACCY,WAAWO,UAAUY,IAAI,GAAG,MAAM;QAClCT,WAAWA;QACXe,mBAAmB;QACnBd,YAAYA;QACX,GAAGJ,SAAS;QACbmB,eAAe5C,WACbS,OAAOoC,IAAI,EACXnC,mBAAmBoC,cAAc,CAAC7B,YAC9BP,kBAAkB,CAACO,SAAS,GAC5BP,mBAAmBE,OAAO,EAC9B6B,iBAAiBhC,OAAOsC,SAAS,EACjC,CAACrB,eAAe,CAACC,oBAAoBlB,OAAOuC,YAAY;;YAGzDtB,4BAAc,KAACZ;gBAAiBC,SAASA;0BAAUC;iBAA+BA;YAClFW,iCACC,KAACb;gBAAiBC,SAASA;gBAASkC,WAAWxC,OAAOe,KAAK;0BACxDA;iBAGHA;;;AAIR,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { HasDataAttribute, HasRef, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type {
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Radio/Radio.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport type { HasDataAttribute, HasRef, HasRootRef } from '../../types';\nimport { SelectionControl } from '../SelectionControl/SelectionControl';\nimport { SelectionControlLabel } from '../SelectionControl/SelectionControlLabel/SelectionControlLabel';\nimport type { TappableOmitProps } from '../Tappable/Tappable';\nimport { RadioInput } from './RadioInput/RadioInput';\nimport styles from './Radio.module.css';\n\nexport interface RadioProps\n extends React.InputHTMLAttributes<HTMLInputElement>,\n HasRef<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode'\n > {\n /**\n * Дополнительное описание под основным текстом.\n */\n description?: React.ReactNode;\n /**\n * Элемент после основного текста.\n */\n titleAfter?: React.ReactNode;\n /**\n * Позволяет передавать data-* аттрибуты элементу label.\n **/\n labelProps?: HasDataAttribute;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Radio\n */\nexport const Radio = ({\n children,\n description,\n style,\n className,\n getRootRef,\n titleAfter,\n getRef,\n labelProps,\n hoverMode,\n activeMode,\n hasHover,\n hasActive,\n focusVisibleMode,\n ...restProps\n}: RadioProps): React.ReactNode => {\n return (\n <SelectionControl\n style={style}\n className={classNames(styles.host, className)}\n disabled={restProps.disabled}\n getRootRef={getRootRef}\n hoverMode={hoverMode}\n activeMode={activeMode}\n hasHover={hasHover}\n hasActive={hasActive}\n focusVisibleMode={focusVisibleMode}\n {...labelProps}\n >\n <RadioInput {...restProps} getRef={getRef} />\n <SelectionControlLabel titleAfter={titleAfter} description={description}>\n {children}\n </SelectionControlLabel>\n </SelectionControl>\n );\n};\n\nRadio.Input = RadioInput;\n"],"names":["React","classNames","SelectionControl","SelectionControlLabel","RadioInput","styles","Radio","children","description","style","className","getRootRef","titleAfter","getRef","labelProps","hoverMode","activeMode","hasHover","hasActive","focusVisibleMode","restProps","host","disabled","Input"],"mappings":";AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAE7C,SAASC,gBAAgB,QAAQ,0CAAuC;AACxE,SAASC,qBAAqB,QAAQ,qEAAkE;AAExG,SAASC,UAAU,QAAQ,6BAA0B;AACrD,OAAOC,YAAY,qBAAqB;AAwBxC;;CAEC,GACD,OAAO,MAAMC,QAAQ,CAAC,EACpBC,QAAQ,EACRC,WAAW,EACXC,KAAK,EACLC,SAAS,EACTC,UAAU,EACVC,UAAU,EACVC,MAAM,EACNC,UAAU,EACVC,SAAS,EACTC,UAAU,EACVC,QAAQ,EACRC,SAAS,EACTC,gBAAgB,EAChB,GAAGC,WACQ;IACX,qBACE,MAAClB;QACCO,OAAOA;QACPC,WAAWT,WAAWI,OAAOgB,IAAI,EAAEX;QACnCY,UAAUF,UAAUE,QAAQ;QAC5BX,YAAYA;QACZI,WAAWA;QACXC,YAAYA;QACZC,UAAUA;QACVC,WAAWA;QACXC,kBAAkBA;QACjB,GAAGL,UAAU;;0BAEd,KAACV;gBAAY,GAAGgB,SAAS;gBAAEP,QAAQA;;0BACnC,KAACV;gBAAsBS,YAAYA;gBAAYJ,aAAaA;0BACzDD;;;;AAIT,EAAE;AAEFD,MAAMiB,KAAK,GAAGnB"}
|
|
@@ -3,144 +3,68 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
3
3
|
import * as React from "react";
|
|
4
4
|
import { Icon24Cancel } from "@vkontakte/icons";
|
|
5
5
|
import { classNames } from "@vkontakte/vkjs";
|
|
6
|
-
import { useConfigDirection } from "../../hooks/useConfigDirection.js";
|
|
7
|
-
import { useGlobalEventListener } from "../../hooks/useGlobalEventListener.js";
|
|
8
6
|
import { usePlatform } from "../../hooks/usePlatform.js";
|
|
9
7
|
import { getTextFromChildren } from "../../lib/children.js";
|
|
10
|
-
import { useDOM } from "../../lib/dom.js";
|
|
11
8
|
import { IconButton } from "../IconButton/IconButton.js";
|
|
12
9
|
import { RootComponent } from "../RootComponent/RootComponent.js";
|
|
13
|
-
import {
|
|
14
|
-
import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
10
|
+
import { RemovableIos } from "./RemovableIos.js";
|
|
15
11
|
import styles from "./Removable.module.css";
|
|
16
|
-
/* eslint-enable jsdoc/require-jsdoc */
|
|
17
|
-
* @see https://vkcom.github.io/VKUI/#/RemovableIos
|
|
18
|
-
*/ const RemovableIos = ({ onRemove, removePlaceholder, removePlaceholderString, children: childrenProp, toggleButtonTestId, removeButtonTestId, disabled })=>{
|
|
19
|
-
const direction = useConfigDirection();
|
|
20
|
-
const isRtl = direction === 'rtl';
|
|
21
|
-
const { window } = useDOM();
|
|
22
|
-
const removeButtonRef = React.useRef(null);
|
|
23
|
-
const disabledRef = React.useRef(true);
|
|
24
|
-
const [removeOffset, updateRemoveOffset] = React.useState(0);
|
|
25
|
-
useGlobalEventListener(window, 'click', ()=>{
|
|
26
|
-
if (removeOffset > 0) {
|
|
27
|
-
updateRemoveOffset(0);
|
|
28
|
-
}
|
|
29
|
-
}, {
|
|
30
|
-
capture: true
|
|
31
|
-
});
|
|
32
|
-
const onRemoveTransitionEnd = ()=>{
|
|
33
|
-
if (removeOffset > 0) {
|
|
34
|
-
removeButtonRef?.current?.focus();
|
|
35
|
-
} else {
|
|
36
|
-
disabledRef.current = true;
|
|
37
|
-
}
|
|
38
|
-
};
|
|
39
|
-
const onRemoveActivateClick = (e)=>{
|
|
40
|
-
e.stopPropagation();
|
|
41
|
-
if (!removeButtonRef.current) {
|
|
42
|
-
return;
|
|
43
|
-
}
|
|
44
|
-
const { offsetWidth } = removeButtonRef.current;
|
|
45
|
-
disabledRef.current = false;
|
|
46
|
-
updateRemoveOffset(offsetWidth);
|
|
47
|
-
};
|
|
48
|
-
const style = {
|
|
49
|
-
'--vkui_internal_Removable_remove_offset': String(removeOffset ?? 0)
|
|
50
|
-
};
|
|
12
|
+
/* eslint-enable jsdoc/require-jsdoc */ const RemovableCommon = ({ noPadding, children, removePlaceholderString, onRemoveClick, removeButtonTestId, disabled, indent })=>{
|
|
51
13
|
return /*#__PURE__*/ _jsxs("div", {
|
|
52
|
-
className: classNames(styles.content,
|
|
53
|
-
style: style,
|
|
54
|
-
onTransitionEnd: onRemoveTransitionEnd,
|
|
14
|
+
className: classNames(styles.content, !noPadding && styles.withPadding, 'vkuiInternalRemovable__content'),
|
|
55
15
|
children: [
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
"
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
16
|
+
typeof children === 'function' ? children({
|
|
17
|
+
isRemoving: false
|
|
18
|
+
}) : children,
|
|
19
|
+
indent ? /*#__PURE__*/ _jsx("div", {
|
|
20
|
+
className: classNames(styles.action, styles.indentation)
|
|
21
|
+
}) : /*#__PURE__*/ _jsx(IconButton, {
|
|
22
|
+
activeMode: "opacity",
|
|
23
|
+
hoverMode: "opacity",
|
|
24
|
+
className: classNames(styles.action, 'vkuiInternalRemovable__action'),
|
|
25
|
+
onClick: onRemoveClick,
|
|
26
|
+
label: removePlaceholderString,
|
|
27
|
+
"data-testid": removeButtonTestId,
|
|
28
|
+
disabled: disabled,
|
|
29
|
+
children: /*#__PURE__*/ _jsx(Icon24Cancel, {
|
|
30
|
+
role: "presentation"
|
|
31
|
+
})
|
|
72
32
|
}),
|
|
73
|
-
typeof childrenProp === 'function' ? childrenProp({
|
|
74
|
-
isRemoving: removeOffset > 0
|
|
75
|
-
}) : childrenProp,
|
|
76
33
|
/*#__PURE__*/ _jsx("span", {
|
|
77
34
|
className: styles.offset,
|
|
78
35
|
"aria-hidden": true
|
|
79
|
-
}),
|
|
80
|
-
/*#__PURE__*/ _jsx(Tappable, {
|
|
81
|
-
Component: "button",
|
|
82
|
-
hasActive: false,
|
|
83
|
-
hasHover: false,
|
|
84
|
-
disabled: disabledRef.current,
|
|
85
|
-
getRootRef: removeButtonRef,
|
|
86
|
-
className: styles.remove,
|
|
87
|
-
onClick: onRemove,
|
|
88
|
-
"data-testid": removeButtonTestId,
|
|
89
|
-
children: /*#__PURE__*/ _jsx("span", {
|
|
90
|
-
className: styles.removeIn,
|
|
91
|
-
children: removePlaceholder
|
|
92
|
-
})
|
|
93
36
|
})
|
|
94
37
|
]
|
|
95
38
|
});
|
|
96
39
|
};
|
|
97
|
-
|
|
98
|
-
* @see https://vkcom.github.io/VKUI/#/Removable
|
|
99
|
-
*/ export const Removable = ({ children, onRemove, removePlaceholder = 'Удалить', align = 'center', indent = false, toggleButtonTestId, removeButtonTestId, disabled, noPadding, ...restProps })=>{
|
|
40
|
+
export const Removable = ({ children, onRemove, removePlaceholder = 'Удалить', align = 'center', indent = false, toggleButtonTestId, removeButtonTestId, disabled, noPadding, ...restProps })=>{
|
|
100
41
|
const platform = usePlatform();
|
|
101
42
|
const onRemoveClick = (e)=>{
|
|
102
43
|
e.preventDefault();
|
|
103
44
|
onRemove?.(e);
|
|
104
45
|
};
|
|
105
46
|
const removePlaceholderString = getTextFromChildren(removePlaceholder);
|
|
106
|
-
return /*#__PURE__*/
|
|
47
|
+
return /*#__PURE__*/ _jsx(RootComponent, {
|
|
107
48
|
...restProps,
|
|
108
49
|
baseClassName: classNames(platform === 'ios' && styles.ios, align === 'start' && styles.alignStart, indent && styles.indent),
|
|
109
|
-
children:
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}),
|
|
128
|
-
/*#__PURE__*/ _jsx("span", {
|
|
129
|
-
className: styles.offset,
|
|
130
|
-
"aria-hidden": true
|
|
131
|
-
})
|
|
132
|
-
]
|
|
133
|
-
}),
|
|
134
|
-
platform === 'ios' && /*#__PURE__*/ _jsx(RemovableIos, {
|
|
135
|
-
onRemove: onRemoveClick,
|
|
136
|
-
removePlaceholder: removePlaceholder,
|
|
137
|
-
removePlaceholderString: removePlaceholderString,
|
|
138
|
-
toggleButtonTestId: toggleButtonTestId,
|
|
139
|
-
removeButtonTestId: removeButtonTestId,
|
|
140
|
-
disabled: disabled,
|
|
141
|
-
children: children
|
|
142
|
-
})
|
|
143
|
-
]
|
|
50
|
+
children: platform === 'ios' ? /*#__PURE__*/ _jsx(RemovableIos, {
|
|
51
|
+
onRemove: onRemoveClick,
|
|
52
|
+
removePlaceholder: removePlaceholder,
|
|
53
|
+
removePlaceholderString: removePlaceholderString,
|
|
54
|
+
toggleButtonTestId: toggleButtonTestId,
|
|
55
|
+
removeButtonTestId: removeButtonTestId,
|
|
56
|
+
disabled: disabled,
|
|
57
|
+
indent: indent,
|
|
58
|
+
children: children
|
|
59
|
+
}) : /*#__PURE__*/ _jsx(RemovableCommon, {
|
|
60
|
+
onRemoveClick: onRemoveClick,
|
|
61
|
+
noPadding: noPadding,
|
|
62
|
+
removeButtonTestId: removeButtonTestId,
|
|
63
|
+
removePlaceholderString: removePlaceholderString,
|
|
64
|
+
disabled: disabled,
|
|
65
|
+
indent: indent,
|
|
66
|
+
children: children
|
|
67
|
+
})
|
|
144
68
|
});
|
|
145
69
|
};
|
|
146
70
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Removable/Removable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Icon24Cancel } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useConfigDirection } from '../../hooks/useConfigDirection';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getTextFromChildren } from '../../lib/children';\nimport { useDOM } from '../../lib/dom';\nimport type { CSSCustomProperties, HTMLAttributesWithRootRef } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport styles from './Removable.module.css';\n\nexport interface RemovableProps {\n /**\n * Текст кнопки удаления ячейки. Визуально скрыт везде, кроме iOS. На iOS появляется в выезжающей кнопке для удаления ячейки.\n */\n removePlaceholder?: React.ReactNode;\n /**\n * Обработчик, срабатывающий при нажатии на контрол удаления.\n */\n onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement | null) => void;\n /**\n * Передает атрибут `data-testid` для кнопки, которая активирует кнопку удаления (iOS only).\n */\n toggleButtonTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки удаления.\n */\n removeButtonTestId?: string;\n /**\n * Блокировка взаимодействия с компонентом.\n */\n disabled?: boolean;\n}\n/* eslint-disable jsdoc/require-jsdoc */\ninterface RemovableIosOwnProps extends RemovableProps {\n removePlaceholderString?: string;\n children?: React.ReactNode | ((renderProps: RemovableIosRenderProps) => React.ReactNode);\n}\n/* eslint-enable jsdoc/require-jsdoc */\n\n/**\n * @see https://vkcom.github.io/VKUI/#/RemovableIos\n */\nconst RemovableIos = ({\n onRemove,\n removePlaceholder,\n removePlaceholderString,\n children: childrenProp,\n toggleButtonTestId,\n removeButtonTestId,\n disabled,\n}: RemovableIosOwnProps) => {\n const direction = useConfigDirection();\n const isRtl = direction === 'rtl';\n const { window } = useDOM();\n\n const removeButtonRef = React.useRef<HTMLElement>(null);\n const disabledRef = React.useRef(true);\n const [removeOffset, updateRemoveOffset] = React.useState(0);\n\n useGlobalEventListener(\n window,\n 'click',\n () => {\n if (removeOffset > 0) {\n updateRemoveOffset(0);\n }\n },\n { capture: true },\n );\n\n const onRemoveTransitionEnd = () => {\n if (removeOffset > 0) {\n removeButtonRef?.current?.focus();\n } else {\n disabledRef.current = true;\n }\n };\n\n const onRemoveActivateClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!removeButtonRef.current) {\n return;\n }\n const { offsetWidth } = removeButtonRef.current;\n disabledRef.current = false;\n updateRemoveOffset(offsetWidth);\n };\n\n const style: CSSCustomProperties = {\n '--vkui_internal_Removable_remove_offset': String(removeOffset ?? 0),\n };\n\n return (\n <div\n className={classNames(styles.content, isRtl && styles.rtl, 'vkuiInternalRemovable__content')}\n style={style}\n onTransitionEnd={onRemoveTransitionEnd}\n >\n <IconButton\n hasActive={false}\n hasHover={false}\n className={classNames(styles.action, styles.toggle, 'vkuiInternalRemovable__action')}\n onClick={onRemoveActivateClick}\n disabled={removeOffset > 0 || disabled}\n data-testid={toggleButtonTestId}\n >\n <VisuallyHidden>{removePlaceholderString}</VisuallyHidden>\n <i className={styles.toggleIn} role=\"presentation\" />\n </IconButton>\n {typeof childrenProp === 'function'\n ? childrenProp({ isRemoving: removeOffset > 0 })\n : childrenProp}\n\n <span className={styles.offset} aria-hidden />\n\n <Tappable\n Component=\"button\"\n hasActive={false}\n hasHover={false}\n disabled={disabledRef.current}\n getRootRef={removeButtonRef}\n className={styles.remove}\n onClick={onRemove}\n data-testid={removeButtonTestId}\n >\n <span className={styles.removeIn}>{removePlaceholder}</span>\n </Tappable>\n </div>\n );\n};\n\ninterface RemovableIosRenderProps {\n /**\n * Показывает состояние Removable на платформе iOS при нажатии на иконку удаления.\n * Для имитации поведения на iOS при нажатии на иконку удаления самого удаление не происходит,\n * контент сдвигается влево и справа выезжает настоящая кнопка \"Удалить\".\n * Когда контент сдвинут `isRemoving = true`.\n */\n isRemoving: boolean;\n}\n\ninterface RemovableOwnProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'children'>,\n RemovableProps {\n /**\n * Расположение кнопки удаления.\n */\n align?: 'start' | 'center';\n /**\n * Скрывает кнопку, но оставляет отступ.\n * @since 5.4.0\n */\n indent?: boolean;\n /**\n * Убирает базовые отступы для базовой платформы.\n */\n noPadding?: boolean;\n /**\n * Содержимое. Можно передать функцию для отрисовки.\n */\n children?: React.ReactNode | ((renderProps: RemovableIosRenderProps) => React.ReactNode);\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Removable\n */\nexport const Removable = ({\n children,\n onRemove,\n removePlaceholder = 'Удалить',\n align = 'center',\n indent = false,\n toggleButtonTestId,\n removeButtonTestId,\n disabled,\n noPadding,\n ...restProps\n}: RemovableOwnProps): React.ReactNode => {\n const platform = usePlatform();\n\n const onRemoveClick = (e: React.MouseEvent) => {\n e.preventDefault();\n onRemove?.(e);\n };\n\n const removePlaceholderString: string = getTextFromChildren(removePlaceholder);\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n platform === 'ios' && styles.ios,\n align === 'start' && styles.alignStart,\n indent && styles.indent,\n )}\n >\n {platform !== 'ios' && (\n <div\n className={classNames(\n styles.content,\n !noPadding && styles.withPadding,\n 'vkuiInternalRemovable__content',\n )}\n >\n {typeof children === 'function' ? children({ isRemoving: false }) : children}\n\n <IconButton\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n className={classNames(styles.action, 'vkuiInternalRemovable__action')}\n onClick={onRemoveClick}\n label={removePlaceholderString}\n data-testid={removeButtonTestId}\n disabled={disabled}\n >\n <Icon24Cancel role=\"presentation\" />\n </IconButton>\n\n <span className={styles.offset} aria-hidden />\n </div>\n )}\n\n {platform === 'ios' && (\n <RemovableIos\n onRemove={onRemoveClick}\n removePlaceholder={removePlaceholder}\n removePlaceholderString={removePlaceholderString}\n toggleButtonTestId={toggleButtonTestId}\n removeButtonTestId={removeButtonTestId}\n disabled={disabled}\n >\n {children}\n </RemovableIos>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon24Cancel","classNames","useConfigDirection","useGlobalEventListener","usePlatform","getTextFromChildren","useDOM","IconButton","RootComponent","Tappable","VisuallyHidden","styles","RemovableIos","onRemove","removePlaceholder","removePlaceholderString","children","childrenProp","toggleButtonTestId","removeButtonTestId","disabled","direction","isRtl","window","removeButtonRef","useRef","disabledRef","removeOffset","updateRemoveOffset","useState","capture","onRemoveTransitionEnd","current","focus","onRemoveActivateClick","e","stopPropagation","offsetWidth","style","String","div","className","content","rtl","onTransitionEnd","hasActive","hasHover","action","toggle","onClick","data-testid","i","toggleIn","role","isRemoving","span","offset","aria-hidden","Component","getRootRef","remove","removeIn","Removable","align","indent","noPadding","restProps","platform","onRemoveClick","preventDefault","baseClassName","ios","alignStart","withPadding","activeMode","hoverMode","label"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Removable/Removable.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { Icon24Cancel } from '@vkontakte/icons';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { getTextFromChildren } from '../../lib/children';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { RemovableIos } from './RemovableIos';\nimport styles from './Removable.module.css';\n\nexport interface RemovableProps {\n /**\n * Текст кнопки удаления ячейки. Визуально скрыт везде, кроме iOS. На iOS появляется в выезжающей кнопке для удаления ячейки.\n */\n removePlaceholder?: React.ReactNode;\n /**\n * Обработчик, срабатывающий при нажатии на контрол удаления.\n */\n onRemove?: (e: React.MouseEvent, rootEl?: HTMLElement | null) => void;\n /**\n * Передает атрибут `data-testid` для кнопки, которая активирует кнопку удаления (iOS only).\n */\n toggleButtonTestId?: string;\n /**\n * Передает атрибут `data-testid` для кнопки удаления.\n */\n removeButtonTestId?: string;\n /**\n * Блокировка взаимодействия с компонентом.\n */\n disabled?: boolean;\n}\n/* eslint-disable jsdoc/require-jsdoc */\ninterface RemovableCommonOwnProps\n extends Pick<\n RemovableOwnProps,\n 'noPadding' | 'children' | 'removeButtonTestId' | 'disabled' | 'indent'\n > {\n removePlaceholderString?: string;\n onRemoveClick: (e: React.MouseEvent) => void;\n}\n/* eslint-enable jsdoc/require-jsdoc */\n\nconst RemovableCommon = ({\n noPadding,\n children,\n removePlaceholderString,\n onRemoveClick,\n removeButtonTestId,\n disabled,\n indent,\n}: RemovableCommonOwnProps) => {\n return (\n <div\n className={classNames(\n styles.content,\n !noPadding && styles.withPadding,\n 'vkuiInternalRemovable__content',\n )}\n >\n {typeof children === 'function' ? children({ isRemoving: false }) : children}\n\n {indent ? (\n <div className={classNames(styles.action, styles.indentation)} />\n ) : (\n <IconButton\n activeMode=\"opacity\"\n hoverMode=\"opacity\"\n className={classNames(styles.action, 'vkuiInternalRemovable__action')}\n onClick={onRemoveClick}\n label={removePlaceholderString}\n data-testid={removeButtonTestId}\n disabled={disabled}\n >\n <Icon24Cancel role=\"presentation\" />\n </IconButton>\n )}\n <span className={styles.offset} aria-hidden />\n </div>\n );\n};\n\nexport interface RemovableIosRenderProps {\n /**\n * Показывает состояние Removable на платформе iOS при нажатии на иконку удаления.\n * Для имитации поведения на iOS при нажатии на иконку удаления самого удаление не происходит,\n * контент сдвигается влево и справа выезжает настоящая кнопка \"Удалить\".\n * Когда контент сдвинут `isRemoving = true`.\n */\n isRemoving: boolean;\n}\n\ninterface RemovableOwnProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'children'>,\n RemovableProps {\n /**\n * Расположение кнопки удаления.\n */\n align?: 'start' | 'center';\n /**\n * Скрывает кнопку, но оставляет отступ.\n * @since 5.4.0\n */\n indent?: boolean;\n /**\n * Убирает базовые отступы для базовой платформы.\n */\n noPadding?: boolean;\n /**\n * Содержимое. Можно передать функцию для отрисовки.\n */\n children?: React.ReactNode | ((renderProps: RemovableIosRenderProps) => React.ReactNode);\n}\n\nexport const Removable = ({\n children,\n onRemove,\n removePlaceholder = 'Удалить',\n align = 'center',\n indent = false,\n toggleButtonTestId,\n removeButtonTestId,\n disabled,\n noPadding,\n ...restProps\n}: RemovableOwnProps): React.ReactNode => {\n const platform = usePlatform();\n\n const onRemoveClick = (e: React.MouseEvent) => {\n e.preventDefault();\n onRemove?.(e);\n };\n\n const removePlaceholderString: string = getTextFromChildren(removePlaceholder);\n\n return (\n <RootComponent\n {...restProps}\n baseClassName={classNames(\n platform === 'ios' && styles.ios,\n align === 'start' && styles.alignStart,\n indent && styles.indent,\n )}\n >\n {platform === 'ios' ? (\n <RemovableIos\n onRemove={onRemoveClick}\n removePlaceholder={removePlaceholder}\n removePlaceholderString={removePlaceholderString}\n toggleButtonTestId={toggleButtonTestId}\n removeButtonTestId={removeButtonTestId}\n disabled={disabled}\n indent={indent}\n >\n {children}\n </RemovableIos>\n ) : (\n <RemovableCommon\n onRemoveClick={onRemoveClick}\n noPadding={noPadding}\n removeButtonTestId={removeButtonTestId}\n removePlaceholderString={removePlaceholderString}\n disabled={disabled}\n indent={indent}\n >\n {children}\n </RemovableCommon>\n )}\n </RootComponent>\n );\n};\n"],"names":["React","Icon24Cancel","classNames","usePlatform","getTextFromChildren","IconButton","RootComponent","RemovableIos","styles","RemovableCommon","noPadding","children","removePlaceholderString","onRemoveClick","removeButtonTestId","disabled","indent","div","className","content","withPadding","isRemoving","action","indentation","activeMode","hoverMode","onClick","label","data-testid","role","span","offset","aria-hidden","Removable","onRemove","removePlaceholder","align","toggleButtonTestId","restProps","platform","e","preventDefault","baseClassName","ios","alignStart"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,YAAY,QAAQ,mBAAmB;AAChD,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,WAAW,QAAQ,6BAA0B;AACtD,SAASC,mBAAmB,QAAQ,wBAAqB;AAEzD,SAASC,UAAU,QAAQ,8BAA2B;AACtD,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,YAAY,QAAQ,oBAAiB;AAC9C,OAAOC,YAAY,yBAAyB;AAiC5C,qCAAqC,GAErC,MAAMC,kBAAkB,CAAC,EACvBC,SAAS,EACTC,QAAQ,EACRC,uBAAuB,EACvBC,aAAa,EACbC,kBAAkB,EAClBC,QAAQ,EACRC,MAAM,EACkB;IACxB,qBACE,MAACC;QACCC,WAAWhB,WACTM,OAAOW,OAAO,EACd,CAACT,aAAaF,OAAOY,WAAW,EAChC;;YAGD,OAAOT,aAAa,aAAaA,SAAS;gBAAEU,YAAY;YAAM,KAAKV;YAEnEK,uBACC,KAACC;gBAAIC,WAAWhB,WAAWM,OAAOc,MAAM,EAAEd,OAAOe,WAAW;+BAE5D,KAAClB;gBACCmB,YAAW;gBACXC,WAAU;gBACVP,WAAWhB,WAAWM,OAAOc,MAAM,EAAE;gBACrCI,SAASb;gBACTc,OAAOf;gBACPgB,eAAad;gBACbC,UAAUA;0BAEV,cAAA,KAACd;oBAAa4B,MAAK;;;0BAGvB,KAACC;gBAAKZ,WAAWV,OAAOuB,MAAM;gBAAEC,aAAW;;;;AAGjD;AAkCA,OAAO,MAAMC,YAAY,CAAC,EACxBtB,QAAQ,EACRuB,QAAQ,EACRC,oBAAoB,SAAS,EAC7BC,QAAQ,QAAQ,EAChBpB,SAAS,KAAK,EACdqB,kBAAkB,EAClBvB,kBAAkB,EAClBC,QAAQ,EACRL,SAAS,EACT,GAAG4B,WACe;IAClB,MAAMC,WAAWpC;IAEjB,MAAMU,gBAAgB,CAAC2B;QACrBA,EAAEC,cAAc;QAChBP,WAAWM;IACb;IAEA,MAAM5B,0BAAkCR,oBAAoB+B;IAE5D,qBACE,KAAC7B;QACE,GAAGgC,SAAS;QACbI,eAAexC,WACbqC,aAAa,SAAS/B,OAAOmC,GAAG,EAChCP,UAAU,WAAW5B,OAAOoC,UAAU,EACtC5B,UAAUR,OAAOQ,MAAM;kBAGxBuB,aAAa,sBACZ,KAAChC;YACC2B,UAAUrB;YACVsB,mBAAmBA;YACnBvB,yBAAyBA;YACzByB,oBAAoBA;YACpBvB,oBAAoBA;YACpBC,UAAUA;YACVC,QAAQA;sBAEPL;2BAGH,KAACF;YACCI,eAAeA;YACfH,WAAWA;YACXI,oBAAoBA;YACpBF,yBAAyBA;YACzBG,UAAUA;YACVC,QAAQA;sBAEPL;;;AAKX,EAAE"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import { classNames } from "@vkontakte/vkjs";
|
|
5
|
+
import { useConfigDirection } from "../../hooks/useConfigDirection.js";
|
|
6
|
+
import { useGlobalEventListener } from "../../hooks/useGlobalEventListener.js";
|
|
7
|
+
import { useDOM } from "../../lib/dom.js";
|
|
8
|
+
import { IconButton } from "../IconButton/IconButton.js";
|
|
9
|
+
import { Tappable } from "../Tappable/Tappable.js";
|
|
10
|
+
import { VisuallyHidden } from "../VisuallyHidden/VisuallyHidden.js";
|
|
11
|
+
import styles from "./Removable.module.css";
|
|
12
|
+
/* eslint-enable jsdoc/require-jsdoc */ const RemovableIosWithRemove = ({ onRemove, removePlaceholder, removePlaceholderString, children: childrenProp, toggleButtonTestId, removeButtonTestId, disabled })=>{
|
|
13
|
+
const direction = useConfigDirection();
|
|
14
|
+
const isRtl = direction === 'rtl';
|
|
15
|
+
const { window } = useDOM();
|
|
16
|
+
const removeButtonRef = React.useRef(null);
|
|
17
|
+
const disabledRef = React.useRef(true);
|
|
18
|
+
const [removeOffset, updateRemoveOffset] = React.useState(0);
|
|
19
|
+
useGlobalEventListener(window, 'click', ()=>{
|
|
20
|
+
if (removeOffset > 0) {
|
|
21
|
+
updateRemoveOffset(0);
|
|
22
|
+
}
|
|
23
|
+
}, {
|
|
24
|
+
capture: true
|
|
25
|
+
});
|
|
26
|
+
const onRemoveTransitionEnd = ()=>{
|
|
27
|
+
if (removeOffset > 0) {
|
|
28
|
+
removeButtonRef?.current?.focus();
|
|
29
|
+
} else {
|
|
30
|
+
disabledRef.current = true;
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
const onRemoveActivateClick = (e)=>{
|
|
34
|
+
e.stopPropagation();
|
|
35
|
+
if (!removeButtonRef.current) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const { offsetWidth } = removeButtonRef.current;
|
|
39
|
+
disabledRef.current = false;
|
|
40
|
+
updateRemoveOffset(offsetWidth);
|
|
41
|
+
};
|
|
42
|
+
const style = {
|
|
43
|
+
'--vkui_internal_Removable_remove_offset': String(removeOffset ?? 0)
|
|
44
|
+
};
|
|
45
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
46
|
+
className: classNames(styles.content, isRtl && styles.rtl, 'vkuiInternalRemovable__content'),
|
|
47
|
+
style: style,
|
|
48
|
+
onTransitionEnd: onRemoveTransitionEnd,
|
|
49
|
+
children: [
|
|
50
|
+
/*#__PURE__*/ _jsxs(IconButton, {
|
|
51
|
+
hasActive: false,
|
|
52
|
+
hasHover: false,
|
|
53
|
+
className: classNames(styles.action, styles.toggle, 'vkuiInternalRemovable__action'),
|
|
54
|
+
onClick: onRemoveActivateClick,
|
|
55
|
+
disabled: removeOffset > 0 || disabled,
|
|
56
|
+
"data-testid": toggleButtonTestId,
|
|
57
|
+
children: [
|
|
58
|
+
/*#__PURE__*/ _jsx(VisuallyHidden, {
|
|
59
|
+
children: removePlaceholderString
|
|
60
|
+
}),
|
|
61
|
+
/*#__PURE__*/ _jsx("i", {
|
|
62
|
+
className: styles.toggleIn,
|
|
63
|
+
role: "presentation"
|
|
64
|
+
})
|
|
65
|
+
]
|
|
66
|
+
}),
|
|
67
|
+
typeof childrenProp === 'function' ? childrenProp({
|
|
68
|
+
isRemoving: removeOffset > 0
|
|
69
|
+
}) : childrenProp,
|
|
70
|
+
/*#__PURE__*/ _jsx("span", {
|
|
71
|
+
className: styles.offset,
|
|
72
|
+
"aria-hidden": true
|
|
73
|
+
}),
|
|
74
|
+
/*#__PURE__*/ _jsx(Tappable, {
|
|
75
|
+
Component: "button",
|
|
76
|
+
hasActive: false,
|
|
77
|
+
hasHover: false,
|
|
78
|
+
disabled: disabledRef.current,
|
|
79
|
+
getRootRef: removeButtonRef,
|
|
80
|
+
className: styles.remove,
|
|
81
|
+
onClick: onRemove,
|
|
82
|
+
"data-testid": removeButtonTestId,
|
|
83
|
+
children: /*#__PURE__*/ _jsx("span", {
|
|
84
|
+
className: styles.removeIn,
|
|
85
|
+
children: removePlaceholder
|
|
86
|
+
})
|
|
87
|
+
})
|
|
88
|
+
]
|
|
89
|
+
});
|
|
90
|
+
};
|
|
91
|
+
const RemovableIosWithIndent = ({ children: childrenProp })=>{
|
|
92
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
93
|
+
className: classNames(styles.content, 'vkuiInternalRemovable__content'),
|
|
94
|
+
children: [
|
|
95
|
+
/*#__PURE__*/ _jsx("div", {
|
|
96
|
+
className: classNames(styles.action, styles.indentation, 'vkuiInternalRemovable__action')
|
|
97
|
+
}),
|
|
98
|
+
typeof childrenProp === 'function' ? childrenProp({
|
|
99
|
+
isRemoving: false
|
|
100
|
+
}) : childrenProp,
|
|
101
|
+
/*#__PURE__*/ _jsx("span", {
|
|
102
|
+
className: styles.offset,
|
|
103
|
+
"aria-hidden": true
|
|
104
|
+
})
|
|
105
|
+
]
|
|
106
|
+
});
|
|
107
|
+
};
|
|
108
|
+
const RemovableIos = ({ indent, children, ...restProps })=>{
|
|
109
|
+
return indent ? /*#__PURE__*/ _jsx(RemovableIosWithIndent, {
|
|
110
|
+
children: children
|
|
111
|
+
}) : /*#__PURE__*/ _jsx(RemovableIosWithRemove, {
|
|
112
|
+
...restProps,
|
|
113
|
+
children: children
|
|
114
|
+
});
|
|
115
|
+
};
|
|
116
|
+
export { RemovableIos };
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=RemovableIos.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Removable/RemovableIos.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useConfigDirection } from '../../hooks/useConfigDirection';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport { type CSSCustomProperties } from '../../types';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Tappable } from '../Tappable/Tappable';\nimport { VisuallyHidden } from '../VisuallyHidden/VisuallyHidden';\nimport { type RemovableIosRenderProps, type RemovableProps } from './Removable';\nimport styles from './Removable.module.css';\n\n/* eslint-disable jsdoc/require-jsdoc */\ninterface RemovableIosOwnProps extends RemovableProps {\n indent?: boolean;\n removePlaceholderString?: string;\n children?: React.ReactNode | ((renderProps: RemovableIosRenderProps) => React.ReactNode);\n}\n/* eslint-enable jsdoc/require-jsdoc */\n\nconst RemovableIosWithRemove = ({\n onRemove,\n removePlaceholder,\n removePlaceholderString,\n children: childrenProp,\n toggleButtonTestId,\n removeButtonTestId,\n disabled,\n}: Omit<RemovableIosOwnProps, 'indent'>) => {\n const direction = useConfigDirection();\n const isRtl = direction === 'rtl';\n const { window } = useDOM();\n\n const removeButtonRef = React.useRef<HTMLElement>(null);\n const disabledRef = React.useRef(true);\n const [removeOffset, updateRemoveOffset] = React.useState(0);\n\n useGlobalEventListener(\n window,\n 'click',\n () => {\n if (removeOffset > 0) {\n updateRemoveOffset(0);\n }\n },\n { capture: true },\n );\n\n const onRemoveTransitionEnd = () => {\n if (removeOffset > 0) {\n removeButtonRef?.current?.focus();\n } else {\n disabledRef.current = true;\n }\n };\n\n const onRemoveActivateClick = (e: React.MouseEvent) => {\n e.stopPropagation();\n if (!removeButtonRef.current) {\n return;\n }\n const { offsetWidth } = removeButtonRef.current;\n disabledRef.current = false;\n updateRemoveOffset(offsetWidth);\n };\n\n const style: CSSCustomProperties = {\n '--vkui_internal_Removable_remove_offset': String(removeOffset ?? 0),\n };\n\n return (\n <div\n className={classNames(styles.content, isRtl && styles.rtl, 'vkuiInternalRemovable__content')}\n style={style}\n onTransitionEnd={onRemoveTransitionEnd}\n >\n <IconButton\n hasActive={false}\n hasHover={false}\n className={classNames(styles.action, styles.toggle, 'vkuiInternalRemovable__action')}\n onClick={onRemoveActivateClick}\n disabled={removeOffset > 0 || disabled}\n data-testid={toggleButtonTestId}\n >\n <VisuallyHidden>{removePlaceholderString}</VisuallyHidden>\n <i className={styles.toggleIn} role=\"presentation\" />\n </IconButton>\n {typeof childrenProp === 'function'\n ? childrenProp({ isRemoving: removeOffset > 0 })\n : childrenProp}\n\n <span className={styles.offset} aria-hidden />\n\n <Tappable\n Component=\"button\"\n hasActive={false}\n hasHover={false}\n disabled={disabledRef.current}\n getRootRef={removeButtonRef}\n className={styles.remove}\n onClick={onRemove}\n data-testid={removeButtonTestId}\n >\n <span className={styles.removeIn}>{removePlaceholder}</span>\n </Tappable>\n </div>\n );\n};\n\nconst RemovableIosWithIndent = ({\n children: childrenProp,\n}: Pick<RemovableIosOwnProps, 'children'>) => {\n return (\n <div className={classNames(styles.content, 'vkuiInternalRemovable__content')}>\n <div\n className={classNames(styles.action, styles.indentation, 'vkuiInternalRemovable__action')}\n />\n {typeof childrenProp === 'function' ? childrenProp({ isRemoving: false }) : childrenProp}\n\n <span className={styles.offset} aria-hidden />\n </div>\n );\n};\n\nconst RemovableIos = ({ indent, children, ...restProps }: RemovableIosOwnProps) => {\n return indent ? (\n <RemovableIosWithIndent>{children}</RemovableIosWithIndent>\n ) : (\n <RemovableIosWithRemove {...restProps}>{children}</RemovableIosWithRemove>\n );\n};\n\nexport { RemovableIos };\n"],"names":["React","classNames","useConfigDirection","useGlobalEventListener","useDOM","IconButton","Tappable","VisuallyHidden","styles","RemovableIosWithRemove","onRemove","removePlaceholder","removePlaceholderString","children","childrenProp","toggleButtonTestId","removeButtonTestId","disabled","direction","isRtl","window","removeButtonRef","useRef","disabledRef","removeOffset","updateRemoveOffset","useState","capture","onRemoveTransitionEnd","current","focus","onRemoveActivateClick","e","stopPropagation","offsetWidth","style","String","div","className","content","rtl","onTransitionEnd","hasActive","hasHover","action","toggle","onClick","data-testid","i","toggleIn","role","isRemoving","span","offset","aria-hidden","Component","getRootRef","remove","removeIn","RemovableIosWithIndent","indentation","RemovableIos","indent","restProps"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/RichCell/RichCell.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Tappable, type
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/RichCell/RichCell.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { Tappable, type TappableOmitProps } from '../Tappable/Tappable';\nimport { Subhead } from '../Typography/Subhead/Subhead';\nimport { RichCellIcon } from './RichCellIcon/RichCellIcon';\nimport styles from './RichCell.module.css';\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nconst alignAfterClassNames = {\n start: styles.alignAfterStart,\n center: styles.alignAfterCenter,\n end: styles.alignAfterEnd,\n};\n\nconst alignBeforeClassNames = {\n start: styles.alignBeforeStart,\n center: styles.alignBeforeCenter,\n end: styles.alignBeforeEnd,\n};\n\nconst alignContentClassNames = {\n start: styles.contentAlignStart,\n center: styles.contentAlignCenter,\n end: styles.contentAlignEnd,\n};\n\ntype Align = 'start' | 'center' | 'end';\n\nexport interface RichCellProps extends TappableOmitProps {\n /**\n * Контейнер для текста над `children`.\n */\n overTitle?: React.ReactNode;\n /**\n * Контейнер для текста под `children`.\n */\n subtitle?: React.ReactNode;\n /**\n * Контейнер для текста под `subtitle`.\n */\n extraSubtitle?: React.ReactNode;\n /**\n * Контейнер для контента под `caption`. Например `<UsersStack size=\"m\" />`.\n */\n bottom?: React.ReactNode;\n /**\n * Кнопки-действия. Принимает [`Button`](https://vkcom.github.io/VKUI/#/Button) с параметрами:\n *\n * - `mode=\"primary\" size=\"s\"`\n * - `mode=\"secondary\" size=\"s\"`.\n *\n * Для набора кнопок используйте [`ButtonGroup`](https://vkcom.github.io/VKUI/#/ButtonGroup) с параметрами:\n *\n * - `mode=\"horizontal\" gap=\"s\" stretched`.\n */\n actions?: React.ReactNode;\n /**\n * `<Avatar size={40|48|72} />`.\n */\n before?: React.ReactNode;\n /**\n * Иконка 28 или текст.\n */\n after?: React.ReactNode;\n /**\n * Текст под `after`.\n */\n afterCaption?: React.ReactNode;\n /**\n * Выравнивание before компонента по вертикали.\n */\n beforeAlign?: Align;\n /**\n * Выравнивание центрального контента по вертикали.\n */\n contentAlign?: Align;\n /**\n * Выравнивание after компонента по вертикали.\n */\n afterAlign?: Align;\n /**\n * Блокировка взаимодействия с компонентом. Убирает анимацию нажатия.\n */\n disabled?: boolean;\n /**\n * Включает многострочный режим для `subhead`, `children`, `text` и `caption`.\n */\n multiline?: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/RichCell\n */\nexport const RichCell: React.FC<RichCellProps> & {\n Icon: typeof RichCellIcon;\n} = ({\n overTitle,\n children,\n subtitle,\n extraSubtitle,\n before,\n after,\n afterCaption,\n bottom,\n actions,\n multiline,\n beforeAlign = 'start',\n contentAlign = 'start',\n afterAlign = 'start',\n ...restProps\n}: RichCellProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const withAfter = after || afterCaption;\n\n const afterRender = () => {\n if (!withAfter) {\n return;\n }\n return (\n <div className={styles.contentAfter}>\n {after && <div className={styles.afterChildren}>{after}</div>}\n {afterCaption && <div className={styles.afterCaption}>{afterCaption}</div>}\n </div>\n );\n };\n\n return (\n <Tappable\n {...restProps}\n baseClassName={classNames(\n styles.host,\n !multiline && styles.textEllipsis,\n sizeY !== 'regular' && sizeYClassNames[sizeY],\n withAfter && styles.withAfter,\n withAfter && alignAfterClassNames[afterAlign],\n before && alignBeforeClassNames[beforeAlign],\n alignContentClassNames[contentAlign],\n )}\n >\n {before && <div className={styles.before}>{before}</div>}\n <div className={styles.in}>\n <div className={styles.content}>\n <div className={styles.contentBefore}>\n {overTitle && (\n <Subhead Component=\"div\" className={styles.overTitle}>\n {overTitle}\n </Subhead>\n )}\n <div className={styles.children}>{children}</div>\n {subtitle && <div className={styles.subtitle}>{subtitle}</div>}\n {extraSubtitle && (\n <Subhead Component=\"div\" className={styles.extraSubtitle}>\n {extraSubtitle}\n </Subhead>\n )}\n </div>\n {afterAlign === 'start' && afterRender()}\n </div>\n {bottom && <div className={styles.bottom}>{bottom}</div>}\n {actions && <div className={styles.actions}>{actions}</div>}\n </div>\n {afterAlign !== 'start' && afterRender()}\n </Tappable>\n );\n};\n\nRichCell.Icon = RichCellIcon;\n"],"names":["React","classNames","useAdaptivity","Tappable","Subhead","RichCellIcon","styles","sizeYClassNames","none","sizeYNone","compact","sizeYCompact","alignAfterClassNames","start","alignAfterStart","center","alignAfterCenter","end","alignAfterEnd","alignBeforeClassNames","alignBeforeStart","alignBeforeCenter","alignBeforeEnd","alignContentClassNames","contentAlignStart","contentAlignCenter","contentAlignEnd","RichCell","overTitle","children","subtitle","extraSubtitle","before","after","afterCaption","bottom","actions","multiline","beforeAlign","contentAlign","afterAlign","restProps","sizeY","withAfter","afterRender","div","className","contentAfter","afterChildren","baseClassName","host","textEllipsis","in","content","contentBefore","Component","Icon"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,QAAQ,QAAgC,0BAAuB;AACxE,SAASC,OAAO,QAAQ,mCAAgC;AACxD,SAASC,YAAY,QAAQ,iCAA8B;AAC3D,OAAOC,YAAY,wBAAwB;AAE3C,MAAMC,kBAAkB;IACtBC,MAAMF,OAAOG,SAAS;IACtBC,SAASJ,OAAOK,YAAY;AAC9B;AAEA,MAAMC,uBAAuB;IAC3BC,OAAOP,OAAOQ,eAAe;IAC7BC,QAAQT,OAAOU,gBAAgB;IAC/BC,KAAKX,OAAOY,aAAa;AAC3B;AAEA,MAAMC,wBAAwB;IAC5BN,OAAOP,OAAOc,gBAAgB;IAC9BL,QAAQT,OAAOe,iBAAiB;IAChCJ,KAAKX,OAAOgB,cAAc;AAC5B;AAEA,MAAMC,yBAAyB;IAC7BV,OAAOP,OAAOkB,iBAAiB;IAC/BT,QAAQT,OAAOmB,kBAAkB;IACjCR,KAAKX,OAAOoB,eAAe;AAC7B;AAkEA;;CAEC,GACD,OAAO,MAAMC,WAET,CAAC,EACHC,SAAS,EACTC,QAAQ,EACRC,QAAQ,EACRC,aAAa,EACbC,MAAM,EACNC,KAAK,EACLC,YAAY,EACZC,MAAM,EACNC,OAAO,EACPC,SAAS,EACTC,cAAc,OAAO,EACrBC,eAAe,OAAO,EACtBC,aAAa,OAAO,EACpB,GAAGC,WACW;IACd,MAAM,EAAEC,QAAQ,MAAM,EAAE,GAAGxC;IAC3B,MAAMyC,YAAYV,SAASC;IAE3B,MAAMU,cAAc;QAClB,IAAI,CAACD,WAAW;YACd;QACF;QACA,qBACE,MAACE;YAAIC,WAAWxC,OAAOyC,YAAY;;gBAChCd,uBAAS,KAACY;oBAAIC,WAAWxC,OAAO0C,aAAa;8BAAGf;;gBAChDC,8BAAgB,KAACW;oBAAIC,WAAWxC,OAAO4B,YAAY;8BAAGA;;;;IAG7D;IAEA,qBACE,MAAC/B;QACE,GAAGsC,SAAS;QACbQ,eAAehD,WACbK,OAAO4C,IAAI,EACX,CAACb,aAAa/B,OAAO6C,YAAY,EACjCT,UAAU,aAAanC,eAAe,CAACmC,MAAM,EAC7CC,aAAarC,OAAOqC,SAAS,EAC7BA,aAAa/B,oBAAoB,CAAC4B,WAAW,EAC7CR,UAAUb,qBAAqB,CAACmB,YAAY,EAC5Cf,sBAAsB,CAACgB,aAAa;;YAGrCP,wBAAU,KAACa;gBAAIC,WAAWxC,OAAO0B,MAAM;0BAAGA;;0BAC3C,MAACa;gBAAIC,WAAWxC,OAAO8C,EAAE;;kCACvB,MAACP;wBAAIC,WAAWxC,OAAO+C,OAAO;;0CAC5B,MAACR;gCAAIC,WAAWxC,OAAOgD,aAAa;;oCACjC1B,2BACC,KAACxB;wCAAQmD,WAAU;wCAAMT,WAAWxC,OAAOsB,SAAS;kDACjDA;;kDAGL,KAACiB;wCAAIC,WAAWxC,OAAOuB,QAAQ;kDAAGA;;oCACjCC,0BAAY,KAACe;wCAAIC,WAAWxC,OAAOwB,QAAQ;kDAAGA;;oCAC9CC,+BACC,KAAC3B;wCAAQmD,WAAU;wCAAMT,WAAWxC,OAAOyB,aAAa;kDACrDA;;;;4BAINS,eAAe,WAAWI;;;oBAE5BT,wBAAU,KAACU;wBAAIC,WAAWxC,OAAO6B,MAAM;kCAAGA;;oBAC1CC,yBAAW,KAACS;wBAAIC,WAAWxC,OAAO8B,OAAO;kCAAGA;;;;YAE9CI,eAAe,WAAWI;;;AAGjC,EAAE;AAEFjB,SAAS6B,IAAI,GAAGnD"}
|
|
@@ -10,7 +10,7 @@ import { ScreenSpinnerLoader } from "./ScreenSpinnerLoader.js";
|
|
|
10
10
|
import { ScreenSpinnerSwapIcon } from "./ScreenSpinnerSwapIcon.js";
|
|
11
11
|
/**
|
|
12
12
|
* @see https://vkcom.github.io/VKUI/#/ScreenSpinner
|
|
13
|
-
*/ export const ScreenSpinner = ({ style, className, state = 'loading', onClick, cancelLabel, mode, label, customIcon, usePortal, ...restProps })=>{
|
|
13
|
+
*/ export const ScreenSpinner = ({ style, className, state = 'loading', onClick, cancelLabel, mode, label, customIcon, usePortal, visibilityDelay, ...restProps })=>{
|
|
14
14
|
useScrollLock();
|
|
15
15
|
return /*#__PURE__*/ _jsx(AppRootPortal, {
|
|
16
16
|
usePortal: usePortal,
|
|
@@ -24,6 +24,7 @@ import { ScreenSpinnerSwapIcon } from "./ScreenSpinnerSwapIcon.js";
|
|
|
24
24
|
mode: mode,
|
|
25
25
|
label: label,
|
|
26
26
|
customIcon: customIcon,
|
|
27
|
+
visibilityDelay: visibilityDelay,
|
|
27
28
|
children: [
|
|
28
29
|
/*#__PURE__*/ _jsx(ScreenSpinnerLoader, {
|
|
29
30
|
...restProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { defineComponentDisplayNames } from '../../lib/react/defineComponentDisplayNames';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { ScreenSpinnerContainer } from './ScreenSpinnerContainer';\nimport { ScreenSpinnerLoader } from './ScreenSpinnerLoader';\nimport { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';\nimport type { ScreenSpinnerProps } from './types';\n\nexport type { ScreenSpinnerProps };\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ScreenSpinner\n */\nexport const ScreenSpinner: React.FC<ScreenSpinnerProps> & {\n Container: typeof ScreenSpinnerContainer;\n Loader: typeof ScreenSpinnerLoader;\n SwapIcon: typeof ScreenSpinnerSwapIcon;\n} = ({\n style,\n className,\n state = 'loading',\n onClick,\n cancelLabel,\n mode,\n label,\n customIcon,\n usePortal,\n ...restProps\n}: ScreenSpinnerProps): React.ReactNode => {\n useScrollLock();\n\n return (\n <AppRootPortal usePortal={usePortal}>\n <PopoutWrapper className={className} style={style} noBackground strategy=\"fixed\">\n <ScreenSpinnerContainer
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ScreenSpinner/ScreenSpinner.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { defineComponentDisplayNames } from '../../lib/react/defineComponentDisplayNames';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport { useScrollLock } from '../AppRoot/ScrollContext';\nimport { PopoutWrapper } from '../PopoutWrapper/PopoutWrapper';\nimport { ScreenSpinnerContainer } from './ScreenSpinnerContainer';\nimport { ScreenSpinnerLoader } from './ScreenSpinnerLoader';\nimport { ScreenSpinnerSwapIcon } from './ScreenSpinnerSwapIcon';\nimport type { ScreenSpinnerProps } from './types';\n\nexport type { ScreenSpinnerProps };\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ScreenSpinner\n */\nexport const ScreenSpinner: React.FC<ScreenSpinnerProps> & {\n Container: typeof ScreenSpinnerContainer;\n Loader: typeof ScreenSpinnerLoader;\n SwapIcon: typeof ScreenSpinnerSwapIcon;\n} = ({\n style,\n className,\n state = 'loading',\n onClick,\n cancelLabel,\n mode,\n label,\n customIcon,\n usePortal,\n visibilityDelay,\n ...restProps\n}: ScreenSpinnerProps): React.ReactNode => {\n useScrollLock();\n\n return (\n <AppRootPortal usePortal={usePortal}>\n <PopoutWrapper className={className} style={style} noBackground strategy=\"fixed\">\n <ScreenSpinnerContainer\n state={state}\n mode={mode}\n label={label}\n customIcon={customIcon}\n visibilityDelay={visibilityDelay}\n >\n <ScreenSpinnerLoader {...restProps} />\n <ScreenSpinnerSwapIcon onClick={onClick} cancelLabel={cancelLabel} />\n </ScreenSpinnerContainer>\n </PopoutWrapper>\n </AppRootPortal>\n );\n};\n\nScreenSpinner.Container = ScreenSpinnerContainer;\nScreenSpinner.Loader = ScreenSpinnerLoader;\nScreenSpinner.SwapIcon = ScreenSpinnerSwapIcon;\n\nif (process.env.NODE_ENV !== 'production') {\n defineComponentDisplayNames(ScreenSpinner.Container, 'ScreenSpinner.Container');\n defineComponentDisplayNames(ScreenSpinner.Loader, 'ScreenSpinner.Loader');\n defineComponentDisplayNames(ScreenSpinner.SwapIcon, 'ScreenSpinner.SwapIcon');\n}\n"],"names":["React","defineComponentDisplayNames","AppRootPortal","useScrollLock","PopoutWrapper","ScreenSpinnerContainer","ScreenSpinnerLoader","ScreenSpinnerSwapIcon","ScreenSpinner","style","className","state","onClick","cancelLabel","mode","label","customIcon","usePortal","visibilityDelay","restProps","noBackground","strategy","Container","Loader","SwapIcon","process","env","NODE_ENV"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,2BAA2B,QAAQ,iDAA8C;AAC1F,SAASC,aAAa,QAAQ,8BAA2B;AACzD,SAASC,aAAa,QAAQ,8BAA2B;AACzD,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,sBAAsB,QAAQ,8BAA2B;AAClE,SAASC,mBAAmB,QAAQ,2BAAwB;AAC5D,SAASC,qBAAqB,QAAQ,6BAA0B;AAKhE;;CAEC,GACD,OAAO,MAAMC,gBAIT,CAAC,EACHC,KAAK,EACLC,SAAS,EACTC,QAAQ,SAAS,EACjBC,OAAO,EACPC,WAAW,EACXC,IAAI,EACJC,KAAK,EACLC,UAAU,EACVC,SAAS,EACTC,eAAe,EACf,GAAGC,WACgB;IACnBhB;IAEA,qBACE,KAACD;QAAce,WAAWA;kBACxB,cAAA,KAACb;YAAcM,WAAWA;YAAWD,OAAOA;YAAOW,YAAY;YAACC,UAAS;sBACvE,cAAA,MAAChB;gBACCM,OAAOA;gBACPG,MAAMA;gBACNC,OAAOA;gBACPC,YAAYA;gBACZE,iBAAiBA;;kCAEjB,KAACZ;wBAAqB,GAAGa,SAAS;;kCAClC,KAACZ;wBAAsBK,SAASA;wBAASC,aAAaA;;;;;;AAKhE,EAAE;AAEFL,cAAcc,SAAS,GAAGjB;AAC1BG,cAAce,MAAM,GAAGjB;AACvBE,cAAcgB,QAAQ,GAAGjB;AAEzB,IAAIkB,QAAQC,GAAG,CAACC,QAAQ,KAAK,cAAc;IACzC1B,4BAA4BO,cAAcc,SAAS,EAAE;IACrDrB,4BAA4BO,cAAce,MAAM,EAAE;IAClDtB,4BAA4BO,cAAcgB,QAAQ,EAAE;AACtD"}
|
|
@@ -4,6 +4,7 @@ import { RootComponent } from "../RootComponent/RootComponent.js";
|
|
|
4
4
|
import { Footnote } from "../Typography/Footnote/Footnote.js";
|
|
5
5
|
import { ScreenSpinnerContext } from "./context.js";
|
|
6
6
|
import styles from "./ScreenSpinner.module.css";
|
|
7
|
+
import stylesDelay from "../../styles/animationVisibilityDelay.module.css";
|
|
7
8
|
const stateClassNames = {
|
|
8
9
|
cancelable: styles.stateCancelable,
|
|
9
10
|
done: styles.stateDone,
|
|
@@ -14,7 +15,7 @@ const modeClassNames = {
|
|
|
14
15
|
shadow: styles.modeShadow,
|
|
15
16
|
overlay: styles.modeOverlay
|
|
16
17
|
};
|
|
17
|
-
export const ScreenSpinnerContainer = ({ state = 'loading', mode = 'shadow', customIcon, label, children, ...restProps })=>{
|
|
18
|
+
export const ScreenSpinnerContainer = ({ state = 'loading', mode = 'shadow', customIcon, label, children, visibilityDelay, ...restProps })=>{
|
|
18
19
|
return /*#__PURE__*/ _jsx(ScreenSpinnerContext.Provider, {
|
|
19
20
|
value: {
|
|
20
21
|
state,
|
|
@@ -22,7 +23,7 @@ export const ScreenSpinnerContainer = ({ state = 'loading', mode = 'shadow', cus
|
|
|
22
23
|
customIcon
|
|
23
24
|
},
|
|
24
25
|
children: /*#__PURE__*/ _jsxs(RootComponent, {
|
|
25
|
-
baseClassName: classNames(styles.host, modeClassNames[mode], state !== 'loading' && stateClassNames[state], hasReactNode(label) && styles.hasLabel),
|
|
26
|
+
baseClassName: classNames(styles.host, modeClassNames[mode], state !== 'loading' && stateClassNames[state], hasReactNode(label) && styles.hasLabel, visibilityDelay && stylesDelay.visibilityDelay),
|
|
26
27
|
...restProps,
|
|
27
28
|
children: [
|
|
28
29
|
/*#__PURE__*/ _jsx("div", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"sourcesContent":["import { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { ScreenSpinnerContext } from './context';\nimport { type ScreenSpinnerProps } from './types';\nimport styles from './ScreenSpinner.module.css';\n\nconst stateClassNames = {\n cancelable: styles.stateCancelable,\n done: styles.stateDone,\n error: styles.stateError,\n custom: styles.stateCustom,\n};\n\nconst modeClassNames = {\n shadow: styles.modeShadow,\n overlay: styles.modeOverlay,\n};\n\ntype ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> &\n Pick<ScreenSpinnerProps, 'state' | 'mode' | 'label' | 'customIcon'>;\n\nexport const ScreenSpinnerContainer = ({\n state = 'loading',\n mode = 'shadow',\n customIcon,\n label,\n children,\n ...restProps\n}: ScreenSpinnerContainerProps) => {\n return (\n <ScreenSpinnerContext.Provider value={{ state, label, customIcon }}>\n <RootComponent\n baseClassName={classNames(\n styles.host,\n modeClassNames[mode],\n state !== 'loading' && stateClassNames[state],\n hasReactNode(label) && styles.hasLabel,\n )}\n {...restProps}\n >\n <div className={styles.iconSlot}>{children}</div>\n {hasReactNode(label) && (\n <Footnote className={styles.label} aria-hidden>\n {label}\n </Footnote>\n )}\n </RootComponent>\n </ScreenSpinnerContext.Provider>\n );\n};\n"],"names":["classNames","hasReactNode","RootComponent","Footnote","ScreenSpinnerContext","styles","stateClassNames","cancelable","stateCancelable","done","stateDone","error","stateError","custom","stateCustom","modeClassNames","shadow","modeShadow","overlay","modeOverlay","ScreenSpinnerContainer","state","mode","customIcon","label","children","restProps","Provider","value","baseClassName","host","hasLabel","div","className","iconSlot","aria-hidden"],"mappings":";AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAE3D,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,oBAAoB,QAAQ,eAAY;AAEjD,OAAOC,YAAY,6BAA6B;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ScreenSpinner/ScreenSpinnerContainer.tsx"],"sourcesContent":["import { classNames, hasReactNode } from '@vkontakte/vkjs';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport { ScreenSpinnerContext } from './context';\nimport { type ScreenSpinnerProps } from './types';\nimport styles from './ScreenSpinner.module.css';\nimport stylesDelay from '../../styles/animationVisibilityDelay.module.css';\n\nconst stateClassNames = {\n cancelable: styles.stateCancelable,\n done: styles.stateDone,\n error: styles.stateError,\n custom: styles.stateCustom,\n};\n\nconst modeClassNames = {\n shadow: styles.modeShadow,\n overlay: styles.modeOverlay,\n};\n\ntype ScreenSpinnerContainerProps = HTMLAttributesWithRootRef<HTMLSpanElement> &\n Pick<ScreenSpinnerProps, 'state' | 'mode' | 'label' | 'customIcon' | 'visibilityDelay'>;\n\nexport const ScreenSpinnerContainer = ({\n state = 'loading',\n mode = 'shadow',\n customIcon,\n label,\n children,\n visibilityDelay,\n ...restProps\n}: ScreenSpinnerContainerProps) => {\n return (\n <ScreenSpinnerContext.Provider value={{ state, label, customIcon }}>\n <RootComponent\n baseClassName={classNames(\n styles.host,\n modeClassNames[mode],\n state !== 'loading' && stateClassNames[state],\n hasReactNode(label) && styles.hasLabel,\n visibilityDelay && stylesDelay.visibilityDelay,\n )}\n {...restProps}\n >\n <div className={styles.iconSlot}>{children}</div>\n {hasReactNode(label) && (\n <Footnote className={styles.label} aria-hidden>\n {label}\n </Footnote>\n )}\n </RootComponent>\n </ScreenSpinnerContext.Provider>\n );\n};\n"],"names":["classNames","hasReactNode","RootComponent","Footnote","ScreenSpinnerContext","styles","stylesDelay","stateClassNames","cancelable","stateCancelable","done","stateDone","error","stateError","custom","stateCustom","modeClassNames","shadow","modeShadow","overlay","modeOverlay","ScreenSpinnerContainer","state","mode","customIcon","label","children","visibilityDelay","restProps","Provider","value","baseClassName","host","hasLabel","div","className","iconSlot","aria-hidden"],"mappings":";AAAA,SAASA,UAAU,EAAEC,YAAY,QAAQ,kBAAkB;AAE3D,SAASC,aAAa,QAAQ,oCAAiC;AAC/D,SAASC,QAAQ,QAAQ,qCAAkC;AAC3D,SAASC,oBAAoB,QAAQ,eAAY;AAEjD,OAAOC,YAAY,6BAA6B;AAChD,OAAOC,iBAAiB,mDAAmD;AAE3E,MAAMC,kBAAkB;IACtBC,YAAYH,OAAOI,eAAe;IAClCC,MAAML,OAAOM,SAAS;IACtBC,OAAOP,OAAOQ,UAAU;IACxBC,QAAQT,OAAOU,WAAW;AAC5B;AAEA,MAAMC,iBAAiB;IACrBC,QAAQZ,OAAOa,UAAU;IACzBC,SAASd,OAAOe,WAAW;AAC7B;AAKA,OAAO,MAAMC,yBAAyB,CAAC,EACrCC,QAAQ,SAAS,EACjBC,OAAO,QAAQ,EACfC,UAAU,EACVC,KAAK,EACLC,QAAQ,EACRC,eAAe,EACf,GAAGC,WACyB;IAC5B,qBACE,KAACxB,qBAAqByB,QAAQ;QAACC,OAAO;YAAER;YAAOG;YAAOD;QAAW;kBAC/D,cAAA,MAACtB;YACC6B,eAAe/B,WACbK,OAAO2B,IAAI,EACXhB,cAAc,CAACO,KAAK,EACpBD,UAAU,aAAaf,eAAe,CAACe,MAAM,EAC7CrB,aAAawB,UAAUpB,OAAO4B,QAAQ,EACtCN,mBAAmBrB,YAAYqB,eAAe;YAE/C,GAAGC,SAAS;;8BAEb,KAACM;oBAAIC,WAAW9B,OAAO+B,QAAQ;8BAAGV;;gBACjCzB,aAAawB,wBACZ,KAACtB;oBAASgC,WAAW9B,OAAOoB,KAAK;oBAAEY,aAAW;8BAC3CZ;;;;;AAMb,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SelectionControl/SelectionControl.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport type { HasRootRef } from '../../types';\nimport { DEFAULT_ACTIVE_EFFECT_DELAY } from '../Clickable/useState';\nimport { Tappable, type
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SelectionControl/SelectionControl.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport type { HasRootRef } from '../../types';\nimport { DEFAULT_ACTIVE_EFFECT_DELAY } from '../Clickable/useState';\nimport { Tappable, type TappableOmitProps } from '../Tappable/Tappable';\nimport { SelectionControlLabel } from './SelectionControlLabel/SelectionControlLabel';\nimport styles from './SelectionControl.module.css';\n\nconst sizeYClassNames = {\n none: styles.sizeYNone,\n compact: styles.sizeYCompact,\n};\n\nexport interface SelectionControlProps\n extends React.ComponentProps<'label'>,\n HasRootRef<HTMLLabelElement>,\n Pick<\n TappableOmitProps,\n 'hoverMode' | 'activeMode' | 'hasHover' | 'hasActive' | 'focusVisibleMode' | 'disabled'\n > {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/SelectionControl\n */\nexport const SelectionControl = (restProps: SelectionControlProps): React.ReactNode => {\n const { sizeY = 'none' } = useAdaptivity();\n const platform = usePlatform();\n\n return (\n <Tappable\n Component=\"label\"\n baseClassName={classNames(styles.host, sizeY !== 'regular' && sizeYClassNames[sizeY])}\n activeEffectDelay={platform === 'ios' ? 100 : DEFAULT_ACTIVE_EFFECT_DELAY}\n {...restProps}\n />\n );\n};\n\nSelectionControl.Label = SelectionControlLabel;\n"],"names":["React","classNames","useAdaptivity","usePlatform","DEFAULT_ACTIVE_EFFECT_DELAY","Tappable","SelectionControlLabel","styles","sizeYClassNames","none","sizeYNone","compact","sizeYCompact","SelectionControl","restProps","sizeY","platform","Component","baseClassName","host","activeEffectDelay","Label"],"mappings":"AAAA;;AAEA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,aAAa,QAAQ,+BAA4B;AAC1D,SAASC,WAAW,QAAQ,6BAA0B;AAEtD,SAASC,2BAA2B,QAAQ,2BAAwB;AACpE,SAASC,QAAQ,QAAgC,0BAAuB;AACxE,SAASC,qBAAqB,QAAQ,mDAAgD;AACtF,OAAOC,YAAY,gCAAgC;AAEnD,MAAMC,kBAAkB;IACtBC,MAAMF,OAAOG,SAAS;IACtBC,SAASJ,OAAOK,YAAY;AAC9B;AAUA;;CAEC,GACD,OAAO,MAAMC,mBAAmB,CAACC;IAC/B,MAAM,EAAEC,QAAQ,MAAM,EAAE,GAAGb;IAC3B,MAAMc,WAAWb;IAEjB,qBACE,KAACE;QACCY,WAAU;QACVC,eAAejB,WAAWM,OAAOY,IAAI,EAAEJ,UAAU,aAAaP,eAAe,CAACO,MAAM;QACpFK,mBAAmBJ,aAAa,QAAQ,MAAMZ;QAC7C,GAAGU,SAAS;;AAGnB,EAAE;AAEFD,iBAAiBQ,KAAK,GAAGf"}
|