@jetbrains/ring-ui-built 6.0.32 → 6.0.33

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 (224) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +567 -1
  2. package/components/_helpers/anchor.js +6 -7
  3. package/components/_helpers/button__classes.js +14 -16
  4. package/components/_helpers/caption.js +20 -14
  5. package/components/_helpers/card.js +105 -95
  6. package/components/_helpers/dialog__body-scroll-preventer.js +19 -11
  7. package/components/_helpers/icon__svg.js +25 -22
  8. package/components/_helpers/input.js +177 -146
  9. package/components/_helpers/query-assist__suggestions.js +90 -74
  10. package/components/_helpers/select__filter.js +69 -48
  11. package/components/_helpers/services-link.js +37 -29
  12. package/components/_helpers/sidebar.js +107 -99
  13. package/components/_helpers/tab-link.js +7 -7
  14. package/components/_helpers/theme.js +40 -31
  15. package/components/_helpers/title.js +72 -57
  16. package/components/alert/alert.js +202 -150
  17. package/components/alert/container.js +41 -32
  18. package/components/alert-service/alert-service.js +170 -105
  19. package/components/analytics/analytics.js +22 -12
  20. package/components/analytics/analytics__custom-plugin.js +75 -54
  21. package/components/auth/auth.js +36 -4
  22. package/components/auth/auth__core.js +1471 -746
  23. package/components/auth/background-flow.js +127 -87
  24. package/components/auth/down-notification.js +73 -30
  25. package/components/auth/iframe-flow.js +133 -75
  26. package/components/auth/request-builder.js +82 -46
  27. package/components/auth/response-parser.js +116 -86
  28. package/components/auth/storage.js +334 -171
  29. package/components/auth/token-validator.js +242 -137
  30. package/components/auth/window-flow.js +134 -92
  31. package/components/auth-dialog/auth-dialog.js +172 -114
  32. package/components/auth-dialog-service/auth-dialog-service.js +31 -8
  33. package/components/avatar/avatar-example-datauri.js +1 -23
  34. package/components/avatar/avatar.js +152 -119
  35. package/components/avatar/fallback-avatar.js +38 -22
  36. package/components/badge/badge.js +45 -35
  37. package/components/button/button.js +107 -86
  38. package/components/button-group/button-group.js +33 -19
  39. package/components/button-set/button-set.js +32 -20
  40. package/components/button-toolbar/button-toolbar.js +31 -19
  41. package/components/caret/caret.js +220 -186
  42. package/components/checkbox/checkbox.js +101 -76
  43. package/components/clipboard/clipboard-fallback.js +10 -10
  44. package/components/clipboard/clipboard.js +132 -35
  45. package/components/code/code.js +166 -92
  46. package/components/collapse/collapse-content.js +64 -42
  47. package/components/collapse/collapse-context.js +2 -2
  48. package/components/collapse/collapse-control.js +14 -12
  49. package/components/collapse/collapse.js +17 -11
  50. package/components/collapse/consts.js +4 -4
  51. package/components/collapse/utils.js +3 -1
  52. package/components/confirm/confirm.js +104 -66
  53. package/components/confirm-service/confirm-service.js +59 -37
  54. package/components/content-layout/content-layout.js +64 -43
  55. package/components/content-layout/sidebar.js +1 -0
  56. package/components/contenteditable/contenteditable.js +59 -50
  57. package/components/control-label/control-label.js +9 -9
  58. package/components/data-list/data-list.js +182 -129
  59. package/components/data-list/data-list.mock.js +6 -2
  60. package/components/data-list/item.js +170 -143
  61. package/components/data-list/selection.js +136 -76
  62. package/components/data-list/title.js +12 -1
  63. package/components/date-picker/consts.js +26 -19
  64. package/components/date-picker/date-input.js +144 -113
  65. package/components/date-picker/date-picker.js +282 -227
  66. package/components/date-picker/date-popup.js +395 -350
  67. package/components/date-picker/day.js +116 -87
  68. package/components/date-picker/month-names.js +66 -43
  69. package/components/date-picker/month-slider.js +76 -51
  70. package/components/date-picker/month.js +25 -16
  71. package/components/date-picker/months.js +50 -43
  72. package/components/date-picker/weekdays.js +22 -12
  73. package/components/date-picker/years.js +110 -83
  74. package/components/dialog/dialog.js +190 -142
  75. package/components/dialog/dialog__body-scroll-preventer.js +4 -0
  76. package/components/dropdown/anchor.js +9 -0
  77. package/components/dropdown/dropdown.js +213 -182
  78. package/components/dropdown-menu/dropdown-menu.js +97 -71
  79. package/components/editable-heading/editable-heading.js +127 -75
  80. package/components/error-bubble/error-bubble.js +60 -31
  81. package/components/error-message/error-message.js +59 -39
  82. package/components/footer/footer.js +30 -27
  83. package/components/global/compose.js +10 -1
  84. package/components/global/composeRefs.js +12 -7
  85. package/components/global/controls-height.js +2 -2
  86. package/components/global/create-stateful-context.js +15 -15
  87. package/components/global/data-tests.js +14 -6
  88. package/components/global/dom.js +86 -47
  89. package/components/global/focus-sensor-hoc.js +132 -122
  90. package/components/global/fuzzy-highlight.js +36 -22
  91. package/components/global/get-event-key.js +8 -8
  92. package/components/global/get-uid.js +8 -4
  93. package/components/global/inject-styles.js +15 -10
  94. package/components/global/listeners.js +51 -27
  95. package/components/global/memoize.js +12 -6
  96. package/components/global/normalize-indent.js +50 -19
  97. package/components/global/promise-with-timeout.js +8 -6
  98. package/components/global/prop-types.js +5 -3
  99. package/components/global/react-dom-renderer.js +44 -28
  100. package/components/global/react-render-adapter.js +1 -1
  101. package/components/global/rerender-hoc.js +30 -12
  102. package/components/global/schedule-raf.js +6 -5
  103. package/components/global/sniffer.js +1 -1
  104. package/components/global/theme.js +22 -0
  105. package/components/global/trivial-template-tag.js +10 -3
  106. package/components/global/typescript-utils.js +6 -2
  107. package/components/global/url.js +26 -20
  108. package/components/global/use-event-callback.js +4 -6
  109. package/components/grid/col.js +52 -35
  110. package/components/grid/grid.js +31 -17
  111. package/components/grid/row.js +47 -35
  112. package/components/group/group.js +25 -17
  113. package/components/header/header.js +78 -33
  114. package/components/header/logo.js +36 -20
  115. package/components/header/profile.js +199 -166
  116. package/components/header/services-link.js +4 -0
  117. package/components/header/services.js +116 -73
  118. package/components/header/smart-profile.js +203 -111
  119. package/components/header/smart-services.js +113 -62
  120. package/components/header/tray-icon.js +37 -21
  121. package/components/header/tray.js +32 -21
  122. package/components/heading/heading.js +25 -24
  123. package/components/http/http.js +353 -203
  124. package/components/http/http.mock.js +101 -49
  125. package/components/hub-source/hub-source.js +190 -83
  126. package/components/hub-source/hub-source__user.js +44 -11
  127. package/components/hub-source/hub-source__users-groups.js +65 -37
  128. package/components/i18n/i18n-context.js +10 -7
  129. package/components/i18n/i18n.js +10 -7
  130. package/components/icon/icon.js +93 -76
  131. package/components/icon/icon__svg.js +8 -0
  132. package/components/icon/index.js +8 -0
  133. package/components/input/input.js +13 -0
  134. package/components/island/adaptive-island-hoc.js +43 -30
  135. package/components/island/content.js +132 -115
  136. package/components/island/header.js +70 -57
  137. package/components/island/island.js +40 -28
  138. package/components/island-legacy/content-legacy.js +25 -17
  139. package/components/island-legacy/header-legacy.js +27 -19
  140. package/components/island-legacy/island-legacy.js +25 -17
  141. package/components/link/clickableLink.js +59 -44
  142. package/components/link/link.js +68 -57
  143. package/components/list/consts.js +2 -2
  144. package/components/list/list.js +698 -611
  145. package/components/list/list__custom.js +62 -44
  146. package/components/list/list__hint.js +19 -10
  147. package/components/list/list__item.js +174 -133
  148. package/components/list/list__link.js +50 -37
  149. package/components/list/list__separator.js +24 -14
  150. package/components/list/list__title.js +32 -22
  151. package/components/list/list__users-groups-source.js +126 -54
  152. package/components/loader/loader.js +74 -43
  153. package/components/loader/loader__core.js +263 -198
  154. package/components/loader-inline/loader-inline.js +35 -23
  155. package/components/loader-screen/loader-screen.js +46 -25
  156. package/components/login-dialog/login-dialog.js +158 -111
  157. package/components/login-dialog/service.js +34 -8
  158. package/components/markdown/markdown.js +23 -15
  159. package/components/message/message.js +203 -161
  160. package/components/old-browsers-message/old-browsers-message.js +18 -11
  161. package/components/old-browsers-message/old-browsers-message__stop.js +7 -0
  162. package/components/old-browsers-message/white-list.js +16 -8
  163. package/components/pager/pager.js +271 -212
  164. package/components/panel/panel.js +25 -17
  165. package/components/permissions/permissions.js +172 -127
  166. package/components/permissions/permissions__cache.js +224 -194
  167. package/components/popup/popup.consts.js +1 -1
  168. package/components/popup/popup.js +343 -284
  169. package/components/popup/popup.target.js +8 -9
  170. package/components/popup/position.js +106 -96
  171. package/components/popup-menu/popup-menu.js +81 -44
  172. package/components/progress-bar/progress-bar.js +104 -87
  173. package/components/query-assist/query-assist.js +916 -838
  174. package/components/query-assist/query-assist__suggestions.js +30 -1
  175. package/components/radio/radio.js +34 -19
  176. package/components/radio/radio__item.js +69 -52
  177. package/components/select/select.js +957 -852
  178. package/components/select/select__filter.js +30 -0
  179. package/components/select/select__popup.js +487 -373
  180. package/components/shortcuts/core.js +217 -166
  181. package/components/shortcuts/shortcut-title.js +11 -6
  182. package/components/shortcuts/shortcuts-hoc.js +45 -19
  183. package/components/shortcuts/shortcuts.js +75 -50
  184. package/components/slider/slider.js +122 -99
  185. package/components/slider/slider.utils.js +24 -14
  186. package/components/storage/storage.js +33 -4
  187. package/components/storage/storage__fallback.js +224 -149
  188. package/components/storage/storage__local.js +153 -90
  189. package/components/tab-trap/tab-trap.js +153 -122
  190. package/components/table/cell.js +26 -14
  191. package/components/table/disable-hover-hoc.js +51 -33
  192. package/components/table/header-cell.js +89 -64
  193. package/components/table/header.js +132 -104
  194. package/components/table/multitable.js +125 -107
  195. package/components/table/row-with-focus-sensor.js +69 -25
  196. package/components/table/row.js +216 -175
  197. package/components/table/selection-adapter.js +3 -1
  198. package/components/table/selection-shortcuts-hoc.js +181 -180
  199. package/components/table/selection.js +226 -156
  200. package/components/table/smart-table.js +88 -50
  201. package/components/table/table.js +358 -289
  202. package/components/tabs/collapsible-more.js +79 -46
  203. package/components/tabs/collapsible-tab.js +38 -31
  204. package/components/tabs/collapsible-tabs.js +153 -88
  205. package/components/tabs/custom-item.js +2 -4
  206. package/components/tabs/dumb-tabs.js +117 -74
  207. package/components/tabs/smart-tabs.js +69 -29
  208. package/components/tabs/tab-link.js +5 -1
  209. package/components/tabs/tab.js +31 -19
  210. package/components/tabs/tabs.js +31 -0
  211. package/components/tag/tag.js +173 -133
  212. package/components/tags-input/tags-input.js +427 -329
  213. package/components/tags-list/tags-list.js +78 -57
  214. package/components/text/text.js +39 -28
  215. package/components/toggle/toggle.js +70 -56
  216. package/components/tooltip/tooltip.js +190 -146
  217. package/components/user-agreement/service.js +371 -228
  218. package/components/user-agreement/toolbox.eula.js +1 -160
  219. package/components/user-agreement/user-agreement.js +120 -85
  220. package/components/user-card/card.js +29 -0
  221. package/components/user-card/smart-user-card-tooltip.js +111 -51
  222. package/components/user-card/tooltip.js +84 -47
  223. package/components/user-card/user-card.js +29 -0
  224. package/package.json +1 -1
