@jetbrains/ring-ui 4.1.0-beta.9 → 4.1.1

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 (354) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +17 -15
  3. package/babel.config.js +3 -2
  4. package/components/alert/alert.js +9 -3
  5. package/components/alert/container.css +1 -1
  6. package/components/alert-service/alert-service.examples.css +18 -0
  7. package/components/alert-service/alert-service.examples.js +21 -0
  8. package/components/alert-service/alert-service.js +10 -3
  9. package/components/analytics/analytics__fus-plugin.js +1 -1
  10. package/components/auth/auth.test.js +14 -7
  11. package/components/auth/auth__core.js +64 -33
  12. package/components/auth-dialog/auth-dialog.js +1 -0
  13. package/components/avatar/avatar.css +4 -1
  14. package/components/avatar/avatar.examples.js +3 -2
  15. package/components/avatar/avatar.js +31 -6
  16. package/components/avatar/fallback-avatar.js +136 -0
  17. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  18. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  19. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  20. package/components/button/button.css +2 -2
  21. package/components/button/button.js +4 -1
  22. package/components/button-group/button-group.js +1 -1
  23. package/components/button-group/caption.js +1 -1
  24. package/components/button-ng/button-ng.js +1 -1
  25. package/components/button-set-ng/button-set-ng.js +3 -1
  26. package/components/checkbox/checkbox.css +1 -1
  27. package/components/code/code.js +1 -1
  28. package/components/confirm/confirm.js +1 -0
  29. package/components/confirm-service/confirm-service.js +5 -5
  30. package/components/content-layout/content-layout.css +1 -1
  31. package/components/data-list/data-list.css +1 -1
  32. package/components/date-picker/date-input.js +5 -4
  33. package/components/date-picker/date-picker.css +34 -22
  34. package/components/date-picker/date-picker.js +16 -14
  35. package/components/date-picker/date-popup.js +22 -7
  36. package/components/date-picker/month-names.js +8 -5
  37. package/components/date-picker/month.js +6 -2
  38. package/components/date-picker/weekdays.js +10 -2
  39. package/components/dialog/dialog.examples.js +3 -1
  40. package/components/dialog/dialog.js +5 -2
  41. package/components/dialog/dialog.test.js +1 -1
  42. package/components/dialog/dialog__body-scroll-preventer.js +2 -2
  43. package/components/dialog-ng/dialog-ng.js +7 -8
  44. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  45. package/components/dropdown/dropdown.examples.js +36 -1
  46. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  47. package/components/dropdown-menu/dropdown-menu.js +117 -0
  48. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  49. package/components/error-bubble/error-bubble-legacy.css +1 -1
  50. package/components/error-bubble/error-bubble.css +1 -1
  51. package/components/error-bubble/error-bubble.examples.js +1 -1
  52. package/components/error-page/error-page.css +2 -2
  53. package/components/footer-ng/footer-ng.js +13 -3
  54. package/components/form/form.css +2 -2
  55. package/components/form-ng/form-ng.js +3 -1
  56. package/components/global/global.css +1 -1
  57. package/components/global/theme.js +1 -1
  58. package/components/global/variables.css +8 -1
  59. package/components/grid/grid.css +10 -9
  60. package/components/header/header.css +1 -1
  61. package/components/header/header.examples.js +7 -8
  62. package/components/header/profile.js +10 -11
  63. package/components/http/http.js +1 -1
  64. package/components/icon/icon.css +5 -4
  65. package/components/island/island.css +4 -3
  66. package/components/island-legacy/island-legacy.css +3 -1
  67. package/components/list/list.js +6 -1
  68. package/components/list/list__custom.js +9 -3
  69. package/components/list/list__item.js +8 -2
  70. package/components/list/list__link.js +2 -1
  71. package/components/loader-inline/loader-inline.css +1 -1
  72. package/components/loader-screen/loader-screen.css +1 -1
  73. package/components/message/message.css +1 -1
  74. package/components/message/message.examples.js +8 -5
  75. package/components/pager/pager.js +5 -3
  76. package/components/permissions/permissions.js +1 -1
  77. package/components/progress-bar/progress-bar.css +1 -1
  78. package/components/progress-bar/progress-bar.examples.js +3 -3
  79. package/components/progress-bar/progress-bar.js +5 -2
  80. package/components/progress-bar/progress-bar.test.js +12 -13
  81. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  82. package/components/query-assist/query-assist.css +13 -3
  83. package/components/query-assist/query-assist.examples.js +3 -1
  84. package/components/query-assist/query-assist.js +56 -12
  85. package/components/query-assist/query-assist.test.js +37 -5
  86. package/components/save-field-ng/save-field-ng.css +0 -3
  87. package/components/save-field-ng/save-field-ng.js +3 -1
  88. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  89. package/components/select/select.css +12 -7
  90. package/components/select/select.examples.js +13 -0
  91. package/components/select/select.js +30 -43
  92. package/components/select/select.test.js +4 -5
  93. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  94. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  95. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  96. package/components/sidebar/sidebar.css +1 -0
  97. package/components/sidebar-ng/sidebar-ng.js +6 -2
  98. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  99. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  100. package/components/table/row.js +2 -1
  101. package/components/table/table.css +2 -1
  102. package/components/table-legacy/table-legacy.css +2 -2
  103. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  104. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  105. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  106. package/components/tabs/collapsible-tab.js +2 -2
  107. package/components/tabs/collapsible-tabs.js +4 -8
  108. package/components/tabs/tab-link.js +4 -2
  109. package/components/tabs/tabs.css +27 -0
  110. package/components/tabs-ng/tabs-ng.js +4 -2
  111. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  112. package/components/tag/tag.css +5 -2
  113. package/components/tag/tag.examples.js +3 -0
  114. package/components/tag/tag.js +19 -16
  115. package/components/tags-input/tag-input.examples.js +1 -1
  116. package/components/tags-input/tags-input.js +5 -2
  117. package/components/template-ng/template-ng.js +1 -1
  118. package/components/tooltip/tooltip.js +7 -2
  119. package/components/user-agreement/user-agreement.css +1 -1
  120. package/components/user-agreement/user-agreement.examples.js +7 -4
  121. package/components/user-agreement/user-agreement.js +1 -0
  122. package/package.json +75 -78
  123. package/webpack.config.js +14 -10
  124. package/components/button-set-ng/button-set-ng.html +0 -1
  125. package/components/footer-ng/footer-ng.html +0 -13
  126. package/components/form-ng/form-ng__error-bubble.html +0 -3
  127. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  128. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  129. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  130. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  131. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  132. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  133. package/dist/_helpers/_rollupPluginBabelHelpers.js +0 -127
  134. package/dist/_helpers/anchor.js +0 -33
  135. package/dist/_helpers/badge.js +0 -3
  136. package/dist/_helpers/button__classes.js +0 -39
  137. package/dist/_helpers/caption.js +0 -25
  138. package/dist/_helpers/card.js +0 -77
  139. package/dist/_helpers/date-picker.js +0 -3
  140. package/dist/_helpers/dialog__body-scroll-preventer.js +0 -56
  141. package/dist/_helpers/grid.js +0 -3
  142. package/dist/_helpers/header.js +0 -3
  143. package/dist/_helpers/icon__svg.js +0 -83
  144. package/dist/_helpers/inject-styles.js +0 -22
  145. package/dist/_helpers/island.js +0 -3
  146. package/dist/_helpers/list.js +0 -3
  147. package/dist/_helpers/query-assist__suggestions.js +0 -95
  148. package/dist/_helpers/select__filter.js +0 -78
  149. package/dist/_helpers/services-link.js +0 -42
  150. package/dist/_helpers/sidebar.js +0 -127
  151. package/dist/_helpers/table.js +0 -3
  152. package/dist/_helpers/tabs.js +0 -3
  153. package/dist/_helpers/title.js +0 -99
  154. package/dist/alert/alert.js +0 -254
  155. package/dist/alert/container.js +0 -50
  156. package/dist/alert-service/alert-service.js +0 -159
  157. package/dist/analytics/analytics.js +0 -116
  158. package/dist/analytics/analytics__custom-plugin.js +0 -127
  159. package/dist/analytics/analytics__fus-plugin.js +0 -101
  160. package/dist/analytics/analytics__ga-plugin.js +0 -66
  161. package/dist/analytics/analytics__plugin-utils.js +0 -79
  162. package/dist/auth/auth.js +0 -90
  163. package/dist/auth/auth__core.js +0 -987
  164. package/dist/auth/background-flow.js +0 -123
  165. package/dist/auth/down-notification.js +0 -111
  166. package/dist/auth/iframe-flow.js +0 -147
  167. package/dist/auth/landing-entry.js +0 -5
  168. package/dist/auth/landing.js +0 -84
  169. package/dist/auth/request-builder.js +0 -75
  170. package/dist/auth/response-parser.js +0 -117
  171. package/dist/auth/storage.js +0 -279
  172. package/dist/auth/token-validator.js +0 -176
  173. package/dist/auth/window-flow.js +0 -133
  174. package/dist/auth-dialog/auth-dialog.js +0 -132
  175. package/dist/auth-dialog-service/auth-dialog-service.js +0 -67
  176. package/dist/avatar/avatar-example-datauri.js +0 -26
  177. package/dist/avatar/avatar.js +0 -155
  178. package/dist/badge/badge.js +0 -52
  179. package/dist/button/button.js +0 -117
  180. package/dist/button/button__classes.js +0 -5
  181. package/dist/button-group/button-group.js +0 -30
  182. package/dist/button-group/caption.js +0 -5
  183. package/dist/button-set/button-set.js +0 -27
  184. package/dist/button-toolbar/button-toolbar.js +0 -30
  185. package/dist/caret/caret.js +0 -264
  186. package/dist/checkbox/checkbox.js +0 -110
  187. package/dist/confirm/confirm.js +0 -122
  188. package/dist/confirm-service/confirm-service.js +0 -112
  189. package/dist/content-layout/content-layout.js +0 -67
  190. package/dist/content-layout/sidebar.js +0 -6
  191. package/dist/contenteditable/contenteditable.js +0 -81
  192. package/dist/data-list/data-list.js +0 -203
  193. package/dist/data-list/data-list.mock.js +0 -190
  194. package/dist/data-list/item.js +0 -225
  195. package/dist/data-list/selection.js +0 -101
  196. package/dist/data-list/title.js +0 -16
  197. package/dist/date-picker/consts.js +0 -70
  198. package/dist/date-picker/date-input.js +0 -169
  199. package/dist/date-picker/date-picker.js +0 -356
  200. package/dist/date-picker/date-popup.js +0 -459
  201. package/dist/date-picker/day.js +0 -119
  202. package/dist/date-picker/formats.js +0 -3
  203. package/dist/date-picker/month-names.js +0 -92
  204. package/dist/date-picker/month-slider.js +0 -83
  205. package/dist/date-picker/month.js +0 -48
  206. package/dist/date-picker/months.js +0 -121
  207. package/dist/date-picker/weekdays.js +0 -24
  208. package/dist/date-picker/years.js +0 -109
  209. package/dist/dialog/dialog.js +0 -197
  210. package/dist/dialog/dialog__body-scroll-preventer.js +0 -2
  211. package/dist/dropdown/anchor.js +0 -16
  212. package/dist/dropdown/dropdown.js +0 -236
  213. package/dist/error-bubble/error-bubble.js +0 -59
  214. package/dist/error-message/error-message.js +0 -55
  215. package/dist/footer/footer.js +0 -127
  216. package/dist/global/angular-component-factory.js +0 -83
  217. package/dist/global/compose.js +0 -9
  218. package/dist/global/composeRefs.js +0 -15
  219. package/dist/global/conic-gradient.js +0 -37
  220. package/dist/global/create-stateful-context.js +0 -54
  221. package/dist/global/data-tests.js +0 -22
  222. package/dist/global/dom.js +0 -124
  223. package/dist/global/focus-sensor-hoc.js +0 -147
  224. package/dist/global/fuzzy-highlight.js +0 -67
  225. package/dist/global/get-event-key.js +0 -111
  226. package/dist/global/get-uid.js +0 -15
  227. package/dist/global/inject-styles.js +0 -17
  228. package/dist/global/linear-function.js +0 -18
  229. package/dist/global/listeners.js +0 -42
  230. package/dist/global/memoize.js +0 -18
  231. package/dist/global/normalize-indent.js +0 -28
  232. package/dist/global/promise-with-timeout.js +0 -13
  233. package/dist/global/radial-gradient-mask.js +0 -49
  234. package/dist/global/react-dom-renderer.js +0 -45
  235. package/dist/global/rerender-hoc.js +0 -53
  236. package/dist/global/ring-angular-component.js +0 -24
  237. package/dist/global/schedule-raf.js +0 -31
  238. package/dist/global/sniffer.js +0 -6
  239. package/dist/global/supports-css.js +0 -20
  240. package/dist/global/theme.js +0 -56
  241. package/dist/global/trivial-template-tag.js +0 -15
  242. package/dist/global/url.js +0 -163
  243. package/dist/global/variables_dark.js +0 -57
  244. package/dist/grid/col.js +0 -62
  245. package/dist/grid/grid.js +0 -35
  246. package/dist/grid/row.js +0 -66
  247. package/dist/group/group.js +0 -34
  248. package/dist/header/header.js +0 -144
  249. package/dist/header/logo.js +0 -39
  250. package/dist/header/profile.js +0 -212
  251. package/dist/header/services-link.js +0 -10
  252. package/dist/header/services.js +0 -135
  253. package/dist/header/smart-profile.js +0 -227
  254. package/dist/header/smart-services.js +0 -159
  255. package/dist/header/tray-icon.js +0 -45
  256. package/dist/header/tray.js +0 -33
  257. package/dist/heading/heading.js +0 -76
  258. package/dist/http/http.js +0 -216
  259. package/dist/http/http.mock.js +0 -65
  260. package/dist/hub-source/hub-source.js +0 -130
  261. package/dist/hub-source/hub-source__user.js +0 -28
  262. package/dist/hub-source/hub-source__users-groups.js +0 -62
  263. package/dist/icon/icon.js +0 -105
  264. package/dist/icon/icon__constants.js +0 -33
  265. package/dist/icon/icon__svg.js +0 -6
  266. package/dist/icon/index.js +0 -9
  267. package/dist/input/input.js +0 -231
  268. package/dist/island/adaptive-island-hoc.js +0 -48
  269. package/dist/island/content.js +0 -158
  270. package/dist/island/header.js +0 -85
  271. package/dist/island/island.js +0 -53
  272. package/dist/island-legacy/content-legacy.js +0 -28
  273. package/dist/island-legacy/header-legacy.js +0 -30
  274. package/dist/island-legacy/island-legacy.js +0 -30
  275. package/dist/link/clickableLink.js +0 -65
  276. package/dist/link/link.js +0 -118
  277. package/dist/list/consts.js +0 -26
  278. package/dist/list/list.js +0 -800
  279. package/dist/list/list__custom.js +0 -82
  280. package/dist/list/list__hint.js +0 -26
  281. package/dist/list/list__item.js +0 -197
  282. package/dist/list/list__link.js +0 -65
  283. package/dist/list/list__separator.js +0 -30
  284. package/dist/list/list__title.js +0 -39
  285. package/dist/list/list__users-groups-source.js +0 -124
  286. package/dist/loader/loader.js +0 -72
  287. package/dist/loader/loader__core.js +0 -272
  288. package/dist/loader-inline/inject-styles.js +0 -11
  289. package/dist/loader-inline/loader-inline.js +0 -58
  290. package/dist/loader-screen/loader-screen.js +0 -46
  291. package/dist/login-dialog/login-dialog.js +0 -184
  292. package/dist/login-dialog/service.js +0 -67
  293. package/dist/message/message.js +0 -232
  294. package/dist/old-browsers-message/old-browsers-message.js +0 -101
  295. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -5
  296. package/dist/old-browsers-message/white-list.js +0 -34
  297. package/dist/pager/pager.js +0 -352
  298. package/dist/panel/panel.js +0 -34
  299. package/dist/permissions/permissions.js +0 -200
  300. package/dist/permissions/permissions__cache.js +0 -272
  301. package/dist/popup/popup.consts.js +0 -41
  302. package/dist/popup/popup.js +0 -389
  303. package/dist/popup/popup.target.js +0 -27
  304. package/dist/popup/position.js +0 -280
  305. package/dist/popup-menu/popup-menu.js +0 -108
  306. package/dist/progress-bar/progress-bar.js +0 -111
  307. package/dist/proxy-attrs/proxy-attrs.js +0 -19
  308. package/dist/query-assist/query-assist.js +0 -1023
  309. package/dist/query-assist/query-assist__suggestions.js +0 -43
  310. package/dist/radio/radio.js +0 -39
  311. package/dist/radio/radio__item.js +0 -82
  312. package/dist/select/select.js +0 -1335
  313. package/dist/select/select__filter.js +0 -49
  314. package/dist/select/select__popup.js +0 -541
  315. package/dist/shortcuts/core.js +0 -245
  316. package/dist/shortcuts/shortcut-title.js +0 -51
  317. package/dist/shortcuts/shortcuts-hoc.js +0 -43
  318. package/dist/shortcuts/shortcuts.js +0 -72
  319. package/dist/storage/storage.js +0 -55
  320. package/dist/storage/storage__fallback.js +0 -214
  321. package/dist/storage/storage__local.js +0 -150
  322. package/dist/style.css +0 -1
  323. package/dist/tab-trap/tab-trap.js +0 -178
  324. package/dist/table/cell.js +0 -25
  325. package/dist/table/disable-hover-hoc.js +0 -53
  326. package/dist/table/header-cell.js +0 -91
  327. package/dist/table/header.js +0 -189
  328. package/dist/table/multitable.js +0 -140
  329. package/dist/table/row-with-focus-sensor.js +0 -79
  330. package/dist/table/row.js +0 -270
  331. package/dist/table/selection-adapter.js +0 -14
  332. package/dist/table/selection-shortcuts-hoc.js +0 -212
  333. package/dist/table/selection.js +0 -221
  334. package/dist/table/smart-table.js +0 -113
  335. package/dist/table/table.js +0 -405
  336. package/dist/tabs/collapsible-more.js +0 -193
  337. package/dist/tabs/collapsible-tab.js +0 -90
  338. package/dist/tabs/collapsible-tabs.js +0 -361
  339. package/dist/tabs/custom-item.js +0 -13
  340. package/dist/tabs/dumb-tabs.js +0 -159
  341. package/dist/tabs/smart-tabs.js +0 -102
  342. package/dist/tabs/tab-link.js +0 -35
  343. package/dist/tabs/tab.js +0 -32
  344. package/dist/tabs/tabs.js +0 -65
  345. package/dist/tag/tag.js +0 -190
  346. package/dist/tags-input/tags-input.js +0 -474
  347. package/dist/tags-list/tags-list.js +0 -94
  348. package/dist/text/text.js +0 -38
  349. package/dist/toggle/toggle.js +0 -80
  350. package/dist/tooltip/tooltip.js +0 -205
  351. package/dist/user-card/card.js +0 -14
  352. package/dist/user-card/smart-user-card-tooltip.js +0 -112
  353. package/dist/user-card/tooltip.js +0 -91
  354. package/dist/user-card/user-card.js +0 -46
