@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
|
@@ -11,8 +11,6 @@ exports.ModalRootDesktop = void 0;
|
|
|
11
11
|
|
|
12
12
|
var _jsxRuntime = require("../../lib/jsxRuntime");
|
|
13
13
|
|
|
14
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
15
|
-
|
|
16
14
|
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
17
15
|
|
|
18
16
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
@@ -31,8 +29,6 @@ var React = _interopRequireWildcard(require("react"));
|
|
|
31
29
|
|
|
32
30
|
var _classNames = require("../../lib/classNames");
|
|
33
31
|
|
|
34
|
-
var _utils = require("../../lib/utils");
|
|
35
|
-
|
|
36
32
|
var _supportEvents = require("../../lib/supportEvents");
|
|
37
33
|
|
|
38
34
|
var _withPlatform = require("../../hoc/withPlatform");
|
|
@@ -43,8 +39,6 @@ var _ModalRootContext = _interopRequireDefault(require("./ModalRootContext"));
|
|
|
43
39
|
|
|
44
40
|
var _ConfigProviderContext = require("../ConfigProvider/ConfigProviderContext");
|
|
45
41
|
|
|
46
|
-
var _types = require("./types");
|
|
47
|
-
|
|
48
42
|
var _platform = require("../../lib/platform");
|
|
49
43
|
|
|
50
44
|
var _getClassName = require("../../helpers/getClassName");
|
|
@@ -55,9 +49,12 @@ var _getNavId = require("../../lib/getNavId");
|
|
|
55
49
|
|
|
56
50
|
var _warnOnce = require("../../lib/warnOnce");
|
|
57
51
|
|
|
52
|
+
var _FocusTrap = require("../FocusTrap/FocusTrap");
|
|
53
|
+
|
|
54
|
+
var _useModalManager = require("./useModalManager");
|
|
55
|
+
|
|
58
56
|
var _excluded = ["id"];
|
|
59
57
|
var warn = (0, _warnOnce.warnOnce)('ModalRoot');
|
|
60
|
-
var IS_DEV = process.env.NODE_ENV === 'development';
|
|
61
58
|
|
|
62
59
|
var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
63
60
|
(0, _inherits2.default)(ModalRootDesktopComponent, _React$Component);
|
|
@@ -69,75 +66,11 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
69
66
|
|
|
70
67
|
(0, _classCallCheck2.default)(this, ModalRootDesktopComponent);
|
|
71
68
|
_this = _super.call(this, props);
|
|
72
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "modalsState", void 0);
|
|
73
69
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maskElementRef", void 0);
|
|
74
70
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "maskAnimationFrame", void 0);
|
|
75
71
|
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "modalRootContext", void 0);
|
|
76
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "
|
|
77
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "handleKeyDownEsc", function (e) {
|
|
78
|
-
if (e.key === 'Escape') {
|
|
79
|
-
_this.triggerActiveModalClose();
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "componentWillUnmount", function () {
|
|
83
|
-
_this.props.document.removeEventListener('keydown', _this.handleKeyDownEsc);
|
|
84
|
-
});
|
|
85
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "prevNextSwitchEndHandler", function () {
|
|
86
|
-
_this.activeTransitions = Math.max(0, _this.activeTransitions - 1);
|
|
87
|
-
|
|
88
|
-
if (_this.activeTransitions > 0) {
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
var activeModal = _this.state.nextModal;
|
|
93
|
-
var newState = {
|
|
94
|
-
prevModal: null,
|
|
95
|
-
nextModal: null,
|
|
96
|
-
visibleModals: [activeModal],
|
|
97
|
-
activeModal: activeModal,
|
|
98
|
-
animated: false,
|
|
99
|
-
switching: false
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
if (!activeModal) {
|
|
103
|
-
newState.history = [];
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
_this.setState(newState);
|
|
107
|
-
});
|
|
108
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "triggerActiveModalClose", function () {
|
|
109
|
-
var activeModalState = _this.modalsState[_this.state.activeModal];
|
|
110
|
-
|
|
111
|
-
if (activeModalState) {
|
|
112
|
-
_this.doCloseModal(activeModalState);
|
|
113
|
-
}
|
|
114
|
-
});
|
|
115
|
-
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "doCloseModal", function (modalState) {
|
|
116
|
-
if ((0, _utils.isFunction)(modalState.onClose)) {
|
|
117
|
-
modalState.onClose();
|
|
118
|
-
} else if ((0, _utils.isFunction)(_this.props.onClose)) {
|
|
119
|
-
_this.props.onClose(modalState.id);
|
|
120
|
-
} else if (IS_DEV) {
|
|
121
|
-
warn('onClose is undefined');
|
|
122
|
-
}
|
|
123
|
-
});
|
|
124
|
-
var _activeModal = props.activeModal;
|
|
125
|
-
_this.state = {
|
|
126
|
-
activeModal: null,
|
|
127
|
-
prevModal: null,
|
|
128
|
-
nextModal: _activeModal,
|
|
129
|
-
visibleModals: _activeModal ? [_activeModal] : [],
|
|
130
|
-
animated: !!_activeModal,
|
|
131
|
-
switching: false,
|
|
132
|
-
history: _activeModal ? [_activeModal] : [],
|
|
133
|
-
isBack: false,
|
|
134
|
-
inited: false
|
|
135
|
-
};
|
|
72
|
+
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), "restoreFocusTo", void 0);
|
|
136
73
|
_this.maskElementRef = /*#__PURE__*/React.createRef();
|
|
137
|
-
_this.activeTransitions = 0;
|
|
138
|
-
|
|
139
|
-
_this.initModalsState();
|
|
140
|
-
|
|
141
74
|
_this.modalRootContext = {
|
|
142
75
|
updateModalHeight: function updateModalHeight() {
|
|
143
76
|
return undefined;
|
|
@@ -145,142 +78,85 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
145
78
|
registerModal: function registerModal(_ref) {
|
|
146
79
|
var id = _ref.id,
|
|
147
80
|
data = (0, _objectWithoutProperties2.default)(_ref, _excluded);
|
|
148
|
-
return Object.assign(_this.
|
|
81
|
+
return Object.assign(_this.getModalState(id), data);
|
|
82
|
+
},
|
|
83
|
+
onClose: function onClose() {
|
|
84
|
+
return _this.props.closeActiveModal();
|
|
149
85
|
},
|
|
150
|
-
onClose: _this.triggerActiveModalClose,
|
|
151
86
|
isInsideModal: true
|
|
152
87
|
};
|
|
153
88
|
return _this;
|
|
154
89
|
}
|
|
155
90
|
|
|
156
91
|
(0, _createClass2.default)(ModalRootDesktopComponent, [{
|
|
157
|
-
key: "
|
|
92
|
+
key: "timeout",
|
|
158
93
|
get: function get() {
|
|
159
|
-
return
|
|
94
|
+
return this.props.platform === _platform.ANDROID || this.props.platform === _platform.VKCOM ? 320 : 400;
|
|
160
95
|
}
|
|
161
96
|
}, {
|
|
162
|
-
key: "
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
var modalProps = Modal.props;
|
|
166
|
-
var state = {
|
|
167
|
-
id: (0, _getNavId.getNavId)(Modal.props, warn),
|
|
168
|
-
onClose: Modal.props.onClose,
|
|
169
|
-
dynamicContentHeight: !!modalProps.dynamicContentHeight
|
|
170
|
-
}; // ModalPage props
|
|
171
|
-
|
|
172
|
-
if (typeof modalProps.settlingHeight === 'number') {
|
|
173
|
-
state.settlingHeight = modalProps.settlingHeight;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
acc[state.id] = state;
|
|
177
|
-
return acc;
|
|
178
|
-
}, {});
|
|
97
|
+
key: "modals",
|
|
98
|
+
get: function get() {
|
|
99
|
+
return React.Children.toArray(this.props.children);
|
|
179
100
|
}
|
|
180
101
|
}, {
|
|
181
|
-
key: "
|
|
182
|
-
value: function
|
|
183
|
-
this.
|
|
184
|
-
this.props.document.addEventListener('keydown', this.handleKeyDownEsc);
|
|
102
|
+
key: "getModalState",
|
|
103
|
+
value: function getModalState(id) {
|
|
104
|
+
return this.props.getModalState(id);
|
|
185
105
|
}
|
|
186
106
|
}, {
|
|
187
107
|
key: "componentDidUpdate",
|
|
188
|
-
value: function componentDidUpdate(prevProps
|
|
108
|
+
value: function componentDidUpdate(prevProps) {
|
|
189
109
|
var _this2 = this;
|
|
190
110
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {
|
|
196
|
-
return warn("[ModalRoot.componentDidUpdate] nextModal ".concat(nextModal, " not found"));
|
|
197
|
-
}
|
|
111
|
+
// transition phase 2: animate exiting modal
|
|
112
|
+
if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {
|
|
113
|
+
this.closeModal(this.props.exitingModal);
|
|
114
|
+
} // transition phase 3: animate entering modal
|
|
198
115
|
|
|
199
|
-
var history = (0, _toConsumableArray2.default)(this.state.history);
|
|
200
|
-
var isBack = false;
|
|
201
116
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
117
|
+
if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {
|
|
118
|
+
var enteringModal = this.props.enteringModal;
|
|
119
|
+
var enteringState = this.getModalState(enteringModal);
|
|
120
|
+
requestAnimationFrame(function () {
|
|
121
|
+
if (_this2.props.enteringModal === enteringModal) {
|
|
122
|
+
_this2.waitTransitionFinish(enteringState, function () {
|
|
123
|
+
return _this2.props.onEnter(enteringModal);
|
|
124
|
+
});
|
|
210
125
|
|
|
211
|
-
|
|
212
|
-
activeModal: null,
|
|
213
|
-
nextModal: nextModal,
|
|
214
|
-
prevModal: prevModal,
|
|
215
|
-
visibleModals: [nextModal, prevModal],
|
|
216
|
-
history: history,
|
|
217
|
-
isBack: isBack,
|
|
218
|
-
animated: true,
|
|
219
|
-
inited: false,
|
|
220
|
-
switching: false
|
|
221
|
-
}, function () {
|
|
222
|
-
if (nextModal === null) {
|
|
223
|
-
_this2.closeActiveModal();
|
|
224
|
-
} else {
|
|
225
|
-
_this2.initActiveModal();
|
|
126
|
+
_this2.animateModalOpacity(enteringState, true);
|
|
226
127
|
}
|
|
227
128
|
});
|
|
129
|
+
} // focus restoration
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
if (this.props.activeModal && !prevProps.activeModal) {
|
|
133
|
+
this.restoreFocusTo = this.props.document.activeElement;
|
|
228
134
|
}
|
|
229
135
|
|
|
230
|
-
if (this.
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
});
|
|
136
|
+
if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {
|
|
137
|
+
this.restoreFocusTo.focus();
|
|
138
|
+
this.restoreFocusTo = null;
|
|
234
139
|
}
|
|
235
140
|
}
|
|
236
|
-
/**
|
|
237
|
-
* Инициализирует модалку перед анимацией открытия
|
|
238
|
-
*/
|
|
239
|
-
|
|
240
141
|
}, {
|
|
241
|
-
key: "
|
|
242
|
-
value: function
|
|
243
|
-
var
|
|
244
|
-
|
|
245
|
-
if (!activeModal) {
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
var modalState = this.modalsState[activeModal];
|
|
250
|
-
|
|
251
|
-
switch (modalState.type) {
|
|
252
|
-
case _types.ModalType.PAGE:
|
|
253
|
-
modalState.settlingHeight = modalState.settlingHeight || 75;
|
|
254
|
-
break;
|
|
142
|
+
key: "closeModal",
|
|
143
|
+
value: function closeModal(id) {
|
|
144
|
+
var _this3 = this;
|
|
255
145
|
|
|
256
|
-
|
|
257
|
-
break;
|
|
258
|
-
|
|
259
|
-
default:
|
|
260
|
-
if (IS_DEV) {
|
|
261
|
-
warn('[initActiveModal] modalState.type is unknown');
|
|
262
|
-
}
|
|
146
|
+
var prevModalState = this.getModalState(id);
|
|
263
147
|
|
|
148
|
+
if (!prevModalState) {
|
|
149
|
+
return;
|
|
264
150
|
}
|
|
265
151
|
|
|
266
|
-
this.
|
|
267
|
-
|
|
268
|
-
switching: true
|
|
152
|
+
this.waitTransitionFinish(prevModalState, function () {
|
|
153
|
+
return _this3.props.onExit(id);
|
|
269
154
|
});
|
|
270
|
-
|
|
271
|
-
}, {
|
|
272
|
-
key: "closeActiveModal",
|
|
273
|
-
value: function closeActiveModal() {
|
|
274
|
-
var prevModal = this.state.prevModal;
|
|
155
|
+
this.animateModalOpacity(prevModalState, false);
|
|
275
156
|
|
|
276
|
-
if (
|
|
277
|
-
|
|
157
|
+
if (!this.props.activeModal) {
|
|
158
|
+
this.setMaskOpacity(prevModalState, 0);
|
|
278
159
|
}
|
|
279
|
-
|
|
280
|
-
var prevModalState = this.modalsState[prevModal];
|
|
281
|
-
this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
|
|
282
|
-
this.animateModalOpacity(prevModalState, false);
|
|
283
|
-
this.setMaskOpacity(prevModalState, 0);
|
|
284
160
|
}
|
|
285
161
|
}, {
|
|
286
162
|
key: "waitTransitionFinish",
|
|
@@ -293,60 +169,15 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
293
169
|
|
|
294
170
|
modalState.innerElement.addEventListener(_supportEvents.transitionEvent.name, onceHandler);
|
|
295
171
|
} else {
|
|
296
|
-
setTimeout(eventHandler, this.
|
|
172
|
+
setTimeout(eventHandler, this.timeout);
|
|
297
173
|
}
|
|
298
174
|
}
|
|
299
|
-
|
|
300
|
-
key: "switchPrevNext",
|
|
301
|
-
value: function switchPrevNext() {
|
|
302
|
-
var _this3 = this;
|
|
303
|
-
|
|
304
|
-
var _this$state = this.state,
|
|
305
|
-
prevModal = _this$state.prevModal,
|
|
306
|
-
nextModal = _this$state.nextModal;
|
|
307
|
-
var prevModalState = this.modalsState[prevModal];
|
|
308
|
-
var nextModalState = this.modalsState[nextModal];
|
|
309
|
-
|
|
310
|
-
if (IS_DEV && !prevModalState && !nextModalState) {
|
|
311
|
-
return warn("[switchPrevNext] prevModal is ".concat(prevModal, ", nextModal is ").concat(nextModal));
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
var prevIsCard = !!prevModalState && prevModalState.type === _types.ModalType.CARD;
|
|
315
|
-
var nextIsPage = !!nextModalState && nextModalState.type === _types.ModalType.PAGE;
|
|
316
|
-
var nextIsCard = !!nextModalState && nextModalState.type === _types.ModalType.CARD; // Ждём полного скрытия предыдущей модалки
|
|
317
|
-
|
|
318
|
-
if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {
|
|
319
|
-
this.activeTransitions += 1;
|
|
320
|
-
this.waitTransitionFinish(prevModalState, function () {
|
|
321
|
-
_this3.waitTransitionFinish(nextModalState, _this3.prevNextSwitchEndHandler);
|
|
322
|
-
|
|
323
|
-
_this3.animateModalOpacity(nextModalState, true);
|
|
324
|
-
});
|
|
325
|
-
requestAnimationFrame(function () {
|
|
326
|
-
_this3.animateModalOpacity(prevModalState, false);
|
|
327
|
-
});
|
|
328
|
-
return;
|
|
329
|
-
}
|
|
330
|
-
|
|
331
|
-
if (prevModalState && nextIsPage) {
|
|
332
|
-
this.activeTransitions += 1;
|
|
333
|
-
this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);
|
|
334
|
-
requestAnimationFrame(function () {
|
|
335
|
-
_this3.animateModalOpacity(prevModalState, false);
|
|
336
|
-
});
|
|
337
|
-
}
|
|
175
|
+
/* Анимирует сдивг модалки */
|
|
338
176
|
|
|
339
|
-
this.activeTransitions += 1;
|
|
340
|
-
this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);
|
|
341
|
-
requestAnimationFrame(function () {
|
|
342
|
-
_this3.animateModalOpacity(nextModalState, true);
|
|
343
|
-
});
|
|
344
|
-
}
|
|
345
177
|
}, {
|
|
346
178
|
key: "animateModalOpacity",
|
|
347
|
-
value:
|
|
348
|
-
|
|
349
|
-
function animateModalOpacity(modalState, display) {
|
|
179
|
+
value: function animateModalOpacity(modalState, display) {
|
|
180
|
+
modalState.innerElement.style.transitionDelay = display && this.props.delayEnter ? "".concat(this.timeout, "ms") : null;
|
|
350
181
|
modalState.innerElement.style.opacity = display ? '1' : '0';
|
|
351
182
|
}
|
|
352
183
|
/* Устанавливает прозрачность для полупрозрачной подложки */
|
|
@@ -358,7 +189,7 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
358
189
|
|
|
359
190
|
var forceOpacity = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
360
191
|
|
|
361
|
-
if (forceOpacity === null && this.
|
|
192
|
+
if (forceOpacity === null && this.props.history[0] !== modalState.id) {
|
|
362
193
|
return;
|
|
363
194
|
}
|
|
364
195
|
|
|
@@ -372,21 +203,17 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
372
203
|
}
|
|
373
204
|
});
|
|
374
205
|
}
|
|
375
|
-
/**
|
|
376
|
-
* Закрывает текущую модалку
|
|
377
|
-
*/
|
|
378
|
-
|
|
379
206
|
}, {
|
|
380
207
|
key: "render",
|
|
381
208
|
value: function render() {
|
|
382
|
-
var
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
if (!activeModal && !
|
|
209
|
+
var _this5 = this;
|
|
210
|
+
|
|
211
|
+
var _this$props = this.props,
|
|
212
|
+
exitingModal = _this$props.exitingModal,
|
|
213
|
+
activeModal = _this$props.activeModal,
|
|
214
|
+
enteringModal = _this$props.enteringModal;
|
|
215
|
+
|
|
216
|
+
if (!activeModal && !exitingModal) {
|
|
390
217
|
return null;
|
|
391
218
|
}
|
|
392
219
|
|
|
@@ -398,24 +225,27 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
398
225
|
}, 'ModalRoot--desktop')
|
|
399
226
|
}, (0, _jsxRuntime.createScopedElement)("div", {
|
|
400
227
|
vkuiClass: "ModalRoot__mask",
|
|
401
|
-
|
|
402
|
-
|
|
228
|
+
ref: this.maskElementRef,
|
|
229
|
+
onClick: this.props.closeActiveModal
|
|
403
230
|
}), (0, _jsxRuntime.createScopedElement)("div", {
|
|
404
231
|
vkuiClass: "ModalRoot__viewport"
|
|
405
232
|
}, this.modals.map(function (Modal) {
|
|
406
233
|
var modalId = (0, _getNavId.getNavId)(Modal.props, warn);
|
|
407
234
|
|
|
408
|
-
if (
|
|
235
|
+
if (modalId !== activeModal && modalId !== exitingModal) {
|
|
409
236
|
return null;
|
|
410
237
|
}
|
|
411
238
|
|
|
412
239
|
var key = "modal-".concat(modalId);
|
|
413
|
-
return (0, _jsxRuntime.createScopedElement)(
|
|
240
|
+
return (0, _jsxRuntime.createScopedElement)(_FocusTrap.FocusTrap, {
|
|
241
|
+
restoreFocus: false,
|
|
242
|
+
onClose: _this5.props.closeActiveModal,
|
|
243
|
+
timeout: _this5.timeout,
|
|
414
244
|
key: key,
|
|
415
245
|
vkuiClass: (0, _classNames.classNames)('ModalRoot__modal', {
|
|
416
|
-
'ModalRoot__modal--active': modalId === activeModal,
|
|
417
|
-
'ModalRoot__modal--prev': modalId ===
|
|
418
|
-
'ModalRoot__modal--next': modalId ===
|
|
246
|
+
'ModalRoot__modal--active': !exitingModal && !enteringModal && modalId === activeModal,
|
|
247
|
+
'ModalRoot__modal--prev': modalId === exitingModal,
|
|
248
|
+
'ModalRoot__modal--next': exitingModal && modalId === activeModal
|
|
419
249
|
})
|
|
420
250
|
}, Modal);
|
|
421
251
|
}))));
|
|
@@ -424,6 +254,6 @@ var ModalRootDesktopComponent = /*#__PURE__*/function (_React$Component) {
|
|
|
424
254
|
return ModalRootDesktopComponent;
|
|
425
255
|
}(React.Component);
|
|
426
256
|
|
|
427
|
-
var ModalRootDesktop = (0, _withContext.withContext)((0, _withPlatform.withPlatform)((0, _dom.withDOM)(ModalRootDesktopComponent)), _ConfigProviderContext.ConfigProviderContext, 'configProvider');
|
|
257
|
+
var ModalRootDesktop = (0, _withContext.withContext)((0, _withPlatform.withPlatform)((0, _dom.withDOM)((0, _useModalManager.withModalManager)()(ModalRootDesktopComponent))), _ConfigProviderContext.ConfigProviderContext, 'configProvider');
|
|
428
258
|
exports.ModalRootDesktop = ModalRootDesktop;
|
|
429
259
|
//# sourceMappingURL=ModalRootDesktop.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":["warn","IS_DEV","process","env","NODE_ENV","ModalRootDesktopComponent","props","e","key","triggerActiveModalClose","document","removeEventListener","handleKeyDownEsc","activeTransitions","Math","max","activeModal","state","nextModal","newState","prevModal","visibleModals","animated","switching","history","setState","activeModalState","modalsState","doCloseModal","modalState","onClose","id","isBack","inited","maskElementRef","React","createRef","initModalsState","modalRootContext","updateModalHeight","undefined","registerModal","data","Object","assign","isInsideModal","Children","toArray","children","modals","reduce","acc","Modal","modalProps","dynamicContentHeight","settlingHeight","initActiveModal","addEventListener","prevProps","prevState","includes","splice","indexOf","push","closeActiveModal","requestAnimationFrame","switchPrevNext","type","ModalType","PAGE","CARD","prevModalState","waitTransitionFinish","prevNextSwitchEndHandler","animateModalOpacity","setMaskOpacity","eventHandler","transitionEvent","supported","onceHandler","innerElement","name","setTimeout","platform","ANDROID","VKCOM","nextModalState","prevIsCard","nextIsPage","nextIsCard","display","style","opacity","forceOpacity","cancelAnimationFrame","maskAnimationFrame","current","translateY","translateYCurrent","min","toString","configProvider","webviewType","WebviewType","VKAPPS","map","modalId","Component","ModalRootDesktop","ConfigProviderContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { isFunction } from '../../lib/utils';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry, ModalType } from './types';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\nconst IS_DEV = process.env.NODE_ENV === 'development';\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n}\n\ninterface ModalRootState {\n activeModal?: string;\n prevModal?: string;\n nextModal?: string;\n visibleModals?: string[];\n animated?: boolean;\n switching?: boolean;\n history?: string[];\n isBack?: boolean;\n inited?: boolean;\n}\n\nclass ModalRootDesktopComponent extends React.Component<ModalRootProps & DOMProps, ModalRootState> {\n constructor(props: ModalRootProps) {\n super(props);\n\n const activeModal = props.activeModal;\n\n this.state = {\n activeModal: null,\n prevModal: null,\n nextModal: activeModal,\n visibleModals: activeModal ? [activeModal] : [],\n animated: !!activeModal,\n switching: false,\n history: activeModal ? [activeModal] : [],\n isBack: false,\n inited: false,\n };\n\n this.maskElementRef = React.createRef();\n this.activeTransitions = 0;\n\n this.initModalsState();\n\n this.modalRootContext = {\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(this.modalsState[id], data),\n onClose: this.triggerActiveModalClose,\n isInsideModal: true,\n };\n }\n\n private modalsState: { [id: string]: ModalsStateEntry };\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n\n activeTransitions: number;\n\n get modals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n initModalsState() {\n this.modalsState = this.modals.reduce<{ [id: string]: ModalsStateEntry }>((acc, Modal) => {\n const modalProps = Modal.props;\n const state: ModalsStateEntry = {\n id: getNavId(Modal.props, warn),\n onClose: Modal.props.onClose,\n dynamicContentHeight: !!modalProps.dynamicContentHeight,\n };\n\n // ModalPage props\n if (typeof modalProps.settlingHeight === 'number') {\n state.settlingHeight = modalProps.settlingHeight;\n }\n\n acc[state.id] = state;\n return acc;\n }, {});\n }\n\n handleKeyDownEsc = (e: KeyboardEvent): void => {\n if (e.key === 'Escape') {\n this.triggerActiveModalClose();\n }\n };\n\n componentDidMount() {\n this.initActiveModal();\n this.props.document.addEventListener('keydown', this.handleKeyDownEsc);\n }\n\n componentWillUnmount = () => {\n this.props.document.removeEventListener('keydown', this.handleKeyDownEsc);\n };\n\n componentDidUpdate(prevProps: ModalRootProps, prevState: ModalRootState) {\n if (this.props.activeModal !== prevProps.activeModal) {\n const nextModal = this.props.activeModal;\n const prevModal = prevProps.activeModal;\n\n if (IS_DEV && nextModal !== null && !this.modalsState[nextModal]) {\n return warn(`[ModalRoot.componentDidUpdate] nextModal ${nextModal} not found`);\n }\n\n let history = [...this.state.history];\n let isBack = false;\n\n if (nextModal === null) {\n history = [];\n } else if (history.includes(nextModal)) {\n history = history.splice(0, history.indexOf(nextModal) + 1);\n isBack = true;\n } else {\n history.push(nextModal);\n }\n\n return this.setState({\n activeModal: null,\n nextModal,\n prevModal,\n visibleModals: [nextModal, prevModal],\n history,\n isBack,\n animated: true,\n inited: false,\n switching: false,\n }, () => {\n if (nextModal === null) {\n this.closeActiveModal();\n } else {\n this.initActiveModal();\n }\n });\n }\n\n if (this.state.switching && !prevState.switching) {\n requestAnimationFrame(() => this.switchPrevNext());\n }\n }\n\n /**\n * Инициализирует модалку перед анимацией открытия\n */\n initActiveModal() {\n const activeModal = this.state.activeModal || this.state.nextModal;\n if (!activeModal) {\n return;\n }\n\n const modalState = this.modalsState[activeModal];\n\n switch (modalState.type) {\n case ModalType.PAGE:\n modalState.settlingHeight = modalState.settlingHeight || 75;\n break;\n\n case ModalType.CARD:\n break;\n\n default:\n if (IS_DEV) {\n warn('[initActiveModal] modalState.type is unknown');\n }\n }\n\n this.setState({ inited: true, switching: true });\n }\n\n closeActiveModal() {\n const { prevModal } = this.state;\n if (IS_DEV && !prevModal) {\n return warn(`[closeActiveModal] prevModal is ${prevModal}`);\n }\n\n const prevModalState = this.modalsState[prevModal];\n\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n this.animateModalOpacity(prevModalState, false);\n this.setMaskOpacity(prevModalState, 0);\n }\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400);\n }\n }\n\n switchPrevNext() {\n const { prevModal, nextModal } = this.state;\n\n const prevModalState = this.modalsState[prevModal];\n const nextModalState = this.modalsState[nextModal];\n\n if (IS_DEV && !prevModalState && !nextModalState) {\n return warn(`[switchPrevNext] prevModal is ${prevModal}, nextModal is ${nextModal}`);\n }\n\n const prevIsCard = !!prevModalState && prevModalState.type === ModalType.CARD;\n\n const nextIsPage = !!nextModalState && nextModalState.type === ModalType.PAGE;\n const nextIsCard = !!nextModalState && nextModalState.type === ModalType.CARD;\n\n // Ждём полного скрытия предыдущей модалки\n if (prevModalState && (nextIsCard || prevIsCard && nextIsPage)) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, () => {\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n this.animateModalOpacity(nextModalState, true);\n });\n\n requestAnimationFrame(() => {\n this.animateModalOpacity(prevModalState, false);\n });\n\n return;\n }\n\n if (prevModalState && nextIsPage) {\n this.activeTransitions += 1;\n this.waitTransitionFinish(prevModalState, this.prevNextSwitchEndHandler);\n requestAnimationFrame(() => {\n this.animateModalOpacity(prevModalState, false);\n });\n }\n\n this.activeTransitions += 1;\n this.waitTransitionFinish(nextModalState, this.prevNextSwitchEndHandler);\n requestAnimationFrame(() => {\n this.animateModalOpacity(nextModalState, true);\n });\n }\n\n prevNextSwitchEndHandler = () => {\n this.activeTransitions = Math.max(0, this.activeTransitions - 1);\n if (this.activeTransitions > 0) {\n return;\n }\n\n const activeModal = this.state.nextModal;\n\n const newState: ModalRootState = {\n prevModal: null,\n nextModal: null,\n visibleModals: [activeModal],\n activeModal: activeModal,\n animated: false,\n switching: false,\n };\n\n if (!activeModal) {\n newState.history = [];\n }\n\n this.setState(newState);\n };\n\n /* Анимирует сдивг модалки */\n animateModalOpacity(modalState: ModalsStateEntry, display: boolean) {\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.state.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n /**\n * Закрывает текущую модалку\n */\n triggerActiveModalClose = () => {\n const activeModalState = this.modalsState[this.state.activeModal];\n if (activeModalState) {\n this.doCloseModal(activeModalState);\n }\n };\n\n private readonly doCloseModal = (modalState: ModalsStateEntry) => {\n if (isFunction(modalState.onClose)) {\n modalState.onClose();\n } else if (isFunction(this.props.onClose)) {\n this.props.onClose(modalState.id);\n } else if (IS_DEV) {\n warn('onClose is undefined');\n }\n };\n\n render() {\n const { prevModal, activeModal, nextModal, visibleModals, animated } = this.state;\n\n if (!activeModal && !prevModal && !nextModal && !animated) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={this.modalRootContext}>\n <div\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n }, 'ModalRoot--desktop')}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n onClick={this.triggerActiveModalClose}\n ref={this.maskElementRef}\n />\n <div vkuiClass=\"ModalRoot__viewport\">\n {this.modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (!visibleModals.includes(modalId)) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <div\n key={key}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === prevModal,\n 'ModalRoot__modal--next': modalId === nextModal,\n })}\n >{Modal}</div>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootDesktop = withContext(withPlatform(withDOM<ModalRootProps>(ModalRootDesktopComponent)), ConfigProviderContext, 'configProvider');\n"],"file":"ModalRootDesktop.js"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/ModalRootDesktop.tsx"],"names":["warn","ModalRootDesktopComponent","props","maskElementRef","React","createRef","modalRootContext","updateModalHeight","undefined","registerModal","id","data","Object","assign","getModalState","onClose","closeActiveModal","isInsideModal","platform","ANDROID","VKCOM","Children","toArray","children","prevProps","exitingModal","closeModal","enteringModal","enteringState","requestAnimationFrame","waitTransitionFinish","onEnter","animateModalOpacity","activeModal","restoreFocusTo","document","activeElement","focus","prevModalState","onExit","setMaskOpacity","modalState","eventHandler","transitionEvent","supported","onceHandler","innerElement","removeEventListener","name","addEventListener","setTimeout","timeout","display","style","transitionDelay","delayEnter","opacity","forceOpacity","history","cancelAnimationFrame","maskAnimationFrame","current","translateY","translateYCurrent","Math","max","min","toString","configProvider","webviewType","WebviewType","VKAPPS","modals","map","Modal","modalId","key","Component","ModalRootDesktop","ConfigProviderContext"],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { classNames } from '../../lib/classNames';\nimport { transitionEvent } from '../../lib/supportEvents';\nimport { HasPlatform } from '../../types';\nimport { withPlatform } from '../../hoc/withPlatform';\nimport { withContext } from '../../hoc/withContext';\nimport ModalRootContext, { ModalRootContextInterface } from './ModalRootContext';\nimport {\n ConfigProviderContext,\n ConfigProviderContextInterface,\n WebviewType,\n} from '../ConfigProvider/ConfigProviderContext';\nimport { ModalsStateEntry } from './types';\nimport { ANDROID, VKCOM } from '../../lib/platform';\nimport { getClassName } from '../../helpers/getClassName';\nimport { DOMProps, withDOM } from '../../lib/dom';\nimport { getNavId } from '../../lib/getNavId';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport { ModalTransitionProps, withModalManager } from './useModalManager';\nimport './ModalRoot.css';\n\nconst warn = warnOnce('ModalRoot');\n\nexport interface ModalRootProps extends HasPlatform {\n activeModal?: string | null;\n /**\n * @ignore\n */\n configProvider?: ConfigProviderContextInterface;\n\n /**\n * Будет вызвано при закрытии активной модалки с её id\n */\n onClose?(modalId: string): void;\n}\n\nclass ModalRootDesktopComponent extends React.Component<ModalRootProps & DOMProps & ModalTransitionProps> {\n constructor(props: ModalRootProps & ModalTransitionProps) {\n super(props);\n\n this.maskElementRef = React.createRef();\n\n this.modalRootContext = {\n updateModalHeight: () => undefined,\n registerModal: ({ id, ...data }) => Object.assign(this.getModalState(id), data),\n onClose: () => this.props.closeActiveModal(),\n isInsideModal: true,\n };\n }\n\n private readonly maskElementRef: React.RefObject<HTMLDivElement>;\n private maskAnimationFrame: number;\n private readonly modalRootContext: ModalRootContextInterface;\n private restoreFocusTo: HTMLElement;\n\n private get timeout() {\n return this.props.platform === ANDROID || this.props.platform === VKCOM ? 320 : 400;\n }\n\n private get modals() {\n return React.Children.toArray(this.props.children) as React.ReactElement[];\n }\n\n getModalState(id: string) {\n return this.props.getModalState(id);\n }\n\n componentDidUpdate(prevProps: ModalRootProps & ModalTransitionProps) {\n // transition phase 2: animate exiting modal\n if (this.props.exitingModal && this.props.exitingModal !== prevProps.exitingModal) {\n this.closeModal(this.props.exitingModal);\n }\n\n // transition phase 3: animate entering modal\n if (this.props.enteringModal && this.props.enteringModal !== prevProps.enteringModal) {\n const { enteringModal } = this.props;\n const enteringState = this.getModalState(enteringModal);\n requestAnimationFrame(() => {\n if (this.props.enteringModal === enteringModal) {\n this.waitTransitionFinish(enteringState, () => this.props.onEnter(enteringModal));\n this.animateModalOpacity(enteringState, true);\n }\n });\n }\n\n // focus restoration\n if (this.props.activeModal && !prevProps.activeModal) {\n this.restoreFocusTo = this.props.document.activeElement as HTMLElement;\n }\n if (!this.props.activeModal && !this.props.exitingModal && this.restoreFocusTo) {\n this.restoreFocusTo.focus();\n this.restoreFocusTo = null;\n }\n }\n\n closeModal(id: string) {\n const prevModalState = this.getModalState(id);\n if (!prevModalState) {\n return;\n }\n\n this.waitTransitionFinish(prevModalState, () => this.props.onExit(id));\n this.animateModalOpacity(prevModalState, false);\n if (!this.props.activeModal) {\n this.setMaskOpacity(prevModalState, 0);\n }\n }\n\n waitTransitionFinish(modalState: ModalsStateEntry, eventHandler: () => void) {\n if (transitionEvent.supported) {\n const onceHandler = () => {\n modalState.innerElement.removeEventListener(transitionEvent.name, onceHandler);\n eventHandler();\n };\n\n modalState.innerElement.addEventListener(transitionEvent.name, onceHandler);\n } else {\n setTimeout(eventHandler, this.timeout);\n }\n }\n\n /* Анимирует сдивг модалки */\n animateModalOpacity(modalState: ModalsStateEntry, display: boolean) {\n modalState.innerElement.style.transitionDelay = display && this.props.delayEnter ? `${this.timeout}ms` : null;\n modalState.innerElement.style.opacity = display ? '1' : '0';\n }\n\n /* Устанавливает прозрачность для полупрозрачной подложки */\n setMaskOpacity(modalState: ModalsStateEntry, forceOpacity: number = null) {\n if (forceOpacity === null && this.props.history[0] !== modalState.id) {\n return;\n }\n\n cancelAnimationFrame(this.maskAnimationFrame);\n this.maskAnimationFrame = requestAnimationFrame(() => {\n if (this.maskElementRef.current) {\n const { translateY, translateYCurrent } = modalState;\n\n const opacity = forceOpacity === null ? 1 - (translateYCurrent - translateY) / (100 - translateY) || 0 : forceOpacity;\n this.maskElementRef.current.style.opacity = Math.max(0, Math.min(100, opacity)).toString();\n }\n });\n }\n\n render() {\n const { exitingModal, activeModal, enteringModal } = this.props;\n\n if (!activeModal && !exitingModal) {\n return null;\n }\n\n return (\n <ModalRootContext.Provider value={this.modalRootContext}>\n <div\n vkuiClass={classNames(getClassName('ModalRoot', this.props.platform), {\n 'ModalRoot--vkapps': this.props.configProvider.webviewType === WebviewType.VKAPPS,\n }, 'ModalRoot--desktop')}\n >\n <div\n vkuiClass=\"ModalRoot__mask\"\n ref={this.maskElementRef}\n onClick={this.props.closeActiveModal}\n />\n <div vkuiClass=\"ModalRoot__viewport\">\n {this.modals.map((Modal: React.ReactElement) => {\n const modalId = getNavId(Modal.props, warn);\n if (modalId !== activeModal && modalId !== exitingModal) {\n return null;\n }\n\n const key = `modal-${modalId}`;\n\n return (\n <FocusTrap\n restoreFocus={false}\n onClose={this.props.closeActiveModal}\n timeout={this.timeout}\n key={key}\n vkuiClass={classNames('ModalRoot__modal', {\n 'ModalRoot__modal--active': !exitingModal && !enteringModal && modalId === activeModal,\n 'ModalRoot__modal--prev': modalId === exitingModal,\n 'ModalRoot__modal--next': exitingModal && modalId === activeModal,\n })}\n >{Modal}</FocusTrap>\n );\n })}\n </div>\n </div>\n </ModalRootContext.Provider>\n );\n }\n}\n\nexport const ModalRootDesktop = withContext(\n withPlatform(\n withDOM<ModalRootProps>(\n withModalManager()(ModalRootDesktopComponent),\n ),\n ),\n ConfigProviderContext, 'configProvider');\n"],"file":"ModalRootDesktop.js"}
|
|
@@ -11,7 +11,6 @@ export interface ModalElements {
|
|
|
11
11
|
innerElement?: HTMLElement | null;
|
|
12
12
|
headerElement?: HTMLElement | null;
|
|
13
13
|
contentElement?: HTMLElement | null;
|
|
14
|
-
footerElement?: HTMLElement | null;
|
|
15
14
|
}
|
|
16
15
|
export interface ModalsStateEntry extends ModalElements {
|
|
17
16
|
id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"names":["ModalType"],"mappings":";;;;;;IAAYA,S;;;WAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,yBAAAA,S","sourcesContent":["export enum ModalType {\n PAGE = 'page',\n CARD = 'card',\n}\n\nexport type TranslateRange = [number, number];\n\nexport type ModalsState = { [index: string]: ModalsStateEntry };\n\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ModalRoot/types.ts"],"names":["ModalType"],"mappings":";;;;;;IAAYA,S;;;WAAAA,S;AAAAA,EAAAA,S;AAAAA,EAAAA,S;GAAAA,S,yBAAAA,S","sourcesContent":["export enum ModalType {\n PAGE = 'page',\n CARD = 'card',\n}\n\nexport type TranslateRange = [number, number];\n\nexport type ModalsState = { [index: string]: ModalsStateEntry };\n\nexport interface ModalElements {\n modalElement?: HTMLElement | null;\n innerElement?: HTMLElement | null;\n headerElement?: HTMLElement | null;\n contentElement?: HTMLElement | null;\n}\n\nexport interface ModalsStateEntry extends ModalElements {\n id: string;\n onClose?: () => any;\n type?: ModalType;\n\n settlingHeight?: number;\n dynamicContentHeight?: boolean;\n expandable?: boolean;\n\n /**\n * Процент текущего сдвига модалки\n */\n translateY?: number;\n /**\n * Процент сдвига модалки в изначальном состоянии\n */\n translateYFrom?: number;\n /**\n * Процент сдвига модалки во время взаимодействия с ней (потянуть, чтобы открыть или закрыть)\n */\n translateYCurrent?: number;\n\n touchStartContentScrollTop?: number;\n touchMovePositive?: boolean | null;\n touchShiftYPercent?: number;\n\n expanded?: boolean;\n collapsed?: boolean;\n hidden?: boolean;\n\n contentScrolled?: boolean;\n contentScrollStopTimeout?: ReturnType<typeof setTimeout>;\n\n expandedRange?: TranslateRange;\n collapsedRange?: TranslateRange;\n hiddenRange?: TranslateRange;\n}\n"],"file":"types.js"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { ModalsStateEntry } from './types';
|
|
3
|
+
interface ModalTransitionState {
|
|
4
|
+
activeModal?: string;
|
|
5
|
+
enteringModal?: string;
|
|
6
|
+
exitingModal?: string;
|
|
7
|
+
history?: string[];
|
|
8
|
+
isBack?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export interface ModalTransitionProps extends ModalTransitionState {
|
|
11
|
+
onEnter: (id: string) => void;
|
|
12
|
+
onExit: (id: string) => void;
|
|
13
|
+
getModalState: (id: string) => ModalsStateEntry;
|
|
14
|
+
closeActiveModal: VoidFunction;
|
|
15
|
+
delayEnter: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function modalTransitionReducer(state: ModalTransitionState, action: {
|
|
18
|
+
type: 'setActive' | 'entered' | 'exited' | 'inited';
|
|
19
|
+
id: string;
|
|
20
|
+
}): ModalTransitionState;
|
|
21
|
+
/**
|
|
22
|
+
* Реализует переход модалок. При смене activeModal m1 -> m2:
|
|
23
|
+
* 1. activeModal: m1, exitingModal: null, enteringModal: null, триггер перехода
|
|
24
|
+
* 2. activeModal: m2, exitingModal: m1, enteringModal: null, рендерим m2 чтобы прошел init, начинаем анимацию выхода
|
|
25
|
+
* одновременный переход между ModalPage:
|
|
26
|
+
* 3a. activeModal: m2, exitingModal: m1, enteringModal: m2
|
|
27
|
+
* 4a. exitingModal и enteringModal переходят в null в порядке завершения анимации
|
|
28
|
+
* ИЛИ дожидаемся скрытия ModalCard
|
|
29
|
+
* 3b. activeModal: m2, exitingModal: null, enteringModal: m2
|
|
30
|
+
* 4b. enteringModal переходит в null после завершения анимации
|
|
31
|
+
* 5. activeModal: m2, exitingModal: null, enteringModal: null, переход закончен
|
|
32
|
+
*/
|
|
33
|
+
export declare function useModalManager(activeModal: string, children: React.ReactNode | React.ReactNode[], onClose: (id: string) => void, initModal?: (state: ModalsStateEntry) => void): ModalTransitionProps;
|
|
34
|
+
export declare function withModalManager(initModal?: (a: ModalsStateEntry) => void): <Props extends ModalTransitionProps>(Wrapped: React.ComponentType<Props>) => React.FC<Pick<Props, Exclude<keyof Props, "isBack" | "onEnter" | "history" | "onExit" | "getModalState" | "closeActiveModal" | "delayEnter" | "activeModal" | "enteringModal" | "exitingModal">> & {
|
|
35
|
+
activeModal: string;
|
|
36
|
+
}>;
|
|
37
|
+
export {};
|