@@ -1,27 +1,49 @@
1
+ import { _ as _defineProperty, a as _inherits, b as _createClass, f as _classCallCheck, g as _callSuper, d as _objectSpread2, j as _slicedToArray } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/es.array.concat.js';
3
+ import 'core-js/modules/es.object.entries.js';
4
+ import 'core-js/modules/es.object.to-string.js';
5
+ import 'core-js/modules/es.regexp.exec.js';
6
+ import 'core-js/modules/es.regexp.to-string.js';
7
+ import 'core-js/modules/es.string.replace.js';
8
+ import 'core-js/modules/web.dom-collections.for-each.js';
1
9
  import React, { PureComponent } from 'react';
2
10
  import { createPortal } from 'react-dom';
3
11
  import PropTypes from 'prop-types';
4
12
  import classNames from 'classnames';
5
13
  import getUID from '../global/get-uid.js';
6
14
  import scheduleRAF from '../global/schedule-raf.js';
7
- import { Listeners, getStyles } from '../global/dom.js';
15
+ import { getStyles, Listeners } from '../global/dom.js';
8
16
  import Shortcuts from '../shortcuts/shortcuts.js';
9
17
  import joinDataTestAttributes from '../global/data-tests.js';
10
18
  import TabTrap from '../tab-trap/tab-trap.js';
