@vkontakte/vkui 6.7.3 → 6.7.4

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.
Files changed (253) hide show
  1. package/dist/cjs/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  2. package/dist/cjs/components/BaseGallery/BaseGallery.js +5 -2
  3. package/dist/cjs/components/BaseGallery/BaseGallery.js.map +1 -1
  4. package/dist/cjs/components/Calendar/Calendar.d.ts +6 -6
  5. package/dist/cjs/components/Calendar/Calendar.d.ts.map +1 -1
  6. package/dist/cjs/components/Calendar/Calendar.js +25 -5
  7. package/dist/cjs/components/Calendar/Calendar.js.map +1 -1
  8. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts +4 -1
  9. package/dist/cjs/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  10. package/dist/cjs/components/CalendarDay/CalendarDay.js +5 -3
  11. package/dist/cjs/components/CalendarDay/CalendarDay.js.map +1 -1
  12. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts +6 -3
  13. package/dist/cjs/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  14. package/dist/cjs/components/CalendarDays/CalendarDays.js +5 -3
  15. package/dist/cjs/components/CalendarDays/CalendarDays.js.map +1 -1
  16. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts +8 -2
  17. package/dist/cjs/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  18. package/dist/cjs/components/CalendarHeader/CalendarHeader.js +14 -6
  19. package/dist/cjs/components/CalendarHeader/CalendarHeader.js.map +1 -1
  20. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts +8 -4
  21. package/dist/cjs/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  22. package/dist/cjs/components/CalendarRange/CalendarRange.js +13 -8
  23. package/dist/cjs/components/CalendarRange/CalendarRange.js.map +1 -1
  24. package/dist/cjs/components/CalendarTime/CalendarTime.d.ts +9 -2
  25. package/dist/cjs/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  26. package/dist/cjs/components/CalendarTime/CalendarTime.js +10 -5
  27. package/dist/cjs/components/CalendarTime/CalendarTime.js.map +1 -1
  28. package/dist/cjs/components/Clickable/useState.d.ts +1 -1
  29. package/dist/cjs/components/Clickable/useState.d.ts.map +1 -1
  30. package/dist/cjs/components/Clickable/useState.js +12 -19
  31. package/dist/cjs/components/Clickable/useState.js.map +1 -1
  32. package/dist/cjs/components/DateInput/DateInput.d.ts +12 -3
  33. package/dist/cjs/components/DateInput/DateInput.d.ts.map +1 -1
  34. package/dist/cjs/components/DateInput/DateInput.js +26 -11
  35. package/dist/cjs/components/DateInput/DateInput.js.map +1 -1
  36. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts +15 -3
  37. package/dist/cjs/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  38. package/dist/cjs/components/DateRangeInput/DateRangeInput.js +22 -11
  39. package/dist/cjs/components/DateRangeInput/DateRangeInput.js.map +1 -1
  40. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts +1 -1
  41. package/dist/cjs/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  42. package/dist/cjs/components/FocusTrap/FocusTrap.js +50 -41
  43. package/dist/cjs/components/FocusTrap/FocusTrap.js.map +1 -1
  44. package/dist/cjs/components/Gallery/Gallery.d.ts +1 -1
  45. package/dist/cjs/components/Gallery/Gallery.d.ts.map +1 -1
  46. package/dist/cjs/components/Gallery/Gallery.js +12 -3
  47. package/dist/cjs/components/Gallery/Gallery.js.map +1 -1
  48. package/dist/cjs/components/Gallery/hooks.d.ts +9 -1
  49. package/dist/cjs/components/Gallery/hooks.d.ts.map +1 -1
  50. package/dist/cjs/components/Gallery/hooks.js +43 -25
  51. package/dist/cjs/components/Gallery/hooks.js.map +1 -1
  52. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  53. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js +19 -26
  54. package/dist/cjs/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  55. package/dist/cjs/components/Popover/Popover.js +1 -1
  56. package/dist/cjs/components/Popover/Popover.js.map +1 -1
  57. package/dist/cjs/hooks/useDateInput.d.ts +2 -1
  58. package/dist/cjs/hooks/useDateInput.d.ts.map +1 -1
  59. package/dist/cjs/hooks/useDateInput.js +29 -9
  60. package/dist/cjs/hooks/useDateInput.js.map +1 -1
  61. package/dist/cjs/lib/floating/customResizeObserver.d.ts.map +1 -1
  62. package/dist/cjs/lib/floating/customResizeObserver.js +0 -1
  63. package/dist/cjs/lib/floating/customResizeObserver.js.map +1 -1
  64. package/dist/cjs/lib/floating/types/component.d.ts +2 -2
  65. package/dist/cjs/lib/floating/types/component.d.ts.map +1 -1
  66. package/dist/cjs/lib/floating/useFloatingWithInteractions/index.d.ts +1 -0
  67. package/dist/cjs/lib/floating/useFloatingWithInteractions/index.d.ts.map +1 -1
  68. package/dist/cjs/lib/floating/useFloatingWithInteractions/index.js.map +1 -1
  69. package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts +2 -1
  70. package/dist/cjs/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  71. package/dist/cjs/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  72. package/dist/cjs/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +14 -1
  73. package/dist/cjs/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  74. package/dist/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  75. package/dist/components/BaseGallery/BaseGallery.js +5 -2
  76. package/dist/components/BaseGallery/BaseGallery.js.map +1 -1
  77. package/dist/components/Calendar/Calendar.d.ts +6 -6
  78. package/dist/components/Calendar/Calendar.d.ts.map +1 -1
  79. package/dist/components/Calendar/Calendar.js +25 -5
  80. package/dist/components/Calendar/Calendar.js.map +1 -1
  81. package/dist/components/CalendarDay/CalendarDay.d.ts +4 -1
  82. package/dist/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  83. package/dist/components/CalendarDay/CalendarDay.js +5 -3
  84. package/dist/components/CalendarDay/CalendarDay.js.map +1 -1
  85. package/dist/components/CalendarDays/CalendarDays.d.ts +6 -3
  86. package/dist/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  87. package/dist/components/CalendarDays/CalendarDays.js +5 -3
  88. package/dist/components/CalendarDays/CalendarDays.js.map +1 -1
  89. package/dist/components/CalendarHeader/CalendarHeader.d.ts +8 -2
  90. package/dist/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  91. package/dist/components/CalendarHeader/CalendarHeader.js +14 -6
  92. package/dist/components/CalendarHeader/CalendarHeader.js.map +1 -1
  93. package/dist/components/CalendarRange/CalendarRange.d.ts +8 -4
  94. package/dist/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  95. package/dist/components/CalendarRange/CalendarRange.js +13 -8
  96. package/dist/components/CalendarRange/CalendarRange.js.map +1 -1
  97. package/dist/components/CalendarTime/CalendarTime.d.ts +9 -2
  98. package/dist/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  99. package/dist/components/CalendarTime/CalendarTime.js +10 -5
  100. package/dist/components/CalendarTime/CalendarTime.js.map +1 -1
  101. package/dist/components/Clickable/useState.d.ts +1 -1
  102. package/dist/components/Clickable/useState.d.ts.map +1 -1
  103. package/dist/components/Clickable/useState.js +12 -19
  104. package/dist/components/Clickable/useState.js.map +1 -1
  105. package/dist/components/DateInput/DateInput.d.ts +12 -3
  106. package/dist/components/DateInput/DateInput.d.ts.map +1 -1
  107. package/dist/components/DateInput/DateInput.js +26 -11
  108. package/dist/components/DateInput/DateInput.js.map +1 -1
  109. package/dist/components/DateRangeInput/DateRangeInput.d.ts +15 -3
  110. package/dist/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  111. package/dist/components/DateRangeInput/DateRangeInput.js +22 -11
  112. package/dist/components/DateRangeInput/DateRangeInput.js.map +1 -1
  113. package/dist/components/FocusTrap/FocusTrap.d.ts +1 -1
  114. package/dist/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  115. package/dist/components/FocusTrap/FocusTrap.js +51 -42
  116. package/dist/components/FocusTrap/FocusTrap.js.map +1 -1
  117. package/dist/components/Gallery/Gallery.d.ts +1 -1
  118. package/dist/components/Gallery/Gallery.d.ts.map +1 -1
  119. package/dist/components/Gallery/Gallery.js +12 -3
  120. package/dist/components/Gallery/Gallery.js.map +1 -1
  121. package/dist/components/Gallery/hooks.d.ts +9 -1
  122. package/dist/components/Gallery/hooks.d.ts.map +1 -1
  123. package/dist/components/Gallery/hooks.js +43 -25
  124. package/dist/components/Gallery/hooks.js.map +1 -1
  125. package/dist/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  126. package/dist/components/HorizontalScroll/HorizontalScroll.js +20 -27
  127. package/dist/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  128. package/dist/components/Popover/Popover.js +1 -1
  129. package/dist/components/Popover/Popover.js.map +1 -1
  130. package/dist/components.css +1 -1
  131. package/dist/components.css.map +1 -1
  132. package/dist/components.js.tmp +374 -212
  133. package/dist/cssm/components/BaseGallery/BaseGallery.d.ts.map +1 -1
  134. package/dist/cssm/components/BaseGallery/BaseGallery.js +3 -1
  135. package/dist/cssm/components/BaseGallery/BaseGallery.js.map +1 -1
  136. package/dist/cssm/components/Calendar/Calendar.d.ts +6 -6
  137. package/dist/cssm/components/Calendar/Calendar.d.ts.map +1 -1
  138. package/dist/cssm/components/Calendar/Calendar.js +14 -4
  139. package/dist/cssm/components/Calendar/Calendar.js.map +1 -1
  140. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts +4 -1
  141. package/dist/cssm/components/CalendarDay/CalendarDay.d.ts.map +1 -1
  142. package/dist/cssm/components/CalendarDay/CalendarDay.js +2 -1
  143. package/dist/cssm/components/CalendarDay/CalendarDay.js.map +1 -1
  144. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts +6 -3
  145. package/dist/cssm/components/CalendarDays/CalendarDays.d.ts.map +1 -1
  146. package/dist/cssm/components/CalendarDays/CalendarDays.js +2 -1
  147. package/dist/cssm/components/CalendarDays/CalendarDays.js.map +1 -1
  148. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts +8 -2
  149. package/dist/cssm/components/CalendarHeader/CalendarHeader.d.ts.map +1 -1
  150. package/dist/cssm/components/CalendarHeader/CalendarHeader.js +7 -3
  151. package/dist/cssm/components/CalendarHeader/CalendarHeader.js.map +1 -1
  152. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts +8 -4
  153. package/dist/cssm/components/CalendarRange/CalendarRange.d.ts.map +1 -1
  154. package/dist/cssm/components/CalendarRange/CalendarRange.js +9 -5
  155. package/dist/cssm/components/CalendarRange/CalendarRange.js.map +1 -1
  156. package/dist/cssm/components/CalendarTime/CalendarTime.d.ts +9 -2
  157. package/dist/cssm/components/CalendarTime/CalendarTime.d.ts.map +1 -1
  158. package/dist/cssm/components/CalendarTime/CalendarTime.js +10 -5
  159. package/dist/cssm/components/CalendarTime/CalendarTime.js.map +1 -1
  160. package/dist/cssm/components/CalendarTime/CalendarTime.module.css +4 -0
  161. package/dist/cssm/components/Clickable/useState.d.ts +1 -1
  162. package/dist/cssm/components/Clickable/useState.d.ts.map +1 -1
  163. package/dist/cssm/components/Clickable/useState.js +10 -11
  164. package/dist/cssm/components/Clickable/useState.js.map +1 -1
  165. package/dist/cssm/components/DateInput/DateInput.d.ts +12 -3
  166. package/dist/cssm/components/DateInput/DateInput.d.ts.map +1 -1
  167. package/dist/cssm/components/DateInput/DateInput.js +18 -9
  168. package/dist/cssm/components/DateInput/DateInput.js.map +1 -1
  169. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts +15 -3
  170. package/dist/cssm/components/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  171. package/dist/cssm/components/DateRangeInput/DateRangeInput.js +17 -9
  172. package/dist/cssm/components/DateRangeInput/DateRangeInput.js.map +1 -1
  173. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts +1 -1
  174. package/dist/cssm/components/FocusTrap/FocusTrap.d.ts.map +1 -1
  175. package/dist/cssm/components/FocusTrap/FocusTrap.js +51 -42
  176. package/dist/cssm/components/FocusTrap/FocusTrap.js.map +1 -1
  177. package/dist/cssm/components/Gallery/Gallery.d.ts +1 -1
  178. package/dist/cssm/components/Gallery/Gallery.d.ts.map +1 -1
  179. package/dist/cssm/components/Gallery/Gallery.js +9 -2
  180. package/dist/cssm/components/Gallery/Gallery.js.map +1 -1
  181. package/dist/cssm/components/Gallery/hooks.d.ts +9 -1
  182. package/dist/cssm/components/Gallery/hooks.d.ts.map +1 -1
  183. package/dist/cssm/components/Gallery/hooks.js +43 -25
  184. package/dist/cssm/components/Gallery/hooks.js.map +1 -1
  185. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.d.ts.map +1 -1
  186. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js +20 -27
  187. package/dist/cssm/components/HorizontalScroll/HorizontalScroll.js.map +1 -1
  188. package/dist/cssm/components/Popover/Popover.js +1 -1
  189. package/dist/cssm/components/Popover/Popover.js.map +1 -1
  190. package/dist/cssm/hooks/useDateInput.d.ts +2 -1
  191. package/dist/cssm/hooks/useDateInput.d.ts.map +1 -1
  192. package/dist/cssm/hooks/useDateInput.js +30 -9
  193. package/dist/cssm/hooks/useDateInput.js.map +1 -1
  194. package/dist/cssm/lib/floating/customResizeObserver.d.ts.map +1 -1
  195. package/dist/cssm/lib/floating/customResizeObserver.js +0 -1
  196. package/dist/cssm/lib/floating/customResizeObserver.js.map +1 -1
  197. package/dist/cssm/lib/floating/types/component.d.ts +2 -2
  198. package/dist/cssm/lib/floating/types/component.d.ts.map +1 -1
  199. package/dist/cssm/lib/floating/types/component.js.map +1 -1
  200. package/dist/cssm/lib/floating/useFloatingWithInteractions/index.d.ts +1 -0
  201. package/dist/cssm/lib/floating/useFloatingWithInteractions/index.d.ts.map +1 -1
  202. package/dist/cssm/lib/floating/useFloatingWithInteractions/index.js.map +1 -1
  203. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts +2 -1
  204. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  205. package/dist/cssm/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  206. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  207. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +14 -1
  208. package/dist/cssm/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  209. package/dist/hooks/useDateInput.d.ts +2 -1
  210. package/dist/hooks/useDateInput.d.ts.map +1 -1
  211. package/dist/hooks/useDateInput.js +30 -9
  212. package/dist/hooks/useDateInput.js.map +1 -1
  213. package/dist/lib/floating/customResizeObserver.d.ts.map +1 -1
  214. package/dist/lib/floating/customResizeObserver.js +0 -1
  215. package/dist/lib/floating/customResizeObserver.js.map +1 -1
  216. package/dist/lib/floating/types/component.d.ts +2 -2
  217. package/dist/lib/floating/types/component.d.ts.map +1 -1
  218. package/dist/lib/floating/types/component.js.map +1 -1
  219. package/dist/lib/floating/useFloatingWithInteractions/index.d.ts +1 -0
  220. package/dist/lib/floating/useFloatingWithInteractions/index.d.ts.map +1 -1
  221. package/dist/lib/floating/useFloatingWithInteractions/index.js.map +1 -1
  222. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts +2 -1
  223. package/dist/lib/floating/useFloatingWithInteractions/types.d.ts.map +1 -1
  224. package/dist/lib/floating/useFloatingWithInteractions/types.js.map +1 -1
  225. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.d.ts.map +1 -1
  226. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js +14 -1
  227. package/dist/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.js.map +1 -1
  228. package/dist/vkui.css +1 -1
  229. package/dist/vkui.css.map +1 -1
  230. package/dist/vkui.js.tmp +374 -212
  231. package/package.json +1 -1
  232. package/src/components/BaseGallery/BaseGallery.tsx +8 -1
  233. package/src/components/Calendar/Calendar.tsx +49 -6
  234. package/src/components/CalendarDay/CalendarDay.tsx +7 -1
  235. package/src/components/CalendarDays/CalendarDays.tsx +9 -1
  236. package/src/components/CalendarHeader/CalendarHeader.tsx +21 -1
  237. package/src/components/CalendarRange/CalendarRange.tsx +24 -3
  238. package/src/components/CalendarTime/CalendarTime.module.css +4 -0
  239. package/src/components/CalendarTime/CalendarTime.tsx +39 -10
  240. package/src/components/Clickable/useState.tsx +30 -27
  241. package/src/components/DateInput/DateInput.tsx +32 -3
  242. package/src/components/DateRangeInput/DateRangeInput.tsx +28 -1
  243. package/src/components/FocusTrap/FocusTrap.tsx +75 -45
  244. package/src/components/Gallery/Gallery.tsx +10 -1
  245. package/src/components/Gallery/hooks.ts +49 -33
  246. package/src/components/HorizontalScroll/HorizontalScroll.tsx +23 -28
  247. package/src/components/Popover/Popover.tsx +1 -1
  248. package/src/hooks/useDateInput.ts +23 -6
  249. package/src/lib/floating/customResizeObserver.ts +0 -1
  250. package/src/lib/floating/types/component.ts +2 -1
  251. package/src/lib/floating/useFloatingWithInteractions/index.ts +2 -0
  252. package/src/lib/floating/useFloatingWithInteractions/types.ts +3 -1
  253. package/src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts +15 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePatchChildren } from '../../hooks/usePatchChildren';\nimport { injectAriaExpandedPropByRole } from '../../lib/accessibility';\nimport { animationFadeClassNames, transformOriginClassNames } from '../../lib/animation';\nimport {\n type FloatingComponentProps,\n type FloatingContentRenderProp,\n type OnShownChange,\n useFloatingMiddlewaresBootstrap,\n useFloatingWithInteractions,\n usePlacementChangeCallback,\n} from '../../lib/floating';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport {\n DEFAULT_ARROW_HEIGHT,\n DEFAULT_ARROW_PADDING,\n DefaultIcon,\n} from '../FloatingArrow/DefaultIcon';\nimport {\n FloatingArrow,\n type FloatingArrowProps as FloatingArrowPropsPrivate,\n} from '../FloatingArrow/FloatingArrow';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport type { FocusTrapProps } from '../FocusTrap/FocusTrap';\nimport styles from './Popover.module.css';\n\n/**\n * @alias\n * @public\n */\nexport type PopoverArrowProps = Omit<\n FloatingArrowPropsPrivate,\n 'getRootRef' | 'coords' | 'placement' | 'Icon'\n>;\n\n/**\n * @alias\n * @public\n */\nexport type PopoverOnShownChange = OnShownChange;\n\n/**\n * @alias\n * @public\n */\nexport type PopoverContentRenderProp = FloatingContentRenderProp;\n\ntype AllowedFloatingComponentProps = Pick<\n FloatingComponentProps,\n | 'arrow'\n | 'arrowHeight'\n | 'arrowPadding'\n | 'placement'\n | 'onPlacementChange'\n | 'trigger'\n | 'content'\n | 'hoverDelay'\n | 'closeAfterClick'\n | 'offsetByMainAxis'\n | 'offsetByCrossAxis'\n | 'defaultShown'\n | 'shown'\n | 'onShownChange'\n | 'onShownChanged'\n | 'usePortal'\n | 'sameWidth'\n | 'hideWhenReferenceHidden'\n | 'disabled'\n | 'disableInteractive'\n | 'disableCloseOnClickOutside'\n | 'disableCloseOnEscKey'\n | 'autoFocus'\n | 'restoreFocus'\n | 'children'\n | 'zIndex'\n | 'disableFlipMiddleware'\n | 'customMiddlewares'\n>;\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<AllowedFloatingComponentProps, 'autoFocus'>,\n Omit<HTMLAttributesWithRootRef<HTMLDivElement>, keyof FloatingComponentProps> {\n /**\n * Отключает у всплывающего элемента стилизацию по умолчанию.\n *\n * У `content`:\n * - _background_\n * - _border-radius_\n * - _box-shadow_\n *\n * У `arrow`:\n * - _color_\n *\n * Используется в случае, если необходимо стилизовать по своему. Для `arrow` _color_ можно\n * определить через в `arrowProps.iconClassName` или `arrowProps.iconStyle`.\n */\n noStyling?: boolean;\n /**\n * Позволяет набросить на стрелку пользовательские атрибуты.\n */\n arrowProps?: PopoverArrowProps;\n /**\n * Пользовательская SVG иконка.\n *\n * Требования:\n *\n * 1. Иконка по умолчанию должна быть направлена вверх (a.k.a `IconUp`).\n * 2. Чтобы избежать проблемы с пространством между стрелкой и контентом на некоторых экранах,\n * растяните кривую по высоте на `1px` и увеличьте на этот размер `height` и `viewBox` SVG.\n * (см. https://github.com/VKCOM/VKUI/pull/4496).\n * 3. Передайте высоту иконки в параметр `arrowHeight`. В значении высоты можно исключить хак с `1px` из п.2.\n * 4. Убедитесь, что компонент принимает все валидные для SVG параметры.\n * 5. Убедитесь, что SVG и её элементы наследует цвет через `fill=\"currentColor\"`.\n */\n ArrowIcon?: FloatingArrowPropsPrivate['Icon'];\n /**\n * Используется для того, чтобы не удалять поповер из DOM дерева при скрытии.\n */\n keepMounted?: boolean;\n autoFocus?: FocusTrapProps['autoFocus'];\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n // UsePopoverProps\n arrow: withArrow,\n arrowHeight = DEFAULT_ARROW_HEIGHT,\n arrowPadding = DEFAULT_ARROW_PADDING,\n placement: expectedPlacement = 'bottom-start',\n onPlacementChange,\n disableFlipMiddleware = false,\n trigger = 'click',\n content,\n hoverDelay = 150,\n closeAfterClick,\n offsetByMainAxis = 8,\n offsetByCrossAxis = 0,\n sameWidth,\n hideWhenReferenceHidden,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n keepMounted = false,\n customMiddlewares,\n // uncontrolled\n defaultShown = false,\n // controlled\n shown: shownProp,\n onShownChange,\n onShownChanged,\n\n // Для AppRootPortal\n usePortal = true,\n\n // Для FloatingArrow\n arrowProps,\n ArrowIcon = DefaultIcon,\n\n // FocusTrapProps\n autoFocus = true,\n restoreFocus = true,\n className,\n children,\n noStyling = false,\n zIndex = 'var(--vkui--z_index_popout)',\n // a11y\n role = 'dialog',\n ...restPopoverProps\n}: PopoverProps): React.ReactNode => {\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n arrow: withArrow,\n arrowRef,\n arrowHeight,\n arrowPadding,\n placement: expectedPlacement,\n offsetByMainAxis,\n offsetByCrossAxis,\n sameWidth,\n hideWhenReferenceHidden,\n disableFlipMiddleware,\n customMiddlewares,\n });\n const {\n placement: resolvedPlacement,\n shown,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose,\n onRestoreFocus,\n onEscapeKeyDown,\n } = useFloatingWithInteractions({\n middlewares,\n placement: strictPlacement,\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n });\n\n usePlacementChangeCallback(expectedPlacement, resolvedPlacement, onPlacementChange);\n\n const [, child] = usePatchChildren<HTMLDivElement>(\n children,\n injectAriaExpandedPropByRole(referenceProps, shown, role),\n refs.setReference,\n );\n\n let popover: React.ReactNode = null;\n if (shown || keepMounted) {\n const hidden = keepMounted && !shown;\n\n let arrow: React.ReactElement | null = null;\n if (withArrow) {\n const { arrow: arrowCoords } = middlewareData;\n arrow = (\n <FloatingArrow\n iconClassName={noStyling ? undefined : styles['Popover__arrow']}\n {...arrowProps}\n coords={arrowCoords}\n placement={resolvedPlacement}\n getRootRef={setArrowRef}\n Icon={ArrowIcon}\n />\n );\n }\n\n popover = (\n <AppRootPortal usePortal={usePortal}>\n <div\n ref={refs.setFloating}\n className={classNames(styles['Popover'], hidden && styles['Popover--hidden'])}\n {...floatingProps}\n style={{\n zIndex: !hidden ? zIndex : undefined,\n ...floatingProps.style,\n }}\n >\n <FocusTrap\n {...restPopoverProps}\n role={role}\n className={classNames(\n styles['Popover__in'],\n noStyling ? undefined : styles['Popover__in--withStyling'],\n willBeHide ? animationFadeClassNames.out : animationFadeClassNames.in,\n transformOriginClassNames[resolvedPlacement],\n className,\n )}\n mount={!hidden}\n disabled={hidden}\n autoFocus={disableInteractive ? false : autoFocus}\n restoreFocus={restoreFocus ? onRestoreFocus : false}\n onClose={onEscapeKeyDown}\n >\n {arrow}\n {typeof content === 'function' ? content({ onClose }) : content}\n </FocusTrap>\n </div>\n </AppRootPortal>\n );\n }\n\n return (\n <React.Fragment>\n {child}\n {popover}\n </React.Fragment>\n );\n};\n"],"names":["Popover","arrow","withArrow","arrowHeight","DEFAULT_ARROW_HEIGHT","arrowPadding","DEFAULT_ARROW_PADDING","placement","expectedPlacement","onPlacementChange","disableFlipMiddleware","trigger","content","hoverDelay","closeAfterClick","offsetByMainAxis","offsetByCrossAxis","sameWidth","hideWhenReferenceHidden","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","keepMounted","customMiddlewares","defaultShown","shown","shownProp","onShownChange","onShownChanged","usePortal","arrowProps","ArrowIcon","DefaultIcon","autoFocus","restoreFocus","className","children","noStyling","zIndex","role","restPopoverProps","arrowRef","setArrowRef","React","useState","middlewares","strictPlacement","useFloatingMiddlewaresBootstrap","resolvedPlacement","willBeHide","refs","referenceProps","floatingProps","middlewareData","onClose","onRestoreFocus","onEscapeKeyDown","useFloatingWithInteractions","usePlacementChangeCallback","child","usePatchChildren","injectAriaExpandedPropByRole","setReference","popover","hidden","arrowCoords","FloatingArrow","iconClassName","undefined","coords","getRootRef","Icon","AppRootPortal","div","ref","setFloating","classNames","style","FocusTrap","animationFadeClassNames","out","in","transformOriginClassNames","mount","Fragment"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/components/Popover/Popover.tsx"],"sourcesContent":["import * as React from 'react';\nimport { classNames } from '@vkontakte/vkjs';\nimport { usePatchChildren } from '../../hooks/usePatchChildren';\nimport { injectAriaExpandedPropByRole } from '../../lib/accessibility';\nimport { animationFadeClassNames, transformOriginClassNames } from '../../lib/animation';\nimport {\n type FloatingComponentProps,\n type FloatingContentRenderProp,\n type OnShownChange,\n useFloatingMiddlewaresBootstrap,\n useFloatingWithInteractions,\n usePlacementChangeCallback,\n} from '../../lib/floating';\nimport type { HTMLAttributesWithRootRef } from '../../types';\nimport { AppRootPortal } from '../AppRoot/AppRootPortal';\nimport {\n DEFAULT_ARROW_HEIGHT,\n DEFAULT_ARROW_PADDING,\n DefaultIcon,\n} from '../FloatingArrow/DefaultIcon';\nimport {\n FloatingArrow,\n type FloatingArrowProps as FloatingArrowPropsPrivate,\n} from '../FloatingArrow/FloatingArrow';\nimport { FocusTrap } from '../FocusTrap/FocusTrap';\nimport type { FocusTrapProps } from '../FocusTrap/FocusTrap';\nimport styles from './Popover.module.css';\n\n/**\n * @alias\n * @public\n */\nexport type PopoverArrowProps = Omit<\n FloatingArrowPropsPrivate,\n 'getRootRef' | 'coords' | 'placement' | 'Icon'\n>;\n\n/**\n * @alias\n * @public\n */\nexport type PopoverOnShownChange = OnShownChange;\n\n/**\n * @alias\n * @public\n */\nexport type PopoverContentRenderProp = FloatingContentRenderProp;\n\ntype AllowedFloatingComponentProps = Pick<\n FloatingComponentProps,\n | 'arrow'\n | 'arrowHeight'\n | 'arrowPadding'\n | 'placement'\n | 'onPlacementChange'\n | 'trigger'\n | 'content'\n | 'hoverDelay'\n | 'closeAfterClick'\n | 'offsetByMainAxis'\n | 'offsetByCrossAxis'\n | 'defaultShown'\n | 'shown'\n | 'onShownChange'\n | 'onShownChanged'\n | 'usePortal'\n | 'sameWidth'\n | 'hideWhenReferenceHidden'\n | 'disabled'\n | 'disableInteractive'\n | 'disableCloseOnClickOutside'\n | 'disableCloseOnEscKey'\n | 'autoFocus'\n | 'restoreFocus'\n | 'children'\n | 'zIndex'\n | 'disableFlipMiddleware'\n | 'customMiddlewares'\n>;\n\n/**\n * @public\n */\nexport interface PopoverProps\n extends Omit<AllowedFloatingComponentProps, 'autoFocus'>,\n Omit<HTMLAttributesWithRootRef<HTMLDivElement>, keyof FloatingComponentProps> {\n /**\n * Отключает у всплывающего элемента стилизацию по умолчанию.\n *\n * У `content`:\n * - _background_\n * - _border-radius_\n * - _box-shadow_\n *\n * У `arrow`:\n * - _color_\n *\n * Используется в случае, если необходимо стилизовать по своему. Для `arrow` _color_ можно\n * определить через в `arrowProps.iconClassName` или `arrowProps.iconStyle`.\n */\n noStyling?: boolean;\n /**\n * Позволяет набросить на стрелку пользовательские атрибуты.\n */\n arrowProps?: PopoverArrowProps;\n /**\n * Пользовательская SVG иконка.\n *\n * Требования:\n *\n * 1. Иконка по умолчанию должна быть направлена вверх (a.k.a `IconUp`).\n * 2. Чтобы избежать проблемы с пространством между стрелкой и контентом на некоторых экранах,\n * растяните кривую по высоте на `1px` и увеличьте на этот размер `height` и `viewBox` SVG.\n * (см. https://github.com/VKCOM/VKUI/pull/4496).\n * 3. Передайте высоту иконки в параметр `arrowHeight`. В значении высоты можно исключить хак с `1px` из п.2.\n * 4. Убедитесь, что компонент принимает все валидные для SVG параметры.\n * 5. Убедитесь, что SVG и её элементы наследует цвет через `fill=\"currentColor\"`.\n */\n ArrowIcon?: FloatingArrowPropsPrivate['Icon'];\n /**\n * Используется для того, чтобы не удалять поповер из DOM дерева при скрытии.\n */\n keepMounted?: boolean;\n autoFocus?: FocusTrapProps['autoFocus'];\n}\n\n/**\n * @see https://vkcom.github.io/VKUI/#/Popover\n */\nexport const Popover = ({\n // UsePopoverProps\n arrow: withArrow,\n arrowHeight = DEFAULT_ARROW_HEIGHT,\n arrowPadding = DEFAULT_ARROW_PADDING,\n placement: expectedPlacement = 'bottom-start',\n onPlacementChange,\n disableFlipMiddleware = false,\n trigger = 'click',\n content,\n hoverDelay = 150,\n closeAfterClick,\n offsetByMainAxis = 8,\n offsetByCrossAxis = 0,\n sameWidth,\n hideWhenReferenceHidden,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n keepMounted = false,\n customMiddlewares,\n // uncontrolled\n defaultShown = false,\n // controlled\n shown: shownProp,\n onShownChange,\n onShownChanged,\n\n // Для AppRootPortal\n usePortal = true,\n\n // Для FloatingArrow\n arrowProps,\n ArrowIcon = DefaultIcon,\n\n // FocusTrapProps\n autoFocus = true,\n restoreFocus = true,\n className,\n children,\n noStyling = false,\n zIndex = 'var(--vkui--z_index_popout)',\n // a11y\n role = 'dialog',\n ...restPopoverProps\n}: PopoverProps): React.ReactNode => {\n const [arrowRef, setArrowRef] = React.useState<HTMLDivElement | null>(null);\n const { middlewares, strictPlacement } = useFloatingMiddlewaresBootstrap({\n arrow: withArrow,\n arrowRef,\n arrowHeight,\n arrowPadding,\n placement: expectedPlacement,\n offsetByMainAxis,\n offsetByCrossAxis,\n sameWidth,\n hideWhenReferenceHidden,\n disableFlipMiddleware,\n customMiddlewares,\n });\n const {\n placement: resolvedPlacement,\n shown,\n willBeHide,\n refs,\n referenceProps,\n floatingProps,\n middlewareData,\n onClose,\n onRestoreFocus,\n onEscapeKeyDown,\n } = useFloatingWithInteractions({\n middlewares,\n placement: strictPlacement,\n trigger,\n hoverDelay,\n closeAfterClick,\n disabled,\n disableInteractive,\n disableCloseOnClickOutside,\n disableCloseOnEscKey,\n defaultShown,\n shown: shownProp,\n onShownChange,\n onShownChanged,\n });\n\n usePlacementChangeCallback(expectedPlacement, resolvedPlacement, onPlacementChange);\n\n const [, child] = usePatchChildren<HTMLDivElement>(\n children,\n injectAriaExpandedPropByRole(referenceProps, shown, role),\n refs.setReference,\n );\n\n let popover: React.ReactNode = null;\n if (shown || keepMounted) {\n const hidden = keepMounted && !shown;\n\n let arrow: React.ReactElement | null = null;\n if (withArrow) {\n const { arrow: arrowCoords } = middlewareData;\n arrow = (\n <FloatingArrow\n iconClassName={noStyling ? undefined : styles['Popover__arrow']}\n {...arrowProps}\n coords={arrowCoords}\n placement={resolvedPlacement}\n getRootRef={setArrowRef}\n Icon={ArrowIcon}\n />\n );\n }\n\n popover = (\n <AppRootPortal usePortal={usePortal}>\n <div\n ref={refs.setFloating}\n className={classNames(styles['Popover'], hidden && styles['Popover--hidden'])}\n {...floatingProps}\n style={{\n zIndex: !hidden ? zIndex : undefined,\n ...floatingProps.style,\n }}\n >\n <FocusTrap\n {...restPopoverProps}\n role={role}\n className={classNames(\n styles['Popover__in'],\n noStyling ? undefined : styles['Popover__in--withStyling'],\n willBeHide ? animationFadeClassNames.out : animationFadeClassNames.in,\n transformOriginClassNames[resolvedPlacement],\n className,\n )}\n mount={!hidden}\n disabled={hidden}\n autoFocus={disableInteractive ? false : autoFocus}\n restoreFocus={restoreFocus ? () => onRestoreFocus(restoreFocus) : false}\n onClose={onEscapeKeyDown}\n >\n {arrow}\n {typeof content === 'function' ? content({ onClose }) : content}\n </FocusTrap>\n </div>\n </AppRootPortal>\n );\n }\n\n return (\n <React.Fragment>\n {child}\n {popover}\n </React.Fragment>\n );\n};\n"],"names":["Popover","arrow","withArrow","arrowHeight","DEFAULT_ARROW_HEIGHT","arrowPadding","DEFAULT_ARROW_PADDING","placement","expectedPlacement","onPlacementChange","disableFlipMiddleware","trigger","content","hoverDelay","closeAfterClick","offsetByMainAxis","offsetByCrossAxis","sameWidth","hideWhenReferenceHidden","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","keepMounted","customMiddlewares","defaultShown","shown","shownProp","onShownChange","onShownChanged","usePortal","arrowProps","ArrowIcon","DefaultIcon","autoFocus","restoreFocus","className","children","noStyling","zIndex","role","restPopoverProps","arrowRef","setArrowRef","React","useState","middlewares","strictPlacement","useFloatingMiddlewaresBootstrap","resolvedPlacement","willBeHide","refs","referenceProps","floatingProps","middlewareData","onClose","onRestoreFocus","onEscapeKeyDown","useFloatingWithInteractions","usePlacementChangeCallback","child","usePatchChildren","injectAriaExpandedPropByRole","setReference","popover","hidden","arrowCoords","FloatingArrow","iconClassName","undefined","coords","getRootRef","Icon","AppRootPortal","div","ref","setFloating","classNames","style","FocusTrap","animationFadeClassNames","out","in","transformOriginClassNames","mount","Fragment"],"mappings":"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"}
@@ -13,8 +13,9 @@ export interface UseDateInputDependencies<T, D> {
13
13
  onInternalValueChange: (value: string[]) => void;
14
14
  getInternalValue: (value?: D | undefined) => string[];
15
15
  onChange?: (value?: D | undefined) => void;
16
+ onCalendarOpenChanged?: (opened: boolean) => void;
16
17
  }
17
- export declare function useDateInput<T extends HTMLElement, D>({ maxElement, refs, autoFocus, disabled, elementsConfig, onChange, onInternalValueChange, getInternalValue, value, }: UseDateInputDependencies<T, D>): {
18
+ export declare function useDateInput<T extends HTMLElement, D>({ maxElement, refs, autoFocus, disabled, elementsConfig, onChange, onInternalValueChange, getInternalValue, value, onCalendarOpenChanged, }: UseDateInputDependencies<T, D>): {
18
19
  rootRef: React.RefObject<HTMLDivElement>;
19
20
  calendarRef: React.RefObject<HTMLDivElement>;
20
21
  open: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"useDateInput.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDateInput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,wBAAwB,CAAC,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;CAC5C;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,EACrD,UAAU,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,GACN,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,CA8JA"}
1
+ {"version":3,"file":"useDateInput.d.ts","sourceRoot":"","sources":["../../../src/hooks/useDateInput.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,WAAW,wBAAwB,CAAC,CAAC,EAAE,CAAC;IAC5C,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,cAAc,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK;QACjC,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACjD,gBAAgB,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3C,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,CAAC,EAAE,EACrD,UAAU,EACV,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,qBAAqB,EACrB,gBAAgB,EAChB,KAAK,EACL,qBAAqB,GACtB,EAAE,wBAAwB,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;IAClC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IACzC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;IACvE,aAAa,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,KAAK,IAAI,CAAC;IACjE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,oBAAoB,EAAE,MAAM,IAAI,CAAC;CAClC,CA4KA"}
@@ -13,7 +13,7 @@ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
13
13
  const _dom = require("../lib/dom");
14
14
  const _useBooleanState = require("./useBooleanState");
15
15
  const _useGlobalEventListener = require("./useGlobalEventListener");
16
- function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, onChange, onInternalValueChange, getInternalValue, value }) {
16
+ function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, onChange, onInternalValueChange, getInternalValue, value, onCalendarOpenChanged }) {
17
17
  const { document } = (0, _dom.useDOM)();
18
18
  const { value: open, setTrue: openCalendar, setFalse: closeCalendar } = (0, _useBooleanState.useBooleanState)(false);
19
19
  const rootRef = _react.useRef(null);
@@ -21,20 +21,40 @@ function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, o
21
21
  const [internalValue, setInternalValue] = _react.useState([]);
22
22
  const [focusedElement, setFocusedElement] = _react.useState(null);
23
23
  const { window } = (0, _dom.useDOM)();
24
+ const _onCalendarClose = (0, _react.useCallback)(()=>{
25
+ if (open) {
26
+ closeCalendar();
27
+ onCalendarOpenChanged === null || onCalendarOpenChanged === void 0 ? void 0 : onCalendarOpenChanged(false);
28
+ }
29
+ }, [
30
+ closeCalendar,
31
+ onCalendarOpenChanged,
32
+ open
33
+ ]);
34
+ const _onCalendarOpen = (0, _react.useCallback)(()=>{
35
+ if (!open) {
36
+ openCalendar();
37
+ onCalendarOpenChanged === null || onCalendarOpenChanged === void 0 ? void 0 : onCalendarOpenChanged(true);
38
+ }
39
+ }, [
40
+ onCalendarOpenChanged,
41
+ open,
42
+ openCalendar
43
+ ]);
24
44
  const removeFocusFromField = _react.useCallback(()=>{
25
45
  if (focusedElement !== null) {
26
46
  var _window_getSelection;
27
47
  setFocusedElement(null);
28
- closeCalendar();
48
+ _onCalendarClose();
29
49
  (_window_getSelection = window.getSelection()) === null || _window_getSelection === void 0 ? void 0 : _window_getSelection.removeAllRanges();
30
50
  setInternalValue(getInternalValue(value));
31
51
  }
32
52
  }, [
33
53
  focusedElement,
34
- closeCalendar,
54
+ _onCalendarClose,
55
+ window,
35
56
  getInternalValue,
36
- value,
37
- window
57
+ value
38
58
  ]);
39
59
  const handleClickOutside = _react.useCallback((e)=>{
40
60
  var _rootRef_current, _calendarRef_current;
@@ -72,7 +92,7 @@ function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, o
72
92
  let element = refs[focusedElement].current;
73
93
  if (element) {
74
94
  element.focus();
75
- openCalendar();
95
+ _onCalendarOpen();
76
96
  range.selectNodeContents(element);
77
97
  const selection = window.getSelection();
78
98
  selection === null || selection === void 0 ? void 0 : selection.removeAllRanges();
@@ -81,7 +101,7 @@ function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, o
81
101
  }, [
82
102
  disabled,
83
103
  focusedElement,
84
- openCalendar,
104
+ _onCalendarOpen,
85
105
  refs,
86
106
  window
87
107
  ]);
@@ -156,8 +176,8 @@ function useDateInput({ maxElement, refs, autoFocus, disabled, elementsConfig, o
156
176
  rootRef,
157
177
  calendarRef,
158
178
  open,
159
- openCalendar,
160
- closeCalendar,
179
+ openCalendar: _onCalendarOpen,
180
+ closeCalendar: _onCalendarClose,
161
181
  internalValue,
162
182
  focusedElement,
163
183
  setFocusedElement,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T>>;\n autoFocus?: boolean;\n disabled?: boolean;\n value?: D;\n elementsConfig: (index: number) => {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange: (value: string[]) => void;\n getInternalValue: (value?: D | undefined) => string[];\n onChange?: (value?: D | undefined) => void;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n}: UseDateInputDependencies<T, D>): {\n rootRef: React.RefObject<HTMLDivElement>;\n calendarRef: React.RefObject<HTMLDivElement>;\n open: boolean;\n openCalendar: () => void;\n closeCalendar: () => void;\n internalValue: string[];\n focusedElement: number | null;\n setFocusedElement: React.Dispatch<React.SetStateAction<number | null>>;\n handleKeyDown: (e: React.KeyboardEvent<HTMLSpanElement>) => void;\n clear: () => void;\n handleFieldEnter: () => void;\n removeFocusFromField: () => void;\n} {\n const { document } = useDOM();\n const { value: open, setTrue: openCalendar, setFalse: closeCalendar } = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const { window } = useDOM();\n\n const removeFocusFromField = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n closeCalendar();\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, closeCalendar, getInternalValue, value, window]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n setFocusedElement(0);\n }, []);\n\n useGlobalEventListener(document, 'click', handleClickOutside, {\n capture: true,\n });\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n if (element) {\n element.focus();\n openCalendar();\n range.selectNodeContents(element as Node);\n\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }, [disabled, focusedElement, openCalendar, refs, window]);\n\n const clear = React.useCallback(() => {\n onChange?.(undefined);\n selectFirst();\n }, [onChange, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n if (!open) {\n selectFirst();\n }\n }, [open, selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (\n e.key === 'Enter' ||\n (e.key === 'Tab' && focusedElement === maxElement) ||\n (e.key === 'Tab' && e.shiftKey && focusedElement === 0)\n ) {\n removeFocusFromField();\n return;\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n setFocusedElement(focusedElement >= maxElement ? 0 : focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n removeFocusFromField,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar,\n closeCalendar,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n };\n}\n"],"names":["useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onChange","onInternalValueChange","getInternalValue","value","document","useDOM","open","setTrue","openCalendar","setFalse","closeCalendar","useBooleanState","rootRef","React","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","window","removeFocusFromField","useCallback","getSelection","removeAllRanges","handleClickOutside","e","current","contains","target","selectFirst","useGlobalEventListener","capture","useEffect","range","createRange","element","focus","selectNodeContents","selection","addRange","clear","undefined","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/hooks/useDateInput.ts"],"sourcesContent":["import { useCallback } from 'react';\nimport * as React from 'react';\nimport { useDOM } from '../lib/dom';\nimport { useBooleanState } from './useBooleanState';\nimport { useGlobalEventListener } from './useGlobalEventListener';\n\nexport interface UseDateInputDependencies<T, D> {\n maxElement: number;\n refs: Array<React.RefObject<T>>;\n autoFocus?: boolean;\n disabled?: boolean;\n value?: D;\n elementsConfig: (index: number) => {\n length: number;\n min: number;\n max: number;\n };\n onInternalValueChange: (value: string[]) => void;\n getInternalValue: (value?: D | undefined) => string[];\n onChange?: (value?: D | undefined) => void;\n onCalendarOpenChanged?: (opened: boolean) => void;\n}\n\nexport function useDateInput<T extends HTMLElement, D>({\n maxElement,\n refs,\n autoFocus,\n disabled,\n elementsConfig,\n onChange,\n onInternalValueChange,\n getInternalValue,\n value,\n onCalendarOpenChanged,\n}: UseDateInputDependencies<T, D>): {\n rootRef: React.RefObject<HTMLDivElement>;\n calendarRef: React.RefObject<HTMLDivElement>;\n open: boolean;\n openCalendar: () => void;\n closeCalendar: () => void;\n internalValue: string[];\n focusedElement: number | null;\n setFocusedElement: React.Dispatch<React.SetStateAction<number | null>>;\n handleKeyDown: (e: React.KeyboardEvent<HTMLSpanElement>) => void;\n clear: () => void;\n handleFieldEnter: () => void;\n removeFocusFromField: () => void;\n} {\n const { document } = useDOM();\n const { value: open, setTrue: openCalendar, setFalse: closeCalendar } = useBooleanState(false);\n const rootRef = React.useRef<HTMLDivElement>(null);\n const calendarRef = React.useRef<HTMLDivElement>(null);\n const [internalValue, setInternalValue] = React.useState<string[]>([]);\n const [focusedElement, setFocusedElement] = React.useState<number | null>(null);\n const { window } = useDOM();\n\n const _onCalendarClose = useCallback(() => {\n if (open) {\n closeCalendar();\n onCalendarOpenChanged?.(false);\n }\n }, [closeCalendar, onCalendarOpenChanged, open]);\n\n const _onCalendarOpen = useCallback(() => {\n if (!open) {\n openCalendar();\n onCalendarOpenChanged?.(true);\n }\n }, [onCalendarOpenChanged, open, openCalendar]);\n\n const removeFocusFromField = React.useCallback(() => {\n if (focusedElement !== null) {\n setFocusedElement(null);\n _onCalendarClose();\n window!.getSelection()?.removeAllRanges();\n setInternalValue(getInternalValue(value));\n }\n }, [focusedElement, _onCalendarClose, window, getInternalValue, value]);\n\n const handleClickOutside = React.useCallback(\n (e: MouseEvent) => {\n if (\n !rootRef.current?.contains(e.target as Node | null) &&\n !calendarRef.current?.contains(e.target as Node | null)\n ) {\n removeFocusFromField();\n }\n },\n [removeFocusFromField],\n );\n\n const selectFirst = React.useCallback(() => {\n setFocusedElement(0);\n }, []);\n\n useGlobalEventListener(document, 'click', handleClickOutside, {\n capture: true,\n });\n\n React.useEffect(() => {\n setInternalValue(getInternalValue(value));\n }, [getInternalValue, value]);\n\n React.useEffect(() => {\n if (autoFocus) {\n selectFirst();\n }\n }, [autoFocus, selectFirst]);\n\n React.useEffect(() => {\n if (disabled || focusedElement === null) {\n return;\n }\n\n const range = window!.document.createRange();\n\n let element = refs[focusedElement].current;\n\n if (element) {\n element.focus();\n _onCalendarOpen();\n range.selectNodeContents(element as Node);\n\n const selection = window!.getSelection();\n selection?.removeAllRanges();\n selection?.addRange(range);\n }\n }, [disabled, focusedElement, _onCalendarOpen, refs, window]);\n\n const clear = React.useCallback(() => {\n onChange?.(undefined);\n selectFirst();\n }, [onChange, selectFirst]);\n\n const handleFieldEnter = React.useCallback(() => {\n if (!open) {\n selectFirst();\n }\n }, [open, selectFirst]);\n\n const handleKeyDown = React.useCallback(\n (e: React.KeyboardEvent<HTMLSpanElement>) => {\n if (focusedElement === null) {\n return;\n }\n\n const _value = [...internalValue];\n const config = elementsConfig(focusedElement);\n\n if (/^\\d+$/.test(e.key)) {\n if (_value[focusedElement].length >= config.length) {\n _value[focusedElement] = e.key;\n } else {\n _value[focusedElement] += e.key;\n if (_value[focusedElement].length >= config.length && focusedElement < maxElement) {\n setFocusedElement(focusedElement + 1);\n }\n }\n } else if (e.key === 'Backspace') {\n if (!_value[focusedElement]) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else {\n _value[focusedElement] = _value[focusedElement].slice(0, -1);\n }\n } else if (e.key === 'ArrowDown' || e.key === 'Down') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue <= config.min ? config.max : currentValue - 1,\n ).padStart(config.length, '0');\n } else if (e.key === 'ArrowUp' || e.key === 'Up') {\n let currentValue = Number(_value[focusedElement]);\n _value[focusedElement] = String(\n currentValue >= config.max ? config.min : currentValue + 1,\n ).padStart(config.length, '0');\n } else if (\n e.key === 'Enter' ||\n (e.key === 'Tab' && focusedElement === maxElement) ||\n (e.key === 'Tab' && e.shiftKey && focusedElement === 0)\n ) {\n removeFocusFromField();\n return;\n } else if (e.key === 'ArrowLeft' || e.key === 'Left' || (e.key === 'Tab' && e.shiftKey)) {\n setFocusedElement(focusedElement <= 0 ? maxElement : focusedElement - 1);\n } else if (e.key === 'ArrowRight' || e.key === 'Right' || e.key === 'Tab') {\n setFocusedElement(focusedElement >= maxElement ? 0 : focusedElement + 1);\n } else if (e.key === 'Delete' || e.key === 'Del') {\n _value[focusedElement] = '';\n } else {\n return;\n }\n\n e.preventDefault();\n setInternalValue(_value);\n onInternalValueChange(_value);\n },\n [\n elementsConfig,\n focusedElement,\n internalValue,\n maxElement,\n onInternalValueChange,\n removeFocusFromField,\n ],\n );\n\n return {\n rootRef,\n calendarRef,\n open,\n openCalendar: _onCalendarOpen,\n closeCalendar: _onCalendarClose,\n internalValue,\n focusedElement,\n setFocusedElement,\n handleKeyDown,\n clear,\n handleFieldEnter,\n removeFocusFromField,\n };\n}\n"],"names":["useDateInput","maxElement","refs","autoFocus","disabled","elementsConfig","onChange","onInternalValueChange","getInternalValue","value","onCalendarOpenChanged","document","useDOM","open","setTrue","openCalendar","setFalse","closeCalendar","useBooleanState","rootRef","React","useRef","calendarRef","internalValue","setInternalValue","useState","focusedElement","setFocusedElement","window","_onCalendarClose","useCallback","_onCalendarOpen","removeFocusFromField","getSelection","removeAllRanges","handleClickOutside","e","current","contains","target","selectFirst","useGlobalEventListener","capture","useEffect","range","createRange","element","focus","selectNodeContents","selection","addRange","clear","undefined","handleFieldEnter","handleKeyDown","_value","config","test","key","length","slice","currentValue","Number","String","min","max","padStart","shiftKey","preventDefault"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"customResizeObserver.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/customResizeObserver.ts"],"names":[],"mappings":"AAsCA,qBAAa,oBAAoB;IAOnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAN3C,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,iBAAiB,CAAC;KAC3B,CAAC,CAAM;IACR,wBAAwB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;gBAE5B,cAAc,EAAE,MAAM,IAAI;IAIvD,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAOnC,cAAc,IAAI,IAAI;IAYtB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAU9C,4BAA4B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAWxD,UAAU,IAAI,IAAI;CAenB"}