@@ -1,90 +0,0 @@
1
- import { a as _objectWithoutProperties, b as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React from 'react';
3
- import classNames from 'classnames';
4
- import PropTypes from 'prop-types';
5
- import { m as modules_02138f4a } from '../_helpers/tabs.js';
6
- import TabLink from './tab-link.js';
7
- import { CustomItem } from './custom-item.js';
8
- import '../link/link.js';
9
- import 'focus-visible';
10
- import '../global/memoize.js';
11
- import '../global/data-tests.js';
12
- import '../link/clickableLink.js';
13
-
14
- function noop() {}
15
-
16
- const TabTitle = /*#__PURE__*/React.memo(_ref => {
17
- let {
18
- selected,
19
- child,
20
- handleSelect = noop,
21
- collapsed = false,
22
- tabIndex
23
- } = _ref;
24
-
25
- if (child == null || typeof child !== 'object' || child.type === CustomItem) {
26
- return child;
27
- }
28
-
29
- const {
30
- title,
31
- disabled,
32
- href,
33
- className,
34
- activeClassName,
35
- collapsedClassName,
36
- collapsedActiveClassName
37
- } = child.props;
38
- const titleClasses = classNames(modules_02138f4a.title, className, {
39
- [modules_02138f4a.selected]: selected,
40
- [modules_02138f4a.collapsed]: collapsed,
41
- [activeClassName]: selected,
42
- [collapsedClassName]: collapsed,
43
- [collapsedActiveClassName]: collapsed && selected
44
- });
45
- return /*#__PURE__*/React.createElement(TabLink, {
46
- title: title,
47
- isSelected: selected,
48
- active: true,
49
- href: href,
50
- innerClassName: titleClasses,
51
- className: titleClasses,
52
- disabled: disabled,
53
- onPlainLeftClick: handleSelect,
54
- tabIndex: tabIndex,
55
- collapsed: collapsed
56
- });
57
- });
58
- TabTitle.propTypes = {
59
- child: PropTypes.element,
60
- handleSelect: PropTypes.func,
61
- selected: PropTypes.bool,
62
- collapsed: PropTypes.bool,
63
- tabIndex: PropTypes.number
64
- };
65
-
66
- const getTabTitles = _ref2 => {
67
- let {
68
- items,
69
- selected = 0,
70
- collapsed,
71
- onSelect = noop
72
- } = _ref2,
73
- props = _objectWithoutProperties(_ref2, ["items", "selected", "collapsed", "onSelect"]);
74
-
75
- return items.map((tab, index) => {
76
- const key = tab.props.id || String(index);
77
- const isSelected = selected === key;
78
- return /*#__PURE__*/React.createElement(TabTitle, _extends({
79
- key: key,
80
- handleSelect: onSelect(key),
81
- selected: isSelected,
82
- child: tab,
83
- index: index,
84
- collapsed: collapsed,
85
- disabled: tab.props.disabled
86
- }, props));
87
- });
88
- };
89
-
90
- export default getTabTitles;
@@ -1,361 +0,0 @@
1
- import { c as _objectSpread2 } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React from 'react';
3
- import PropTypes from 'prop-types';
4
- import classNames from 'classnames';
5
- import fastdom from 'fastdom';
6
- import { m as modules_02138f4a } from '../_helpers/tabs.js';
7
- import { MoreButton, FakeMoreButton } from './collapsible-more.js';
8
- import getTabTitles from './collapsible-tab.js';
9
- import '@jetbrains/icons/chevron-10px';
10
- import '../popup/popup.consts.js';
11
- import '../popup-menu/popup-menu.js';
12
- import '../popup/popup.js';
13
- import 'react-dom';
14
- import '../global/get-uid.js';
15
- import '../global/schedule-raf.js';
16
- import '../global/dom.js';
17
- import '../shortcuts/shortcuts.js';
18
- import '../shortcuts/core.js';
19
- import 'combokeys';
20
- import '../global/sniffer.js';
21
- import 'sniffr';
22
- import '../global/data-tests.js';
23
- import '../tab-trap/tab-trap.js';
24
- import '../popup/position.js';
25
- import '../popup/popup.target.js';
26
- import '../list/list.js';
27
- import 'react-virtualized/dist/es/List';
28
- import 'react-virtualized/dist/es/AutoSizer';
29
- import 'react-virtualized/dist/es/WindowScroller';
30
- import 'react-virtualized/dist/es/CellMeasurer';
31
- import 'util-deprecate';
32
- import 'memoize-one';
33
- import '../global/memoize.js';
34
- import '../global/create-stateful-context.js';
35
- import '../list/list__link.js';
36
- import '../link/link.js';
37
- import 'focus-visible';
38
- import '../link/clickableLink.js';
39
- import '../_helpers/list.js';
40
- import '../list/list__item.js';
41
- import '../avatar/avatar.js';
42
- import '../global/url.js';
43
- import '../checkbox/checkbox.js';
44
- import '@jetbrains/icons/checkmark';
45
- import '@jetbrains/icons/remove-10px';
46
- import '../icon/icon.js';
47
- import '../icon/icon__constants.js';
48
- import '../_helpers/icon__svg.js';
49
- import '../list/list__custom.js';
50
- import '../global/get-event-key.js';
51
- import '../list/list__title.js';
52
- import '../list/list__separator.js';
53
- import '../list/list__hint.js';
54
- import '../list/consts.js';
55
- import '../dropdown/dropdown.js';
56
- import '../_helpers/anchor.js';
57
- import '../button/button.js';
58
- import '../global/theme.js';
59
- import '../_helpers/button__classes.js';
60
- import './custom-item.js';
61
- import './tab-link.js';
62
-
63
- const DEFAULT_DEBOUNCE_INTERVAL = 100;
64
- const MEASURE_TOLERANCE = 0.5;
65
- const DEFAULT_STATE = {
66
- lastVisibleIndex: null,
67
- sizes: {
68
- tabs: [],
69
- more: null
70
- }
71
- };
72
- const ACTIONS = {
73
- MEASURE_TABS: 'MEASURE_TABS',
74
- DEFINE_LAST_VISIBLE_INDEX: 'DEFINE_LAST_VISIBLE_INDEX'
75
- };
76
-
77
- function visibilityReducer(state, action) {
78
- switch (action.type) {
79
- case ACTIONS.MEASURE_TABS:
80
- {
81
- const {
82
- more,
83
- tabs
84
- } = action;
85
- return _objectSpread2(_objectSpread2({}, state), {}, {
86
- sizes: {
87
- more,
88
- tabs
89
- }
90
- });
91
- }
92
-
93
- case ACTIONS.DEFINE_LAST_VISIBLE_INDEX:
94
- {
95
- const {
96
- lastVisibleIndex
97
- } = action;
98
- return _objectSpread2(_objectSpread2({}, state), {}, {
99
- lastVisibleIndex
100
- });
101
- }
102
-
103
- default:
104
- throw new Error();
105
- }
106
- }
107
-
108
- const useAdjustHandler = _ref => {
109
- let {
110
- elements,
111
- children,
112
- selectedIndex,
113
- dispatch
114
- } = _ref;
115
- return React.useCallback(entry => {
116
- const containerWidth = entry.contentRect.width;
117
- const {
118
- tabs: tabsSizes,
119
- more = 0
120
- } = elements.sizes;
121
- let renderMore = children.some(tab => tab.props.alwaysHidden);
122
- const tabsToRender = [];
123
- let filledWidth = renderMore ? more !== null && more !== void 0 ? more : 0 : 0;
124
-
125
- for (let i = 0; i < tabsSizes.length; i++) {
126
- if (filledWidth + tabsSizes[i] < containerWidth + MEASURE_TOLERANCE) {
127
- filledWidth += tabsSizes[i];
128
- tabsToRender.push(tabsSizes[i]);
129
- } else {
130
- break;
131
- }
132
- }
133
-
134
- if (tabsToRender.length < tabsSizes.length && !renderMore) {
135
- for (let i = tabsToRender.length - 1; i >= 0; i--) {
136
- if (filledWidth + more < containerWidth + MEASURE_TOLERANCE) {
137
- filledWidth += more;
138
- renderMore = true;
139
- break;
140
- } else {
141
- filledWidth -= tabsToRender[i];
142
- tabsToRender.pop();
143
- }
144
- }
145
- }
146
-
147
- if (selectedIndex > tabsToRender.length - 1) {
148
- const selectedWidth = tabsSizes[selectedIndex];
149
-
150
- for (let i = tabsToRender.length - 1; i >= 0; i--) {
151
- if (filledWidth + selectedWidth < containerWidth + MEASURE_TOLERANCE) {
152
- filledWidth += selectedWidth;
153
- break;
154
- } else {
155
- filledWidth -= tabsToRender[i];
156
- tabsToRender.pop();
157
- }
158
- }
159
- }
160
-
161
- if (elements.lastVisibleIndex !== tabsToRender.length - 1) {
162
- dispatch({
163
- type: ACTIONS.DEFINE_LAST_VISIBLE_INDEX,
164
- lastVisibleIndex: tabsToRender.length - 1
165
- });
166
- }
167
- }, [children, dispatch, elements.lastVisibleIndex, elements.sizes, selectedIndex]);
168
- };
169
-
170
- const CollapsibleTabs = _ref2 => {
171
- let {
172
- children,
173
- selected,
174
- onSelect,
175
- moreClassName,
176
- moreActiveClassName,
177
- morePopupClassName,
178
- morePopupBeforeEnd,
179
- morePopupItemClassName,
180
- initialVisibleItems
181
- } = _ref2;
182
- const [elements, dispatch] = React.useReducer(visibilityReducer, DEFAULT_STATE);
183
- const [preparedElements, setPreparedElements] = React.useState({
184
- visible: [],
185
- hidden: []
186
- });
187
- const measureRef = React.useRef(null);
188
- const selectedIndex = React.useMemo(() => {
189
- var _children$filter$find;
190
-
191
- return (_children$filter$find = children.filter(tab => tab.props.alwaysHidden !== true).findIndex(tab => tab.props.id === selected)) !== null && _children$filter$find !== void 0 ? _children$filter$find : null;
192
- }, [children, selected]);
193
- const visibleElements = React.useMemo(() => {
194
- let items;
195
-
196
- if (preparedElements.ready) {
197
- items = preparedElements.visible;
198
- } else {
199
- items = initialVisibleItems ? children.filter(item => item.props.alwaysHidden !== true).slice(0, initialVisibleItems) : [];
200
- }
201
-
202
- return getTabTitles({
203
- items,
204
- selected,
205
- onSelect
206
- });
207
- }, [initialVisibleItems, children, preparedElements.ready, preparedElements.visible, onSelect, selected]);
208
- const adjustTabs = useAdjustHandler({
209
- dispatch,
210
- elements,
211
- children,
212
- selectedIndex
213
- }); // Prepare list of visible and hidden elements
214
-
215
- React.useEffect(() => {
216
- const timeout = setTimeout(() => {
217
- var _elements$lastVisible2;
218
-
219
- const res = children.reduce((accumulator, tab) => {
220
- var _elements$lastVisible;
221
-
222
- if (tab.props.alwaysHidden !== true && accumulator.visible.length - 1 < ((_elements$lastVisible = elements.lastVisibleIndex) !== null && _elements$lastVisible !== void 0 ? _elements$lastVisible : 0)) {
223
- accumulator.visible.push(tab);
224
- } else {
225
- accumulator.hidden.push(tab);
226
- }
227
-
228
- return accumulator;
229
- }, {
230
- visible: [],
231
- hidden: [],
232
- ready: elements.lastVisibleIndex !== null
233
- });
234
-
235
- if (selectedIndex > ((_elements$lastVisible2 = elements.lastVisibleIndex) !== null && _elements$lastVisible2 !== void 0 ? _elements$lastVisible2 : 0)) {
236
- const selectedItem = children.find(tab => !tab.props.alwaysHidden && tab.props.id === selected);
237
- res.visible.push(selectedItem);
238
- }
239
-
240
- const allVisibleTheSame = res.visible.length === preparedElements.visible.length && res.visible.every((item, index) => item === preparedElements.visible[index]);
241
- const allHiddenTheSame = res.hidden.length === preparedElements.hidden.length && res.hidden.every((item, index) => item === preparedElements.hidden[index]);
242
-
243
- if (!allVisibleTheSame || !allHiddenTheSame || preparedElements.ready !== res.ready) {
244
- fastdom.mutate(() => setPreparedElements(res));
245
- }
246
- }, DEFAULT_DEBOUNCE_INTERVAL);
247
- return () => {
248
- clearTimeout(timeout);
249
- };
250
- }, [children, elements.lastVisibleIndex, preparedElements, selected, selectedIndex]); // Get list of all possibly visible elements to render in a measure container
251
-
252
- const childrenToMeasure = React.useMemo(() => {
253
- const items = children.filter(tab => tab.props.alwaysHidden !== true);
254
- return getTabTitles({
255
- items,
256
- tabIndex: -1
257
- });
258
- }, [children]); // Initial measure for tabs and more button sizes
259
-
260
- React.useEffect(() => {
261
- if (measureRef.current == null) {
262
- return;
263
- }
264
-
265
- const measureTask = fastdom.measure(() => {
266
- const container = measureRef.current;
267
- const descendants = [...container.children];
268
- const moreButton = descendants.pop();
269
- let moreButtonWidth = moreButton.offsetWidth;
270
- const {
271
- marginLeft: moreButtonMarginLeft,
272
- marginRight: moreButtonMarginRight
273
- } = getComputedStyle(moreButton);
274
- moreButtonWidth += +moreButtonMarginLeft.replace('px', '') + +moreButtonMarginRight.replace('px', '');
275
- const tabsWidth = descendants.map(node => {
276
- const {
277
- marginLeft,
278
- marginRight
279
- } = getComputedStyle(node);
280
- const width = node.getBoundingClientRect().width;
281
- return width + +marginLeft.replace('px', '') + +marginRight.replace('px', '');
282
- }); // eslint-disable-next-line no-param-reassign
283
-
284
- const newSummaryWidth = tabsWidth.reduce((acc, curr) => acc += curr, 0); // eslint-disable-next-line no-param-reassign
285
-
286
- const oldSummaryWidth = elements.sizes.tabs.reduce((acc, curr) => acc += curr, 0);
287
-
288
- if (elements.sizes.more !== moreButtonWidth || newSummaryWidth !== oldSummaryWidth) {
289
- fastdom.mutate(() => dispatch({
290
- type: ACTIONS.MEASURE_TABS,
291
- more: moreButtonWidth,
292
- tabs: tabsWidth
293
- }));
294
- }
295
- }); // eslint-disable-next-line consistent-return
296
-
297
- return () => {
298
- fastdom.clear(measureTask);
299
- };
300
- }, [children, elements.sizes.more, elements.sizes.tabs]); // Start observers to listen resizing and mutation
301
-
302
- React.useEffect(() => {
303
- let measureTask = null;
304
- let resizeObserver = null;
305
-
306
- if (measureRef.current === null) {
307
- return;
308
- }
309
-
310
- resizeObserver = new ResizeObserver(entries => {
311
- entries.forEach(entry => {
312
- fastdom.clear(measureTask);
313
- measureTask = fastdom.mutate(() => adjustTabs(entry));
314
- });
315
- });
316
- resizeObserver.observe(measureRef.current); // eslint-disable-next-line consistent-return
317
-
318
- return () => {
319
- fastdom.clear(measureTask);
320
- resizeObserver.disconnect();
321
- };
322
- }, [adjustTabs]);
323
- const isAdjusted = elements.lastVisibleIndex !== null && preparedElements.ready === true || initialVisibleItems;
324
- const className = classNames(modules_02138f4a.titles, modules_02138f4a.autoCollapse, isAdjusted && modules_02138f4a.adjusted);
325
- return /*#__PURE__*/React.createElement("div", {
326
- className: modules_02138f4a.autoCollapseContainer
327
- }, /*#__PURE__*/React.createElement("div", {
328
- className: classNames(className, modules_02138f4a.rendered)
329
- }, visibleElements, /*#__PURE__*/React.createElement(MoreButton, {
330
- moreClassName: moreClassName,
331
- moreActiveClassName: moreActiveClassName,
332
- morePopupClassName: morePopupClassName,
333
- morePopupBeforeEnd: morePopupBeforeEnd,
334
- morePopupItemClassName: morePopupItemClassName,
335
- items: preparedElements.hidden,
336
- selected: selected,
337
- onSelect: onSelect
338
- })), /*#__PURE__*/React.createElement("div", {
339
- ref: measureRef,
340
- className: classNames(className, modules_02138f4a.measure)
341
- }, childrenToMeasure, /*#__PURE__*/React.createElement(FakeMoreButton, {
342
- hasActiveChildren: preparedElements.hidden.some(item => item.props.alwaysHidden && item.props.id === selected),
343
- moreClassName: moreClassName,
344
- moreActiveClassName: moreActiveClassName
345
- })));
346
- };
347
- CollapsibleTabs.propTypes = {
348
- children: PropTypes.node.isRequired,
349
- selected: PropTypes.string,
350
- onSelect: PropTypes.func.isRequired,
351
- moreClassName: PropTypes.string,
352
- moreActiveClassName: PropTypes.string,
353
- morePopupClassName: PropTypes.string,
354
- morePopupItemClassName: PropTypes.string,
355
- initialVisibleItems: PropTypes.number,
356
- morePopupBeforeEnd: PropTypes.element
357
- };
358
- var CollapsibleTabs$1 = /*#__PURE__*/React.memo(CollapsibleTabs);
359
-
360
- export default CollapsibleTabs$1;
361
- export { CollapsibleTabs };
@@ -1,13 +0,0 @@
1
- import PropTypes from 'prop-types';
2
-
3
- const CustomItem = _ref => {
4
- let {
5
- children
6
- } = _ref;
7
- return children;
8
- };
9
- CustomItem.propTypes = {
10
- children: PropTypes.node.isRequired
11
- };
12
-
13
- export { CustomItem };
@@ -1,159 +0,0 @@
1
- import { _ as _defineProperty, a as _objectWithoutProperties, b as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React, { PureComponent } from 'react';
3
- import PropTypes from 'prop-types';
4
- import classNames from 'classnames';
5
- import memoize from '../global/memoize.js';
6
- import Theme, { withTheme } from '../global/theme.js';
7
- import joinDataTestAttributes from '../global/data-tests.js';
8
- import { m as modules_02138f4a } from '../_helpers/tabs.js';
9
- import TabLink from './tab-link.js';
10
- import CollapsibleTabs from './collapsible-tabs.js';
11
- import { CustomItem } from './custom-item.js';
12
- import '../link/link.js';
13
- import 'focus-visible';
14
- import '../link/clickableLink.js';
15
- import 'fastdom';
16
- import './collapsible-more.js';
17
- import '@jetbrains/icons/chevron-10px';
18
- import '../popup/popup.consts.js';
19
- import '../popup-menu/popup-menu.js';
20
- import '../popup/popup.js';
21
- import 'react-dom';
22
- import '../global/get-uid.js';
23
- import '../global/schedule-raf.js';
24
- import '../global/dom.js';
25
- import '../shortcuts/shortcuts.js';
26
- import '../shortcuts/core.js';
27
- import 'combokeys';
28
- import '../global/sniffer.js';
29
- import 'sniffr';
30
- import '../tab-trap/tab-trap.js';
31
- import '../popup/position.js';
32
- import '../popup/popup.target.js';
33
- import '../list/list.js';
34
- import 'react-virtualized/dist/es/List';
35
- import 'react-virtualized/dist/es/AutoSizer';
36
- import 'react-virtualized/dist/es/WindowScroller';
37
- import 'react-virtualized/dist/es/CellMeasurer';
38
- import 'util-deprecate';
39
- import 'memoize-one';
40
- import '../global/create-stateful-context.js';
41
- import '../list/list__link.js';
42
- import '../_helpers/list.js';
43
- import '../list/list__item.js';
44
- import '../avatar/avatar.js';
45
- import '../global/url.js';
46
- import '../checkbox/checkbox.js';
47
- import '@jetbrains/icons/checkmark';
48
- import '@jetbrains/icons/remove-10px';
49
- import '../icon/icon.js';
50
- import '../icon/icon__constants.js';
51
- import '../_helpers/icon__svg.js';
52
- import '../list/list__custom.js';
53
- import '../global/get-event-key.js';
54
- import '../list/list__title.js';
55
- import '../list/list__separator.js';
56
- import '../list/list__hint.js';
57
- import '../list/consts.js';
58
- import '../dropdown/dropdown.js';
59
- import '../_helpers/anchor.js';
60
- import '../button/button.js';
61
- import '../_helpers/button__classes.js';
62
- import './collapsible-tab.js';
63
-
64
- class Tabs extends PureComponent {
65
- constructor() {
66
- super(...arguments);
67
-
68
- _defineProperty(this, "handleSelect", memoize(key => () => this.props.onSelect(key)));
69
-
70
- _defineProperty(this, "getTabTitle", (child, i) => {
71
- if (child == null || typeof child !== 'object' || child.type === CustomItem) {
72
- return child;
73
- }
74
-
75
- const {
76
- selected
77
- } = this.props;
78
- const {
79
- title,
80
- id,
81
- disabled,
82
- href,
83
- className,
84
- activeClassName
85
- } = child.props;
86
- const key = id || String(i);
87
- const isSelected = key === selected;
88
- const titleClasses = classNames(modules_02138f4a.title, className, isSelected && activeClassName, {
89
- [modules_02138f4a.selected]: isSelected
90
- });
91
- return /*#__PURE__*/React.createElement(TabLink, {
92
- title: title,
93
- isSelected: isSelected,
94
- active: true,
95
- key: key,
96
- href: href,
97
- innerClassName: titleClasses,
98
- className: titleClasses,
99
- disabled: disabled,
100
- onPlainLeftClick: this.handleSelect(key)
101
- });
102
- });
103
- }
104
-
105
- render() {
106
- const _this$props = this.props,
107
- {
108
- className,
109
- children,
110
- selected,
111
- theme,
112
- autoCollapse,
113
- 'data-test': dataTest
114
- } = _this$props,
115
- restProps = _objectWithoutProperties(_this$props, ["className", "children", "selected", "theme", "autoCollapse", "data-test"]);
116
-
117
- const classes = classNames(modules_02138f4a.tabs, className, modules_02138f4a[theme]);
118
- const childrenArray = React.Children.toArray(children).filter(Boolean);
119
- return /*#__PURE__*/React.createElement("div", {
120
- className: classes,
121
- "data-test": joinDataTestAttributes('ring-dumb-tabs', dataTest)
122
- }, autoCollapse === true ? /*#__PURE__*/React.createElement(CollapsibleTabs, _extends({}, restProps, {
123
- onSelect: this.handleSelect,
124
- selected: selected
125
- }), childrenArray) : /*#__PURE__*/React.createElement("div", {
126
- className: modules_02138f4a.titles
127
- }, childrenArray.map(this.getTabTitle)), /*#__PURE__*/React.createElement("div", {
128
- className: modules_02138f4a.tab
129
- }, childrenArray.find((_ref, i) => {
130
- let {
131
- props
132
- } = _ref;
133
- return (props.id || String(i)) === selected;
134
- })));
135
- }
136
-
137
- }
138
-
139
- _defineProperty(Tabs, "propTypes", {
140
- theme: PropTypes.string,
141
- selected: PropTypes.string,
142
- className: PropTypes.string,
143
- href: PropTypes.string,
144
- children: PropTypes.node.isRequired,
145
- onSelect: PropTypes.func,
146
- 'data-test': PropTypes.string,
147
- autoCollapse: PropTypes.bool
148
- });
149
-
150
- _defineProperty(Tabs, "defaultProps", {
151
- onSelect() {}
152
-
153
- });
154
-
155
- _defineProperty(Tabs, "Theme", Theme);
156
-
157
- var Tabs$1 = withTheme()(Tabs);
158
-
159
- export default Tabs$1;