@jetbrains/ring-ui-built 6.0.31 → 6.0.32

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 (225) hide show
  1. package/components/_helpers/_rollupPluginBabelHelpers.js +1 -567
  2. package/components/_helpers/anchor.js +7 -6
  3. package/components/_helpers/button__classes.js +16 -14
  4. package/components/_helpers/caption.js +14 -20
  5. package/components/_helpers/card.js +95 -105
  6. package/components/_helpers/dialog__body-scroll-preventer.js +11 -19
  7. package/components/_helpers/icon__svg.js +22 -25
  8. package/components/_helpers/input.js +146 -177
  9. package/components/_helpers/query-assist__suggestions.js +74 -90
  10. package/components/_helpers/select__filter.js +48 -69
  11. package/components/_helpers/services-link.js +29 -37
  12. package/components/_helpers/sidebar.js +99 -107
  13. package/components/_helpers/tab-link.js +7 -7
  14. package/components/_helpers/theme.js +31 -40
  15. package/components/_helpers/title.js +57 -72
  16. package/components/alert/alert.js +150 -202
  17. package/components/alert/container.js +32 -41
  18. package/components/alert-service/alert-service.js +105 -170
  19. package/components/analytics/analytics.js +12 -22
  20. package/components/analytics/analytics__custom-plugin.js +54 -75
  21. package/components/auth/auth.js +4 -36
  22. package/components/auth/auth__core.js +746 -1471
  23. package/components/auth/background-flow.js +87 -127
  24. package/components/auth/down-notification.js +30 -73
  25. package/components/auth/iframe-flow.js +75 -133
  26. package/components/auth/request-builder.js +46 -82
  27. package/components/auth/response-parser.js +86 -116
  28. package/components/auth/storage.js +171 -334
  29. package/components/auth/token-validator.js +137 -242
  30. package/components/auth/window-flow.js +92 -134
  31. package/components/auth-dialog/auth-dialog.js +114 -172
  32. package/components/auth-dialog-service/auth-dialog-service.js +8 -31
  33. package/components/avatar/avatar-example-datauri.js +23 -1
  34. package/components/avatar/avatar.js +119 -152
  35. package/components/avatar/fallback-avatar.js +22 -38
  36. package/components/badge/badge.js +35 -45
  37. package/components/button/button.js +86 -107
  38. package/components/button-group/button-group.js +19 -33
  39. package/components/button-set/button-set.js +20 -32
  40. package/components/button-toolbar/button-toolbar.js +19 -31
  41. package/components/caret/caret.js +186 -220
  42. package/components/checkbox/checkbox.js +76 -101
  43. package/components/clipboard/clipboard-fallback.js +10 -10
  44. package/components/clipboard/clipboard.js +35 -132
  45. package/components/code/code.js +92 -166
  46. package/components/collapse/collapse-content.js +42 -64
  47. package/components/collapse/collapse-context.js +2 -2
  48. package/components/collapse/collapse-control.js +12 -14
  49. package/components/collapse/collapse.js +11 -17
  50. package/components/collapse/consts.js +4 -4
  51. package/components/collapse/utils.js +1 -3
  52. package/components/confirm/confirm.js +66 -104
  53. package/components/confirm-service/confirm-service.js +37 -59
  54. package/components/content-layout/content-layout.js +43 -64
  55. package/components/content-layout/sidebar.js +0 -1
  56. package/components/contenteditable/contenteditable.js +50 -59
  57. package/components/control-label/control-label.js +9 -9
  58. package/components/data-list/data-list.js +129 -182
  59. package/components/data-list/data-list.mock.js +2 -6
  60. package/components/data-list/item.js +143 -170
  61. package/components/data-list/selection.js +76 -136
  62. package/components/data-list/title.js +1 -12
  63. package/components/date-picker/consts.js +19 -26
  64. package/components/date-picker/date-input.js +113 -144
  65. package/components/date-picker/date-picker.js +227 -282
  66. package/components/date-picker/date-popup.js +350 -395
  67. package/components/date-picker/day.js +87 -116
  68. package/components/date-picker/month-names.js +43 -66
  69. package/components/date-picker/month-slider.js +51 -76
  70. package/components/date-picker/month.js +16 -25
  71. package/components/date-picker/months.js +43 -50
  72. package/components/date-picker/weekdays.js +12 -22
  73. package/components/date-picker/years.js +83 -110
  74. package/components/dialog/dialog.js +142 -190
  75. package/components/dialog/dialog__body-scroll-preventer.js +0 -4
  76. package/components/dropdown/anchor.js +0 -9
  77. package/components/dropdown/dropdown.js +182 -213
  78. package/components/dropdown-menu/dropdown-menu.js +71 -97
  79. package/components/editable-heading/editable-heading.js +75 -127
  80. package/components/error-bubble/error-bubble.js +31 -60
  81. package/components/error-message/error-message.js +39 -59
  82. package/components/footer/footer.js +27 -30
  83. package/components/global/compose.js +1 -10
  84. package/components/global/composeRefs.js +7 -12
  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 +6 -14
  88. package/components/global/dom.js +47 -86
  89. package/components/global/focus-sensor-hoc.js +122 -132
  90. package/components/global/fuzzy-highlight.js +22 -36
  91. package/components/global/get-event-key.js +8 -8
  92. package/components/global/get-uid.js +4 -8
  93. package/components/global/inject-styles.js +10 -15
  94. package/components/global/listeners.js +27 -51
  95. package/components/global/memoize.js +6 -12
  96. package/components/global/normalize-indent.js +19 -50
  97. package/components/global/promise-with-timeout.js +6 -8
  98. package/components/global/prop-types.js +3 -5
  99. package/components/global/react-dom-renderer.js +28 -44
  100. package/components/global/react-render-adapter.js +1 -1
  101. package/components/global/rerender-hoc.js +12 -30
  102. package/components/global/schedule-raf.js +5 -6
  103. package/components/global/sniffer.js +1 -1
  104. package/components/global/theme.js +0 -22
  105. package/components/global/trivial-template-tag.js +3 -10
  106. package/components/global/typescript-utils.js +2 -6
  107. package/components/global/url.js +20 -26
  108. package/components/global/use-event-callback.js +6 -4
  109. package/components/grid/col.js +35 -52
  110. package/components/grid/grid.js +17 -31
  111. package/components/grid/row.js +35 -47
  112. package/components/group/group.js +17 -25
  113. package/components/header/header.js +33 -78
  114. package/components/header/logo.js +20 -36
  115. package/components/header/profile.js +166 -199
  116. package/components/header/services-link.js +0 -4
  117. package/components/header/services.js +73 -116
  118. package/components/header/smart-profile.js +111 -203
  119. package/components/header/smart-services.js +62 -113
  120. package/components/header/tray-icon.js +21 -37
  121. package/components/header/tray.js +21 -32
  122. package/components/heading/heading.js +24 -25
  123. package/components/http/http.d.ts +1 -3
  124. package/components/http/http.js +203 -353
  125. package/components/http/http.mock.js +49 -101
  126. package/components/hub-source/hub-source.js +83 -190
  127. package/components/hub-source/hub-source__user.js +11 -44
  128. package/components/hub-source/hub-source__users-groups.js +37 -65
  129. package/components/i18n/i18n-context.js +7 -10
  130. package/components/i18n/i18n.js +7 -10
  131. package/components/icon/icon.js +76 -93
  132. package/components/icon/icon__svg.js +0 -8
  133. package/components/icon/index.js +0 -8
  134. package/components/input/input.js +0 -13
  135. package/components/island/adaptive-island-hoc.js +30 -43
  136. package/components/island/content.js +115 -132
  137. package/components/island/header.js +57 -70
  138. package/components/island/island.js +28 -40
  139. package/components/island-legacy/content-legacy.js +17 -25
  140. package/components/island-legacy/header-legacy.js +19 -27
  141. package/components/island-legacy/island-legacy.js +17 -25
  142. package/components/link/clickableLink.js +44 -59
  143. package/components/link/link.js +57 -68
  144. package/components/list/consts.js +2 -2
  145. package/components/list/list.js +611 -698
  146. package/components/list/list__custom.js +44 -62
  147. package/components/list/list__hint.js +10 -19
  148. package/components/list/list__item.js +133 -174
  149. package/components/list/list__link.js +37 -50
  150. package/components/list/list__separator.js +14 -24
  151. package/components/list/list__title.js +22 -32
  152. package/components/list/list__users-groups-source.js +54 -126
  153. package/components/loader/loader.js +43 -74
  154. package/components/loader/loader__core.js +198 -263
  155. package/components/loader-inline/loader-inline.js +23 -35
  156. package/components/loader-screen/loader-screen.js +25 -46
  157. package/components/login-dialog/login-dialog.js +111 -158
  158. package/components/login-dialog/service.js +8 -34
  159. package/components/markdown/markdown.js +15 -23
  160. package/components/message/message.js +161 -203
  161. package/components/old-browsers-message/old-browsers-message.js +11 -18
  162. package/components/old-browsers-message/old-browsers-message__stop.js +0 -7
  163. package/components/old-browsers-message/white-list.js +8 -16
  164. package/components/pager/pager.js +212 -271
  165. package/components/panel/panel.js +17 -25
  166. package/components/permissions/permissions.js +127 -172
  167. package/components/permissions/permissions__cache.js +194 -224
  168. package/components/popup/popup.consts.js +1 -1
  169. package/components/popup/popup.js +284 -343
  170. package/components/popup/popup.target.js +9 -8
  171. package/components/popup/position.js +96 -106
  172. package/components/popup-menu/popup-menu.js +44 -80
  173. package/components/progress-bar/progress-bar.js +87 -104
  174. package/components/query-assist/query-assist.js +838 -916
  175. package/components/query-assist/query-assist__suggestions.js +1 -30
  176. package/components/radio/radio.js +19 -34
  177. package/components/radio/radio__item.js +52 -69
  178. package/components/select/select.js +852 -957
  179. package/components/select/select__filter.js +0 -30
  180. package/components/select/select__popup.js +373 -487
  181. package/components/shortcuts/core.js +166 -217
  182. package/components/shortcuts/shortcut-title.js +6 -11
  183. package/components/shortcuts/shortcuts-hoc.js +19 -45
  184. package/components/shortcuts/shortcuts.js +50 -75
  185. package/components/slider/slider.js +99 -122
  186. package/components/slider/slider.utils.js +14 -24
  187. package/components/storage/storage.js +4 -33
  188. package/components/storage/storage__fallback.js +149 -224
  189. package/components/storage/storage__local.js +90 -153
  190. package/components/tab-trap/tab-trap.js +122 -153
  191. package/components/table/cell.js +14 -26
  192. package/components/table/disable-hover-hoc.js +33 -51
  193. package/components/table/header-cell.js +64 -89
  194. package/components/table/header.js +104 -132
  195. package/components/table/multitable.js +107 -125
  196. package/components/table/row-with-focus-sensor.js +25 -69
  197. package/components/table/row.js +175 -216
  198. package/components/table/selection-adapter.js +1 -3
  199. package/components/table/selection-shortcuts-hoc.js +180 -181
  200. package/components/table/selection.js +156 -226
  201. package/components/table/smart-table.js +50 -88
  202. package/components/table/table.js +289 -358
  203. package/components/tabs/collapsible-more.js +46 -79
  204. package/components/tabs/collapsible-tab.js +31 -38
  205. package/components/tabs/collapsible-tabs.js +88 -153
  206. package/components/tabs/custom-item.js +4 -2
  207. package/components/tabs/dumb-tabs.js +74 -117
  208. package/components/tabs/smart-tabs.js +29 -69
  209. package/components/tabs/tab-link.js +1 -5
  210. package/components/tabs/tab.js +19 -31
  211. package/components/tabs/tabs.js +0 -31
  212. package/components/tag/tag.js +133 -173
  213. package/components/tags-input/tags-input.js +329 -427
  214. package/components/tags-list/tags-list.js +57 -78
  215. package/components/text/text.js +28 -39
  216. package/components/toggle/toggle.js +56 -70
  217. package/components/tooltip/tooltip.js +146 -190
  218. package/components/user-agreement/service.js +228 -371
  219. package/components/user-agreement/toolbox.eula.js +160 -1
  220. package/components/user-agreement/user-agreement.js +85 -120
  221. package/components/user-card/card.js +0 -29
  222. package/components/user-card/smart-user-card-tooltip.js +51 -111
  223. package/components/user-card/tooltip.js +47 -84
  224. package/components/user-card/user-card.js +0 -29
  225. package/package.json +1 -1
