@vkontakte/vkui 5.10.0 → 5.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.d.ts.map +1 -1
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js +4 -8
- package/dist/cjs/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cjs/components/AppRoot/ScrollContext.js +2 -2
- package/dist/cjs/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +3 -2
- package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js +2 -1
- package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cjs/components/Chip/Chip.d.ts +1 -0
- package/dist/cjs/components/Chip/Chip.d.ts.map +1 -1
- package/dist/cjs/components/Chip/Chip.js.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js +38 -4
- package/dist/cjs/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelect.js +9 -4
- package/dist/cjs/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/cjs/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js +15 -10
- package/dist/cjs/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.d.ts +2 -2
- package/dist/cjs/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cjs/components/DateInput/DateInput.js +4 -3
- package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/cjs/components/DatePicker/DatePicker.js +3 -2
- package/dist/cjs/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cjs/components/ModalRoot/ModalRoot.js +20 -3
- package/dist/cjs/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/cjs/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cjs/components/Switch/Switch.d.ts +1 -1
- package/dist/cjs/components/Switch/Switch.d.ts.map +1 -1
- package/dist/cjs/components/Switch/Switch.js +22 -3
- package/dist/cjs/components/Switch/Switch.js.map +1 -1
- package/dist/cjs/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/cjs/components/TabsItem/TabsItem.js +4 -1
- package/dist/cjs/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/cjs/components/Tooltip/Tooltip.js +4 -2
- package/dist/cjs/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cjs/components/View/View.d.ts.map +1 -1
- package/dist/cjs/components/View/View.js +17 -4
- package/dist/cjs/components/View/View.js.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js +2 -1
- package/dist/cjs/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js +1 -1
- package/dist/cjs/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cjs/hooks/useDateInput.js +2 -2
- package/dist/cjs/hooks/useDateInput.js.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/useDraggableWithDomApi.d.ts.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js +17 -3
- package/dist/cjs/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/utils.d.ts.map +1 -1
- package/dist/cjs/hooks/useDraggableWithDomApi/utils.js +3 -0
- package/dist/cjs/hooks/useDraggableWithDomApi/utils.js.map +1 -1
- package/dist/cjs/lib/adaptivity/functions.d.ts +2 -0
- package/dist/cjs/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/cjs/lib/adaptivity/functions.js +13 -1
- package/dist/cjs/lib/adaptivity/functions.js.map +1 -1
- package/dist/cjs/lib/dom.d.ts +1 -0
- package/dist/cjs/lib/dom.d.ts.map +1 -1
- package/dist/cjs/lib/dom.js +13 -0
- package/dist/cjs/lib/dom.js.map +1 -1
- package/dist/cjs/lib/floating/adapters.d.ts.map +1 -1
- package/dist/cjs/lib/floating/adapters.js +1 -7
- package/dist/cjs/lib/floating/adapters.js.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.d.ts.map +1 -1
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js +5 -9
- package/dist/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/components/AppRoot/ScrollContext.js +2 -2
- package/dist/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.d.ts +3 -2
- package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/components/CalendarRange/CalendarRange.js +2 -1
- package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/components/Chip/Chip.d.ts +1 -0
- package/dist/components/Chip/Chip.d.ts.map +1 -1
- package/dist/components/Chip/Chip.js.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/components/ChipsSelect/ChipsSelect.js +38 -4
- package/dist/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelect.js +9 -4
- package/dist/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/components/CustomSelect/CustomSelectInput.js +15 -10
- package/dist/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/components/CustomSelectOption/CustomSelectOption.d.ts +2 -2
- package/dist/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/components/DateInput/DateInput.js +4 -3
- package/dist/components/DateInput/DateInput.js.map +1 -1
- package/dist/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/components/DatePicker/DatePicker.js +3 -2
- package/dist/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/components/ModalRoot/ModalRoot.js +20 -3
- package/dist/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/components/Switch/Switch.d.ts +1 -1
- package/dist/components/Switch/Switch.d.ts.map +1 -1
- package/dist/components/Switch/Switch.js +22 -3
- package/dist/components/Switch/Switch.js.map +1 -1
- package/dist/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/components/TabsItem/TabsItem.js +4 -1
- package/dist/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +4 -2
- package/dist/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/View/View.d.ts.map +1 -1
- package/dist/components/View/View.js +17 -4
- package/dist/components/View/View.js.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js +2 -1
- package/dist/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js +1 -1
- package/dist/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/components.css +20 -20
- package/dist/components.css.map +1 -1
- package/dist/components.js.tmp +269 -90
- package/dist/cssm/components/ActionSheetItem/ActionSheetItem.module.css +1 -0
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.d.ts.map +1 -1
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js +5 -9
- package/dist/cssm/components/AdaptivityProvider/AdaptivityProvider.js.map +1 -1
- package/dist/cssm/components/AppRoot/ScrollContext.js +2 -2
- package/dist/cssm/components/AppRoot/ScrollContext.js.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +3 -2
- package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js +2 -1
- package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
- package/dist/cssm/components/Chip/Chip.d.ts +1 -0
- package/dist/cssm/components/Chip/Chip.d.ts.map +1 -1
- package/dist/cssm/components/Chip/Chip.js.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.d.ts.map +1 -1
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js +34 -4
- package/dist/cssm/components/ChipsSelect/ChipsSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelect.js +6 -2
- package/dist/cssm/components/CustomSelect/CustomSelect.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js +2 -2
- package/dist/cssm/components/CustomSelect/CustomSelectClearButton.js.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.d.ts.map +1 -1
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js +15 -11
- package/dist/cssm/components/CustomSelect/CustomSelectInput.js.map +1 -1
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.d.ts +2 -2
- package/dist/cssm/components/CustomSelectOption/CustomSelectOption.js.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
- package/dist/cssm/components/DateInput/DateInput.js +4 -3
- package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
- package/dist/cssm/components/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/cssm/components/DatePicker/DatePicker.js +1 -1
- package/dist/cssm/components/DatePicker/DatePicker.js.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
- package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
- package/dist/cssm/components/ModalRoot/ModalRoot.js +20 -3
- package/dist/cssm/components/ModalRoot/ModalRoot.js.map +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js +1 -1
- package/dist/cssm/components/PanelHeaderButton/PanelHeaderButton.js.map +1 -1
- package/dist/cssm/components/PullToRefresh/PullToRefresh.module.css +5 -0
- package/dist/cssm/components/Switch/Switch.d.ts +1 -1
- package/dist/cssm/components/Switch/Switch.d.ts.map +1 -1
- package/dist/cssm/components/Switch/Switch.js +19 -1
- package/dist/cssm/components/Switch/Switch.js.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.d.ts.map +1 -1
- package/dist/cssm/components/TabsItem/TabsItem.js +4 -1
- package/dist/cssm/components/TabsItem/TabsItem.js.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/cssm/components/Tooltip/Tooltip.js +3 -2
- package/dist/cssm/components/Tooltip/Tooltip.js.map +1 -1
- package/dist/cssm/components/View/View.d.ts.map +1 -1
- package/dist/cssm/components/View/View.js +17 -4
- package/dist/cssm/components/View/View.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js +2 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
- package/dist/cssm/components/VisuallyHidden/VisuallyHidden.module.css +12 -0
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js +1 -1
- package/dist/cssm/components/WriteBarIcon/WriteBarIcon.js.map +1 -1
- package/dist/cssm/hooks/useDateInput.js +2 -2
- package/dist/cssm/hooks/useDateInput.js.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/useDraggableWithDomApi.d.ts.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js +15 -3
- package/dist/cssm/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/utils.d.ts.map +1 -1
- package/dist/cssm/hooks/useDraggableWithDomApi/utils.js +3 -0
- package/dist/cssm/hooks/useDraggableWithDomApi/utils.js.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.d.ts +2 -0
- package/dist/cssm/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/cssm/lib/adaptivity/functions.js +7 -1
- package/dist/cssm/lib/adaptivity/functions.js.map +1 -1
- package/dist/cssm/lib/dom.d.ts +1 -0
- package/dist/cssm/lib/dom.d.ts.map +1 -1
- package/dist/cssm/lib/dom.js +10 -0
- package/dist/cssm/lib/dom.js.map +1 -1
- package/dist/cssm/lib/floating/adapters.d.ts.map +1 -1
- package/dist/cssm/lib/floating/adapters.js +1 -7
- package/dist/cssm/lib/floating/adapters.js.map +1 -1
- package/dist/cssm/styles/dynamicTokens.css +4 -12
- package/dist/hooks/useDateInput.js +2 -2
- package/dist/hooks/useDateInput.js.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/useDraggableWithDomApi.d.ts.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js +17 -3
- package/dist/hooks/useDraggableWithDomApi/useDraggableWithDomApi.js.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/utils.d.ts.map +1 -1
- package/dist/hooks/useDraggableWithDomApi/utils.js +3 -0
- package/dist/hooks/useDraggableWithDomApi/utils.js.map +1 -1
- package/dist/lib/adaptivity/functions.d.ts +2 -0
- package/dist/lib/adaptivity/functions.d.ts.map +1 -1
- package/dist/lib/adaptivity/functions.js +7 -1
- package/dist/lib/adaptivity/functions.js.map +1 -1
- package/dist/lib/dom.d.ts +1 -0
- package/dist/lib/dom.d.ts.map +1 -1
- package/dist/lib/dom.js +10 -0
- package/dist/lib/dom.js.map +1 -1
- package/dist/lib/floating/adapters.d.ts.map +1 -1
- package/dist/lib/floating/adapters.js +1 -7
- package/dist/lib/floating/adapters.js.map +1 -1
- package/dist/vkui.css +20 -20
- package/dist/vkui.css.map +1 -1
- package/dist/vkui.js.tmp +269 -90
- package/package.json +1 -1
- package/src/components/ActionSheet/ActionSheet.e2e-playground.tsx +7 -1
- package/src/components/ActionSheet/ActionSheet.e2e.tsx +10 -0
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-firefox-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-desktop-sizey-regular-vkcom-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-android-chromium-light-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-dark-1-snap.png +2 -2
- package/src/components/ActionSheet/__image_snapshots__/actionsheet-viewwidth-mobile-sizey-regular-ios-webkit-light-1-snap.png +2 -2
- package/src/components/ActionSheetItem/ActionSheetItem.module.css +1 -0
- package/src/components/AdaptivityProvider/AdaptivityProvider.test.tsx +417 -60
- package/src/components/AdaptivityProvider/AdaptivityProvider.tsx +14 -12
- package/src/components/AppRoot/AppRoot.test.tsx +53 -1
- package/src/components/AppRoot/ScrollContext.tsx +2 -2
- package/src/components/CalendarRange/CalendarRange.stories.tsx +19 -2
- package/src/components/CalendarRange/CalendarRange.test.tsx +15 -0
- package/src/components/CalendarRange/CalendarRange.tsx +9 -6
- package/src/components/Chip/Chip.tsx +1 -0
- package/src/components/ChipsSelect/ChipsSelect.stories.tsx +1 -1
- package/src/components/ChipsSelect/ChipsSelect.tsx +42 -4
- package/src/components/ChipsSelect/Readme.md +1 -1
- package/src/components/CustomSelect/CustomSelect.e2e.tsx +7 -1
- package/src/components/CustomSelect/CustomSelect.test.tsx +23 -1
- package/src/components/CustomSelect/CustomSelect.tsx +5 -0
- package/src/components/CustomSelect/CustomSelectClearButton.tsx +2 -2
- package/src/components/CustomSelect/CustomSelectInput.tsx +35 -15
- package/src/components/CustomSelect/Readme.md +3 -1
- package/src/components/CustomSelectOption/CustomSelectOption.tsx +2 -2
- package/src/components/DateInput/DateInput.tsx +7 -3
- package/src/components/DatePicker/DatePicker.tsx +2 -1
- package/src/components/DateRangeInput/DateRangeInput.stories.tsx +19 -2
- package/src/components/DateRangeInput/DateRangeInput.tsx +2 -2
- package/src/components/ModalRoot/ModalRoot.tsx +31 -8
- package/src/components/PanelHeaderButton/PanelHeaderButton.tsx +1 -1
- package/src/components/PullToRefresh/PullToRefresh.e2e-playground.tsx +24 -0
- package/src/components/PullToRefresh/PullToRefresh.e2e.tsx +18 -1
- package/src/components/PullToRefresh/PullToRefresh.module.css +5 -0
- package/src/components/PullToRefresh/__image_snapshots__/pulltorefresh-takes-whole-parent-height-and-allow-smaller-content-to-center-vertically-vkcom-chromium-light-1-snap.png +3 -0
- package/src/components/PullToRefresh/__image_snapshots__/pulltorefresh-takes-whole-parent-height-and-allow-smaller-content-to-center-vertically-vkcom-firefox-light-1-snap.png +3 -0
- package/src/components/PullToRefresh/__image_snapshots__/pulltorefresh-takes-whole-parent-height-and-allow-smaller-content-to-center-vertically-vkcom-webkit-light-1-snap.png +3 -0
- package/src/components/Switch/Switch.stories.tsx +12 -0
- package/src/components/Switch/Switch.test.tsx +82 -0
- package/src/components/Switch/Switch.tsx +30 -1
- package/src/components/TabsItem/TabsItem.tsx +4 -1
- package/src/components/Tooltip/Tooltip.test.tsx +21 -0
- package/src/components/Tooltip/Tooltip.tsx +3 -1
- package/src/components/View/View.test.tsx +17 -2
- package/src/components/View/View.tsx +28 -5
- package/src/components/VisuallyHidden/VisuallyHidden.module.css +12 -0
- package/src/components/VisuallyHidden/VisuallyHidden.test.tsx +16 -0
- package/src/components/VisuallyHidden/VisuallyHidden.tsx +9 -1
- package/src/components/WriteBarIcon/WriteBarIcon.test.tsx +48 -0
- package/src/components/WriteBarIcon/WriteBarIcon.tsx +1 -1
- package/src/hooks/useDateInput.ts +2 -2
- package/src/hooks/useDraggableWithDomApi/useDraggableWithDomApi.ts +20 -3
- package/src/hooks/useDraggableWithDomApi/utils.ts +3 -0
- package/src/lib/adaptivity/functions.ts +9 -1
- package/src/lib/dom.test.ts +23 -4
- package/src/lib/dom.tsx +15 -0
- package/src/lib/floating/adapters.ts +1 -8
- package/src/styles/dynamicTokens.css +4 -12
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdaptivityProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AdaptivityProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAI9E,MAAM,WAAW,uBAAwB,SAAQ,eAAe,EAAE,WAAW;CAAG;AAEhF;;GAEG;AACH,eAAO,MAAM,kBAAkB,6EAQ5B,uBAAuB,sBAoCzB,CAAC"}
|
|
@@ -95,16 +95,12 @@ function calculateAdaptivity(param, LEGACY_bridge) {
|
|
|
95
95
|
}
|
|
96
96
|
} else {
|
|
97
97
|
if (sizeX === undefined && viewWidth !== undefined) {
|
|
98
|
-
|
|
99
|
-
sizeX = _adaptivity.SizeType.COMPACT;
|
|
100
|
-
} else {
|
|
101
|
-
sizeX = _adaptivity.SizeType.REGULAR;
|
|
102
|
-
}
|
|
98
|
+
sizeX = (0, _adaptivity.getSizeX)(viewWidth);
|
|
103
99
|
}
|
|
104
|
-
if (sizeY === undefined
|
|
105
|
-
if (
|
|
100
|
+
if (sizeY === undefined) {
|
|
101
|
+
if ((0, _adaptivity.isCompactByViewWidth)(viewWidth, hasPointer) || (0, _adaptivity.isCompactByViewHeight)(viewHeight)) {
|
|
106
102
|
sizeY = _adaptivity.SizeType.COMPACT;
|
|
107
|
-
} else {
|
|
103
|
+
} else if (viewWidth !== undefined || viewHeight !== undefined) {
|
|
108
104
|
sizeY = _adaptivity.SizeType.REGULAR;
|
|
109
105
|
}
|
|
110
106
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as _hasPointer } from '@vkontakte/vkjs';\nimport { BridgeAdaptivity, useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';\nimport {
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/AdaptivityProvider/AdaptivityProvider.tsx"],"sourcesContent":["import * as React from 'react';\nimport { hasMouse as _hasPointer } from '@vkontakte/vkjs';\nimport { BridgeAdaptivity, useBridgeAdaptivity } from '../../hooks/useBridgeAdaptivity';\nimport {\n BREAKPOINTS,\n getSizeX,\n isCompactByViewHeight,\n isCompactByViewWidth,\n SizeType,\n ViewHeight,\n ViewWidth,\n} from '../../lib/adaptivity';\nimport { warnOnce } from '../../lib/warnOnce';\nimport { HasChildren } from '../../types';\nimport { AdaptivityContext, type AdaptivityProps } from './AdaptivityContext';\n\nconst warn = warnOnce('AdaptivityProvider');\n\nexport interface AdaptivityProviderProps extends AdaptivityProps, HasChildren {}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/AdaptivityProvider\n */\nexport const AdaptivityProvider = ({\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n children,\n}: AdaptivityProviderProps) => {\n // TODO [>=6]: удалить использование хука (#5049)\n /* eslint-disable @typescript-eslint/naming-convention */\n const LEGACY_isPerhapsPropsByBridgeTypeAdaptive =\n viewWidth !== undefined && viewHeight !== undefined;\n const LEGACY_isPerhapsPropsByBridgeTypeForceMobile =\n viewWidth !== undefined && sizeX !== undefined && sizeY !== undefined;\n const LEGACY_disableInternalUseBridgeAdaptivity =\n LEGACY_isPerhapsPropsByBridgeTypeAdaptive || LEGACY_isPerhapsPropsByBridgeTypeForceMobile;\n const LEGACY_bridge = useBridgeAdaptivity(LEGACY_disableInternalUseBridgeAdaptivity);\n /* eslint-enable @typescript-eslint/naming-convention */\n\n if (process.env.NODE_ENV === 'development') {\n // TODO [>=6]: удалить warn\n if (!LEGACY_disableInternalUseBridgeAdaptivity) {\n warn(\"[@vkontakte/vk-bridge] Интеграция VKUI с @vkontakte/vk-bridge устарела и будет удалена в v6. Используйте хук `useAdaptivity()` из @vkontakte/vk-bridge-react и результат передайте в компонент (см. https://github.com/VKCOM/VKUI/issues/5049)\"); // prettier-ignore\n }\n }\n\n const adaptivity = React.useMemo(\n () =>\n calculateAdaptivity(\n {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n },\n LEGACY_bridge,\n ),\n [viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover, LEGACY_bridge],\n );\n\n return <AdaptivityContext.Provider value={adaptivity}>{children}</AdaptivityContext.Provider>;\n};\n\nfunction calculateAdaptivity(\n { viewWidth, viewHeight, sizeX, sizeY, hasPointer, hasHover }: AdaptivityProps,\n LEGACY_bridge: BridgeAdaptivity, // eslint-disable-line @typescript-eslint/naming-convention\n) {\n // TODO [>=6]: удалить блок кода c использованием LEGACY_bridge (#5049)\n // https://github.com/VKCOM/VKUI/blob/v5.5.5/packages/vkui/src/components/AdaptivityProvider/AdaptivityProvider.tsx#L46-L92\n if (LEGACY_bridge.type === 'adaptive') {\n const { viewportWidth, viewportHeight } = LEGACY_bridge;\n\n if (viewportWidth >= BREAKPOINTS.DESKTOP) {\n viewWidth = ViewWidth.DESKTOP;\n } else if (viewportWidth >= BREAKPOINTS.TABLET) {\n viewWidth = ViewWidth.TABLET;\n } else if (viewportWidth >= BREAKPOINTS.SMALL_TABLET) {\n viewWidth = ViewWidth.SMALL_TABLET;\n } else if (viewportWidth >= BREAKPOINTS.MOBILE) {\n viewWidth = ViewWidth.MOBILE;\n } else {\n viewWidth = ViewWidth.SMALL_MOBILE;\n }\n\n if (viewportHeight >= BREAKPOINTS.MEDIUM_HEIGHT) {\n viewHeight = ViewHeight.MEDIUM;\n } else if (viewportHeight >= BREAKPOINTS.MOBILE_LANDSCAPE_HEIGHT) {\n viewHeight = ViewHeight.SMALL;\n } else {\n viewHeight = ViewHeight.EXTRA_SMALL;\n }\n\n if (viewWidth <= ViewWidth.MOBILE) {\n sizeX = SizeType.COMPACT;\n } else {\n sizeX = SizeType.REGULAR;\n }\n\n if (\n (viewWidth >= ViewWidth.SMALL_TABLET && _hasPointer) ||\n viewHeight <= ViewHeight.EXTRA_SMALL\n ) {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else if (\n LEGACY_bridge.type === 'force_mobile' ||\n LEGACY_bridge.type === 'force_mobile_compact'\n ) {\n viewWidth = ViewWidth.MOBILE;\n sizeX = SizeType.COMPACT;\n\n if (LEGACY_bridge.type === 'force_mobile_compact') {\n sizeY = SizeType.COMPACT;\n } else {\n sizeY = SizeType.REGULAR;\n }\n } else {\n if (sizeX === undefined && viewWidth !== undefined) {\n sizeX = getSizeX(viewWidth);\n }\n\n if (sizeY === undefined) {\n if (isCompactByViewWidth(viewWidth, hasPointer) || isCompactByViewHeight(viewHeight)) {\n sizeY = SizeType.COMPACT;\n } else if (viewWidth !== undefined || viewHeight !== undefined) {\n sizeY = SizeType.REGULAR;\n }\n }\n }\n\n return {\n viewWidth,\n viewHeight,\n sizeX,\n sizeY,\n hasPointer,\n hasHover,\n };\n}\n"],"names":["AdaptivityProvider","warn","warnOnce","viewWidth","viewHeight","sizeX","sizeY","hasPointer","hasHover","children","LEGACY_isPerhapsPropsByBridgeTypeAdaptive","undefined","LEGACY_isPerhapsPropsByBridgeTypeForceMobile","LEGACY_disableInternalUseBridgeAdaptivity","LEGACY_bridge","useBridgeAdaptivity","process","env","NODE_ENV","adaptivity","React","useMemo","calculateAdaptivity","AdaptivityContext","Provider","value","type","viewportWidth","viewportHeight","BREAKPOINTS","DESKTOP","ViewWidth","TABLET","SMALL_TABLET","MOBILE","SMALL_MOBILE","MEDIUM_HEIGHT","ViewHeight","MEDIUM","MOBILE_LANDSCAPE_HEIGHT","SMALL","EXTRA_SMALL","SizeType","COMPACT","REGULAR","_hasPointer","getSizeX","isCompactByViewWidth","isCompactByViewHeight"],"mappings":"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"}
|
|
@@ -252,9 +252,9 @@ var useScrollLockEffect = function(effect, deps) {
|
|
|
252
252
|
};
|
|
253
253
|
var useScrollLock = function() {
|
|
254
254
|
var enabled = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : true;
|
|
255
|
-
var _useScroll = useScroll(), enableScrollLock = _useScroll.enableScrollLock, disableScrollLock = _useScroll.disableScrollLock;
|
|
255
|
+
var _useScroll = useScroll(), enableScrollLock = _useScroll.enableScrollLock, disableScrollLock = _useScroll.disableScrollLock, isScrollLock = _useScroll.isScrollLock;
|
|
256
256
|
(0, _useIsomorphicLayoutEffect.useIsomorphicLayoutEffect)(function() {
|
|
257
|
-
if (enabled) {
|
|
257
|
+
if (enabled && !isScrollLock) {
|
|
258
258
|
enableScrollLock();
|
|
259
259
|
return disableScrollLock;
|
|
260
260
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/AppRoot/ScrollContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasChildren } from '../../types';\n\nconst clearDisableScrollStyle = (node: HTMLElement) => {\n Object.assign(node.style, {\n position: '',\n top: '',\n left: '',\n right: '',\n overflowY: '',\n overflowX: '',\n });\n};\n\nconst getPageYOffsetWithoutKeyboardHeight = (window: Window) => {\n // Note: здесь расчёт на то, что `clientHeight` равен `window.innerHeight`.\n // Это достигается тем, что тегу `html` задали`height: 100%` и у него нет отступов сверху и снизу. Если есть отступы,\n // то надо задать `box-sizing: border-box`, чтобы они не учитывались.\n const diffOfClientHeightAndViewportHeight =\n window.document.documentElement.clientHeight - window.innerHeight;\n return window.pageYOffset - diffOfClientHeightAndViewportHeight;\n};\n\nexport interface ScrollContextInterface {\n getScroll(this: void): { x: number; y: number };\n scrollTo(this: void, x?: number, y?: number): void;\n isScrollLock: boolean;\n enableScrollLock(this: void): void;\n disableScrollLock(this: void): void;\n beforeScrollLockFnSetRef?: React.RefObject<Set<() => void>>;\n}\n\nexport const ScrollContext = React.createContext<ScrollContextInterface>({\n getScroll: () => ({ x: 0, y: 0 }),\n scrollTo: noop,\n isScrollLock: false,\n enableScrollLock: noop,\n disableScrollLock: noop,\n});\n\nexport const useScroll = () => React.useContext(ScrollContext);\n\nexport interface ScrollControllerProps extends HasChildren {\n elRef: React.RefObject<HTMLElement>;\n}\n\nexport const GlobalScrollController = ({ children }: ScrollControllerProps) => {\n const { window, document } = useDOM();\n const [isScrollLock, setScrollLock] = React.useState(false);\n const beforeScrollLockFnSetRef = React.useRef<Set<() => void>>(new Set());\n\n const getScroll = React.useCallback<ScrollContextInterface['getScroll']>(\n () => ({\n x: window!.pageXOffset,\n y: getPageYOffsetWithoutKeyboardHeight(window!),\n }),\n [window],\n );\n const scrollTo = React.useCallback<ScrollContextInterface['scrollTo']>(\n (x = 0, y = 0) => {\n // Some iOS versions do not normalize scroll — do it manually.\n window!.scrollTo(\n x ? clamp(x, 0, document!.body.scrollWidth - window!.innerWidth) : 0,\n y ? clamp(y, 0, document!.body.scrollHeight - window!.innerHeight) : 0,\n );\n },\n [document, window],\n );\n\n const enableScrollLock = React.useCallback<ScrollContextInterface['enableScrollLock']>(() => {\n beforeScrollLockFnSetRef.current.forEach((fn) => {\n fn();\n });\n\n const scrollY = window!.pageYOffset;\n const scrollX = window!.pageXOffset;\n const overflowY = window!.innerWidth > document!.documentElement.clientWidth ? 'scroll' : '';\n const overflowX = window!.innerHeight > document!.documentElement.clientHeight ? 'scroll' : '';\n\n Object.assign(document!.body.style, {\n position: 'fixed',\n top: `-${scrollY}px`,\n left: `-${scrollX}px`,\n right: '0',\n overflowY,\n overflowX,\n });\n setScrollLock(true);\n }, [document, window]);\n\n const disableScrollLock = React.useCallback<ScrollContextInterface['disableScrollLock']>(() => {\n const scrollY = document!.body.style.top;\n const scrollX = document!.body.style.left;\n\n clearDisableScrollStyle(document!.body);\n window!.scrollTo(-parseInt(scrollX || '0'), -parseInt(scrollY || '0'));\n setScrollLock(false);\n }, [document, window]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => ({\n getScroll,\n scrollTo,\n isScrollLock,\n disableScrollLock,\n enableScrollLock,\n\n beforeScrollLockFnSetRef: beforeScrollLockFnSetRef,\n }),\n [getScroll, scrollTo, isScrollLock, disableScrollLock, enableScrollLock],\n );\n\n return <ScrollContext.Provider value={scrollController}>{children}</ScrollContext.Provider>;\n};\n\nexport const ElementScrollController = ({ elRef, children }: ScrollControllerProps) => {\n const [isScrollLock, setScrollLock] = React.useState(false);\n const beforeScrollLockFnSetRef = React.useRef<Set<() => void>>(new Set());\n\n const getScroll = React.useCallback<ScrollContextInterface['getScroll']>(\n () => ({\n x: elRef.current?.scrollLeft ?? 0,\n y: elRef.current?.scrollTop ?? 0,\n }),\n [elRef],\n );\n const scrollTo = React.useCallback<ScrollContextInterface['scrollTo']>(\n (x = 0, y = 0) => {\n const el = elRef.current;\n // Some iOS versions do not normalize scroll — do it manually.\n el?.scrollTo(\n x ? clamp(x, 0, el.scrollWidth - el.clientWidth) : 0,\n y ? clamp(y, 0, el.scrollHeight - el.clientHeight) : 0,\n );\n },\n [elRef],\n );\n\n const enableScrollLock = React.useCallback<ScrollContextInterface['enableScrollLock']>(() => {\n const el = elRef.current;\n if (!el) {\n return;\n }\n beforeScrollLockFnSetRef.current.forEach((fn) => {\n fn();\n });\n\n const scrollY = el.scrollTop;\n const scrollX = el.scrollLeft;\n const overflowY = el.scrollWidth > el.clientWidth ? 'scroll' : '';\n const overflowX = el.scrollHeight > el.clientHeight ? 'scroll' : '';\n\n Object.assign(el.style, {\n position: 'absolute',\n top: `-${scrollY}px`,\n left: `-${scrollX}px`,\n right: '0',\n overflowY,\n overflowX,\n });\n setScrollLock(true);\n }, [elRef]);\n\n const disableScrollLock = React.useCallback<ScrollContextInterface['disableScrollLock']>(() => {\n const el = elRef.current;\n if (!el) {\n return;\n }\n\n const scrollY = el.style.top;\n const scrollX = el.style.left;\n\n clearDisableScrollStyle(el);\n el.scrollTo(-parseInt(scrollX || '0'), -parseInt(scrollY || '0'));\n setScrollLock(false);\n }, [elRef]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => ({\n getScroll,\n scrollTo,\n isScrollLock,\n disableScrollLock,\n enableScrollLock,\n beforeScrollLockFnSetRef,\n }),\n [getScroll, scrollTo, isScrollLock, disableScrollLock, enableScrollLock],\n );\n\n return <ScrollContext.Provider value={scrollController}>{children}</ScrollContext.Provider>;\n};\n\n/**\n * Вызывает функцию effect, до блокировки прокрутки\n * @param effect функция, которая может возвращать функцию очистки\n * @param deps effect обновится только при изменении значений в списке.\n */\nexport const useScrollLockEffect = (effect: React.EffectCallback, deps: React.DependencyList) => {\n const destructorRef = React.useRef<ReturnType<React.EffectCallback>>(noop);\n const { isScrollLock, beforeScrollLockFnSetRef } = useScroll();\n\n // Изменяем effectCallback только при изменении deps\n const effectCallback = React.useCallback(() => {\n destructorRef.current = effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n // Добавляем effectCallback в список функций, которые необходимо вызвать\n // до блокировки\n React.useEffect(() => {\n const beforeSet = beforeScrollLockFnSetRef?.current;\n if (!beforeSet) {\n return noop;\n }\n\n beforeSet.add(effectCallback);\n\n return () => {\n beforeSet.delete(effectCallback);\n };\n }, [beforeScrollLockFnSetRef, effectCallback]);\n\n // Вызываем сбрасывающую функцию, после отключения блокировки\n React.useEffect(() => {\n if (!isScrollLock && destructorRef.current) {\n destructorRef.current();\n }\n }, [isScrollLock]);\n};\n\nexport const useScrollLock = (enabled = true) => {\n const { enableScrollLock, disableScrollLock } = useScroll();\n useIsomorphicLayoutEffect(() => {\n if (enabled) {\n enableScrollLock();\n return disableScrollLock;\n }\n return noop;\n }, [enableScrollLock, disableScrollLock, enabled]);\n};\n"],"names":["ElementScrollController","GlobalScrollController","ScrollContext","useScroll","useScrollLock","useScrollLockEffect","clearDisableScrollStyle","node","Object","assign","style","position","top","left","right","overflowY","overflowX","getPageYOffsetWithoutKeyboardHeight","window","diffOfClientHeightAndViewportHeight","document","documentElement","clientHeight","innerHeight","pageYOffset","React","createContext","getScroll","x","y","scrollTo","noop","isScrollLock","enableScrollLock","disableScrollLock","useContext","children","useDOM","useState","setScrollLock","beforeScrollLockFnSetRef","useRef","Set","useCallback","pageXOffset","clamp","body","scrollWidth","innerWidth","scrollHeight","current","forEach","fn","scrollY","scrollX","clientWidth","parseInt","scrollController","useMemo","Provider","value","elRef","scrollLeft","scrollTop","el","effect","deps","destructorRef","effectCallback","useEffect","beforeSet","add","delete","enabled","useIsomorphicLayoutEffect"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/AppRoot/ScrollContext.tsx"],"sourcesContent":["import * as React from 'react';\nimport { noop } from '@vkontakte/vkjs';\nimport { clamp } from '../../helpers/math';\nimport { useDOM } from '../../lib/dom';\nimport { useIsomorphicLayoutEffect } from '../../lib/useIsomorphicLayoutEffect';\nimport { HasChildren } from '../../types';\n\nconst clearDisableScrollStyle = (node: HTMLElement) => {\n Object.assign(node.style, {\n position: '',\n top: '',\n left: '',\n right: '',\n overflowY: '',\n overflowX: '',\n });\n};\n\nconst getPageYOffsetWithoutKeyboardHeight = (window: Window) => {\n // Note: здесь расчёт на то, что `clientHeight` равен `window.innerHeight`.\n // Это достигается тем, что тегу `html` задали`height: 100%` и у него нет отступов сверху и снизу. Если есть отступы,\n // то надо задать `box-sizing: border-box`, чтобы они не учитывались.\n const diffOfClientHeightAndViewportHeight =\n window.document.documentElement.clientHeight - window.innerHeight;\n return window.pageYOffset - diffOfClientHeightAndViewportHeight;\n};\n\nexport interface ScrollContextInterface {\n getScroll(this: void): { x: number; y: number };\n scrollTo(this: void, x?: number, y?: number): void;\n isScrollLock: boolean;\n enableScrollLock(this: void): void;\n disableScrollLock(this: void): void;\n beforeScrollLockFnSetRef?: React.RefObject<Set<() => void>>;\n}\n\nexport const ScrollContext = React.createContext<ScrollContextInterface>({\n getScroll: () => ({ x: 0, y: 0 }),\n scrollTo: noop,\n isScrollLock: false,\n enableScrollLock: noop,\n disableScrollLock: noop,\n});\n\nexport const useScroll = () => React.useContext(ScrollContext);\n\nexport interface ScrollControllerProps extends HasChildren {\n elRef: React.RefObject<HTMLElement>;\n}\n\nexport const GlobalScrollController = ({ children }: ScrollControllerProps) => {\n const { window, document } = useDOM();\n const [isScrollLock, setScrollLock] = React.useState(false);\n const beforeScrollLockFnSetRef = React.useRef<Set<() => void>>(new Set());\n\n const getScroll = React.useCallback<ScrollContextInterface['getScroll']>(\n () => ({\n x: window!.pageXOffset,\n y: getPageYOffsetWithoutKeyboardHeight(window!),\n }),\n [window],\n );\n const scrollTo = React.useCallback<ScrollContextInterface['scrollTo']>(\n (x = 0, y = 0) => {\n // Some iOS versions do not normalize scroll — do it manually.\n window!.scrollTo(\n x ? clamp(x, 0, document!.body.scrollWidth - window!.innerWidth) : 0,\n y ? clamp(y, 0, document!.body.scrollHeight - window!.innerHeight) : 0,\n );\n },\n [document, window],\n );\n\n const enableScrollLock = React.useCallback<ScrollContextInterface['enableScrollLock']>(() => {\n beforeScrollLockFnSetRef.current.forEach((fn) => {\n fn();\n });\n\n const scrollY = window!.pageYOffset;\n const scrollX = window!.pageXOffset;\n const overflowY = window!.innerWidth > document!.documentElement.clientWidth ? 'scroll' : '';\n const overflowX = window!.innerHeight > document!.documentElement.clientHeight ? 'scroll' : '';\n\n Object.assign(document!.body.style, {\n position: 'fixed',\n top: `-${scrollY}px`,\n left: `-${scrollX}px`,\n right: '0',\n overflowY,\n overflowX,\n });\n setScrollLock(true);\n }, [document, window]);\n\n const disableScrollLock = React.useCallback<ScrollContextInterface['disableScrollLock']>(() => {\n const scrollY = document!.body.style.top;\n const scrollX = document!.body.style.left;\n\n clearDisableScrollStyle(document!.body);\n window!.scrollTo(-parseInt(scrollX || '0'), -parseInt(scrollY || '0'));\n setScrollLock(false);\n }, [document, window]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => ({\n getScroll,\n scrollTo,\n isScrollLock,\n disableScrollLock,\n enableScrollLock,\n\n beforeScrollLockFnSetRef: beforeScrollLockFnSetRef,\n }),\n [getScroll, scrollTo, isScrollLock, disableScrollLock, enableScrollLock],\n );\n\n return <ScrollContext.Provider value={scrollController}>{children}</ScrollContext.Provider>;\n};\n\nexport const ElementScrollController = ({ elRef, children }: ScrollControllerProps) => {\n const [isScrollLock, setScrollLock] = React.useState(false);\n const beforeScrollLockFnSetRef = React.useRef<Set<() => void>>(new Set());\n\n const getScroll = React.useCallback<ScrollContextInterface['getScroll']>(\n () => ({\n x: elRef.current?.scrollLeft ?? 0,\n y: elRef.current?.scrollTop ?? 0,\n }),\n [elRef],\n );\n const scrollTo = React.useCallback<ScrollContextInterface['scrollTo']>(\n (x = 0, y = 0) => {\n const el = elRef.current;\n // Some iOS versions do not normalize scroll — do it manually.\n el?.scrollTo(\n x ? clamp(x, 0, el.scrollWidth - el.clientWidth) : 0,\n y ? clamp(y, 0, el.scrollHeight - el.clientHeight) : 0,\n );\n },\n [elRef],\n );\n\n const enableScrollLock = React.useCallback<ScrollContextInterface['enableScrollLock']>(() => {\n const el = elRef.current;\n if (!el) {\n return;\n }\n beforeScrollLockFnSetRef.current.forEach((fn) => {\n fn();\n });\n\n const scrollY = el.scrollTop;\n const scrollX = el.scrollLeft;\n const overflowY = el.scrollWidth > el.clientWidth ? 'scroll' : '';\n const overflowX = el.scrollHeight > el.clientHeight ? 'scroll' : '';\n\n Object.assign(el.style, {\n position: 'absolute',\n top: `-${scrollY}px`,\n left: `-${scrollX}px`,\n right: '0',\n overflowY,\n overflowX,\n });\n setScrollLock(true);\n }, [elRef]);\n\n const disableScrollLock = React.useCallback<ScrollContextInterface['disableScrollLock']>(() => {\n const el = elRef.current;\n if (!el) {\n return;\n }\n\n const scrollY = el.style.top;\n const scrollX = el.style.left;\n\n clearDisableScrollStyle(el);\n el.scrollTo(-parseInt(scrollX || '0'), -parseInt(scrollY || '0'));\n setScrollLock(false);\n }, [elRef]);\n\n const scrollController = React.useMemo<ScrollContextInterface>(\n () => ({\n getScroll,\n scrollTo,\n isScrollLock,\n disableScrollLock,\n enableScrollLock,\n beforeScrollLockFnSetRef,\n }),\n [getScroll, scrollTo, isScrollLock, disableScrollLock, enableScrollLock],\n );\n\n return <ScrollContext.Provider value={scrollController}>{children}</ScrollContext.Provider>;\n};\n\n/**\n * Вызывает функцию effect, до блокировки прокрутки\n * @param effect функция, которая может возвращать функцию очистки\n * @param deps effect обновится только при изменении значений в списке.\n */\nexport const useScrollLockEffect = (effect: React.EffectCallback, deps: React.DependencyList) => {\n const destructorRef = React.useRef<ReturnType<React.EffectCallback>>(noop);\n const { isScrollLock, beforeScrollLockFnSetRef } = useScroll();\n\n // Изменяем effectCallback только при изменении deps\n const effectCallback = React.useCallback(() => {\n destructorRef.current = effect();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, deps);\n\n // Добавляем effectCallback в список функций, которые необходимо вызвать\n // до блокировки\n React.useEffect(() => {\n const beforeSet = beforeScrollLockFnSetRef?.current;\n if (!beforeSet) {\n return noop;\n }\n\n beforeSet.add(effectCallback);\n\n return () => {\n beforeSet.delete(effectCallback);\n };\n }, [beforeScrollLockFnSetRef, effectCallback]);\n\n // Вызываем сбрасывающую функцию, после отключения блокировки\n React.useEffect(() => {\n if (!isScrollLock && destructorRef.current) {\n destructorRef.current();\n }\n }, [isScrollLock]);\n};\n\nexport const useScrollLock = (enabled = true) => {\n const { enableScrollLock, disableScrollLock, isScrollLock } = useScroll();\n useIsomorphicLayoutEffect(() => {\n if (enabled && !isScrollLock) {\n enableScrollLock();\n return disableScrollLock;\n }\n return noop;\n }, [enableScrollLock, disableScrollLock, enabled]);\n};\n"],"names":["ElementScrollController","GlobalScrollController","ScrollContext","useScroll","useScrollLock","useScrollLockEffect","clearDisableScrollStyle","node","Object","assign","style","position","top","left","right","overflowY","overflowX","getPageYOffsetWithoutKeyboardHeight","window","diffOfClientHeightAndViewportHeight","document","documentElement","clientHeight","innerHeight","pageYOffset","React","createContext","getScroll","x","y","scrollTo","noop","isScrollLock","enableScrollLock","disableScrollLock","useContext","children","useDOM","useState","setScrollLock","beforeScrollLockFnSetRef","useRef","Set","useCallback","pageXOffset","clamp","body","scrollWidth","innerWidth","scrollHeight","current","forEach","fn","scrollY","scrollX","clientWidth","parseInt","scrollController","useMemo","Provider","value","elRef","scrollLeft","scrollTop","el","effect","deps","destructorRef","effectCallback","useEffect","beforeSet","add","delete","enabled","useIsomorphicLayoutEffect"],"mappings":"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"}
|
|
@@ -2,14 +2,15 @@ import * as React from 'react';
|
|
|
2
2
|
import { HTMLAttributesWithRootRef } from '../../types';
|
|
3
3
|
import { CalendarDaysProps } from '../CalendarDays/CalendarDays';
|
|
4
4
|
import { CalendarHeaderProps } from '../CalendarHeader/CalendarHeader';
|
|
5
|
+
export type DateRangeType = [Date | null, Date | null];
|
|
5
6
|
export interface CalendarRangeProps extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>, Pick<CalendarHeaderProps, 'prevMonthAriaLabel' | 'nextMonthAriaLabel' | 'changeMonthAriaLabel' | 'changeYearAriaLabel' | 'prevMonthIcon' | 'nextMonthIcon'>, Pick<CalendarDaysProps, 'listenDayChangesForUpdate'> {
|
|
6
|
-
value?:
|
|
7
|
+
value?: DateRangeType;
|
|
7
8
|
disablePast?: boolean;
|
|
8
9
|
disableFuture?: boolean;
|
|
9
10
|
disablePickers?: boolean;
|
|
10
11
|
changeDayAriaLabel?: string;
|
|
11
12
|
weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;
|
|
12
|
-
onChange?(value?:
|
|
13
|
+
onChange?(value?: DateRangeType): void;
|
|
13
14
|
shouldDisableDate?(value: Date): boolean;
|
|
14
15
|
onClose?(): void;
|
|
15
16
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarRange.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvF,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,IAAI,CACF,mBAAmB,EACjB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,eAAe,GACf,eAAe,CAClB,EACD,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IACtD,KAAK,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"CalendarRange.d.ts","sourceRoot":"","sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAa/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAgB,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAkB,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAIvF,MAAM,MAAM,aAAa,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,CAAC;AAEvD,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,yBAAyB,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,EACjE,IAAI,CACF,mBAAmB,EACjB,oBAAoB,GACpB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,eAAe,GACf,eAAe,CAClB,EACD,IAAI,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;IACtD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,iBAAiB,CAAC,CAAC,KAAK,EAAE,IAAI,GAAG,OAAO,CAAC;IACzC,OAAO,CAAC,IAAI,IAAI,CAAC;CAClB;AAUD;;GAEG;AACH,eAAO,MAAM,aAAa,wRAkBvB,kBAAkB,sBAyLpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport {\n addMonths,\n endOfDay,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n startOfDay,\n} from '../../lib/date';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CalendarDays, CalendarDaysProps } from '../CalendarDays/CalendarDays';\nimport { CalendarHeader, CalendarHeaderProps } from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CalendarRange.module.css';\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate'> {\n value?: Array<Date | null>;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?(value?: Array<Date | null>): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n}\n\nconst getIsDaySelected = (day: Date, value?: Array<Date | null>) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return Boolean(isWithinInterval(day, startOfDay(value[0]), endOfDay(value[1])));\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CalendarRange\n */\nexport const CalendarRange = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n disablePickers,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeDayAriaLabel = 'Изменить день',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n ...props\n}: CalendarRangeProps) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<Array<Date | null>>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const getNewValue = React.useCallback(\n (date: Date) => {\n if (!value) {\n return [date, null];\n }\n\n const start = value[0];\n const end = value[1];\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean((value?.[0] && isSameDay(day, value[0])) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDay(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDay(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles['CalendarRange']}>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonth={false}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n prevMonthIcon={prevMonthIcon}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n aria-label={changeDayAriaLabel}\n />\n </div>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={setViewDate}\n prevMonth={false}\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n nextMonthIcon={nextMonthIcon}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["CalendarRange","getIsDaySelected","day","value","Boolean","isWithinInterval","startOfDay","endOfDay","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","disablePickers","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","props","useCalendar","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","React","useState","hintedDate","setHintedDate","secondViewDate","addMonths","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","navigateDate","isSameMonth","getNewValue","date","start","end","isSameDay","setTimeEqual","isBefore","isAfter","onDayChange","undefined","isDaySelected","isDayActive","isDaySelectionEnd","dayOfWeek","isLastDay","isHintedDaySelectionEnd","isDaySelectionStart","isFirstDay","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","RootComponent","baseClassName","div","className","CalendarHeader","nextMonth","onPrevMonth","CalendarDays","onKeyDown","aria-label","prevMonth","onNextMonth","tabIndex","onBlur"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/CalendarRange/CalendarRange.tsx"],"sourcesContent":["import * as React from 'react';\nimport { useCalendar } from '../../hooks/useCalendar';\nimport { isFirstDay, isLastDay, navigateDate, setTimeEqual } from '../../lib/calendar';\nimport {\n addMonths,\n endOfDay,\n isAfter,\n isBefore,\n isSameDay,\n isSameMonth,\n isWithinInterval,\n startOfDay,\n} from '../../lib/date';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { CalendarDays, CalendarDaysProps } from '../CalendarDays/CalendarDays';\nimport { CalendarHeader, CalendarHeaderProps } from '../CalendarHeader/CalendarHeader';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport styles from './CalendarRange.module.css';\n\nexport type DateRangeType = [Date | null, Date | null];\n\nexport interface CalendarRangeProps\n extends Omit<HTMLAttributesWithRootRef<HTMLDivElement>, 'onChange'>,\n Pick<\n CalendarHeaderProps,\n | 'prevMonthAriaLabel'\n | 'nextMonthAriaLabel'\n | 'changeMonthAriaLabel'\n | 'changeYearAriaLabel'\n | 'prevMonthIcon'\n | 'nextMonthIcon'\n >,\n Pick<CalendarDaysProps, 'listenDayChangesForUpdate'> {\n value?: DateRangeType;\n disablePast?: boolean;\n disableFuture?: boolean;\n disablePickers?: boolean;\n changeDayAriaLabel?: string;\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n onChange?(value?: DateRangeType): void;\n shouldDisableDate?(value: Date): boolean;\n onClose?(): void;\n}\n\nconst getIsDaySelected = (day: Date, value?: DateRangeType) => {\n if (!value?.[0] || !value[1]) {\n return false;\n }\n\n return Boolean(isWithinInterval(day, startOfDay(value[0]), endOfDay(value[1])));\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/CalendarRange\n */\nexport const CalendarRange = ({\n value,\n onChange,\n disablePast,\n disableFuture,\n shouldDisableDate,\n onClose,\n weekStartsOn = 1,\n disablePickers,\n prevMonthAriaLabel,\n nextMonthAriaLabel,\n changeMonthAriaLabel,\n changeYearAriaLabel,\n changeDayAriaLabel = 'Изменить день',\n prevMonthIcon,\n nextMonthIcon,\n listenDayChangesForUpdate,\n ...props\n}: CalendarRangeProps) => {\n const {\n viewDate,\n setViewDate,\n setPrevMonth,\n setNextMonth,\n focusedDay,\n setFocusedDay,\n isDayFocused,\n isDayDisabled,\n resetSelectedDay,\n } = useCalendar({ value, disableFuture, disablePast, shouldDisableDate });\n const [hintedDate, setHintedDate] = React.useState<DateRangeType>();\n const secondViewDate = addMonths(viewDate, 1);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n const newFocusedDay = navigateDate(focusedDay ?? value?.[1], event.key);\n\n if (\n newFocusedDay &&\n !isSameMonth(newFocusedDay, viewDate) &&\n !isSameMonth(newFocusedDay, addMonths(viewDate, 1))\n ) {\n setViewDate(newFocusedDay);\n }\n setFocusedDay(newFocusedDay);\n },\n [focusedDay, setFocusedDay, setViewDate, value, viewDate],\n );\n\n const getNewValue = React.useCallback(\n (date: Date): DateRangeType => {\n const isValueEmpty = !value || (value[0] === null && value[1] === null);\n if (isValueEmpty) {\n return [date, null];\n }\n\n const start = value[0];\n const end = value[1];\n if ((start && isSameDay(date, start)) || (end && isSameDay(date, end))) {\n return [setTimeEqual(date, start), setTimeEqual(date, end)];\n } else if (start && isBefore(date, start)) {\n return [setTimeEqual(date, start), end];\n } else if (start && isAfter(date, start)) {\n return [start, setTimeEqual(date, end)];\n }\n\n return value;\n },\n [value],\n );\n\n const onDayChange = React.useCallback(\n (date: Date) => {\n onChange?.(getNewValue(date));\n setHintedDate(undefined);\n },\n [onChange, getNewValue],\n );\n\n const isDaySelected = React.useCallback((day: Date) => getIsDaySelected(day, value), [value]);\n\n const isDayActive = React.useCallback(\n (day: Date) =>\n Boolean((value?.[0] && isSameDay(day, value[0])) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (value?.[1] && isSameDay(day, value[1]))),\n [value],\n );\n\n const isHintedDaySelectionEnd = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isLastDay(day, dayOfWeek) || (hintedDate?.[1] && isSameDay(day, hintedDate[1]))),\n [hintedDate],\n );\n\n const isDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (value?.[0] && isSameDay(day, value[0]))),\n [value],\n );\n\n const isHintedDaySelectionStart = React.useCallback(\n (day: Date, dayOfWeek: number) =>\n Boolean(isFirstDay(day, dayOfWeek) || (hintedDate?.[0] && isSameDay(day, hintedDate[0]))),\n [hintedDate],\n );\n\n const onDayEnter = React.useCallback(\n (date: Date) => setHintedDate(getNewValue(date)),\n [setHintedDate, getNewValue],\n );\n\n const onDayLeave = React.useCallback(() => setHintedDate(undefined), [setHintedDate]);\n\n const isDayHinted = React.useCallback(\n (day: Date) => getIsDaySelected(day, hintedDate),\n [hintedDate],\n );\n\n return (\n <RootComponent {...props} baseClassName={styles['CalendarRange']}>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={viewDate}\n onChange={setViewDate}\n nextMonth={false}\n onPrevMonth={setPrevMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n prevMonthIcon={prevMonthIcon}\n />\n <CalendarDays\n viewDate={viewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n aria-label={changeDayAriaLabel}\n />\n </div>\n <div className={styles['CalendarRange__inner']}>\n <CalendarHeader\n viewDate={secondViewDate}\n onChange={setViewDate}\n prevMonth={false}\n onNextMonth={setNextMonth}\n disablePickers={disablePickers}\n className={styles['CalendarRange__header']}\n prevMonthAriaLabel={prevMonthAriaLabel}\n nextMonthAriaLabel={nextMonthAriaLabel}\n changeMonthAriaLabel={changeMonthAriaLabel}\n changeYearAriaLabel={changeYearAriaLabel}\n nextMonthIcon={nextMonthIcon}\n />\n <CalendarDays\n viewDate={secondViewDate}\n value={value}\n weekStartsOn={weekStartsOn}\n aria-label={changeDayAriaLabel}\n onKeyDown={handleKeyDown}\n isDayFocused={isDayFocused}\n onDayChange={onDayChange}\n isDaySelected={isDaySelected}\n isDayActive={isDayActive}\n isDaySelectionEnd={isDaySelectionEnd}\n isDaySelectionStart={isDaySelectionStart}\n isDayHinted={isDayHinted}\n onDayEnter={onDayEnter}\n onDayLeave={onDayLeave}\n isHintedDaySelectionEnd={isHintedDaySelectionEnd}\n isHintedDaySelectionStart={isHintedDaySelectionStart}\n isDayDisabled={isDayDisabled}\n listenDayChangesForUpdate={listenDayChangesForUpdate}\n tabIndex={0}\n onBlur={resetSelectedDay}\n />\n </div>\n </RootComponent>\n );\n};\n"],"names":["CalendarRange","getIsDaySelected","day","value","Boolean","isWithinInterval","startOfDay","endOfDay","onChange","disablePast","disableFuture","shouldDisableDate","onClose","weekStartsOn","disablePickers","prevMonthAriaLabel","nextMonthAriaLabel","changeMonthAriaLabel","changeYearAriaLabel","changeDayAriaLabel","prevMonthIcon","nextMonthIcon","listenDayChangesForUpdate","props","useCalendar","viewDate","setViewDate","setPrevMonth","setNextMonth","focusedDay","setFocusedDay","isDayFocused","isDayDisabled","resetSelectedDay","React","useState","hintedDate","setHintedDate","secondViewDate","addMonths","handleKeyDown","useCallback","event","includes","key","preventDefault","newFocusedDay","navigateDate","isSameMonth","getNewValue","date","isValueEmpty","start","end","isSameDay","setTimeEqual","isBefore","isAfter","onDayChange","undefined","isDaySelected","isDayActive","isDaySelectionEnd","dayOfWeek","isLastDay","isHintedDaySelectionEnd","isDaySelectionStart","isFirstDay","isHintedDaySelectionStart","onDayEnter","onDayLeave","isDayHinted","RootComponent","baseClassName","div","className","CalendarHeader","nextMonth","onPrevMonth","CalendarDays","onKeyDown","aria-label","prevMonth","onNextMonth","tabIndex","onBlur"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAUxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED,MAAM,WAAW,SAAU,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IAC1E,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,SAAS;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,mGAUd,SAAS,sBA2CX,CAAC"}
|
|
1
|
+
{"version":3,"file":"Chip.d.ts","sourceRoot":"","sources":["../../../../src/components/Chip/Chip.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AAUxD,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAExC,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,CAAC,SAAS,EAAE,MAAM,GAAG,GAAG,CAAC;CAC1B;AAED,MAAM,WAAW,SAAU,SAAQ,yBAAyB,CAAC,cAAc,CAAC;IAC1E,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;IACjE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,UAAU,CAAC,CAAC,SAAS,UAAU,CAAE,SAAQ,SAAS;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,CAAC,CAAC;IACV,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,mGAUd,SAAS,sBA2CX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { classNames, hasReactNode, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport styles from './Chip.module.css';\n\nconst sizeYClassNames = {\n none: styles['Chip--sizeY-none'],\n [SizeType.COMPACT]: styles['Chip--sizeY-compact'],\n};\n\nexport type ChipValue = string | number;\n\nexport interface ChipOption {\n value?: ChipValue;\n label?: string;\n [otherProp: string]: any;\n}\n\nexport interface ChipProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n value: ChipValue;\n option?: ChipOption;\n onRemove?: (event?: React.MouseEvent, value?: ChipValue) => void;\n removable?: boolean;\n removeAriaLabel?: string;\n before?: React.ReactNode;\n after?: React.ReactNode;\n}\n\nexport interface RenderChip<T extends ChipOption> extends ChipProps {\n label: string;\n option: T;\n disabled: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Chip\n */\nexport const Chip = ({\n value = '',\n option,\n removable = true,\n onRemove = noop,\n removeAriaLabel = 'Удалить',\n before = null,\n after,\n children,\n ...restProps\n}: ChipProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const onRemoveWrapper = React.useCallback(\n (event: React.MouseEvent) => {\n onRemove(event, value);\n },\n [onRemove, value],\n );\n const title = getTitleFromChildren(children);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles['Chip'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n removable && styles['Chip--removable'],\n )}\n role=\"option\"\n aria-label={title}\n {...restProps}\n >\n <div className={styles['Chip__in']} role=\"presentation\">\n {hasReactNode(before) && <div className={styles['Chip__before']}>{before}</div>}\n <span className={styles['Chip__content']} title={title} aria-hidden>\n {children}\n </span>\n {hasReactNode(after) && <div className={styles['Chip__after']}>{after}</div>}\n\n {removable && (\n <Tappable\n Component=\"button\"\n className={styles['Chip__remove']}\n onClick={onRemoveWrapper}\n hasHover={false}\n hasActive={false}\n aria-label={`${removeAriaLabel} ${title}`}\n >\n <Icon16Cancel />\n </Tappable>\n )}\n </div>\n </RootComponent>\n );\n};\n"],"names":["Chip","sizeYClassNames","none","SizeType","COMPACT","value","option","removable","onRemove","noop","removeAriaLabel","before","after","children","restProps","useAdaptivity","sizeY","onRemoveWrapper","React","useCallback","event","title","getTitleFromChildren","RootComponent","baseClassName","classNames","REGULAR","role","aria-label","div","className","hasReactNode","span","aria-hidden","Tappable","Component","onClick","hasHover","hasActive","Icon16Cancel"],"mappings":";;;;+
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/Chip/Chip.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Icon16Cancel } from '@vkontakte/icons';\nimport { classNames, hasReactNode, noop } from '@vkontakte/vkjs';\nimport { useAdaptivity } from '../../hooks/useAdaptivity';\nimport { SizeType } from '../../lib/adaptivity';\nimport { getTitleFromChildren } from '../../lib/utils';\nimport { HTMLAttributesWithRootRef } from '../../types';\nimport { RootComponent } from '../RootComponent/RootComponent';\nimport { Tappable } from '../Tappable/Tappable';\nimport styles from './Chip.module.css';\n\nconst sizeYClassNames = {\n none: styles['Chip--sizeY-none'],\n [SizeType.COMPACT]: styles['Chip--sizeY-compact'],\n};\n\nexport type ChipValue = string | number;\n\nexport interface ChipOption {\n value?: ChipValue;\n label?: string;\n disabled?: boolean;\n [otherProp: string]: any;\n}\n\nexport interface ChipProps extends HTMLAttributesWithRootRef<HTMLDivElement> {\n value: ChipValue;\n option?: ChipOption;\n onRemove?: (event?: React.MouseEvent, value?: ChipValue) => void;\n removable?: boolean;\n removeAriaLabel?: string;\n before?: React.ReactNode;\n after?: React.ReactNode;\n}\n\nexport interface RenderChip<T extends ChipOption> extends ChipProps {\n label: string;\n option: T;\n disabled: boolean;\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Chip\n */\nexport const Chip = ({\n value = '',\n option,\n removable = true,\n onRemove = noop,\n removeAriaLabel = 'Удалить',\n before = null,\n after,\n children,\n ...restProps\n}: ChipProps) => {\n const { sizeY = 'none' } = useAdaptivity();\n const onRemoveWrapper = React.useCallback(\n (event: React.MouseEvent) => {\n onRemove(event, value);\n },\n [onRemove, value],\n );\n const title = getTitleFromChildren(children);\n\n return (\n <RootComponent\n baseClassName={classNames(\n styles['Chip'],\n sizeY !== SizeType.REGULAR && sizeYClassNames[sizeY],\n removable && styles['Chip--removable'],\n )}\n role=\"option\"\n aria-label={title}\n {...restProps}\n >\n <div className={styles['Chip__in']} role=\"presentation\">\n {hasReactNode(before) && <div className={styles['Chip__before']}>{before}</div>}\n <span className={styles['Chip__content']} title={title} aria-hidden>\n {children}\n </span>\n {hasReactNode(after) && <div className={styles['Chip__after']}>{after}</div>}\n\n {removable && (\n <Tappable\n Component=\"button\"\n className={styles['Chip__remove']}\n onClick={onRemoveWrapper}\n hasHover={false}\n hasActive={false}\n aria-label={`${removeAriaLabel} ${title}`}\n >\n <Icon16Cancel />\n </Tappable>\n )}\n </div>\n </RootComponent>\n );\n};\n"],"names":["Chip","sizeYClassNames","none","SizeType","COMPACT","value","option","removable","onRemove","noop","removeAriaLabel","before","after","children","restProps","useAdaptivity","sizeY","onRemoveWrapper","React","useCallback","event","title","getTitleFromChildren","RootComponent","baseClassName","classNames","REGULAR","role","aria-label","div","className","hasReactNode","span","aria-hidden","Tappable","Component","onClick","hasHover","hasActive","Icon16Cancel"],"mappings":";;;;+BA4CaA;;;eAAAA;;;;;;;+DA5CU;qBACM;oBACkB;6BACjB;0BACL;qBACY;6BAEP;wBACL;AAGzB,IAAMC;IACJC,IAAI;GACHC,oBAAQ,CAACC,OAAO;AA+BZ,IAAMJ,OAAO;8BAClBK,OAAAA,kCAAQ,mBACRC,gBAAAA,kCACAC,WAAAA,0CAAY,kDACZC,UAAAA,wCAAWC,UAAI,oDACfC,iBAAAA,sDAAkB,2DAClBC,QAAAA,oCAAS,sBACTC,eAAAA,OACAC,kBAAAA,UACGC;QARHT;QACAC;QACAC;QACAC;QACAE;QACAC;QACAC;QACAC;;IAGA,IAA2BE,kBAAAA,IAAAA,4BAAa,4BAAbA,gBAAnBC,OAAAA,0CAAQ;IAChB,IAAMC,kBAAkBC,OAAMC,WAAW,CACvC,SAACC;QACCZ,SAASY,OAAOf;IAClB,GACA;QAACG;QAAUH;KAAM;IAEnB,IAAMgB,QAAQC,IAAAA,2BAAoB,EAACT;IAEnC,qBACE,qBAACU,4BAAa;QACZC,eAAeC,IAAAA,gBAAU,cAEvBT,UAAUb,oBAAQ,CAACuB,OAAO,IAAIzB,eAAe,CAACe,MAAM,EACpDT;QAEFoB,MAAK;QACLC,cAAYP;OACRP,0BAEJ,qBAACe;QAAIC,SAAS;QAAsBH,MAAK;OACtCI,IAAAA,kBAAY,EAACpB,yBAAW,qBAACkB;QAAIC,SAAS;OAA2BnB,uBAClE,qBAACqB;QAAKF,SAAS;QAA2BT,OAAOA;QAAOY,eAAAA;OACrDpB,WAEFkB,IAAAA,kBAAY,EAACnB,wBAAU,qBAACiB;QAAIC,SAAS;OAA0BlB,QAE/DL,2BACC,qBAAC2B,kBAAQ;QACPC,WAAU;QACVL,SAAS;QACTM,SAASnB;QACToB,UAAU;QACVC,WAAW;QACXV,cAAY,AAAC,GAAqBP,OAAnBX,iBAAgB,KAAS,OAANW;qBAElC,qBAACkB,mBAAY;AAMzB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChipsSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,UAAU,EAAyB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAEL,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"ChipsSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAQ/B,OAAO,EAAE,UAAU,EAAyB,MAAM,cAAc,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAEL,uBAAuB,EACxB,MAAM,0CAA0C,CAAC;AAiClD,MAAM,WAAW,gBAAgB,CAAC,MAAM,SAAS,UAAU,CACzD,SAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC9C,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EACL,KAAK,GACL,CAAC,CACC,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,KAC/E,OAAO,CAAC,CAAC;IAClB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,KAAK,CAAC,SAAS,CAAC;IACnE;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpF;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAuBD;;GAEG;AACH,eAAO,MAAM,WAAW,mFA0WvB,CAAC"}
|
|
@@ -28,6 +28,30 @@ var _DropdownIcon = require("../DropdownIcon/DropdownIcon");
|
|
|
28
28
|
var _FormField = require("../FormField/FormField");
|
|
29
29
|
var _IconButton = require("../IconButton/IconButton");
|
|
30
30
|
var _Footnote = require("../Typography/Footnote/Footnote");
|
|
31
|
+
var findIndexAfter = function() {
|
|
32
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], startIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : -1;
|
|
33
|
+
if (startIndex >= options.length - 1) {
|
|
34
|
+
return -1;
|
|
35
|
+
}
|
|
36
|
+
return options.findIndex(function(option, i) {
|
|
37
|
+
return i > startIndex && !option.disabled;
|
|
38
|
+
});
|
|
39
|
+
};
|
|
40
|
+
var findIndexBefore = function() {
|
|
41
|
+
var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : [], endIndex = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : options.length;
|
|
42
|
+
var result = -1;
|
|
43
|
+
if (endIndex <= 0) {
|
|
44
|
+
return result;
|
|
45
|
+
}
|
|
46
|
+
for(var i = endIndex - 1; i >= 0; i--){
|
|
47
|
+
var option = options[i];
|
|
48
|
+
if (!option.disabled) {
|
|
49
|
+
result = i;
|
|
50
|
+
break;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return result;
|
|
54
|
+
};
|
|
31
55
|
var FOCUS_ACTION_NEXT = "next";
|
|
32
56
|
var FOCUS_ACTION_PREV = "prev";
|
|
33
57
|
var chipsSelectDefaultProps = _object_spread_props._(_object_spread._({}, _ChipsInputBase.chipsInputDefaultProps), {
|
|
@@ -135,15 +159,21 @@ var ChipsSelect = function(props) {
|
|
|
135
159
|
if (index === oldIndex) {
|
|
136
160
|
return;
|
|
137
161
|
}
|
|
162
|
+
var option = filteredOptions[index];
|
|
163
|
+
if (option === null || option === void 0 ? void 0 : option.disabled) {
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
138
166
|
scrollToElement(index);
|
|
139
167
|
setFocusedOptionIndex(index);
|
|
140
168
|
};
|
|
141
169
|
var focusOption = function(nextIndex, type) {
|
|
142
170
|
var index = nextIndex === null ? -1 : nextIndex;
|
|
143
171
|
if (type === FOCUS_ACTION_NEXT) {
|
|
144
|
-
|
|
172
|
+
var _$nextIndex = findIndexAfter(filteredOptions, index);
|
|
173
|
+
index = _$nextIndex === -1 ? findIndexAfter(filteredOptions) : _$nextIndex; // Следующий за index или первый валидный до index
|
|
145
174
|
} else if (type === FOCUS_ACTION_PREV) {
|
|
146
|
-
|
|
175
|
+
var beforeIndex = findIndexBefore(filteredOptions, index);
|
|
176
|
+
index = beforeIndex === -1 ? findIndexBefore(filteredOptions) : beforeIndex; // Предшествующий index или последний валидный после index
|
|
147
177
|
}
|
|
148
178
|
focusOptionByIndex(index, focusedOptionIndex);
|
|
149
179
|
};
|
|
@@ -153,7 +183,7 @@ var ChipsSelect = function(props) {
|
|
|
153
183
|
e.preventDefault();
|
|
154
184
|
if (!opened) {
|
|
155
185
|
setOpened(true);
|
|
156
|
-
|
|
186
|
+
focusOption(null, FOCUS_ACTION_NEXT);
|
|
157
187
|
} else {
|
|
158
188
|
focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);
|
|
159
189
|
}
|
|
@@ -162,7 +192,7 @@ var ChipsSelect = function(props) {
|
|
|
162
192
|
e.preventDefault();
|
|
163
193
|
if (!opened) {
|
|
164
194
|
setOpened(true);
|
|
165
|
-
|
|
195
|
+
focusOption(null, FOCUS_ACTION_NEXT);
|
|
166
196
|
} else {
|
|
167
197
|
focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);
|
|
168
198
|
}
|
|
@@ -301,6 +331,7 @@ var ChipsSelect = function(props) {
|
|
|
301
331
|
option: option,
|
|
302
332
|
hovered: Boolean(hovered),
|
|
303
333
|
children: label,
|
|
334
|
+
disabled: option.disabled,
|
|
304
335
|
selected: !!selected,
|
|
305
336
|
getRootRef: function(e) {
|
|
306
337
|
if (e) {
|
|
@@ -309,6 +340,9 @@ var ChipsSelect = function(props) {
|
|
|
309
340
|
return undefined;
|
|
310
341
|
},
|
|
311
342
|
onMouseDown: function(e) {
|
|
343
|
+
if (option.disabled) {
|
|
344
|
+
return;
|
|
345
|
+
}
|
|
312
346
|
onChangeStart === null || onChangeStart === void 0 ? void 0 : onChangeStart(e, option);
|
|
313
347
|
if (!e.defaultPrevented) {
|
|
314
348
|
closeAfterSelect && setOpened(false);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useChipsSelect } from '../../hooks/useChipsSelect';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipOption, ChipValue, RenderChip } from '../Chip/Chip';\nimport { ChipsInputProps } from '../ChipsInput/ChipsInput';\nimport { ChipsInputBase, chipsInputDefaultProps } from '../ChipsInputBase/ChipsInputBase';\nimport { CustomSelectDropdown } from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './ChipsSelect.module.css';\n\nexport interface ChipsSelectProps<Option extends ChipOption>\n extends Omit<ChipsInputProps<Option>, 'after'> {\n popupDirection?: 'top' | 'bottom';\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<ChipsInputProps<Option>, 'getOptionLabel'>['getOptionLabel'],\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (e: React.MouseEvent | React.KeyboardEvent, option: Option) => void;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n}\n\ntype FocusActionType = 'next' | 'prev';\n\nconst FOCUS_ACTION_NEXT: FocusActionType = 'next';\nconst FOCUS_ACTION_PREV: FocusActionType = 'prev';\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: 'Ничего не найдено',\n creatableText: 'Создать значение',\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption(props) {\n return <CustomSelectOption {...props} />;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>(props: ChipsSelectProps<Option>) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onBlur,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n closeAfterSelect,\n onChangeStart,\n before,\n icon,\n options,\n fixDropdownWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<Placement | undefined>(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRootRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue,\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(null);\n onFocus!(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n onBlur!(e);\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!e.defaultPrevented && !creatable) {\n e.preventDefault();\n }\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const isClickOutsideFormField = !rootRef.current?.contains(e.target as Node);\n const isClickOutsideDropdown = !scrollBoxRef.current?.contains(e.target as Node);\n\n if (isClickOutsideFormField && isClickOutsideDropdown) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number | null) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n index = index + 1;\n } else if (type === FOCUS_ACTION_PREV) {\n index = index - 1;\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === 'ArrowUp' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === 'ArrowDown' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n setFocusedOptionIndex(0);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (e.key === 'Enter' && !e.defaultPrevented && opened) {\n if (focusedOptionIndex != null) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if (['Escape', 'Tab'].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n useGlobalEventListener(document, 'click', handleClickOutside);\n\n const renderChipWrapper = (renderChipProps: RenderChip<Option> | undefined) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (e: React.MouseEvent | undefined, value: ChipValue | undefined) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes('top');\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement],\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const toggleOpened = () => {\n setOpened((prevOpened) => !prevOpened);\n };\n\n return (\n <>\n <FormField\n getRootRef={rootRef}\n style={style}\n className={classNames(\n styles['ChipsSelect'],\n opened &&\n (isPopperDirectionTop\n ? styles['ChipsSelect--pop-up']\n : styles['ChipsSelect--pop-down']),\n className,\n )}\n disabled={disabled}\n role=\"application\"\n aria-disabled={disabled}\n aria-readonly={restProps.readOnly}\n after={\n <IconButton\n className={styles['ChipsSelect__dropdown']}\n activeMode=\"\"\n hoverMode=\"\"\n // TODO [>=6]: add label customization\n aria-label={opened ? 'Скрыть' : 'Развернуть'}\n onClick={toggleOpened}\n >\n {icon ?? <DropdownIcon className={styles['ChipsSelect__icon']} opened={opened} />}\n </IconButton>\n }\n before={before}\n >\n <ChipsInputBase\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n />\n </FormField>\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Footnote className={styles['ChipsSelect__empty']}>{emptyText}</Footnote>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption && getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find((selectedOption: Option) => {\n return getOptionValue!(selectedOption) === getOptionValue!(option);\n });\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n option,\n hovered: Boolean(hovered),\n children: label,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","chipsInputDefaultProps","emptyText","creatableText","onChangeStart","noop","creatable","fetching","showSelected","closeAfterSelect","options","filterFn","defaultFilterFn","renderOption","props","CustomSelectOption","propsWithDefault","style","onFocus","onBlur","onKeyDown","className","getRef","getRootRef","disabled","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","before","icon","fixDropdownWidth","forceDropdownPortal","noMaxHeight","restProps","document","useDOM","React","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","useExternRef","useChipsSelect","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","length","handleFocus","e","handleBlur","defaultPrevented","preventDefault","handleClickOutside","isClickOutsideFormField","current","contains","target","isClickOutsideDropdown","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","handleKeyDown","key","option","includes","useEffect","useGlobalEventListener","renderChipWrapper","renderChipProps","onRemoveWrapper","value","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","toggleOpened","prevOpened","FormField","classNames","role","aria-disabled","aria-readonly","readOnly","after","IconButton","activeMode","hoverMode","aria-label","onClick","DropdownIcon","ChipsInputBase","onInputChange","CustomSelectDropdown","targetRef","onMouseLeave","sameWidth","forcePortal","hovered","onMouseDown","onMouseEnter","Footnote","map","label","selected","find","selectedOption","Fragment","children"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/ChipsSelect/ChipsSelect.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames, noop } from '@vkontakte/vkjs';\nimport { useChipsSelect } from '../../hooks/useChipsSelect';\nimport { useExternRef } from '../../hooks/useExternRef';\nimport { useGlobalEventListener } from '../../hooks/useGlobalEventListener';\nimport { useDOM } from '../../lib/dom';\nimport type { Placement } from '../../lib/floating';\nimport { defaultFilterFn } from '../../lib/select';\nimport { ChipOption, ChipValue, RenderChip } from '../Chip/Chip';\nimport { ChipsInputProps } from '../ChipsInput/ChipsInput';\nimport { ChipsInputBase, chipsInputDefaultProps } from '../ChipsInputBase/ChipsInputBase';\nimport { CustomSelectDropdown } from '../CustomSelectDropdown/CustomSelectDropdown';\nimport {\n CustomSelectOption,\n CustomSelectOptionProps,\n} from '../CustomSelectOption/CustomSelectOption';\nimport { DropdownIcon } from '../DropdownIcon/DropdownIcon';\nimport { FormField } from '../FormField/FormField';\nimport { IconButton } from '../IconButton/IconButton';\nimport { Footnote } from '../Typography/Footnote/Footnote';\nimport styles from './ChipsSelect.module.css';\n\nconst findIndexAfter = <O extends ChipOption>(options: O[] = [], startIndex = -1) => {\n if (startIndex >= options.length - 1) {\n return -1;\n }\n return options.findIndex((option, i) => i > startIndex && !option.disabled);\n};\n\nconst findIndexBefore = <O extends ChipOption>(\n options: O[] = [],\n endIndex: number = options.length,\n) => {\n let result = -1;\n if (endIndex <= 0) {\n return result;\n }\n for (let i = endIndex - 1; i >= 0; i--) {\n let option = options[i];\n\n if (!option.disabled) {\n result = i;\n break;\n }\n }\n return result;\n};\n\nexport interface ChipsSelectProps<Option extends ChipOption>\n extends Omit<ChipsInputProps<Option>, 'after'> {\n popupDirection?: 'top' | 'bottom';\n options?: Option[];\n filterFn?:\n | false\n | ((\n value?: string,\n option?: Option,\n getOptionLabel?: Pick<ChipsInputProps<Option>, 'getOptionLabel'>['getOptionLabel'],\n ) => boolean);\n /**\n * Возможность создавать чипы которых нет в списке (по enter или с помощью пункта в меню, см creatableText)\n */\n creatable?: boolean;\n /**\n * Отрисовка лоадера вместо списка опций в выпадающем списке\n */\n fetching?: boolean;\n renderOption?: (props: CustomSelectOptionProps) => React.ReactNode;\n /**\n * Показывать или скрывать уже выбранные опции\n */\n showSelected?: boolean;\n /**\n * Текст для пункта создающего чипы при клике, так же отвечает за то будет ли показан этот пункт (показывается после того как в списке не отсанется опций)\n */\n creatableText?: string;\n /**\n * Текст который показывается если список опций пуст\n */\n emptyText?: string;\n /**\n * Событие срабатывающее перед onChange\n */\n onChangeStart?: (e: React.MouseEvent | React.KeyboardEvent, option: Option) => void;\n /**\n * Закрытие выпадающего списка после выбора элемента\n */\n closeAfterSelect?: boolean;\n fixDropdownWidth?: boolean;\n forceDropdownPortal?: boolean;\n /**\n * Иконка раскрывающегося списка\n */\n icon?: React.ReactNode;\n /**\n * Добавляет значение в список на событие `onBlur` (использовать вместе с `creatable`)\n */\n addOnBlur?: boolean;\n /**\n * Отключает максимальную высоту по умолчанию\n */\n noMaxHeight?: boolean;\n}\n\ntype FocusActionType = 'next' | 'prev';\n\nconst FOCUS_ACTION_NEXT: FocusActionType = 'next';\nconst FOCUS_ACTION_PREV: FocusActionType = 'prev';\n\nconst chipsSelectDefaultProps: ChipsSelectProps<any> = {\n ...chipsInputDefaultProps,\n emptyText: 'Ничего не найдено',\n creatableText: 'Создать значение',\n onChangeStart: noop,\n creatable: false,\n fetching: false,\n showSelected: true,\n closeAfterSelect: true,\n options: [],\n filterFn: defaultFilterFn,\n renderOption(props) {\n return <CustomSelectOption {...props} />;\n },\n};\n\n/**\n * @see https://vkcom.github.io/VKUI/#/ChipsSelect\n */\nexport const ChipsSelect = <Option extends ChipOption>(props: ChipsSelectProps<Option>) => {\n const propsWithDefault = { ...chipsSelectDefaultProps, ...props };\n const {\n style,\n onFocus,\n onBlur,\n onKeyDown,\n className,\n fetching,\n renderOption,\n emptyText,\n getRef,\n getRootRef,\n disabled,\n placeholder,\n tabIndex,\n getOptionValue,\n getOptionLabel,\n showSelected,\n getNewOptionData,\n renderChip,\n popupDirection,\n creatable,\n filterFn,\n inputValue,\n creatableText,\n closeAfterSelect,\n onChangeStart,\n before,\n icon,\n options,\n fixDropdownWidth,\n forceDropdownPortal,\n noMaxHeight = false,\n ...restProps\n } = propsWithDefault;\n\n const { document } = useDOM();\n\n const [popperPlacement, setPopperPlacement] = React.useState<Placement | undefined>(undefined);\n\n const scrollBoxRef = React.useRef<HTMLDivElement>(null);\n const rootRef = useExternRef(getRootRef);\n const {\n fieldValue,\n selectedOptions = [],\n opened,\n setOpened,\n addOptionFromInput,\n filteredOptions,\n addOption,\n handleInputChange,\n clearInput,\n focusedOption,\n setFocusedOption,\n focusedOptionIndex,\n setFocusedOptionIndex,\n } = useChipsSelect(propsWithDefault);\n\n const showCreatable = Boolean(\n creatable && creatableText && !filteredOptions.length && fieldValue,\n );\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setOpened(true);\n setFocusedOptionIndex(null);\n onFocus!(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n onBlur!(e);\n\n // Не добавляем значение, если его нужно выбрать строго из списка\n if (!e.defaultPrevented && !creatable) {\n e.preventDefault();\n }\n };\n\n const handleClickOutside = (e: MouseEvent) => {\n const isClickOutsideFormField = !rootRef.current?.contains(e.target as Node);\n const isClickOutsideDropdown = !scrollBoxRef.current?.contains(e.target as Node);\n\n if (isClickOutsideFormField && isClickOutsideDropdown) {\n setOpened(false);\n }\n };\n\n const chipsSelectOptions = React.useRef<HTMLElement[]>([]).current;\n\n const scrollToElement = (index: number, center = false) => {\n const dropdown = scrollBoxRef.current;\n const item = chipsSelectOptions[index];\n\n if (!item || !dropdown) {\n return;\n }\n\n const dropdownHeight = dropdown.offsetHeight;\n const scrollTop = dropdown.scrollTop;\n const itemTop = item.offsetTop;\n const itemHeight = item.offsetHeight;\n\n if (center) {\n dropdown.scrollTop = itemTop - dropdownHeight / 2 + itemHeight / 2;\n } else if (itemTop + itemHeight > dropdownHeight + scrollTop) {\n dropdown.scrollTop = itemTop - dropdownHeight + itemHeight;\n } else if (itemTop < scrollTop) {\n dropdown.scrollTop = itemTop;\n }\n };\n\n const focusOptionByIndex = (index: number, oldIndex: number | null) => {\n const { length } = filteredOptions;\n\n if (index < 0) {\n index = length - 1;\n } else if (index >= length) {\n index = 0;\n }\n\n if (index === oldIndex) {\n return;\n }\n\n const option = filteredOptions[index];\n\n if (option?.disabled) {\n return;\n }\n\n scrollToElement(index);\n setFocusedOptionIndex(index);\n };\n\n const focusOption = (nextIndex: number | null, type: FocusActionType) => {\n let index = nextIndex === null ? -1 : nextIndex;\n\n if (type === FOCUS_ACTION_NEXT) {\n const nextIndex = findIndexAfter(filteredOptions, index);\n index = nextIndex === -1 ? findIndexAfter(filteredOptions) : nextIndex; // Следующий за index или первый валидный до index\n } else if (type === FOCUS_ACTION_PREV) {\n const beforeIndex = findIndexBefore(filteredOptions, index);\n index = beforeIndex === -1 ? findIndexBefore(filteredOptions) : beforeIndex; // Предшествующий index или последний валидный после index\n }\n\n focusOptionByIndex(index, focusedOptionIndex);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n onKeyDown!(e);\n\n if (e.key === 'ArrowUp' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_PREV);\n }\n }\n\n if (e.key === 'ArrowDown' && !e.defaultPrevented) {\n e.preventDefault();\n\n if (!opened) {\n setOpened(true);\n focusOption(null, FOCUS_ACTION_NEXT);\n } else {\n focusOption(focusedOptionIndex, FOCUS_ACTION_NEXT);\n }\n }\n\n if (e.key === 'Enter' && !e.defaultPrevented && opened) {\n if (focusedOptionIndex != null) {\n const option = filteredOptions[focusedOptionIndex];\n\n if (option) {\n onChangeStart!(e, option);\n\n if (!e.defaultPrevented) {\n addOption(option);\n setFocusedOptionIndex(null);\n clearInput();\n closeAfterSelect && setOpened(false);\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n } else if (!creatable) {\n e.preventDefault();\n }\n }\n\n if (['Escape', 'Tab'].includes(e.key) && !e.defaultPrevented && opened) {\n setOpened(false);\n }\n };\n\n React.useEffect(() => {\n if (focusedOptionIndex != null && filteredOptions[focusedOptionIndex]) {\n setFocusedOption(filteredOptions[focusedOptionIndex]);\n } else if (focusedOptionIndex === null || focusedOptionIndex === 0) {\n setFocusedOption(null);\n }\n }, [focusedOptionIndex, filteredOptions, setFocusedOption]);\n\n useGlobalEventListener(document, 'click', handleClickOutside);\n\n const renderChipWrapper = (renderChipProps: RenderChip<Option> | undefined) => {\n if (renderChipProps === undefined) {\n return null;\n }\n const onRemoveWrapper = (e: React.MouseEvent | undefined, value: ChipValue | undefined) => {\n e?.preventDefault();\n e?.stopPropagation();\n\n renderChipProps.onRemove?.(e, value);\n };\n\n return renderChip!({\n ...renderChipProps,\n onRemove: onRemoveWrapper,\n });\n };\n\n const isPopperDirectionTop = popperPlacement?.includes('top');\n\n const onPlacementChange = React.useCallback(\n (placement?: Placement) => {\n setPopperPlacement(placement);\n },\n [setPopperPlacement],\n );\n\n const onDropdownMouseLeave = React.useCallback(() => {\n setFocusedOptionIndex(null);\n }, [setFocusedOptionIndex]);\n\n const toggleOpened = () => {\n setOpened((prevOpened) => !prevOpened);\n };\n\n return (\n <>\n <FormField\n getRootRef={rootRef}\n style={style}\n className={classNames(\n styles['ChipsSelect'],\n opened &&\n (isPopperDirectionTop\n ? styles['ChipsSelect--pop-up']\n : styles['ChipsSelect--pop-down']),\n className,\n )}\n disabled={disabled}\n role=\"application\"\n aria-disabled={disabled}\n aria-readonly={restProps.readOnly}\n after={\n <IconButton\n className={styles['ChipsSelect__dropdown']}\n activeMode=\"\"\n hoverMode=\"\"\n // TODO [>=6]: add label customization\n aria-label={opened ? 'Скрыть' : 'Развернуть'}\n onClick={toggleOpened}\n >\n {icon ?? <DropdownIcon className={styles['ChipsSelect__icon']} opened={opened} />}\n </IconButton>\n }\n before={before}\n >\n <ChipsInputBase\n {...restProps}\n tabIndex={tabIndex}\n value={selectedOptions}\n inputValue={fieldValue}\n getNewOptionData={getNewOptionData}\n getOptionLabel={getOptionLabel}\n getOptionValue={getOptionValue}\n renderChip={renderChipWrapper}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n getRef={getRef}\n disabled={disabled}\n onInputChange={handleInputChange}\n />\n </FormField>\n {opened && (\n <CustomSelectDropdown\n targetRef={rootRef}\n placement={popupDirection}\n scrollBoxRef={scrollBoxRef}\n onPlacementChange={onPlacementChange}\n onMouseLeave={onDropdownMouseLeave}\n fetching={fetching}\n sameWidth={fixDropdownWidth}\n forcePortal={forceDropdownPortal}\n noMaxHeight={noMaxHeight}\n >\n {showCreatable && (\n <CustomSelectOption\n hovered={focusedOptionIndex === 0}\n onMouseDown={addOptionFromInput}\n onMouseEnter={() => setFocusedOptionIndex(0)}\n >\n {creatableText}\n </CustomSelectOption>\n )}\n {!filteredOptions?.length && !showCreatable && emptyText ? (\n <Footnote className={styles['ChipsSelect__empty']}>{emptyText}</Footnote>\n ) : (\n filteredOptions.map((option: Option, index: number) => {\n const label = getOptionLabel!(option);\n const hovered =\n focusedOption && getOptionValue!(option) === getOptionValue!(focusedOption);\n const selected = selectedOptions.find((selectedOption: Option) => {\n return getOptionValue!(selectedOption) === getOptionValue!(option);\n });\n const value = getOptionValue!(option);\n\n return (\n <React.Fragment key={`${typeof value}-${value}`}>\n {renderOption!({\n option,\n hovered: Boolean(hovered),\n children: label,\n disabled: option.disabled,\n selected: !!selected,\n getRootRef: (e) => {\n if (e) {\n return (chipsSelectOptions[index] = e);\n }\n return undefined;\n },\n onMouseDown: (e: React.MouseEvent<HTMLDivElement>) => {\n if (option.disabled) {\n return;\n }\n onChangeStart?.(e, option);\n\n if (!e.defaultPrevented) {\n closeAfterSelect && setOpened(false);\n addOption(option);\n clearInput();\n }\n },\n onMouseEnter: () => setFocusedOptionIndex(index),\n })}\n </React.Fragment>\n );\n })\n )}\n </CustomSelectDropdown>\n )}\n </>\n );\n};\n"],"names":["ChipsSelect","findIndexAfter","options","startIndex","length","findIndex","option","i","disabled","findIndexBefore","endIndex","result","FOCUS_ACTION_NEXT","FOCUS_ACTION_PREV","chipsSelectDefaultProps","chipsInputDefaultProps","emptyText","creatableText","onChangeStart","noop","creatable","fetching","showSelected","closeAfterSelect","filterFn","defaultFilterFn","renderOption","props","CustomSelectOption","propsWithDefault","style","onFocus","onBlur","onKeyDown","className","getRef","getRootRef","placeholder","tabIndex","getOptionValue","getOptionLabel","getNewOptionData","renderChip","popupDirection","inputValue","before","icon","fixDropdownWidth","forceDropdownPortal","noMaxHeight","restProps","document","useDOM","React","useState","undefined","popperPlacement","setPopperPlacement","scrollBoxRef","useRef","rootRef","useExternRef","useChipsSelect","fieldValue","selectedOptions","opened","setOpened","addOptionFromInput","filteredOptions","addOption","handleInputChange","clearInput","focusedOption","setFocusedOption","focusedOptionIndex","setFocusedOptionIndex","showCreatable","Boolean","handleFocus","e","handleBlur","defaultPrevented","preventDefault","handleClickOutside","isClickOutsideFormField","current","contains","target","isClickOutsideDropdown","chipsSelectOptions","scrollToElement","index","center","dropdown","item","dropdownHeight","offsetHeight","scrollTop","itemTop","offsetTop","itemHeight","focusOptionByIndex","oldIndex","focusOption","nextIndex","type","beforeIndex","handleKeyDown","key","includes","useEffect","useGlobalEventListener","renderChipWrapper","renderChipProps","onRemoveWrapper","value","stopPropagation","onRemove","isPopperDirectionTop","onPlacementChange","useCallback","placement","onDropdownMouseLeave","toggleOpened","prevOpened","FormField","classNames","role","aria-disabled","aria-readonly","readOnly","after","IconButton","activeMode","hoverMode","aria-label","onClick","DropdownIcon","ChipsInputBase","onInputChange","CustomSelectDropdown","targetRef","onMouseLeave","sameWidth","forcePortal","hovered","onMouseDown","onMouseEnter","Footnote","map","label","selected","find","selectedOption","Fragment","children"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"CustomSelect.d.ts","sourceRoot":"","sources":["../../../../src/components/CustomSelect/CustomSelect.tsx"],"names":[],"mappings":"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"}
|