@skbkontur/react-ui 4.20.0-next.1 → 4.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/components/Calendar/Calendar.js +4 -3
  3. package/cjs/components/Calendar/Calendar.js.map +1 -1
  4. package/cjs/components/CurrencyInput/CurrencyInput.js +2 -1
  5. package/cjs/components/CurrencyInput/CurrencyInput.js.map +1 -1
  6. package/cjs/components/GlobalLoader/GlobalLoader.js +3 -3
  7. package/cjs/components/GlobalLoader/GlobalLoader.js.map +1 -1
  8. package/cjs/components/MenuHeader/MenuHeader.js +3 -1
  9. package/cjs/components/MenuHeader/MenuHeader.js.map +1 -1
  10. package/cjs/components/MenuItem/MenuItem.d.ts +21 -0
  11. package/cjs/components/MenuItem/MenuItem.js +112 -15
  12. package/cjs/components/MenuItem/MenuItem.js.map +1 -1
  13. package/cjs/components/MenuItem/MenuItem.md +20 -6
  14. package/cjs/components/Paging/Paging.js +2 -1
  15. package/cjs/components/Paging/Paging.js.map +1 -1
  16. package/cjs/components/ScrollContainer/ScrollBar.js +2 -1
  17. package/cjs/components/ScrollContainer/ScrollBar.js.map +1 -1
  18. package/cjs/components/ScrollContainer/ScrollContainer.d.ts +1 -2
  19. package/cjs/components/ScrollContainer/ScrollContainer.js +15 -8
  20. package/cjs/components/ScrollContainer/ScrollContainer.js.map +1 -1
  21. package/cjs/components/Select/Item.d.ts +1 -0
  22. package/cjs/components/Select/Item.js +2 -1
  23. package/cjs/components/Select/Item.js.map +1 -1
  24. package/cjs/components/Select/Select.d.ts +1 -0
  25. package/cjs/components/Select/Select.js +17 -2
  26. package/cjs/components/Select/Select.js.map +1 -1
  27. package/cjs/components/Select/Select.md +12 -0
  28. package/cjs/components/SidePage/SidePage.d.ts +3 -1
  29. package/cjs/components/SidePage/SidePage.js +30 -4
  30. package/cjs/components/SidePage/SidePage.js.map +1 -1
  31. package/cjs/components/Tabs/Indicator.js +2 -1
  32. package/cjs/components/Tabs/Indicator.js.map +1 -1
  33. package/cjs/components/Tabs/Tabs.js +2 -1
  34. package/cjs/components/Tabs/Tabs.js.map +1 -1
  35. package/cjs/components/Textarea/Textarea.d.ts +1 -0
  36. package/cjs/components/Textarea/Textarea.js +20 -3
  37. package/cjs/components/Textarea/Textarea.js.map +1 -1
  38. package/cjs/components/Textarea/TextareaWithSafari17Workaround.d.ts +6 -0
  39. package/cjs/components/Textarea/TextareaWithSafari17Workaround.js +20 -0
  40. package/cjs/components/Textarea/TextareaWithSafari17Workaround.js.map +1 -0
  41. package/cjs/components/Tooltip/Tooltip.d.ts +6 -1
  42. package/cjs/components/Tooltip/Tooltip.js +12 -2
  43. package/cjs/components/Tooltip/Tooltip.js.map +1 -1
  44. package/cjs/components/Tooltip/Tooltip.md +24 -0
  45. package/cjs/internal/DateSelect/DateSelect.js +4 -3
  46. package/cjs/internal/DateSelect/DateSelect.js.map +1 -1
  47. package/cjs/internal/DropdownContainer/DropdownContainer.js +4 -3
  48. package/cjs/internal/DropdownContainer/DropdownContainer.js.map +1 -1
  49. package/cjs/internal/FocusTrap/FocusTrap.js +3 -2
  50. package/cjs/internal/FocusTrap/FocusTrap.js.map +1 -1
  51. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  52. package/cjs/internal/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  53. package/cjs/internal/InputLikeText/InputLikeText.js +2 -1
  54. package/cjs/internal/InputLikeText/InputLikeText.js.map +1 -1
  55. package/cjs/internal/InternalMenu/InternalMenu.js +4 -3
  56. package/cjs/internal/InternalMenu/InternalMenu.js.map +1 -1
  57. package/cjs/internal/Menu/Menu.d.ts +6 -0
  58. package/cjs/internal/Menu/Menu.js +82 -14
  59. package/cjs/internal/Menu/Menu.js.map +1 -1
  60. package/cjs/internal/Menu/MenuContext.d.ts +10 -0
  61. package/cjs/internal/Menu/MenuContext.js +16 -0
  62. package/cjs/internal/Menu/MenuContext.js.map +1 -0
  63. package/cjs/internal/Menu/MenuNavigation.d.ts +26 -0
  64. package/cjs/internal/Menu/MenuNavigation.js +107 -0
  65. package/cjs/internal/Menu/MenuNavigation.js.map +1 -0
  66. package/cjs/internal/Menu/isActiveElement.js +1 -1
  67. package/cjs/internal/Menu/isActiveElement.js.map +1 -1
  68. package/cjs/internal/Popup/Popup.js +6 -5
  69. package/cjs/internal/Popup/Popup.js.map +1 -1
  70. package/cjs/internal/RenderLayer/RenderLayer.js +3 -2
  71. package/cjs/internal/RenderLayer/RenderLayer.js.map +1 -1
  72. package/cjs/lib/client.d.ts +1 -0
  73. package/cjs/lib/client.js +4 -2
  74. package/cjs/lib/client.js.map +1 -1
  75. package/cjs/lib/dom/tabbableHelpers.js +2 -1
  76. package/cjs/lib/dom/tabbableHelpers.js.map +1 -1
  77. package/cjs/lib/events/fixClickFocusIE.js +2 -1
  78. package/cjs/lib/events/fixClickFocusIE.js.map +1 -1
  79. package/cjs/lib/events/keyboard/identifiers.js +2 -1
  80. package/cjs/lib/events/keyboard/identifiers.js.map +1 -1
  81. package/cjs/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +106 -0
  82. package/cjs/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +3 -0
  83. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +3 -0
  84. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js +7 -1
  85. package/cjs/lib/featureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  86. package/cjs/lib/isInstanceOf.d.ts +1 -0
  87. package/cjs/lib/isInstanceOf.js +6 -0
  88. package/cjs/lib/isInstanceOf.js.map +1 -0
  89. package/cjs/lib/listenFocusOutside.js +2 -1
  90. package/cjs/lib/listenFocusOutside.js.map +1 -1
  91. package/cjs/lib/rootNode/getRootNode.js +4 -3
  92. package/cjs/lib/rootNode/getRootNode.js.map +1 -1
  93. package/components/Calendar/Calendar/Calendar.js +2 -1
  94. package/components/Calendar/Calendar/Calendar.js.map +1 -1
  95. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js +2 -1
  96. package/components/CurrencyInput/CurrencyInput/CurrencyInput.js.map +1 -1
  97. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js +5 -5
  98. package/components/GlobalLoader/GlobalLoader/GlobalLoader.js.map +1 -1
  99. package/components/MenuHeader/MenuHeader/MenuHeader.js +3 -1
  100. package/components/MenuHeader/MenuHeader/MenuHeader.js.map +1 -1
  101. package/components/MenuItem/MenuItem/MenuItem.js +126 -17
  102. package/components/MenuItem/MenuItem/MenuItem.js.map +1 -1
  103. package/components/MenuItem/MenuItem.d.ts +21 -0
  104. package/components/MenuItem/MenuItem.md +20 -6
  105. package/components/Paging/Paging/Paging.js +2 -1
  106. package/components/Paging/Paging/Paging.js.map +1 -1
  107. package/components/ScrollContainer/ScrollBar/ScrollBar.js +2 -1
  108. package/components/ScrollContainer/ScrollBar/ScrollBar.js.map +1 -1
  109. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js +21 -10
  110. package/components/ScrollContainer/ScrollContainer/ScrollContainer.js.map +1 -1
  111. package/components/ScrollContainer/ScrollContainer.d.ts +1 -2
  112. package/components/Select/Item/Item.js +3 -1
  113. package/components/Select/Item/Item.js.map +1 -1
  114. package/components/Select/Item.d.ts +1 -0
  115. package/components/Select/Select/Select.js +14 -8
  116. package/components/Select/Select/Select.js.map +1 -1
  117. package/components/Select/Select.d.ts +1 -0
  118. package/components/Select/Select.md +12 -0
  119. package/components/SidePage/SidePage/SidePage.js +31 -7
  120. package/components/SidePage/SidePage/SidePage.js.map +1 -1
  121. package/components/SidePage/SidePage.d.ts +3 -1
  122. package/components/Tabs/Indicator/Indicator.js +2 -1
  123. package/components/Tabs/Indicator/Indicator.js.map +1 -1
  124. package/components/Tabs/Tabs/Tabs.js +2 -1
  125. package/components/Tabs/Tabs/Tabs.js.map +1 -1
  126. package/components/Textarea/Textarea/Textarea.js +13 -7
  127. package/components/Textarea/Textarea/Textarea.js.map +1 -1
  128. package/components/Textarea/Textarea.d.ts +1 -0
  129. package/components/Textarea/TextareaWithSafari17Workaround/TextareaWithSafari17Workaround.js +21 -0
  130. package/components/Textarea/TextareaWithSafari17Workaround/TextareaWithSafari17Workaround.js.map +1 -0
  131. package/components/Textarea/TextareaWithSafari17Workaround/package.json +6 -0
  132. package/components/Textarea/TextareaWithSafari17Workaround.d.ts +6 -0
  133. package/components/Tooltip/Tooltip/Tooltip.js +7 -4
  134. package/components/Tooltip/Tooltip/Tooltip.js.map +1 -1
  135. package/components/Tooltip/Tooltip.d.ts +6 -1
  136. package/components/Tooltip/Tooltip.md +24 -0
  137. package/internal/DateSelect/DateSelect/DateSelect.js +2 -1
  138. package/internal/DateSelect/DateSelect/DateSelect.js.map +1 -1
  139. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js +2 -1
  140. package/internal/DropdownContainer/DropdownContainer/DropdownContainer.js.map +1 -1
  141. package/internal/FocusTrap/FocusTrap/FocusTrap.js +2 -1
  142. package/internal/FocusTrap/FocusTrap/FocusTrap.js.map +1 -1
  143. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js +2 -1
  144. package/internal/IgnoreLayerClick/IgnoreLayerClick/IgnoreLayerClick.js.map +1 -1
  145. package/internal/InputLikeText/InputLikeText/InputLikeText.js +2 -1
  146. package/internal/InputLikeText/InputLikeText/InputLikeText.js.map +1 -1
  147. package/internal/InternalMenu/InternalMenu/InternalMenu.js +2 -1
  148. package/internal/InternalMenu/InternalMenu/InternalMenu.js.map +1 -1
  149. package/internal/Menu/Menu/Menu.js +138 -56
  150. package/internal/Menu/Menu/Menu.js.map +1 -1
  151. package/internal/Menu/Menu.d.ts +6 -0
  152. package/internal/Menu/MenuContext/MenuContext.js +5 -0
  153. package/internal/Menu/MenuContext/MenuContext.js.map +1 -0
  154. package/internal/Menu/MenuContext/package.json +6 -0
  155. package/internal/Menu/MenuContext.d.ts +10 -0
  156. package/internal/Menu/MenuNavigation/MenuNavigation.js +123 -0
  157. package/internal/Menu/MenuNavigation/MenuNavigation.js.map +1 -0
  158. package/internal/Menu/MenuNavigation/package.json +6 -0
  159. package/internal/Menu/MenuNavigation.d.ts +26 -0
  160. package/internal/Menu/isActiveElement/isActiveElement.js +1 -1
  161. package/internal/Menu/isActiveElement/isActiveElement.js.map +1 -1
  162. package/internal/Popup/Popup/Popup.js +2 -1
  163. package/internal/Popup/Popup/Popup.js.map +1 -1
  164. package/internal/RenderLayer/RenderLayer/RenderLayer.js +2 -1
  165. package/internal/RenderLayer/RenderLayer/RenderLayer.js.map +1 -1
  166. package/lib/client/client.js +2 -1
  167. package/lib/client/client.js.map +1 -1
  168. package/lib/client.d.ts +1 -0
  169. package/lib/dom/tabbableHelpers/tabbableHelpers.js +2 -1
  170. package/lib/dom/tabbableHelpers/tabbableHelpers.js.map +1 -1
  171. package/lib/events/fixClickFocusIE/fixClickFocusIE.js +2 -1
  172. package/lib/events/fixClickFocusIE/fixClickFocusIE.js.map +1 -1
  173. package/lib/events/keyboard/identifiers/identifiers.js +2 -1
  174. package/lib/events/keyboard/identifiers/identifiers.js.map +1 -1
  175. package/lib/featureFlagsContext/FEATUREFLAGSCONTEXT.md +106 -0
  176. package/lib/featureFlagsContext/FeatureFlagsHelpers.d.ts +3 -0
  177. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js +4 -1
  178. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext/ReactUIFeatureFlagsContext.js.map +1 -1
  179. package/lib/featureFlagsContext/ReactUIFeatureFlagsContext.d.ts +3 -0
  180. package/lib/isInstanceOf/isInstanceOf.js +3 -0
  181. package/lib/isInstanceOf/isInstanceOf.js.map +1 -0
  182. package/lib/isInstanceOf/package.json +6 -0
  183. package/lib/isInstanceOf.d.ts +1 -0
  184. package/lib/listenFocusOutside/listenFocusOutside.js +2 -1
  185. package/lib/listenFocusOutside/listenFocusOutside.js.map +1 -1
  186. package/lib/rootNode/getRootNode/getRootNode.js +2 -1
  187. package/lib/rootNode/getRootNode/getRootNode.js.map +1 -1
  188. package/package.json +3 -3