@@ -1,245 +1,214 @@
1
- import { _ as _defineProperty, a as _inherits, b as _createClass, c as _objectWithoutProperties, e as _extends, f as _classCallCheck, g as _callSuper } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.concat.js';
3
- import React, { cloneElement, Component } from 'react';
1
+ import { _ as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React, { Component, cloneElement } from 'react';
4
3
  import PropTypes from 'prop-types';
5
4
  import classNames from 'classnames';
6
5
  import joinDataTestAttributes from '../global/data-tests.js';
7
6
  import { isArray } from '../global/typescript-utils.js';
8
7
  import { m as modules_d9414203, A as Anchor } from '../_helpers/anchor.js';
9
- import 'core-js/modules/es.array.reduce.js';
10
- import 'core-js/modules/es.object.entries.js';
11
- import 'core-js/modules/es.object.to-string.js';
12
8
  import '@jetbrains/icons/chevron-10px';
13
9
  import '../icon/icon.js';
14
10
  import 'util-deprecate';
15
11
  import '../icon/icon__constants.js';
16
12
  import '../_helpers/icon__svg.js';
17
- import 'core-js/modules/es.regexp.exec.js';
18
- import 'core-js/modules/es.string.replace.js';
19
- import 'core-js/modules/es.string.starts-with.js';
20
13
  import '../global/memoize.js';
21
- import 'core-js/modules/es.array.iterator.js';
22
- import 'core-js/modules/es.map.js';
23
- import 'core-js/modules/es.weak-map.js';
24
- import 'core-js/modules/web.dom-collections.iterator.js';
25
14
  import '../button/button.js';
26
15
  import '../link/clickableLink.js';
27
16
  import '../global/controls-height.js';
28
17
  import '../_helpers/button__classes.js';
29
18
 
30
- var _excluded = ["initShown", "onShow", "onHide", "hoverShowTimeOut", "hoverHideTimeOut", "children", "anchor", "className", "activeClassName", "hoverMode", "clickMode", "data-test", "disabled"];
31
19
  /**
32
20
  * @name Dropdown
33
21
  */
34
- var Dropdown = /*#__PURE__*/function (_Component) {
35
- function Dropdown() {
36
- var _this;
37
- _classCallCheck(this, Dropdown);
38
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
39
- args[_key] = arguments[_key];
22
+ class Dropdown extends Component {
23
+ static propTypes = {
24
+ /**
25
+ * Can be string, React element, or a function accepting an object with {active, pinned} properties and returning a React element
26
+ * React element should render some interactive HTML element like `button` or `a`
27
+ */
28
+ anchor: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
29
+ children: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,
30
+ initShown: PropTypes.bool,
31
+ className: PropTypes.string,
32
+ activeClassName: PropTypes.string,
33
+ clickMode: PropTypes.bool,
34
+ hoverMode: PropTypes.bool,
35
+ hoverShowTimeOut: PropTypes.number,
36
+ hoverHideTimeOut: PropTypes.number,
37
+ disabled: PropTypes.bool,
38
+ onShow: PropTypes.func,
39
+ onHide: PropTypes.func,
40
+ onMouseEnter: PropTypes.func,
41
+ onMouseLeave: PropTypes.func,
42
+ 'data-test': PropTypes.string
43
+ };
44
+ static defaultProps = {
45
+ initShown: false,
46
+ clickMode: true,
47
+ hoverMode: false,
48
+ hoverShowTimeOut: 300,
49
+ hoverHideTimeOut: 600,
50
+ disabled: false,
51
+ onShow: () => {},
52
+ onHide: () => {},
53
+ onMouseEnter: () => {},
54
+ onMouseLeave: () => {}
55
+ };
56
+ state = {
57
+ show: this.props.initShown,
58
+ pinned: false
59
+ };
60
+ onClick = () => {
61
+ if (this.props.disabled) {
62
+ return;
40
63
  }
41
- _this = _callSuper(this, Dropdown, [].concat(args));
42
- _defineProperty(_this, "state", {
43
- show: _this.props.initShown,
44
- pinned: false
45
- });
46
- _defineProperty(_this, "onClick", function () {
47
- if (_this.props.disabled) {
48
- return;
49
- }
50
- var _this$state = _this.state,
51
- show = _this$state.show,
52
- pinned = _this$state.pinned;
53
- var nextPinned = pinned;
54
- if (_this.props.hoverMode) {
55
- if (!pinned) {
56
- nextPinned = true;
57
- if (show) {
58
- _this.setState({
59
- pinned: true
60
- });
61
- return;
62
- }
63
- } else {
64
- nextPinned = false;
64
+ const {
65
+ show,
66
+ pinned
67
+ } = this.state;
68
+ let nextPinned = pinned;
69
+ if (this.props.hoverMode) {
70
+ if (!pinned) {
71
+ nextPinned = true;
72
+ if (show) {
73
+ this.setState({
74
+ pinned: true
75
+ });
76
+ return;
65
77
  }
66
- }
67
- _this._toggle(!show, nextPinned);
68
- });
69
- _defineProperty(_this, "onChildCloseAttempt", function () {
70
- var nextPinned = _this.state.pinned;
71
- if (_this.props.hoverMode) {
78
+ } else {
72
79
  nextPinned = false;
73
80
  }
74
- _this._toggle(false, nextPinned);
75
- });
76
- _defineProperty(_this, "hoverTimer", void 0);
77
- _defineProperty(_this, "onMouseEnter", function (event) {
78
- var _this$props$onMouseEn, _this$props;
79
- if (_this.props.disabled) {
80
- return;
81
- }
82
- _this._clearTimer();
83
- (_this$props$onMouseEn = (_this$props = _this.props).onMouseEnter) === null || _this$props$onMouseEn === void 0 || _this$props$onMouseEn.call(_this$props, event);
84
- _this.hoverTimer = window.setTimeout(function () {
85
- if (!_this.state.show) {
86
- _this._toggle(true);
87
- }
88
- }, _this.props.hoverShowTimeOut);
89
- });
90
- _defineProperty(_this, "onMouseLeave", function (event) {
91
- var _this$props$onMouseLe, _this$props2;
92
- if (_this.props.disabled) {
93
- return;
94
- }
95
- (_this$props$onMouseLe = (_this$props2 = _this.props).onMouseLeave) === null || _this$props$onMouseLe === void 0 || _this$props$onMouseLe.call(_this$props2, event);
96
- if (_this.state.pinned) {
97
- return;
98
- }
99
- _this._clearTimer();
100
- _this.hoverTimer = window.setTimeout(function () {
101
- if (_this.state.show) {
102
- _this._toggle(false);
103
- }
104
- }, _this.props.hoverHideTimeOut);
105
- });
106
- _defineProperty(_this, "handlePopupInteraction", function () {
107
- _this.setState(function (_ref) {
108
- var pinned = _ref.pinned;
109
- return pinned ? null : {
110
- pinned: true
111
- };
112
- });
113
- });
114
- return _this;
115
- }
116
- _inherits(Dropdown, _Component);
117
- return _createClass(Dropdown, [{
118
- key: "toggle",
119
- value: function toggle() {
120
- var show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.state.show;
121
- this._toggle(show);
122
81
  }
123
- }, {
124
- key: "_toggle",
125
- value: function _toggle(show) {
126
- var _this2 = this;
127
- var pinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state.pinned;
128
- this.setState({
129
- show,
130
- pinned
131
- }, function () {
132
- return show ? _this2.props.onShow() : _this2.props.onHide();
133
- });
82
+ this._toggle(!show, nextPinned);
83
+ };
84
+ onChildCloseAttempt = () => {
85
+ let nextPinned = this.state.pinned;
86
+ if (this.props.hoverMode) {
87
+ nextPinned = false;
88
+ }
89
+ this._toggle(false, nextPinned);
90
+ };
91
+ hoverTimer;
92
+ onMouseEnter = event => {
93
+ if (this.props.disabled) {
94
+ return;
134
95
  }
135
- }, {
136
- key: "_clearTimer",
137
- value: function _clearTimer() {
138
- if (this.hoverTimer) {
139
- clearTimeout(this.hoverTimer);
140
- this.hoverTimer = null;
96
+ this._clearTimer();
97
+ this.props.onMouseEnter?.(event);
98
+ this.hoverTimer = window.setTimeout(() => {
99
+ if (!this.state.show) {
100
+ this._toggle(true);
141
101
  }
102
+ }, this.props.hoverShowTimeOut);
103
+ };
104
+ onMouseLeave = event => {
105
+ if (this.props.disabled) {
106
+ return;
142
107
  }
143
- }, {
144
- key: "render",
145
- value: function render() {
146
- var _this$state2 = this.state,
147
- show = _this$state2.show,
148
- pinned = _this$state2.pinned;
149
- var _this$props3 = this.props;
150
- _this$props3.initShown;
151
- _this$props3.onShow;
152
- _this$props3.onHide;
153
- _this$props3.hoverShowTimeOut;
154
- _this$props3.hoverHideTimeOut;
155
- var children = _this$props3.children,
156
- anchor = _this$props3.anchor,
157
- className = _this$props3.className,
158
- activeClassName = _this$props3.activeClassName,
159
- hoverMode = _this$props3.hoverMode,
160
- clickMode = _this$props3.clickMode,
161
- dataTest = _this$props3['data-test'];
162
- _this$props3.disabled;
163
- var restProps = _objectWithoutProperties(_this$props3, _excluded);
164
- var classes = classNames(modules_d9414203.dropdown, className, {
165
- [activeClassName !== null && activeClassName !== void 0 ? activeClassName : '']: activeClassName != null && show
166
- });
167
- var anchorElement;
168
- var active = hoverMode ? pinned : show;
169
- switch (typeof anchor) {
170
- case 'string':
171
- anchorElement = /*#__PURE__*/React.createElement(Anchor, {
172
- active: active
173
- }, anchor);
174
- break;
175
- case 'function':
176
- anchorElement = anchor({
177
- active: show,
178
- pinned
179
- });
180
- break;
181
- default:
182
- if (isArray(anchor) || typeof anchor.type === 'string') {
183
- anchorElement = anchor;
184
- } else {
185
- anchorElement = /*#__PURE__*/cloneElement(anchor, {
186
- active
187
- });
188
- }
108
+ this.props.onMouseLeave?.(event);
109
+ if (this.state.pinned) {
110
+ return;
111
+ }
112
+ this._clearTimer();
113
+ this.hoverTimer = window.setTimeout(() => {
114
+ if (this.state.show) {
115
+ this._toggle(false);
189
116
  }
190
- var childProps = {
191
- hidden: !show,
192
- onCloseAttempt: this.onChildCloseAttempt,
193
- onMouseDown: hoverMode ? this.handlePopupInteraction : undefined,
194
- onContextMenu: hoverMode ? this.handlePopupInteraction : undefined,
195
- dontCloseOnAnchorClick: true
117
+ }, this.props.hoverHideTimeOut);
118
+ };
119
+ handlePopupInteraction = () => {
120
+ this.setState(_ref => {
121
+ let {
122
+ pinned
123
+ } = _ref;
124
+ return pinned ? null : {
125
+ pinned: true
196
126
  };
197
- return /*#__PURE__*/React.createElement("div", _extends({
198
- "data-test": joinDataTestAttributes('ring-dropdown', dataTest)
199
- }, restProps, {
200
- onClick: clickMode ? this.onClick : undefined
201
- // anchorElement should be a `button` or an `a`
202
- ,
203
- role: "presentation",
204
- onMouseEnter: hoverMode ? this.onMouseEnter : undefined,
205
- onMouseLeave: hoverMode ? this.onMouseLeave : undefined,
206
- className: classes
207
- }), anchorElement, typeof children === 'function' ? children(childProps) : /*#__PURE__*/cloneElement(children, childProps));
127
+ });
128
+ };
129
+ toggle() {
130
+ let show = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !this.state.show;
131
+ this._toggle(show);
132
+ }
133
+ _toggle(show) {
134
+ let pinned = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.state.pinned;
135
+ this.setState({
136
+ show,
137
+ pinned
138
+ }, () => show ? this.props.onShow() : this.props.onHide());
139
+ }
140
+ _clearTimer() {
141
+ if (this.hoverTimer) {
142
+ clearTimeout(this.hoverTimer);
143
+ this.hoverTimer = null;
208
144
  }
209
- }]);
210
- }(Component);
211
- _defineProperty(Dropdown, "propTypes", {
212
- /**
213
- * Can be string, React element, or a function accepting an object with {active, pinned} properties and returning a React element
214
- * React element should render some interactive HTML element like `button` or `a`
215
- */
216
- anchor: PropTypes.oneOfType([PropTypes.node, PropTypes.func]).isRequired,
217
- children: PropTypes.oneOfType([PropTypes.element, PropTypes.func]).isRequired,
218
- initShown: PropTypes.bool,
219
- className: PropTypes.string,
220
- activeClassName: PropTypes.string,
221
- clickMode: PropTypes.bool,
222
- hoverMode: PropTypes.bool,
223
- hoverShowTimeOut: PropTypes.number,
224
- hoverHideTimeOut: PropTypes.number,
225
- disabled: PropTypes.bool,
226
- onShow: PropTypes.func,
227
- onHide: PropTypes.func,
228
- onMouseEnter: PropTypes.func,
229
- onMouseLeave: PropTypes.func,
230
- 'data-test': PropTypes.string
231
- });
232
- _defineProperty(Dropdown, "defaultProps", {
233
- initShown: false,
234
- clickMode: true,
235
- hoverMode: false,
236
- hoverShowTimeOut: 300,
237
- hoverHideTimeOut: 600,
238
- disabled: false,
239
- onShow: function onShow() {},
240
- onHide: function onHide() {},
241
- onMouseEnter: function onMouseEnter() {},
242
- onMouseLeave: function onMouseLeave() {}
243
- });
145
+ }
146
+ render() {
147
+ const {
148
+ show,
149
+ pinned
150
+ } = this.state;
151
+ const {
152
+ initShown,
153
+ onShow,
154
+ onHide,
155
+ hoverShowTimeOut,
156
+ hoverHideTimeOut,
157
+ children,
158
+ anchor,
159
+ className,
160
+ activeClassName,
161
+ hoverMode,
162
+ clickMode,
163
+ 'data-test': dataTest,
164
+ disabled,
165
+ ...restProps
166
+ } = this.props;
167
+ const classes = classNames(modules_d9414203.dropdown, className, {
168
+ [activeClassName !== null && activeClassName !== void 0 ? activeClassName : '']: activeClassName != null && show
169
+ });
170
+ let anchorElement;
171
+ const active = hoverMode ? pinned : show;
172
+ switch (typeof anchor) {
173
+ case 'string':
174
+ anchorElement = /*#__PURE__*/React.createElement(Anchor, {
175
+ active: active
176
+ }, anchor);
177
+ break;
178
+ case 'function':
179
+ anchorElement = anchor({
180
+ active: show,
181
+ pinned
182
+ });
183
+ break;
184
+ default:
185
+ if (isArray(anchor) || typeof anchor.type === 'string') {
186
+ anchorElement = anchor;
187
+ } else {
188
+ anchorElement = /*#__PURE__*/cloneElement(anchor, {
189
+ active
190
+ });
191
+ }
192
+ }
193
+ const childProps = {
194
+ hidden: !show,
195
+ onCloseAttempt: this.onChildCloseAttempt,
196
+ onMouseDown: hoverMode ? this.handlePopupInteraction : undefined,
197
+ onContextMenu: hoverMode ? this.handlePopupInteraction : undefined,
198
+ dontCloseOnAnchorClick: true
199
+ };
200
+ return /*#__PURE__*/React.createElement("div", _extends({
201
+ "data-test": joinDataTestAttributes('ring-dropdown', dataTest)
202
+ }, restProps, {
203
+ onClick: clickMode ? this.onClick : undefined
204
+ // anchorElement should be a `button` or an `a`
205
+ ,
206
+ role: "presentation",
207
+ onMouseEnter: hoverMode ? this.onMouseEnter : undefined,
208
+ onMouseLeave: hoverMode ? this.onMouseLeave : undefined,
209
+ className: classes
210
+ }), anchorElement, typeof children === 'function' ? children(childProps) : /*#__PURE__*/cloneElement(children, childProps));
211
+ }
212
+ }
244
213
 
245
214
  export { Anchor, Dropdown as default };
@@ -1,5 +1,4 @@
1
- import { c as _objectWithoutProperties, d as _objectSpread2, e as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.object.assign.js';
1
+ import { _ as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
3
2
  import React, { useMemo, cloneElement } from 'react';
4
3
  import PropTypes from 'prop-types';
5
4
  import List, { ActiveItemContext } from '../list/list.js';
@@ -8,15 +7,6 @@ import PopupMenu from '../popup-menu/popup-menu.js';
8
7
  import getUID from '../global/get-uid.js';
9
8
  import { A as Anchor } from '../_helpers/anchor.js';
10
9
  import { isArray } from '../global/typescript-utils.js';
11
- import 'core-js/modules/es.symbol.js';
12
- import 'core-js/modules/es.symbol.description.js';
13
- import 'core-js/modules/es.array.concat.js';
14
- import 'core-js/modules/es.array.find.js';
15
- import 'core-js/modules/es.array.find-index.js';
16
- import 'core-js/modules/es.array.includes.js';
17
- import 'core-js/modules/es.array.map.js';
18
- import 'core-js/modules/es.object.to-string.js';
19
- import 'core-js/modules/es.string.includes.js';
20
10
  import 'classnames';
21
11
  import 'react-virtualized/dist/es/List';
22
12
  import 'react-virtualized/dist/es/AutoSizer';
@@ -25,25 +15,11 @@ import 'react-virtualized/dist/es/CellMeasurer';
25
15
  import 'util-deprecate';
26
16
  import 'memoize-one';
27
17
  import '../global/data-tests.js';
28
- import 'core-js/modules/es.array.reduce.js';
29
- import 'core-js/modules/es.object.entries.js';
30
18
  import '../global/schedule-raf.js';
31
19
  import '../global/memoize.js';
32
- import 'core-js/modules/es.array.iterator.js';
33
- import 'core-js/modules/es.map.js';
34
- import 'core-js/modules/es.weak-map.js';
35
- import 'core-js/modules/web.dom-collections.iterator.js';
36
20
  import '../global/dom.js';
37
- import 'core-js/modules/es.array.filter.js';
38
- import 'core-js/modules/es.regexp.exec.js';
39
- import 'core-js/modules/es.set.js';
40
- import 'core-js/modules/es.string.split.js';
41
- import 'core-js/modules/web.dom-collections.for-each.js';
42
21
  import '../shortcuts/shortcuts.js';
43
22
  import '../shortcuts/core.js';
44
- import 'core-js/modules/es.array.slice.js';
45
- import 'core-js/modules/es.array.splice.js';
46
- import 'core-js/modules/es.string.match.js';
47
23
  import 'combokeys';
48
24
  import '../global/sniffer.js';
49
25
  import 'sniffr';
@@ -54,20 +30,15 @@ import '../link/clickableLink.js';
54
30
  import '../_helpers/link.js';
55
31
  import '../_helpers/list.js';
56
32
  import '../list/list__item.js';
57
- import 'core-js/modules/es.array.index-of.js';
58
33
  import '../avatar/avatar.js';
59
34
  import '../global/url.js';
60
- import 'core-js/modules/es.string.replace.js';
61
35
  import '../avatar/fallback-avatar.js';
62
- import 'core-js/modules/es.array.from.js';
63
- import 'core-js/modules/es.regexp.to-string.js';
64
36
  import '../checkbox/checkbox.js';
65
37
  import '@jetbrains/icons/checkmark-12px';
66
38
  import '@jetbrains/icons/remove-12px';
67
39
  import '../icon/icon.js';
68
40
  import '../icon/icon__constants.js';
69
41
  import '../_helpers/icon__svg.js';
70
- import 'core-js/modules/es.string.starts-with.js';
71
42
  import '../global/prop-types.js';
72
43
  import '../global/composeRefs.js';
73
44
  import '../list/list__custom.js';
@@ -84,58 +55,60 @@ import '../popup/popup.js';
84
55
  import 'react-dom';
85
56
  import '../tab-trap/tab-trap.js';
86
57
  import '../popup/position.js';
87
- import 'core-js/modules/es.array.sort.js';
88
58
  import '../popup/popup.consts.js';
89
59
  import '../popup/popup.target.js';
90
60
 
91
- var _excluded = ["anchor", "pinned", "active", "activeListItemId", "listId"],
92
- _excluded2 = ["id", "anchor", "ariaLabel", "data", "onSelect", "menuProps"],
93
- _excluded3 = ["pinned", "active"];
94
- var _ref = Dropdown.propTypes || {};
95
- _ref.children;
96
- var dropdownPropTypes = _objectWithoutProperties(_ref, ["children"]);
97
- var _ref2 = PopupMenu.propTypes || {},
98
- idPropType = _ref2.id,
99
- dataPropType = _ref2.data,
100
- ariaLabelPropType = _ref2.ariaLabel,
101
- onSelectPropType = _ref2.onSelect;
102
- var defaultAriaLabel = 'Dropdown menu';
103
- function DropdownAnchorWrapper(_ref3) {
104
- var anchor = _ref3.anchor,
105
- pinned = _ref3.pinned,
106
- active = _ref3.active,
107
- activeListItemId = _ref3.activeListItemId,
108
- listId = _ref3.listId,
109
- restProps = _objectWithoutProperties(_ref3, _excluded);
110
- var anchorAriaProps = useMemo(function () {
111
- return _objectSpread2(_objectSpread2(_objectSpread2({}, listId ? {
61
+ const {
62
+ children,
63
+ ...dropdownPropTypes
64
+ } = Dropdown.propTypes || {};
65
+ const {
66
+ id: idPropType,
67
+ data: dataPropType,
68
+ ariaLabel: ariaLabelPropType,
69
+ onSelect: onSelectPropType
70
+ } = PopupMenu.propTypes || {};
71
+ const defaultAriaLabel = 'Dropdown menu';
72
+ function DropdownAnchorWrapper(_ref) {
73
+ let {
74
+ anchor,
75
+ pinned,
76
+ active,
77
+ activeListItemId,
78
+ listId,
79
+ ...restProps
80
+ } = _ref;
81
+ const anchorAriaProps = useMemo(() => ({
82
+ ...(listId ? {
112
83
  'aria-haspopup': true
113
- } : {}), activeListItemId ? {
84
+ } : {}),
85
+ ...(activeListItemId ? {
114
86
  'aria-activedescendant': activeListItemId,
115
87
  'aria-owns': listId
116
- } : {}), active ? {
88
+ } : {}),
89
+ ...(active ? {
117
90
  'aria-expanded': true
118
- } : {});
119
- }, [active, activeListItemId, listId]);
120
- var anchorProps = useMemo(function () {
121
- return _objectSpread2(_objectSpread2({
122
- active,
123
- pinned
124
- }, restProps), anchorAriaProps);
125
- }, [pinned, active, restProps, anchorAriaProps]);
126
- var anchorComponentProps = useMemo(function () {
127
- return _objectSpread2(_objectSpread2({}, anchorProps), {}, {
128
- pinned: "".concat(anchorProps.pinned)
129
- });
130
- }, [anchorProps]);
91
+ } : {})
92
+ }), [active, activeListItemId, listId]);
93
+ const anchorProps = useMemo(() => ({
94
+ active,
95
+ pinned,
96
+ ...restProps,
97
+ ...anchorAriaProps
98
+ }), [pinned, active, restProps, anchorAriaProps]);
99
+ const anchorComponentProps = useMemo(() => ({
100
+ ...anchorProps,
101
+ pinned: `${anchorProps.pinned}`
102
+ }), [anchorProps]);
131
103
  if (typeof anchor === 'string') {
132
104
  return /*#__PURE__*/React.createElement(Anchor, anchorComponentProps, anchor);
133
105
  }
134
106
  if (typeof anchor === 'function') {
135
- return anchor(_objectSpread2({
107
+ return anchor({
136
108
  active,
137
- pinned
138
- }, restProps), anchorAriaProps);
109
+ pinned,
110
+ ...restProps
111
+ }, anchorAriaProps);
139
112
  }
140
113
  if (!isArray(anchor)) {
141
114
  return /*#__PURE__*/cloneElement(anchor, typeof anchor.type === 'string' ? anchorAriaProps : anchorComponentProps);
@@ -149,31 +122,31 @@ DropdownAnchorWrapper.propTypes = {
149
122
  activeListItemId: PropTypes.string,
150
123
  listId: PropTypes.string
151
124
  };
152
- var DropdownMenu = /*#__PURE__*/React.forwardRef(function DropdownMenu(_ref4, forwardedRef) {
153
- var id = _ref4.id,
154
- _anchor = _ref4.anchor,
155
- ariaLabel = _ref4.ariaLabel,
156
- data = _ref4.data,
157
- onSelect = _ref4.onSelect,
158
- menuProps = _ref4.menuProps,
159
- restDropdownProps = _objectWithoutProperties(_ref4, _excluded2);
160
- var listId = useMemo(function () {
161
- return id || getUID('dropdown-menu-list');
162
- }, [id]);
125
+ const DropdownMenu = /*#__PURE__*/React.forwardRef(function DropdownMenu(_ref2, forwardedRef) {
126
+ let {
127
+ id,
128
+ anchor,
129
+ ariaLabel,
130
+ data,
131
+ onSelect,
132
+ menuProps,
133
+ ...restDropdownProps
134
+ } = _ref2;
135
+ const listId = useMemo(() => id || getUID('dropdown-menu-list'), [id]);
163
136
  return /*#__PURE__*/React.createElement(ActiveItemContext.Provider, null, /*#__PURE__*/React.createElement(Dropdown, _extends({
164
- anchor: function anchor(_ref5) {
165
- var pinned = _ref5.pinned,
166
- active = _ref5.active,
167
- restAnchorProps = _objectWithoutProperties(_ref5, _excluded3);
168
- return /*#__PURE__*/React.createElement(ActiveItemContext.ValueContext.Consumer, null, function (activeItemId) {
169
- return /*#__PURE__*/React.createElement(DropdownAnchorWrapper, _extends({
170
- anchor: _anchor,
171
- pinned: pinned,
172
- active: active,
173
- activeListItemId: activeItemId,
174
- listId: listId
175
- }, restAnchorProps));
176
- });
137
+ anchor: _ref3 => {
138
+ let {
139
+ pinned,
140
+ active,
141
+ ...restAnchorProps
142
+ } = _ref3;
143
+ return /*#__PURE__*/React.createElement(ActiveItemContext.ValueContext.Consumer, null, activeItemId => /*#__PURE__*/React.createElement(DropdownAnchorWrapper, _extends({
144
+ anchor: anchor,
145
+ pinned: pinned,
146
+ active: active,
147
+ activeListItemId: activeItemId,
148
+ listId: listId
149
+ }, restAnchorProps)));
177
150
  }
178
151
  }, restDropdownProps), /*#__PURE__*/React.createElement(PopupMenu, _extends({
179
152
  ref: forwardedRef,
@@ -185,13 +158,14 @@ var DropdownMenu = /*#__PURE__*/React.forwardRef(function DropdownMenu(_ref4, fo
185
158
  onSelect: onSelect
186
159
  }, menuProps))));
187
160
  });
188
- DropdownMenu.propTypes = _objectSpread2({
161
+ DropdownMenu.propTypes = {
189
162
  id: idPropType,
190
163
  data: dataPropType,
191
164
  ariaLabel: ariaLabelPropType,
192
165
  onSelect: onSelectPropType,
193
- menuProps: PropTypes.object
194
- }, dropdownPropTypes);
166
+ menuProps: PropTypes.object,
167
+ ...dropdownPropTypes
168
+ };
195
169
  var DropdownMenu$1 = Object.assign(DropdownMenu, {
196
170
  ListProps: List.ListProps
197
171
  });