@vkontakte/vkui 4.19.0 → 4.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.cache/.eslintcache +1 -1
- package/.cache/.stylelintcache +1 -1
- package/.cache/.tsbuildinfo +493 -125
- package/.cache/ts/src/components/ActionSheet/types.d.ts +2 -2
- package/.cache/ts/src/components/Alert/Alert.d.ts +1 -0
- package/.cache/ts/src/components/AppRoot/AppRootContext.d.ts +1 -0
- package/.cache/ts/src/components/Avatar/Avatar.d.ts +2 -0
- package/.cache/ts/src/components/Cell/Cell.d.ts +11 -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/CustomSelect/CustomSelect.d.ts +0 -1
- package/.cache/ts/src/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/.cache/ts/src/components/FocusTrap/FocusTrap.d.ts +8 -0
- package/.cache/ts/src/components/FormField/FormField.d.ts +2 -3
- package/.cache/ts/src/components/FormItem/FormItem.d.ts +2 -3
- package/.cache/ts/src/components/FormLayout/FormLayout.d.ts +2 -4
- package/.cache/ts/src/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/.cache/ts/src/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/.cache/ts/src/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/.cache/ts/src/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/.cache/ts/src/components/Link/Link.d.ts +1 -2
- package/.cache/ts/src/components/ModalRoot/types.d.ts +0 -1
- package/.cache/ts/src/components/ModalRoot/useModalManager.d.ts +37 -0
- package/.cache/ts/src/components/PullToRefresh/PullToRefresh.d.ts +0 -1
- package/.cache/ts/src/components/Removable/Removable.d.ts +2 -1
- package/.cache/ts/src/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/.cache/ts/src/components/SplitCol/SplitCol.d.ts +3 -3
- package/.cache/ts/src/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/.cache/ts/src/components/Switch/Switch.d.ts +2 -3
- package/.cache/ts/src/components/Tappable/Tappable.d.ts +2 -3
- package/.cache/ts/src/components/Touch/Touch.d.ts +16 -17
- package/.cache/ts/src/components/Typography/Caption/Caption.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Headline/Headline.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/.cache/ts/src/components/Typography/Text/Text.d.ts +2 -3
- package/.cache/ts/src/components/Typography/Title/Title.d.ts +2 -2
- package/.cache/ts/src/components/View/utils.d.ts +2 -0
- package/.cache/ts/src/index.d.ts +4 -0
- package/.cache/ts/src/lib/accessibility.d.ts +4 -2
- package/.cache/ts/src/lib/is.d.ts +1 -0
- package/.cache/ts/src/lib/supportEvents.d.ts +3 -1
- package/.cache/ts/src/testing/utils.d.ts +2 -0
- package/.cache/ts/src/types.d.ts +3 -0
- package/dist/cjs/components/ActionSheet/ActionSheet.js +13 -12
- package/dist/cjs/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js +3 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js +10 -5
- package/dist/cjs/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cjs/components/ActionSheet/types.d.ts +2 -2
- package/dist/cjs/components/Alert/Alert.d.ts +1 -0
- package/dist/cjs/components/Alert/Alert.js +12 -3
- package/dist/cjs/components/Alert/Alert.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRoot.js +2 -1
- package/dist/cjs/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cjs/components/AppRoot/AppRootContext.d.ts +1 -0
- package/dist/cjs/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cjs/components/Avatar/Avatar.d.ts +2 -0
- package/dist/cjs/components/Avatar/Avatar.js +7 -3
- package/dist/cjs/components/Avatar/Avatar.js.map +1 -1
- package/dist/cjs/components/Banner/Banner.js.map +1 -1
- package/dist/cjs/components/Button/Button.js.map +1 -1
- package/dist/cjs/components/Cell/Cell.d.ts +11 -0
- package/dist/cjs/components/Cell/Cell.js +109 -182
- package/dist/cjs/components/Cell/Cell.js.map +1 -1
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js +50 -0
- package/dist/cjs/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js +53 -0
- package/dist/cjs/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cjs/components/Cell/useDraggable.d.ts +13 -0
- package/dist/cjs/components/Cell/useDraggable.js +140 -0
- package/dist/cjs/components/Cell/useDraggable.js.map +1 -0
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/Counter/Counter.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +6 -4
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.js +6 -4
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js +37 -0
- package/dist/cjs/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +8 -0
- package/dist/cjs/components/FocusTrap/FocusTrap.js +165 -0
- package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -0
- package/dist/cjs/components/FormField/FormField.d.ts +2 -3
- package/dist/cjs/components/FormField/FormField.js.map +1 -1
- package/dist/cjs/components/FormItem/FormItem.d.ts +2 -3
- package/dist/cjs/components/FormItem/FormItem.js.map +1 -1
- package/dist/cjs/components/FormLayout/FormLayout.d.ts +2 -4
- package/dist/cjs/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cjs/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cjs/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js +61 -0
- package/dist/cjs/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cjs/components/Header/Header.js.map +1 -1
- package/dist/cjs/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/dist/cjs/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +10 -13
- package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js +64 -0
- package/dist/cjs/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cjs/components/Link/Link.d.ts +1 -2
- package/dist/cjs/components/Link/Link.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +184 -368
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/cjs/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js +74 -244
- package/dist/cjs/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cjs/components/ModalRoot/types.d.ts +0 -1
- package/dist/cjs/components/ModalRoot/types.js.map +1 -1
- package/dist/cjs/components/ModalRoot/useModalManager.d.ts +37 -0
- package/dist/cjs/components/ModalRoot/useModalManager.js +213 -0
- package/dist/cjs/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/cjs/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cjs/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.d.ts +0 -1
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js +34 -25
- package/dist/cjs/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cjs/components/Removable/Removable.d.ts +2 -1
- package/dist/cjs/components/Removable/Removable.js +75 -66
- package/dist/cjs/components/Removable/Removable.js.map +1 -1
- package/dist/cjs/components/Root/Root.js +1 -0
- package/dist/cjs/components/Root/Root.js.map +1 -1
- package/dist/cjs/components/Search/Search.js +1 -1
- package/dist/cjs/components/Search/Search.js.map +1 -1
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cjs/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cjs/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/cjs/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cjs/components/SplitCol/SplitCol.d.ts +3 -3
- package/dist/cjs/components/SplitCol/SplitCol.js +2 -4
- package/dist/cjs/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/cjs/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cjs/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.d.ts +2 -3
- package/dist/cjs/components/Switch/Switch.js +18 -8
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/Tappable/Tappable.d.ts +2 -3
- package/dist/cjs/components/Tappable/Tappable.js.map +1 -1
- package/dist/cjs/components/Textarea/Textarea.js +9 -7
- package/dist/cjs/components/Textarea/Textarea.js.map +1 -1
- package/dist/cjs/components/Touch/Touch.d.ts +16 -17
- package/dist/cjs/components/Touch/Touch.js +34 -14
- package/dist/cjs/components/Touch/Touch.js.map +1 -1
- package/dist/cjs/components/Typography/Caption/Caption.d.ts +2 -2
- package/dist/cjs/components/Typography/Caption/Caption.js +4 -2
- package/dist/cjs/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cjs/components/Typography/Headline/Headline.d.ts +2 -2
- package/dist/cjs/components/Typography/Headline/Headline.js +2 -1
- package/dist/cjs/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/dist/cjs/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/cjs/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cjs/components/Typography/Text/Text.d.ts +2 -3
- package/dist/cjs/components/Typography/Text/Text.js +2 -1
- package/dist/cjs/components/Typography/Text/Text.js.map +1 -1
- package/dist/cjs/components/Typography/Title/Title.d.ts +2 -2
- package/dist/cjs/components/Typography/Title/Title.js +9 -4
- package/dist/cjs/components/Typography/Title/Title.js.map +1 -1
- package/dist/cjs/components/View/View.js +68 -75
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/View/ViewInfinite.js +78 -85
- package/dist/cjs/components/View/ViewInfinite.js.map +1 -1
- package/dist/cjs/components/View/utils.d.ts +2 -0
- package/dist/cjs/components/View/utils.js +13 -0
- package/dist/cjs/components/View/utils.js.map +1 -0
- package/dist/cjs/index.d.ts +4 -0
- package/dist/cjs/index.js +16 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/accessibility.d.ts +4 -2
- package/dist/cjs/lib/accessibility.js +8 -1
- package/dist/cjs/lib/accessibility.js.map +1 -1
- package/dist/cjs/lib/is.d.ts +1 -0
- package/dist/cjs/lib/is.js +13 -0
- package/dist/cjs/lib/is.js.map +1 -0
- package/dist/cjs/lib/prefixClass.js +7 -6
- package/dist/cjs/lib/prefixClass.js.map +1 -1
- package/dist/cjs/lib/supportEvents.d.ts +3 -1
- package/dist/cjs/lib/supportEvents.js +1 -4
- package/dist/cjs/lib/supportEvents.js.map +1 -1
- package/dist/cjs/types.d.ts +3 -0
- package/dist/components/ActionSheet/ActionSheet.js +12 -12
- package/dist/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdown.js +2 -1
- package/dist/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js +9 -5
- package/dist/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/components/ActionSheet/types.d.ts +2 -2
- package/dist/components/Alert/Alert.d.ts +1 -0
- package/dist/components/Alert/Alert.js +11 -3
- package/dist/components/Alert/Alert.js.map +1 -1
- package/dist/components/AppRoot/AppRoot.js +2 -1
- package/dist/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/components/AppRoot/AppRootContext.d.ts +1 -0
- package/dist/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/components/Avatar/Avatar.d.ts +2 -0
- package/dist/components/Avatar/Avatar.js +4 -2
- package/dist/components/Avatar/Avatar.js.map +1 -1
- package/dist/components/Banner/Banner.js.map +1 -1
- package/dist/components/Button/Button.js.map +1 -1
- package/dist/components/Cell/Cell.d.ts +11 -0
- package/dist/components/Cell/Cell.js +103 -177
- package/dist/components/Cell/Cell.js.map +1 -1
- package/dist/components/Cell/CellCheckbox/CellCheckbox.d.ts +5 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js +31 -0
- package/dist/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/components/Cell/CellDragger/CellDragger.d.ts +6 -0
- package/dist/components/Cell/CellDragger/CellDragger.js +30 -0
- package/dist/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/components/Cell/useDraggable.d.ts +13 -0
- package/dist/components/Cell/useDraggable.js +125 -0
- package/dist/components/Cell/useDraggable.js.map +1 -0
- package/dist/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/Counter/Counter.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts +0 -1
- package/dist/components/CustomSelect/CustomSelect.js +6 -6
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +6 -4
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DropdownIcon/DropdownIcon.d.ts +3 -0
- package/dist/components/DropdownIcon/DropdownIcon.js +19 -0
- package/dist/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/components/FocusTrap/FocusTrap.d.ts +8 -0
- package/dist/components/FocusTrap/FocusTrap.js +138 -0
- package/dist/components/FocusTrap/FocusTrap.js.map +1 -0
- package/dist/components/FormField/FormField.d.ts +2 -3
- package/dist/components/FormField/FormField.js.map +1 -1
- package/dist/components/FormItem/FormItem.d.ts +2 -3
- package/dist/components/FormItem/FormItem.js.map +1 -1
- package/dist/components/FormLayout/FormLayout.d.ts +2 -4
- package/dist/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/components/GridAvatar/GridAvatar.d.ts +9 -0
- package/dist/components/GridAvatar/GridAvatar.js +41 -0
- package/dist/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/components/Header/Header.js.map +1 -1
- package/dist/components/HorizontalCell/HorizontalCell.d.ts +2 -3
- package/dist/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/components/HorizontalScroll/HorizontalScroll.d.ts +3 -2
- package/dist/components/HorizontalScroll/HorizontalScroll.js +10 -12
- package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/components/InitialsAvatar/InitialsAvatar.d.ts +33 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js +46 -0
- package/dist/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/components/Link/Link.d.ts +1 -2
- package/dist/components/Link/Link.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +181 -371
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/components/ModalRoot/ModalRootDesktop.js +72 -248
- package/dist/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/components/ModalRoot/types.d.ts +0 -1
- package/dist/components/ModalRoot/types.js.map +1 -1
- package/dist/components/ModalRoot/useModalManager.d.ts +37 -0
- package/dist/components/ModalRoot/useModalManager.js +189 -0
- package/dist/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/components/PullToRefresh/PullToRefresh.d.ts +0 -1
- package/dist/components/PullToRefresh/PullToRefresh.js +35 -25
- package/dist/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/components/Removable/Removable.d.ts +2 -1
- package/dist/components/Removable/Removable.js +73 -64
- package/dist/components/Removable/Removable.js.map +1 -1
- package/dist/components/Root/Root.js +1 -0
- package/dist/components/Root/Root.js.map +1 -1
- package/dist/components/Search/Search.js +1 -1
- package/dist/components/Search/Search.js.map +1 -1
- package/dist/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/components/SimpleCell/SimpleCell.d.ts +2 -2
- package/dist/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/components/SplitCol/SplitCol.d.ts +3 -3
- package/dist/components/SplitCol/SplitCol.js +2 -4
- package/dist/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.d.ts +2 -1
- package/dist/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +2 -3
- package/dist/components/Switch/Switch.js +15 -8
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/Tappable/Tappable.d.ts +2 -3
- package/dist/components/Tappable/Tappable.js.map +1 -1
- package/dist/components/Textarea/Textarea.js +9 -6
- package/dist/components/Textarea/Textarea.js.map +1 -1
- package/dist/components/Touch/Touch.d.ts +16 -17
- package/dist/components/Touch/Touch.js +34 -14
- package/dist/components/Touch/Touch.js.map +1 -1
- package/dist/components/Typography/Caption/Caption.d.ts +2 -2
- package/dist/components/Typography/Caption/Caption.js +4 -2
- package/dist/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/components/Typography/Headline/Headline.d.ts +2 -2
- package/dist/components/Typography/Headline/Headline.js +2 -1
- package/dist/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/components/Typography/Subhead/Subhead.d.ts +2 -2
- package/dist/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/components/Typography/Text/Text.d.ts +2 -3
- package/dist/components/Typography/Text/Text.js +2 -1
- package/dist/components/Typography/Text/Text.js.map +1 -1
- package/dist/components/Typography/Title/Title.d.ts +2 -2
- package/dist/components/Typography/Title/Title.js +9 -4
- package/dist/components/Typography/Title/Title.js.map +1 -1
- package/dist/components/View/View.js +67 -75
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/View/ViewInfinite.js +79 -87
- package/dist/components/View/ViewInfinite.js.map +1 -1
- package/dist/components/View/utils.d.ts +2 -0
- package/dist/components/View/utils.js +6 -0
- package/dist/components/View/utils.js.map +1 -0
- package/dist/components.css +1 -1
- package/dist/components.css.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheet.js +12 -12
- package/dist/cssm/components/ActionSheet/ActionSheet.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js +2 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdown.js.map +1 -1
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js +9 -5
- package/dist/cssm/components/ActionSheet/ActionSheetDropdownDesktop.js.map +1 -1
- package/dist/cssm/components/Alert/Alert.js +11 -3
- package/dist/cssm/components/Alert/Alert.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRoot.js +2 -1
- package/dist/cssm/components/AppRoot/AppRoot.js.map +1 -1
- package/dist/cssm/components/AppRoot/AppRootContext.js.map +1 -1
- package/dist/cssm/components/Avatar/Avatar.js +4 -2
- package/dist/cssm/components/Avatar/Avatar.js.map +1 -1
- package/dist/cssm/components/Banner/Banner.js.map +1 -1
- package/dist/cssm/components/Button/Button.css +1 -1
- package/dist/cssm/components/Button/Button.js.map +1 -1
- package/dist/cssm/components/Cell/Cell.css +1 -1
- package/dist/cssm/components/Cell/Cell.js +103 -177
- package/dist/cssm/components/Cell/Cell.js.map +1 -1
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.css +1 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js +32 -0
- package/dist/cssm/components/Cell/CellCheckbox/CellCheckbox.js.map +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.css +1 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js +31 -0
- package/dist/cssm/components/Cell/CellDragger/CellDragger.js.map +1 -0
- package/dist/cssm/components/Cell/useDraggable.js +125 -0
- package/dist/cssm/components/Cell/useDraggable.js.map +1 -0
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +2 -2
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/Counter/Counter.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -6
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/DatePicker/DatePicker.js +6 -4
- package/dist/cssm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cssm/components/DropdownIcon/DropdownIcon.css +1 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js +20 -0
- package/dist/cssm/components/DropdownIcon/DropdownIcon.js.map +1 -0
- package/dist/cssm/components/FocusTrap/FocusTrap.js +138 -0
- package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -0
- package/dist/cssm/components/FocusVisible/FocusVisible.css +1 -1
- package/dist/cssm/components/FormField/FormField.css +1 -1
- package/dist/cssm/components/FormField/FormField.js.map +1 -1
- package/dist/cssm/components/FormItem/FormItem.css +1 -1
- package/dist/cssm/components/FormItem/FormItem.js.map +1 -1
- package/dist/cssm/components/FormLayout/FormLayout.js.map +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.css +1 -1
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js +1 -0
- package/dist/cssm/components/FormLayoutGroup/FormLayoutGroup.js.map +1 -1
- package/dist/cssm/components/Gallery/Gallery.css +1 -1
- package/dist/cssm/components/GridAvatar/GridAvatar.css +1 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js +42 -0
- package/dist/cssm/components/GridAvatar/GridAvatar.js.map +1 -0
- package/dist/cssm/components/Header/Header.js.map +1 -1
- package/dist/cssm/components/HorizontalCell/HorizontalCell.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +10 -12
- package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
- package/dist/cssm/components/HorizontalScroll/HorizontalScrollArrow.css +1 -1
- package/dist/cssm/components/IconButton/IconButton.css +1 -1
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.css +1 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js +52 -0
- package/dist/cssm/components/InitialsAvatar/InitialsAvatar.js.map +1 -0
- package/dist/cssm/components/Link/Link.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +181 -371
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootContext.js +0 -3
- package/dist/cssm/components/ModalRoot/ModalRootContext.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js +72 -248
- package/dist/cssm/components/ModalRoot/ModalRootDesktop.js.map +1 -1
- package/dist/cssm/components/ModalRoot/types.js.map +1 -1
- package/dist/cssm/components/ModalRoot/useModalManager.js +189 -0
- package/dist/cssm/components/ModalRoot/useModalManager.js.map +1 -0
- package/dist/cssm/components/NativeSelect/NativeSelect.js +2 -2
- package/dist/cssm/components/NativeSelect/NativeSelect.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js +35 -25
- package/dist/cssm/components/PullToRefresh/PullToRefresh.js.map +1 -1
- package/dist/cssm/components/Removable/Removable.css +1 -1
- package/dist/cssm/components/Removable/Removable.js +73 -64
- package/dist/cssm/components/Removable/Removable.js.map +1 -1
- package/dist/cssm/components/Root/Root.css +1 -1
- package/dist/cssm/components/Root/Root.js +1 -0
- package/dist/cssm/components/Root/Root.js.map +1 -1
- package/dist/cssm/components/Search/Search.css +1 -1
- package/dist/cssm/components/Search/Search.js +1 -1
- package/dist/cssm/components/Search/Search.js.map +1 -1
- package/dist/cssm/components/Select/Select.css +1 -1
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js +2 -2
- package/dist/cssm/components/SelectMimicry/SelectMimicry.js.map +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.css +1 -1
- package/dist/cssm/components/SimpleCell/SimpleCell.js.map +1 -1
- package/dist/cssm/components/SplitCol/SplitCol.js +2 -4
- package/dist/cssm/components/SplitCol/SplitCol.js.map +1 -1
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js +38 -11
- package/dist/cssm/components/SubnavigationBar/SubnavigationBar.js.map +1 -1
- package/dist/cssm/components/SubnavigationButton/SubnavigationButton.js.map +1 -1
- package/dist/cssm/components/Switch/Switch.css +1 -1
- package/dist/cssm/components/Switch/Switch.js +15 -8
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/Tappable/Tappable.js.map +1 -1
- package/dist/cssm/components/Textarea/Textarea.js +9 -6
- package/dist/cssm/components/Textarea/Textarea.js.map +1 -1
- package/dist/cssm/components/Touch/Touch.js +34 -14
- package/dist/cssm/components/Touch/Touch.js.map +1 -1
- package/dist/cssm/components/Typography/Caption/Caption.js +4 -2
- package/dist/cssm/components/Typography/Caption/Caption.js.map +1 -1
- package/dist/cssm/components/Typography/Headline/Headline.js +2 -1
- package/dist/cssm/components/Typography/Headline/Headline.js.map +1 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js +2 -1
- package/dist/cssm/components/Typography/Subhead/Subhead.js.map +1 -1
- package/dist/cssm/components/Typography/Text/Text.js +2 -1
- package/dist/cssm/components/Typography/Text/Text.js.map +1 -1
- package/dist/cssm/components/Typography/Title/Title.js +9 -4
- package/dist/cssm/components/Typography/Title/Title.js.map +1 -1
- package/dist/cssm/components/View/View.js +67 -75
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/View/ViewInfinite.js +79 -87
- package/dist/cssm/components/View/ViewInfinite.js.map +1 -1
- package/dist/cssm/components/View/utils.js +6 -0
- package/dist/cssm/components/View/utils.js.map +1 -0
- package/dist/cssm/index.js +2 -0
- package/dist/cssm/index.js.map +1 -1
- package/dist/cssm/lib/accessibility.js +6 -0
- package/dist/cssm/lib/accessibility.js.map +1 -1
- package/dist/cssm/lib/is.js +6 -0
- package/dist/cssm/lib/is.js.map +1 -0
- package/dist/cssm/lib/prefixClass.js +7 -6
- package/dist/cssm/lib/prefixClass.js.map +1 -1
- package/dist/cssm/lib/supportEvents.js +1 -4
- package/dist/cssm/lib/supportEvents.js.map +1 -1
- package/dist/cssm/styles/components.css +1 -1
- package/dist/cssm/styles/themes.css +1 -1
- package/dist/cssm/styles/vkcom_light.css +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/accessibility.d.ts +4 -2
- package/dist/lib/accessibility.js +6 -0
- package/dist/lib/accessibility.js.map +1 -1
- package/dist/lib/is.d.ts +1 -0
- package/dist/lib/is.js +6 -0
- package/dist/lib/is.js.map +1 -0
- package/dist/lib/prefixClass.js +7 -6
- package/dist/lib/prefixClass.js.map +1 -1
- package/dist/lib/supportEvents.d.ts +3 -1
- package/dist/lib/supportEvents.js +1 -4
- package/dist/lib/supportEvents.js.map +1 -1
- package/dist/types.d.ts +3 -0
- package/dist/vkui.css +2 -2
- package/dist/vkui.css.map +1 -1
- package/package.json +8 -4
- package/src/components/ActionSheet/ActionSheet.tsx +9 -7
- package/src/components/ActionSheet/ActionSheetDropdown.tsx +3 -2
- package/src/components/ActionSheet/ActionSheetDropdownDesktop.tsx +9 -5
- package/src/components/ActionSheet/Readme.md +18 -14
- package/src/components/ActionSheet/types.ts +2 -2
- package/src/components/Alert/Alert.tsx +11 -4
- package/src/components/Alert/Readme.md +15 -11
- package/src/components/AppRoot/AppRoot.tsx +1 -0
- package/src/components/AppRoot/AppRootContext.ts +1 -0
- package/src/components/Avatar/Avatar.tsx +5 -2
- package/src/components/Banner/Banner.tsx +4 -5
- package/src/components/Button/Button.css +26 -53
- package/src/components/Button/Button.tsx +2 -3
- package/src/components/Card/Readme.md +6 -6
- package/src/components/Cell/Cell.css +21 -58
- package/src/components/Cell/Cell.tsx +101 -162
- package/src/components/Cell/CellCheckbox/CellCheckbox.css +17 -0
- package/src/components/Cell/CellCheckbox/CellCheckbox.tsx +42 -0
- package/src/components/Cell/CellDragger/CellDragger.css +4 -0
- package/src/components/Cell/CellDragger/CellDragger.tsx +40 -0
- package/src/components/Cell/Readme.md +89 -51
- package/src/components/Cell/useDraggable.tsx +112 -0
- package/src/components/ChipsSelect/ChipsSelect.tsx +2 -2
- package/src/components/Counter/Counter.tsx +2 -2
- package/src/components/CustomSelect/CustomSelect.tsx +6 -5
- package/src/components/DatePicker/DatePicker.tsx +5 -5
- package/src/components/DropdownIcon/DropdownIcon.css +3 -0
- package/src/components/DropdownIcon/DropdownIcon.tsx +20 -0
- package/src/components/Epic/Readme.md +1 -1
- package/src/components/FocusTrap/FocusTrap.tsx +125 -0
- package/src/components/FocusVisible/FocusVisible.css +12 -4
- package/src/components/FormField/FormField.css +0 -1
- package/src/components/FormField/FormField.tsx +2 -2
- package/src/components/FormItem/FormItem.css +13 -14
- package/src/components/FormItem/FormItem.tsx +2 -3
- package/src/components/FormLayout/FormLayout.tsx +2 -4
- package/src/components/FormLayoutGroup/FormLayoutGroup.css +11 -7
- package/src/components/FormLayoutGroup/FormLayoutGroup.tsx +10 -1
- package/src/components/Gallery/Gallery.css +2 -3
- package/src/components/Gallery/Readme.md +89 -109
- package/src/components/GridAvatar/GridAvatar.css +37 -0
- package/src/components/GridAvatar/GridAvatar.tsx +55 -0
- package/src/components/GridAvatar/Readme.md +12 -0
- package/src/components/Group/Readme.md +18 -14
- package/src/components/Header/Header.tsx +4 -4
- package/src/components/HorizontalCell/HorizontalCell.tsx +3 -3
- package/src/components/HorizontalScroll/HorizontalScroll.tsx +14 -18
- package/src/components/HorizontalScroll/HorizontalScrollArrow.css +2 -2
- package/src/components/IconButton/IconButton.css +7 -0
- package/src/components/InitialsAvatar/InitialsAvatar.css +53 -0
- package/src/components/InitialsAvatar/InitialsAvatar.tsx +90 -0
- package/src/components/InitialsAvatar/Readme.md +14 -0
- package/src/components/Link/Link.tsx +1 -1
- package/src/components/MiniInfoCell/Readme.md +66 -62
- package/src/components/ModalDismissButton/Readme.md +13 -10
- package/src/components/ModalRoot/ModalRoot.tsx +170 -344
- package/src/components/ModalRoot/ModalRootContext.tsx +0 -1
- package/src/components/ModalRoot/ModalRootDesktop.tsx +62 -243
- package/src/components/ModalRoot/Readme.md +35 -27
- package/src/components/ModalRoot/types.ts +0 -1
- package/src/components/ModalRoot/useModalManager.tsx +174 -0
- package/src/components/NativeSelect/NativeSelect.tsx +2 -2
- package/src/components/PullToRefresh/PullToRefresh.tsx +30 -25
- package/src/components/Removable/Removable.css +16 -63
- package/src/components/Removable/Removable.tsx +84 -64
- package/src/components/Root/Root.css +5 -0
- package/src/components/Root/Root.tsx +4 -1
- package/src/components/ScreenSpinner/Readme.md +13 -9
- package/src/components/Search/Search.css +1 -1
- package/src/components/Search/Search.tsx +3 -3
- package/src/components/Select/Select.css +1 -1
- package/src/components/SelectMimicry/SelectMimicry.tsx +2 -2
- package/src/components/SimpleCell/SimpleCell.css +10 -18
- package/src/components/SimpleCell/SimpleCell.tsx +3 -5
- package/src/components/SplitCol/SplitCol.tsx +4 -8
- package/src/components/SplitLayout/Readme.md +2 -2
- package/src/components/SubnavigationBar/Readme.md +90 -86
- package/src/components/SubnavigationBar/SubnavigationBar.tsx +32 -14
- package/src/components/SubnavigationButton/SubnavigationButton.tsx +2 -3
- package/src/components/Switch/Readme.md +6 -6
- package/src/components/Switch/Switch.css +46 -15
- package/src/components/Switch/Switch.tsx +16 -8
- package/src/components/Tappable/Tappable.tsx +2 -3
- package/src/components/Textarea/Readme.md +3 -0
- package/src/components/Textarea/Textarea.tsx +10 -6
- package/src/components/Touch/Touch.tsx +51 -31
- package/src/components/Typography/Caption/Caption.tsx +4 -4
- package/src/components/Typography/Headline/Headline.tsx +3 -3
- package/src/components/Typography/Subhead/Subhead.tsx +3 -3
- package/src/components/Typography/Text/Text.tsx +3 -4
- package/src/components/Typography/Title/Title.tsx +9 -5
- package/src/components/View/Readme.md +42 -56
- package/src/components/View/View.tsx +46 -61
- package/src/components/View/ViewInfinite.tsx +52 -67
- package/src/components/View/utils.ts +8 -0
- package/src/index.ts +4 -0
- package/src/lib/accessibility.ts +22 -2
- package/src/lib/is.ts +10 -0
- package/src/lib/prefixClass.ts +9 -6
- package/src/lib/supportEvents.ts +1 -4
- package/src/styles/components.css +4 -0
- package/src/styles/vkcom_light.css +3 -3
- package/src/testing/utils.tsx +41 -0
- package/src/types.ts +4 -0
|
@@ -21,25 +21,52 @@ var _getClassName = require("../../helpers/getClassName");
|
|
|
21
21
|
|
|
22
22
|
var _HorizontalScroll = _interopRequireDefault(require("../HorizontalScroll/HorizontalScroll"));
|
|
23
23
|
|
|
24
|
-
var _excluded = ["mode", "children"];
|
|
24
|
+
var _excluded = ["mode", "children", "showArrows", "getScrollToLeft", "getScrollToRight", "scrollAnimationDuration"];
|
|
25
25
|
|
|
26
|
-
var
|
|
26
|
+
var defaultScrollToLeft = function defaultScrollToLeft(x) {
|
|
27
|
+
return x - 240;
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
var defaultScrollToRight = function defaultScrollToRight(x) {
|
|
31
|
+
return x + 240;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
var SubnavigationBar = function SubnavigationBar(_ref) {
|
|
35
|
+
var _ref$mode = _ref.mode,
|
|
36
|
+
mode = _ref$mode === void 0 ? 'overflow' : _ref$mode,
|
|
37
|
+
children = _ref.children,
|
|
38
|
+
_ref$showArrows = _ref.showArrows,
|
|
39
|
+
showArrows = _ref$showArrows === void 0 ? true : _ref$showArrows,
|
|
40
|
+
_ref$getScrollToLeft = _ref.getScrollToLeft,
|
|
41
|
+
getScrollToLeft = _ref$getScrollToLeft === void 0 ? defaultScrollToLeft : _ref$getScrollToLeft,
|
|
42
|
+
_ref$getScrollToRight = _ref.getScrollToRight,
|
|
43
|
+
getScrollToRight = _ref$getScrollToRight === void 0 ? defaultScrollToRight : _ref$getScrollToRight,
|
|
44
|
+
scrollAnimationDuration = _ref.scrollAnimationDuration,
|
|
45
|
+
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
27
46
|
var platform = (0, _usePlatform.usePlatform)();
|
|
28
|
-
var
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
47
|
+
var ScrollWrapper;
|
|
48
|
+
var scrollWrapperProps = {};
|
|
49
|
+
|
|
50
|
+
if (mode === 'fixed') {
|
|
51
|
+
ScrollWrapper = 'div';
|
|
52
|
+
} else {
|
|
53
|
+
ScrollWrapper = _HorizontalScroll.default;
|
|
54
|
+
scrollWrapperProps = {
|
|
55
|
+
showArrows: showArrows,
|
|
56
|
+
getScrollToLeft: getScrollToLeft,
|
|
57
|
+
getScrollToRight: getScrollToRight,
|
|
58
|
+
scrollAnimationDuration: scrollAnimationDuration
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
32
62
|
return (0, _jsxRuntime.createScopedElement)("div", (0, _extends2.default)({}, restProps, {
|
|
33
63
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('SubnavigationBar', platform), "SubnavigationBar--".concat(mode))
|
|
34
|
-
}), (0, _jsxRuntime.createScopedElement)(ScrollWrapper, {
|
|
64
|
+
}), (0, _jsxRuntime.createScopedElement)(ScrollWrapper, (0, _extends2.default)({
|
|
35
65
|
vkuiClass: "SubnavigationBar__in"
|
|
36
|
-
}, (0, _jsxRuntime.createScopedElement)("div", {
|
|
66
|
+
}, scrollWrapperProps), (0, _jsxRuntime.createScopedElement)("div", {
|
|
37
67
|
vkuiClass: "SubnavigationBar__scrollIn"
|
|
38
68
|
}, children)));
|
|
39
69
|
};
|
|
40
70
|
|
|
41
71
|
exports.SubnavigationBar = SubnavigationBar;
|
|
42
|
-
SubnavigationBar.defaultProps = {
|
|
43
|
-
mode: 'overflow'
|
|
44
|
-
};
|
|
45
72
|
//# sourceMappingURL=SubnavigationBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SubnavigationBar/SubnavigationBar.tsx"],"names":["
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SubnavigationBar/SubnavigationBar.tsx"],"names":["defaultScrollToLeft","x","defaultScrollToRight","SubnavigationBar","mode","children","showArrows","getScrollToLeft","getScrollToRight","scrollAnimationDuration","restProps","platform","ScrollWrapper","scrollWrapperProps","HorizontalScroll"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AACA;;;;AASA,IAAMA,mBAA0C,GAAG,SAA7CA,mBAA6C,CAACC,CAAD;AAAA,SAAOA,CAAC,GAAG,GAAX;AAAA,CAAnD;;AAEA,IAAMC,oBAA2C,GAAG,SAA9CA,oBAA8C,CAACD,CAAD;AAAA,SAAOA,CAAC,GAAG,GAAX;AAAA,CAApD;;AAEO,IAAME,gBAAiD,GAAG,SAApDA,gBAAoD,OAQpC;AAAA,uBAP3BC,IAO2B;AAAA,MAP3BA,IAO2B,0BAPpB,UAOoB;AAAA,MAN3BC,QAM2B,QAN3BA,QAM2B;AAAA,6BAL3BC,UAK2B;AAAA,MAL3BA,UAK2B,gCALd,IAKc;AAAA,kCAJ3BC,eAI2B;AAAA,MAJ3BA,eAI2B,qCAJTP,mBAIS;AAAA,mCAH3BQ,gBAG2B;AAAA,MAH3BA,gBAG2B,sCAHRN,oBAGQ;AAAA,MAF3BO,uBAE2B,QAF3BA,uBAE2B;AAAA,MADxBC,SACwB;AAC3B,MAAMC,QAAQ,GAAG,+BAAjB;AAEA,MAAIC,aAAJ;AACA,MAAIC,kBAAkB,GAAG,EAAzB;;AAEA,MAAIT,IAAI,KAAK,OAAb,EAAsB;AACpBQ,IAAAA,aAAa,GAAG,KAAhB;AACD,GAFD,MAEO;AACLA,IAAAA,aAAa,GAAGE,yBAAhB;AACAD,IAAAA,kBAAkB,GAAG;AACnBP,MAAAA,UAAU,EAAVA,UADmB;AAEnBC,MAAAA,eAAe,EAAfA,eAFmB;AAGnBC,MAAAA,gBAAgB,EAAhBA,gBAHmB;AAInBC,MAAAA,uBAAuB,EAAvBA;AAJmB,KAArB;AAMD;;AAED,SACE,uEACMC,SADN;AAEE,IAAA,SAAS,EAAE,4BAAW,gCAAa,kBAAb,EAAiCC,QAAjC,CAAX,8BAA4EP,IAA5E;AAFb,MAIE,qCAAC,aAAD;AAAe,IAAA,SAAS,EAAC;AAAzB,KAAoDS,kBAApD,GACE;AAAK,IAAA,SAAS,EAAC;AAAf,KACGR,QADH,CADF,CAJF,CADF;AAYD,CAtCM","sourcesContent":["import * as React from 'react';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport HorizontalScroll, { HorizontalScrollProps, ScrollPositionHandler } from '../HorizontalScroll/HorizontalScroll';\nimport './SubnavigationBar.css';\n\nexport interface SubnavigationBarProps extends\n React.HTMLAttributes<HTMLDivElement>,\n Pick<HorizontalScrollProps, 'showArrows' | 'getScrollToLeft' | 'getScrollToRight' | 'scrollAnimationDuration'> {\n mode?: 'fixed' | 'overflow';\n}\n\nconst defaultScrollToLeft: ScrollPositionHandler = (x) => x - 240;\n\nconst defaultScrollToRight: ScrollPositionHandler = (x) => x + 240;\n\nexport const SubnavigationBar: React.FC<SubnavigationBarProps> = ({\n mode = 'overflow',\n children,\n showArrows = true,\n getScrollToLeft = defaultScrollToLeft,\n getScrollToRight = defaultScrollToRight,\n scrollAnimationDuration,\n ...restProps\n}: SubnavigationBarProps) => {\n const platform = usePlatform();\n\n let ScrollWrapper: React.ElementType;\n let scrollWrapperProps = {};\n\n if (mode === 'fixed') {\n ScrollWrapper = 'div';\n } else {\n ScrollWrapper = HorizontalScroll;\n scrollWrapperProps = {\n showArrows,\n getScrollToLeft,\n getScrollToRight,\n scrollAnimationDuration,\n };\n }\n\n return (\n <div\n {...restProps}\n vkuiClass={classNames(getClassName('SubnavigationBar', platform), `SubnavigationBar--${mode}`)}\n >\n <ScrollWrapper vkuiClass=\"SubnavigationBar__in\" {...scrollWrapperProps}>\n <div vkuiClass=\"SubnavigationBar__scrollIn\">\n {children}\n </div>\n </ScrollWrapper>\n </div>\n );\n};\n"],"file":"SubnavigationBar.js"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/SubnavigationButton/SubnavigationButton.tsx"],"names":["SubnavigationButtonTypography","textLevel","restProps","SubnavigationButton","props","platform","size","selected","before","after","expandable","children","defaultProps"],"mappings":";;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/SubnavigationButton/SubnavigationButton.tsx"],"names":["SubnavigationButtonTypography","textLevel","restProps","SubnavigationButton","props","platform","size","selected","before","after","expandable","children","defaultProps"],"mappings":";;;;;;;;;;;;;;;AAEA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;AACA;;;;;AAuBA,IAAMA,6BAAoE,GAAG,SAAvEA,6BAAuE,OAA8D;AAAA,MAA3DC,SAA2D,QAA3DA,SAA2D;AAAA,MAA7CC,SAA6C;;AACzI,MAAID,SAAS,KAAK,CAAlB,EAAqB;AACnB,WAAO,qCAAC,gBAAD;AAAS,MAAA,MAAM,EAAC;AAAhB,OAA8BC,SAA9B,EAAP;AACD;;AAED,SACE,qCAAC,gBAAD;AACE,IAAA,KAAK,EAAED,SAAS,KAAK,CAAd,GAAkB,GAAlB,GAAwB,GADjC;AAEE,IAAA,MAAM,EAAC;AAFT,KAGMC,SAHN,EADF;AAOD,CAZD;;AAcO,IAAMC,mBAAuD,GAAG,SAA1DA,mBAA0D,CAACC,KAAD,EAAqC;AAC1G,MAAMC,QAAQ,GAAG,+BAAjB;AACA,MACEC,IADF,GASIF,KATJ,CACEE,IADF;AAAA,MAEEC,QAFF,GASIH,KATJ,CAEEG,QAFF;AAAA,MAGEN,SAHF,GASIG,KATJ,CAGEH,SAHF;AAAA,MAIEO,MAJF,GASIJ,KATJ,CAIEI,MAJF;AAAA,MAKEC,KALF,GASIL,KATJ,CAKEK,KALF;AAAA,MAMEC,UANF,GASIN,KATJ,CAMEM,UANF;AAAA,MAOEC,QAPF,GASIP,KATJ,CAOEO,QAPF;AAAA,MAQKT,SARL,0CASIE,KATJ;AAWA,SACE,qCAAC,iBAAD,6BACMF,SADN;AAEE,IAAA,SAAS,EAAE,KAFb;AAGE,IAAA,gBAAgB,EAAC,SAHnB;AAIE,IAAA,SAAS,EAAE,4BACT,gCAAa,qBAAb,EAAoCG,QAApC,CADS,iCAEeC,IAFf,GAGT;AACE,uCAAiCC;AADnC,KAHS,CAJb;AAWE,kBAAY,iCAAqBI,QAArB;AAXd,MAaE;AAAM,IAAA,SAAS,EAAC;AAAhB,KACG,yBAAaH,MAAb,KAAwB;AAAM,IAAA,SAAS,EAAC;AAAhB,KAA+CA,MAA/C,CAD3B,EAEE,qCAAC,6BAAD;AACE,IAAA,SAAS,EAAEP,SADb;AAEE,IAAA,SAAS,EAAC,4BAFZ;AAGE,IAAA,SAAS,EAAC;AAHZ,KAKGU,QALH,CAFF,EASG,yBAAaF,KAAb,KAAuB;AAAM,IAAA,SAAS,EAAC;AAAhB,KAA8CA,KAA9C,CAT1B,EAUGC,UAAU,IAAI,qCAAC,qBAAD;AAAgB,IAAA,SAAS,EAAC;AAA1B,IAVjB,CAbF,CADF;AA4BD,CAzCM;;;AA2CPP,mBAAmB,CAACS,YAApB,GAAmC;AACjCN,EAAAA,IAAI,EAAE,GAD2B;AAEjCL,EAAAA,SAAS,EAAE;AAFsB,CAAnC","sourcesContent":["import * as React from 'react';\nimport { HasComponent } from '../../types';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { getTitleFromChildren, hasReactNode } from '../../lib/utils';\nimport Tappable, { TappableProps } from '../Tappable/Tappable';\nimport { Icon16Dropdown } from '@vkontakte/icons';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport Caption from '../Typography/Caption/Caption';\nimport Subhead from '../Typography/Subhead/Subhead';\nimport './SubnavigationButton.css';\n\nexport interface SubnavigationButtonProps extends Omit<TappableProps, 'size'> {\n size?: 'm' | 'l';\n selected?: boolean;\n /**\n * Размер шрифта. Этим свойством рекомендуется пользоваться, чтобы отрегулировать размер шрифта у кнопок в `<SubnavigationBar mode=\"fixed\" />`\n */\n textLevel?: 1 | 2 | 3;\n /**\n * Рекомендуется использовать только иконки с размером 24\n */\n before?: React.ReactNode;\n /**\n * Рекомендуется использовать только `<Counter size=\"s\" />` или `<Badge />`\n */\n after?: React.ReactNode;\n expandable?: boolean;\n}\n\ntype SubnavButtonTypographyProps = Pick<SubnavigationButtonProps, 'textLevel'> & HasComponent;\n\nconst SubnavigationButtonTypography: React.FC<SubnavButtonTypographyProps> = ({ textLevel, ...restProps }: SubnavButtonTypographyProps) => {\n if (textLevel === 1) {\n return <Subhead weight=\"regular\" {...restProps} />;\n }\n\n return (\n <Caption\n level={textLevel === 2 ? '1' : '2'}\n weight=\"regular\"\n {...restProps}\n />\n );\n};\n\nexport const SubnavigationButton: React.FC<SubnavigationButtonProps> = (props: SubnavigationButtonProps) => {\n const platform = usePlatform();\n const {\n size,\n selected,\n textLevel,\n before,\n after,\n expandable,\n children,\n ...restProps\n } = props;\n\n return (\n <Tappable\n {...restProps}\n hasActive={false}\n focusVisibleMode=\"outside\"\n vkuiClass={classNames(\n getClassName('SubnavigationButton', platform),\n `SubnavigationButton--${size}`,\n {\n 'SubnavigationButton--selected': selected,\n },\n )}\n aria-label={getTitleFromChildren(children)}\n >\n <span vkuiClass=\"SubnavigationButton__in\">\n {hasReactNode(before) && <span vkuiClass=\"SubnavigationButton__before\">{before}</span>}\n <SubnavigationButtonTypography\n textLevel={textLevel}\n vkuiClass=\"SubnavigationButton__label\"\n Component=\"span\"\n >\n {children}\n </SubnavigationButtonTypography>\n {hasReactNode(after) && <span vkuiClass=\"SubnavigationButton__after\">{after}</span>}\n {expandable && <Icon16Dropdown vkuiClass=\"SubnavigationButton__expandableIcon\" />}\n </span>\n </Tappable>\n );\n};\n\nSubnavigationButton.defaultProps = {\n size: 'm',\n textLevel: 1,\n};\n"],"file":"SubnavigationButton.js"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { HasRef, HasRootRef } from '../../types';
|
|
3
|
-
import { AdaptivityProps } from '../../hoc/withAdaptivity';
|
|
4
3
|
import './Switch.css';
|
|
5
|
-
export interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRootRef<HTMLLabelElement>, HasRef<HTMLInputElement
|
|
4
|
+
export interface SwitchProps extends React.InputHTMLAttributes<HTMLInputElement>, HasRootRef<HTMLLabelElement>, HasRef<HTMLInputElement> {
|
|
6
5
|
}
|
|
7
|
-
export declare const Switch: React.
|
|
6
|
+
export declare const Switch: React.FC<SwitchProps>;
|
|
@@ -19,34 +19,44 @@ var _classNames = require("../../lib/classNames");
|
|
|
19
19
|
|
|
20
20
|
var _usePlatform = require("../../hooks/usePlatform");
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _useAdaptivity2 = require("../../hooks/useAdaptivity");
|
|
23
23
|
|
|
24
24
|
var _useExternRef = require("../../hooks/useExternRef");
|
|
25
25
|
|
|
26
|
-
var
|
|
27
|
-
|
|
26
|
+
var _FocusVisible = require("../FocusVisible/FocusVisible");
|
|
27
|
+
|
|
28
|
+
var _excluded = ["style", "className", "getRef", "getRootRef"];
|
|
29
|
+
;
|
|
30
|
+
|
|
31
|
+
var Switch = function Switch(_ref) {
|
|
28
32
|
var style = _ref.style,
|
|
29
33
|
className = _ref.className,
|
|
30
34
|
getRef = _ref.getRef,
|
|
31
35
|
getRootRef = _ref.getRootRef,
|
|
32
|
-
sizeY = _ref.sizeY,
|
|
33
36
|
restProps = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
34
37
|
var platform = (0, _usePlatform.usePlatform)();
|
|
38
|
+
|
|
39
|
+
var _useAdaptivity = (0, _useAdaptivity2.useAdaptivity)(),
|
|
40
|
+
sizeY = _useAdaptivity.sizeY;
|
|
41
|
+
|
|
35
42
|
var inputRef = (0, _useExternRef.useExternRef)(getRef);
|
|
36
43
|
return (0, _jsxRuntime.createScopedElement)("label", {
|
|
37
44
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('Switch', platform), "Switch--sizeY-".concat(sizeY)),
|
|
38
45
|
className: className,
|
|
39
46
|
style: style,
|
|
40
|
-
ref: getRootRef
|
|
47
|
+
ref: getRootRef,
|
|
48
|
+
role: "presentation"
|
|
41
49
|
}, (0, _jsxRuntime.createScopedElement)("input", (0, _extends2.default)({}, restProps, {
|
|
42
50
|
type: "checkbox",
|
|
43
51
|
vkuiClass: "Switch__self",
|
|
44
52
|
ref: inputRef
|
|
45
53
|
})), (0, _jsxRuntime.createScopedElement)("span", {
|
|
54
|
+
role: "presentation",
|
|
46
55
|
vkuiClass: "Switch__pseudo"
|
|
56
|
+
}), (0, _jsxRuntime.createScopedElement)(_FocusVisible.FocusVisible, {
|
|
57
|
+
mode: "outside"
|
|
47
58
|
}));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
});
|
|
59
|
+
};
|
|
60
|
+
|
|
51
61
|
exports.Switch = Switch;
|
|
52
62
|
//# sourceMappingURL=Switch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Switch/Switch.tsx"],"names":["Switch","style","className","getRef","getRootRef","
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Switch/Switch.tsx"],"names":["Switch","style","className","getRef","getRootRef","restProps","platform","sizeY","inputRef"],"mappings":";;;;;;;;;;;;;;;AACA;;AACA;;AACA;;AAEA;;AACA;;AACA;;;AAM6B;;AAEtB,IAAMA,MAA6B,GAAG,SAAhCA,MAAgC,OAM1B;AAAA,MALjBC,KAKiB,QALjBA,KAKiB;AAAA,MAJjBC,SAIiB,QAJjBA,SAIiB;AAAA,MAHjBC,MAGiB,QAHjBA,MAGiB;AAAA,MAFjBC,UAEiB,QAFjBA,UAEiB;AAAA,MADdC,SACc;AACjB,MAAMC,QAAQ,GAAG,+BAAjB;;AACA,uBAAkB,oCAAlB;AAAA,MAAQC,KAAR,kBAAQA,KAAR;;AAEA,MAAMC,QAAQ,GAAG,gCAAaL,MAAb,CAAjB;AAEA,SACE;AACE,IAAA,SAAS,EAAE,4BAAW,gCAAa,QAAb,EAAuBG,QAAvB,CAAX,0BAA8DC,KAA9D,EADb;AAEE,IAAA,SAAS,EAAEL,SAFb;AAGE,IAAA,KAAK,EAAED,KAHT;AAIE,IAAA,GAAG,EAAEG,UAJP;AAKE,IAAA,IAAI,EAAC;AALP,KAOE,yEAAWC,SAAX;AAAsB,IAAA,IAAI,EAAC,UAA3B;AAAsC,IAAA,SAAS,EAAC,cAAhD;AAA+D,IAAA,GAAG,EAAEG;AAApE,KAPF,EAQE;AAAM,IAAA,IAAI,EAAC,cAAX;AAA0B,IAAA,SAAS,EAAC;AAApC,IARF,EASE,qCAAC,0BAAD;AAAc,IAAA,IAAI,EAAC;AAAnB,IATF,CADF;AAaD,CAzBM","sourcesContent":["import * as React from 'react';\nimport { getClassName } from '../../helpers/getClassName';\nimport { classNames } from '../../lib/classNames';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport { HasRef, HasRootRef } from '../../types';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { FocusVisible } from '../FocusVisible/FocusVisible';\nimport './Switch.css';\n\nexport interface SwitchProps extends\n React.InputHTMLAttributes<HTMLInputElement>,\n HasRootRef<HTMLLabelElement>,\n HasRef<HTMLInputElement> {};\n\nexport const Switch: React.FC<SwitchProps> = ({\n style,\n className,\n getRef,\n getRootRef,\n ...restProps\n}: SwitchProps) => {\n const platform = usePlatform();\n const { sizeY } = useAdaptivity();\n\n const inputRef = useExternRef(getRef);\n\n return (\n <label\n vkuiClass={classNames(getClassName('Switch', platform), `Switch--sizeY-${sizeY}`)}\n className={className}\n style={style}\n ref={getRootRef}\n role=\"presentation\"\n >\n <input {...restProps} type=\"checkbox\" vkuiClass=\"Switch__self\" ref={inputRef} />\n <span role=\"presentation\" vkuiClass=\"Switch__pseudo\" />\n <FocusVisible mode=\"outside\" />\n </label>\n );\n};\n"],"file":"Switch.js"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { TouchProps } from '../Touch/Touch';
|
|
3
|
-
import { HasRootRef } from '../../types';
|
|
3
|
+
import { HasComponent, HasRootRef } from '../../types';
|
|
4
4
|
import { AdaptivityProps } from '../../hoc/withAdaptivity';
|
|
5
5
|
import { FocusVisibleMode } from '../FocusVisible/FocusVisible';
|
|
6
6
|
import './Tappable.css';
|
|
7
|
-
export interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps {
|
|
8
|
-
Component?: React.ElementType;
|
|
7
|
+
export interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps, HasComponent {
|
|
9
8
|
/**
|
|
10
9
|
* Длительность показа active-состояния
|
|
11
10
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Tappable/Tappable.tsx"],"names":["ACTIVE_DELAY","ACTIVE_EFFECT_DELAY","activeBus","TapState","none","pending","active","exiting","TappableContext","React","createContext","onHoverChange","noop","useActivity","hasActive","stopDelay","id","useMemo","Math","round","random","toString","useState","activity","setActivity","_stop","start","delayStart","activeTimeout","stopTimeout","set","clear","emit","onActiveChange","activeId","on","off","stop","delay","Tappable","children","Component","onClick","_onKeyDown","onKeyDown","activeEffectDelay","stopPropagation","getRootRef","sizeX","hasMouse","hasHover","_hasHover","deviceHasHover","hoverMode","_hasActive","activeMode","focusVisibleMode","props","href","useContext","insideTouchRoot","TouchRootContext","platform","clicks","setClicks","childHover","setChildHover","_hovered","setHovered","hovered","disabled","isCustomElement","contentEditable","isPresetHoverMode","includes","isPresetActiveMode","containerRef","childContext","useRef","current","e","preventDefault","click","onStart","originalEvent","touches","length","ANDROID","top","left","x","y","Date","now","onMove","isSlide","onEnd","duration","activeDuraion","classes","handlers","role","undefined","map","wave","filter","c","Wave","onClear","timeout","useEffect"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport mitt from 'mitt';\nimport { hasHover as deviceHasHover, noop } from '@vkontakte/vkjs';\nimport { Touch, TouchEvent, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID } from '../../lib/platform';\nimport { getOffsetRect } from '../../lib/offset';\nimport { coordX, coordY } from '../../lib/touch';\nimport { HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { shouldTriggerClickOnEnterOrSpace } from '../../lib/accessibility';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { FocusVisible, FocusVisibleMode } from '../FocusVisible/FocusVisible';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tappable.css';\n\nexport interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps {\n Component?: React.ElementType;\n /**\n * Длительность показа active-состояния\n */\n activeEffectDelay?: number;\n stopPropagation?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на hover-состояние\n */\n hasHover?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на active-состояние\n */\n hasActive?: boolean;\n /**\n * Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active\n */\n activeMode?: 'opacity' | 'background' | string;\n /**\n * Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover\n */\n hoverMode?: 'opacity' | 'background' | string;\n /**\n * Стиль аутлайна focus visible.\n */\n focusVisibleMode?: FocusVisibleMode;\n}\n\ninterface Wave {\n x: number;\n y: number;\n id: string;\n}\n\nexport interface RootComponentProps extends TouchProps {\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const ACTIVE_DELAY = 70;\nexport const ACTIVE_EFFECT_DELAY = 600;\n\nconst activeBus = mitt<{ active: string }>();\nconst TapState = { none: 0, pending: 1, active: 2, exiting: 3 } as const;\n\ntype TappableContextInterface = { onHoverChange: (s: boolean) => void };\nconst TappableContext = React.createContext<TappableContextInterface>({ onHoverChange: noop });\n\nfunction useActivity(hasActive: boolean, stopDelay: number) {\n const id = React.useMemo(() => Math.round(Math.random() * 1e8).toString(16), []);\n\n const [activity, setActivity] = React.useState<typeof TapState[keyof typeof TapState]>(TapState.none);\n const _stop = () => setActivity(TapState.none);\n const start = () => hasActive && setActivity(TapState.active);\n const delayStart = () => {\n hasActive && setActivity(TapState.pending);\n };\n\n const activeTimeout = useTimeout(start, ACTIVE_DELAY);\n const stopTimeout = useTimeout(_stop, stopDelay);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.pending) {\n activeTimeout.set();\n return activeTimeout.clear;\n }\n if (activity === TapState.exiting) {\n return stopTimeout.clear;\n }\n if (activity === TapState.active) {\n activeBus.emit('active', id);\n }\n return noop;\n }, [activity]);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.none) {\n return noop;\n }\n const onActiveChange = (activeId: string) => {\n activeId !== id && _stop();\n };\n activeBus.on('active', onActiveChange);\n return () => activeBus.off('active', onActiveChange);\n }, [activity === TapState.none]);\n\n useIsomorphicLayoutEffect(() => {\n !hasActive && _stop();\n }, [hasActive]);\n\n const stop = (delay?: number) => {\n if (delay) {\n setActivity(TapState.exiting);\n return stopTimeout.set(delay);\n }\n _stop();\n };\n\n return [activity, { delayStart, start, stop }] as const;\n}\n\nconst Tappable: React.FC<TappableProps> = ({\n children,\n Component,\n onClick,\n onKeyDown: _onKeyDown,\n activeEffectDelay = ACTIVE_EFFECT_DELAY,\n stopPropagation = false,\n getRootRef,\n sizeX,\n hasMouse,\n hasHover: _hasHover = deviceHasHover,\n hoverMode = 'background',\n hasActive: _hasActive = true,\n activeMode = 'background',\n focusVisibleMode = 'inside',\n ...props\n}: TappableProps) => {\n Component = Component || (props.href ? 'a' : 'div') as React.ElementType;\n\n const { onHoverChange } = React.useContext(TappableContext);\n const insideTouchRoot = React.useContext(TouchRootContext);\n const platform = usePlatform();\n\n const [clicks, setClicks] = React.useState<Wave[]>([]);\n const [childHover, setChildHover] = React.useState(false);\n const [_hovered, setHovered] = React.useState(false);\n\n const hovered = _hovered && !props.disabled;\n const hasActive = _hasActive && !childHover && !props.disabled;\n const hasHover = _hasHover && !childHover;\n const isCustomElement = Component !== 'a' && Component !== 'button' && !props.contentEditable;\n const isPresetHoverMode = ['opacity', 'background'].includes(hoverMode);\n const isPresetActiveMode = ['opacity', 'background'].includes(activeMode);\n\n const [activity, { start, stop, delayStart }] = useActivity(hasActive, activeEffectDelay);\n const active = activity === TapState.active || activity === TapState.exiting;\n\n const containerRef = useExternRef(getRootRef);\n\n // hover propagation\n const childContext = React.useRef({ onHoverChange: setChildHover }).current;\n useIsomorphicLayoutEffect(() => {\n if (!hovered) {\n return noop;\n }\n onHoverChange(true);\n return () => onHoverChange(false);\n }, [hovered]);\n\n /*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\n function onKeyDown(e: React.KeyboardEvent<HTMLElement>) {\n if (isCustomElement && shouldTriggerClickOnEnterOrSpace(e)) {\n e.preventDefault();\n containerRef.current.click();\n }\n\n if (typeof _onKeyDown === 'function') {\n return _onKeyDown(e);\n }\n }\n\n function onStart({ originalEvent }: TouchEvent) {\n if (hasActive) {\n if (originalEvent.touches && originalEvent.touches.length > 1) {\n // r сожалению я так и не понял, что это делает и можно ли упихнуть его в Touch\n return stop();\n }\n\n if (platform === ANDROID) {\n const { top, left } = getOffsetRect(containerRef.current);\n const x = coordX(originalEvent) - left;\n const y = coordY(originalEvent) - top;\n setClicks([...clicks, { x, y, id: Date.now().toString() }]);\n }\n\n delayStart();\n }\n }\n\n function onMove({ isSlide }: TouchEvent) {\n if (isSlide) {\n stop();\n }\n }\n\n function onEnd({ duration }: TouchEvent) {\n if (activity === TapState.none) {\n return;\n }\n if (activity === TapState.pending) {\n // активировать при коротком тапе\n start();\n }\n\n // отключить без задержки при длинном тапе\n const activeDuraion = duration - ACTIVE_DELAY;\n stop(activeDuraion >= 100 ? 0 : activeEffectDelay - activeDuraion);\n }\n\n const classes = classNames(\n getClassName('Tappable', platform),\n `Tappable--sizeX-${sizeX}`,\n {\n 'Tappable--active': hasActive && active,\n 'Tappable--mouse': hasMouse,\n [`Tappable--hover-${hoverMode}`]: hasHover && hovered && isPresetHoverMode,\n [`Tappable--active-${activeMode}`]: hasActive && active && isPresetActiveMode,\n [hoverMode]: hasHover && hovered && !isPresetHoverMode,\n [activeMode]: hasActive && active && !isPresetActiveMode,\n });\n\n const handlers: RootComponentProps = { onStart, onMove, onEnd, onClick, onKeyDown };\n const role = props.href ? 'link' : 'button';\n\n return (\n <Touch\n onEnter={() => setHovered(true)}\n onLeave={() => setHovered(false)}\n type={Component === 'button' ? 'button' : undefined}\n tabIndex={isCustomElement && !props.disabled ? 0 : undefined}\n role={isCustomElement ? role : undefined}\n aria-disabled={isCustomElement ? props.disabled : null}\n stopPropagation={stopPropagation && !insideTouchRoot && !props.disabled}\n {...props}\n slideThreshold={20}\n usePointerHover\n vkuiClass={classes}\n Component={Component}\n getRootRef={containerRef}\n {...(props.disabled ? {} : handlers)}>\n <TappableContext.Provider value={childContext}>\n {children}\n </TappableContext.Provider>\n {platform === ANDROID && !hasMouse && hasActive && activeMode === 'background' && (\n <span aria-hidden=\"true\" vkuiClass=\"Tappable__waves\">\n {clicks.map((wave) => (\n <Wave {...wave} key={wave.id} onClear={() => setClicks(clicks.filter((c) => c.id !== wave.id))} />\n ))}\n </span>\n )}\n {hasHover && hoverMode === 'background' && <span aria-hidden=\"true\" vkuiClass=\"Tappable__hoverShadow\" />}\n {!props.disabled && <FocusVisible mode={focusVisibleMode} />}\n </Touch>\n );\n};\n\nexport default withAdaptivity(Tappable, { sizeX: true, hasMouse: true });\n\nfunction Wave({ x, y, onClear }: Wave & { onClear: VoidFunction }) {\n const timeout = useTimeout(onClear, 225);\n React.useEffect(() => timeout.set(), []);\n return <span vkuiClass=\"Tappable__wave\" style={{ top: y, left: x }} />;\n}\n"],"file":"Tappable.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Tappable/Tappable.tsx"],"names":["ACTIVE_DELAY","ACTIVE_EFFECT_DELAY","activeBus","TapState","none","pending","active","exiting","TappableContext","React","createContext","onHoverChange","noop","useActivity","hasActive","stopDelay","id","useMemo","Math","round","random","toString","useState","activity","setActivity","_stop","start","delayStart","activeTimeout","stopTimeout","set","clear","emit","onActiveChange","activeId","on","off","stop","delay","Tappable","children","Component","onClick","_onKeyDown","onKeyDown","activeEffectDelay","stopPropagation","getRootRef","sizeX","hasMouse","hasHover","_hasHover","deviceHasHover","hoverMode","_hasActive","activeMode","focusVisibleMode","props","href","useContext","insideTouchRoot","TouchRootContext","platform","clicks","setClicks","childHover","setChildHover","_hovered","setHovered","hovered","disabled","isCustomElement","contentEditable","isPresetHoverMode","includes","isPresetActiveMode","containerRef","childContext","useRef","current","e","preventDefault","click","onStart","originalEvent","touches","length","ANDROID","top","left","x","y","Date","now","onMove","isSlide","onEnd","duration","activeDuraion","classes","handlers","role","undefined","map","wave","filter","c","Wave","onClear","timeout","useEffect"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport mitt from 'mitt';\nimport { hasHover as deviceHasHover, noop } from '@vkontakte/vkjs';\nimport { Touch, TouchEvent, TouchProps } from '../Touch/Touch';\nimport TouchRootContext from '../Touch/TouchContext';\nimport { classNames } from '../../lib/classNames';\nimport { getClassName } from '../../helpers/getClassName';\nimport { ANDROID } from '../../lib/platform';\nimport { getOffsetRect } from '../../lib/offset';\nimport { coordX, coordY } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { shouldTriggerClickOnEnterOrSpace } from '../../lib/accessibility';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { FocusVisible, FocusVisibleMode } from '../FocusVisible/FocusVisible';\nimport { useTimeout } from '../../hooks/useTimeout';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Tappable.css';\n\nexport interface TappableProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, AdaptivityProps, HasComponent {\n /**\n * Длительность показа active-состояния\n */\n activeEffectDelay?: number;\n stopPropagation?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на hover-состояние\n */\n hasHover?: boolean;\n /**\n * Указывает, должен ли компонент реагировать на active-состояние\n */\n hasActive?: boolean;\n /**\n * Стиль подсветки active-состояния. Если передать произвольную строку, она добавится как css-класс во время active\n */\n activeMode?: 'opacity' | 'background' | string;\n /**\n * Стиль подсветки hover-состояния. Если передать произвольную строку, она добавится как css-класс во время hover\n */\n hoverMode?: 'opacity' | 'background' | string;\n /**\n * Стиль аутлайна focus visible.\n */\n focusVisibleMode?: FocusVisibleMode;\n}\n\ninterface Wave {\n x: number;\n y: number;\n id: string;\n}\n\nexport interface RootComponentProps extends TouchProps {\n ref?: React.Ref<HTMLElement>;\n}\n\nexport const ACTIVE_DELAY = 70;\nexport const ACTIVE_EFFECT_DELAY = 600;\n\nconst activeBus = mitt<{ active: string }>();\nconst TapState = { none: 0, pending: 1, active: 2, exiting: 3 } as const;\n\ntype TappableContextInterface = { onHoverChange: (s: boolean) => void };\nconst TappableContext = React.createContext<TappableContextInterface>({ onHoverChange: noop });\n\nfunction useActivity(hasActive: boolean, stopDelay: number) {\n const id = React.useMemo(() => Math.round(Math.random() * 1e8).toString(16), []);\n\n const [activity, setActivity] = React.useState<typeof TapState[keyof typeof TapState]>(TapState.none);\n const _stop = () => setActivity(TapState.none);\n const start = () => hasActive && setActivity(TapState.active);\n const delayStart = () => {\n hasActive && setActivity(TapState.pending);\n };\n\n const activeTimeout = useTimeout(start, ACTIVE_DELAY);\n const stopTimeout = useTimeout(_stop, stopDelay);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.pending) {\n activeTimeout.set();\n return activeTimeout.clear;\n }\n if (activity === TapState.exiting) {\n return stopTimeout.clear;\n }\n if (activity === TapState.active) {\n activeBus.emit('active', id);\n }\n return noop;\n }, [activity]);\n\n useIsomorphicLayoutEffect(() => {\n if (activity === TapState.none) {\n return noop;\n }\n const onActiveChange = (activeId: string) => {\n activeId !== id && _stop();\n };\n activeBus.on('active', onActiveChange);\n return () => activeBus.off('active', onActiveChange);\n }, [activity === TapState.none]);\n\n useIsomorphicLayoutEffect(() => {\n !hasActive && _stop();\n }, [hasActive]);\n\n const stop = (delay?: number) => {\n if (delay) {\n setActivity(TapState.exiting);\n return stopTimeout.set(delay);\n }\n _stop();\n };\n\n return [activity, { delayStart, start, stop }] as const;\n}\n\nconst Tappable: React.FC<TappableProps> = ({\n children,\n Component,\n onClick,\n onKeyDown: _onKeyDown,\n activeEffectDelay = ACTIVE_EFFECT_DELAY,\n stopPropagation = false,\n getRootRef,\n sizeX,\n hasMouse,\n hasHover: _hasHover = deviceHasHover,\n hoverMode = 'background',\n hasActive: _hasActive = true,\n activeMode = 'background',\n focusVisibleMode = 'inside',\n ...props\n}: TappableProps) => {\n Component = Component || (props.href ? 'a' : 'div') as React.ElementType;\n\n const { onHoverChange } = React.useContext(TappableContext);\n const insideTouchRoot = React.useContext(TouchRootContext);\n const platform = usePlatform();\n\n const [clicks, setClicks] = React.useState<Wave[]>([]);\n const [childHover, setChildHover] = React.useState(false);\n const [_hovered, setHovered] = React.useState(false);\n\n const hovered = _hovered && !props.disabled;\n const hasActive = _hasActive && !childHover && !props.disabled;\n const hasHover = _hasHover && !childHover;\n const isCustomElement = Component !== 'a' && Component !== 'button' && !props.contentEditable;\n const isPresetHoverMode = ['opacity', 'background'].includes(hoverMode);\n const isPresetActiveMode = ['opacity', 'background'].includes(activeMode);\n\n const [activity, { start, stop, delayStart }] = useActivity(hasActive, activeEffectDelay);\n const active = activity === TapState.active || activity === TapState.exiting;\n\n const containerRef = useExternRef(getRootRef);\n\n // hover propagation\n const childContext = React.useRef({ onHoverChange: setChildHover }).current;\n useIsomorphicLayoutEffect(() => {\n if (!hovered) {\n return noop;\n }\n onHoverChange(true);\n return () => onHoverChange(false);\n }, [hovered]);\n\n /*\n * [a11y]\n * Обрабатывает событие onkeydown\n * для кастомных доступных элементов:\n * - role=\"link\" (активация по Enter)\n * - role=\"button\" (активация по Space и Enter)\n */\n function onKeyDown(e: React.KeyboardEvent<HTMLElement>) {\n if (isCustomElement && shouldTriggerClickOnEnterOrSpace(e)) {\n e.preventDefault();\n containerRef.current.click();\n }\n\n if (typeof _onKeyDown === 'function') {\n return _onKeyDown(e);\n }\n }\n\n function onStart({ originalEvent }: TouchEvent) {\n if (hasActive) {\n if (originalEvent.touches && originalEvent.touches.length > 1) {\n // r сожалению я так и не понял, что это делает и можно ли упихнуть его в Touch\n return stop();\n }\n\n if (platform === ANDROID) {\n const { top, left } = getOffsetRect(containerRef.current);\n const x = coordX(originalEvent) - left;\n const y = coordY(originalEvent) - top;\n setClicks([...clicks, { x, y, id: Date.now().toString() }]);\n }\n\n delayStart();\n }\n }\n\n function onMove({ isSlide }: TouchEvent) {\n if (isSlide) {\n stop();\n }\n }\n\n function onEnd({ duration }: TouchEvent) {\n if (activity === TapState.none) {\n return;\n }\n if (activity === TapState.pending) {\n // активировать при коротком тапе\n start();\n }\n\n // отключить без задержки при длинном тапе\n const activeDuraion = duration - ACTIVE_DELAY;\n stop(activeDuraion >= 100 ? 0 : activeEffectDelay - activeDuraion);\n }\n\n const classes = classNames(\n getClassName('Tappable', platform),\n `Tappable--sizeX-${sizeX}`,\n {\n 'Tappable--active': hasActive && active,\n 'Tappable--mouse': hasMouse,\n [`Tappable--hover-${hoverMode}`]: hasHover && hovered && isPresetHoverMode,\n [`Tappable--active-${activeMode}`]: hasActive && active && isPresetActiveMode,\n [hoverMode]: hasHover && hovered && !isPresetHoverMode,\n [activeMode]: hasActive && active && !isPresetActiveMode,\n });\n\n const handlers: RootComponentProps = { onStart, onMove, onEnd, onClick, onKeyDown };\n const role = props.href ? 'link' : 'button';\n\n return (\n <Touch\n onEnter={() => setHovered(true)}\n onLeave={() => setHovered(false)}\n type={Component === 'button' ? 'button' : undefined}\n tabIndex={isCustomElement && !props.disabled ? 0 : undefined}\n role={isCustomElement ? role : undefined}\n aria-disabled={isCustomElement ? props.disabled : null}\n stopPropagation={stopPropagation && !insideTouchRoot && !props.disabled}\n {...props}\n slideThreshold={20}\n usePointerHover\n vkuiClass={classes}\n Component={Component}\n getRootRef={containerRef}\n {...(props.disabled ? {} : handlers)}>\n <TappableContext.Provider value={childContext}>\n {children}\n </TappableContext.Provider>\n {platform === ANDROID && !hasMouse && hasActive && activeMode === 'background' && (\n <span aria-hidden=\"true\" vkuiClass=\"Tappable__waves\">\n {clicks.map((wave) => (\n <Wave {...wave} key={wave.id} onClear={() => setClicks(clicks.filter((c) => c.id !== wave.id))} />\n ))}\n </span>\n )}\n {hasHover && hoverMode === 'background' && <span aria-hidden=\"true\" vkuiClass=\"Tappable__hoverShadow\" />}\n {!props.disabled && <FocusVisible mode={focusVisibleMode} />}\n </Touch>\n );\n};\n\nexport default withAdaptivity(Tappable, { sizeX: true, hasMouse: true });\n\nfunction Wave({ x, y, onClear }: Wave & { onClear: VoidFunction }) {\n const timeout = useTimeout(onClear, 225);\n React.useEffect(() => timeout.set(), []);\n return <span vkuiClass=\"Tappable__wave\" style={{ top: y, left: x }} />;\n}\n"],"file":"Tappable.js"}
|
|
@@ -33,8 +33,6 @@ var _useExternRef = require("../../hooks/useExternRef");
|
|
|
33
33
|
|
|
34
34
|
var _usePlatform = require("../../hooks/usePlatform");
|
|
35
35
|
|
|
36
|
-
var _useIsomorphicLayoutEffect = require("../../lib/useIsomorphicLayoutEffect");
|
|
37
|
-
|
|
38
36
|
var _excluded = ["defaultValue", "grow", "style", "onResize", "className", "getRootRef", "getRef", "sizeY", "rows"];
|
|
39
37
|
var Textarea = /*#__PURE__*/React.memo(function (_ref) {
|
|
40
38
|
var _ref$defaultValue = _ref.defaultValue,
|
|
@@ -58,19 +56,23 @@ var Textarea = /*#__PURE__*/React.memo(function (_ref) {
|
|
|
58
56
|
value = _useEnsuredControl2[0],
|
|
59
57
|
onChange = _useEnsuredControl2[1];
|
|
60
58
|
|
|
59
|
+
var currentScrollHeight = React.useRef();
|
|
61
60
|
var elementRef = (0, _useExternRef.useExternRef)(getRef);
|
|
62
61
|
var platform = (0, _usePlatform.usePlatform)(); // autosize input
|
|
63
62
|
|
|
64
|
-
|
|
63
|
+
React.useEffect(function () {
|
|
65
64
|
var el = elementRef.current;
|
|
66
65
|
|
|
67
|
-
if (grow) {
|
|
66
|
+
if (grow && el.offsetParent) {
|
|
68
67
|
el.style.height = null;
|
|
69
|
-
el.style.height = "".concat(el.scrollHeight, "px");
|
|
68
|
+
el.style.height = "".concat(el.scrollHeight, "px");
|
|
70
69
|
|
|
71
|
-
|
|
70
|
+
if (el.scrollHeight !== currentScrollHeight.current && onResize) {
|
|
71
|
+
onResize(el);
|
|
72
|
+
currentScrollHeight.current = el.scrollHeight;
|
|
73
|
+
}
|
|
72
74
|
}
|
|
73
|
-
}, [grow, value]);
|
|
75
|
+
}, [grow, value, sizeY]);
|
|
74
76
|
return (0, _jsxRuntime.createScopedElement)(_FormField.FormField, {
|
|
75
77
|
vkuiClass: (0, _classNames.classNames)((0, _getClassName.getClassName)('Textarea', platform), "Textarea--sizeY-".concat(sizeY)),
|
|
76
78
|
className: className,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Textarea/Textarea.tsx"],"names":["Textarea","React","memo","defaultValue","grow","style","onResize","className","getRootRef","getRef","sizeY","rows","restProps","value","onChange","elementRef","platform","el","current","height","scrollHeight","disabled"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Textarea/Textarea.tsx"],"names":["Textarea","React","memo","defaultValue","grow","style","onResize","className","getRootRef","getRef","sizeY","rows","restProps","value","onChange","currentScrollHeight","useRef","elementRef","platform","useEffect","el","current","offsetParent","height","scrollHeight","disabled"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AACA;;AAEA;;AACA;;AACA;;AACA;;AACA;;;AAaA,IAAMA,QAAiC,gBAAGC,KAAK,CAACC,IAAN,CAAW,gBAWhC;AAAA,+BAVnBC,YAUmB;AAAA,MAVnBA,YAUmB,kCAVJ,EAUI;AAAA,uBATnBC,IASmB;AAAA,MATnBA,IASmB,0BATZ,IASY;AAAA,MARnBC,KAQmB,QARnBA,KAQmB;AAAA,MAPnBC,QAOmB,QAPnBA,QAOmB;AAAA,MANnBC,SAMmB,QANnBA,SAMmB;AAAA,MALnBC,UAKmB,QALnBA,UAKmB;AAAA,MAJnBC,MAImB,QAJnBA,MAImB;AAAA,MAHnBC,KAGmB,QAHnBA,KAGmB;AAAA,uBAFnBC,IAEmB;AAAA,MAFnBA,IAEmB,0BAFZ,CAEY;AAAA,MADhBC,SACgB;;AACnB,2BAA0B,2CAAkBA,SAAlB,EAA6B;AAAET,IAAAA,YAAY,EAAZA;AAAF,GAA7B,CAA1B;AAAA;AAAA,MAAOU,KAAP;AAAA,MAAcC,QAAd;;AACA,MAAMC,mBAAmB,GAAGd,KAAK,CAACe,MAAN,EAA5B;AACA,MAAMC,UAAU,GAAG,gCAAaR,MAAb,CAAnB;AACA,MAAMS,QAAQ,GAAG,+BAAjB,CAJmB,CAMnB;;AACAjB,EAAAA,KAAK,CAACkB,SAAN,CAAgB,YAAM;AACpB,QAAMC,EAAE,GAAGH,UAAU,CAACI,OAAtB;;AAEA,QAAIjB,IAAI,IAAIgB,EAAE,CAACE,YAAf,EAA6B;AAC3BF,MAAAA,EAAE,CAACf,KAAH,CAASkB,MAAT,GAAkB,IAAlB;AACAH,MAAAA,EAAE,CAACf,KAAH,CAASkB,MAAT,aAAqBH,EAAE,CAACI,YAAxB;;AAEA,UAAIJ,EAAE,CAACI,YAAH,KAAoBT,mBAAmB,CAACM,OAAxC,IAAmDf,QAAvD,EAAiE;AAC/DA,QAAAA,QAAQ,CAACc,EAAD,CAAR;AACAL,QAAAA,mBAAmB,CAACM,OAApB,GAA8BD,EAAE,CAACI,YAAjC;AACD;AACF;AACF,GAZD,EAYG,CAACpB,IAAD,EAAOS,KAAP,EAAcH,KAAd,CAZH;AAcA,SACE,qCAAC,oBAAD;AACE,IAAA,SAAS,EAAE,4BAAW,gCAAa,UAAb,EAAyBQ,QAAzB,CAAX,4BAAkER,KAAlE,EADb;AAEE,IAAA,SAAS,EAAEH,SAFb;AAGE,IAAA,KAAK,EAAEF,KAHT;AAIE,IAAA,UAAU,EAAEG,UAJd;AAKE,IAAA,QAAQ,EAAEI,SAAS,CAACa;AALtB,KAOE,4EACMb,SADN;AAEE,IAAA,IAAI,EAAED,IAFR;AAGE,IAAA,SAAS,EAAC,cAHZ;AAIE,IAAA,KAAK,EAAEE,KAJT;AAKE,IAAA,QAAQ,EAAEC,QALZ;AAME,IAAA,GAAG,EAAEG;AANP,KAPF,CADF;AAkBD,CAlDyC,CAA1C;;eAoDe,oCAAejB,QAAf,EAAyB;AAAEU,EAAAA,KAAK,EAAE;AAAT,CAAzB,C","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { FormField } from '../FormField/FormField';\nimport { HasRef, HasRootRef } from '../../types';\nimport { withAdaptivity, AdaptivityProps } from '../../hoc/withAdaptivity';\nimport { getClassName } from '../../helpers/getClassName';\nimport { useEnsuredControl } from '../../hooks/useEnsuredControl';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { usePlatform } from '../../hooks/usePlatform';\nimport './Textarea.css';\n\nexport interface TextareaProps extends\n React.TextareaHTMLAttributes<HTMLTextAreaElement>,\n HasRef<HTMLTextAreaElement>,\n HasRootRef<HTMLElement>,\n AdaptivityProps {\n grow?: boolean;\n onResize?(el: HTMLTextAreaElement): void;\n defaultValue?: string;\n}\n\nconst Textarea: React.FC<TextareaProps> = React.memo(({\n defaultValue = '',\n grow = true,\n style,\n onResize,\n className,\n getRootRef,\n getRef,\n sizeY,\n rows = 2,\n ...restProps\n}: TextareaProps) => {\n const [value, onChange] = useEnsuredControl(restProps, { defaultValue });\n const currentScrollHeight = React.useRef<number>();\n const elementRef = useExternRef(getRef);\n const platform = usePlatform();\n\n // autosize input\n React.useEffect(() => {\n const el = elementRef.current;\n\n if (grow && el.offsetParent) {\n el.style.height = null;\n el.style.height = `${el.scrollHeight}px`;\n\n if (el.scrollHeight !== currentScrollHeight.current && onResize) {\n onResize(el);\n currentScrollHeight.current = el.scrollHeight;\n }\n }\n }, [grow, value, sizeY]);\n\n return (\n <FormField\n vkuiClass={classNames(getClassName('Textarea', platform), `Textarea--sizeY-${sizeY}`)}\n className={className}\n style={style}\n getRootRef={getRootRef}\n disabled={restProps.disabled}\n >\n <textarea\n {...restProps}\n rows={rows}\n vkuiClass=\"Textarea__el\"\n value={value}\n onChange={onChange}\n ref={elementRef}\n />\n </FormField>\n );\n});\n\nexport default withAdaptivity(Textarea, { sizeY: true });\n"],"file":"Textarea.js"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { VKUITouchEvent } from '../../lib/touch';
|
|
3
|
-
import { HasRootRef } from '../../types';
|
|
4
|
-
export interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement
|
|
3
|
+
import { HasComponent, HasRootRef } from '../../types';
|
|
4
|
+
export interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent {
|
|
5
5
|
/**
|
|
6
6
|
* Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах
|
|
7
7
|
*/
|
|
@@ -9,7 +9,6 @@ export interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRoo
|
|
|
9
9
|
useCapture?: boolean;
|
|
10
10
|
slideThreshold?: number;
|
|
11
11
|
noSlideClick?: boolean;
|
|
12
|
-
Component?: React.ElementType;
|
|
13
12
|
onEnter?: HoverHandler;
|
|
14
13
|
onLeave?: HoverHandler;
|
|
15
14
|
onStart?: TouchEventHandler;
|
|
@@ -24,20 +23,20 @@ export interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRoo
|
|
|
24
23
|
stopPropagation?: boolean;
|
|
25
24
|
}
|
|
26
25
|
export interface Gesture {
|
|
27
|
-
startX
|
|
28
|
-
startY
|
|
29
|
-
startT
|
|
30
|
-
duration
|
|
31
|
-
isPressed
|
|
32
|
-
isY
|
|
33
|
-
isX
|
|
34
|
-
isSlideX
|
|
35
|
-
isSlideY
|
|
36
|
-
isSlide
|
|
37
|
-
shiftX
|
|
38
|
-
shiftY
|
|
39
|
-
shiftXAbs
|
|
40
|
-
shiftYAbs
|
|
26
|
+
startX: number;
|
|
27
|
+
startY: number;
|
|
28
|
+
startT: Date;
|
|
29
|
+
duration: number;
|
|
30
|
+
isPressed: boolean;
|
|
31
|
+
isY: boolean;
|
|
32
|
+
isX: boolean;
|
|
33
|
+
isSlideX: boolean;
|
|
34
|
+
isSlideY: boolean;
|
|
35
|
+
isSlide: boolean;
|
|
36
|
+
shiftX: number;
|
|
37
|
+
shiftY: number;
|
|
38
|
+
shiftXAbs: number;
|
|
39
|
+
shiftYAbs: number;
|
|
41
40
|
}
|
|
42
41
|
export interface TouchEvent extends Gesture {
|
|
43
42
|
originalEvent: VKUITouchEvent;
|
|
@@ -63,7 +63,7 @@ var Touch = function Touch(_ref) {
|
|
|
63
63
|
|
|
64
64
|
var events = React.useMemo(_touch.getSupportedEvents, []);
|
|
65
65
|
var didSlide = React.useRef(false);
|
|
66
|
-
var gesture = React.useRef(
|
|
66
|
+
var gesture = React.useRef(null);
|
|
67
67
|
|
|
68
68
|
var handle = function handle(e, handers) {
|
|
69
69
|
stopPropagation && e.stopPropagation();
|
|
@@ -79,14 +79,15 @@ var Touch = function Touch(_ref) {
|
|
|
79
79
|
var enterHandler = (0, _useEventListener.useEventListener)(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);
|
|
80
80
|
var leaveHandler = (0, _useEventListener.useEventListener)(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);
|
|
81
81
|
var startHandler = (0, _useEventListener.useEventListener)(events[0], function (e) {
|
|
82
|
-
gesture.current =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
82
|
+
gesture.current = initGesture((0, _touch.coordX)(e), (0, _touch.coordY)(e));
|
|
83
|
+
handle(e, [onStart, onStartX, onStartY]); // 1 line, 2 bad specs, 2 workarounds:
|
|
84
|
+
|
|
85
|
+
subscribe((0, _touch.touchEnabled)() // Touch events fire on initial target, and won't bubble if its removed
|
|
86
|
+
// see: #235, #1968, https://stackoverflow.com/a/45760014
|
|
87
|
+
? e.target // Mouse events fire on the element under pointer, so we lose move / end
|
|
88
|
+
// if pointer goes outside container.
|
|
89
|
+
// Can be fixed by PointerEvents' setPointerCapture later
|
|
90
|
+
: document);
|
|
90
91
|
}, {
|
|
91
92
|
capture: useCapture,
|
|
92
93
|
passive: false
|
|
@@ -97,7 +98,6 @@ var Touch = function Touch(_ref) {
|
|
|
97
98
|
enterHandler.add(el);
|
|
98
99
|
leaveHandler.add(el);
|
|
99
100
|
startHandler.add(el);
|
|
100
|
-
(0, _touch.touchEnabled)() && subscribe(el);
|
|
101
101
|
}, [Component]);
|
|
102
102
|
|
|
103
103
|
function onMove(e) {
|
|
@@ -161,11 +161,11 @@ var Touch = function Touch(_ref) {
|
|
|
161
161
|
didSlide.current = isSlide;
|
|
162
162
|
gesture.current = {}; // Если это был тач-евент, симулируем отмену hover
|
|
163
163
|
|
|
164
|
-
if (
|
|
164
|
+
if ((0, _touch.touchEnabled)()) {
|
|
165
165
|
onLeave && onLeave(e);
|
|
166
166
|
}
|
|
167
167
|
|
|
168
|
-
|
|
168
|
+
subscribe(null);
|
|
169
169
|
}
|
|
170
170
|
|
|
171
171
|
var listenerParams = {
|
|
@@ -201,9 +201,10 @@ var Touch = function Touch(_ref) {
|
|
|
201
201
|
var postGestureClick = function postGestureClick(e) {
|
|
202
202
|
if (!didSlide.current) {
|
|
203
203
|
return onClickCapture && onClickCapture(e);
|
|
204
|
-
}
|
|
204
|
+
} // eslint-disable-next-line no-restricted-properties
|
|
205
|
+
|
|
205
206
|
|
|
206
|
-
if (e.target.
|
|
207
|
+
if (e.target.closest('a')) {
|
|
207
208
|
e.preventDefault();
|
|
208
209
|
}
|
|
209
210
|
|
|
@@ -224,4 +225,23 @@ var Touch = function Touch(_ref) {
|
|
|
224
225
|
};
|
|
225
226
|
|
|
226
227
|
exports.Touch = Touch;
|
|
228
|
+
|
|
229
|
+
function initGesture(startX, startY) {
|
|
230
|
+
return {
|
|
231
|
+
startX: startX,
|
|
232
|
+
startY: startY,
|
|
233
|
+
startT: new Date(),
|
|
234
|
+
duration: 0,
|
|
235
|
+
isPressed: true,
|
|
236
|
+
isY: false,
|
|
237
|
+
isX: false,
|
|
238
|
+
isSlideX: false,
|
|
239
|
+
isSlideY: false,
|
|
240
|
+
isSlide: false,
|
|
241
|
+
shiftX: 0,
|
|
242
|
+
shiftY: 0,
|
|
243
|
+
shiftXAbs: 0,
|
|
244
|
+
shiftYAbs: 0
|
|
245
|
+
};
|
|
246
|
+
}
|
|
227
247
|
//# sourceMappingURL=Touch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Touch/Touch.tsx"],"names":["Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","React","useMemo","getSupportedEvents","didSlide","useRef","gesture","handle","e","handers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","startX","startY","isPressed","subscribe","capture","passive","containerRef","el","add","isX","isY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","type","listenerParams","listeners","l","onDragStart","target","tagName","preventDefault","postGestureClick"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { getSupportedEvents, coordX, coordY, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { HasRootRef } from '../../types';\nimport { useDOM } from '../../lib/dom';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement> {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n Component?: React.ElementType;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX?: number;\n startY?: number;\n startT?: Date;\n duration?: number;\n isPressed?: boolean;\n isY?: boolean;\n isX?: boolean;\n isSlideX?: boolean;\n isSlideY?: boolean;\n isSlide?: boolean;\n shiftX?: number;\n shiftY?: number;\n shiftXAbs?: number;\n shiftYAbs?: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\nexport const Touch: React.FC<TouchProps> = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture>>({});\n const handle = (e: VKUITouchEvent, handers: TouchEventHandler[]) => {\n stopPropagation && e.stopPropagation();\n handers.forEach((cb) => {\n const duration = Date.now() - gesture.current.startT.getTime();\n cb && cb({ ...gesture.current, duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(events[0], (e: VKUITouchEvent) => {\n gesture.current = {\n startX: coordX(e),\n startY: coordY(e),\n startT: new Date(),\n isPressed: true,\n };\n\n handle(e, [onStart, onStartX, onStartY]);\n !touchEnabled() && subscribe(document);\n }, { capture: useCapture, passive: false });\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n touchEnabled() && subscribe(el);\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX, startY } = gesture.current;\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n\n if (gesture.current.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [_onMove, gesture.current.isSlideX && onMoveX, gesture.current.isSlideY && onMoveY]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current;\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = isSlide;\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (e.type === 'touchend' || e.type === 'touchcancel') {\n onLeave && onLeave(e);\n }\n\n !touchEnabled() && subscribe(null);\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null) {\n listeners.forEach((l) => l.add(el));\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n if ((e.target as HTMLElement).tagName === 'A') {\n e.preventDefault();\n }\n if (noSlideClick) {\n e.stopPropagation();\n } else {\n onClickCapture && onClickCapture(e);\n }\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n"],"file":"Touch.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Touch/Touch.tsx"],"names":["Touch","onStart","onStartX","onStartY","_onMove","onMove","onMoveX","onMoveY","onLeave","onEnter","_onEnd","onEnd","onEndX","onEndY","onClickCapture","usePointerHover","slideThreshold","useCapture","Component","getRootRef","noSlideClick","stopPropagation","restProps","document","events","React","useMemo","getSupportedEvents","didSlide","useRef","gesture","handle","e","handers","forEach","cb","duration","Date","now","current","startT","getTime","originalEvent","enterHandler","leaveHandler","startHandler","initGesture","subscribe","target","capture","passive","containerRef","el","add","isPressed","isX","isY","startX","startY","shiftX","shiftY","shiftXAbs","Math","abs","shiftYAbs","touches","length","willBeX","willBeY","willBeSlidedX","willBeSlidedY","Object","assign","isSlideX","isSlideY","isSlide","listenerParams","listeners","l","onDragStart","tagName","preventDefault","postGestureClick","closest"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;AACA;;AACA;;AACA;;;;AAkDO,IAAMA,KAA2B,GAAG,SAA9BA,KAA8B,OAqBzB;AAAA,MApBhBC,OAoBgB,QApBhBA,OAoBgB;AAAA,MAnBhBC,QAmBgB,QAnBhBA,QAmBgB;AAAA,MAlBhBC,QAkBgB,QAlBhBA,QAkBgB;AAAA,MAjBRC,OAiBQ,QAjBhBC,MAiBgB;AAAA,MAhBhBC,OAgBgB,QAhBhBA,OAgBgB;AAAA,MAfhBC,OAegB,QAfhBA,OAegB;AAAA,MAdhBC,OAcgB,QAdhBA,OAcgB;AAAA,MAbhBC,OAagB,QAbhBA,OAagB;AAAA,MAZTC,MAYS,QAZhBC,KAYgB;AAAA,MAXhBC,MAWgB,QAXhBA,MAWgB;AAAA,MAVhBC,MAUgB,QAVhBA,MAUgB;AAAA,MAThBC,cASgB,QAThBA,cASgB;AAAA,MARhBC,eAQgB,QARhBA,eAQgB;AAAA,iCAPhBC,cAOgB;AAAA,MAPhBA,cAOgB,oCAPC,CAOD;AAAA,6BANhBC,UAMgB;AAAA,MANhBA,UAMgB,gCANH,KAMG;AAAA,4BALhBC,SAKgB;AAAA,MALhBA,SAKgB,+BALJ,KAKI;AAAA,MAJhBC,UAIgB,QAJhBA,UAIgB;AAAA,+BAHhBC,YAGgB;AAAA,MAHhBA,YAGgB,kCAHD,KAGC;AAAA,kCAFhBC,eAEgB;AAAA,MAFhBA,eAEgB,qCAFE,KAEF;AAAA,MADbC,SACa;;AAChB,gBAAqB,kBAArB;AAAA,MAAQC,QAAR,WAAQA,QAAR;;AACA,MAAMC,MAAM,GAAGC,KAAK,CAACC,OAAN,CAAcC,yBAAd,EAAkC,EAAlC,CAAf;AACA,MAAMC,QAAQ,GAAGH,KAAK,CAACI,MAAN,CAAa,KAAb,CAAjB;AACA,MAAMC,OAAO,GAAGL,KAAK,CAACI,MAAN,CAA+B,IAA/B,CAAhB;;AACA,MAAME,MAAM,GAAG,SAATA,MAAS,CAACC,CAAD,EAAoBC,OAApB,EAAqD;AAClEZ,IAAAA,eAAe,IAAIW,CAAC,CAACX,eAAF,EAAnB;AACAY,IAAAA,OAAO,CAACC,OAAR,CAAgB,UAACC,EAAD,EAAQ;AACtB,UAAMC,QAAQ,GAAGC,IAAI,CAACC,GAAL,KAAaR,OAAO,CAACS,OAAR,CAAgBC,MAAhB,CAAuBC,OAAvB,EAA9B;AACAN,MAAAA,EAAE,IAAIA,EAAE,6DAAML,OAAO,CAACS,OAAd;AAAkCH,QAAAA,QAAQ,EAARA,QAAlC;AAA4CM,QAAAA,aAAa,EAAEV;AAA3D,SAAR;AACD,KAHD;AAID,GAND;;AAQA,MAAMW,YAAY,GAAG,wCAAiB5B,eAAe,GAAG,cAAH,GAAoB,YAApD,EAAkEN,OAAlE,CAArB;AACA,MAAMmC,YAAY,GAAG,wCAAiB7B,eAAe,GAAG,cAAH,GAAoB,YAApD,EAAkEP,OAAlE,CAArB;AACA,MAAMqC,YAAY,GAAG,wCAAiBrB,MAAM,CAAC,CAAD,CAAvB,EAA4B,UAACQ,CAAD,EAAuB;AACtEF,IAAAA,OAAO,CAACS,OAAR,GAAkBO,WAAW,CAAC,mBAAOd,CAAP,CAAD,EAAY,mBAAOA,CAAP,CAAZ,CAA7B;AAEAD,IAAAA,MAAM,CAACC,CAAD,EAAI,CAAC/B,OAAD,EAAUC,QAAV,EAAoBC,QAApB,CAAJ,CAAN,CAHsE,CAItE;;AACA4C,IAAAA,SAAS,CAAC,2BACR;AACA;AAFQ,MAGNf,CAAC,CAACgB,MAHI,CAIR;AACA;AACA;AANQ,MAONzB,QAPK,CAAT;AAQD,GAboB,EAalB;AAAE0B,IAAAA,OAAO,EAAEhC,UAAX;AAAuBiC,IAAAA,OAAO,EAAE;AAAhC,GAbkB,CAArB;AAcA,MAAMC,YAAY,GAAG,gCAAahC,UAAb,CAArB;AAEA,4DAA0B,YAAM;AAC9B,QAAMiC,EAAE,GAAGD,YAAY,CAACZ,OAAxB;AACAI,IAAAA,YAAY,CAACU,GAAb,CAAiBD,EAAjB;AACAR,IAAAA,YAAY,CAACS,GAAb,CAAiBD,EAAjB;AACAP,IAAAA,YAAY,CAACQ,GAAb,CAAiBD,EAAjB;AACD,GALD,EAKG,CAAClC,SAAD,CALH;;AAOA,WAASb,MAAT,CAAgB2B,CAAhB,EAAmC;AACjC,2BAAgDF,OAAO,CAACS,OAAxD;AAAA,QAAQe,SAAR,oBAAQA,SAAR;AAAA,QAAmBC,GAAnB,oBAAmBA,GAAnB;AAAA,QAAwBC,GAAxB,oBAAwBA,GAAxB;AAAA,QAA6BC,MAA7B,oBAA6BA,MAA7B;AAAA,QAAqCC,MAArC,oBAAqCA,MAArC;;AAEA,QAAIJ,SAAJ,EAAe;AACb;AACA,UAAMK,MAAM,GAAG,mBAAO3B,CAAP,IAAYyB,MAA3B;AACA,UAAMG,MAAM,GAAG,mBAAO5B,CAAP,IAAY0B,MAA3B,CAHa,CAKb;;AACA,UAAMG,SAAS,GAAGC,IAAI,CAACC,GAAL,CAASJ,MAAT,CAAlB;AACA,UAAMK,SAAS,GAAGF,IAAI,CAACC,GAAL,CAASH,MAAT,CAAlB,CAPa,CASb;;AACA,UAAI,CAAC,CAAC5B,CAAC,CAACiC,OAAJ,IAAejC,CAAC,CAACiC,OAAF,CAAUC,MAAV,GAAmB,CAAtC,EAAyC;AACvC,eAAOvD,KAAK,CAACqB,CAAD,CAAZ;AACD,OAZY,CAcb;;;AACA,UAAI,CAACuB,GAAD,IAAQ,CAACC,GAAb,EAAkB;AAChB,YAAMW,OAAO,GAAGN,SAAS,IAAI7C,cAAb,IAA+B6C,SAAS,GAAGG,SAA3D;AACA,YAAMI,OAAO,GAAGJ,SAAS,IAAIhD,cAAb,IAA+BgD,SAAS,GAAGH,SAA3D;AACA,YAAMQ,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC7D,OAAF,IAAa,CAAC,CAACF,OAApB,CAA7B;AACA,YAAMkE,aAAa,GAAGF,OAAO,KAAK,CAAC,CAAC7D,OAAF,IAAa,CAAC,CAACH,OAApB,CAA7B;AAEAmE,QAAAA,MAAM,CAACC,MAAP,CAAc1C,OAAO,CAACS,OAAtB,EAA+B;AAC7BiB,UAAAA,GAAG,EAAEY,OADwB;AAE7Bb,UAAAA,GAAG,EAAEY,OAFwB;AAG7BM,UAAAA,QAAQ,EAAEJ,aAHmB;AAI7BK,UAAAA,QAAQ,EAAEJ,aAJmB;AAK7BK,UAAAA,OAAO,EAAEN,aAAa,IAAIC;AALG,SAA/B;AAOD;;AAED,UAAIxC,OAAO,CAACS,OAAR,CAAgBoC,OAApB,EAA6B;AAC3BJ,QAAAA,MAAM,CAACC,MAAP,CAAc1C,OAAO,CAACS,OAAtB,EAA+B;AAC7BoB,UAAAA,MAAM,EAANA,MAD6B;AAE7BC,UAAAA,MAAM,EAANA,MAF6B;AAG7BC,UAAAA,SAAS,EAATA,SAH6B;AAI7BG,UAAAA,SAAS,EAATA;AAJ6B,SAA/B;AAOAjC,QAAAA,MAAM,CAACC,CAAD,EAAI,CAAC5B,OAAD,EAAU0B,OAAO,CAACS,OAAR,CAAgBkC,QAAhB,IAA4BnE,OAAtC,EAA+CwB,OAAO,CAACS,OAAR,CAAgBmC,QAAhB,IAA4BnE,OAA3E,CAAJ,CAAN;AACD;AACF;AACF;;AAED,WAASI,KAAT,CAAeqB,CAAf,EAAkC;AAChC,4BAAmDF,OAAO,CAACS,OAA3D;AAAA,QAAQe,SAAR,qBAAQA,SAAR;AAAA,QAAmBqB,OAAnB,qBAAmBA,OAAnB;AAAA,QAA4BF,QAA5B,qBAA4BA,QAA5B;AAAA,QAAsCC,QAAtC,qBAAsCA,QAAtC;;AAEA,QAAIpB,SAAJ,EAAe;AACbvB,MAAAA,MAAM,CAACC,CAAD,EAAI,CAACtB,MAAD,EAASgE,QAAQ,IAAI7D,MAArB,EAA6B4D,QAAQ,IAAI7D,MAAzC,CAAJ,CAAN;AACD;;AAEDgB,IAAAA,QAAQ,CAACW,OAAT,GAAmBoC,OAAnB;AACA7C,IAAAA,OAAO,CAACS,OAAR,GAAkB,EAAlB,CARgC,CAUhC;;AACA,QAAI,0BAAJ,EAAoB;AAClB/B,MAAAA,OAAO,IAAIA,OAAO,CAACwB,CAAD,CAAlB;AACD;;AACDe,IAAAA,SAAS,CAAC,IAAD,CAAT;AACD;;AAED,MAAM6B,cAAc,GAAG;AAAE3B,IAAAA,OAAO,EAAEhC,UAAX;AAAuBiC,IAAAA,OAAO,EAAE;AAAhC,GAAvB;AACA,MAAM2B,SAAS,GAAG,CAChB,wCAAiBrD,MAAM,CAAC,CAAD,CAAvB,EAA4BnB,MAA5B,EAAoCuE,cAApC,CADgB,EAEhB,wCAAiBpD,MAAM,CAAC,CAAD,CAAvB,EAA4Bb,KAA5B,EAAmCiE,cAAnC,CAFgB,EAGhB,wCAAiBpD,MAAM,CAAC,CAAD,CAAvB,EAA4Bb,KAA5B,EAAmCiE,cAAnC,CAHgB,CAAlB;;AAKA,WAAS7B,SAAT,CAAmBK,EAAnB,EAAsD;AACpDyB,IAAAA,SAAS,CAAC3C,OAAV,CAAkB,UAAC4C,CAAD;AAAA,aAAOA,CAAC,CAACzB,GAAF,CAAMD,EAAN,CAAP;AAAA,KAAlB;AACD;AAED;AACF;AACA;AACA;;;AACE,MAAM2B,WAAW,GAAG,SAAdA,WAAc,CAAC/C,CAAD,EAAqC;AACvD,QAAMgB,MAAM,GAAGhB,CAAC,CAACgB,MAAjB;;AACA,QAAIA,MAAM,CAACgC,OAAP,KAAmB,GAAnB,IAA0BhC,MAAM,CAACgC,OAAP,KAAmB,KAAjD,EAAwD;AACtDhD,MAAAA,CAAC,CAACiD,cAAF;AACD;AACF,GALD;AAOA;AACF;AACA;AACA;;;AACE,MAAMC,gBAAuC,GAAG,SAA1CA,gBAA0C,CAAClD,CAAD,EAAO;AACrD,QAAI,CAACJ,QAAQ,CAACW,OAAd,EAAuB;AACrB,aAAOzB,cAAc,IAAIA,cAAc,CAACkB,CAAD,CAAvC;AACD,KAHoD,CAIrD;;;AACA,QAAKA,CAAC,CAACgB,MAAH,CAA0BmC,OAA1B,CAAkC,GAAlC,CAAJ,EAA4C;AAC1CnD,MAAAA,CAAC,CAACiD,cAAF;AACD;;AACD,QAAI7D,YAAJ,EAAkB;AAChBY,MAAAA,CAAC,CAACX,eAAF;AACD,KAFD,MAEO;AACLP,MAAAA,cAAc,IAAIA,cAAc,CAACkB,CAAD,CAAhC;AACD;;AACDJ,IAAAA,QAAQ,CAACW,OAAT,GAAmB,KAAnB;AACD,GAdD;;AAgBA,SACE,qCAAC,SAAD,6BACMjB,SADN;AAEE,IAAA,WAAW,EAAEyD,WAFf;AAGE,IAAA,cAAc,EAAEG,gBAHlB;AAIE,IAAA,GAAG,EAAE/B;AAJP,KADF;AAQD,CA3KM;;;;AA6KP,SAASL,WAAT,CAAqBW,MAArB,EAAqCC,MAArC,EAA8D;AAC5D,SAAO;AACLD,IAAAA,MAAM,EAANA,MADK;AAELC,IAAAA,MAAM,EAANA,MAFK;AAGLlB,IAAAA,MAAM,EAAE,IAAIH,IAAJ,EAHH;AAILD,IAAAA,QAAQ,EAAE,CAJL;AAKLkB,IAAAA,SAAS,EAAE,IALN;AAMLE,IAAAA,GAAG,EAAE,KANA;AAOLD,IAAAA,GAAG,EAAE,KAPA;AAQLkB,IAAAA,QAAQ,EAAE,KARL;AASLC,IAAAA,QAAQ,EAAE,KATL;AAULC,IAAAA,OAAO,EAAE,KAVJ;AAWLhB,IAAAA,MAAM,EAAE,CAXH;AAYLC,IAAAA,MAAM,EAAE,CAZH;AAaLC,IAAAA,SAAS,EAAE,CAbN;AAcLG,IAAAA,SAAS,EAAE;AAdN,GAAP;AAgBD","sourcesContent":["import * as React from 'react';\nimport { getSupportedEvents, coordX, coordY, touchEnabled, VKUITouchEvent } from '../../lib/touch';\nimport { HasComponent, HasRootRef } from '../../types';\nimport { useDOM } from '../../lib/dom';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useEventListener } from '../../hooks/useEventListener';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\n\nexport interface TouchProps extends React.AllHTMLAttributes<HTMLElement>, HasRootRef<HTMLElement>, HasComponent {\n /**\n * Привязать onEnter и onLeave через pointer-events - работает на disabled-инпутах\n */\n usePointerHover?: boolean;\n useCapture?: boolean;\n slideThreshold?: number;\n noSlideClick?: boolean;\n onEnter?: HoverHandler;\n onLeave?: HoverHandler;\n onStart?: TouchEventHandler;\n onStartX?: TouchEventHandler;\n onStartY?: TouchEventHandler;\n onMove?: TouchEventHandler;\n onMoveX?: TouchEventHandler;\n onMoveY?: TouchEventHandler;\n onEnd?: TouchEventHandler;\n onEndX?: TouchEventHandler;\n onEndY?: TouchEventHandler;\n stopPropagation?: boolean;\n}\n\nexport interface Gesture {\n startX: number;\n startY: number;\n startT: Date;\n duration: number;\n isPressed: boolean;\n isY: boolean;\n isX: boolean;\n isSlideX: boolean;\n isSlideY: boolean;\n isSlide: boolean;\n shiftX: number;\n shiftY: number;\n shiftXAbs: number;\n shiftYAbs: number;\n}\n\nexport interface TouchEvent extends Gesture {\n originalEvent: VKUITouchEvent;\n}\n\ntype HoverHandler = (outputEvent: MouseEvent) => void;\nexport type TouchEventHandler = (e: TouchEvent) => void;\nexport type ClickHandler = (e: React.MouseEvent<HTMLElement>) => void;\nexport type DragHandler = (e: React.DragEvent<HTMLElement>) => void;\n\nexport const Touch: React.FC<TouchProps> = ({\n onStart,\n onStartX,\n onStartY,\n onMove: _onMove,\n onMoveX,\n onMoveY,\n onLeave,\n onEnter,\n onEnd: _onEnd,\n onEndX,\n onEndY,\n onClickCapture,\n usePointerHover,\n slideThreshold = 5,\n useCapture = false,\n Component = 'div',\n getRootRef,\n noSlideClick = false,\n stopPropagation = false,\n ...restProps\n}: TouchProps) => {\n const { document } = useDOM();\n const events = React.useMemo(getSupportedEvents, []);\n const didSlide = React.useRef(false);\n const gesture = React.useRef<Partial<Gesture>>(null);\n const handle = (e: VKUITouchEvent, handers: TouchEventHandler[]) => {\n stopPropagation && e.stopPropagation();\n handers.forEach((cb) => {\n const duration = Date.now() - gesture.current.startT.getTime();\n cb && cb({ ...gesture.current as Gesture, duration, originalEvent: e });\n });\n };\n\n const enterHandler = useEventListener(usePointerHover ? 'pointerenter' : 'mouseenter', onEnter);\n const leaveHandler = useEventListener(usePointerHover ? 'pointerleave' : 'mouseleave', onLeave);\n const startHandler = useEventListener(events[0], (e: VKUITouchEvent) => {\n gesture.current = initGesture(coordX(e), coordY(e));\n\n handle(e, [onStart, onStartX, onStartY]);\n // 1 line, 2 bad specs, 2 workarounds:\n subscribe(touchEnabled()\n // Touch events fire on initial target, and won't bubble if its removed\n // see: #235, #1968, https://stackoverflow.com/a/45760014\n ? e.target as HTMLElement\n // Mouse events fire on the element under pointer, so we lose move / end\n // if pointer goes outside container.\n // Can be fixed by PointerEvents' setPointerCapture later\n : document);\n }, { capture: useCapture, passive: false });\n const containerRef = useExternRef(getRootRef);\n\n useIsomorphicLayoutEffect(() => {\n const el = containerRef.current;\n enterHandler.add(el);\n leaveHandler.add(el);\n startHandler.add(el);\n }, [Component]);\n\n function onMove(e: VKUITouchEvent) {\n const { isPressed, isX, isY, startX, startY } = gesture.current;\n\n if (isPressed) {\n // смещения\n const shiftX = coordX(e) - startX;\n const shiftY = coordY(e) - startY;\n\n // абсолютные значения смещений\n const shiftXAbs = Math.abs(shiftX);\n const shiftYAbs = Math.abs(shiftY);\n\n // Если определяем мультитач, то прерываем жест\n if (!!e.touches && e.touches.length > 1) {\n return onEnd(e);\n }\n\n // если мы ещё не определились\n if (!isX && !isY) {\n const willBeX = shiftXAbs >= slideThreshold && shiftXAbs > shiftYAbs;\n const willBeY = shiftYAbs >= slideThreshold && shiftYAbs > shiftXAbs;\n const willBeSlidedX = willBeX && (!!onMoveX || !!_onMove);\n const willBeSlidedY = willBeY && (!!onMoveY || !!_onMove);\n\n Object.assign(gesture.current, {\n isY: willBeY,\n isX: willBeX,\n isSlideX: willBeSlidedX,\n isSlideY: willBeSlidedY,\n isSlide: willBeSlidedX || willBeSlidedY,\n });\n }\n\n if (gesture.current.isSlide) {\n Object.assign(gesture.current, {\n shiftX,\n shiftY,\n shiftXAbs,\n shiftYAbs,\n });\n\n handle(e, [_onMove, gesture.current.isSlideX && onMoveX, gesture.current.isSlideY && onMoveY]);\n }\n }\n }\n\n function onEnd(e: VKUITouchEvent) {\n const { isPressed, isSlide, isSlideX, isSlideY } = gesture.current;\n\n if (isPressed) {\n handle(e, [_onEnd, isSlideY && onEndY, isSlideX && onEndX]);\n }\n\n didSlide.current = isSlide;\n gesture.current = {};\n\n // Если это был тач-евент, симулируем отмену hover\n if (touchEnabled()) {\n onLeave && onLeave(e);\n }\n subscribe(null);\n }\n\n const listenerParams = { capture: useCapture, passive: false };\n const listeners = [\n useEventListener(events[1], onMove, listenerParams),\n useEventListener(events[2], onEnd, listenerParams),\n useEventListener(events[3], onEnd, listenerParams),\n ];\n function subscribe(el: HTMLElement | Document | null) {\n listeners.forEach((l) => l.add(el));\n }\n\n /**\n * Обработчик событий dragstart\n * Отменяет нативное браузерное поведение для вложенных ссылок и изображений\n */\n const onDragStart = (e: React.DragEvent<HTMLElement>) => {\n const target = e.target as HTMLElement;\n if (target.tagName === 'A' || target.tagName === 'IMG') {\n e.preventDefault();\n }\n };\n\n /**\n * Обработчик клика по компоненту\n * Отменяет переход по вложенной ссылке, если был зафиксирован свайп\n */\n const postGestureClick: typeof onClickCapture = (e) => {\n if (!didSlide.current) {\n return onClickCapture && onClickCapture(e);\n }\n // eslint-disable-next-line no-restricted-properties\n if ((e.target as HTMLElement).closest('a')) {\n e.preventDefault();\n }\n if (noSlideClick) {\n e.stopPropagation();\n } else {\n onClickCapture && onClickCapture(e);\n }\n didSlide.current = false;\n };\n\n return (\n <Component\n {...restProps}\n onDragStart={onDragStart}\n onClickCapture={postGestureClick}\n ref={containerRef}\n />\n );\n};\n\nfunction initGesture(startX: number, startY: number): Gesture {\n return {\n startX,\n startY,\n startT: new Date(),\n duration: 0,\n isPressed: true,\n isY: false,\n isX: false,\n isSlideX: false,\n isSlideY: false,\n isSlide: false,\n shiftX: 0,\n shiftY: 0,\n shiftXAbs: 0,\n shiftYAbs: 0,\n };\n}\n"],"file":"Touch.js"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
+
import { HasComponent } from '../../../types';
|
|
2
3
|
import './Caption.css';
|
|
3
|
-
export interface CaptionProps extends React.AllHTMLAttributes<HTMLElement
|
|
4
|
+
export interface CaptionProps extends React.AllHTMLAttributes<HTMLElement>, HasComponent {
|
|
4
5
|
weight: 'regular' | 'medium' | 'semibold' | 'bold';
|
|
5
6
|
level: '1' | '2' | '3' | '4';
|
|
6
7
|
caps?: boolean;
|
|
7
|
-
Component?: React.ElementType;
|
|
8
8
|
}
|
|
9
9
|
declare const Caption: React.FC<CaptionProps>;
|
|
10
10
|
export default Caption;
|