@@ -6,7 +6,7 @@ var _class, _class2, _temp;
6
6
  import React from 'react';
7
7
  import warning from 'warning';
8
8
  import isEqual from 'lodash.isequal';
9
- import { globalObject, isInstanceOf } from '@skbkontur/global-object';
9
+ import { globalObject } from '@skbkontur/global-object';
10
10
  import { isNullable } from "../../../lib/utils";
11
11
  import { ThemeFactory } from "../../../lib/theming/ThemeFactory";
12
12
  import { DefaultPosition, Popup } from "../../../internal/Popup";
@@ -20,7 +20,9 @@ import { rootNode } from "../../../lib/rootNode";
20
20
  import { createPropsGetter } from "../../../lib/createPropsGetter";
21
21
  import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
22
22
  import { CloseButtonIcon } from "../../../internal/CloseButtonIcon/CloseButtonIcon";
23
+ import { isInstanceOf } from "../../../lib/isInstanceOf";
23
24
  import { styles } from "../Tooltip.styles";
25
+ var DEFAULT_DELAY = 100;
24
26
  export var TooltipDataTids = {
25
27
  root: 'Tooltip__root',
26
28
  content: 'Tooltip__content',
@@ -93,7 +95,7 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
93
95
 
94
96
  _this.clearHoverTimeout();
95
97
 
96
- _this.hoverTimeout = globalObject.setTimeout(_this.open, Tooltip.delay);
98
+ _this.hoverTimeout = globalObject.setTimeout(_this.open, _this.getProps().delayBeforeShow);
97
99
  };
98
100
 
