@jetbrains/ring-ui-built 6.0.32 → 6.0.34

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 (226) 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 +176 -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.d.ts +1 -2
  124. package/components/http/http.js +345 -203
  125. package/components/http/http.mock.d.ts +1 -5
  126. package/components/http/http.mock.js +101 -49
  127. package/components/hub-source/hub-source.js +190 -83
  128. package/components/hub-source/hub-source__user.js +44 -11
  129. package/components/hub-source/hub-source__users-groups.js +65 -37
  130. package/components/i18n/i18n-context.js +10 -7
  131. package/components/i18n/i18n.js +10 -7
  132. package/components/icon/icon.js +93 -76
  133. package/components/icon/icon__svg.js +8 -0
  134. package/components/icon/index.js +8 -0
  135. package/components/input/input.js +13 -0
  136. package/components/island/adaptive-island-hoc.js +43 -30
  137. package/components/island/content.js +132 -115
  138. package/components/island/header.js +70 -57
  139. package/components/island/island.js +40 -28
  140. package/components/island-legacy/content-legacy.js +25 -17
  141. package/components/island-legacy/header-legacy.js +27 -19
  142. package/components/island-legacy/island-legacy.js +25 -17
  143. package/components/link/clickableLink.js +59 -44
  144. package/components/link/link.js +68 -57
  145. package/components/list/consts.js +2 -2
  146. package/components/list/list.js +698 -611
  147. package/components/list/list__custom.js +62 -44
  148. package/components/list/list__hint.js +19 -10
  149. package/components/list/list__item.js +174 -133
  150. package/components/list/list__link.js +50 -37
  151. package/components/list/list__separator.js +24 -14
  152. package/components/list/list__title.js +32 -22
  153. package/components/list/list__users-groups-source.js +126 -54
  154. package/components/loader/loader.js +74 -43
  155. package/components/loader/loader__core.js +263 -198
  156. package/components/loader-inline/loader-inline.js +35 -23
  157. package/components/loader-screen/loader-screen.js +46 -25
  158. package/components/login-dialog/login-dialog.js +158 -111
  159. package/components/login-dialog/service.js +34 -8
  160. package/components/markdown/markdown.js +23 -15
  161. package/components/message/message.js +203 -161
  162. package/components/old-browsers-message/old-browsers-message.js +18 -11
  163. package/components/old-browsers-message/old-browsers-message__stop.js +7 -0
  164. package/components/old-browsers-message/white-list.js +17 -9
  165. package/components/pager/pager.js +271 -212
  166. package/components/panel/panel.js +25 -17
  167. package/components/permissions/permissions.js +172 -127
  168. package/components/permissions/permissions__cache.js +224 -194
  169. package/components/popup/popup.consts.js +1 -1
  170. package/components/popup/popup.js +343 -284
  171. package/components/popup/popup.target.js +8 -9
  172. package/components/popup/position.js +106 -96
  173. package/components/popup-menu/popup-menu.js +81 -44
  174. package/components/progress-bar/progress-bar.js +104 -87
  175. package/components/query-assist/query-assist.js +916 -838
  176. package/components/query-assist/query-assist__suggestions.js +30 -1
  177. package/components/radio/radio.js +34 -19
  178. package/components/radio/radio__item.js +69 -52
  179. package/components/select/select.js +957 -852
  180. package/components/select/select__filter.js +30 -0
  181. package/components/select/select__popup.js +487 -373
  182. package/components/shortcuts/core.js +217 -166
  183. package/components/shortcuts/shortcut-title.js +11 -6
  184. package/components/shortcuts/shortcuts-hoc.js +45 -19
  185. package/components/shortcuts/shortcuts.js +75 -50
  186. package/components/slider/slider.js +122 -99
  187. package/components/slider/slider.utils.js +24 -14
  188. package/components/storage/storage.js +33 -4
  189. package/components/storage/storage__fallback.js +224 -149
  190. package/components/storage/storage__local.js +153 -90
  191. package/components/tab-trap/tab-trap.js +153 -122
  192. package/components/table/cell.js +26 -14
  193. package/components/table/disable-hover-hoc.js +51 -33
  194. package/components/table/header-cell.js +89 -64
  195. package/components/table/header.js +132 -104
  196. package/components/table/multitable.js +125 -107
  197. package/components/table/row-with-focus-sensor.js +69 -25
  198. package/components/table/row.js +216 -175
  199. package/components/table/selection-adapter.js +3 -1
  200. package/components/table/selection-shortcuts-hoc.js +181 -180
  201. package/components/table/selection.js +226 -156
  202. package/components/table/smart-table.js +88 -50
  203. package/components/table/table.js +358 -289
  204. package/components/tabs/collapsible-more.js +79 -46
  205. package/components/tabs/collapsible-tab.js +38 -31
  206. package/components/tabs/collapsible-tabs.js +153 -88
  207. package/components/tabs/custom-item.js +2 -4
  208. package/components/tabs/dumb-tabs.js +117 -74
  209. package/components/tabs/smart-tabs.js +69 -29
  210. package/components/tabs/tab-link.js +5 -1
  211. package/components/tabs/tab.js +31 -19
  212. package/components/tabs/tabs.js +31 -0
  213. package/components/tag/tag.js +173 -133
  214. package/components/tags-input/tags-input.js +427 -329
  215. package/components/tags-list/tags-list.js +78 -57
  216. package/components/text/text.js +39 -28
  217. package/components/toggle/toggle.js +70 -56
  218. package/components/tooltip/tooltip.js +190 -146
  219. package/components/user-agreement/service.js +371 -228
  220. package/components/user-agreement/toolbox.eula.js +1 -160
  221. package/components/user-agreement/user-agreement.js +120 -85
  222. package/components/user-card/card.js +29 -0
  223. package/components/user-card/smart-user-card-tooltip.js +111 -51
  224. package/components/user-card/tooltip.js +84 -47
  225. package/components/user-card/user-card.js +29 -0
  226. package/package.json +1 -2
