@jetbrains/ring-ui 4.2.4 → 4.2.7

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