@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,7 +1,4 @@
1
- import { _ as _defineProperty, j as _slicedToArray, l as _createForOfIteratorHelper, a as _inherits, b as _createClass, c as _objectWithoutProperties, e as _extends, d as _objectSpread2, 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.array.map.js';
4
- import 'core-js/modules/es.object.values.js';
1
+ import { _ as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
5
2
  import React, { PureComponent } from 'react';
6
3
  import PropTypes from 'prop-types';
7
4
  import classNames from 'classnames';
@@ -26,40 +23,18 @@ import DatePopup from './date-popup.js';
26
23
  import { dateType } from './consts.js';
27
24
  import { m as modules_0c7b7d96 } from '../_helpers/date-picker.js';
28
25
  import formats from './formats.js';
29
- import 'core-js/modules/es.array.iterator.js';
30
- import 'core-js/modules/es.map.js';
31
- import 'core-js/modules/es.object.to-string.js';
32
- import 'core-js/modules/es.weak-map.js';
33
- import 'core-js/modules/web.dom-collections.iterator.js';
34
- import 'core-js/modules/es.object.entries.js';
35
- import 'core-js/modules/es.regexp.exec.js';
36
- import 'core-js/modules/es.regexp.to-string.js';
37
- import 'core-js/modules/es.string.replace.js';
38
- import 'core-js/modules/web.dom-collections.for-each.js';
39
26
  import 'react-dom';
40
27
  import '../global/get-uid.js';
41
28
  import '../global/schedule-raf.js';
42
29
  import '../global/dom.js';
43
- import 'core-js/modules/es.array.filter.js';
44
- import 'core-js/modules/es.object.assign.js';
45
- import 'core-js/modules/es.set.js';
46
- import 'core-js/modules/es.string.split.js';
47
30
  import '../shortcuts/shortcuts.js';
48
31
  import '../shortcuts/core.js';
49
- import 'core-js/modules/es.array.find-index.js';
50
- import 'core-js/modules/es.array.includes.js';
51
- import 'core-js/modules/es.array.slice.js';
52
- import 'core-js/modules/es.array.splice.js';
53
- import 'core-js/modules/es.string.includes.js';
54
- import 'core-js/modules/es.string.match.js';
55
32
  import 'combokeys';
56
33
  import '../global/sniffer.js';
57
34
  import 'sniffr';
58
35
  import '../global/data-tests.js';
59
- import 'core-js/modules/es.array.reduce.js';
60
36
  import '../tab-trap/tab-trap.js';
61
37
  import '../popup/position.js';
62
- import 'core-js/modules/es.array.sort.js';
63
38
  import '../popup/popup.consts.js';
64
39
  import '../popup/popup.target.js';
65
40
  import '../global/typescript-utils.js';
@@ -68,7 +43,6 @@ import '@jetbrains/icons/chevron-10px';
68
43
  import 'util-deprecate';
69
44
  import '../icon/icon__constants.js';
70
45
  import '../_helpers/icon__svg.js';
71
- import 'core-js/modules/es.string.starts-with.js';
72
46
  import '../link/clickableLink.js';
73
47
  import '../global/controls-height.js';
74
48
  import '../_helpers/button__classes.js';
@@ -83,7 +57,6 @@ import 'date-fns/isBefore';
83
57
  import 'date-fns/startOfDay';
84
58
  import 'date-fns';
85
59
  import './date-input.js';
86
- import 'core-js/modules/es.array.index-of.js';
87
60
  import 'date-fns/add';
88
61
  import './months.js';
89
62
  import 'date-fns/addMonths';
@@ -112,17 +85,16 @@ import 'date-fns/isThisYear';
112
85
  import 'date-fns/setYear';
113
86
  import './weekdays.js';
114
87
 
115
- var _excluded = ["hidden", "className", "popupRef", "onClear", "datePopupProps", "onComplete"],
116
- _excluded2 = ["className", "popupClassName", "clear", "inline", "dropdownProps", "translations"];
117
- var PopupComponent = function PopupComponent(_ref) {
118
- var _ref$hidden = _ref.hidden,
119
- hidden = _ref$hidden === void 0 ? false : _ref$hidden,
120
- className = _ref.className,
121
- popupRef = _ref.popupRef,
122
- onClear = _ref.onClear,
123
- datePopupProps = _ref.datePopupProps,
124
- onComplete = _ref.onComplete,
125
- restProps = _objectWithoutProperties(_ref, _excluded);
88
+ const PopupComponent = _ref => {
89
+ let {
90
+ hidden = false,
91
+ className,
92
+ popupRef,
93
+ onClear,
94
+ datePopupProps,
95
+ onComplete,
96
+ ...restProps
97
+ } = _ref;
126
98
  return /*#__PURE__*/React.createElement(Popup, _extends({
127
99
  hidden: hidden,
128
100
  className: className,
@@ -145,259 +117,232 @@ PopupComponent.propTypes = {
145
117
  /**
146
118
  * @name Date Picker
147
119
  */
148
- var DatePicker = /*#__PURE__*/function (_PureComponent) {
149
- function DatePicker() {
150
- var _this;
151
- _classCallCheck(this, DatePicker);
152
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
153
- args[_key] = arguments[_key];
154
- }
155
- _this = _callSuper(this, DatePicker, [].concat(args));
156
- _defineProperty(_this, "handleChange", function (change) {
157
- var _this$props = _this.props,
158
- onChange = _this$props.onChange,
159
- withTime = _this$props.withTime,
160
- applyTimeInput = _this$props.applyTimeInput;
161
- var adjustedChange = withTime && !(change instanceof Date) && (change === null || change === void 0 ? void 0 : change.date) != null ? applyTimeInput(change.date, change.time) : change;
162
- onChange(adjustedChange);
163
- });
164
- _defineProperty(_this, "clear", function () {
165
- var change = null;
166
- if (_this.props.range) {
167
- change = {
168
- from: null,
169
- to: null
170
- };
171
- }
172
- _this.handleChange(change);
173
- });
174
- _defineProperty(_this, "popup", void 0);
175
- _defineProperty(_this, "popupRef", function (el) {
176
- _this.popup = el;
177
- });
178
- _defineProperty(_this, "closePopup", function () {
179
- var _this$popup;
180
- (_this$popup = _this.popup) === null || _this$popup === void 0 || _this$popup._onCloseAttempt();
181
- });
182
- _defineProperty(_this, "parse", memoize(function (date) {
183
- var parseDateInput = _this.props.parseDateInput;
184
- if (date instanceof Date) {
185
- return date;
186
- }
187
- if (typeof date === 'number') {
188
- return new Date(date);
189
- }
190
- return parseDateInput(date);
191
- }));
192
- _defineProperty(_this, "getAnchorText", function () {
193
- var _this$props2 = _this.props,
194
- range = _this$props2.range,
195
- datePlaceholder = _this$props2.datePlaceholder,
196
- dateTimePlaceholder = _this$props2.dateTimePlaceholder,
197
- rangePlaceholder = _this$props2.rangePlaceholder,
198
- withTime = _this$props2.withTime,
199
- displayFormat = _this$props2.displayFormat,
200
- displayMonthFormat = _this$props2.displayMonthFormat,
201
- displayDayFormat = _this$props2.displayDayFormat,
202
- translations = _this$props2.translations,
203
- locale = _this$props2.locale;
204
- var translate = _this.context.translate;
205
- var date = _this.parse(_this.props.date);
206
- var from = _this.parse(_this.props.from);
207
- var to = _this.parse(_this.props.to);
208
- var time = _this.formatTime();
209
- if (!range && !withTime) {
210
- var _ref2;
211
- return date ? displayFormat(date, locale) : (_ref2 = datePlaceholder !== null && datePlaceholder !== void 0 ? datePlaceholder : translations === null || translations === void 0 ? void 0 : translations.setDate) !== null && _ref2 !== void 0 ? _ref2 : translate('setDate');
212
- } else if (!range && withTime) {
213
- if (!date && !time) {
214
- var _ref3;
215
- return (_ref3 = dateTimePlaceholder !== null && dateTimePlaceholder !== void 0 ? dateTimePlaceholder : translations === null || translations === void 0 ? void 0 : translations.setDateTime) !== null && _ref3 !== void 0 ? _ref3 : translate('setDateTime');
216
- } else {
217
- return "".concat(date && displayFormat(date, locale) || '—', ", ").concat(time || '—');
218
- }
219
- } else if (from && to) {
220
- if (!isSameYear(from, to)) {
221
- return "".concat(displayFormat(from, locale), " \u2014 ").concat(displayFormat(to, locale));
222
- } else if (!isSameMonth(from, to)) {
223
- return "".concat(displayMonthFormat(from, locale), " \u2014 ").concat(displayFormat(to, locale));
224
- } else if (!isSameDay(from, to)) {
225
- return "".concat(displayDayFormat(from, locale), " \u2014 ").concat(displayFormat(to, locale));
226
- } else {
227
- return "".concat(displayFormat(to, locale));
228
- }
229
- } else if (from) {
230
- return "".concat(displayFormat(from, locale), " \u2014");
231
- } else if (to) {
232
- return "\u2014 ".concat(displayFormat(to, locale));
233
- } else {
234
- var _ref4;
235
- return (_ref4 = rangePlaceholder !== null && rangePlaceholder !== void 0 ? rangePlaceholder : translations === null || translations === void 0 ? void 0 : translations.setPeriod) !== null && _ref4 !== void 0 ? _ref4 : translate('setPeriod');
236
- }
237
- });
238
- return _this;
239
- }
240
- _inherits(DatePicker, _PureComponent);
241
- return _createClass(DatePicker, [{
242
- key: "formatTime",
243
- value: function formatTime() {
244
- var _this$props3 = this.props,
245
- displayTimeFormat = _this$props3.displayTimeFormat,
246
- locale = _this$props3.locale;
247
- var date = this.parse(this.props.date);
248
- if (date != null) {
249
- return displayTimeFormat(date, locale);
250
- }
251
- return null;
252
- }
253
- }, {
254
- key: "render",
255
- value: function render() {
256
- var _this$props$disabled, _this$props$disabled2;
257
- var anchorContent = /*#__PURE__*/React.createElement("div", {
258
- className: modules_0c7b7d96.anchorContent
259
- }, /*#__PURE__*/React.createElement(Icon, {
260
- glyph: calendarIcon,
261
- className: modules_0c7b7d96.calendarIcon
262
- }), this.getAnchorText(), /*#__PURE__*/React.createElement(Icon, {
263
- glyph: chevronDownIcon,
264
- className: modules_0c7b7d96.chevronDownIcon
265
- }));
266
- var _this$props4 = this.props,
267
- className = _this$props4.className,
268
- popupClassName = _this$props4.popupClassName,
269
- clear = _this$props4.clear,
270
- inline = _this$props4.inline,
271
- dropdownProps = _this$props4.dropdownProps,
272
- translations = _this$props4.translations,
273
- datePopupProps = _objectWithoutProperties(_this$props4, _excluded2);
274
- var classes = classNames(modules_0c7b7d96.datePicker, className, modules_0c7b7d96["size".concat(this.props.size)], {
275
- [modules_0c7b7d96.inline]: inline
276
- });
277
- return /*#__PURE__*/React.createElement(Dropdown, _extends({
278
- className: classes,
279
- disabled: this.props.disabled,
280
- anchor: inline ? /*#__PURE__*/React.createElement(Link, {
281
- "data-test-ring-dropdown-anchor": true,
282
- className: modules_0c7b7d96.anchor,
283
- disabled: (_this$props$disabled = this.props.disabled) !== null && _this$props$disabled !== void 0 ? _this$props$disabled : false,
284
- pseudo: true
285
- }, this.getAnchorText()) : /*#__PURE__*/React.createElement(Button, {
286
- "data-test-ring-dropdown-anchor": true,
287
- className: modules_0c7b7d96.anchor,
288
- text: false,
289
- disabled: (_this$props$disabled2 = this.props.disabled) !== null && _this$props$disabled2 !== void 0 ? _this$props$disabled2 : false
290
- }, anchorContent)
291
- }, dropdownProps), /*#__PURE__*/React.createElement(PopupComponent, {
292
- className: popupClassName,
293
- popupRef: this.popupRef,
294
- onClear: clear ? this.clear : null,
295
- datePopupProps: _objectSpread2(_objectSpread2({}, datePopupProps), {}, {
296
- translations,
297
- onChange: this.handleChange,
298
- parseDateInput: this.parse,
299
- time: this.formatTime()
300
- }),
301
- onComplete: this.closePopup
302
- }));
303
- }
304
- }]);
305
- }(PureComponent);
306
- _defineProperty(DatePicker, "propTypes", {
307
- className: PropTypes.string,
308
- popupClassName: PropTypes.string,
309
- date: dateType,
310
- withTime: PropTypes.bool,
311
- range: PropTypes.bool,
312
- from: dateType,
313
- to: dateType,
314
- clear: PropTypes.bool,
315
- inline: PropTypes.bool,
316
- displayFormat: PropTypes.func,
317
- displayMonthFormat: PropTypes.func,
318
- displayDayFormat: PropTypes.func,
319
- displayTimeFormat: PropTypes.func,
320
- parseDateInput: PropTypes.func,
321
- applyTimeInput: PropTypes.func,
322
- datePlaceholder: PropTypes.string,
323
- dateTimePlaceholder: PropTypes.string,
324
- rangePlaceholder: PropTypes.string,
325
- onChange: PropTypes.func,
326
- dropdownProps: PropTypes.object,
327
- disabled: PropTypes.bool,
328
- minDate: dateType,
329
- maxDate: dateType,
330
- translations: PropTypes.object,
331
- locale: PropTypes.object,
332
- size: PropTypes.oneOf(Object.values(Size))
333
- });
334
- _defineProperty(DatePicker, "defaultProps", {
335
- className: '',
336
- date: null,
337
- withTime: false,
338
- range: false,
339
- from: null,
340
- to: null,
341
- clear: false,
342
- inline: false,
343
- size: Size.M,
344
- displayFormat: function displayFormat(date, locale) {
345
- return date ? format(date, 'd MMM yyyy', {
120
+ class DatePicker extends PureComponent {
121
+ static propTypes = {
122
+ className: PropTypes.string,
123
+ popupClassName: PropTypes.string,
124
+ date: dateType,
125
+ withTime: PropTypes.bool,
126
+ range: PropTypes.bool,
127
+ from: dateType,
128
+ to: dateType,
129
+ clear: PropTypes.bool,
130
+ inline: PropTypes.bool,
131
+ displayFormat: PropTypes.func,
132
+ displayMonthFormat: PropTypes.func,
133
+ displayDayFormat: PropTypes.func,
134
+ displayTimeFormat: PropTypes.func,
135
+ parseDateInput: PropTypes.func,
136
+ applyTimeInput: PropTypes.func,
137
+ datePlaceholder: PropTypes.string,
138
+ dateTimePlaceholder: PropTypes.string,
139
+ rangePlaceholder: PropTypes.string,
140
+ onChange: PropTypes.func,
141
+ dropdownProps: PropTypes.object,
142
+ disabled: PropTypes.bool,
143
+ minDate: dateType,
144
+ maxDate: dateType,
145
+ translations: PropTypes.object,
146
+ locale: PropTypes.object,
147
+ size: PropTypes.oneOf(Object.values(Size))
148
+ };
149
+ static defaultProps = {
150
+ className: '',
151
+ date: null,
152
+ withTime: false,
153
+ range: false,
154
+ from: null,
155
+ to: null,
156
+ clear: false,
157
+ inline: false,
158
+ size: Size.M,
159
+ displayFormat: (date, locale) => date ? format(date, 'd MMM yyyy', {
346
160
  locale
347
- }) : '';
348
- },
349
- displayMonthFormat: function displayMonthFormat(date, locale) {
350
- return date ? format(date, 'd MMM', {
161
+ }) : '',
162
+ displayMonthFormat: (date, locale) => date ? format(date, 'd MMM', {
351
163
  locale
352
- }) : '';
353
- },
354
- displayDayFormat: function displayDayFormat(date, locale) {
355
- return date ? format(date, 'd', {
164
+ }) : '',
165
+ displayDayFormat: (date, locale) => date ? format(date, 'd', {
356
166
  locale
357
- }) : '';
358
- },
359
- displayTimeFormat: function displayTimeFormat(date, locale) {
360
- return date ? format(date, 'HH:mm', {
167
+ }) : '',
168
+ displayTimeFormat: (date, locale) => date ? format(date, 'HH:mm', {
361
169
  locale
362
- }) : '';
363
- },
364
- minDate: null,
365
- maxDate: null,
366
- onChange() {},
367
- applyTimeInput(date, timeString) {
368
- var _timeString$split$map;
369
- var _ref5 = (_timeString$split$map = timeString === null || timeString === void 0 ? void 0 : timeString.split(':').map(Number)) !== null && _timeString$split$map !== void 0 ? _timeString$split$map : [],
370
- _ref6 = _slicedToArray(_ref5, 2),
371
- hours = _ref6[0],
372
- minutes = _ref6[1];
373
- return minutes != null ? set(date, {
374
- hours,
375
- minutes
376
- }) : date;
377
- },
378
- parseDateInput(string) {
379
- if (!string) {
380
- return null;
381
- }
382
- var today = new Date();
383
- var _iterator = _createForOfIteratorHelper(formats),
384
- _step;
385
- try {
386
- for (_iterator.s(); !(_step = _iterator.n()).done;) {
387
- var format = _step.value;
388
- var date = parse(string, format, today);
170
+ }) : '',
171
+ minDate: null,
172
+ maxDate: null,
173
+ onChange() {},
174
+ applyTimeInput(date, timeString) {
175
+ var _timeString$split$map;
176
+ const [hours, minutes] = (_timeString$split$map = timeString?.split(':').map(Number)) !== null && _timeString$split$map !== void 0 ? _timeString$split$map : [];
177
+ return minutes != null ? set(date, {
178
+ hours,
179
+ minutes
180
+ }) : date;
181
+ },
182
+ parseDateInput(string) {
183
+ if (!string) {
184
+ return null;
185
+ }
186
+ const today = new Date();
187
+ for (const format of formats) {
188
+ const date = parse(string, format, today);
389
189
  if (isValid(date)) {
390
190
  return date;
391
191
  }
392
192
  }
393
- } catch (err) {
394
- _iterator.e(err);
395
- } finally {
396
- _iterator.f();
193
+ return null;
194
+ }
195
+ };
196
+ static contextType = I18nContext;
197
+ handleChange = change => {
198
+ const {
199
+ onChange,
200
+ withTime,
201
+ applyTimeInput
202
+ } = this.props;
203
+ const adjustedChange = withTime && !(change instanceof Date) && change?.date != null ? applyTimeInput(change.date, change.time) : change;
204
+ onChange(adjustedChange);
205
+ };
206
+ clear = () => {
207
+ let change = null;
208
+ if (this.props.range) {
209
+ change = {
210
+ from: null,
211
+ to: null
212
+ };
213
+ }
214
+ this.handleChange(change);
215
+ };
216
+ popup;
217
+ popupRef = el => {
218
+ this.popup = el;
219
+ };
220
+ closePopup = () => {
221
+ this.popup?._onCloseAttempt();
222
+ };
223
+ parse = memoize(date => {
224
+ const {
225
+ parseDateInput
226
+ } = this.props;
227
+ if (date instanceof Date) {
228
+ return date;
229
+ }
230
+ if (typeof date === 'number') {
231
+ return new Date(date);
232
+ }
233
+ return parseDateInput(date);
234
+ });
235
+ formatTime() {
236
+ const {
237
+ displayTimeFormat,
238
+ locale
239
+ } = this.props;
240
+ const date = this.parse(this.props.date);
241
+ if (date != null) {
242
+ return displayTimeFormat(date, locale);
397
243
  }
398
244
  return null;
399
245
  }
400
- });
401
- _defineProperty(DatePicker, "contextType", I18nContext);
246
+ getAnchorText = () => {
247
+ const {
248
+ range,
249
+ datePlaceholder,
250
+ dateTimePlaceholder,
251
+ rangePlaceholder,
252
+ withTime,
253
+ displayFormat,
254
+ displayMonthFormat,
255
+ displayDayFormat,
256
+ translations,
257
+ locale
258
+ } = this.props;
259
+ const {
260
+ translate
261
+ } = this.context;
262
+ const date = this.parse(this.props.date);
263
+ const from = this.parse(this.props.from);
264
+ const to = this.parse(this.props.to);
265
+ const time = this.formatTime();
266
+ if (!range && !withTime) {
267
+ var _ref2;
268
+ return date ? displayFormat(date, locale) : (_ref2 = datePlaceholder !== null && datePlaceholder !== void 0 ? datePlaceholder : translations?.setDate) !== null && _ref2 !== void 0 ? _ref2 : translate('setDate');
269
+ } else if (!range && withTime) {
270
+ if (!date && !time) {
271
+ var _ref3;
272
+ return (_ref3 = dateTimePlaceholder !== null && dateTimePlaceholder !== void 0 ? dateTimePlaceholder : translations?.setDateTime) !== null && _ref3 !== void 0 ? _ref3 : translate('setDateTime');
273
+ } else {
274
+ return `${date && displayFormat(date, locale) || '—'}, ${time || '—'}`;
275
+ }
276
+ } else if (from && to) {
277
+ if (!isSameYear(from, to)) {
278
+ return `${displayFormat(from, locale)} — ${displayFormat(to, locale)}`;
279
+ } else if (!isSameMonth(from, to)) {
280
+ return `${displayMonthFormat(from, locale)} — ${displayFormat(to, locale)}`;
281
+ } else if (!isSameDay(from, to)) {
282
+ return `${displayDayFormat(from, locale)} — ${displayFormat(to, locale)}`;
283
+ } else {
284
+ return `${displayFormat(to, locale)}`;
285
+ }
286
+ } else if (from) {
287
+ return `${displayFormat(from, locale)} —`;
288
+ } else if (to) {
289
+ return `— ${displayFormat(to, locale)}`;
290
+ } else {
291
+ var _ref4;
292
+ return (_ref4 = rangePlaceholder !== null && rangePlaceholder !== void 0 ? rangePlaceholder : translations?.setPeriod) !== null && _ref4 !== void 0 ? _ref4 : translate('setPeriod');
293
+ }
294
+ };
295
+ render() {
296
+ var _this$props$disabled, _this$props$disabled2;
297
+ const anchorContent = /*#__PURE__*/React.createElement("div", {
298
+ className: modules_0c7b7d96.anchorContent
299
+ }, /*#__PURE__*/React.createElement(Icon, {
300
+ glyph: calendarIcon,
301
+ className: modules_0c7b7d96.calendarIcon
302
+ }), this.getAnchorText(), /*#__PURE__*/React.createElement(Icon, {
303
+ glyph: chevronDownIcon,
304
+ className: modules_0c7b7d96.chevronDownIcon
305
+ }));
306
+ const {
307
+ className,
308
+ popupClassName,
309
+ clear,
310
+ inline,
311
+ dropdownProps,
312
+ translations,
313
+ ...datePopupProps
314
+ } = this.props;
315
+ const classes = classNames(modules_0c7b7d96.datePicker, className, modules_0c7b7d96[`size${this.props.size}`], {
316
+ [modules_0c7b7d96.inline]: inline
317
+ });
318
+ return /*#__PURE__*/React.createElement(Dropdown, _extends({
319
+ className: classes,
320
+ disabled: this.props.disabled,
321
+ anchor: inline ? /*#__PURE__*/React.createElement(Link, {
322
+ "data-test-ring-dropdown-anchor": true,
323
+ className: modules_0c7b7d96.anchor,
324
+ disabled: (_this$props$disabled = this.props.disabled) !== null && _this$props$disabled !== void 0 ? _this$props$disabled : false,
325
+ pseudo: true
326
+ }, this.getAnchorText()) : /*#__PURE__*/React.createElement(Button, {
327
+ "data-test-ring-dropdown-anchor": true,
328
+ className: modules_0c7b7d96.anchor,
329
+ text: false,
330
+ disabled: (_this$props$disabled2 = this.props.disabled) !== null && _this$props$disabled2 !== void 0 ? _this$props$disabled2 : false
331
+ }, anchorContent)
332
+ }, dropdownProps), /*#__PURE__*/React.createElement(PopupComponent, {
333
+ className: popupClassName,
334
+ popupRef: this.popupRef,
335
+ onClear: clear ? this.clear : null,
336
+ datePopupProps: {
337
+ ...datePopupProps,
338
+ translations,
339
+ onChange: this.handleChange,
340
+ parseDateInput: this.parse,
341
+ time: this.formatTime()
342
+ },
343
+ onComplete: this.closePopup
344
+ }));
345
+ }
346
+ }
402
347
 
403
348
  export { DatePicker as default };