1
+ {"version":3,"file":"customResizeObserver.d.ts","sourceRoot":"","sources":["../../../../src/lib/floating/customResizeObserver.ts"],"names":[],"mappings":"AAsCA,qBAAa,oBAAoB;IAOnB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAN3C,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,WAAW,CAAC;QACpB,MAAM,EAAE,iBAAiB,CAAC;KAC3B,CAAC,CAAM;IACR,wBAAwB,EAAE,gBAAgB,GAAG,IAAI,CAAQ;gBAE5B,cAAc,EAAE,MAAM,IAAI;IAIvD,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAOnC,cAAc,IAAI,IAAI;IAYtB,kBAAkB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAS9C,4BAA4B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAWxD,UAAU,IAAI,IAAI;CAenB"}
@@ -39,7 +39,6 @@ class CustomResizeObserver {
39
39
  }
40
40
  observeUsingIframe(element) {
41
41
  const iframe = element.ownerDocument.createElement('iframe');
42
- iframe.src = 'javascript:void(0)';
43
42
  iframe.ariaHidden = 'true';
44
43
  iframe.tabIndex = -1;
45
44
  Object.assign(iframe.style, defaultIframeStyles);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n\n constructor(private readonly updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.src = 'javascript:void(0)';\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["CustomResizeObserver","defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","src","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","constructor","getComputedStyle"],"mappings":";;;;+BAsCaA;;;eAAAA;;;;AAtCb,MAAMC,sBAWF;IACFC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,QAAQ;AACV;AAiBO,MAAMV;IAWXW,QAAQC,OAAoB,EAAQ;QAClC,IAAIC,aAAaD,UAAU;YACzB,OAAO,IAAI,CAACE,kBAAkB,CAACF;QACjC;QACA,OAAO,IAAI,CAACG,4BAA4B,CAACH;IAC3C;IAEAI,iBAAuB;QACrB,KAAK,IAAIC,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/BD,OAAOE,MAAM,CAACC,WAAW,CAACH,OAAOI,MAAM;QACzC;QAEA,KAAK,IAAIJ,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/B,IAAID,OAAOI,MAAM,CAACC,aAAa,EAAE;gBAC/BL,OAAOI,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACC,cAAc;YAC5E;QACF;IACF;IAEAV,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMS,SAAST,QAAQa,aAAa,CAACC,aAAa,CAAC;QACnDL,OAAOM,GAAG,GAAG;QACbN,OAAOO,UAAU,GAAG;QACpBP,OAAOQ,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACV,OAAOW,KAAK,EAAE/B;QAE5B,IAAI,CAACiB,OAAO,CAACe,IAAI,CAAC;YAAEd,QAAQP;YAASS;QAAO;IAC9C;IAEAN,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACsB,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIC,iBAAiB,IAAI,CAACX,cAAc;QAC1E;QAEA,IAAI,CAACU,wBAAwB,CAACvB,OAAO,CAACC,SAAS;YAC7CwB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAACpB,OAAO,CAACqB,GAAG,CAAC,CAAC,EAAEpB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACkB,mBAAmB,CAAC,UAAU,IAAI,CAAChB,cAAc;YACxE;YAEAL,OAAOsB,WAAW,CAACpB;QACrB;QACA,IAAI,CAACH,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACgB,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAACI,UAAU;QAC1C;QACA,IAAI,CAACJ,wBAAwB,GAAG;IAClC;IA1DAQ,YAAY,AAAiBlB,cAA0B,CAAE;;QANzDN,yBAAAA,WAAAA,KAAAA;QAIAgB,yBAAAA,4BAAAA,KAAAA;aAE6BV,iBAAAA;aAN7BN,UAGK,EAAE;aACPgB,2BAAoD;QAGlD,IAAI,CAACV,cAAc,GAAGA;IACxB;AAyDF;AAEA,SAASX,aAAaD,OAAoB;IACxC,OAAO+B,iBAAiB/B,SAASV,QAAQ,KAAK;AAChD"}
1
+ {"version":3,"sources":["../../../../src/lib/floating/customResizeObserver.ts"],"sourcesContent":["const defaultIframeStyles: Pick<\n CSSStyleDeclaration,\n | 'position'\n | 'left'\n | 'top'\n | 'zIndex'\n | 'width'\n | 'height'\n | 'pointerEvents'\n | 'opacity'\n | 'border'\n> = {\n position: 'absolute',\n left: '0',\n top: '0',\n zIndex: '-1',\n width: '100%',\n height: '100%',\n pointerEvents: 'none',\n opacity: '0',\n border: '0',\n};\n\n/*\n * Специальный CustomResizeObserver как fallback для ResizeObserver\n * Используется для вызова update() функции (перерисовка плавающего окна) floating-ui\n * при изменении размера reference или floating элементов.\n *\n * По умолчанию пытаемся нарисовать скрытый, абсолютно позиционированный относительно\n * наблюдаемого элемента iframe.\n * В случае же, если наблюдаемый элемент имеет position: static, то правильно спозиционировать\n * iframe у нас не получится, поэтому в такой ситуации мы используем MutationObserver.\n *\n * Использовать только MutationObserver мы не можем, потому что с помощью него нельзя отследить\n * изменение размера вызванное переполнением текста.\n *\n * Применяется только если нету поддержики или полифила ResizeObserver.\n * */\nexport class CustomResizeObserver {\n records: Array<{\n target: HTMLElement;\n iframe: HTMLIFrameElement;\n }> = [];\n mutationObserverFallback: MutationObserver | null = null;\n\n constructor(private readonly updateFunction: () => void) {\n this.updateFunction = updateFunction;\n }\n\n observe(element: HTMLElement): void {\n if (isPositioned(element)) {\n return this.observeUsingIframe(element);\n }\n return this.observeUsingMutationObserver(element);\n }\n\n appendToTheDOM(): void {\n for (let record of this.records) {\n record.target.appendChild(record.iframe);\n }\n\n for (let record of this.records) {\n if (record.iframe.contentWindow) {\n record.iframe.contentWindow.addEventListener('resize', this.updateFunction);\n }\n }\n }\n\n observeUsingIframe(element: HTMLElement): void {\n const iframe = element.ownerDocument.createElement('iframe');\n iframe.ariaHidden = 'true';\n iframe.tabIndex = -1;\n Object.assign(iframe.style, defaultIframeStyles);\n\n this.records.push({ target: element, iframe });\n }\n\n observeUsingMutationObserver(element: HTMLElement): void {\n if (!this.mutationObserverFallback) {\n this.mutationObserverFallback = new MutationObserver(this.updateFunction);\n }\n\n this.mutationObserverFallback.observe(element, {\n childList: true,\n subtree: true,\n });\n }\n\n disconnect(): void {\n this.records.map(({ target, iframe }) => {\n if (iframe.contentWindow) {\n iframe.contentWindow.removeEventListener('resize', this.updateFunction);\n }\n\n target.removeChild(iframe);\n });\n this.records = [];\n\n if (this.mutationObserverFallback) {\n this.mutationObserverFallback.disconnect();\n }\n this.mutationObserverFallback = null;\n }\n}\n\nfunction isPositioned(element: HTMLElement): boolean {\n return getComputedStyle(element).position !== 'static';\n}\n"],"names":["CustomResizeObserver","defaultIframeStyles","position","left","top","zIndex","width","height","pointerEvents","opacity","border","observe","element","isPositioned","observeUsingIframe","observeUsingMutationObserver","appendToTheDOM","record","records","target","appendChild","iframe","contentWindow","addEventListener","updateFunction","ownerDocument","createElement","ariaHidden","tabIndex","Object","assign","style","push","mutationObserverFallback","MutationObserver","childList","subtree","disconnect","map","removeEventListener","removeChild","constructor","getComputedStyle"],"mappings":";;;;+BAsCaA;;;eAAAA;;;;AAtCb,MAAMC,sBAWF;IACFC,UAAU;IACVC,MAAM;IACNC,KAAK;IACLC,QAAQ;IACRC,OAAO;IACPC,QAAQ;IACRC,eAAe;IACfC,SAAS;IACTC,QAAQ;AACV;AAiBO,MAAMV;IAWXW,QAAQC,OAAoB,EAAQ;QAClC,IAAIC,aAAaD,UAAU;YACzB,OAAO,IAAI,CAACE,kBAAkB,CAACF;QACjC;QACA,OAAO,IAAI,CAACG,4BAA4B,CAACH;IAC3C;IAEAI,iBAAuB;QACrB,KAAK,IAAIC,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/BD,OAAOE,MAAM,CAACC,WAAW,CAACH,OAAOI,MAAM;QACzC;QAEA,KAAK,IAAIJ,UAAU,IAAI,CAACC,OAAO,CAAE;YAC/B,IAAID,OAAOI,MAAM,CAACC,aAAa,EAAE;gBAC/BL,OAAOI,MAAM,CAACC,aAAa,CAACC,gBAAgB,CAAC,UAAU,IAAI,CAACC,cAAc;YAC5E;QACF;IACF;IAEAV,mBAAmBF,OAAoB,EAAQ;QAC7C,MAAMS,SAAST,QAAQa,aAAa,CAACC,aAAa,CAAC;QACnDL,OAAOM,UAAU,GAAG;QACpBN,OAAOO,QAAQ,GAAG,CAAC;QACnBC,OAAOC,MAAM,CAACT,OAAOU,KAAK,EAAE9B;QAE5B,IAAI,CAACiB,OAAO,CAACc,IAAI,CAAC;YAAEb,QAAQP;YAASS;QAAO;IAC9C;IAEAN,6BAA6BH,OAAoB,EAAQ;QACvD,IAAI,CAAC,IAAI,CAACqB,wBAAwB,EAAE;YAClC,IAAI,CAACA,wBAAwB,GAAG,IAAIC,iBAAiB,IAAI,CAACV,cAAc;QAC1E;QAEA,IAAI,CAACS,wBAAwB,CAACtB,OAAO,CAACC,SAAS;YAC7CuB,WAAW;YACXC,SAAS;QACX;IACF;IAEAC,aAAmB;QACjB,IAAI,CAACnB,OAAO,CAACoB,GAAG,CAAC,CAAC,EAAEnB,MAAM,EAAEE,MAAM,EAAE;YAClC,IAAIA,OAAOC,aAAa,EAAE;gBACxBD,OAAOC,aAAa,CAACiB,mBAAmB,CAAC,UAAU,IAAI,CAACf,cAAc;YACxE;YAEAL,OAAOqB,WAAW,CAACnB;QACrB;QACA,IAAI,CAACH,OAAO,GAAG,EAAE;QAEjB,IAAI,IAAI,CAACe,wBAAwB,EAAE;YACjC,IAAI,CAACA,wBAAwB,CAACI,UAAU;QAC1C;QACA,IAAI,CAACJ,wBAAwB,GAAG;IAClC;IAzDAQ,YAAY,AAAiBjB,cAA0B,CAAE;;QANzDN,yBAAAA,WAAAA,KAAAA;QAIAe,yBAAAA,4BAAAA,KAAAA;aAE6BT,iBAAAA;aAN7BN,UAGK,EAAE;aACPe,2BAAoD;QAGlD,IAAI,CAACT,cAAc,GAAGA;IACxB;AAwDF;AAEA,SAASX,aAAaD,OAAoB;IACxC,OAAO8B,iBAAiB9B,SAASV,QAAQ,KAAK;AAChD"}
@@ -1,6 +1,6 @@
1
1
  import type * as React from 'react';
2
2
  import type { UseFloatingMiddlewaresBootstrapOptions } from '../useFloatingMiddlewaresBootstrap';
3
- import type { UseFloatingWithInteractionsProps, UseFloatingWithInteractionsReturn } from '../useFloatingWithInteractions';
3
+ import type { RestoreFocusType, UseFloatingWithInteractionsProps, UseFloatingWithInteractionsReturn } from '../useFloatingWithInteractions';
4
4
  import type { OnPlacementChange } from './common';
5
5
  /**
6
6
  * @private используйте алиасы, если для какого-то компонента нужно экспортировать тип
@@ -35,7 +35,7 @@ export interface FloatingComponentProps extends UseFloatingMiddlewaresBootstrapO
35
35
  /**
36
36
  * Нужно ли после закрытия всплывающего элемента возвращать фокус на предыдущий активный элемент.
37
37
  */
38
- restoreFocus?: boolean;
38
+ restoreFocus?: RestoreFocusType;
39
39
  /**
40
40
  * Перебивает zIndex заданный по умолчанию.
41
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/types/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,KAAK,EACV,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,KACtD,KAAK,CAAC,SAAS,CAAC;AAErB;;;;GAIG;AACH,MAAM,WAAW,sBACf,SAAQ,sCAAsC,EAC5C,IAAI,CAAC,gCAAgC,EAAE,WAAW,GAAG,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC;IACtD;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACjE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/types/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AACpC,OAAO,KAAK,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,KAAK,EACV,gBAAgB,EAChB,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,CACtC,KAAK,EAAE,IAAI,CAAC,iCAAiC,EAAE,SAAS,CAAC,KACtD,KAAK,CAAC,SAAS,CAAC;AAErB;;;;GAIG;AACH,MAAM,WAAW,sBACf,SAAQ,sCAAsC,EAC5C,IAAI,CAAC,gCAAgC,EAAE,WAAW,GAAG,aAAa,CAAC;IACrE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,yBAAyB,CAAC;IACtD;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC;IAC9B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,gBAAgB,CAAC;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACjE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CACvC"}
@@ -1,4 +1,5 @@
1
1
  export { useFloatingWithInteractions } from './useFloatingWithInteractions';
2
2
  export type { OnShownChange, UseFloatingWithInteractionsProps, UseFloatingWithInteractionsReturn, } from './types';
3
+ export { type RestoreFocusType } from './types';
3
4
  export { DEFAULT_TRIGGER } from './constants';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,YAAY,EACV,aAAa,EACb,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,YAAY,EACV,aAAa,EACb,gCAAgC,EAChC,iCAAiC,GAClC,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/index.ts"],"sourcesContent":["export { useFloatingWithInteractions } from './useFloatingWithInteractions';\n\nexport type {\n OnShownChange,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\n\nexport { DEFAULT_TRIGGER } from './constants';\n"],"names":["DEFAULT_TRIGGER","useFloatingWithInteractions"],"mappings":";;;;;;;;;;;IAQSA,eAAe;eAAfA,0BAAe;;IARfC,2BAA2B;eAA3BA,wDAA2B;;;6CAAQ;2BAQZ"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/index.ts"],"sourcesContent":["export { useFloatingWithInteractions } from './useFloatingWithInteractions';\n\nexport type {\n OnShownChange,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\n\nexport { type RestoreFocusType } from './types';\n\nexport { DEFAULT_TRIGGER } from './constants';\n"],"names":["DEFAULT_TRIGGER","useFloatingWithInteractions"],"mappings":";;;;;;;;;;;IAUSA,eAAe;eAAfA,0BAAe;;IAVfC,2BAA2B;eAA3BA,wDAA2B;;;6CAAQ;2BAUZ"}
@@ -2,6 +2,7 @@ import type { Placement, UseFloatingData, UseFloatingMiddleware, UseFloatingRefs
2
2
  export type InteractiveTriggerType = 'click' | 'hover' | 'focus';
3
3
  export type ManualTriggerType = 'manual';
4
4
  export type TriggerType = ManualTriggerType | InteractiveTriggerType | InteractiveTriggerType[];
5
+ export type RestoreFocusType = boolean | 'anchor-element' | HTMLElement;
5
6
  export type ShownChangeReason = 'click-outside' | 'escape-key' | 'click' | 'hover' | 'focus' | 'callback';
6
7
  export type OnShownChange = (shown: boolean, reason?: ShownChangeReason) => void;
7
8
  export interface UseFloatingWithInteractionsProps {
@@ -82,6 +83,6 @@ export interface UseFloatingWithInteractionsReturn<T extends HTMLElement = HTMLE
82
83
  middlewareData: UseFloatingData['middlewareData'];
83
84
  onClose: (this: void) => void;
84
85
  onEscapeKeyDown?: (this: void) => void;
85
- onRestoreFocus: (this: void) => boolean;
86
+ onRestoreFocus: (restoreFocus?: RestoreFocusType) => boolean | HTMLElement;
86
87
  }
87
88
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useFloatingWithInteractions.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAIV,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,SAAS,CAAC;AASjB;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,WAAW,wRAsB9D,gCAAgC,KAAG,iCAAiC,CAAC,CAAC,CAyUxE,CAAC"}
1
+ {"version":3,"file":"useFloatingWithInteractions.d.ts","sourceRoot":"","sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAIV,gCAAgC,EAChC,iCAAiC,EAClC,MAAM,SAAS,CAAC;AASjB;;GAEG;AACH,eAAO,MAAM,2BAA2B,GAAI,CAAC,SAAS,WAAW,wRAsB9D,gCAAgC,KAAG,iCAAiC,CAAC,CAAC,CAqVxE,CAAC"}
@@ -176,7 +176,20 @@ shown: shownProp, onShownChange: onShownChangeProp, onShownChanged: onShownChang
176
176
  }, [
177
177
  commitShownLocalState
178
178
  ]);
179
- const handleRestoreFocus = _react.useCallback(()=>triggerOnFocus ? blockFocusRef.current : true, [
179
+ const handleRestoreFocus = _react.useCallback((restoreFocus = true)=>{
180
+ if (!restoreFocus) {
181
+ return false;
182
+ }
183
+ if (restoreFocus === true) {
184
+ return triggerOnFocus ? blockFocusRef.current : true;
185
+ } else if (restoreFocus === 'anchor-element') {
186
+ return refs.reference.current;
187
+ } else if (restoreFocus instanceof HTMLElement) {
188
+ return restoreFocus;
189
+ }
190
+ return false;
191
+ }, [
192
+ refs.reference,
180
193
  triggerOnFocus
181
194
  ]);
182
195
  const handleEscapeKeyDown = _react.useCallback(()=>{
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport { type UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>();\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: 'fixed',\n placement: placementProp,\n middleware: middlewares,\n whileElementsMounted,\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Jest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus = React.useCallback(\n () => (triggerOnFocus ? blockFocusRef.current : true),\n [triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referencePropsRef = React.useRef<ReferenceProps>({});\n const floatingPropsRef = React.useRef<FloatingProps>({ style: {} });\n\n if (shownFinalState) {\n floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties(\n strategy,\n x,\n y,\n undefined,\n middlewareData,\n );\n\n if (disableInteractive) {\n floatingPropsRef.current.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referencePropsRef.current.onFocus = handleFocusOnReference;\n referencePropsRef.current.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referencePropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referencePropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingPropsRef.current.onAnimationStart = handleFloatingAnimationStart;\n floatingPropsRef.current.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState,\n willBeHide,\n refs,\n referenceProps: referencePropsRef.current,\n floatingProps: floatingPropsRef.current,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["useFloatingWithInteractions","whileElementsMounted","args","autoUpdateFloatingElement","elementResize","trigger","DEFAULT_TRIGGER","placement","placementProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","React","useMemo","undefined","shownLocalState","setShownLocalState","useCustomEnsuredControl","value","defaultValue","onChange","useStableCallback","reason","noop","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","useResolveTriggerType","x","y","strategy","refs","middlewareData","useFloating","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","debounce","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","getActiveElementByAnotherElement","contains","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","handleEscapeKeyDown","handleClickOutside","useGlobalOnClickOutside","useIsomorphicLayoutEffect","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","isHTMLElement","win","getWindow","addEventListener","removeEventListener","resolveShownStates","referencePropsRef","floatingPropsRef","style","convertFloatingDataToReactCSSProperties","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","referenceProps","floatingProps","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/lib/floating/useFloatingWithInteractions/useFloatingWithInteractions.ts"],"sourcesContent":["import * as React from 'react';\nimport { debounce, noop } from '@vkontakte/vkjs';\nimport { getWindow, isHTMLElement } from '@vkontakte/vkui-floating-ui/utils/dom';\nimport { useCustomEnsuredControl } from '../../../hooks/useEnsuredControl';\nimport { useGlobalOnClickOutside } from '../../../hooks/useGlobalOnClickOutside';\nimport { useStableCallback } from '../../../hooks/useStableCallback';\nimport { contains, getActiveElementByAnotherElement } from '../../dom';\nimport { useIsomorphicLayoutEffect } from '../../useIsomorphicLayoutEffect';\nimport { autoUpdateFloatingElement, useFloating } from '../adapters';\nimport { convertFloatingDataToReactCSSProperties } from '../functions';\nimport { type UseFloatingOptions } from '../types/common';\nimport { DEFAULT_TRIGGER } from './constants';\nimport type {\n FloatingProps,\n ReferenceProps,\n ShownChangeReason,\n UseFloatingWithInteractionsProps,\n UseFloatingWithInteractionsReturn,\n} from './types';\nimport { useResolveTriggerType } from './useResolveTriggerType';\n\ntype LocalState = { shown: boolean; reason?: ShownChangeReason };\n\nconst whileElementsMounted: UseFloatingOptions['whileElementsMounted'] = (...args) =>\n /* istanbul ignore next: не знаю как проверить */\n autoUpdateFloatingElement(...args, { elementResize: true });\n\n/**\n * @private\n */\nexport const useFloatingWithInteractions = <T extends HTMLElement = HTMLElement>({\n trigger = DEFAULT_TRIGGER,\n\n // UseFloating\n placement: placementProp = 'bottom',\n middlewares,\n hoverDelay = 0,\n closeAfterClick = false,\n\n // disables\n disabled = false,\n disableInteractive = false,\n disableCloseOnClickOutside = false,\n disableCloseOnEscKey = false,\n\n // uncontrolled\n defaultShown = false,\n\n // controlled\n shown: shownProp,\n onShownChange: onShownChangeProp,\n onShownChanged: onShownChangedProp,\n}: UseFloatingWithInteractionsProps): UseFloatingWithInteractionsReturn<T> => {\n const memoizedValue = React.useMemo<LocalState | undefined>(\n () => (shownProp !== undefined ? { shown: shownProp } : undefined),\n [shownProp],\n );\n const [shownLocalState, setShownLocalState] = useCustomEnsuredControl<LocalState>({\n value: memoizedValue,\n disabled,\n defaultValue: { shown: defaultShown },\n onChange: useStableCallback(({ shown, reason }) => {\n if (onShownChangeProp) {\n onShownChangeProp(shown, reason);\n }\n }),\n });\n const onShownChanged = useStableCallback(onShownChangedProp ? onShownChangedProp : noop);\n const [shownFinalState, setShownFinalState] = React.useState(() => shownLocalState.shown);\n const [willBeHide, setWillBeHide] = React.useState(false);\n\n const hasCSSAnimation = React.useRef(false);\n\n const blockMouseEnterRef = React.useRef(false);\n const blockFocusRef = React.useRef(false);\n const blurTimeoutRef = React.useRef<ReturnType<typeof setTimeout>>();\n\n const handleCloseOnReferenceClickOutsideDisabled =\n disabled || disableCloseOnClickOutside || willBeHide || !shownLocalState.shown;\n const handleCloseOnFloatingClickOutsideDisabled =\n disableInteractive || handleCloseOnReferenceClickOutsideDisabled;\n\n const { triggerOnFocus, triggerOnClick, triggerOnHover } = useResolveTriggerType(trigger);\n\n // Библиотека `floating-ui`\n const { placement, x, y, strategy, refs, middlewareData } = useFloating<T>({\n strategy: 'fixed',\n placement: placementProp,\n middleware: middlewares,\n whileElementsMounted,\n });\n\n const commitShownLocalState = React.useCallback(\n (nextShown: boolean, reason: ShownChangeReason) => {\n setShownLocalState((prevState) => {\n if (prevState.shown !== nextShown || prevState.reason !== reason) {\n return {\n shown: nextShown,\n reason,\n };\n }\n /* istanbul ignore next: страховка, если вдруг на момент вызова обновления состояния, оно уже будет актуальным */\n return prevState;\n });\n },\n [setShownLocalState],\n );\n\n const [mouseEnterDelay, mouseLeaveDelay] =\n typeof hoverDelay === 'number' ? [hoverDelay, hoverDelay] : hoverDelay;\n\n const showWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(true, 'hover'), mouseEnterDelay),\n [mouseEnterDelay, commitShownLocalState],\n );\n\n const hideWithDelay = React.useMemo(\n () => debounce(() => commitShownLocalState(false, 'hover'), mouseLeaveDelay),\n [mouseLeaveDelay, commitShownLocalState],\n );\n\n const handleFocusOnReference = useStableCallback(() => {\n // Повторный вызов события фокуса - следствие клика на reference-элемент\n if (shownLocalState.shown) {\n if (!closeAfterClick && shownLocalState.reason === 'hover') {\n return;\n }\n commitShownLocalState(false, 'focus');\n return;\n }\n if (blockFocusRef.current) {\n /* istanbul ignore next: в Jest не воспроизводится баг на вебе (cм. onRestoreFocus) */\n blockFocusRef.current = false;\n return;\n }\n\n commitShownLocalState(true, 'focus');\n });\n\n const handleBlurOnReference = useStableCallback((event: React.FocusEvent) => {\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (!shownLocalState.shown) {\n clearTimeout(blurTimeoutRef.current);\n return;\n }\n\n const relatedTarget = event.relatedTarget;\n blurTimeoutRef.current = setTimeout(function waitWindowBlurFire() {\n const reference = refs.reference.current;\n // Если пользователь покинул текущее окно в открытом состоянии, то\n // не закрываем всплывающий элемент.\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (!relatedTarget && getActiveElementByAnotherElement(reference) === reference) {\n /* istanbul ignore next */\n return;\n }\n\n // Если пользователь нажал на всплывающий элемент, то не закрываем всплывающий элемент.\n // Note: для этого элемент должен быть фокусируемый (например, за счёт `tabindex=\"-1\"`).\n if (contains(refs.floating.current, relatedTarget) || contains(reference, relatedTarget)) {\n return;\n }\n\n commitShownLocalState(false, 'focus');\n });\n });\n\n const handleClickOnReference = useStableCallback(() => {\n // Предыдущий триггер (фокус) уже вызвал открытие/закрытие всплывающего окна, игнорируем вызов\n if (shownLocalState.reason === 'focus') {\n commitShownLocalState(shownLocalState.shown, 'click');\n return;\n }\n commitShownLocalState(!shownLocalState.shown, 'click');\n });\n\n const handleClickOnReferenceForOnlyClose = useStableCallback(() => {\n blockMouseEnterRef.current = true;\n commitShownLocalState(false, 'click');\n });\n\n const handleMouseEnterOnBoth = useStableCallback((event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n if (!blockMouseEnterRef.current && !shownLocalState.shown) {\n showWithDelay();\n }\n });\n\n const handleMouseLeaveOnBothForHoverAndFocusStates = useStableCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (willBeHide && event.currentTarget === refs.floating.current) {\n return;\n }\n\n blockFocusRef.current = false;\n blockMouseEnterRef.current = false;\n\n if (triggerOnHover) {\n showWithDelay.cancel();\n hideWithDelay.cancel();\n\n hideWithDelay();\n }\n },\n );\n\n const handleFloatingAnimationStart = () => {\n hasCSSAnimation.current = true;\n };\n\n const handleFloatingAnimationEnd = () => {\n if (willBeHide) {\n setShownFinalState(false);\n setWillBeHide(false);\n onShownChanged(false, shownLocalState.reason);\n }\n };\n\n const handleOnClose = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'callback');\n }, [commitShownLocalState]);\n\n const handleRestoreFocus: UseFloatingWithInteractionsReturn['onRestoreFocus'] = React.useCallback(\n (restoreFocus = true) => {\n if (!restoreFocus) {\n return false;\n }\n if (restoreFocus === true) {\n return triggerOnFocus ? blockFocusRef.current : true;\n } else if (restoreFocus === 'anchor-element') {\n return refs.reference.current as HTMLElement;\n } else if (restoreFocus instanceof HTMLElement) {\n return restoreFocus;\n }\n return false;\n },\n [refs.reference, triggerOnFocus],\n );\n\n const handleEscapeKeyDown = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'escape-key');\n }, [commitShownLocalState]);\n\n const handleClickOutside = React.useCallback(() => {\n blockFocusRef.current = true;\n commitShownLocalState(false, 'click-outside');\n }, [commitShownLocalState]);\n\n useGlobalOnClickOutside(\n handleClickOutside,\n handleCloseOnReferenceClickOutsideDisabled ? null : refs.reference,\n handleCloseOnFloatingClickOutsideDisabled ? null : refs.floating,\n );\n\n useIsomorphicLayoutEffect(\n /**\n * Если пользователь покинул активное окно и:\n * 1. целевой элемент был в состоянии фокуса;\n * 2. всплывающий элемент был закрытом состоянии;\n * то фокус должен быть заблокирован, когда пользователь вернётся обратно. Иначе покажется\n * всплывающий элемент.\n */\n function setGlobalBlurForTriggerOnFocus() {\n if (!triggerOnFocus || !refs.reference.current) {\n return;\n }\n\n const handleGlobalBlur = () => {\n /* istanbul ignore next */\n const reference = refs.reference.current;\n /* istanbul ignore if: не умеем симулировать уход из текущего окна */\n if (\n !shownLocalState.shown &&\n isHTMLElement(reference) &&\n reference === getActiveElementByAnotherElement(reference)\n ) {\n /* istanbul ignore next */\n blockFocusRef.current = true;\n }\n };\n\n const win = getWindow(refs.reference.current);\n win.addEventListener('blur', handleGlobalBlur);\n return () => {\n win.removeEventListener('blur', handleGlobalBlur);\n };\n },\n [triggerOnFocus, refs.reference, shownLocalState],\n );\n\n useIsomorphicLayoutEffect(\n function resolveShownStates() {\n if (willBeHide || shownLocalState.shown === shownFinalState) {\n return;\n }\n\n if (shownLocalState.shown) {\n setShownFinalState(true);\n onShownChanged(true, shownLocalState.reason);\n } else if (hasCSSAnimation.current && !willBeHide) {\n setWillBeHide(true);\n } else {\n setShownFinalState(false);\n }\n\n return () => {\n clearTimeout(blurTimeoutRef.current);\n };\n },\n [shownLocalState, shownFinalState, willBeHide, onShownChanged],\n );\n\n const referencePropsRef = React.useRef<ReferenceProps>({});\n const floatingPropsRef = React.useRef<FloatingProps>({ style: {} });\n\n if (shownFinalState) {\n floatingPropsRef.current.style = convertFloatingDataToReactCSSProperties(\n strategy,\n x,\n y,\n undefined,\n middlewareData,\n );\n\n if (disableInteractive) {\n floatingPropsRef.current.style.pointerEvents = 'none';\n }\n }\n\n if (triggerOnFocus) {\n referencePropsRef.current.onFocus = handleFocusOnReference;\n referencePropsRef.current.onBlur = handleBlurOnReference;\n }\n\n if (triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReference;\n }\n\n if (triggerOnHover) {\n referencePropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n\n if (closeAfterClick && !triggerOnClick) {\n referencePropsRef.current.onClick = handleClickOnReferenceForOnlyClose;\n }\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseOver = handleMouseEnterOnBoth;\n }\n }\n\n if (triggerOnHover || triggerOnFocus) {\n referencePropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n\n if (!disableInteractive) {\n floatingPropsRef.current.onMouseLeave = handleMouseLeaveOnBothForHoverAndFocusStates;\n }\n }\n\n if (shownFinalState) {\n floatingPropsRef.current.onAnimationStart = handleFloatingAnimationStart;\n floatingPropsRef.current.onAnimationEnd = handleFloatingAnimationEnd;\n }\n\n return {\n placement,\n shown: shownFinalState,\n willBeHide,\n refs,\n referenceProps: referencePropsRef.current,\n floatingProps: floatingPropsRef.current,\n middlewareData,\n onClose: handleOnClose,\n // FocusTrap уже определяет нажатие на ESC, поэтому название события содержит конкретный код\n // кнопки вместо просто onKeyDown.\n onEscapeKeyDown: !shownFinalState || disableCloseOnEscKey ? undefined : handleEscapeKeyDown,\n // [Обход баги с FocusTrap]\n //\n // Если сфокусироваться на целевой элемент через нажатие, а потом нажать в область за пределами\n // целевого и всплывающего элемента, то появляется моргание из-за того, что FocusTrap\n // восстанавливает фокус, из-за чего всплывающий элемент снова показывается за счёт\n // `handleFocusOnReference`, а потом скрывается за счёт `handleBlurOnReference`.\n onRestoreFocus: handleRestoreFocus,\n };\n};\n"],"names":["useFloatingWithInteractions","whileElementsMounted","args","autoUpdateFloatingElement","elementResize","trigger","DEFAULT_TRIGGER","placement","placementProp","middlewares","hoverDelay","closeAfterClick","disabled","disableInteractive","disableCloseOnClickOutside","disableCloseOnEscKey","defaultShown","shown","shownProp","onShownChange","onShownChangeProp","onShownChanged","onShownChangedProp","memoizedValue","React","useMemo","undefined","shownLocalState","setShownLocalState","useCustomEnsuredControl","value","defaultValue","onChange","useStableCallback","reason","noop","shownFinalState","setShownFinalState","useState","willBeHide","setWillBeHide","hasCSSAnimation","useRef","blockMouseEnterRef","blockFocusRef","blurTimeoutRef","handleCloseOnReferenceClickOutsideDisabled","handleCloseOnFloatingClickOutsideDisabled","triggerOnFocus","triggerOnClick","triggerOnHover","useResolveTriggerType","x","y","strategy","refs","middlewareData","useFloating","middleware","commitShownLocalState","useCallback","nextShown","prevState","mouseEnterDelay","mouseLeaveDelay","showWithDelay","debounce","hideWithDelay","handleFocusOnReference","current","handleBlurOnReference","event","clearTimeout","relatedTarget","setTimeout","waitWindowBlurFire","reference","getActiveElementByAnotherElement","contains","floating","handleClickOnReference","handleClickOnReferenceForOnlyClose","handleMouseEnterOnBoth","currentTarget","cancel","handleMouseLeaveOnBothForHoverAndFocusStates","handleFloatingAnimationStart","handleFloatingAnimationEnd","handleOnClose","handleRestoreFocus","restoreFocus","HTMLElement","handleEscapeKeyDown","handleClickOutside","useGlobalOnClickOutside","useIsomorphicLayoutEffect","setGlobalBlurForTriggerOnFocus","handleGlobalBlur","isHTMLElement","win","getWindow","addEventListener","removeEventListener","resolveShownStates","referencePropsRef","floatingPropsRef","style","convertFloatingDataToReactCSSProperties","pointerEvents","onFocus","onBlur","onClick","onMouseOver","onMouseLeave","onAnimationStart","onAnimationEnd","referenceProps","floatingProps","onClose","onEscapeKeyDown","onRestoreFocus"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseGallery.d.ts","sourceRoot":"","sources":["../../../src/components/BaseGallery/BaseGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,gBAAgB,EAAkD,MAAM,SAAS,CAAC;AA2BhG,eAAO,MAAM,WAAW,4LAiBrB,gBAAgB,KAAG,KAAK,CAAC,SAqU3B,CAAC"}
1
+ {"version":3,"file":"BaseGallery.d.ts","sourceRoot":"","sources":["../../../src/components/BaseGallery/BaseGallery.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAW/B,OAAO,KAAK,EAAE,gBAAgB,EAAkD,MAAM,SAAS,CAAC;AA2BhG,eAAO,MAAM,WAAW,4LAiBrB,gBAAgB,KAAG,KAAK,CAAC,SA4U3B,CAAC"}
@@ -107,7 +107,7 @@ export const BaseGallery = (_param)=>{
107
107
  return indent;
108
108
  };
109
109
  const initializeSlides = (options = {})=>{
110
- var _rootRef_current, _viewportRef_current, _layoutState_current_slides_slideIndex, _localSlides_slideIndex;
110
+ var _rootRef_current, _viewportRef_current, _layoutState_current_slides_slideIndex, _localSlides_slideIndex, _localSlides_slideIndex1;
111
111
  var _React_Children_map;
112
112
  const localSlides = (_React_Children_map = React.Children.map(children, (_item, i)=>{
113
113
  const elem = slidesStore.current[`slide-${i}`];
@@ -123,6 +123,9 @@ export const BaseGallery = (_param)=>{
123
123
  const localViewportOffsetWidth = (_viewportRef_current_offsetWidth = (_viewportRef_current = viewportRef.current) === null || _viewportRef_current === void 0 ? void 0 : _viewportRef_current.offsetWidth) !== null && _viewportRef_current_offsetWidth !== void 0 ? _viewportRef_current_offsetWidth : 0;
124
124
  const localLayerWidth = localSlides.reduce((val, slide)=>slide.width + val, 0);
125
125
  const adjustShiftX = localSlides.length <= layoutState.current.slides.length || ((_layoutState_current_slides_slideIndex = layoutState.current.slides[slideIndex]) === null || _layoutState_current_slides_slideIndex === void 0 ? void 0 : _layoutState_current_slides_slideIndex.coordX) !== ((_localSlides_slideIndex = localSlides[slideIndex]) === null || _localSlides_slideIndex === void 0 ? void 0 : _localSlides_slideIndex.coordX);
126
+ var _localSlides_slideIndex_width;
127
+ const currentSlideOffsetOnCenterAlignment = (localContainerWidth - ((_localSlides_slideIndex_width = (_localSlides_slideIndex1 = localSlides[slideIndex]) === null || _localSlides_slideIndex1 === void 0 ? void 0 : _localSlides_slideIndex1.width) !== null && _localSlides_slideIndex_width !== void 0 ? _localSlides_slideIndex_width : 0)) / 2;
128
+ const isFullyVisible = align === 'center' ? localLayerWidth + currentSlideOffsetOnCenterAlignment <= localContainerWidth : localLayerWidth <= localContainerWidth;
126
129
  layoutState.current = {
127
130
  containerWidth: localContainerWidth,
128
131
  viewportOffsetWidth: localViewportOffsetWidth,
@@ -141,7 +144,7 @@ export const BaseGallery = (_param)=>{
141
144
  align
142
145
  }),
143
146
  slides: localSlides,
144
- isFullyVisible: localLayerWidth <= localContainerWidth
147
+ isFullyVisible
145
148
  };
146
149
  setShiftState((prevState)=>{
147
150
  var _options_animation;