@@ -1,214 +1,245 @@
1
- import { _ as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React, { Component, cloneElement } from 'react';
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';
3
4
  import PropTypes from 'prop-types';
4
5
  import classNames from 'classnames';
5
6
  import joinDataTestAttributes from '../global/data-tests.js';
6
7
  import { isArray } from '../global/typescript-utils.js';
7
8
  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';
8
12
  import '@jetbrains/icons/chevron-10px';
9
13
  import '../icon/icon.js';
10
14
  import 'util-deprecate';
11
15
  import '../icon/icon__constants.js';
12
16
  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';
13
20
  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';
14
25
  import '../button/button.js';
15
26
  import '../link/clickableLink.js';
16
27
  import '../global/controls-height.js';
17
28
  import '../_helpers/button__classes.js';
18
29
 
30
+ var _excluded = ["initShown", "onShow", "onHide", "hoverShowTimeOut", "hoverHideTimeOut", "children", "anchor", "className", "activeClassName", "hoverMode", "clickMode", "data-test", "disabled"];
19
31
  /**
20
32
  * @name Dropdown
21
33
  */
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;
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];
63
40
  }
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;
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;
77
65
  }
78
- } else {
66
+ }
67
+ _this._toggle(!show, nextPinned);
68
+ });
69
+ _defineProperty(_this, "onChildCloseAttempt", function () {
70
+ var nextPinned = _this.state.pinned;
71
+ if (_this.props.hoverMode) {
79
72
  nextPinned = false;
80
73
  }
81
- }
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;
95
- }
96
- this._clearTimer();
97
- this.props.onMouseEnter?.(event);
98
- this.hoverTimer = window.setTimeout(() => {
99
- if (!this.state.show) {
100
- this._toggle(true);
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;
101
81
  }
102
- }, this.props.hoverShowTimeOut);
103
- };
104
- onMouseLeave = event => {
105
- if (this.props.disabled) {
106
- return;
107
- }
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);
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;
116
94
  }
117
- }, this.props.hoverHideTimeOut);
118
- };
119
- handlePopupInteraction = () => {
120
- this.setState(_ref => {
121
- let {
122
- pinned
123
- } = _ref;
124
- return pinned ? null : {
125
- pinned: true
126
- };
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);
127
105
  });
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());
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;
139
115
  }
140
- _clearTimer() {
141
- if (this.hoverTimer) {
142
- clearTimeout(this.hoverTimer);
143
- this.hoverTimer = null;
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);
144
122
  }
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
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
+ });
134
+ }
135
+ }, {
136
+ key: "_clearTimer",
137
+ value: function _clearTimer() {
138
+ if (this.hoverTimer) {
139
+ clearTimeout(this.hoverTimer);
140
+ this.hoverTimer = null;
141
+ }
142
+ }
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
190
179
  });
191
- }
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
+ }
189
+ }
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
196
+ };
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));
192
208
  }
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
- }
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
+ });
213
244
 
214
245
  export { Anchor, Dropdown as default };