11
19
  import position from './position.js';
12
- import { DEFAULT_DIRECTIONS, Display, Directions, Dimension, MinWidth, MaxHeight } from './popup.consts.js';
20
+ import { Display, DEFAULT_DIRECTIONS, Directions, Dimension, MinWidth, MaxHeight } from './popup.consts.js';
13
21
  import { PopupTargetContext, PopupTarget } from './popup.target.js';
22
+ import 'core-js/modules/es.array.filter.js';
23
+ import 'core-js/modules/es.array.iterator.js';
24
+ import 'core-js/modules/es.object.assign.js';
25
+ import 'core-js/modules/es.set.js';
26
+ import 'core-js/modules/es.string.split.js';
27
+ import 'core-js/modules/web.dom-collections.iterator.js';
28
+ import 'core-js/modules/es.array.map.js';
14
29
  import '../shortcuts/core.js';
30
+ import 'core-js/modules/es.array.find-index.js';
31
+ import 'core-js/modules/es.array.includes.js';
32
+ import 'core-js/modules/es.array.slice.js';
33
+ import 'core-js/modules/es.array.splice.js';
34
+ import 'core-js/modules/es.string.includes.js';
35
+ import 'core-js/modules/es.string.match.js';
15
36
  import 'combokeys';
16
37
  import '../global/sniffer.js';