99
101
  _this.handleMouseLeave = function (event) {
@@ -449,5 +451,6 @@ export var Tooltip = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function
449
451
  trigger: 'hover',
450
452
  allowedPositions: Positions,
451
453
  disableAnimations: isTestEnv,
452
- useWrapper: false
453
- }, _class2.delay = 100, _class2.triggersWithoutCloseButton = ['hover', 'hoverAnchor', 'focus', 'hover&focus'], _temp)) || _class;
454
+ useWrapper: false,
455
+ delayBeforeShow: DEFAULT_DELAY
456
+ }, _class2.delay = DEFAULT_DELAY, _class2.triggersWithoutCloseButton = ['hover', 'hoverAnchor', 'focus', 'hover&focus'], _temp)) || _class;
@@ -1 +1 @@
1
- {"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","globalObject","isInstanceOf","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","isTheme2022","CloseButtonIcon","styles","TooltipDataTids","root","content","crossIcon","Positions","Tooltip","getProps","defaultProps","state","opened","focused","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delay","handleMouseLeave","relatedTarget","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","popupBackground","tooltipBg","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","icon","parseInt","tooltipCloseBtnSide","tooltipCloseBtnColor","tooltipCloseBtnHoverColor","cross","show","hide","getPopupAndLayerProps","popupProps","layerProps","active","children","popup","renderPopup","disableAnimations","setRootNode","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\nimport { globalObject, isInstanceOf, SafeTimer } from '@skbkontur/global-object';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos?: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger?: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions?: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations?: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n}\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ntype DefaultProps = Required<\n Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>\n>;\n\n@rootNode\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps: DefaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n\n public static delay = 100;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n const { trigger, allowedPositions, pos } = this.getProps();\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n popupBackground: theme.tooltipBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = isTheme2022(this.theme) ? (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n ) : (\n <CrossIcon />\n );\n\n return (\n <div\n className={styles.cross(this.theme)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const { allowedPositions, pos } = this.getProps();\n const index = allowedPositions.indexOf(pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n globalObject.clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = globalObject.setTimeout(this.open, Tooltip.delay);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = globalObject.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n}\n"]}
1
+ {"version":3,"sources":["Tooltip.tsx"],"names":["React","warning","isEqual","globalObject","isNullable","ThemeFactory","DefaultPosition","Popup","RenderLayer","CrossIcon","containsTargetOrRenderContainer","ThemeContext","isTestEnv","CommonWrapper","rootNode","createPropsGetter","isTheme2022","CloseButtonIcon","isInstanceOf","styles","DEFAULT_DELAY","TooltipDataTids","root","content","crossIcon","Positions","Tooltip","getProps","defaultProps","state","opened","focused","contentElement","positions","clickedOutside","popupRef","createRef","renderContent","props","render","refContent","tooltipContent","theme","renderCloseButton","getAnchorElement","current","anchorElement","node","open","setState","close","handleMouseEnter","event","isHoverAnchor","trigger","target","clearHoverTimeout","hoverTimeout","setTimeout","delayBeforeShow","handleMouseLeave","relatedTarget","delay","handleClick","handleClickOutsideAnchor","isClickOutsideContent","onCloseRequest","handleFocus","handleBlur","handleCloseButtonClick","stopPropagation","onCloseClick","defaultPrevented","componentDidUpdate","prevProps","allowedPositions","pos","posChanged","allowedChanged","componentWillUnmount","create","popupPinOffset","tooltipPinOffset","popupMargin","tooltipMargin","popupBorder","tooltipBorder","popupBorderRadius","tooltipBorderRadius","popupPinSize","tooltipPinSize","popupPinOffsetX","tooltipPinOffsetX","popupPinOffsetY","tooltipPinOffsetY","popupBackground","tooltipBg","renderMain","hasCross","closeButton","undefined","triggersWithoutCloseButton","includes","icon","parseInt","tooltipCloseBtnSide","tooltipCloseBtnColor","tooltipCloseBtnHoverColor","cross","show","hide","getPopupAndLayerProps","popupProps","layerProps","active","children","popup","renderPopup","disableAnimations","setRootNode","getPositions","onOpen","onClose","index","indexOf","Error","join","slice","useWrapper","onClickOutside","onMouseEnter","onMouseLeave","onClick","onFocus","onBlur","clearTimeout","Element","PureComponent","__KONTUR_REACT_UI__","propTypes","propName","componentName","Array","isArray"],"mappings":"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","sourcesContent":["import React from 'react';\nimport warning from 'warning';\nimport isEqual from 'lodash.isequal';\nimport { globalObject, SafeTimer } from '@skbkontur/global-object';\n\nimport { isNullable } from '../../lib/utils';\nimport { ThemeFactory } from '../../lib/theming/ThemeFactory';\nimport { DefaultPosition, Popup, PopupProps, PopupPositionsType } from '../../internal/Popup';\nimport { RenderLayer, RenderLayerProps } from '../../internal/RenderLayer';\nimport { CrossIcon } from '../../internal/icons/CrossIcon';\nimport { Nullable } from '../../typings/utility-types';\nimport { MouseEventType } from '../../typings/event-types';\nimport { containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { Theme } from '../../lib/theming/Theme';\nimport { isTestEnv } from '../../lib/currentEnvironment';\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { InstanceWithAnchorElement } from '../../lib/InstanceWithAnchorElement';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { CloseButtonIcon } from '../../internal/CloseButtonIcon/CloseButtonIcon';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { styles } from './Tooltip.styles';\n\nexport type TooltipTrigger =\n /** Наведение на children и на тултип */\n | 'hover'\n /** Клик на children */\n | 'click'\n /** Фокус на children */\n | 'focus'\n /** Наведение на children и на тултип и фокус на children */\n | 'hover&focus'\n /** Просто открыт */\n | 'opened'\n /** Просто закрыт */\n | 'closed'\n /** Наведение ТОЛЬКО на children, а не на тултип */\n | 'hoverAnchor'\n /** Управление через публичные функции show и hide */\n | 'manual';\n\nexport interface TooltipProps extends CommonProps {\n /**\n * Относительно какого элемента позиционировать тултип\n */\n anchorElement?: HTMLElement;\n\n /**\n * Если не указан `anchorElement` то тултип будет позиционироваться\n * относительно дочерних элементов\n */\n children?: React.ReactNode;\n\n className?: string;\n\n /**\n * Показывать крестик для закрытия тултипа. По-умолчанию крестик\n * показывается если проп *trigger* не `hover` и не `focus`.\n */\n closeButton?: boolean;\n\n /**\n * Функция, которая возвращает содержимое тултипа.\n *\n * Если эта функция вернула `null`, то тултип не показывается.\n */\n render?: Nullable<() => React.ReactNode>;\n\n /**\n * Значение по умолчанию: `\"top left\"`.\n */\n pos?: PopupPositionsType;\n\n /**\n * Триггер открытия тултипа\n * ```ts\n * type TooltipTrigger =\n * | 'hover'\n * | 'click'\n * | 'focus'\n * | 'hover&focus'\n * | 'opened'\n * | 'closed'\n * | 'hoverAnchor'\n * | 'manual';\n * ```\n */\n trigger?: TooltipTrigger;\n\n /**\n * Хэндлер, вызываемый при клике по крестику\n */\n onCloseClick?: React.MouseEventHandler<HTMLElement>;\n\n /**\n * Хэндлер, вызываемый при клике по крестику или\n * снаружи тултипа\n */\n onCloseRequest?: (event?: Event | React.MouseEvent) => void;\n\n /**\n * Хэндлер, вызываемый при закрытии тултипа\n */\n onClose?: () => void;\n\n /**\n * Хэндлер, вызываемый при открытии тултипа\n */\n onOpen?: () => void;\n\n /**\n * Список позиций, которые тултип будет занимать.\n * Если положение тултипа в определенной позиции\n * будет выходить за край экрана, то будет выбрана\n * следующая позиция. Обязательно должен включать\n * позицию указанную в `pos`\n */\n allowedPositions?: PopupPositionsType[];\n\n /**\n * Флаг отключения анимации.\n * @default false\n */\n disableAnimations?: boolean;\n\n /**\n * Явно указывает, что вложенные элементы должны быть обёрнуты в `<span/>`. <br/> Используется для корректного позиционирования тултипа при двух и более вложенных элементах.\n *\n * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.\n */\n useWrapper?: boolean;\n\n /**\n * Задержка перед появлением тултипа в миллисекундах\n * Значение по умолчанию: `100`\n */\n delayBeforeShow?: number;\n}\n\nconst DEFAULT_DELAY = 100;\n\nexport interface TooltipState {\n opened: boolean;\n focused: boolean;\n}\n\nexport const TooltipDataTids = {\n root: 'Tooltip__root',\n content: 'Tooltip__content',\n crossIcon: 'Tooltip__crossIcon',\n} as const;\n\nconst Positions: PopupPositionsType[] = [\n 'right bottom',\n 'right middle',\n 'right top',\n 'top right',\n 'top center',\n 'top left',\n 'left top',\n 'left middle',\n 'left bottom',\n 'bottom left',\n 'bottom center',\n 'bottom right',\n];\n\ntype DefaultProps = Required<\n Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>\n>;\n\n@rootNode\nexport class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {\n public static __KONTUR_REACT_UI__ = 'Tooltip';\n\n public static propTypes = {\n children(props: TooltipProps, propName: keyof TooltipProps, componentName: string) {\n const children = props[propName];\n warning(\n children || props.anchorElement,\n `[${componentName}]: you must provide either 'children' or 'anchorElement' prop for ${componentName} to work properly`,\n );\n warning(\n !(Array.isArray(children) && props.useWrapper === false),\n `[${componentName}]: you provided multiple children, but useWrapper={false} - forcing wrapper <span/> for positioning to work correctly`,\n );\n },\n };\n\n public static defaultProps: DefaultProps = {\n pos: DefaultPosition,\n trigger: 'hover',\n allowedPositions: Positions,\n disableAnimations: isTestEnv,\n useWrapper: false,\n delayBeforeShow: DEFAULT_DELAY,\n };\n\n private getProps = createPropsGetter(Tooltip.defaultProps);\n\n public static delay = DEFAULT_DELAY;\n private static triggersWithoutCloseButton: TooltipTrigger[] = ['hover', 'hoverAnchor', 'focus', 'hover&focus'];\n\n public state: TooltipState = { opened: false, focused: false };\n private theme!: Theme;\n private hoverTimeout: SafeTimer;\n private contentElement: Nullable<HTMLElement> = null;\n private positions: Nullable<PopupPositionsType[]> = null;\n private clickedOutside = true;\n private setRootNode!: TSetRootNode;\n\n private popupRef = React.createRef<Popup>();\n public componentDidUpdate(prevProps: TooltipProps) {\n const { trigger, allowedPositions, pos } = this.getProps();\n if (trigger === 'closed' && this.state.opened) {\n this.close();\n }\n const posChanged = prevProps.pos !== pos;\n const allowedChanged = !isEqual(prevProps.allowedPositions, allowedPositions);\n\n if (posChanged || allowedChanged) {\n this.positions = null;\n }\n }\n\n public componentWillUnmount() {\n this.clearHoverTimeout();\n }\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return (\n <ThemeContext.Provider\n value={ThemeFactory.create(\n {\n popupPinOffset: theme.tooltipPinOffset,\n popupMargin: theme.tooltipMargin,\n popupBorder: theme.tooltipBorder,\n popupBorderRadius: theme.tooltipBorderRadius,\n popupPinSize: theme.tooltipPinSize,\n popupPinOffsetX: theme.tooltipPinOffsetX,\n popupPinOffsetY: theme.tooltipPinOffsetY,\n popupBackground: theme.tooltipBg,\n },\n theme,\n )}\n >\n {this.renderMain()}\n </ThemeContext.Provider>\n );\n }}\n </ThemeContext.Consumer>\n );\n }\n\n public renderContent = () => {\n const content = this.props.render ? this.props.render() : null;\n if (isNullable(content)) {\n return null;\n }\n\n return (\n <div ref={this.refContent} className={styles.tooltipContent(this.theme)} data-tid={TooltipDataTids.content}>\n {content}\n {this.renderCloseButton()}\n </div>\n );\n };\n\n public renderCloseButton() {\n const hasCross =\n this.props.closeButton === undefined\n ? !Tooltip.triggersWithoutCloseButton.includes(this.getProps().trigger)\n : this.props.closeButton;\n\n if (!hasCross) {\n return null;\n }\n\n const icon = isTheme2022(this.theme) ? (\n <CloseButtonIcon\n tabbable={false}\n side={parseInt(this.theme.tooltipCloseBtnSide)}\n color={this.theme.tooltipCloseBtnColor}\n colorHover={this.theme.tooltipCloseBtnHoverColor}\n />\n ) : (\n <CrossIcon />\n );\n\n return (\n <div\n className={styles.cross(this.theme)}\n onClick={this.handleCloseButtonClick}\n data-tid={TooltipDataTids.crossIcon}\n >\n {icon}\n </div>\n );\n }\n\n public getAnchorElement = (): Nullable<Element> => {\n return this.popupRef.current?.anchorElement;\n };\n\n /**\n * Программно открывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public show() {\n if (this.state.opened) {\n return;\n }\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'show' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.open();\n }\n\n /**\n * Программно закрывает тултип.\n * <p>Не действует если проп *trigger* `'opened'` или `'closed'`.</p>\n * @public\n */\n public hide() {\n const trigger = this.getProps().trigger;\n if (trigger === 'opened' || trigger === 'closed') {\n warning(true, `Function 'hide' is not supported with trigger specified '${trigger}'`);\n return;\n }\n this.close();\n }\n\n private renderMain() {\n const props = this.props;\n const content = this.renderContent();\n const { popupProps, layerProps = { active: false } } = this.getPopupAndLayerProps();\n const anchorElement = props.children || props.anchorElement;\n const popup = this.renderPopup(anchorElement, popupProps, content);\n\n return (\n <RenderLayer {...layerProps} getAnchorElement={this.getAnchorElement}>\n {popup}\n </RenderLayer>\n );\n }\n\n private renderPopup(\n anchorElement: React.ReactNode | HTMLElement,\n popupProps: Partial<PopupProps>,\n content: JSX.Element | null,\n ) {\n const { disableAnimations, trigger } = this.getProps();\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n <Popup\n data-tid={TooltipDataTids.root}\n anchorElement={anchorElement}\n hasPin\n hasShadow\n maxWidth=\"none\"\n opened={this.state.opened}\n disableAnimations={disableAnimations}\n positions={this.getPositions()}\n ignoreHover={trigger === 'hoverAnchor'}\n onOpen={this.props.onOpen}\n onClose={this.props.onClose}\n tryPreserveFirstRenderedPosition\n ref={this.popupRef}\n withoutMobile\n {...popupProps}\n >\n {content}\n </Popup>\n </CommonWrapper>\n );\n }\n\n private refContent = (node: HTMLElement | null) => {\n this.contentElement = node;\n };\n\n private getPositions() {\n if (!this.positions) {\n const { allowedPositions, pos } = this.getProps();\n const index = allowedPositions.indexOf(pos);\n if (index === -1) {\n throw new Error('Unexpected position passed to Tooltip. Expected one of: ' + allowedPositions.join(', '));\n }\n\n this.positions = [...allowedPositions.slice(index), ...allowedPositions.slice(0, index)];\n }\n\n return this.positions;\n }\n\n private getPopupAndLayerProps(): {\n layerProps?: Partial<RenderLayerProps>;\n popupProps: Partial<PopupProps>;\n } {\n const props = this.props;\n const useWrapper = !!props.children && this.getProps().useWrapper;\n const trigger = this.getProps().trigger;\n\n switch (trigger) {\n case 'opened':\n return {\n layerProps: {\n active: true,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n opened: true,\n useWrapper,\n },\n };\n\n case 'closed':\n return {\n popupProps: {\n opened: false,\n useWrapper,\n },\n };\n\n case 'hoverAnchor':\n case 'hover':\n return {\n popupProps: {\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n case 'manual':\n return {\n popupProps: {\n useWrapper,\n },\n };\n case 'click':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onClick: this.handleClick,\n useWrapper,\n },\n };\n\n case 'focus':\n return {\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n useWrapper,\n },\n };\n\n case 'hover&focus':\n return {\n layerProps: {\n active: this.state.opened,\n onClickOutside: this.handleClickOutsideAnchor,\n },\n popupProps: {\n onFocus: this.handleFocus,\n onBlur: this.handleBlur,\n onMouseEnter: this.handleMouseEnter,\n onMouseLeave: this.handleMouseLeave,\n useWrapper,\n },\n };\n\n default:\n throw new Error('Unknown trigger specified: ' + trigger);\n }\n }\n\n private open = () => this.setState({ opened: true });\n\n private close = () => this.setState({ opened: false });\n\n private clearHoverTimeout() {\n if (this.hoverTimeout) {\n globalObject.clearTimeout(this.hoverTimeout);\n this.hoverTimeout = null;\n }\n }\n\n private handleMouseEnter = (event: MouseEventType) => {\n const isHoverAnchor = this.getProps().trigger === 'hoverAnchor';\n if (isHoverAnchor && event.target === this.contentElement) {\n return;\n }\n\n this.clearHoverTimeout();\n this.hoverTimeout = globalObject.setTimeout(this.open, this.getProps().delayBeforeShow);\n };\n\n private handleMouseLeave = (event: MouseEventType) => {\n const trigger = this.getProps().trigger;\n if (\n (trigger === 'hover&focus' && this.state.focused) ||\n (trigger === 'hover' && event.relatedTarget === this.contentElement)\n ) {\n return;\n }\n\n this.clearHoverTimeout();\n\n if (trigger === 'hoverAnchor') {\n this.close();\n } else {\n this.hoverTimeout = globalObject.setTimeout(this.close, Tooltip.delay);\n }\n };\n\n private handleClick = () => {\n this.open();\n };\n\n private handleClickOutsideAnchor = (event: Event) => {\n this.clickedOutside = this.isClickOutsideContent(event);\n if (this.clickedOutside) {\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n this.close();\n }\n };\n\n private isClickOutsideContent(event: Event) {\n if (this.contentElement && isInstanceOf(event.target, globalObject.Element)) {\n return !containsTargetOrRenderContainer(event.target)(this.contentElement);\n }\n\n return true;\n }\n\n private handleFocus = () => {\n this.setState({ focused: true });\n this.open();\n };\n\n private handleBlur = () => {\n const trigger = this.getProps().trigger;\n if (trigger === 'hover&focus' && this.clickedOutside) {\n this.close();\n }\n\n if (trigger === 'focus') {\n this.close();\n }\n\n this.clickedOutside = true;\n this.setState({ focused: false });\n };\n\n private handleCloseButtonClick = (event: React.MouseEvent<HTMLElement>) => {\n event.stopPropagation();\n\n if (this.props.onCloseClick) {\n this.props.onCloseClick(event);\n }\n\n if (event.defaultPrevented) {\n return;\n }\n\n if (this.props.onCloseRequest) {\n this.props.onCloseRequest(event);\n }\n\n this.close();\n };\n}\n"]}
@@ -97,6 +97,11 @@ export interface TooltipProps extends CommonProps {
97
97
  * _Примечание_: при **двух и более** вложенных элементах обёртка будет добавлена автоматически.
98
98
  */
99
99
  useWrapper?: boolean;
100
+ /**
101
+ * Задержка перед появлением тултипа в миллисекундах
102
+ * Значение по умолчанию: `100`
103
+ */
104
+ delayBeforeShow?: number;
100
105
  }
