@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,6 +1,3 @@
1
- import { _ as _defineProperty, a as _inherits, b as _createClass, f as _classCallCheck, g as _callSuper } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import 'core-js/modules/es.array.concat.js';
3
- import 'core-js/modules/es.object.values.js';
4
1
  import React, { PureComponent } from 'react';
5
2
  import classNames from 'classnames';
6
3
  import PropTypes from 'prop-types';
@@ -16,24 +13,10 @@ import { Button } from '../button/button.js';
16
13
  import { T as Theme, a as ThemeProvider } from '../_helpers/theme.js';
17
14
  export { default as Container } from './container.js';
18
15
  import { Color } from '../icon/icon__constants.js';
16
+ import '../_helpers/_rollupPluginBabelHelpers.js';
19
17
  import 'util-deprecate';
20
18
  import '../_helpers/icon__svg.js';
21
- import 'core-js/modules/es.regexp.exec.js';
22
- import 'core-js/modules/es.string.replace.js';
23
- import 'core-js/modules/es.string.starts-with.js';
24
19
  import '../global/memoize.js';
25
- import 'core-js/modules/es.array.iterator.js';
26
- import 'core-js/modules/es.map.js';
27
- import 'core-js/modules/es.object.to-string.js';
28
- import 'core-js/modules/es.weak-map.js';
29
- import 'core-js/modules/web.dom-collections.iterator.js';
30
- import 'core-js/modules/es.array.reduce.js';
31
- import 'core-js/modules/es.object.entries.js';
32
- import 'core-js/modules/es.array.filter.js';
33
- import 'core-js/modules/es.object.assign.js';
34
- import 'core-js/modules/es.set.js';
35
- import 'core-js/modules/es.string.split.js';
36
- import 'core-js/modules/web.dom-collections.for-each.js';
37
20
  import '@jetbrains/icons/chevron-10px';
38
21
  import '../link/clickableLink.js';
39
22
  import '../global/controls-height.js';
@@ -41,29 +24,20 @@ import '../_helpers/button__classes.js';
41
24
  import 'react-dom';
42
25
  import '../popup/popup.target.js';
43
26
  import '../popup/popup.js';
44
- import 'core-js/modules/es.regexp.to-string.js';
45
27
  import '../global/get-uid.js';
46
28
  import '../global/schedule-raf.js';
47
29
  import '../shortcuts/shortcuts.js';
48
- import 'core-js/modules/es.array.map.js';
49
30
  import '../shortcuts/core.js';
50
- import 'core-js/modules/es.array.find-index.js';
51
- import 'core-js/modules/es.array.includes.js';
52
- import 'core-js/modules/es.array.slice.js';
53
- import 'core-js/modules/es.array.splice.js';
54
- import 'core-js/modules/es.string.includes.js';
55
- import 'core-js/modules/es.string.match.js';
56
31
  import 'combokeys';
57
32
  import '../global/sniffer.js';
58
33
  import 'sniffr';
59
34
  import '../tab-trap/tab-trap.js';
60
35
  import '../popup/position.js';
61
- import 'core-js/modules/es.array.sort.js';
62
36
  import '../popup/popup.consts.js';
63
37
 
64
38
  var modules_e02b3280 = {"link":"link_rui_20da","animation-duration":"300ms","animation-easing":"ease-out","light":"light_rui_2ac4","alert":"alert_rui_25ab","alertInline":"alertInline_rui_25ab","error":"error_rui_25ab","icon":"icon_rui_25ab","caption":"caption_rui_25ab","withCloseButton":"withCloseButton_rui_25ab","badge":"badge_rui_25ab","loader":"loader_rui_25ab","close":"close_rui_25ab","animationOpen":"animationOpen_rui_25ab","show":"show_rui_25ab","animationClosing":"animationClosing_rui_25ab","animationShaking":"animationShaking_rui_25ab","shaking":"shaking_rui_25ab"};
65
39
 
66
- var ANIMATION_TIME = 500;
40
+ const ANIMATION_TIME = 500;
67
41
  /**
68
42
  * @name Alert
69
43
  */
@@ -83,7 +57,7 @@ var AlertType;
83
57
  * Lookup table of alert type to icon modifier.