17
38
  import 'sniffr';
18
- import '../_helpers/_rollupPluginBabelHelpers.js';
39
+ import 'core-js/modules/es.array.reduce.js';
40
+ import 'core-js/modules/es.array.sort.js';
19
41
 
20
42
  var modules_2f69e2e2 = {"light":"light_rui_2ac4","popup":"popup_rui_871b font_rui_f295","hidden":"hidden_rui_871b","showing":"showing_rui_871b","attached":"attached_rui_871b"};
21
43
 
22
- const isPossibleClientSideNavigation = event => {
23
- const target = event.target;
24
- const link = target.closest('a');
44
+ var isPossibleClientSideNavigation = function isPossibleClientSideNavigation(event) {
45
+ var target = event.target;
46
+ var link = target.closest('a');
25
47
  // Taken from https://github.com/nanostores/router/blob/80a333db4cf0789fda21a02715ebabca15192642/index.js#L58-L69
26
48
  return link && event.button === 0 &&
27
49
  // Left mouse button
@@ -45,308 +67,345 @@ const isPossibleClientSideNavigation = event => {
45
67
  // Not open in new window by user
46
68
  !event.defaultPrevented;
47
69
  };
48
- const stop = event => {
70
+ var stop = function stop(event) {
49
71
  if (!isPossibleClientSideNavigation(event)) {
50
72
  event.stopPropagation();
51
73
  }
52
74
  };
53
- const getPopupContainer = target => typeof target === 'string' ? document.querySelector(`[data-portaltarget=${target}]`) : target;
75
+ var getPopupContainer = function getPopupContainer(target) {
76
+ return typeof target === 'string' ? document.querySelector("[data-portaltarget=".concat(target, "]")) : target;
77
+ };
54
78
  /**
55
79
  * @constructor
56
80
  * @name Popup
57
81
  * @extends {ReactComponent}
58
82
  */
59
- class Popup extends PureComponent {
60
- static defaultProps = {
61
- shortcuts: true,
62
- hidden: false,
63
- onOutsideClick() {},
64
- onEscPress() {},
65
- onCloseAttempt() {},
66
- dontCloseOnAnchorClick: false,
67
- keepMounted: false,
68
- directions: DEFAULT_DIRECTIONS,
69
- autoPositioning: true,
70
- autoPositioningOnScroll: true,
71
- autoCorrectTopOverflow: true,
72
- left: 0,
73
- top: 0,
74
- offset: 0,
75
- sidePadding: 8,
76
- attached: false,
77
- trapFocus: false,
78
- autoFocusFirst: false,
79
- legacy: false
80
- };
81
- state = {
82
- display: Display.SHOWING
83
- };
84
- componentDidMount() {
85
- if (!this.props.client) {
86
- this.setState({
87
- client: true
88
- });
89
- }
90
- if (!this.props.hidden) {
91
- this._setListenersEnabled(true);
83
+ var Popup = /*#__PURE__*/function (_PureComponent) {
84
+ function Popup() {
85
+ var _this;
86
+ _classCallCheck(this, Popup);
87
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
88
+ args[_key] = arguments[_key];
92
89
  }
90
+ _this = _callSuper(this, Popup, [].concat(args));
91
+ _defineProperty(_this, "state", {
92
+ display: Display.SHOWING
93
+ });
94
+ _defineProperty(_this, "popup", void 0);
95
+ _defineProperty(_this, "node", void 0);
96
+ _defineProperty(_this, "parent", void 0);
97
+ _defineProperty(_this, "container", void 0);
98
+ _defineProperty(_this, "ringPopupTarget", void 0);
99
+ _defineProperty(_this, "listeners", new Listeners());
100
+ _defineProperty(_this, "redrawScheduler", scheduleRAF(true));
101
+ _defineProperty(_this, "uid", getUID('popup-'));
102
+ _defineProperty(_this, "calculateDisplay", function (prevState) {
103
+ return _objectSpread2(_objectSpread2({}, prevState), {}, {
104
+ display: _this.props.hidden ? Display.SHOWING : Display.SHOWN
105
+ });
106
+ });
107
+ _defineProperty(_this, "portalRef", function (el) {
108
+ _this.node = el;
109
+ _this.parent = el && el.parentElement;
110
+ if (el && _this.getContainer()) {
111
+ _this._redraw();
112
+ }
113
+ });
114
+ _defineProperty(_this, "popupRef", function (el) {
115
+ _this.popup = el;
116
+ _this._redraw();
117
+ });
118
+ _defineProperty(_this, "containerRef", function (el) {
119
+ _this.container = el;
120
+ });
121
+ _defineProperty(_this, "_updateDirection", function (newDirection) {
122
+ if (_this.state.direction !== newDirection) {
123
+ _this.setState({
124
+ direction: newDirection
125
+ });
126
+ if (_this.props.onDirectionChange) {
127
+ _this.props.onDirectionChange(newDirection);
128
+ }
129
+ }
130
+ });
131
+ _defineProperty(_this, "_updatePosition", function () {
132
+ var popup = _this.popup;
133
+ if (popup) {
134
+ popup.style.position = 'absolute';
135
+ if (_this.isVisible()) {
136
+ var _this$position = _this.position(),
137
+ style = _this$position.styles,
138
+ direction = _this$position.direction;
139
+ Object.entries(style).forEach(function (_ref) {
140
+ var _ref2 = _slicedToArray(_ref, 2),
141
+ key = _ref2[0],
142
+ value = _ref2[1];
143
+ var propKey = key;
144
+ if (typeof value === 'number') {
145
+ popup.style[propKey] = "".concat(value, "px");
146
+ } else {
147
+ popup.style[propKey] = value.toString();
148
+ }
149
+ });
150
+ if (direction != null) {
151
+ _this._updateDirection(direction);
152
+ }
153
+ }
154
+ _this.setState(_this.calculateDisplay);
155
+ }
156
+ });
157
+ _defineProperty(_this, "_redraw", function () {
158
+ if (_this.isVisible()) {
159
+ _this.redrawScheduler(_this._updatePosition);
160
+ }
161
+ });
162
+ _defineProperty(_this, "_listenersEnabled", void 0);
163
+ _defineProperty(_this, "_onEscPress", function (evt) {
164
+ _this.props.onEscPress(evt);
165
+ _this._onCloseAttempt(evt, true);
166
+ });
167
+ /**
168
+ * @param {jQuery.Event} evt
169
+ * @private
170
+ */
171
+ _defineProperty(_this, "_onDocumentClick", function (evt) {
172
+ var _this$_getAnchor;
173
+ if (_this.container && evt.target instanceof Node && _this.container.contains(evt.target) || !_this._listenersEnabled || _this.props.dontCloseOnAnchorClick && evt.target instanceof Node && (_this$_getAnchor = _this._getAnchor()) !== null && _this$_getAnchor !== void 0 && _this$_getAnchor.contains(evt.target)) {
174
+ return;
175
+ }
176
+ _this.props.onOutsideClick(evt);
177
+ _this._onCloseAttempt(evt, false);
178
+ });
179
+ _defineProperty(_this, "shortcutsScope", _this.uid);
180
+ _defineProperty(_this, "shortcutsMap", {
181
+ esc: _this._onEscPress
182
+ });
183
+ return _this;
93
184
  }
94
- componentDidUpdate(prevProps, prevState) {
95
- const {
96
- hidden
97
- } = this.props;
98
- if (this.props !== prevProps) {
99
- if (prevProps.hidden !== hidden) {
100
- this._setListenersEnabled(!hidden);
185
+ _inherits(Popup, _PureComponent);
186
+ return _createClass(Popup, [{
187
+ key: "componentDidMount",
188
+ value: function componentDidMount() {
189
+ if (!this.props.client) {
190
+ this.setState({
191
+ client: true
192
+ });
193
+ }
194
+ if (!this.props.hidden) {
195
+ this._setListenersEnabled(true);
101
196
  }
102
- this._redraw();
103
197
  }
104
- if (this.props.onShow && !hidden && this.state.display === Display.SHOWN && (prevProps.hidden || prevState.display !== Display.SHOWN)) {
105
- this.props.onShow();
198
+ }, {
199
+ key: "componentDidUpdate",
200
+ value: function componentDidUpdate(prevProps, prevState) {
201
+ var hidden = this.props.hidden;
202
+ if (this.props !== prevProps) {
203
+ if (prevProps.hidden !== hidden) {
204
+ this._setListenersEnabled(!hidden);
205
+ }
206
+ this._redraw();
207
+ }
208
+ if (this.props.onShow && !hidden && this.state.display === Display.SHOWN && (prevProps.hidden || prevState.display !== Display.SHOWN)) {
209
+ this.props.onShow();
210
+ }
106
211
  }
107
- }
108
- componentWillUnmount() {
109
- this._setListenersEnabled(false);
110
- }
111
- popup;
112
- node;
113
- parent;
114
- container;
115
- ringPopupTarget;
116
- shouldUseShortcuts() {
117
- const {
118
- shortcuts,
119
- hidden
120
- } = this.props;
121
- return shortcuts && !hidden;
122
- }
123
- listeners = new Listeners();
124
- redrawScheduler = scheduleRAF(true);
125
- uid = getUID('popup-');
126
- calculateDisplay = prevState => ({
127
- ...prevState,
128
- display: this.props.hidden ? Display.SHOWING : Display.SHOWN
129
- });
130
- static PopupProps = {
131
- Directions,
132
- Dimension,
133
- MinWidth,
134
- MaxHeight
135
- };
136
- portalRef = el => {
137
- this.node = el;
138
- this.parent = el && el.parentElement;
139
- if (el && this.getContainer()) {
140
- this._redraw();
212
+ }, {
213
+ key: "componentWillUnmount",
214
+ value: function componentWillUnmount() {
215
+ this._setListenersEnabled(false);
141
216
  }
142
- };
143
- popupRef = el => {
144
- this.popup = el;
145
- this._redraw();
146
- };
147
- containerRef = el => {
148
- this.container = el;
149
- };
150
- getContainer() {
151
- const target = this.props.target || this.ringPopupTarget;
152
- return target && getPopupContainer(target);
153
- }
154
- position() {
155
- const {
156
- directions,
157
- autoPositioning,
158
- autoCorrectTopOverflow,
159
- sidePadding,
160
- top,
161
- left,
162
- offset,
163
- maxHeight,
164
- minWidth
165
- } = this.props;
166
- const container = this.getContainer();
167
- return position({
168
- popup: this.popup,
169
- container: container && getStyles(container).position !== 'static' ? container : null,
170
- anchor: this._getAnchor(),
171
- directions,
172
- autoPositioning,
173
- autoCorrectTopOverflow,
174
- sidePadding,
175
- top,
176
- left,
177
- offset,
178
- maxHeight,
179
- minWidth
180
- });
181
- }
182
- _updateDirection = newDirection => {
183
- if (this.state.direction !== newDirection) {
184
- this.setState({
185
- direction: newDirection
217
+ }, {
218
+ key: "shouldUseShortcuts",
219
+ value: function shouldUseShortcuts() {
220
+ var _this$props = this.props,
221
+ shortcuts = _this$props.shortcuts,
222
+ hidden = _this$props.hidden;
223
+ return shortcuts && !hidden;
224
+ }
225
+ }, {
226
+ key: "getContainer",
227
+ value: function getContainer() {
228
+ var target = this.props.target || this.ringPopupTarget;
229
+ return target && getPopupContainer(target);
230
+ }
231
+ }, {
232
+ key: "position",
233
+ value: function position$1() {
234
+ var _this$props2 = this.props,
235
+ directions = _this$props2.directions,
236
+ autoPositioning = _this$props2.autoPositioning,
237
+ autoCorrectTopOverflow = _this$props2.autoCorrectTopOverflow,
238
+ sidePadding = _this$props2.sidePadding,
239
+ top = _this$props2.top,
240
+ left = _this$props2.left,
241
+ offset = _this$props2.offset,
242
+ maxHeight = _this$props2.maxHeight,
243
+ minWidth = _this$props2.minWidth;
244
+ var container = this.getContainer();
245
+ return position({
246
+ popup: this.popup,
247
+ container: container && getStyles(container).position !== 'static' ? container : null,
248
+ anchor: this._getAnchor(),
249
+ directions,
250
+ autoPositioning,
251
+ autoCorrectTopOverflow,
252
+ sidePadding,
253
+ top,
254
+ left,
255
+ offset,
256
+ maxHeight,
257
+ minWidth
186
258
  });
187
- if (this.props.onDirectionChange) {
188
- this.props.onDirectionChange(newDirection);
189
- }
190
259
  }
191
- };
192
- _updatePosition = () => {
193
- const popup = this.popup;
194
- if (popup) {
195
- popup.style.position = 'absolute';
196
- if (this.isVisible()) {
197
- const {
198
- styles: style,
199
- direction
200
- } = this.position();
201
- Object.entries(style).forEach(_ref => {
202
- let [key, value] = _ref;
203
- const propKey = key;
204
- if (typeof value === 'number') {
205
- popup.style[propKey] = `${value}px`;
206
- } else {
207
- popup.style[propKey] = value.toString();
260
+ }, {
261
+ key: "_getAnchor",
262
+ value: function _getAnchor() {
263
+ return this.props.anchorElement || this.parent;
264
+ }
265
+ }, {
266
+ key: "_setListenersEnabled",
267
+ value:
268
+ /**
269
+ * @param {boolean} enable
270
+ * @private
271
+ */
272
+ function _setListenersEnabled(enable) {
273
+ var _this2 = this;
274
+ if (enable && !this._listenersEnabled) {
275
+ setTimeout(function () {
276
+ _this2._listenersEnabled = true;
277
+ _this2.listeners.add(window, 'resize', _this2._redraw);
278
+ if (_this2.props.autoPositioningOnScroll) {
279
+ _this2.listeners.add(window, 'scroll', _this2._redraw);
208
280
  }
209
- });
210
- if (direction != null) {
211
- this._updateDirection(direction);
212
- }
281
+ _this2.listeners.add(document, 'pointerdown', _this2._onDocumentClick, true);
282
+ var el = _this2._getAnchor();
283
+ while (el) {
284
+ _this2.listeners.add(el, 'scroll', _this2._redraw);
285
+ el = el.parentElement;
286
+ }
287
+ }, 0);
288
+ return;
289
+ }
290
+ if (!enable && this._listenersEnabled) {
291
+ this.listeners.removeAll();
292
+ this._listenersEnabled = false;
213
293
  }
214
- this.setState(this.calculateDisplay);
215
294
  }
216
- };
217
- _redraw = () => {
218
- if (this.isVisible()) {
219
- this.redrawScheduler(this._updatePosition);
295
+ /**
296
+ * Returns visibility state
297
+ * @return {boolean}
298
+ */
299
+ }, {
300
+ key: "isVisible",
301
+ value: function isVisible() {
302
+ return !this.props.hidden;
220
303
  }
221
- };
222
- _getAnchor() {
223
- return this.props.anchorElement || this.parent;
224
- }
225
- _listenersEnabled;
226
- /**
227
- * @param {boolean} enable
228
- * @private
229
- */
230
- _setListenersEnabled(enable) {
231
- if (enable && !this._listenersEnabled) {
232
- setTimeout(() => {
233
- this._listenersEnabled = true;
234
- this.listeners.add(window, 'resize', this._redraw);
235
- if (this.props.autoPositioningOnScroll) {
236
- this.listeners.add(window, 'scroll', this._redraw);
237
- }
238
- this.listeners.add(document, 'pointerdown', this._onDocumentClick, true);
239
- let el = this._getAnchor();
240
- while (el) {
241
- this.listeners.add(el, 'scroll', this._redraw);
242
- el = el.parentElement;
243
- }
244
- }, 0);
245
- return;
304
+ }, {
305
+ key: "_onCloseAttempt",
306
+ value: function _onCloseAttempt(evt, isEsc) {
307
+ this.props.onCloseAttempt(evt, isEsc);
246
308
  }
247
- if (!enable && this._listenersEnabled) {
248
- this.listeners.removeAll();
249
- this._listenersEnabled = false;
309
+ }, {
310
+ key: "getInternalContent",
311
+ value: function getInternalContent() {
312
+ var _this$props3 = this.props,
313
+ trapFocus = _this$props3.trapFocus,
314
+ autoFocusFirst = _this$props3.autoFocusFirst,
315
+ children = _this$props3.children;
316
+ return trapFocus ? /*#__PURE__*/React.createElement(TabTrap, {
317
+ autoFocusFirst: autoFocusFirst,
318
+ focusBackOnExit: true
319
+ }, children) : children;
250
320
  }
251
- }
252
- /**
253
- * Returns visibility state
254
- * @return {boolean}
255
- */
256
- isVisible() {
257
- return !this.props.hidden;
258
- }
259
- _onCloseAttempt(evt, isEsc) {
260
- this.props.onCloseAttempt(evt, isEsc);
261
- }
262
- _onEscPress = evt => {
263
- this.props.onEscPress(evt);
264
- this._onCloseAttempt(evt, true);
265
- };
266
- /**
267
- * @param {jQuery.Event} evt
268
- * @private
269
- */
270
- _onDocumentClick = evt => {
271
- if (this.container && evt.target instanceof Node && this.container.contains(evt.target) || !this._listenersEnabled || this.props.dontCloseOnAnchorClick && evt.target instanceof Node && this._getAnchor()?.contains(evt.target)) {
272
- return;
321
+ }, {
322
+ key: "render",
323
+ value: function render() {
324
+ var _this3 = this;
325
+ var _this$props4 = this.props,
326
+ className = _this$props4.className,
327
+ style = _this$props4.style,
328
+ hidden = _this$props4.hidden,
329
+ attached = _this$props4.attached,
330
+ keepMounted = _this$props4.keepMounted,
331
+ client = _this$props4.client,
332
+ onMouseDown = _this$props4.onMouseDown,
333
+ onMouseUp = _this$props4.onMouseUp,
334
+ onMouseOver = _this$props4.onMouseOver,
335
+ onMouseOut = _this$props4.onMouseOut,
336
+ onContextMenu = _this$props4.onContextMenu,
337
+ dataTest = _this$props4['data-test'];
338
+ var showing = this.state.display === Display.SHOWING;
339
+ var classes = classNames(className, modules_2f69e2e2.popup, {
340
+ [modules_2f69e2e2.attached]: attached,
341
+ [modules_2f69e2e2.hidden]: hidden,
342
+ [modules_2f69e2e2.showing]: showing
343
+ });
344
+ var direction = (this.state.direction || '').toLowerCase().replace(/[_]/g, '-');
345
+ return /*#__PURE__*/React.createElement(PopupTargetContext.Consumer, null, function (value) {
346
+ _this3.ringPopupTarget = value;
347
+ return /*#__PURE__*/React.createElement("span", {
348
+ // prevent bubbling through portal
349
+ onClick: stop
350
+ // This handler only blocks bubbling through React portal
351
+ ,
352
+ role: "presentation",
353
+ ref: _this3.portalRef
354
+ }, _this3.shouldUseShortcuts() && /*#__PURE__*/React.createElement(Shortcuts, {
355
+ map: _this3.shortcutsMap,
356
+ scope: _this3.shortcutsScope
357
+ }), (client || _this3.state.client) && (keepMounted || !hidden) && /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PopupTarget, {
358
+ id: _this3.uid,
359
+ ref: _this3.containerRef,
360
+ onMouseOver: onMouseOver,
361
+ onFocus: onMouseOver,
362
+ onMouseOut: onMouseOut,
363
+ onBlur: onMouseOut,
364
+ onContextMenu: onContextMenu
365
+ }, /*#__PURE__*/React.createElement("div", {
366
+ "data-test": joinDataTestAttributes('ring-popup', dataTest),
367
+ "data-test-shown": !hidden && !showing,
368
+ "data-test-direction": direction,
369
+ ref: _this3.popupRef,
370
+ className: classes,
371
+ style: style,
372
+ onMouseDown: onMouseDown,
373
+ onMouseUp: onMouseUp
374
+ // mouse handlers are used to track clicking on inner elements
375
+ ,
376
+ role: "presentation"
377
+ }, _this3.getInternalContent())), _this3.getContainer() || document.body));
378
+ });
273
379
  }
274
- this.props.onOutsideClick(evt);
275
- this._onCloseAttempt(evt, false);
276
- };
277
- getInternalContent() {
278
- const {
279
- trapFocus,
280
- autoFocusFirst,
281
- children
282
- } = this.props;
283
- return trapFocus ? /*#__PURE__*/React.createElement(TabTrap, {
284
- autoFocusFirst: autoFocusFirst,
285
- focusBackOnExit: true
286
- }, children) : children;
287
- }
288
- shortcutsScope = this.uid;
289
- shortcutsMap = {
290
- esc: this._onEscPress
291
- };
292
- render() {
293
- const {
294
- className,
295
- style,
296
- hidden,
297
- attached,
298
- keepMounted,
299
- client,
300
- onMouseDown,
301
- onMouseUp,
302
- onMouseOver,
303
- onMouseOut,
304
- onContextMenu,
305
- 'data-test': dataTest
306
- } = this.props;
307
- const showing = this.state.display === Display.SHOWING;
308
- const classes = classNames(className, modules_2f69e2e2.popup, {
309
- [modules_2f69e2e2.attached]: attached,
310
- [modules_2f69e2e2.hidden]: hidden,
311
- [modules_2f69e2e2.showing]: showing
312
- });
313
- const direction = (this.state.direction || '').toLowerCase().replace(/[_]/g, '-');
314
- return /*#__PURE__*/React.createElement(PopupTargetContext.Consumer, null, value => {
315
- this.ringPopupTarget = value;
316
- return /*#__PURE__*/React.createElement("span", {
317
- // prevent bubbling through portal
318
- onClick: stop
319
- // This handler only blocks bubbling through React portal
320
- ,
321
- role: "presentation",
322
- ref: this.portalRef
323
- }, this.shouldUseShortcuts() && /*#__PURE__*/React.createElement(Shortcuts, {
324
- map: this.shortcutsMap,
325
- scope: this.shortcutsScope
326
- }), (client || this.state.client) && (keepMounted || !hidden) && /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement(PopupTarget, {
327
- id: this.uid,
328
- ref: this.containerRef,
329
- onMouseOver: onMouseOver,
330
- onFocus: onMouseOver,
331
- onMouseOut: onMouseOut,
332
- onBlur: onMouseOut,
333
- onContextMenu: onContextMenu
334
- }, /*#__PURE__*/React.createElement("div", {
335
- "data-test": joinDataTestAttributes('ring-popup', dataTest),
336
- "data-test-shown": !hidden && !showing,
337
- "data-test-direction": direction,
338
- ref: this.popupRef,
339
- className: classes,
340
- style: style,
341
- onMouseDown: onMouseDown,
342
- onMouseUp: onMouseUp
343
- // mouse handlers are used to track clicking on inner elements
344
- ,
345
- role: "presentation"
346
- }, this.getInternalContent())), this.getContainer() || document.body));
347
- });
348
- }
349
- }
380
+ }]);
381
+ }(PureComponent);
382
+ _defineProperty(Popup, "defaultProps", {
383
+ shortcuts: true,
384
+ hidden: false,
385
+ onOutsideClick() {},
386
+ onEscPress() {},
387
+ onCloseAttempt() {},
388
+ dontCloseOnAnchorClick: false,
389
+ keepMounted: false,
390
+ directions: DEFAULT_DIRECTIONS,
391
+ autoPositioning: true,
392
+ autoPositioningOnScroll: true,
393
+ autoCorrectTopOverflow: true,
394
+ left: 0,
395
+ top: 0,
396
+ offset: 0,
397
+ sidePadding: 8,
398
+ attached: false,
399
+ trapFocus: false,
400
+ autoFocusFirst: false,
401
+ legacy: false
402
+ });
403
+ _defineProperty(Popup, "PopupProps", {
404
+ Directions,
405
+ Dimension,
406
+ MinWidth,
407
+ MaxHeight
408
+ });
350
409
  Popup.propTypes = {
351
410
  anchorElement: PropTypes.instanceOf(Node),
352
411
  target: PropTypes.oneOfType([PropTypes.string, PropTypes.instanceOf(Element)]),