101
106
  export interface TooltipState {
102
107
  opened: boolean;
@@ -107,7 +112,7 @@ export declare const TooltipDataTids: {
107
112
  readonly content: "Tooltip__content";
108
113
  readonly crossIcon: "Tooltip__crossIcon";
109
114
  };
110
- declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper'>>;
115
+ declare type DefaultProps = Required<Pick<TooltipProps, 'pos' | 'trigger' | 'allowedPositions' | 'disableAnimations' | 'useWrapper' | 'delayBeforeShow'>>;
111
116
  export declare class Tooltip extends React.PureComponent<TooltipProps, TooltipState> implements InstanceWithAnchorElement {
112
117
  static __KONTUR_REACT_UI__: string;
113
118
  static propTypes: {
@@ -291,3 +291,27 @@ class AnchorTooltipExample extends React.Component {
291
291
 
292
292
  <AnchorTooltipExample />;
293
293
  ```
294
+
295
+ У тултипа можно переопределить задержку перед его появлением. Скрытие же происходит с задержкой по умолчанию.
296
+
297
+ ```jsx harmony
298
+ import HelpDotIcon from '@skbkontur/react-icons/HelpDot';
299
+ import { Input, Gapped, Tooltip } from '@skbkontur/react-ui';
300
+
301
+ const [delay, setDelay] = React.useState(100);
302
+
303
+ const render = () => (
304
+ <div>
305
+ {`Showed with ${delay}ms delay`}
306
+ </div>
307
+ );
308
+
309
+ <div>
310
+ <Gapped vertical>
311
+ <Gapped>Show delay: <Input value={delay} onValueChange={setDelay} /></Gapped>
312
+ <Tooltip render={render} delayBeforeShow={delay} pos="right top">
313
+ <HelpDotIcon />
314
+ </Tooltip>
315
+ </Gapped>
316
+ </div>;
317
+ ```
@@ -5,7 +5,7 @@ var _dec, _class, _class2, _temp;
5
5
 
6
6
  import React from 'react';
7
7
  import PropTypes from 'prop-types';
8
- import { globalObject, isBrowser, isInstanceOf } from '@skbkontur/global-object';
8
+ import { globalObject, isBrowser } from '@skbkontur/global-object';
9
9
  import { getRandomID, isNonNullable } from "../../../lib/utils";
10
10
  import { isKeyEscape } from "../../../lib/events/keyboard/identifiers";
11
11
  import { DatePickerLocaleHelper } from "../../../components/DatePicker/locale";
@@ -23,6 +23,7 @@ import { isTheme2022 } from "../../../lib/theming/ThemeHelpers";
23
23
  import { ArrowCollapseCVOpenIcon16Regular } from "../../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular";
24
24
  import { ArrowCUpIcon16Regular } from "../../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular";
25
25
  import { ArrowCDownIcon16Regular } from "../../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular";
26
+ import { isInstanceOf } from "../../../lib/isInstanceOf";
26
27
  import { globalClasses, styles } from "../DateSelect.styles";
27
28
  var itemHeight = 24;
28
29
  var visibleYearsCount = 11;
@@ -1 +1 @@
1
- {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","globalObject","isBrowser","isInstanceOf","getRandomID","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","globalClasses","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","menu","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","menuId","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","longClickTimer","setPositionRepeatTimer","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","isInteractiveElement","Tag","rootProps","className","Boolean","style","ref","onClick","undefined","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","arrow","arrowDisabled","renderMenu","root2022","disableItems","index","maxValue","minValue","id","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menuUp","itemsHolder","menuDown","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser, isInstanceOf, SafeTimer } from '@skbkontur/global-object';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: SafeTimer;\n private longClickTimer: SafeTimer;\n private setPositionRepeatTimer: SafeTimer;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n globalObject.addEventListener?.('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n globalObject.clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n }\n globalObject.removeEventListener?.('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n this.timeout = globalObject.setTimeout(\n () =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n 0,\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(id?: string): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <button\n aria-label={`Выбрать ${this.getProps().type === 'year' ? 'год' : 'месяц'} ${this.getItem(i)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </button>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <DropdownContainer\n data-tid={DateSelectDataTids.menu}\n id={id}\n getParent={this.getAnchor}\n offsetY={dropdownOffset}\n offsetX={-10}\n >\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n globalObject.clearTimeout(this.longClickTimer);\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent) || !isBrowser(globalObject)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = globalObject.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
1
+ {"version":3,"sources":["DateSelect.tsx"],"names":["React","PropTypes","globalObject","isBrowser","getRandomID","isNonNullable","isKeyEscape","DatePickerLocaleHelper","locale","RenderLayer","DropdownContainer","LayoutEvents","ThemeContext","ArrowTriangleUpDownIcon","ArrowChevronDownIcon","ArrowChevronUpIcon","isMobile","cx","getDOMRect","createPropsGetter","isTheme2022","ArrowCollapseCVOpenIcon16Regular","ArrowCUpIcon16Regular","ArrowCDownIcon16Regular","isInstanceOf","globalClasses","styles","itemHeight","visibleYearsCount","itemsToMoveCount","monthsCount","defaultMinYear","defaultMaxYear","calculatePos","pos","minPos","maxPos","DateSelectDataTids","caption","menuItem","menu","DateSelect","getProps","defaultProps","state","botCapped","current","height","opened","top","topCapped","nodeTop","Infinity","root","itemsContainer","yearStep","touchStartY","open","props","disabled","setPosition","setState","close","menuId","refRoot","element","setNodeTop","timeout","clearTimeout","setTimeout","refItemsContainer","addEventListener","handleWheel","passive","removeEventListener","handleTouchStart","handleTouchMove","handleLongClickUp","event","preventDefault","longClickTimer","setPositionRepeatTimer","setInterval","handleLongClickDown","handleLongClickStop","getAnchor","WheelEvent","stopPropagation","deltaY","deltaMode","TouchEvent","targetTouches","clientY","changedTouches","pixelRatio","devicePixelRatio","handleItemClick","shift","value","onValueChange","handleKey","e","handleUp","handleDown","componentDidUpdate","componentDidMount","listener","addListener","componentWillUnmount","remove","render","theme","renderMain","renderMain2022","width","isInteractiveElement","Tag","rootProps","className","Boolean","style","ref","onClick","undefined","selectChosenAriaLabel","type","selectYearAriaLabel","selectMonthAriaLabel","getItem","arrow","arrowDisabled","renderMenu","root2022","disableItems","index","maxValue","minValue","id","from","to","Math","ceil","items","i","menuItemSelected","menuItemActive","menuItemDisabled","clickHandler","onMouseDown","push","left","right","shiftStyle","position","holderClass","menuHolder","isTopCapped","isBotCapped","dropdownOffset","overflowOffsetDelta","iconUp","iconDown","menuUp","itemsHolder","menuDown","months","getMinPos","getMaxPos","calculatedPos","PureComponent","__KONTUR_REACT_UI__","propTypes","bool","string","number","isRequired","oneOfType","func"],"mappings":"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","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\nimport { globalObject, isBrowser, SafeTimer } from '@skbkontur/global-object';\n\nimport { getRandomID, isNonNullable } from '../../lib/utils';\nimport { isKeyEscape } from '../../lib/events/keyboard/identifiers';\nimport { DatePickerLocale, DatePickerLocaleHelper } from '../../components/DatePicker/locale';\nimport { locale } from '../../lib/locale/decorators';\nimport { RenderLayer } from '../RenderLayer';\nimport { DropdownContainer } from '../DropdownContainer';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { Nullable } from '../../typings/utility-types';\nimport { Theme } from '../../lib/theming/Theme';\nimport { ThemeContext } from '../../lib/theming/ThemeContext';\nimport { ArrowTriangleUpDownIcon, ArrowChevronDownIcon, ArrowChevronUpIcon } from '../icons/16px';\nimport { isMobile } from '../../lib/client';\nimport { cx } from '../../lib/theming/Emotion';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { isTheme2022 } from '../../lib/theming/ThemeHelpers';\nimport { ArrowCollapseCVOpenIcon16Regular } from '../icons2022/ArrowCollapseCVOpenIcon/ArrowCollapseCVOpenIcon16Regular';\nimport { ArrowCUpIcon16Regular } from '../icons2022/ArrowCUpIcon/ArrowCUpIcon16Regular';\nimport { ArrowCDownIcon16Regular } from '../icons2022/ArrowCDownIcon/ArrowCDownIcon16Regular';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nimport { globalClasses, styles } from './DateSelect.styles';\n\nconst itemHeight = 24;\nconst visibleYearsCount = 11;\nconst itemsToMoveCount = -5;\nconst monthsCount = 12;\nconst defaultMinYear = 1900;\nconst defaultMaxYear = 2100;\n\nexport interface DateSelectProps {\n disabled?: boolean | null;\n onValueChange: (value: number) => void;\n type?: 'month' | 'year';\n value: number;\n width?: number | string;\n minValue?: number;\n maxValue?: number;\n}\n\nexport interface DateSelectState {\n botCapped: boolean;\n current: Nullable<number>;\n height: number;\n opened: boolean;\n pos: number;\n top: number;\n topCapped: boolean;\n nodeTop: number;\n}\n\nconst calculatePos = (pos: number, minPos: number, maxPos: number) => {\n if (maxPos <= pos) {\n return maxPos;\n }\n\n if (minPos >= pos) {\n return minPos;\n }\n\n return pos;\n};\n\nexport const DateSelectDataTids = {\n caption: 'DateSelect__caption',\n menuItem: 'DateSelect__menuItem',\n menu: 'DateSelect__menu',\n} as const;\n\ntype DefaultProps = Required<Pick<DateSelectProps, 'type' | 'width'>>;\n\n@locale('Calendar', DatePickerLocaleHelper)\nexport class DateSelect extends React.PureComponent<DateSelectProps, DateSelectState> {\n public static __KONTUR_REACT_UI__ = 'DateSelect';\n\n public static propTypes = {\n disabled: PropTypes.bool,\n\n type: PropTypes.string,\n\n value: PropTypes.number.isRequired,\n\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n\n onValueChange: PropTypes.func,\n\n minValue: PropTypes.number,\n\n maxValue: PropTypes.number,\n };\n\n public static defaultProps: DefaultProps = {\n type: 'year',\n width: 'auto',\n };\n\n private getProps = createPropsGetter(DateSelect.defaultProps);\n\n public state = {\n botCapped: false,\n current: 0,\n height: 0,\n opened: false,\n pos: 0,\n top: 0,\n topCapped: false,\n nodeTop: Infinity,\n };\n\n private theme!: Theme;\n private readonly locale!: DatePickerLocale;\n private root: HTMLElement | null = null;\n private itemsContainer: HTMLElement | null = null;\n private listener: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n private timeout: SafeTimer;\n private longClickTimer: SafeTimer;\n private setPositionRepeatTimer: SafeTimer;\n private yearStep = 3;\n private touchStartY: Nullable<number> = null;\n\n public componentDidUpdate() {\n this.setNodeTop();\n }\n\n public componentDidMount() {\n this.listener = LayoutEvents.addListener(this.setNodeTop);\n this.setNodeTop();\n globalObject.addEventListener?.('keydown', this.handleKey);\n }\n\n public componentWillUnmount() {\n if (this.listener) {\n this.listener.remove();\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n if (this.longClickTimer) {\n globalObject.clearTimeout(this.longClickTimer);\n }\n if (this.setPositionRepeatTimer) {\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n }\n globalObject.removeEventListener?.('keydown', this.handleKey);\n }\n\n /**\n * @public\n */\n public open = () => {\n if (this.props.disabled) {\n return;\n }\n\n if (this.state.opened) {\n return;\n }\n\n this.setPosition(0);\n this.setState({\n opened: true,\n current: 0,\n });\n };\n\n /**\n * @public\n */\n public close = () => {\n if (!this.state.opened) {\n return;\n }\n\n this.setState({ opened: false });\n };\n\n public render() {\n return (\n <ThemeContext.Consumer>\n {(theme) => {\n this.theme = theme;\n return this.renderMain();\n }}\n </ThemeContext.Consumer>\n );\n }\n\n private menuId = DateSelectDataTids.menu + getRandomID();\n\n private renderMain() {\n if (isTheme2022(this.theme)) {\n return this.renderMain2022();\n }\n\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx({\n [styles.root(this.theme)]: true,\n [styles.disabled()]: Boolean(disabled),\n }),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-controls': !disabled ? this.menuId : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n <div\n className={cx({\n [styles.arrow(this.theme)]: true,\n [styles.arrowDisabled()]: Boolean(disabled),\n })}\n >\n <ArrowTriangleUpDownIcon size={12} />\n </div>\n </div>\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private renderMain2022() {\n const { disabled } = this.props;\n const width = this.getProps().width;\n const isInteractiveElement = !disabled;\n const Tag = isInteractiveElement ? 'button' : 'span';\n const rootProps = {\n className: cx(styles.root(this.theme), styles.root2022(), disabled && styles.disabled()),\n style: { width },\n ref: this.refRoot,\n onClick: this.open,\n 'aria-expanded': isInteractiveElement ? this.state.opened : undefined,\n 'aria-label': isInteractiveElement\n ? `${this.locale.selectChosenAriaLabel} ${\n this.getProps().type === 'year' ? this.locale.selectYearAriaLabel : this.locale.selectMonthAriaLabel\n } ${this.getItem(0)}`\n : undefined,\n };\n\n return (\n <Tag {...rootProps}>\n <div data-tid={DateSelectDataTids.caption} className={styles.caption()}>\n {this.getItem(0)}\n </div>\n {isInteractiveElement && (\n <ArrowCollapseCVOpenIcon16Regular className={cx(globalClasses.arrow)} color=\"#ADADAD\" />\n )}\n {this.state.opened && this.renderMenu(this.menuId)}\n </Tag>\n );\n }\n\n private refRoot = (element: HTMLElement | null) => {\n this.root = element;\n };\n\n private setNodeTop = () => {\n const root = this.root;\n if (!root) {\n return;\n }\n if (this.timeout) {\n globalObject.clearTimeout(this.timeout);\n }\n this.timeout = globalObject.setTimeout(\n () =>\n this.setState({\n nodeTop: getDOMRect(root).top,\n }),\n 0,\n );\n };\n\n private disableItems(index: number) {\n const value = this.props.value + index;\n if (isNonNullable(this.props.maxValue) && isNonNullable(this.props.minValue)) {\n return value > this.props.maxValue || value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.minValue)) {\n return value < this.props.minValue;\n }\n\n if (isNonNullable(this.props.maxValue)) {\n return value > this.props.maxValue;\n }\n }\n\n private renderMenu(id?: string): React.ReactNode {\n const { top, height, nodeTop } = this.state;\n\n let shift = this.state.pos % itemHeight;\n if (shift < 0) {\n shift += itemHeight;\n }\n\n const from = (this.state.pos - shift + top) / itemHeight;\n const to = from + Math.ceil((height + shift) / itemHeight);\n const items = [];\n\n for (let i = from; i < to; ++i) {\n const disableItems = this.disableItems(i) || false;\n const className = cx({\n [styles.menuItem(this.theme)]: true,\n [styles.menuItemSelected(this.theme)]: i === 0,\n [styles.menuItemActive(this.theme)]: i === this.state.current,\n [styles.menuItemDisabled(this.theme)]: disableItems,\n });\n const clickHandler = {\n onMouseDown: preventDefault,\n onClick: this.handleItemClick(i),\n };\n items.push(\n <button\n aria-label={`Выбрать ${this.getProps().type === 'year' ? 'год' : 'месяц'} ${this.getItem(i)}`}\n data-tid={DateSelectDataTids.menuItem}\n data-prop-disabled={disableItems}\n key={i}\n className={className}\n onMouseEnter={() => this.setState({ current: i })}\n onMouseLeave={() => this.setState({ current: null })}\n {...clickHandler}\n >\n {this.getItem(i)}\n </button>,\n );\n }\n const style: {\n left?: number | string;\n right?: number | string;\n top: number;\n width?: number | string;\n } = {\n top: top - 5,\n left: 0,\n right: 0,\n };\n\n const shiftStyle: React.CSSProperties = {\n position: 'relative',\n top: -shift,\n };\n\n const holderClass = cx({\n [styles.menuHolder(this.theme)]: true,\n [styles.isTopCapped()]: this.state.topCapped,\n [styles.isBotCapped()]: this.state.botCapped,\n });\n\n let dropdownOffset = -itemHeight;\n if (nodeTop < -top) {\n const overflowOffsetDelta = this.state.topCapped ? 6 : 17;\n dropdownOffset -= nodeTop + top - overflowOffsetDelta;\n }\n\n const iconUp = isTheme2022(this.theme) ? <ArrowCUpIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronUpIcon />;\n const iconDown = isTheme2022(this.theme) ? <ArrowCDownIcon16Regular color=\"#ADADAD\" /> : <ArrowChevronDownIcon />;\n\n return (\n <RenderLayer onClickOutside={this.close} onFocusOutside={this.close} active>\n <DropdownContainer\n data-tid={DateSelectDataTids.menu}\n id={id}\n getParent={this.getAnchor}\n offsetY={dropdownOffset}\n offsetX={-10}\n >\n <div className={holderClass} style={style}>\n {!this.state.topCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuUp())}\n onClick={this.handleUp}\n onMouseDown={this.handleLongClickUp}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickUp}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconUp}</span>\n </div>\n )}\n <div className={styles.itemsHolder()} style={{ height }}>\n <div ref={this.refItemsContainer} style={shiftStyle}>\n {items}\n </div>\n </div>\n {!this.state.botCapped && (\n <div\n className={cx(styles.menu(this.theme), styles.menuDown())}\n onClick={this.handleDown}\n onMouseDown={this.handleLongClickDown}\n onMouseUp={this.handleLongClickStop}\n onMouseLeave={this.handleLongClickStop}\n onTouchStart={this.handleLongClickDown}\n onTouchEnd={this.handleLongClickStop}\n >\n <span>{iconDown}</span>\n </div>\n )}\n </div>\n </DropdownContainer>\n </RenderLayer>\n );\n }\n\n private refItemsContainer = (element: HTMLElement | null) => {\n if (!this.itemsContainer && element) {\n element.addEventListener('wheel', this.handleWheel, { passive: false });\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('wheel', this.handleWheel);\n }\n\n if (isMobile) {\n if (!this.itemsContainer && element) {\n element.addEventListener('touchstart', this.handleTouchStart);\n element.addEventListener('touchmove', this.handleTouchMove);\n }\n if (this.itemsContainer && !element) {\n this.itemsContainer.removeEventListener('touchstart', this.handleTouchStart);\n this.itemsContainer.removeEventListener('touchmove', this.handleTouchMove);\n }\n }\n\n this.itemsContainer = element;\n };\n\n private handleLongClickUp = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos - itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickDown = (event: React.MouseEvent | React.TouchEvent) => {\n event.preventDefault();\n this.longClickTimer = globalObject.setTimeout(() => {\n this.setPositionRepeatTimer = globalObject.setInterval(() => this.setPosition(this.state.pos + itemHeight), 100);\n }, 200);\n };\n\n private handleLongClickStop = () => {\n globalObject.clearTimeout(this.longClickTimer);\n globalObject.clearTimeout(this.setPositionRepeatTimer);\n };\n\n private getAnchor = () => this.root;\n\n private handleWheel = (event: Event) => {\n if (!isInstanceOf(event, globalObject.WheelEvent)) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n let deltaY = event.deltaY;\n if (event.deltaMode === 1) {\n deltaY *= itemHeight;\n } else if (event.deltaMode === 2) {\n deltaY *= itemHeight * 4;\n }\n const pos = this.state.pos + deltaY;\n this.setPosition(pos);\n };\n\n private handleTouchStart = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent)) {\n return;\n }\n\n this.touchStartY = event.targetTouches[0].clientY;\n };\n\n private handleTouchMove = (event: Event) => {\n if (!isInstanceOf(event, globalObject.TouchEvent) || !isBrowser(globalObject)) {\n return;\n }\n\n const { clientY } = event.changedTouches[0];\n const pixelRatio = globalObject.devicePixelRatio;\n\n const deltaY = ((this.touchStartY || 0) - clientY) / pixelRatio;\n const pos = this.state.pos + deltaY + deltaY / itemHeight;\n\n this.touchStartY = clientY;\n\n this.setPosition(pos);\n };\n\n private handleItemClick = (shift: number) => {\n return () => {\n const value = this.props.value + shift;\n if (this.props.onValueChange) {\n this.props.onValueChange(value);\n }\n this.setState({ opened: false });\n };\n };\n\n private handleKey = (e: KeyboardEvent) => {\n if (this.state.opened && isKeyEscape(e)) {\n e.preventDefault();\n this.close();\n e.stopPropagation();\n }\n };\n\n private handleUp = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos - itemHeight * this.yearStep);\n };\n\n private handleDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setPosition(this.state.pos + itemHeight * this.yearStep);\n };\n\n private getItem(index: number) {\n const value = this.props.value + index;\n if (this.getProps().type === 'month') {\n return this.locale.months?.[value];\n }\n return value;\n }\n\n private setPosition(pos: number) {\n let top = itemsToMoveCount * itemHeight;\n let height = visibleYearsCount * itemHeight;\n if (this.getProps().type === 'month') {\n top = -this.props.value * itemHeight;\n height = monthsCount * itemHeight;\n }\n\n const minPos = this.getMinPos() - top;\n const maxPos = this.getMaxPos() - top - height + itemHeight;\n\n const calculatedPos = calculatePos(pos, minPos, maxPos);\n const topCapped = calculatedPos <= minPos;\n const botCapped = calculatedPos >= maxPos;\n\n this.setState({ pos: calculatedPos, top, height, topCapped, botCapped });\n }\n\n private getMinPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return -this.props.value * itemHeight;\n } else if (type === 'year') {\n return ((this.props.minValue || defaultMinYear) - this.props.value) * itemHeight;\n }\n return -Infinity; // Be defensive.\n }\n\n private getMaxPos() {\n const type = this.getProps().type;\n if (type === 'month') {\n return (visibleYearsCount - this.props.value) * itemHeight;\n } else if (type === 'year') {\n return ((this.props.maxValue || defaultMaxYear) - this.props.value) * itemHeight;\n }\n return Infinity; // Be defensive.\n }\n}\n\nfunction preventDefault(e: React.SyntheticEvent) {\n e.preventDefault();\n}\n"]}
@@ -1,7 +1,8 @@
1
1
  import _extends from "@babel/runtime/helpers/esm/extends";
2
2
  import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
3
3
  import React from 'react';
4
- import { globalObject, isBrowser, isInstanceOf } from '@skbkontur/global-object';
4
+ import { globalObject, isBrowser } from '@skbkontur/global-object';
5
+ import { isInstanceOf } from "../../../lib/isInstanceOf";
5
6
  import * as LayoutEvents from "../../../lib/LayoutEvents";
6
7
  import { RenderContainer } from "../../RenderContainer";
7
8
  import { ZIndex } from "../../ZIndex";
@@ -1 +1 @@
1
- {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","globalObject","isBrowser","isInstanceOf","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","getManualPosition","getTopAlignment","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","position","target","getParent","Element","targetRect","document","body","docEl","documentElement","Error","scrollX","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","menuPos","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","id","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport { globalObject, isBrowser, isInstanceOf } from '@skbkontur/global-object';\n\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './DropdownContainer.styles';\nimport { getManualPosition, getTopAlignment } from './getManualPosition';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps\n extends Pick<CommonProps, 'data-tid'>,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n align?: 'left' | 'right';\n getParent: () => Nullable<Element>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownContainerProps, 'align' | 'disablePortal' | 'offsetY' | 'offsetX'>>;\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n data-tid={this.props['data-tid']}\n id={this.props.id}\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.getProps().align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && isInstanceOf(target, globalObject.Element) && dom && isBrowser(globalObject)) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = globalObject.document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = globalObject.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = globalObject.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.getProps().align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const offsetY = this.getProps().offsetY || 0;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n top = null;\n bottom = getTopAlignment({ clientHeight, offsetY, scrollY, target });\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n ...getManualPosition({ menuPos: this.props.menuPos, target, offsetY, clientHeight, scrollY }),\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.getProps().disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!isInstanceOf(this.dom, globalObject.Element)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const offsetX = this.getProps().offsetX || 0;\n const offsetY = this.getProps().offsetY || 0;\n const { top, bottom, left, right } = position;\n if (isInstanceOf(target, globalObject.Element)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n if (!isBrowser(globalObject)) {\n return false;\n }\n const { body, documentElement } = globalObject.document;\n const htmlPosition = globalObject.getComputedStyle(documentElement).position;\n const bodyPosition = globalObject.getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
1
+ {"version":3,"sources":["DropdownContainer.tsx"],"names":["React","globalObject","isBrowser","isInstanceOf","LayoutEvents","RenderContainer","ZIndex","createPropsGetter","cx","isIE11","getDOMRect","styles","getManualPosition","getTopAlignment","DropdownContainer","props","getProps","defaultProps","ZIndexRef","element","dom","position","target","getParent","Element","targetRect","document","body","docEl","documentElement","Error","scrollX","pageXOffset","scrollLeft","scrollY","pageYOffset","scrollTop","left","right","align","docWidth","offsetWidth","offsetX","offsetY","bottom","top","distanceToBottom","clientHeight","dropdownHeight","getHeight","state","isDocumentElementRoot","scrollHeight","menuPos","setState","minWidth","getMinWidth","disablePortal","convertToRelativePosition","child","children","item","height","width","targetHeight","getIsDocumentElementRoot","componentDidMount","layoutSub","addListener","componentWillUnmount","remove","render","style","undefined","maxWidth","hasFixedWidth","content","id","alignRight","PureComponent","__KONTUR_REACT_UI__","htmlPosition","getComputedStyle","bodyPosition","hasLimitedHeightRoot","hasStaticRoot"],"mappings":"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","sourcesContent":["import React, { HTMLAttributes } from 'react';\nimport { globalObject, isBrowser } from '@skbkontur/global-object';\n\nimport { isInstanceOf } from '../../lib/isInstanceOf';\nimport * as LayoutEvents from '../../lib/LayoutEvents';\nimport { RenderContainer } from '../RenderContainer';\nimport { ZIndex } from '../ZIndex';\nimport { createPropsGetter } from '../../lib/createPropsGetter';\nimport { Nullable } from '../../typings/utility-types';\nimport { cx } from '../../lib/theming/Emotion';\nimport { isIE11 } from '../../lib/client';\nimport { getDOMRect } from '../../lib/dom/getDOMRect';\nimport { CommonProps } from '../CommonWrapper';\n\nimport { styles } from './DropdownContainer.styles';\nimport { getManualPosition, getTopAlignment } from './getManualPosition';\n\nexport interface DropdownContainerPosition {\n top: Nullable<number>;\n bottom: Nullable<number>;\n left: Nullable<number>;\n right: Nullable<number>;\n}\n\nexport interface DropdownContainerProps\n extends Pick<CommonProps, 'data-tid'>,\n Pick<HTMLAttributes<HTMLDivElement>, 'id'> {\n align?: 'left' | 'right';\n getParent: () => Nullable<Element>;\n children?: React.ReactNode;\n disablePortal?: boolean;\n offsetY?: number;\n offsetX?: number;\n hasFixedWidth?: boolean;\n /**\n * Позволяет вручную задать текущую позицию выпадающего окна\n */\n menuPos?: 'top' | 'bottom';\n}\n\nexport interface DropdownContainerState {\n position: Nullable<DropdownContainerPosition>;\n minWidth: number;\n isDocumentElementRoot?: boolean;\n}\n\ntype DefaultProps = Required<Pick<DropdownContainerProps, 'align' | 'disablePortal' | 'offsetY' | 'offsetX'>>;\n\nexport class DropdownContainer extends React.PureComponent<DropdownContainerProps, DropdownContainerState> {\n public static __KONTUR_REACT_UI__ = 'DropdownContainer';\n\n public static defaultProps: DefaultProps = {\n align: 'left',\n disablePortal: false,\n offsetX: 0,\n offsetY: -1,\n };\n\n private getProps = createPropsGetter(DropdownContainer.defaultProps);\n\n private dom: Nullable<HTMLDivElement>;\n private layoutSub: Nullable<ReturnType<typeof LayoutEvents.addListener>>;\n\n constructor(props: DropdownContainerProps) {\n super(props);\n\n this.state = { position: null, minWidth: 0, isDocumentElementRoot: getIsDocumentElementRoot() };\n }\n\n public componentDidMount() {\n this.position();\n this.layoutSub = LayoutEvents.addListener(this.position);\n }\n\n public componentWillUnmount() {\n if (this.layoutSub) {\n this.layoutSub.remove();\n }\n }\n\n public render() {\n let style: React.CSSProperties = {\n position: 'absolute',\n top: '0',\n };\n if (this.state.position) {\n const { top, bottom, left, right } = this.state.position;\n style = {\n ...style,\n top: top !== null ? top : undefined,\n bottom: bottom !== null ? bottom : undefined,\n left: left !== null ? left : undefined,\n right: right !== null ? right : undefined,\n minWidth: this.state.minWidth,\n maxWidth: this.props.hasFixedWidth ? this.state.minWidth : undefined,\n };\n }\n\n const content = (\n <ZIndex\n data-tid={this.props['data-tid']}\n id={this.props.id}\n priority={'DropdownContainer'}\n wrapperRef={this.ZIndexRef}\n style={style}\n className={cx({\n [styles.alignRight()]: this.getProps().align === 'right' && !isIE11,\n })}\n >\n {this.props.children}\n </ZIndex>\n );\n\n return this.props.disablePortal ? content : <RenderContainer>{content}</RenderContainer>;\n }\n\n private ZIndexRef = (element: Nullable<HTMLDivElement>) => {\n this.dom = element;\n };\n\n public position = () => {\n const target = this.props.getParent();\n const dom = this.dom;\n\n if (target && isInstanceOf(target, globalObject.Element) && dom && isBrowser(globalObject)) {\n const targetRect = getDOMRect(target);\n const { body, documentElement: docEl } = globalObject.document;\n\n if (!docEl) {\n throw Error('There is no \"documentElement\" in \"document\"');\n }\n\n const scrollX = globalObject.pageXOffset || docEl.scrollLeft || 0;\n const scrollY = globalObject.pageYOffset || docEl.scrollTop || 0;\n\n let left = null;\n let right = null;\n\n if (this.getProps().align === 'right') {\n const docWidth = docEl.offsetWidth || 0;\n right = docWidth - (targetRect.right + scrollX) + this.getProps().offsetX;\n } else {\n left = targetRect.left + scrollX + this.getProps().offsetX;\n }\n\n const offsetY = this.getProps().offsetY || 0;\n let bottom = null;\n let top: number | null = targetRect.bottom + scrollY + offsetY;\n\n const distanceToBottom = docEl.clientHeight - targetRect.bottom;\n const dropdownHeight = this.getHeight();\n\n const clientHeight = this.state.isDocumentElementRoot ? docEl.clientHeight : body.scrollHeight;\n if (distanceToBottom < dropdownHeight && targetRect.top > dropdownHeight) {\n top = null;\n bottom = getTopAlignment({ clientHeight, offsetY, scrollY, target });\n }\n\n const position = {\n top,\n left,\n right,\n bottom,\n ...getManualPosition({ menuPos: this.props.menuPos, target, offsetY, clientHeight, scrollY }),\n };\n\n this.setState({\n minWidth: this.getMinWidth(),\n position: this.getProps().disablePortal ? this.convertToRelativePosition(position) : position,\n });\n }\n };\n\n private getHeight = () => {\n if (!isInstanceOf(this.dom, globalObject.Element)) {\n return 0;\n }\n const child = this.dom.children.item(0);\n return getDOMRect(child).height;\n };\n\n private getMinWidth = () => {\n const target = this.props.getParent();\n return getDOMRect(target).width;\n };\n\n private convertToRelativePosition = (position: DropdownContainerPosition): DropdownContainerPosition => {\n const target = this.props.getParent();\n const offsetX = this.getProps().offsetX || 0;\n const offsetY = this.getProps().offsetY || 0;\n const { top, bottom, left, right } = position;\n if (isInstanceOf(target, globalObject.Element)) {\n const targetHeight = getDOMRect(target).height;\n return {\n top: top !== null ? targetHeight + offsetY : null,\n bottom: bottom !== null ? targetHeight + offsetY : null,\n left: left !== null ? offsetX : null,\n right: right !== null ? offsetX : null,\n };\n }\n return {\n top: offsetY,\n bottom: null,\n left: offsetX,\n right: null,\n };\n };\n}\n\nconst getIsDocumentElementRoot = () => {\n if (!isBrowser(globalObject)) {\n return false;\n }\n const { body, documentElement } = globalObject.document;\n const htmlPosition = globalObject.getComputedStyle(documentElement).position;\n const bodyPosition = globalObject.getComputedStyle(body).position;\n\n const hasLimitedHeightRoot = body.scrollHeight > body.clientHeight;\n const hasStaticRoot = htmlPosition === 'static' && bodyPosition === 'static';\n return hasLimitedHeightRoot || hasStaticRoot;\n};\n"]}
@@ -5,10 +5,11 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
5
5
  var _class, _class2, _temp;
6
6
 
7
7
  import React from 'react';
8
- import { globalObject, isInstanceOf } from '@skbkontur/global-object';
8
+ import { globalObject } from '@skbkontur/global-object';
9
9
  import { CommonWrapper } from "../../../internal/CommonWrapper";
10
10
  import { listen as listenFocusOutside, containsTargetOrRenderContainer } from "../../../lib/listenFocusOutside";
11
11
  import { getRootNode, rootNode } from "../../../lib/rootNode";
12
+ import { isInstanceOf } from "../../../lib/isInstanceOf";
12
13
  export var FocusTrap = rootNode(_class = (_temp = _class2 = /*#__PURE__*/function (_React$PureComponent) {
13
14
  _inheritsLoose(FocusTrap, _React$PureComponent);
14
15
 
@@ -1 +1 @@
1
- {"version":3,"sources":["FocusTrap.tsx"],"names":["React","globalObject","isInstanceOf","CommonWrapper","listen","listenFocusOutside","containsTargetOrRenderContainer","getRootNode","rootNode","FocusTrap","focusOutsideListenerToken","onClickOutside","e","props","onBlur","detachListeners","attachListeners","document","addEventListener","documentElement","handleNativeDocClick","event","target","srcElement","node","Element","componentWillUnmount","render","children","setRootNode","cloneElement","Children","only","onFocus","remove","removeEventListener","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject, isInstanceOf } from '@skbkontur/global-object';\n\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\n\nexport interface FocusTrapProps extends CommonProps {\n children: React.ReactElement<any>;\n onBlur?: (event: FocusEvent) => void;\n}\n\n@rootNode\nexport class FocusTrap extends React.PureComponent<FocusTrapProps> {\n public static __KONTUR_REACT_UI__ = 'FocusTrap';\n private setRootNode!: TSetRootNode;\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentWillUnmount() {\n if (this.focusOutsideListenerToken) {\n this.detachListeners();\n }\n }\n\n public render() {\n const { children, onBlur } = this.props;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.cloneElement(React.Children.only(children), {\n onFocus: (...args: any[]) => {\n if (onBlur) {\n this.attachListeners();\n }\n if (children.props && children.props.onFocus) {\n children.props.onFocus(...args);\n }\n },\n })}\n </CommonWrapper>\n );\n }\n\n private onClickOutside = (e: Event) => {\n if (this.props.onBlur) {\n this.props.onBlur(e as FocusEvent);\n }\n this.detachListeners();\n };\n\n private attachListeners = () => {\n const rootNode = getRootNode(this);\n if (!this.focusOutsideListenerToken && rootNode) {\n this.focusOutsideListenerToken = listenFocusOutside([rootNode], this.onClickOutside);\n\n globalObject.document?.addEventListener(\n 'ontouchstart' in globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n };\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n\n globalObject.document?.removeEventListener(\n 'ontouchstart' in globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n }\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = getRootNode(this);\n\n if (node && isInstanceOf(target, globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {\n return;\n }\n\n this.onClickOutside(event);\n };\n}\n"]}
1
+ {"version":3,"sources":["FocusTrap.tsx"],"names":["React","globalObject","CommonWrapper","listen","listenFocusOutside","containsTargetOrRenderContainer","getRootNode","rootNode","isInstanceOf","FocusTrap","focusOutsideListenerToken","onClickOutside","e","props","onBlur","detachListeners","attachListeners","document","addEventListener","documentElement","handleNativeDocClick","event","target","srcElement","node","Element","componentWillUnmount","render","children","setRootNode","cloneElement","Children","only","onFocus","remove","removeEventListener","PureComponent","__KONTUR_REACT_UI__"],"mappings":"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","sourcesContent":["import React from 'react';\nimport { globalObject } from '@skbkontur/global-object';\n\nimport { CommonProps, CommonWrapper } from '../../internal/CommonWrapper';\nimport { listen as listenFocusOutside, containsTargetOrRenderContainer } from '../../lib/listenFocusOutside';\nimport { getRootNode, rootNode, TSetRootNode } from '../../lib/rootNode';\nimport { isInstanceOf } from '../../lib/isInstanceOf';\n\nexport interface FocusTrapProps extends CommonProps {\n children: React.ReactElement<any>;\n onBlur?: (event: FocusEvent) => void;\n}\n\n@rootNode\nexport class FocusTrap extends React.PureComponent<FocusTrapProps> {\n public static __KONTUR_REACT_UI__ = 'FocusTrap';\n private setRootNode!: TSetRootNode;\n\n private focusOutsideListenerToken: {\n remove: () => void;\n } | null = null;\n\n public componentWillUnmount() {\n if (this.focusOutsideListenerToken) {\n this.detachListeners();\n }\n }\n\n public render() {\n const { children, onBlur } = this.props;\n return (\n <CommonWrapper rootNodeRef={this.setRootNode} {...this.props}>\n {React.cloneElement(React.Children.only(children), {\n onFocus: (...args: any[]) => {\n if (onBlur) {\n this.attachListeners();\n }\n if (children.props && children.props.onFocus) {\n children.props.onFocus(...args);\n }\n },\n })}\n </CommonWrapper>\n );\n }\n\n private onClickOutside = (e: Event) => {\n if (this.props.onBlur) {\n this.props.onBlur(e as FocusEvent);\n }\n this.detachListeners();\n };\n\n private attachListeners = () => {\n const rootNode = getRootNode(this);\n if (!this.focusOutsideListenerToken && rootNode) {\n this.focusOutsideListenerToken = listenFocusOutside([rootNode], this.onClickOutside);\n\n globalObject.document?.addEventListener(\n 'ontouchstart' in globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n };\n\n private detachListeners() {\n if (this.focusOutsideListenerToken) {\n this.focusOutsideListenerToken.remove();\n this.focusOutsideListenerToken = null;\n\n globalObject.document?.removeEventListener(\n 'ontouchstart' in globalObject.document.documentElement ? 'touchstart' : 'mousedown',\n this.handleNativeDocClick,\n );\n }\n }\n\n private handleNativeDocClick = (event: Event) => {\n const target = event.target || event.srcElement;\n const node = getRootNode(this);\n\n if (node && isInstanceOf(target, globalObject.Element) && containsTargetOrRenderContainer(target)(node)) {\n return;\n }\n\n this.onClickOutside(event);\n };\n}\n"]}
@@ -4,8 +4,9 @@ import _inheritsLoose from "@babel/runtime/helpers/esm/inheritsLoose";
4
4
  var _class, _class2, _temp;
5
5
 
6
6
  import React from 'react';
7
- import { globalObject, isInstanceOf } from '@skbkontur/global-object';
7
+ import { globalObject } from '@skbkontur/global-object';
8
8
  import { getRootNode, rootNode } from "../../../lib/rootNode";
9
+ import { isInstanceOf } from "../../../lib/isInstanceOf";
9
10
  import { CommonWrapper } from "../../CommonWrapper";
10
11
  export var IgnoreLayerClick = /*#__PURE__*/function (_React$Component) {
11
12
  _inheritsLoose(IgnoreLayerClick, _React$Component);