84
58
  * @type {Object.<AlertType, string>}
85
59
  */
86
- var TypeToIcon = {
60
+ const TypeToIcon = {
87
61
  [AlertType.ERROR]: exceptionIcon,
88
62
  [AlertType.SUCCESS]: checkmarkIcon,
89
63
  [AlertType.WARNING]: warningIcon
@@ -92,7 +66,7 @@ var TypeToIcon = {
92
66
  * Lookup table of alert type to icon color.
93
67
  * @type {Object.<AlertType, Icon.Color>}
94
68
  */
95
- var TypeToIconColor = {
69
+ const TypeToIconColor = {
96
70
  [AlertType.ERROR]: Color.RED,
97
71
  [AlertType.SUCCESS]: Color.GREEN,
98
72
  [AlertType.WARNING]: Color.WHITE
@@ -105,188 +79,162 @@ var TypeToIconColor = {
105
79
  /**
106
80
  * **Alert** is a component for displaying contextual notifications. If you want to display a stack of notifications, use **Alerts** instead.
107
81
  */
108
- var Alert = /*#__PURE__*/function (_PureComponent) {
109
- function Alert() {
110
- var _this;
111
- _classCallCheck(this, Alert);
112
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
113
- args[_key] = arguments[_key];
114
- }
115
- _this = _callSuper(this, Alert, [].concat(args));
116
- _defineProperty(_this, "state", {
117
- height: null
118
- });
119
- _defineProperty(_this, "node", void 0);
120
- _defineProperty(_this, "hideTimeout", void 0);
121
- _defineProperty(_this, "closeRequest", function (event) {
122
- _this.startCloseAnimation();
123
- return _this.props.onCloseRequest(event);
124
- });
125
- _defineProperty(_this, "startCloseAnimation", function () {
126
- var height = getRect(_this.node).height;
127
- _this.setState({
128
- height
129
- });
130
- });
82
+ class Alert extends PureComponent {
83
+ static propTypes = {
84
+ timeout: PropTypes.number,
131
85
  /**
132
- * @param {SyntheticEvent} evt
133
- * @private
86
+ * Fires when alert starts closing if timeout is out or user clicks "Close" button
134
87
  */
135
- _defineProperty(_this, "_handleCaptionsLinksClick", function (evt) {
136
- if (evt.target instanceof Element && evt.target.matches('a')) {
137
- _this.closeRequest(evt);
138
- }
139
- });
140
- _defineProperty(_this, "storeAlertRef", function (node) {
141
- _this.node = node;
142
- });
143
- return _this;
144
- }
145
- _inherits(Alert, _PureComponent);
146
- return _createClass(Alert, [{
147
- key: "componentDidMount",
148
- value: function componentDidMount() {
149
- if (this.props.timeout > 0) {
150
- this.hideTimeout = window.setTimeout(this.closeRequest, this.props.timeout);
151
- }
152
- }
153
- }, {
154
- key: "componentDidUpdate",
155
- value: function componentDidUpdate() {
156
- if (this.props.isClosing) {
157
- this._close();
158
- }
159
- }
160
- }, {
161
- key: "componentWillUnmount",
162
- value: function componentWillUnmount() {
163
- clearTimeout(this.hideTimeout);
164
- }
165
- }, {
166
- key: "_close",
167
- value: function _close() {
168
- var _this2 = this;
169
- this.startCloseAnimation();
170
- setTimeout(function () {
171
- _this2.props.onClose();
172
- }, ANIMATION_TIME);
173
- }
174
- }, {
175
- key: "_getCaption",
176
- value:
88
+ onCloseRequest: PropTypes.func,
89
+ onClose: PropTypes.func,
90
+ isShaking: PropTypes.bool,
91
+ isClosing: PropTypes.bool,
177
92
  /**
178
- * @private
93
+ * Whether an alert is rendered inside an **Alerts** container
94
+ * or standalone.
179
95
  */
180
- function _getCaption() {
181
- return /*#__PURE__*/React.createElement("span", {
182
- className: classNames(modules_e02b3280.caption, this.props.captionClassName, {
183
- [modules_e02b3280.withCloseButton]: this.props.closeable
184
- }),
185
- onClick: this._handleCaptionsLinksClick
186
- // We only process clicks on `a` elements, see above
187
- ,
188
- role: "presentation"
189
- }, this.props.children);
96
+ inline: PropTypes.bool,
97
+ showWithAnimation: PropTypes.bool,
98
+ closeable: PropTypes.bool,
99
+ type: PropTypes.oneOf(Object.values(AlertType)),
100
+ children: PropTypes.node,
101
+ className: PropTypes.string,
102
+ captionClassName: PropTypes.string,
103
+ closeButtonClassName: PropTypes.string,
104
+ 'data-test': PropTypes.string
105
+ };
106
+ /** @override */
107
+ static defaultProps = {
108
+ theme: Theme.DARK,
109
+ closeable: true,
110
+ showWithAnimation: true,
111
+ type: AlertType.MESSAGE,
112
+ inline: true,
113
+ isClosing: false,
114
+ isShaking: false,
115
+ timeout: 0,
116
+ onClose: () => {},
117
+ onCloseRequest: () => {}
118
+ };
119
+ state = {
120
+ height: null
121
+ };
122
+ componentDidMount() {
123
+ if (this.props.timeout > 0) {
124
+ this.hideTimeout = window.setTimeout(this.closeRequest, this.props.timeout);
190
125
  }
191
- /**
192
- * @private
193
- * @return {XML|string}
194
- */
195
- }, {
196
- key: "_getIcon",
197
- value: function _getIcon() {
198
- var glyph = TypeToIcon[this.props.type];
199
- if (glyph) {
200
- return /*#__PURE__*/React.createElement(Icon, {
201
- glyph: glyph,
202
- className: modules_e02b3280.icon,
203
- color: TypeToIconColor[this.props.type] || Color.DEFAULT
204
- });
205
- } else if (this.props.type === AlertType.LOADING) {
206
- return /*#__PURE__*/React.createElement(LoaderInline, {
207
- className: modules_e02b3280.loader
208
- });
209
- }
210
- return '';
126
+ }
127
+ componentDidUpdate() {
128
+ if (this.props.isClosing) {
129
+ this._close();
211
130
  }
212
- }, {
213
- key: "render",
214
- value: function render() {
215
- var _this$props = this.props,
216
- type = _this$props.type,
217
- inline = _this$props.inline,
218
- isClosing = _this$props.isClosing,
219
- isShaking = _this$props.isShaking,
220
- closeButtonClassName = _this$props.closeButtonClassName,
221
- showWithAnimation = _this$props.showWithAnimation,
222
- className = _this$props.className,
223
- dataTest = _this$props['data-test'],
224
- theme = _this$props.theme;
225
- var classes = classNames(className, {
226
- [modules_e02b3280.alert]: true,
227
- [modules_e02b3280.animationOpen]: showWithAnimation,
228
- [modules_e02b3280.error]: type === 'error',
229
- [modules_e02b3280.alertInline]: inline,
230
- [modules_e02b3280.animationClosing]: isClosing,
231
- [modules_e02b3280.animationShaking]: isShaking
232
- });
233
- var height = this.state.height;
234
- var style = height ? {
235
- marginBottom: -height
236
- } : undefined;
237
- return /*#__PURE__*/React.createElement(ThemeProvider, {
238
- theme: theme,
239
- className: classes,
240
- "data-test": joinDataTestAttributes('alert', dataTest),
241
- "data-test-type": type,
242
- style: style,
243
- ref: this.storeAlertRef
244
- }, this._getIcon(), this._getCaption(), this.props.closeable ? /*#__PURE__*/React.createElement(Button, {
245
- icon: closeIcon,
246
- className: classNames(modules_e02b3280.close, closeButtonClassName),
247
- "data-test": "alert-close",
248
- "aria-label": "close alert",
249
- onClick: this.closeRequest
250
- }) : '');
131
+ }
132
+ componentWillUnmount() {
133
+ clearTimeout(this.hideTimeout);
134
+ }
135
+ node;
136
+ hideTimeout;
137
+ static Type = AlertType;
138
+ closeRequest = event => {
139
+ this.startCloseAnimation();
140
+ return this.props.onCloseRequest(event);
141
+ };
142
+ startCloseAnimation = () => {
143
+ const height = getRect(this.node).height;
144
+ this.setState({
145
+ height
146
+ });
147
+ };
148
+ _close() {
149
+ this.startCloseAnimation();
150
+ setTimeout(() => {
151
+ this.props.onClose();
152
+ }, ANIMATION_TIME);
153
+ }
154
+ /**
155
+ * @param {SyntheticEvent} evt
156
+ * @private
157
+ */
158
+ _handleCaptionsLinksClick = evt => {
159
+ if (evt.target instanceof Element && evt.target.matches('a')) {
160
+ this.closeRequest(evt);
251
161
  }
252
- }]);
253
- }(PureComponent);
254
- _defineProperty(Alert, "propTypes", {
255
- timeout: PropTypes.number,
162
+ };
256
163
  /**
257
- * Fires when alert starts closing if timeout is out or user clicks "Close" button
164
+ * @private
258
165
  */
259
- onCloseRequest: PropTypes.func,
260
- onClose: PropTypes.func,
261
- isShaking: PropTypes.bool,
262
- isClosing: PropTypes.bool,
166
+ _getCaption() {
167
+ return /*#__PURE__*/React.createElement("span", {
168
+ className: classNames(modules_e02b3280.caption, this.props.captionClassName, {
169
+ [modules_e02b3280.withCloseButton]: this.props.closeable
170
+ }),
171
+ onClick: this._handleCaptionsLinksClick
172
+ // We only process clicks on `a` elements, see above
173
+ ,
174
+ role: "presentation"
175
+ }, this.props.children);
176
+ }
263
177
  /**
264
- * Whether an alert is rendered inside an **Alerts** container
265
- * or standalone.
178
+ * @private
179
+ * @return {XML|string}
266
180
  */
267
- inline: PropTypes.bool,
268
- showWithAnimation: PropTypes.bool,
269
- closeable: PropTypes.bool,
270
- type: PropTypes.oneOf(Object.values(AlertType)),
271
- children: PropTypes.node,
272
- className: PropTypes.string,
273
- captionClassName: PropTypes.string,
274
- closeButtonClassName: PropTypes.string,
275
- 'data-test': PropTypes.string
276
- });
277
- /** @override */
278
- _defineProperty(Alert, "defaultProps", {
279
- theme: Theme.DARK,
280
- closeable: true,
281
- showWithAnimation: true,
282
- type: AlertType.MESSAGE,
283
- inline: true,
284
- isClosing: false,
285
- isShaking: false,
286
- timeout: 0,
287
- onClose: function onClose() {},
288
- onCloseRequest: function onCloseRequest() {}
289
- });
290
- _defineProperty(Alert, "Type", AlertType);
181
+ _getIcon() {
182
+ const glyph = TypeToIcon[this.props.type];
183
+ if (glyph) {
184
+ return /*#__PURE__*/React.createElement(Icon, {
185
+ glyph: glyph,
186
+ className: modules_e02b3280.icon,
187
+ color: TypeToIconColor[this.props.type] || Color.DEFAULT
188
+ });
189
+ } else if (this.props.type === AlertType.LOADING) {
190
+ return /*#__PURE__*/React.createElement(LoaderInline, {
191
+ className: modules_e02b3280.loader
192
+ });
193
+ }
194
+ return '';
195
+ }
196
+ storeAlertRef = node => {
197
+ this.node = node;
198
+ };
199
+ render() {
200
+ const {
201
+ type,
202
+ inline,
203
+ isClosing,
204
+ isShaking,
205
+ closeButtonClassName,
206
+ showWithAnimation,
207
+ className,
208
+ 'data-test': dataTest,
209
+ theme
210
+ } = this.props;
211
+ const classes = classNames(className, {
212
+ [modules_e02b3280.alert]: true,
213
+ [modules_e02b3280.animationOpen]: showWithAnimation,
214
+ [modules_e02b3280.error]: type === 'error',
215
+ [modules_e02b3280.alertInline]: inline,
216
+ [modules_e02b3280.animationClosing]: isClosing,
217
+ [modules_e02b3280.animationShaking]: isShaking
218
+ });
219
+ const height = this.state.height;
220
+ const style = height ? {
221
+ marginBottom: -height
222
+ } : undefined;
223
+ return /*#__PURE__*/React.createElement(ThemeProvider, {
224
+ theme: theme,
225
+ className: classes,
226
+ "data-test": joinDataTestAttributes('alert', dataTest),
227
+ "data-test-type": type,
228
+ style: style,
229
+ ref: this.storeAlertRef
230
+ }, this._getIcon(), this._getCaption(), this.props.closeable ? /*#__PURE__*/React.createElement(Button, {
231
+ icon: closeIcon,
232
+ className: classNames(modules_e02b3280.close, closeButtonClassName),
233
+ "data-test": "alert-close",
234
+ "aria-label": "close alert",
235
+ onClick: this.closeRequest
236
+ }) : '');
237
+ }
238
+ }
291
239
 
292
240
  export { ANIMATION_TIME, AlertType, Alert as default };
@@ -1,50 +1,41 @@
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.map.js';
3
- import React, { Children, isValidElement, cloneElement, PureComponent } from 'react';
1
+ import { _ as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import React, { PureComponent, Children, isValidElement, cloneElement } from 'react';
4
3
  import { createPortal } from 'react-dom';
5
4
  import classNames from 'classnames';
6
5
  import PropTypes from 'prop-types';
7
6
 
8
7
  var modules_fc8df42d = {"light":"light_rui_2ac4","alertContainer":"alertContainer_rui_971c","alertInContainer":"alertInContainer_rui_971c alert_rui_25ab"};
9
8
 
10
- var _excluded = ["children", "className"];
11
- var Alerts = /*#__PURE__*/function (_PureComponent) {
12
- function Alerts() {
13
- _classCallCheck(this, Alerts);
14
- return _callSuper(this, Alerts, arguments);
15
- }
16
- _inherits(Alerts, _PureComponent);
17
- return _createClass(Alerts, [{
18
- key: "render",
19
- value: function render() {
20
- var _this$props = this.props,
21
- children = _this$props.children,
22
- className = _this$props.className,
23
- restProps = _objectWithoutProperties(_this$props, _excluded);
24
- var classes = classNames(modules_fc8df42d.alertContainer, className);
25
- var show = Children.count(children) > 0;
26
- if (!show) {
27
- return null;
28
- }
29
- return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement("div", _extends({
30
- "data-test": "alert-container",
31
- className: classes,
32
- "aria-live": "polite"
33
- }, restProps), Children.map(children, function (child) {
34
- if (! /*#__PURE__*/isValidElement(child)) {
35
- return child;
36
- }
37
- var alertClassNames = classNames(modules_fc8df42d.alertInContainer, child.props.className);
38
- return /*#__PURE__*/cloneElement(child, {
39
- className: alertClassNames
40
- });
41
- })), document.body);
9
+ class Alerts extends PureComponent {
10
+ static propTypes = {
11
+ children: PropTypes.node,
12
+ className: PropTypes.string
13
+ };
14
+ render() {
15
+ const {
16
+ children,
17
+ className,
18
+ ...restProps
19
+ } = this.props;
20
+ const classes = classNames(modules_fc8df42d.alertContainer, className);
21
+ const show = Children.count(children) > 0;
22
+ if (!show) {
23
+ return null;
42
24
  }
43
- }]);
44
- }(PureComponent);
45
- _defineProperty(Alerts, "propTypes", {
46
- children: PropTypes.node,
47
- className: PropTypes.string
48
- });
25
+ return /*#__PURE__*/createPortal( /*#__PURE__*/React.createElement("div", _extends({
26
+ "data-test": "alert-container",
27
+ className: classes,
28
+ "aria-live": "polite"
29
+ }, restProps), Children.map(children, child => {
30
+ if (! /*#__PURE__*/isValidElement(child)) {
31
+ return child;
32
+ }
33
+ const alertClassNames = classNames(modules_fc8df42d.alertInContainer, child.props.className);
34
+ return /*#__PURE__*/cloneElement(child, {
35
+ className: alertClassNames
36
+ });
37
+ })), document.body);
38
+ }
39
+ }
49
40
 
50
41
  export { Alerts as default };