@jetbrains/ring-ui 5.1.1 → 6.0.1-beta.0

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 (702) hide show
  1. package/README.md +1 -6
  2. package/components/alert/alert.d.ts +1 -1
  3. package/components/alert/container.css +3 -0
  4. package/components/alert-service/alert-service.d.ts +2 -2
  5. package/components/analytics/analytics.d.ts +21 -7
  6. package/components/analytics/analytics.js +19 -24
  7. package/components/analytics/analytics__custom-plugin.d.ts +6 -16
  8. package/components/analytics/analytics__custom-plugin.js +12 -52
  9. package/components/analytics/analytics__fus-plugin.d.ts +15 -25
  10. package/components/analytics/analytics__fus-plugin.js +15 -73
  11. package/components/analytics/analytics__ga-plugin.d.ts +13 -3
  12. package/components/analytics/analytics__ga-plugin.js +35 -5
  13. package/components/analytics/analytics__plugin-utils.d.ts +16 -0
  14. package/components/analytics/analytics__plugin-utils.js +26 -1
  15. package/components/auth/auth__core.d.ts +5 -4
  16. package/components/auth/auth__core.js +44 -27
  17. package/components/auth-dialog/auth-dialog.d.ts +2 -2
  18. package/components/auth-dialog/auth-dialog.js +3 -1
  19. package/components/auth-dialog-service/auth-dialog-service.js +4 -1
  20. package/components/avatar/avatar.d.ts +3 -3
  21. package/components/avatar/fallback-avatar.d.ts +2 -2
  22. package/components/avatar/fallback-avatar.js +2 -1
  23. package/components/avatar-editor-ng/avatar-editor-ng.css +1 -1
  24. package/components/badge/badge.d.ts +2 -2
  25. package/components/button/button.css +7 -7
  26. package/components/button/button.d.ts +3 -4
  27. package/components/button/button.js +0 -1
  28. package/components/button-group/button-group.css +2 -2
  29. package/components/button-group/button-group.d.ts +2 -2
  30. package/components/button-group/caption.d.ts +2 -2
  31. package/components/button-ng/button-ng.examples.js +2 -2
  32. package/components/button-ng/button-ng.js +1 -1
  33. package/components/button-set/button-set.d.ts +2 -2
  34. package/components/button-toolbar/button-toolbar.d.ts +2 -2
  35. package/components/checkbox/checkbox.css +2 -2
  36. package/components/checkbox/checkbox.d.ts +2 -2
  37. package/components/code/code.d.ts +1 -1
  38. package/components/confirm/confirm.d.ts +1 -1
  39. package/components/confirm/confirm.js +3 -3
  40. package/components/confirm-ng/confirm-ng.examples.js +1 -1
  41. package/components/confirm-service/confirm-service.js +2 -2
  42. package/components/content-layout/content-layout.d.ts +2 -2
  43. package/components/content-layout/sidebar.d.ts +2 -2
  44. package/components/contenteditable/contenteditable.d.ts +3 -3
  45. package/components/control-label/control-label.css +23 -0
  46. package/components/control-label/control-label.d.ts +11 -0
  47. package/components/control-label/control-label.js +22 -0
  48. package/components/data-list/data-list.css +2 -1
  49. package/components/data-list/data-list.d.ts +3 -3
  50. package/components/data-list/data-list.mock.d.ts +2 -2
  51. package/components/data-list/item.d.ts +3 -3
  52. package/components/data-list/title.d.ts +1 -1
  53. package/components/date-picker/consts.d.ts +5 -5
  54. package/components/date-picker/date-input.d.ts +3 -12
  55. package/components/date-picker/date-input.js +9 -15
  56. package/components/date-picker/date-picker.css +1 -1
  57. package/components/date-picker/date-picker.d.ts +8 -6
  58. package/components/date-picker/date-picker.js +9 -15
  59. package/components/date-picker/date-popup.d.ts +1 -1
  60. package/components/date-picker/date-popup.js +2 -1
  61. package/components/date-picker/day.d.ts +2 -2
  62. package/components/date-picker/month-names.d.ts +2 -2
  63. package/components/date-picker/month-names.js +2 -2
  64. package/components/date-picker/month-slider.d.ts +2 -2
  65. package/components/date-picker/month.d.ts +2 -2
  66. package/components/date-picker/months.d.ts +2 -2
  67. package/components/date-picker/months.js +46 -29
  68. package/components/date-picker/weekdays.d.ts +2 -2
  69. package/components/date-picker/years.d.ts +6 -2
  70. package/components/date-picker/years.js +26 -14
  71. package/components/dialog/dialog.css +1 -1
  72. package/components/dialog/dialog.d.ts +4 -16
  73. package/components/dialog/dialog.js +4 -2
  74. package/components/dialog-ng/dialog-ng.examples.js +1 -1
  75. package/components/dialog-ng/dialog-ng.js +4 -5
  76. package/components/dropdown/anchor.d.ts +1 -1
  77. package/components/dropdown/dropdown.d.ts +8 -1
  78. package/components/editable-heading/editable-heading.css +20 -7
  79. package/components/editable-heading/editable-heading.d.ts +2 -2
  80. package/components/editable-heading/editable-heading.js +39 -12
  81. package/components/error-bubble/error-bubble.d.ts +2 -2
  82. package/components/error-message/error-message.d.ts +2 -2
  83. package/components/footer/footer.js +1 -0
  84. package/components/form/form.examples.js +1 -0
  85. package/components/global/angular-component-factory.js +13 -7
  86. package/components/global/angular-component-factory.test.js +30 -10
  87. package/components/global/controls-height.d.ts +2 -0
  88. package/components/global/controls-height.js +8 -0
  89. package/components/global/create-stateful-context.d.ts +1 -1
  90. package/components/global/focus-sensor-hoc.d.ts +1 -0
  91. package/components/global/focus-sensor-hoc.js +5 -4
  92. package/components/global/react-dom-renderer.d.ts +4 -4
  93. package/components/global/react-dom-renderer.js +5 -5
  94. package/components/global/react-render-adapter.js +19 -31
  95. package/components/global/ring-angular-component.js +1 -3
  96. package/components/global/ring-angular-component.test.js +2 -1
  97. package/components/global/use-event-callback.d.ts +1 -0
  98. package/components/global/use-event-callback.js +14 -0
  99. package/components/global/variables_dark.css +2 -2
  100. package/components/grid/col.d.ts +2 -2
  101. package/components/grid/grid.d.ts +2 -2
  102. package/components/grid/row.d.ts +2 -2
  103. package/components/group/group.d.ts +2 -2
  104. package/components/header/header.d.ts +2 -2
  105. package/components/header/logo.d.ts +2 -2
  106. package/components/header/profile.d.ts +4 -2
  107. package/components/header/profile.js +15 -11
  108. package/components/header/services-link.d.ts +2 -2
  109. package/components/header/services.d.ts +2 -2
  110. package/components/header/smart-profile.d.ts +2 -2
  111. package/components/header/smart-services.d.ts +2 -2
  112. package/components/header/tray-icon.d.ts +2 -2
  113. package/components/header/tray.d.ts +2 -2
  114. package/components/heading/heading.css +8 -8
  115. package/components/http/http.d.ts +16 -6
  116. package/components/http/http.js +26 -0
  117. package/components/hub-source/hub-source__users-groups.d.ts +1 -1
  118. package/components/i18n/README.md +46 -0
  119. package/components/i18n/i18n-context.d.ts +13 -0
  120. package/components/i18n/i18n-context.js +14 -0
  121. package/components/i18n/i18n.d.ts +59 -0
  122. package/components/i18n/i18n.js +26 -0
  123. package/components/i18n/messages.json +53 -0
  124. package/components/icon/icon.d.ts +3 -3
  125. package/components/icon/icon__svg.d.ts +1 -1
  126. package/components/input/input-legacy.css +3 -3
  127. package/components/input/input.css +8 -21
  128. package/components/input/input.d.ts +7 -1
  129. package/components/input/input.js +18 -14
  130. package/components/input-ng/input-ng.examples.js +3 -1
  131. package/components/input-ng/input-ng.js +3 -2
  132. package/components/input-size/input-size.examples.js +1 -0
  133. package/components/island/adaptive-island-hoc.d.ts +2 -2
  134. package/components/island/content.d.ts +1 -1
  135. package/components/island/header.d.ts +2 -2
  136. package/components/island/island.css +1 -1
  137. package/components/island/island.d.ts +3 -3
  138. package/components/island-legacy/content-legacy.d.ts +2 -2
  139. package/components/island-legacy/header-legacy.d.ts +2 -2
  140. package/components/island-legacy/island-legacy.d.ts +2 -2
  141. package/components/island-ng/island-ng.js +3 -3
  142. package/components/link/clickableLink.d.ts +1 -1
  143. package/components/link/link.css +1 -1
  144. package/components/link/link.d.ts +8 -9
  145. package/components/link/link.js +0 -1
  146. package/components/list/consts.js +3 -0
  147. package/components/list/list.css +2 -2
  148. package/components/list/list.d.ts +7 -7
  149. package/components/list/list.js +4 -1
  150. package/components/list/list__custom.d.ts +1 -1
  151. package/components/list/list__hint.d.ts +2 -2
  152. package/components/list/list__item.d.ts +2 -2
  153. package/components/list/list__link.d.ts +2 -2
  154. package/components/list/list__separator.d.ts +2 -2
  155. package/components/list/list__title.d.ts +2 -2
  156. package/components/loader/loader.d.ts +2 -2
  157. package/components/loader-inline/loader-inline.d.ts +2 -2
  158. package/components/loader-ng/loader-ng.js +1 -1
  159. package/components/loader-screen/loader-screen.d.ts +2 -2
  160. package/components/login-dialog/login-dialog.d.ts +2 -2
  161. package/components/login-dialog/service.js +4 -1
  162. package/components/markdown/code.d.ts +2 -2
  163. package/components/markdown/heading.d.ts +2 -2
  164. package/components/markdown/link.d.ts +2 -2
  165. package/components/markdown/markdown.d.ts +2 -2
  166. package/components/message/message.d.ts +3 -7
  167. package/components/message/message.js +17 -16
  168. package/components/pager/pager.d.ts +8 -13
  169. package/components/pager/pager.js +12 -14
  170. package/components/panel/panel.css +1 -1
  171. package/components/panel/panel.d.ts +2 -2
  172. package/components/popup/popup.d.ts +2 -2
  173. package/components/popup/popup.js +1 -1
  174. package/components/popup/position.d.ts +1 -1
  175. package/components/popup/position.js +43 -33
  176. package/components/popup-menu/popup-menu.d.ts +2 -2
  177. package/components/progress-bar/progress-bar.d.ts +2 -2
  178. package/components/promised-click-ng/promised-click-ng.js +1 -1
  179. package/components/query-assist/query-assist.css +16 -11
  180. package/components/query-assist/query-assist.d.ts +3 -7
  181. package/components/query-assist/query-assist.js +50 -31
  182. package/components/query-assist/query-assist__suggestions.d.ts +2 -2
  183. package/components/radio/radio.css +1 -1
  184. package/components/radio/radio.d.ts +1 -1
  185. package/components/radio/radio__item.d.ts +1 -1
  186. package/components/select/select-popup.css +2 -2
  187. package/components/select/select.css +9 -5
  188. package/components/select/select.d.ts +20 -9
  189. package/components/select/select.js +47 -23
  190. package/components/select/select__filter.d.ts +2 -3
  191. package/components/select/select__filter.js +4 -2
  192. package/components/select/select__popup.d.ts +48 -8
  193. package/components/select/select__popup.js +29 -8
  194. package/components/shortcuts/shortcuts-hoc.d.ts +2 -2
  195. package/components/shortcuts/shortcuts.d.ts +1 -1
  196. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -2
  197. package/components/sidebar-ng/sidebar-ng.js +1 -2
  198. package/components/tab-trap/tab-trap.d.ts +1 -1
  199. package/components/table/cell.d.ts +2 -2
  200. package/components/table/disable-hover-hoc.d.ts +2 -2
  201. package/components/table/header-cell.d.ts +2 -2
  202. package/components/table/header.d.ts +3 -14
  203. package/components/table/header.js +5 -49
  204. package/components/table/multitable.d.ts +2 -2
  205. package/components/table/row-with-focus-sensor.d.ts +1 -1
  206. package/components/table/row.d.ts +2 -1
  207. package/components/table/row.js +4 -3
  208. package/components/table/smart-table.d.ts +3 -1
  209. package/components/table/table.css +9 -26
  210. package/components/table/table.d.ts +6 -4
  211. package/components/table/table.js +5 -3
  212. package/components/tabs/collapsible-more.d.ts +3 -3
  213. package/components/tabs/collapsible-tab.d.ts +1 -1
  214. package/components/tabs/collapsible-tabs.d.ts +2 -2
  215. package/components/tabs/dumb-tabs.d.ts +5 -3
  216. package/components/tabs/dumb-tabs.js +3 -2
  217. package/components/tabs/smart-tabs.d.ts +2 -2
  218. package/components/tabs/tab-link.d.ts +1 -1
  219. package/components/tabs/tab.d.ts +2 -2
  220. package/components/tabs/tab.js +3 -3
  221. package/components/tabs/tabs.css +4 -1
  222. package/components/tag/tag.css +3 -3
  223. package/components/tag/tag.d.ts +5 -5
  224. package/components/tags-input/tags-input.css +1 -1
  225. package/components/tags-input/tags-input.d.ts +9 -4
  226. package/components/tags-input/tags-input.js +7 -7
  227. package/components/tags-list/tags-list.d.ts +2 -2
  228. package/components/template-ng/template-ng.js +1 -2
  229. package/components/text/text.css +12 -0
  230. package/components/text/text.d.ts +8 -2
  231. package/components/text/text.js +12 -2
  232. package/components/toggle/toggle.css +1 -1
  233. package/components/toggle/toggle.d.ts +2 -2
  234. package/components/tooltip/tooltip.d.ts +1 -1
  235. package/components/user-agreement/service.js +4 -1
  236. package/components/user-agreement/user-agreement.d.ts +3 -11
  237. package/components/user-agreement/user-agreement.js +31 -30
  238. package/components/user-card/card.d.ts +22 -21
  239. package/components/user-card/card.js +29 -29
  240. package/components/user-card/smart-user-card-tooltip.d.ts +3 -3
  241. package/components/user-card/tooltip.d.ts +11 -6
  242. package/components/user-card/tooltip.js +1 -1
  243. package/components/user-card/user-card.css +10 -1
  244. package/dist/_helpers/_rollupPluginBabelHelpers.js +614 -1
  245. package/dist/_helpers/anchor.js +7 -8
  246. package/dist/_helpers/badge.js +1 -1
  247. package/dist/_helpers/button-group.js +1 -1
  248. package/dist/_helpers/button-set.js +1 -1
  249. package/dist/_helpers/button-toolbar.js +1 -1
  250. package/dist/_helpers/button__classes.js +17 -29
  251. package/dist/_helpers/card.js +100 -91
  252. package/dist/_helpers/checkbox.js +1 -1
  253. package/dist/_helpers/control-label.js +3 -0
  254. package/dist/_helpers/date-picker.js +1 -1
  255. package/dist/_helpers/dialog__body-scroll-preventer.js +21 -12
  256. package/dist/_helpers/error-message.js +1 -1
  257. package/dist/_helpers/footer.js +31 -35
  258. package/dist/_helpers/grid.js +1 -1
  259. package/dist/_helpers/group.js +1 -1
  260. package/dist/_helpers/header.js +1 -1
  261. package/dist/_helpers/icon.js +1 -1
  262. package/dist/_helpers/input.js +1 -1
  263. package/dist/_helpers/island.js +1 -1
  264. package/dist/_helpers/link.js +1 -1
  265. package/dist/_helpers/list.js +1 -1
  266. package/dist/_helpers/loader-inline.js +1 -1
  267. package/dist/_helpers/loader-screen.js +1 -1
  268. package/dist/_helpers/panel.js +1 -1
  269. package/dist/_helpers/query-assist__suggestions.js +92 -75
  270. package/dist/_helpers/radio.js +1 -1
  271. package/dist/_helpers/select__filter.js +69 -42
  272. package/dist/_helpers/services-link.js +33 -21
  273. package/dist/_helpers/sidebar.js +87 -86
  274. package/dist/_helpers/table.js +1 -1
  275. package/dist/_helpers/tabs.js +1 -1
  276. package/dist/_helpers/theme.js +43 -36
  277. package/dist/_helpers/title.js +66 -56
  278. package/dist/alert/alert.d.ts +1 -1
  279. package/dist/alert/alert.js +164 -127
  280. package/dist/alert/container.js +40 -29
  281. package/dist/alert-service/alert-service.d.ts +2 -2
  282. package/dist/alert-service/alert-service.js +169 -103
  283. package/dist/analytics/analytics.d.ts +21 -7
  284. package/dist/analytics/analytics.js +90 -71
  285. package/dist/analytics/analytics__custom-plugin.d.ts +6 -16
  286. package/dist/analytics/analytics__custom-plugin.js +74 -87
  287. package/dist/analytics/analytics__fus-plugin.d.ts +15 -25
  288. package/dist/analytics/analytics__fus-plugin.js +31 -89
  289. package/dist/analytics/analytics__ga-plugin.d.ts +13 -3
  290. package/dist/analytics/analytics__ga-plugin.js +76 -25
  291. package/dist/analytics/analytics__plugin-utils.d.ts +16 -0
  292. package/dist/analytics/analytics__plugin-utils.js +52 -21
  293. package/dist/auth/auth.js +39 -5
  294. package/dist/auth/auth__core.d.ts +5 -4
  295. package/dist/auth/auth__core.js +1459 -719
  296. package/dist/auth/background-flow.js +125 -84
  297. package/dist/auth/down-notification.js +76 -32
  298. package/dist/auth/iframe-flow.js +129 -69
  299. package/dist/auth/landing.js +93 -31
  300. package/dist/auth/request-builder.js +79 -45
  301. package/dist/auth/response-parser.js +117 -85
  302. package/dist/auth/storage.js +322 -161
  303. package/dist/auth/token-validator.js +239 -128
  304. package/dist/auth/window-flow.js +126 -83
  305. package/dist/auth-dialog/auth-dialog.d.ts +2 -2
  306. package/dist/auth-dialog/auth-dialog.js +152 -94
  307. package/dist/auth-dialog-service/auth-dialog-service.js +36 -10
  308. package/dist/auth-ng/auth-ng.js +73 -35
  309. package/dist/auth-ng/auth-ng.mock.js +6 -6
  310. package/dist/autofocus-ng/autofocus-ng.js +23 -8
  311. package/dist/avatar/avatar-example-datauri.js +1 -23
  312. package/dist/avatar/avatar.d.ts +3 -3
  313. package/dist/avatar/avatar.js +132 -99
  314. package/dist/avatar/fallback-avatar.d.ts +2 -2
  315. package/dist/avatar/fallback-avatar.js +44 -24
  316. package/dist/avatar-editor-ng/avatar-editor-ng.js +57 -25
  317. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  318. package/dist/avatar-ng/avatar-ng.js +22 -0
  319. package/dist/badge/badge.d.ts +2 -2
  320. package/dist/badge/badge.js +34 -26
  321. package/dist/badge-ng/badge-ng.js +12 -0
  322. package/dist/breadcrumb-ng/breadcrumb-ng.js +17 -32
  323. package/dist/button/button.d.ts +3 -4
  324. package/dist/button/button.js +89 -69
  325. package/dist/button/button__classes.js +1 -0
  326. package/dist/button-group/button-group.d.ts +2 -2
  327. package/dist/button-group/button-group.js +31 -15
  328. package/dist/button-group/caption.d.ts +2 -2
  329. package/dist/button-group/caption.js +19 -11
  330. package/dist/button-group-ng/button-group-ng.js +13 -7
  331. package/dist/button-ng/button-ng.js +132 -112
  332. package/dist/button-set/button-set.d.ts +2 -2
  333. package/dist/button-set/button-set.js +29 -15
  334. package/dist/button-set-ng/button-set-ng.js +2 -2
  335. package/dist/button-toolbar/button-toolbar.d.ts +2 -2
  336. package/dist/button-toolbar/button-toolbar.js +28 -14
  337. package/dist/button-toolbar-ng/button-toolbar-ng.js +5 -3
  338. package/dist/caret/caret.js +223 -188
  339. package/dist/checkbox/checkbox.d.ts +2 -2
  340. package/dist/checkbox/checkbox.js +83 -58
  341. package/dist/checkbox-ng/checkbox-ng.js +18 -28
  342. package/dist/clipboard/clipboard-fallback.js +10 -10
  343. package/dist/clipboard/clipboard.js +131 -35
  344. package/dist/code/code.d.ts +1 -1
  345. package/dist/code/code.js +153 -81
  346. package/dist/compiler-ng/compiler-ng.js +18 -15
  347. package/dist/confirm/confirm.d.ts +1 -1
  348. package/dist/confirm/confirm.js +85 -47
  349. package/dist/confirm-ng/confirm-ng.js +34 -6
  350. package/dist/confirm-service/confirm-service.js +67 -44
  351. package/dist/content-layout/content-layout.d.ts +2 -2
  352. package/dist/content-layout/content-layout.js +53 -35
  353. package/dist/content-layout/sidebar.d.ts +2 -2
  354. package/dist/content-layout/sidebar.js +1 -0
  355. package/dist/contenteditable/contenteditable.d.ts +3 -3
  356. package/dist/contenteditable/contenteditable.js +54 -43
  357. package/dist/control-label/control-label.d.ts +11 -0
  358. package/dist/control-label/control-label.js +31 -0
  359. package/dist/data-list/data-list.d.ts +3 -3
  360. package/dist/data-list/data-list.js +164 -114
  361. package/dist/data-list/data-list.mock.d.ts +2 -2
  362. package/dist/data-list/data-list.mock.js +11 -3
  363. package/dist/data-list/item.d.ts +3 -3
  364. package/dist/data-list/item.js +140 -113
  365. package/dist/data-list/selection.js +139 -77
  366. package/dist/data-list/title.d.ts +1 -1
  367. package/dist/data-list/title.js +12 -0
  368. package/dist/data-list-ng/data-list-ng.js +30 -1
  369. package/dist/date-picker/consts.d.ts +5 -5
  370. package/dist/date-picker/consts.js +18 -15
  371. package/dist/date-picker/date-input.d.ts +3 -12
  372. package/dist/date-picker/date-input.js +131 -107
  373. package/dist/date-picker/date-picker.d.ts +8 -6
  374. package/dist/date-picker/date-picker.js +214 -160
  375. package/dist/date-picker/date-popup.d.ts +1 -1
  376. package/dist/date-picker/date-popup.js +340 -297
  377. package/dist/date-picker/day.d.ts +2 -2
  378. package/dist/date-picker/day.js +78 -68
  379. package/dist/date-picker/month-names.d.ts +2 -2
  380. package/dist/date-picker/month-names.js +59 -41
  381. package/dist/date-picker/month-slider.d.ts +2 -2
  382. package/dist/date-picker/month-slider.js +59 -40
  383. package/dist/date-picker/month.d.ts +2 -2
  384. package/dist/date-picker/month.js +21 -15
  385. package/dist/date-picker/months.d.ts +2 -2
  386. package/dist/date-picker/months.js +80 -56
  387. package/dist/date-picker/weekdays.d.ts +2 -2
  388. package/dist/date-picker/weekdays.js +18 -12
  389. package/dist/date-picker/years.d.ts +6 -2
  390. package/dist/date-picker/years.js +102 -66
  391. package/dist/dialog/dialog.d.ts +4 -16
  392. package/dist/dialog/dialog.js +148 -98
  393. package/dist/dialog/dialog__body-scroll-preventer.js +5 -0
  394. package/dist/dialog-ng/dialog-ng.js +404 -291
  395. package/dist/dialog-ng/dialog-ng__template.js +1 -70
  396. package/dist/docked-panel-ng/docked-panel-ng.js +33 -19
  397. package/dist/dropdown/anchor.d.ts +1 -1
  398. package/dist/dropdown/anchor.js +10 -1
  399. package/dist/dropdown/dropdown.d.ts +8 -1
  400. package/dist/dropdown/dropdown.js +158 -130
  401. package/dist/dropdown-menu/dropdown-menu.js +102 -73
  402. package/dist/editable-heading/editable-heading.d.ts +2 -2
  403. package/dist/editable-heading/editable-heading.js +133 -62
  404. package/dist/error-bubble/error-bubble.d.ts +2 -2
  405. package/dist/error-bubble/error-bubble.js +60 -27
  406. package/dist/error-message/error-message.d.ts +2 -2
  407. package/dist/error-message/error-message.js +52 -29
  408. package/dist/error-message-ng/error-message-ng.js +12 -24
  409. package/dist/footer/footer.js +11 -2
  410. package/dist/footer-ng/footer-ng.js +52 -27
  411. package/dist/form-ng/form-ng.js +67 -57
  412. package/dist/global/angular-component-factory.js +78 -50
  413. package/dist/global/compose.js +10 -1
  414. package/dist/global/composeRefs.js +12 -7
  415. package/dist/global/controls-height.d.ts +2 -0
  416. package/dist/global/controls-height.js +10 -2
  417. package/dist/global/create-stateful-context.d.ts +1 -1
  418. package/dist/global/create-stateful-context.js +19 -19
  419. package/dist/global/data-tests.js +15 -7
  420. package/dist/global/dom.js +93 -55
  421. package/dist/global/focus-sensor-hoc.d.ts +1 -0
  422. package/dist/global/focus-sensor-hoc.js +118 -102
  423. package/dist/global/fuzzy-highlight.js +41 -27
  424. package/dist/global/get-event-key.js +8 -8
  425. package/dist/global/get-uid.js +8 -4
  426. package/dist/global/inject-styles.js +15 -10
  427. package/dist/global/linear-function.js +2 -2
  428. package/dist/global/listeners.js +50 -28
  429. package/dist/global/memoize.js +13 -6
  430. package/dist/global/normalize-indent.js +51 -19
  431. package/dist/global/promise-with-timeout.js +8 -6
  432. package/dist/global/prop-types.js +5 -3
  433. package/dist/global/react-dom-renderer.d.ts +4 -4
  434. package/dist/global/react-dom-renderer.js +44 -28
  435. package/dist/global/react-render-adapter.js +21 -15
  436. package/dist/global/rerender-hoc.js +40 -19
  437. package/dist/global/ring-angular-component.js +18 -10
  438. package/dist/global/schedule-raf.js +6 -5
  439. package/dist/global/sniffer.js +1 -1
  440. package/dist/global/theme.js +24 -0
  441. package/dist/global/trivial-template-tag.js +10 -3
  442. package/dist/global/typescript-utils.js +6 -2
  443. package/dist/global/url.js +27 -21
  444. package/dist/global/use-event-callback.d.ts +1 -0
  445. package/dist/global/use-event-callback.js +17 -0
  446. package/dist/grid/col.d.ts +2 -2
  447. package/dist/grid/col.js +42 -23
  448. package/dist/grid/grid.d.ts +2 -2
  449. package/dist/grid/grid.js +32 -13
  450. package/dist/grid/row.d.ts +2 -2
  451. package/dist/grid/row.js +32 -20
  452. package/dist/group/group.d.ts +2 -2
  453. package/dist/group/group.js +23 -13
  454. package/dist/group-ng/group-ng.js +2 -2
  455. package/dist/header/header.d.ts +2 -2
  456. package/dist/header/header.js +75 -25
  457. package/dist/header/logo.d.ts +2 -2
  458. package/dist/header/logo.js +31 -12
  459. package/dist/header/profile.d.ts +4 -2
  460. package/dist/header/profile.js +154 -105
  461. package/dist/header/services-link.d.ts +2 -2
  462. package/dist/header/services-link.js +9 -1
  463. package/dist/header/services.d.ts +2 -2
  464. package/dist/header/services.js +104 -63
  465. package/dist/header/smart-profile.d.ts +2 -2
  466. package/dist/header/smart-profile.js +194 -98
  467. package/dist/header/smart-services.d.ts +2 -2
  468. package/dist/header/smart-services.js +104 -52
  469. package/dist/header/tray-icon.d.ts +2 -2
  470. package/dist/header/tray-icon.js +36 -20
  471. package/dist/header/tray.d.ts +2 -2
  472. package/dist/header/tray.js +30 -17
  473. package/dist/heading/heading.js +26 -27
  474. package/dist/heading-ng/heading-ng.js +10 -0
  475. package/dist/http/http.d.ts +16 -6
  476. package/dist/http/http.js +357 -170
  477. package/dist/http/http.mock.js +105 -50
  478. package/dist/hub-source/hub-source.js +183 -77
  479. package/dist/hub-source/hub-source__user.js +45 -12
  480. package/dist/hub-source/hub-source__users-groups.d.ts +1 -1
  481. package/dist/hub-source/hub-source__users-groups.js +63 -34
  482. package/dist/i18n/i18n-context.d.ts +13 -0
  483. package/dist/i18n/i18n-context.js +28 -0
  484. package/dist/i18n/i18n.d.ts +59 -0
  485. package/dist/i18n/i18n.js +140 -0
  486. package/dist/icon/icon.d.ts +3 -3
  487. package/dist/icon/icon.js +77 -59
  488. package/dist/icon/icon__svg.d.ts +1 -1
  489. package/dist/icon/icon__svg.js +31 -24
  490. package/dist/icon/index.js +9 -0
  491. package/dist/icon-ng/icon-ng.js +27 -16
  492. package/dist/input/input.d.ts +7 -1
  493. package/dist/input/input.js +178 -131
  494. package/dist/input-ng/input-ng.js +77 -99
  495. package/dist/island/adaptive-island-hoc.d.ts +2 -2
  496. package/dist/island/adaptive-island-hoc.js +38 -27
  497. package/dist/island/content.d.ts +1 -1
  498. package/dist/island/content.js +104 -92
  499. package/dist/island/header.d.ts +2 -2
  500. package/dist/island/header.js +60 -47
  501. package/dist/island/island.d.ts +3 -3
  502. package/dist/island/island.js +33 -21
  503. package/dist/island-legacy/content-legacy.d.ts +2 -2
  504. package/dist/island-legacy/content-legacy.js +23 -13
  505. package/dist/island-legacy/header-legacy.d.ts +2 -2
  506. package/dist/island-legacy/header-legacy.js +25 -15
  507. package/dist/island-legacy/island-legacy.d.ts +2 -2
  508. package/dist/island-legacy/island-legacy.js +23 -13
  509. package/dist/island-ng/island-content-ng.js +17 -26
  510. package/dist/island-ng/island-header-ng.js +9 -12
  511. package/dist/island-ng/island-ng-class-fixer.js +3 -0
  512. package/dist/island-ng/island-ng.js +6 -10
  513. package/dist/link/clickableLink.d.ts +1 -1
  514. package/dist/link/clickableLink.js +43 -29
  515. package/dist/link/link.d.ts +8 -9
  516. package/dist/link/link.js +72 -62
  517. package/dist/link-ng/link-ng.js +5 -7
  518. package/dist/list/consts.js +4 -1
  519. package/dist/list/list.d.ts +7 -7
  520. package/dist/list/list.js +499 -402
  521. package/dist/list/list__custom.d.ts +1 -1
  522. package/dist/list/list__custom.js +60 -47
  523. package/dist/list/list__hint.d.ts +2 -2
  524. package/dist/list/list__hint.js +18 -8
  525. package/dist/list/list__item.d.ts +2 -2
  526. package/dist/list/list__item.js +167 -132
  527. package/dist/list/list__link.d.ts +2 -2
  528. package/dist/list/list__link.js +54 -38
  529. package/dist/list/list__separator.d.ts +2 -2
  530. package/dist/list/list__separator.js +24 -14
  531. package/dist/list/list__title.d.ts +2 -2
  532. package/dist/list/list__title.js +32 -22
  533. package/dist/list/list__users-groups-source.js +130 -54
  534. package/dist/loader/loader.d.ts +2 -2
  535. package/dist/loader/loader.js +66 -34
  536. package/dist/loader/loader__core.js +197 -129
  537. package/dist/loader-inline/loader-inline.d.ts +2 -2
  538. package/dist/loader-inline/loader-inline.js +32 -18
  539. package/dist/loader-inline-ng/loader-inline-ng.js +2 -2
  540. package/dist/loader-ng/loader-ng.js +44 -18
  541. package/dist/loader-screen/loader-screen.d.ts +2 -2
  542. package/dist/loader-screen/loader-screen.js +43 -20
  543. package/dist/loader-screen-ng/loader-screen-ng.js +45 -30
  544. package/dist/login-dialog/login-dialog.d.ts +2 -2
  545. package/dist/login-dialog/login-dialog.js +125 -78
  546. package/dist/login-dialog/service.js +39 -10
  547. package/dist/markdown/code.d.ts +2 -2
  548. package/dist/markdown/code.js +30 -9
  549. package/dist/markdown/heading.d.ts +2 -2
  550. package/dist/markdown/heading.js +3 -5
  551. package/dist/markdown/link.d.ts +2 -2
  552. package/dist/markdown/link.js +13 -7
  553. package/dist/markdown/markdown.d.ts +2 -2
  554. package/dist/markdown/markdown.js +67 -35
  555. package/dist/message/message.d.ts +3 -7
  556. package/dist/message/message.js +153 -119
  557. package/dist/message-bundle-ng/message-bundle-ng.js +130 -46
  558. package/dist/old-browsers-message/old-browsers-message.js +19 -11
  559. package/dist/old-browsers-message/old-browsers-message__stop.js +8 -0
  560. package/dist/old-browsers-message/white-list.js +17 -10
  561. package/dist/pager/pager.d.ts +8 -13
  562. package/dist/pager/pager.js +259 -188
  563. package/dist/pager-ng/pager-ng.js +39 -2
  564. package/dist/panel/panel.d.ts +2 -2
  565. package/dist/panel/panel.js +23 -13
  566. package/dist/panel-ng/panel-ng.js +13 -1
  567. package/dist/permissions/permissions.js +166 -122
  568. package/dist/permissions/permissions__cache.js +220 -191
  569. package/dist/permissions-ng/permissions-ng.js +89 -36
  570. package/dist/place-under-ng/place-under-ng.js +67 -45
  571. package/dist/popup/popup.consts.js +1 -1
  572. package/dist/popup/popup.d.ts +2 -2
  573. package/dist/popup/popup.js +299 -236
  574. package/dist/popup/popup.target.js +8 -9
  575. package/dist/popup/position.d.ts +1 -1
  576. package/dist/popup/position.js +175 -154
  577. package/dist/popup-menu/popup-menu.d.ts +2 -2
  578. package/dist/popup-menu/popup-menu.js +80 -42
  579. package/dist/progress-bar/progress-bar.d.ts +2 -2
  580. package/dist/progress-bar/progress-bar.js +66 -52
  581. package/dist/progress-bar-ng/progress-bar-ng.js +10 -0
  582. package/dist/promised-click-ng/promised-click-ng.js +93 -60
  583. package/dist/proxy-attrs/proxy-attrs.js +18 -9
  584. package/dist/query-assist/query-assist.d.ts +3 -7
  585. package/dist/query-assist/query-assist.js +677 -567
  586. package/dist/query-assist/query-assist__suggestions.d.ts +2 -2
  587. package/dist/query-assist/query-assist__suggestions.js +33 -2
  588. package/dist/query-assist-ng/query-assist-ng.js +41 -2
  589. package/dist/radio/radio.d.ts +1 -1
  590. package/dist/radio/radio.js +28 -14
  591. package/dist/radio/radio__item.d.ts +1 -1
  592. package/dist/radio/radio__item.js +60 -44
  593. package/dist/radio-ng/radio-ng.js +14 -25
  594. package/dist/save-field-ng/save-field-ng.js +90 -56
  595. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  596. package/dist/select/select.d.ts +20 -9
  597. package/dist/select/select.js +831 -699
  598. package/dist/select/select__filter.d.ts +2 -3
  599. package/dist/select/select__filter.js +37 -2
  600. package/dist/select/select__popup.d.ts +48 -8
  601. package/dist/select/select__popup.js +430 -293
  602. package/dist/select-ng/select-ng.js +130 -77
  603. package/dist/select-ng/select-ng__lazy.js +104 -51
  604. package/dist/select-ng/select-ng__options.js +93 -68
  605. package/dist/shortcuts/core.js +197 -146
  606. package/dist/shortcuts/shortcut-title.js +11 -6
  607. package/dist/shortcuts/shortcuts-hoc.d.ts +2 -2
  608. package/dist/shortcuts/shortcuts-hoc.js +43 -19
  609. package/dist/shortcuts/shortcuts.d.ts +1 -1
  610. package/dist/shortcuts/shortcuts.js +69 -43
  611. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +109 -58
  612. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  613. package/dist/shortcuts-ng/shortcuts-ng.js +110 -76
  614. package/dist/sidebar-ng/sidebar-ng.js +55 -25
  615. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  616. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  617. package/dist/storage/storage.js +34 -4
  618. package/dist/storage/storage__fallback.js +217 -143
  619. package/dist/storage/storage__local.js +155 -90
  620. package/dist/style.css +1 -1
  621. package/dist/tab-trap/tab-trap.d.ts +1 -1
  622. package/dist/tab-trap/tab-trap.js +117 -84
  623. package/dist/table/cell.d.ts +2 -2
  624. package/dist/table/cell.js +23 -9
  625. package/dist/table/disable-hover-hoc.d.ts +2 -2
  626. package/dist/table/disable-hover-hoc.js +44 -26
  627. package/dist/table/header-cell.d.ts +2 -2
  628. package/dist/table/header-cell.js +74 -54
  629. package/dist/table/header.d.ts +3 -14
  630. package/dist/table/header.js +102 -131
  631. package/dist/table/multitable.d.ts +2 -2
  632. package/dist/table/multitable.js +102 -86
  633. package/dist/table/row-with-focus-sensor.d.ts +1 -1
  634. package/dist/table/row-with-focus-sensor.js +69 -24
  635. package/dist/table/row.d.ts +2 -1
  636. package/dist/table/row.js +191 -155
  637. package/dist/table/selection-adapter.js +3 -1
  638. package/dist/table/selection-shortcuts-hoc.js +132 -131
  639. package/dist/table/selection.js +220 -150
  640. package/dist/table/smart-table.d.ts +3 -1
  641. package/dist/table/smart-table.js +87 -50
  642. package/dist/table/table.d.ts +6 -4
  643. package/dist/table/table.js +311 -247
  644. package/dist/table-legacy-ng/table-legacy-ng.js +120 -103
  645. package/dist/table-legacy-ng/table-legacy-ng__pager.js +46 -12
  646. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +92 -69
  647. package/dist/table-legacy-ng/table-legacy-ng__selection.js +167 -119
  648. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +35 -21
  649. package/dist/table-ng/smart-table-ng.js +30 -2
  650. package/dist/table-ng/table-ng.js +30 -2
  651. package/dist/tabs/collapsible-more.d.ts +3 -3
  652. package/dist/tabs/collapsible-more.js +92 -56
  653. package/dist/tabs/collapsible-tab.d.ts +1 -1
  654. package/dist/tabs/collapsible-tab.js +45 -39
  655. package/dist/tabs/collapsible-tabs.d.ts +2 -2
  656. package/dist/tabs/collapsible-tabs.js +161 -95
  657. package/dist/tabs/custom-item.js +2 -4
  658. package/dist/tabs/dumb-tabs.d.ts +5 -3
  659. package/dist/tabs/dumb-tabs.js +101 -56
  660. package/dist/tabs/smart-tabs.d.ts +2 -2
  661. package/dist/tabs/smart-tabs.js +70 -25
  662. package/dist/tabs/tab-link.d.ts +1 -1
  663. package/dist/tabs/tab-link.js +29 -20
  664. package/dist/tabs/tab.d.ts +2 -2
  665. package/dist/tabs/tab.js +26 -15
  666. package/dist/tabs/tabs.js +35 -1
  667. package/dist/tabs-ng/tabs-ng.js +38 -24
  668. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  669. package/dist/tag/tag.d.ts +5 -5
  670. package/dist/tag/tag.js +146 -113
  671. package/dist/tags-input/tags-input.d.ts +9 -4
  672. package/dist/tags-input/tags-input.js +327 -220
  673. package/dist/tags-input-ng/tags-input-ng.js +40 -2
  674. package/dist/tags-list/tags-list.d.ts +2 -2
  675. package/dist/tags-list/tags-list.js +61 -38
  676. package/dist/template-ng/template-ng.js +45 -35
  677. package/dist/text/text.d.ts +8 -2
  678. package/dist/text/text.js +38 -17
  679. package/dist/title-ng/title-ng.js +28 -23
  680. package/dist/toggle/toggle.d.ts +2 -2
  681. package/dist/toggle/toggle.js +55 -39
  682. package/dist/toggle-ng/toggle-ng.js +13 -0
  683. package/dist/tooltip/tooltip.d.ts +1 -1
  684. package/dist/tooltip/tooltip.js +145 -102
  685. package/dist/tooltip-ng/tooltip-ng.js +51 -25
  686. package/dist/user-agreement/service.js +411 -259
  687. package/dist/user-agreement/toolbox.eula.js +1 -160
  688. package/dist/user-agreement/user-agreement.d.ts +3 -11
  689. package/dist/user-agreement/user-agreement.js +106 -68
  690. package/dist/user-card/card.d.ts +22 -21
  691. package/dist/user-card/card.js +34 -1
  692. package/dist/user-card/smart-user-card-tooltip.d.ts +3 -3
  693. package/dist/user-card/smart-user-card-tooltip.js +139 -76
  694. package/dist/user-card/tooltip.d.ts +11 -6
  695. package/dist/user-card/tooltip.js +75 -32
  696. package/dist/user-card/user-card.js +34 -1
  697. package/dist/user-card-ng/user-card-ng.js +39 -6
  698. package/package.json +86 -82
  699. package/components/input/input-label.d.ts +0 -10
  700. package/components/input/input-label.js +0 -18
  701. package/dist/input/input-label.d.ts +0 -10
  702. package/dist/input/input-label.js +0 -27
@@ -1,5 +1,20 @@
1
- import { _ as _defineProperty, a as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
- import React, { Component, Fragment } from 'react';
1
+ import { _ as _defineProperty, a as _inherits, b as _createSuper, c as _classCallCheck, l as _typeof, k as _assertThisInitialized, g as _objectSpread2, e as _objectWithoutProperties, q as _toPropertyKey, d as _createClass, f as _extends } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/es.array.index-of.js';
3
+ import 'core-js/modules/es.array.reduce.js';
4
+ import 'core-js/modules/es.object.to-string.js';
5
+ import 'core-js/modules/es.string.trim.js';
6
+ import 'core-js/modules/es.array.filter.js';
7
+ import 'core-js/modules/es.regexp.exec.js';
8
+ import 'core-js/modules/es.array.find.js';
9
+ import 'core-js/modules/es.array.concat.js';
10
+ import 'core-js/modules/es.string.replace.js';
11
+ import 'core-js/modules/es.array.map.js';
12
+ import 'core-js/modules/web.dom-collections.for-each.js';
13
+ import 'core-js/modules/es.array.slice.js';
14
+ import 'core-js/modules/es.object.keys.js';
15
+ import 'core-js/modules/es.object.assign.js';
16
+ import 'core-js/modules/es.object.values.js';
17
+ import React, { Fragment, Component } from 'react';
3
18
  import classNames from 'classnames';
4
19
  import PropTypes from 'prop-types';
5
20
  import chevronDownIcon from '@jetbrains/icons/chevron-down';
@@ -10,7 +25,7 @@ import Avatar, { Size as Size$1 } from '../avatar/avatar.js';
10
25
  import Popup from '../popup/popup.js';
11
26
  import List, { ActiveItemContext } from '../list/list.js';
12
27
  import { Size, Input } from '../input/input.js';
13
- import { InputLabel } from '../input/input-label.js';
28
+ import { ControlLabel } from '../control-label/control-label.js';
14
29
  import Shortcuts from '../shortcuts/shortcuts.js';
15
30
  import { Button } from '../button/button.js';
16
31
  import joinDataTestAttributes from '../global/data-tests.js';
@@ -18,33 +33,55 @@ import getUID from '../global/get-uid.js';
18
33
  import rerenderHOC from '../global/rerender-hoc.js';
19
34
  import fuzzyHighlight from '../global/fuzzy-highlight.js';
20
35
  import memoize from '../global/memoize.js';
36
+ import { I18nContext } from '../i18n/i18n-context.js';
37
+ import composeRefs from '../global/composeRefs.js';
38
+ import { refObject } from '../global/prop-types.js';
21
39
  import { isArray } from '../global/typescript-utils.js';
22
40
  import { ControlsHeight, ControlsHeightContext } from '../global/controls-height.js';
23
41
  import { m as modules_88cfaf40 } from '../_helpers/input.js';
24
42
  import SelectPopup from './select__popup.js';
25
43
  import { A as Anchor } from '../_helpers/anchor.js';
44
+ import 'core-js/modules/es.object.entries.js';
26
45
  import '@jetbrains/icons/chevron-10px';
27
46
  import '../icon/icon.js';
28
47
  import 'util-deprecate';
29
48
  import '../icon/icon__constants.js';
30
49
  import '../_helpers/icon.js';
31
50
  import '../icon/icon__svg.js';
32
- import 'focus-visible';
51
+ import 'core-js/modules/es.string.starts-with.js';
52
+ import 'core-js/modules/es.array.iterator.js';
53
+ import 'core-js/modules/es.map.js';
54
+ import 'core-js/modules/es.string.iterator.js';
55
+ import 'core-js/modules/web.dom-collections.iterator.js';
56
+ import 'core-js/modules/es.weak-map.js';
33
57
  import '../link/clickableLink.js';
34
58
  import '../_helpers/button__classes.js';
35
59
  import '../global/url.js';
60
+ import 'core-js/modules/es.string.match.js';
36
61
  import '../global/dom.js';
62
+ import 'core-js/modules/es.string.split.js';
63
+ import 'core-js/modules/es.set.js';
37
64
  import '../avatar/fallback-avatar.js';
65
+ import 'core-js/modules/es.number.constructor.js';
66
+ import 'core-js/modules/es.array.from.js';
67
+ import 'core-js/modules/es.regexp.to-string.js';
38
68
  import 'react-dom';
39
69
  import '../global/schedule-raf.js';
40
70
  import '../tab-trap/tab-trap.js';
41
71
  import '../popup/position.js';
72
+ import 'core-js/modules/es.array.includes.js';
73
+ import 'core-js/modules/es.string.includes.js';
74
+ import 'core-js/modules/es.array.sort.js';
42
75
  import '../popup/popup.consts.js';
43
76
  import '../popup/popup.target.js';
44
77
  import '../shortcuts/core.js';
78
+ import 'core-js/modules/es.array.splice.js';
79
+ import 'core-js/modules/es.array.find-index.js';
45
80
  import 'combokeys';
46
81
  import '../global/sniffer.js';
47
82
  import 'sniffr';
83
+ import 'core-js/modules/es.symbol.js';
84
+ import 'core-js/modules/es.symbol.description.js';
48
85
  import 'react-virtualized/dist/es/List';
49
86
  import 'react-virtualized/dist/es/AutoSizer';
50
87
  import 'react-virtualized/dist/es/WindowScroller';
@@ -59,8 +96,6 @@ import '../list/list__item.js';
59
96
  import '../checkbox/checkbox.js';
60
97
  import '@jetbrains/icons/checkmark-14px';
61
98
  import '@jetbrains/icons/remove-14px';
62
- import '../global/prop-types.js';
63
- import '../global/composeRefs.js';
64
99
  import '../_helpers/checkbox.js';
65
100
  import '../list/list__custom.js';
66
101
  import '../global/get-event-key.js';
@@ -68,6 +103,8 @@ import '../list/list__title.js';
68
103
  import '../list/list__separator.js';
69
104
  import '../list/list__hint.js';
70
105
  import '../list/consts.js';
106
+ import '../i18n/i18n.js';
107
+ import '../_helpers/control-label.js';
71
108
  import '../global/react-render-adapter.js';
72
109
  import '@jetbrains/icons/search';
73
110
  import '../loader-inline/loader-inline.js';
@@ -79,7 +116,7 @@ import '../caret/caret.js';
79
116
  import '../text/text.js';
80
117
  import '../_helpers/select__filter.js';
81
118
 
82
- var modules_9d0de074 = {"unit":"8px","button-shadow":"inset 0 0 0 1px","select":"select_rui_11de","value":"value_rui_11de ellipsis_rui_8bff font_rui_8bff","icons":"icons_rui_11de","light":"light_rui_11de","toolbar":"toolbar_rui_11de","button":"button_rui_11de","buttonSpaced":"buttonSpaced_rui_11de","inputMode":"inputMode_rui_11de","selectedIcon":"selectedIcon_rui_11de resetButton_rui_8bff","clearIcon":"clearIcon_rui_11de","sizeS":"sizeS_rui_11de","sizeM":"sizeM_rui_11de","sizeL":"sizeL_rui_11de","sizeFULL":"sizeFULL_rui_11de","sizeAUTO":"sizeAUTO_rui_11de","buttonMode":"buttonMode_rui_11de","open":"open_rui_11de","buttonContainer":"buttonContainer_rui_11de","buttonValue":"buttonValue_rui_11de ellipsis_rui_8bff","buttonValueOpen":"buttonValueOpen_rui_11de","heightS":"heightS_rui_11de","label":"label_rui_11de","disabled":"disabled_rui_11de","avatar":"avatar_rui_11de","popup":"popup_rui_11de","chevron":"chevron_rui_11de","chevronIcon":"chevronIcon_rui_11de"};
119
+ var modules_9d0de074 = {"unit":"i__const_unit_0","button-shadow":"i__const_button_shadow_1","select":"select_rui_11de","value":"value_rui_11de ellipsis_rui_8bff font_rui_8bff","icons":"icons_rui_11de","light":"light_rui_2ac4","toolbar":"toolbar_rui_11de","button":"button_rui_11de","buttonSpaced":"buttonSpaced_rui_11de","inputMode":"inputMode_rui_11de","selectedIcon":"selectedIcon_rui_11de resetButton_rui_8bff","clearIcon":"clearIcon_rui_11de","sizeS":"sizeS_rui_11de","sizeM":"sizeM_rui_11de","sizeL":"sizeL_rui_11de","sizeFULL":"sizeFULL_rui_11de","sizeAUTO":"sizeAUTO_rui_11de","buttonMode":"buttonMode_rui_11de","open":"open_rui_11de","buttonContainer":"buttonContainer_rui_11de","buttonValue":"buttonValue_rui_11de ellipsis_rui_8bff","buttonValueOpen":"buttonValueOpen_rui_11de","buttonValueEmpty":"buttonValueEmpty_rui_11de","heightS":"heightS_rui_11de","label":"label_rui_11de","disabled":"disabled_rui_11de","avatar":"avatar_rui_11de","popup":"popup_rui_11de","chevron":"chevron_rui_11de","chevronIcon":"chevronIcon_rui_11de"};
83
120
 
84
121
  /**
85
122
  * @name Select
@@ -96,12 +133,16 @@ var Type;
96
133
  Type["INLINE"] = "INLINE";
97
134
  Type["INPUT_WITHOUT_CONTROLS"] = "INPUT_WITHOUT_CONTROLS";
98
135
  })(Type || (Type = {}));
99
- const ICONS_OFFSET = 5;
100
- const ICON_WIDTH = 20;
101
- const getStyle = memoize(iconsLength => ({
102
- paddingRight: ICONS_OFFSET + iconsLength * ICON_WIDTH
103
- }));
104
- const isInputMode = type => type === Type.INPUT || type === Type.INPUT_WITHOUT_CONTROLS;
136
+ var ICONS_OFFSET = 5;
137
+ var ICON_WIDTH = 20;
138
+ var getStyle = memoize(function (iconsLength) {
139
+ return {
140
+ paddingRight: ICONS_OFFSET + iconsLength * ICON_WIDTH
141
+ };
142
+ });
143
+ var _isInputMode = function isInputMode(type) {
144
+ return type === Type.INPUT || type === Type.INPUT_WITHOUT_CONTROLS;
145
+ };
105
146
  function getLowerCaseLabel(item) {
106
147
  if (List.isItemType(List.ListProps.Type.SEPARATOR, item) || List.isItemType(List.ListProps.Type.HINT, item) || typeof item.label !== 'string') {
107
148
  return null;
@@ -109,66 +150,77 @@ function getLowerCaseLabel(item) {
109
150
  return item.label.toLowerCase();
110
151
  }
111
152
  function doesLabelMatch(itemToCheck, fn) {
112
- const lowerCaseLabel = getLowerCaseLabel(itemToCheck);
153
+ var lowerCaseLabel = getLowerCaseLabel(itemToCheck);
113
154
  if (lowerCaseLabel == null) {
114
155
  return true;
115
156
  }
116
157
  return fn(lowerCaseLabel);
117
158
  }
118
- function getFilterFn(filter) {
119
- if (typeof filter === 'object') {
159
+ function _getFilterFn(filter) {
160
+ if (_typeof(filter) === 'object') {
120
161
  if (filter.fn) {
121
162
  return filter.fn;
122
163
  }
123
164
  if (filter.fuzzy) {
124
- return (itemToCheck, checkString) => doesLabelMatch(itemToCheck, lowerCaseLabel => fuzzyHighlight(checkString, lowerCaseLabel).matched);
165
+ return function (itemToCheck, checkString) {
166
+ return doesLabelMatch(itemToCheck, function (lowerCaseLabel) {
167
+ return fuzzyHighlight(checkString, lowerCaseLabel).matched;
168
+ });
169
+ };
125
170
  }
126
171
  }
127
- return (itemToCheck, checkString) => doesLabelMatch(itemToCheck, lowerCaseLabel => lowerCaseLabel.indexOf(checkString) >= 0);
172
+ return function (itemToCheck, checkString) {
173
+ return doesLabelMatch(itemToCheck, function (lowerCaseLabel) {
174
+ return lowerCaseLabel.indexOf(checkString) >= 0;
175
+ });
176
+ };
128
177
  }
129
178
  function buildMultipleMap(selected) {
130
- return selected.reduce((acc, item) => {
179
+ return selected.reduce(function (acc, item) {
131
180
  acc[item.key] = true;
132
181
  return acc;
133
182
  }, {});
134
183
  }
135
- function getListItems(props, state, rawFilterString) {
136
- let data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : props.data;
137
- let filterString = rawFilterString.trim();
138
- if (isInputMode(props.type) && !props.allowAny && state.selected && !Array.isArray(state.selected) && filterString === state.selected.label) {
184
+ function _getListItems(props, state, rawFilterString) {
185
+ var data = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : props.data;
186
+ var filterString = rawFilterString.trim();
187
+ if (_isInputMode(props.type) && !props.allowAny && state.selected && !Array.isArray(state.selected) && filterString === state.selected.label) {
139
188
  filterString = ''; // ignore multiple if it is exactly the selected item
140
189
  }
141
190
 
142
- const lowerCaseString = filterString.toLowerCase();
143
- const filteredData = [];
144
- let exactMatch = false;
145
- const check = getFilterFn(props.filter);
146
- for (let i = 0; i < data.length; i++) {
147
- const item = {
148
- ...data[i]
149
- };
191
+ var lowerCaseString = filterString.toLowerCase();
192
+ var filteredData = [];
193
+ var exactMatch = false;
194
+ var check = _getFilterFn(props.filter);
195
+ var _loop = function _loop() {
196
+ var item = _objectSpread2({}, data[i]);
150
197
  if (check(item, lowerCaseString, data)) {
198
+ var _state$multipleMap2;
151
199
  exactMatch = item.label === filterString;
152
- if (props.multiple && !(typeof props.multiple === 'object' && props.multiple.removeSelectedItems)) {
153
- item.checkbox = !!state.multipleMap?.[item.key];
200
+ if (props.multiple && !(_typeof(props.multiple) === 'object' && props.multiple.removeSelectedItems)) {
201
+ var _state$multipleMap;
202
+ item.checkbox = !!((_state$multipleMap = state.multipleMap) !== null && _state$multipleMap !== void 0 && _state$multipleMap[item.key]);
154
203
  }
155
- if (props.multiple && typeof props.multiple === 'object' && props.multiple.limit && Array.isArray(state.selected)) {
156
- item.disabled = props.multiple.limit === state.selected.length && !state.selected.find(selectedItem => selectedItem.key === item.key);
204
+ if (props.multiple && _typeof(props.multiple) === 'object' && props.multiple.limit && Array.isArray(state.selected)) {
205
+ item.disabled = props.multiple.limit === state.selected.length && !state.selected.find(function (selectedItem) {
206
+ return selectedItem.key === item.key;
207
+ });
157
208
  }
158
209
  // Ignore item if it's multiple and is already selected
159
- if (!(props.multiple && typeof props.multiple === 'object' && props.multiple.removeSelectedItems && state.multipleMap?.[item.key])) {
210
+ if (!(props.multiple && _typeof(props.multiple) === 'object' && props.multiple.removeSelectedItems && (_state$multipleMap2 = state.multipleMap) !== null && _state$multipleMap2 !== void 0 && _state$multipleMap2[item.key])) {
160
211
  filteredData.push(item);
161
212
  }
162
213
  }
214
+ };
215
+ for (var i = 0; i < data.length; i++) {
216
+ _loop();
163
217
  }
164
- let addButton = null;
165
- const {
166
- add
167
- } = props;
218
+ var addButton = null;
219
+ var add = props.add;
168
220
  if (add && filterString && !exactMatch || add && add.alwaysVisible) {
169
221
  if (!(add.regexp && !add.regexp.test(filterString)) && !(add.minlength && filterString.length < +add.minlength) || add.alwaysVisible) {
170
222
  var _add$delayed;
171
- let label;
223
+ var label;
172
224
  if (add.label) {
173
225
  label = typeof add.label === 'function' ? add.label(filterString) : add.label;
174
226
  } else {
@@ -176,23 +228,23 @@ function getListItems(props, state, rawFilterString) {
176
228
  }
177
229
  addButton = {
178
230
  prefix: add.prefix,
179
- label,
231
+ label: label,
180
232
  delayed: (_add$delayed = add.delayed) !== null && _add$delayed !== void 0 ? _add$delayed : true
181
233
  };
182
234
  }
183
235
  }
184
236
  return {
185
- filteredData,
186
- addButton
237
+ filteredData: filteredData,
238
+ addButton: addButton
187
239
  };
188
240
  }
189
241
  function getSelectedIndex(selected, data) {
190
- const firstSelected = Array.isArray(selected) ? selected[0] : selected;
242
+ var firstSelected = Array.isArray(selected) ? selected[0] : selected;
191
243
  if (firstSelected == null) {
192
244
  return null;
193
245
  }
194
- for (let i = 0; i < data.length; i++) {
195
- const item = data[i];
246
+ for (var i = 0; i < data.length; i++) {
247
+ var item = data[i];
196
248
  if (item.key === undefined) {
197
249
  continue;
198
250
  }
@@ -202,26 +254,28 @@ function getSelectedIndex(selected, data) {
202
254
  }
203
255
  return null;
204
256
  }
205
- const getItemLabel = _ref => {
206
- let {
207
- selectedLabel,
208
- label
209
- } = _ref;
257
+ var getItemLabel = function getItemLabel(_ref) {
258
+ var selectedLabel = _ref.selectedLabel,
259
+ label = _ref.label;
210
260
  if (selectedLabel != null) {
211
261
  return selectedLabel;
212
262
  }
213
263
  return typeof label === 'string' ? label : '';
214
264
  };
215
- const getValueForFilter = (selected, type, filterValue) => selected && !isArray(selected) && isInputMode(type) ? getItemLabel(selected) : filterValue;
265
+ var _getValueForFilter = function getValueForFilter(selected, type, filterValue) {
266
+ return selected && !isArray(selected) && _isInputMode(type) ? getItemLabel(selected) : filterValue;
267
+ };
216
268
  function isSameSelected(prevSelected, selected) {
217
269
  if (!prevSelected || !selected || prevSelected.length !== selected.length) {
218
270
  return false;
219
271
  }
220
- const keysMap = selected.reduce((result, item) => {
272
+ var keysMap = selected.reduce(function (result, item) {
221
273
  result[item.key] = true;
222
274
  return result;
223
275
  }, {});
224
- return prevSelected.every(it => keysMap[it.key]);
276
+ return prevSelected.every(function (it) {
277
+ return keysMap[it.key];
278
+ });
225
279
  }
226
280
  /**
227
281
  * @name Select
@@ -231,255 +285,279 @@ function isSameSelected(prevSelected, selected) {
231
285
  /**
232
286
  * Displays a select.
233
287
  */
234
- class Select extends Component {
235
- constructor() {
288
+ var Select = /*#__PURE__*/function (_Component) {
289
+ _inherits(Select, _Component);
290
+ var _super = _createSuper(Select);
291
+ function Select() {
236
292
  var _this;
237
- super(...arguments);
238
- _this = this;
239
- _defineProperty(this, "state", {
293
+ _classCallCheck(this, Select);
294
+ for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
295
+ args[_key] = arguments[_key];
296
+ }
297
+ _this = _super.call.apply(_super, [this].concat(args));
298
+ _defineProperty(_assertThisInitialized(_this), "state", {
240
299
  data: [],
241
300
  shownData: [],
242
- selected: this.props.multiple ? [] : null,
301
+ selected: _this.props.multiple ? [] : null,
243
302
  selectedIndex: null,
244
- filterValue: this.props.filter && typeof this.props.filter === 'object' && this.props.filter.value || '',
303
+ filterValue: _this.props.filter && _typeof(_this.props.filter) === 'object' && _this.props.filter.value || '',
245
304
  shortcutsEnabled: false,
246
305
  popupShortcuts: false,
247
- showPopup: false,
248
- prevData: this.props.data,
306
+ showPopup: _this.props.showPopup,
307
+ prevData: _this.props.data,
249
308
  prevSelected: null,
250
- prevMultiple: this.props.multiple,
309
+ prevMultiple: _this.props.multiple,
251
310
  multipleMap: {},
252
311
  addButton: null
253
312
  });
254
- _defineProperty(this, "id", getUID('select-'));
255
- _defineProperty(this, "shortcutsScope", this.id);
256
- _defineProperty(this, "listId", `${this.id}:list`);
257
- _defineProperty(this, "_focusHandler", e => {
258
- this.props.onFocus(e);
259
- this.setState({
313
+ _defineProperty(_assertThisInitialized(_this), "id", getUID('select-'));
314
+ _defineProperty(_assertThisInitialized(_this), "shortcutsScope", _this.id);
315
+ _defineProperty(_assertThisInitialized(_this), "listId", "".concat(_this.id, ":list"));
316
+ _defineProperty(_assertThisInitialized(_this), "_focusHandler", function (e) {
317
+ _this.props.onFocus(e);
318
+ _this.setState({
260
319
  shortcutsEnabled: true,
261
320
  focused: true
262
321
  });
263
322
  });
264
- _defineProperty(this, "_blurHandler", () => {
265
- this.props.onBlur();
266
- if (this._popup && this._popup.isVisible() && !this._popup.isClickingPopup) {
267
- window.setTimeout(() => {
268
- this.setState({
323
+ _defineProperty(_assertThisInitialized(_this), "_blurHandler", function () {
324
+ var _this$_popup;
325
+ _this.props.onBlur();
326
+ if (_this._popup && _this._popup.isVisible() && !_this._popup.isClickingPopup) {
327
+ window.setTimeout(function () {
328
+ _this.setState({
269
329
  showPopup: false
270
330
  });
271
331
  });
272
332
  }
273
- if (!this._popup?.isClickingPopup) {
274
- this.setState({
333
+ if (!((_this$_popup = _this._popup) !== null && _this$_popup !== void 0 && _this$_popup.isClickingPopup)) {
334
+ _this.setState({
275
335
  shortcutsEnabled: false,
276
336
  focused: false
277
337
  });
278
338
  }
279
339
  });
280
- _defineProperty(this, "node", void 0);
281
- _defineProperty(this, "nodeRef", el => {
282
- this.node = el;
340
+ _defineProperty(_assertThisInitialized(_this), "node", void 0);
341
+ _defineProperty(_assertThisInitialized(_this), "nodeRef", function (el) {
342
+ _this.node = el;
283
343
  });
284
- _defineProperty(this, "_popup", null);
285
- _defineProperty(this, "onEmptyPopupEnter", () => {
286
- if (this.state.addButton) {
287
- this.addHandler();
344
+ _defineProperty(_assertThisInitialized(_this), "_popup", null);
345
+ _defineProperty(_assertThisInitialized(_this), "onEmptyPopupEnter", function () {
346
+ if (_this.state.addButton) {
347
+ _this.addHandler();
288
348
  }
289
349
  });
290
- _defineProperty(this, "_onEnter", () => {
291
- if (this.state.addButton && this.state.shownData.length === 0) {
292
- this.addHandler();
350
+ _defineProperty(_assertThisInitialized(_this), "_onEnter", function () {
351
+ var _this$_popup2;
352
+ if (_this.state.addButton && _this.state.shownData.length === 0) {
353
+ _this.addHandler();
293
354
  }
294
- this.props.onDone();
295
- if (!this._popup?.isVisible() && this.props.allowAny) {
355
+ _this.props.onDone();
356
+ if (!((_this$_popup2 = _this._popup) !== null && _this$_popup2 !== void 0 && _this$_popup2.isVisible()) && _this.props.allowAny) {
296
357
  return true;
297
358
  }
298
359
  return undefined;
299
360
  });
300
- _defineProperty(this, "_onEsc", event => {
301
- if (!this._popup?.isVisible()) {
361
+ _defineProperty(_assertThisInitialized(_this), "_onEsc", function (event) {
362
+ var _this$_popup3;
363
+ if (!((_this$_popup3 = _this._popup) !== null && _this$_popup3 !== void 0 && _this$_popup3.isVisible())) {
302
364
  return true;
303
- } else if (this.props.multiple || !this.props.getInitial) {
365
+ } else if (_this.props.multiple || !_this.props.getInitial) {
304
366
  return false;
305
367
  }
306
- const selected = {
368
+ var selected = {
307
369
  key: Math.random(),
308
- label: this.props.getInitial()
370
+ label: _this.props.getInitial()
309
371
  };
310
- this.setState({
311
- selected,
312
- filterValue: this.getValueForFilter(selected)
313
- }, () => {
314
- this.props.onChange(selected, event);
315
- this.props.onReset();
372
+ _this.setState({
373
+ selected: selected,
374
+ filterValue: _this.getValueForFilter(selected)
375
+ }, function () {
376
+ _this.props.onChange(selected, event);
377
+ _this.props.onReset();
316
378
  });
317
379
  return undefined;
318
380
  });
319
- _defineProperty(this, "_inputShortcutHandler", () => {
320
- if (this.state.focused && this._popup && !this._popup.isVisible()) {
321
- this._clickHandler();
381
+ _defineProperty(_assertThisInitialized(_this), "_inputShortcutHandler", function () {
382
+ if (_this.state.focused && _this._popup && !_this._popup.isVisible()) {
383
+ _this._clickHandler();
322
384
  }
323
385
  });
324
- _defineProperty(this, "popupRef", el => {
325
- this._popup = el;
386
+ _defineProperty(_assertThisInitialized(_this), "popupRef", function (el) {
387
+ _this._popup = el;
326
388
  });
327
- _defineProperty(this, "addHandler", () => {
328
- const value = this.filterValue();
329
- this._hidePopup();
330
- this.props.onAdd(value);
389
+ _defineProperty(_assertThisInitialized(_this), "addHandler", function () {
390
+ var value = _this.filterValue();
391
+ _this._hidePopup();
392
+ _this.props.onAdd(value);
331
393
  });
332
- _defineProperty(this, "getLowerCaseLabel", getLowerCaseLabel);
333
- _defineProperty(this, "doesLabelMatch", doesLabelMatch);
334
- _defineProperty(this, "_clickHandler", () => {
335
- if (!this.props.disabled) {
336
- if (this.state.showPopup) {
337
- this._hidePopup();
394
+ _defineProperty(_assertThisInitialized(_this), "getLowerCaseLabel", getLowerCaseLabel);
395
+ _defineProperty(_assertThisInitialized(_this), "doesLabelMatch", doesLabelMatch);
396
+ _defineProperty(_assertThisInitialized(_this), "_clickHandler", function () {
397
+ if (!_this.props.disabled) {
398
+ if (_this.state.showPopup) {
399
+ _this._hidePopup();
338
400
  } else {
339
- this.props.onBeforeOpen();
340
- this._showPopup();
401
+ _this.props.onBeforeOpen();
402
+ _this._showPopup();
341
403
  }
342
404
  }
343
405
  });
344
- _defineProperty(this, "_openPopupIfClosed", () => {
345
- if (this.props.disabled || this.state.showPopup) {
406
+ _defineProperty(_assertThisInitialized(_this), "_openPopupIfClosed", function () {
407
+ if (_this.props.disabled || _this.state.showPopup) {
346
408
  return;
347
409
  }
348
- this.props.onBeforeOpen();
349
- this._showPopup();
410
+ _this.props.onBeforeOpen();
411
+ _this._showPopup();
350
412
  });
351
- _defineProperty(this, "_filterChangeHandler", e => {
352
- this._setFilter(e.currentTarget.value, e);
413
+ _defineProperty(_assertThisInitialized(_this), "_filterChangeHandler", function (e) {
414
+ _this._setFilter(e.currentTarget.value, e);
353
415
  });
354
- _defineProperty(this, "_setFilter", (value, event) => {
355
- if (this.isInputMode() && !this.state.focused) {
416
+ _defineProperty(_assertThisInitialized(_this), "_setFilter", function (value, event) {
417
+ var _this$_popup4;
418
+ if (_this.isInputMode() && !_this.state.focused) {
356
419
  return;
357
420
  }
358
- if (value === this.state.filterValue) {
421
+ if (value === _this.state.filterValue) {
359
422
  return;
360
423
  }
361
- const filterValue = value.replace(/^\s+/g, '');
362
- this.props.onFilter(filterValue);
363
- if (this.props.allowAny) {
364
- const fakeSelected = {
424
+ var filterValue = value.replace(/^\s+/g, '');
425
+ _this.props.onFilter(filterValue);
426
+ if (_this.props.allowAny) {
427
+ var fakeSelected = {
365
428
  key: Math.random(),
366
429
  label: filterValue
367
430
  };
368
- this.setState({
431
+ _this.setState({
369
432
  selected: filterValue === '' ? null : fakeSelected,
370
433
  selectedIndex: null
371
- }, () => {
372
- this.props.onSelect(fakeSelected, event);
373
- this.props.onChange(fakeSelected, event);
434
+ }, function () {
435
+ _this.props.onSelect(fakeSelected, event);
436
+ _this.props.onChange(fakeSelected, event);
374
437
  });
375
438
  }
376
- !this._popup?.isVisible() && this.props.onBeforeOpen();
377
- this.setState({
378
- filterValue
379
- }, () => {
380
- this._showPopup();
439
+ !((_this$_popup4 = _this._popup) !== null && _this$_popup4 !== void 0 && _this$_popup4.isVisible()) && _this.props.onBeforeOpen();
440
+ _this.setState({
441
+ filterValue: filterValue
442
+ }, function () {
443
+ _this._showPopup();
381
444
  });
382
445
  });
383
- _defineProperty(this, "_redrawPopup", () => {
384
- if (this.props.multiple) {
385
- setTimeout(() => {
386
- this.isInputMode() && this.clearFilter();
387
- this._showPopup();
446
+ _defineProperty(_assertThisInitialized(_this), "_redrawPopup", function () {
447
+ if (_this.props.multiple) {
448
+ setTimeout(function () {
449
+ _this.isInputMode() && _this.clearFilter();
450
+ _this._showPopup();
388
451
  }, 0);
389
452
  }
390
453
  });
391
- _defineProperty(this, "_listSelectHandler", function (selected, event) {
392
- let opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
393
- const isItem = item => List.isItemType(List.ListProps.Type.ITEM, item);
394
- const isCustomItem = item => List.isItemType(List.ListProps.Type.CUSTOM, item);
395
- const isSelectItemEvent = event && (event.type === 'select' || event.type === 'keydown');
454
+ _defineProperty(_assertThisInitialized(_this), "_listSelectHandler", function (selected, event) {
455
+ var _this$props$tryKeepOp;
456
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
457
+ var isItem = function isItem(item) {
458
+ return List.isItemType(List.ListProps.Type.ITEM, item);
459
+ };
460
+ var isCustomItem = function isCustomItem(item) {
461
+ return List.isItemType(List.ListProps.Type.CUSTOM, item);
462
+ };
463
+ var isSelectItemEvent = event && (event.type === 'select' || event.type === 'keydown');
396
464
  if (isSelectItemEvent) {
397
465
  event.preventDefault();
398
466
  }
399
467
  if (!isItem(selected) && !isCustomItem(selected) || selected.disabled || selected.isResetItem) {
400
468
  return;
401
469
  }
470
+ var tryKeepOpen = (_this$props$tryKeepOp = _this.props.tryKeepOpen) !== null && _this$props$tryKeepOp !== void 0 ? _this$props$tryKeepOp : opts.tryKeepOpen;
402
471
  if (!_this.props.multiple) {
403
- _this._hidePopup(isSelectItemEvent);
472
+ if (!tryKeepOpen) {
473
+ _this._hidePopup(isSelectItemEvent);
474
+ }
404
475
  _this.setState({
405
- selected,
476
+ selected: selected,
406
477
  selectedIndex: _this._getSelectedIndex(selected, _this.props.data)
407
- }, () => {
408
- const newFilterValue = _this.isInputMode() && !_this.props.hideSelected ? getItemLabel(selected) : '';
478
+ }, function () {
479
+ var newFilterValue = _this.isInputMode() && !_this.props.hideSelected ? getItemLabel(selected) : '';
409
480
  _this.filterValue(newFilterValue);
410
481
  _this.props.onFilter(newFilterValue);
411
482
  _this.props.onSelect(selected, event);
412
483
  _this.props.onChange(selected, event);
413
484
  });
414
485
  } else {
415
- const {
416
- tryKeepOpen
417
- } = opts;
418
486
  if (!tryKeepOpen) {
419
487
  _this._hidePopup(isSelectItemEvent);
420
488
  }
421
489
  if (selected.key == null) {
422
490
  throw new Error('Multiple selection requires each item to have the "key" property');
423
491
  }
424
- _this.setState(prevState => {
425
- const currentSelection = prevState.selected;
426
- let nextSelection;
492
+ _this.setState(function (prevState) {
493
+ var currentSelection = prevState.selected;
494
+ var nextSelection;
427
495
  if (!prevState.multipleMap[selected.key]) {
428
496
  nextSelection = currentSelection.concat(selected);
429
497
  _this.props.onSelect && _this.props.onSelect(selected, event);
430
498
  } else {
431
- nextSelection = currentSelection.filter(item => item.key !== selected.key);
499
+ nextSelection = currentSelection.filter(function (item) {
500
+ return item.key !== selected.key;
501
+ });
432
502
  _this.props.onDeselect && _this.props.onDeselect(selected);
433
503
  }
434
504
  _this.props.onChange(nextSelection, event);
435
- const nextState = {
505
+ var nextState = {
506
+ filterValue: '',
436
507
  selected: nextSelection,
437
508
  selectedIndex: _this._getSelectedIndex(selected, _this.props.data)
438
509
  };
439
- if (typeof _this.props.multiple === 'object' && _this.props.multiple.limit && nextSelection.length === _this.props.multiple.limit) {
440
- nextState.shownData = prevState.shownData.map(item => nextSelection.find(selectedItem => selectedItem.key === item.key) ? item : {
441
- ...item,
442
- disabled: true
510
+ if (_typeof(_this.props.multiple) === 'object' && _this.props.multiple.limit && nextSelection.length === _this.props.multiple.limit) {
511
+ nextState.shownData = prevState.shownData.map(function (item) {
512
+ return nextSelection.find(function (selectedItem) {
513
+ return selectedItem.key === item.key;
514
+ }) ? item : _objectSpread2(_objectSpread2({}, item), {}, {
515
+ disabled: true
516
+ });
443
517
  });
444
518
  }
445
519
  if (!prevState.multipleMap[selected.key]) {
446
- nextState.multipleMap = {
447
- ...prevState.multipleMap,
448
- [selected.key]: true
449
- };
520
+ nextState.multipleMap = _objectSpread2(_objectSpread2({}, prevState.multipleMap), {}, _defineProperty({}, selected.key, true));
450
521
  } else {
451
- const {
452
- [selected.key]: _,
453
- ...restMultipleMap
454
- } = prevState.multipleMap;
522
+ var _prevState$multipleMa = prevState.multipleMap,
523
+ _selected$key = selected.key;
524
+ _prevState$multipleMa[_selected$key];
525
+ var restMultipleMap = _objectWithoutProperties(_prevState$multipleMa, [_selected$key].map(_toPropertyKey));
455
526
  nextState.multipleMap = restMultipleMap;
456
527
  }
457
- return {
458
- ...prevState,
459
- ...nextState
460
- };
461
- }, () => {
528
+ return _objectSpread2(_objectSpread2({}, prevState), nextState);
529
+ }, function () {
462
530
  if (tryKeepOpen) {
463
531
  _this._redrawPopup();
464
532
  }
465
533
  });
466
534
  }
467
535
  });
468
- _defineProperty(this, "_listSelectAllHandler", function () {
469
- let isSelectAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
470
- const isItem = item => List.isItemType(List.ListProps.Type.ITEM, item);
471
- const isCustomItem = item => List.isItemType(List.ListProps.Type.CUSTOM, item);
472
- _this.setState(prevState => {
473
- const currentSelection = prevState.selected;
474
- let nextSelection;
536
+ _defineProperty(_assertThisInitialized(_this), "_listSelectAllHandler", function () {
537
+ var isSelectAll = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
538
+ var isItem = function isItem(item) {
539
+ return List.isItemType(List.ListProps.Type.ITEM, item);
540
+ };
541
+ var isCustomItem = function isCustomItem(item) {
542
+ return List.isItemType(List.ListProps.Type.CUSTOM, item);
543
+ };
544
+ _this.setState(function (prevState) {
545
+ var currentSelection = prevState.selected;
546
+ var nextSelection;
475
547
  if (isSelectAll) {
476
- nextSelection = _this.props.data.filter(item => (isItem(item) || isCustomItem(item)) && !item.disabled);
477
- nextSelection.filter(item => !_this.props.selected.find(selectedItem => item.key === selectedItem.key)).forEach(item => {
548
+ nextSelection = _this.props.data.filter(function (item) {
549
+ return (isItem(item) || isCustomItem(item)) && !item.disabled;
550
+ });
551
+ nextSelection.filter(function (item) {
552
+ return !_this.props.selected.find(function (selectedItem) {
553
+ return item.key === selectedItem.key;
554
+ });
555
+ }).forEach(function (item) {
478
556
  _this.props.onSelect && _this.props.onSelect(item);
479
557
  });
480
558
  } else {
481
559
  nextSelection = [];
482
- currentSelection.forEach(item => {
560
+ currentSelection.forEach(function (item) {
483
561
  _this.props.onDeselect && _this.props.onDeselect(item);
484
562
  });
485
563
  }
@@ -488,582 +566,630 @@ class Select extends Component {
488
566
  filterValue: '',
489
567
  selected: nextSelection,
490
568
  selectedIndex: isSelectAll ? _this._getSelectedIndex(nextSelection, _this.props.data) : null,
491
- shownData: prevState.shownData.map(item => ({
492
- ...item,
493
- checkbox: isSelectAll
494
- })),
495
- multipleMap: isSelectAll ? buildMultipleMap(_this.props.data.filter(item => !item.disabled)) : {}
569
+ shownData: prevState.shownData.map(function (item) {
570
+ return _objectSpread2(_objectSpread2({}, item), {}, {
571
+ checkbox: isSelectAll
572
+ });
573
+ }),
574
+ multipleMap: isSelectAll ? buildMultipleMap(_this.props.data.filter(function (item) {
575
+ return !item.disabled;
576
+ })) : {}
496
577
  };
497
578
  }, _this._redrawPopup);
498
579
  });
499
- _defineProperty(this, "_onCloseAttempt", (event, isEsc) => {
500
- if (this.isInputMode()) {
501
- if (!this.props.allowAny) {
502
- if (this.props.hideSelected || !this.state.selected || this.props.multiple) {
503
- this.clearFilter();
504
- } else if (this.state.selected && !Array.isArray(this.state.selected)) {
505
- this.filterValue(getItemLabel(this.state.selected));
580
+ _defineProperty(_assertThisInitialized(_this), "_onCloseAttempt", function (event, isEsc) {
581
+ if (_this.isInputMode()) {
582
+ if (!_this.props.allowAny) {
583
+ if (_this.props.hideSelected || !_this.state.selected || _this.props.multiple) {
584
+ _this.clearFilter();
585
+ } else if (_this.state.selected && !Array.isArray(_this.state.selected)) {
586
+ _this.filterValue(getItemLabel(_this.state.selected));
506
587
  }
507
588
  }
508
589
  }
509
- const isTagRemoved = this.props.tags && event && event.target && event.target instanceof Element && event.target.matches('[data-test="ring-tag-remove"]');
590
+ var isTagRemoved = _this.props.tags && event && event.target && event.target instanceof Element && event.target.matches('[data-test="ring-tag-remove"]');
510
591
  if (!isTagRemoved) {
511
- this._hidePopup(isEsc);
592
+ _this._hidePopup(isEsc);
512
593
  }
513
594
  });
514
- _defineProperty(this, "clearFilter", e => {
515
- this._setFilter('', e);
595
+ _defineProperty(_assertThisInitialized(_this), "clearFilter", function (e) {
596
+ _this._setFilter('', e);
516
597
  });
517
- _defineProperty(this, "clear", event => {
598
+ _defineProperty(_assertThisInitialized(_this), "clear", function (event) {
518
599
  if (event) {
519
600
  event.stopPropagation();
520
601
  }
521
- const empty = this.props.multiple ? [] : null;
522
- this.setState({
602
+ var empty = _this.props.multiple ? [] : null;
603
+ _this.setState({
523
604
  selected: empty,
524
605
  selectedIndex: null,
525
606
  filterValue: ''
526
- }, () => {
527
- if (this.props.onChange) {
528
- this.props.onChange(empty, event);
607
+ }, function () {
608
+ if (_this.props.onChange) {
609
+ _this.props.onChange(empty, event);
529
610
  }
530
611
  });
531
612
  return false;
532
613
  });
533
- _defineProperty(this, "filter", void 0);
534
- _defineProperty(this, "filterRef", el => {
535
- this.filter = el;
614
+ _defineProperty(_assertThisInitialized(_this), "filter", void 0);
615
+ _defineProperty(_assertThisInitialized(_this), "filterRef", function (el) {
616
+ _this.filter = el;
536
617
  });
618
+ return _this;
537
619
  }
538
- static getDerivedStateFromProps(nextProps, prevState) {
539
- const {
540
- multiple,
541
- data,
542
- type
543
- } = nextProps;
544
- const {
545
- prevSelected,
546
- prevData,
547
- prevMultiple,
548
- filterValue
549
- } = prevState;
550
- const nextState = {
551
- prevData: data,
552
- prevSelected: nextProps.selected,
553
- prevMultiple: multiple
554
- };
555
- if ('data' in nextProps && data !== prevData) {
556
- const {
557
- filteredData,
558
- addButton
559
- } = getListItems(nextProps, prevState, filterValue, data);
560
- Object.assign(nextState, {
561
- shownData: filteredData,
562
- addButton
563
- });
564
- if (prevState.selected) {
565
- Object.assign(nextState, {
566
- selectedIndex: getSelectedIndex(prevState.selected, data),
567
- prevFilterValue: getValueForFilter(prevState.selected, type, filterValue)
568
- });
620
+ _createClass(Select, [{
621
+ key: "componentDidUpdate",
622
+ value: function componentDidUpdate(prevProps, prevState) {
623
+ var _this$state = this.state,
624
+ showPopup = _this$state.showPopup,
625
+ selected = _this$state.selected;
626
+ var _this$props = this.props,
627
+ onClose = _this$props.onClose,
628
+ onOpen = _this$props.onOpen,
629
+ onChange = _this$props.onChange,
630
+ multiple = _this$props.multiple;
631
+ if (prevState.showPopup && !showPopup) {
632
+ onClose(selected);
633
+ } else if (!prevState.showPopup && showPopup) {
634
+ onOpen();
569
635
  }
570
- }
571
- if ('selected' in nextProps && nextProps.selected !== prevSelected) {
572
- const selected = nextProps.selected || (multiple ? [] : null);
573
- const selectedIndex = getSelectedIndex(selected, data || prevData);
574
- Object.assign(nextState, {
575
- selected,
576
- prevFilterValue: getValueForFilter(selected, type, filterValue)
577
- });
578
- if (!Array.isArray(prevSelected) || !Array.isArray(selected) || !isSameSelected(prevSelected, selected)) {
579
- Object.assign(nextState, {
580
- selectedIndex
581
- });
636
+ if (multiple !== prevProps.multiple && !deepEqual(multiple, prevProps.multiple)) {
637
+ onChange(selected);
582
638
  }
583
639
  }
584
- if (prevMultiple !== multiple && !deepEqual(prevMultiple, multiple)) {
585
- nextState.selected = multiple ? [] : null;
640
+ }, {
641
+ key: "getValueForFilter",
642
+ value: function getValueForFilter(selected) {
643
+ return _getValueForFilter(selected, this.props.type, this.state.filterValue);
586
644
  }
587
- if (multiple && !nextState.selected) {
588
- nextState.selected = prevState.selected;
645
+ }, {
646
+ key: "_getSelectedIndex",
647
+ value: function _getSelectedIndex(selected, data) {
648
+ return getSelectedIndex(selected, data);
589
649
  }
590
- const {
591
- selected
592
- } = {
593
- ...prevState,
594
- ...nextState
595
- };
596
- if (selected && Array.isArray(selected)) {
597
- nextState.multipleMap = buildMultipleMap(selected);
598
- const {
599
- filteredData,
600
- addButton
601
- } = getListItems(nextProps, nextState, filterValue, data);
602
- Object.assign(nextState, {
603
- shownData: filteredData,
604
- addButton
605
- });
650
+ }, {
651
+ key: "_getResetOption",
652
+ value: function _getResetOption() {
653
+ var _this2 = this;
654
+ var isOptionsSelected = Array.isArray(this.state.selected) && this.state.selected.length;
655
+ var reset = this.props.tags && _typeof(this.props.tags) === 'object' ? this.props.tags.reset : null;
656
+ if (!isOptionsSelected || !reset) {
657
+ return null;
658
+ }
659
+ var resetHandler = function resetHandler(item, event) {
660
+ _this2.clear(event);
661
+ _this2.clearFilter();
662
+ _this2.props.onFilter('');
663
+ _this2.setState(function (prevState) {
664
+ return {
665
+ shownData: prevState.shownData.slice(reset.separator ? 2 : 1),
666
+ multipleMap: {}
667
+ };
668
+ });
669
+ _this2._redrawPopup();
670
+ };
671
+ return {
672
+ isResetItem: true,
673
+ separator: reset.separator,
674
+ key: reset.label,
675
+ rgItemType: List.ListProps.Type.CUSTOM,
676
+ template: /*#__PURE__*/React.createElement(Button, {
677
+ text: true,
678
+ className: modules_9d0de074.button,
679
+ "data-test": "ring-select-reset-tags-button",
680
+ height: ControlsHeight.S
681
+ }, reset.label),
682
+ glyph: reset.glyph,
683
+ onClick: resetHandler
684
+ };
606
685
  }
607
- return nextState;
608
- }
609
- componentDidUpdate(prevProps, prevState) {
610
- const {
611
- showPopup,
612
- selected
613
- } = this.state;
614
- const {
615
- onClose,
616
- onOpen,
617
- onChange,
618
- multiple
619
- } = this.props;
620
- if (prevState.showPopup && !showPopup) {
621
- onClose(selected);
622
- } else if (!prevState.showPopup && showPopup) {
623
- onOpen();
686
+ }, {
687
+ key: "_prependResetOption",
688
+ value: function _prependResetOption(shownData) {
689
+ var resetOption = this._getResetOption();
690
+ if (resetOption) {
691
+ var resetItems = [resetOption];
692
+ if (resetOption.separator) {
693
+ resetItems.push({
694
+ rgItemType: List.ListProps.Type.SEPARATOR
695
+ });
696
+ }
697
+ return resetItems.concat(shownData);
698
+ }
699
+ return shownData;
624
700
  }
625
- if (multiple !== prevProps.multiple && !deepEqual(multiple, prevProps.multiple)) {
626
- onChange(selected);
701
+ }, {
702
+ key: "_renderPopup",
703
+ value: function _renderPopup() {
704
+ var _this3 = this;
705
+ var anchorElement = this.props.targetElement || this.node;
706
+ var _this$state2 = this.state,
707
+ showPopup = _this$state2.showPopup,
708
+ shownData = _this$state2.shownData;
709
+ var _shownData = this._prependResetOption(shownData);
710
+ return /*#__PURE__*/React.createElement(I18nContext.Consumer, null, function (_ref2) {
711
+ var translate = _ref2.translate;
712
+ var message;
713
+ if (_this3.props.loading) {
714
+ var _this3$props$loadingM;
715
+ message = (_this3$props$loadingM = _this3.props.loadingMessage) !== null && _this3$props$loadingM !== void 0 ? _this3$props$loadingM : translate('loading');
716
+ } else if (!shownData.length) {
717
+ var _this3$props$notFound;
718
+ message = (_this3$props$notFound = _this3.props.notFoundMessage) !== null && _this3$props$notFound !== void 0 ? _this3$props$notFound : translate('noOptionsFound');
719
+ }
720
+ return /*#__PURE__*/React.createElement(SelectPopup, {
721
+ data: _shownData,
722
+ message: message,
723
+ toolbar: showPopup && _this3.getToolbar(),
724
+ topbar: _this3.getTopbar(),
725
+ loading: _this3.props.loading,
726
+ activeIndex: _this3.state.selectedIndex,
727
+ hidden: !showPopup,
728
+ ref: _this3.popupRef,
729
+ maxHeight: _this3.props.maxHeight,
730
+ minWidth: _this3.props.minWidth,
731
+ directions: _this3.props.directions,
732
+ className: _this3.props.popupClassName,
733
+ style: _this3.props.popupStyle,
734
+ top: _this3.props.top,
735
+ left: _this3.props.left,
736
+ filter: _this3.isInputMode() ? false : _this3.props.filter // disable popup filter in INPUT mode
737
+ ,
738
+ filterIcon: _this3.props.filterIcon,
739
+ filterRef: _this3.props.filterRef,
740
+ multiple: _this3.props.multiple,
741
+ filterValue: _this3.state.filterValue,
742
+ anchorElement: anchorElement,
743
+ onCloseAttempt: _this3._onCloseAttempt,
744
+ onOutsideClick: _this3.props.onOutsideClick,
745
+ onSelect: _this3._listSelectHandler,
746
+ onSelectAll: _this3._listSelectAllHandler,
747
+ onFilter: _this3._filterChangeHandler,
748
+ onClear: _this3.clearFilter,
749
+ onLoadMore: _this3.props.onLoadMore,
750
+ isInputMode: _this3.isInputMode(),
751
+ selected: _this3.state.selected,
752
+ tags: _this3.props.tags,
753
+ compact: _this3.props.compact,
754
+ renderOptimization: _this3.props.renderOptimization,
755
+ ringPopupTarget: _this3.props.ringPopupTarget,
756
+ disableMoveOverflow: _this3.props.disableMoveOverflow,
757
+ disableScrollToActive: _this3.props.disableScrollToActive,
758
+ dir: _this3.props.dir,
759
+ onEmptyPopupEnter: _this3.onEmptyPopupEnter,
760
+ listId: _this3.listId
761
+ });
762
+ });
627
763
  }
628
- }
629
- getValueForFilter(selected) {
630
- return getValueForFilter(selected, this.props.type, this.state.filterValue);
631
- }
632
- _getSelectedIndex(selected, data) {
633
- return getSelectedIndex(selected, data);
634
- }
635
- _getResetOption() {
636
- const isOptionsSelected = Array.isArray(this.state.selected) && this.state.selected.length;
637
- const reset = this.props.tags && typeof this.props.tags === 'object' ? this.props.tags.reset : null;
638
- if (!isOptionsSelected || !reset) {
639
- return null;
764
+ }, {
765
+ key: "_showPopup",
766
+ value: function _showPopup() {
767
+ if (!this.node) {
768
+ return;
769
+ }
770
+ var shownData = this.getListItems(this.filterValue());
771
+ this.setState({
772
+ showPopup: true,
773
+ shownData: shownData
774
+ });
640
775
  }
641
- const resetHandler = (item, event) => {
642
- this.clear(event);
643
- this.clearFilter();
644
- this.props.onFilter('');
645
- this.setState(prevState => ({
646
- shownData: prevState.shownData.slice(reset.separator ? 2 : 1),
647
- multipleMap: {}
648
- }));
649
- this._redrawPopup();
650
- };
651
- return {
652
- isResetItem: true,
653
- separator: reset.separator,
654
- key: reset.label,
655
- rgItemType: List.ListProps.Type.CUSTOM,
656
- template: /*#__PURE__*/React.createElement(Button, {
657
- text: true,
658
- className: modules_9d0de074.button,
659
- "data-test": "ring-select-reset-tags-button",
660
- height: ControlsHeight.S
661
- }, reset.label),
662
- glyph: reset.glyph,
663
- onClick: resetHandler
664
- };
665
- }
666
- _prependResetOption(shownData) {
667
- const resetOption = this._getResetOption();
668
- if (resetOption) {
669
- const resetItems = [resetOption];
670
- if (resetOption.separator) {
671
- resetItems.push({
672
- rgItemType: List.ListProps.Type.SEPARATOR
776
+ }, {
777
+ key: "_hidePopup",
778
+ value: function _hidePopup(tryFocusAnchor) {
779
+ var _this4 = this;
780
+ if (this.node && this.state.showPopup) {
781
+ this.setState(function (prevState) {
782
+ return {
783
+ showPopup: false,
784
+ filterValue: _this4.props.allowAny ? prevState.filterValue : ''
785
+ };
673
786
  });
787
+ if (tryFocusAnchor) {
788
+ var focusableSelectExists = this.node && this.node.querySelector('[data-test~=ring-select__focus]');
789
+ var restoreFocusNode = this.props.targetElement || focusableSelectExists;
790
+ if (restoreFocusNode) {
791
+ restoreFocusNode.focus();
792
+ }
793
+ }
674
794
  }
675
- return resetItems.concat(shownData);
676
795
  }
677
- return shownData;
678
- }
679
- _renderPopup() {
680
- const anchorElement = this.props.targetElement || this.node;
681
- const {
682
- showPopup,
683
- shownData
684
- } = this.state;
685
- const _shownData = this._prependResetOption(shownData);
686
- let message;
687
- if (this.props.loading) {
688
- message = this.props.loadingMessage;
689
- } else if (!shownData.length) {
690
- message = this.props.notFoundMessage;
691
- }
692
- return /*#__PURE__*/React.createElement(SelectPopup, {
693
- data: _shownData,
694
- message: message,
695
- toolbar: showPopup && this.getToolbar(),
696
- loading: this.props.loading,
697
- activeIndex: this.state.selectedIndex,
698
- hidden: !showPopup,
699
- ref: this.popupRef,
700
- maxHeight: this.props.maxHeight,
701
- minWidth: this.props.minWidth,
702
- directions: this.props.directions,
703
- className: this.props.popupClassName,
704
- style: this.props.popupStyle,
705
- top: this.props.top,
706
- left: this.props.left,
707
- filter: this.isInputMode() ? false : this.props.filter // disable popup filter in INPUT mode
708
- ,
709
- multiple: this.props.multiple,
710
- filterValue: this.state.filterValue,
711
- anchorElement: anchorElement,
712
- onCloseAttempt: this._onCloseAttempt,
713
- onSelect: this._listSelectHandler,
714
- onSelectAll: this._listSelectAllHandler,
715
- onFilter: this._filterChangeHandler,
716
- onClear: this.clearFilter,
717
- onLoadMore: this.props.onLoadMore,
718
- isInputMode: this.isInputMode(),
719
- selected: this.state.selected,
720
- tags: this.props.tags,
721
- compact: this.props.compact,
722
- renderOptimization: this.props.renderOptimization,
723
- ringPopupTarget: this.props.ringPopupTarget,
724
- disableMoveOverflow: this.props.disableMoveOverflow,
725
- disableScrollToActive: this.props.disableScrollToActive,
726
- dir: this.props.dir,
727
- onEmptyPopupEnter: this.onEmptyPopupEnter,
728
- listId: this.listId
729
- });
730
- }
731
- _showPopup() {
732
- if (!this.node) {
733
- return;
734
- }
735
- const shownData = this.getListItems(this.filterValue());
736
- this.setState({
737
- showPopup: !!shownData.length || !this.props.allowAny,
738
- shownData
739
- });
740
- }
741
- _hidePopup(tryFocusAnchor) {
742
- if (this.node && this.state.showPopup) {
743
- this.setState(prevState => ({
744
- showPopup: false,
745
- filterValue: this.props.allowAny ? prevState.filterValue : ''
746
- }));
747
- if (tryFocusAnchor) {
748
- const focusableSelectExists = this.node && this.node.querySelector('[data-test~=ring-select__focus]');
749
- const restoreFocusNode = this.props.targetElement || focusableSelectExists;
750
- if (restoreFocusNode) {
751
- restoreFocusNode.focus();
752
- }
796
+ }, {
797
+ key: "getToolbar",
798
+ value: function getToolbar() {
799
+ var _this$props2 = this.props,
800
+ hint = _this$props2.hint,
801
+ renderBottomToolbar = _this$props2.renderBottomToolbar;
802
+ var _ref3 = this.state.addButton || {},
803
+ prefix = _ref3.prefix,
804
+ label = _ref3.label,
805
+ delayed = _ref3.delayed;
806
+ var isToolbarHasElements = this.state.addButton || hint || renderBottomToolbar;
807
+ if (!isToolbarHasElements) {
808
+ return null;
753
809
  }
810
+ return /*#__PURE__*/React.createElement("div", {
811
+ className: classNames(_defineProperty({}, modules_9d0de074.toolbar, Boolean(this.state.addButton || renderBottomToolbar))),
812
+ "data-test": "ring-select-toolbar"
813
+ }, renderBottomToolbar && renderBottomToolbar(), this.state.addButton && /*#__PURE__*/React.createElement(Button, {
814
+ text: true,
815
+ delayed: delayed,
816
+ className: classNames(modules_9d0de074.button, modules_9d0de074.buttonSpaced),
817
+ onClick: this.addHandler,
818
+ "data-test": "ring-select-toolbar-button"
819
+ }, prefix ? "".concat(prefix, " ").concat(label) : label), hint && /*#__PURE__*/React.createElement(List.ListHint, {
820
+ label: hint,
821
+ "data-test": "ring-select-toolbar-hint"
822
+ }));
754
823
  }
755
- }
756
- getToolbar() {
757
- const {
758
- hint,
759
- renderBottomToolbar
760
- } = this.props;
761
- const {
762
- prefix,
763
- label,
764
- delayed
765
- } = this.state.addButton || {};
766
- const isToolbarHasElements = this.state.addButton || hint || renderBottomToolbar;
767
- if (!isToolbarHasElements) {
768
- return null;
824
+ }, {
825
+ key: "getTopbar",
826
+ value: function getTopbar() {
827
+ var _this$props$renderTop, _this$props3;
828
+ return (_this$props$renderTop = (_this$props3 = this.props).renderTopToolbar) === null || _this$props$renderTop === void 0 ? void 0 : _this$props$renderTop.call(_this$props3);
769
829
  }
770
- return /*#__PURE__*/React.createElement("div", {
771
- className: classNames({
772
- [modules_9d0de074.toolbar]: Boolean(this.state.addButton || renderBottomToolbar)
773
- }),
774
- "data-test": "ring-select-toolbar"
775
- }, renderBottomToolbar && renderBottomToolbar(), this.state.addButton && /*#__PURE__*/React.createElement(Button, {
776
- text: true,
777
- delayed: delayed,
778
- className: classNames(modules_9d0de074.button, modules_9d0de074.buttonSpaced),
779
- onClick: this.addHandler,
780
- "data-test": "ring-select-toolbar-button"
781
- }, prefix ? `${prefix} ${label}` : label), hint && /*#__PURE__*/React.createElement(List.ListHint, {
782
- label: hint,
783
- "data-test": "ring-select-toolbar-hint"
784
- }));
785
- }
786
- getFilterFn() {
787
- return getFilterFn(this.props.filter);
788
- }
789
- getListItems(rawFilterString, data) {
790
- const {
791
- filteredData,
792
- addButton
793
- } = getListItems(this.props, this.state, rawFilterString, data);
794
- this.setState({
795
- addButton
796
- });
797
- return filteredData;
798
- }
799
- filterValue(setValue) {
800
- if (typeof setValue === 'string' || typeof setValue === 'number') {
801
- this.setState({
802
- filterValue: setValue
803
- });
804
- return undefined;
805
- } else {
806
- return this.state.filterValue;
830
+ }, {
831
+ key: "getFilterFn",
832
+ value: function getFilterFn() {
833
+ return _getFilterFn(this.props.filter);
807
834
  }
808
- }
809
- isInputMode() {
810
- return isInputMode(this.props.type);
811
- }
812
- _rebuildMultipleMap(selected) {
813
- if (Array.isArray(selected)) {
835
+ }, {
836
+ key: "getListItems",
837
+ value: function getListItems(rawFilterString, data) {
838
+ var _getListItems2 = _getListItems(this.props, this.state, rawFilterString, data),
839
+ filteredData = _getListItems2.filteredData,
840
+ addButton = _getListItems2.addButton;
814
841
  this.setState({
815
- multipleMap: buildMultipleMap(selected)
842
+ addButton: addButton
816
843
  });
844
+ return filteredData;
817
845
  }
818
- }
819
- _selectionIsEmpty() {
820
- return Array.isArray(this.state.selected) && !this.state.selected.length || !this.state.selected;
821
- }
822
- _getLabel() {
823
- var _ref2, _this$props$label;
824
- return (_ref2 = (_this$props$label = this.props.label) !== null && _this$props$label !== void 0 ? _this$props$label : this.props.selectedLabel) !== null && _ref2 !== void 0 ? _ref2 : 'Select an option';
825
- }
826
- _getPlaceholder() {
827
- if (this._selectionIsEmpty()) {
828
- var _this$props$label2;
829
- return (_this$props$label2 = this.props.label) !== null && _this$props$label2 !== void 0 ? _this$props$label2 : 'Select an option';
846
+ }, {
847
+ key: "filterValue",
848
+ value: function filterValue(setValue) {
849
+ if (typeof setValue === 'string' || typeof setValue === 'number') {
850
+ this.setState({
851
+ filterValue: setValue
852
+ });
853
+ return undefined;
854
+ } else {
855
+ return this.state.filterValue;
856
+ }
830
857
  }
831
- return this._getSelectedString();
832
- }
833
- _getSelectedString() {
834
- if (Array.isArray(this.state.selected)) {
835
- const labels = [];
836
- for (let i = 0; i < this.state.selected.length; i++) {
837
- labels.push(getItemLabel(this.state.selected[i]));
858
+ }, {
859
+ key: "isInputMode",
860
+ value: function isInputMode() {
861
+ return _isInputMode(this.props.type);
862
+ }
863
+ }, {
864
+ key: "_rebuildMultipleMap",
865
+ value: function _rebuildMultipleMap(selected) {
866
+ if (Array.isArray(selected)) {
867
+ this.setState({
868
+ multipleMap: buildMultipleMap(selected)
869
+ });
838
870
  }
839
- return labels.filter(Boolean).join(', ');
840
- } else {
841
- return this.state.selected != null ? getItemLabel(this.state.selected) : null;
842
871
  }
843
- }
844
- _getIcons() {
845
- const {
846
- selected
847
- } = this.state;
848
- const {
849
- disabled,
850
- clear,
851
- hideArrow
852
- } = this.props;
853
- const icons = [];
854
- const height = this.props.height || this.context;
855
- if (!Array.isArray(selected) && selected?.icon) {
856
- icons.push( /*#__PURE__*/React.createElement("button", {
857
- title: "Toggle options popup",
858
- type: "button",
859
- className: modules_9d0de074.selectedIcon,
860
- key: "selected",
861
- disabled: this.props.disabled,
862
- onClick: this._clickHandler,
863
- style: {
864
- backgroundImage: `url(${selected.icon})`
865
- }
866
- }));
872
+ }, {
873
+ key: "_selectionIsEmpty",
874
+ value: function _selectionIsEmpty() {
875
+ return Array.isArray(this.state.selected) && !this.state.selected.length || !this.state.selected;
867
876
  }
868
- if (clear && !disabled && !this._selectionIsEmpty()) {
869
- icons.push( /*#__PURE__*/React.createElement(Button, {
870
- title: "Clear selection",
871
- "data-test": "ring-clear-select",
872
- className: modules_9d0de074.clearIcon,
873
- key: "close",
874
- disabled: this.props.disabled,
875
- onClick: this.clear,
876
- height: height,
877
- icon: closeIcon
878
- }));
877
+ }, {
878
+ key: "_getLabel",
879
+ value: function _getLabel() {
880
+ var _ref4, _this$props$label;
881
+ return (_ref4 = (_this$props$label = this.props.label) !== null && _this$props$label !== void 0 ? _this$props$label : this.props.selectedLabel) !== null && _ref4 !== void 0 ? _ref4 : 'Select an option';
879
882
  }
880
- if (!hideArrow) {
881
- icons.push( /*#__PURE__*/React.createElement(Button, {
882
- title: "Toggle options popup",
883
- className: modules_9d0de074.chevron,
884
- iconClassName: modules_9d0de074.chevronIcon,
885
- icon: chevronDownIcon,
886
- key: "hide",
887
- disabled: this.props.disabled,
888
- height: height,
889
- onClick: this._clickHandler
890
- }));
883
+ }, {
884
+ key: "_getPlaceholder",
885
+ value: function _getPlaceholder() {
886
+ if (this._selectionIsEmpty()) {
887
+ var _this$props$label2;
888
+ return (_this$props$label2 = this.props.label) !== null && _this$props$label2 !== void 0 ? _this$props$label2 : 'Select an option';
889
+ }
890
+ return this._getSelectedString();
891
891
  }
892
- return icons;
893
- }
894
- _getAvatar() {
895
- return !Array.isArray(this.state.selected) && (this.state.selected?.avatar || this.state.selected?.showGeneratedAvatar) && /*#__PURE__*/React.createElement(Avatar, {
896
- className: modules_9d0de074.avatar,
897
- url: this.state.selected.avatar,
898
- username: this.state.selected.username,
899
- size: Size$1.Size20
900
- });
901
- }
902
- getShortcutsMap() {
903
- return {
904
- enter: this._onEnter,
905
- esc: this._onEsc,
906
- up: this._inputShortcutHandler,
907
- down: this._inputShortcutHandler,
908
- right: noop,
909
- left: noop,
910
- 'shift+up': noop,
911
- 'shift+down': noop,
912
- space: noop
913
- };
914
- }
915
- renderSelect(activeItemId) {
916
- var _this$props$label3, _this$props$label4, _this$props$buttonCla;
917
- const dataTest = this.props['data-test'];
918
- const {
919
- selectedLabel
920
- } = this.props;
921
- const {
922
- shortcutsEnabled
923
- } = this.state;
924
- const classes = classNames(modules_9d0de074.select, 'ring-js-shortcuts', this.props.className, modules_9d0de074[`height${this.props.height || this.context}`], {
925
- [modules_9d0de074[`size${this.props.size}`]]: this.props.type !== Type.INLINE,
926
- [modules_9d0de074.disabled]: this.props.disabled
927
- });
928
- const icons = this._getIcons();
929
- const style = getStyle(icons.length);
930
- const iconsNode = /*#__PURE__*/React.createElement("div", {
931
- className: modules_9d0de074.icons
932
- }, icons);
933
- const ariaProps = this.state.showPopup ? {
934
- 'aria-owns': this.listId,
935
- 'aria-activedescendant': activeItemId,
936
- 'aria-label': (_this$props$label3 = this.props.label) !== null && _this$props$label3 !== void 0 ? _this$props$label3 : undefined
937
- } : {
938
- 'aria-label': (_this$props$label4 = this.props.label) !== null && _this$props$label4 !== void 0 ? _this$props$label4 : undefined
939
- };
940
- switch (this.props.type) {
941
- case Type.INPUT_WITHOUT_CONTROLS:
942
- case Type.INPUT:
943
- return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
944
- ref: this.nodeRef,
945
- className: classNames(classes, modules_9d0de074.inputMode),
946
- "data-test": joinDataTestAttributes('ring-select', dataTest)
947
- }, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
948
- map: this.getShortcutsMap(),
949
- scope: this.shortcutsScope
950
- }), /*#__PURE__*/React.createElement(Input, _extends({}, ariaProps, {
951
- height: this.props.height,
952
- autoComplete: "off",
953
- id: this.props.id,
954
- onClick: this._clickHandler,
955
- inputRef: this.filterRef,
956
- disabled: this.props.disabled,
957
- value: this.state.filterValue,
958
- borderless: this.props.type === Type.INPUT_WITHOUT_CONTROLS,
959
- style: style,
960
- size: Size.FULL,
961
- onChange: this._filterChangeHandler,
962
- onFocus: this._focusHandler,
963
- onBlur: this._blurHandler
964
- // Input with error style without description
965
- ,
966
- error: this.props.error != null ? '' : null,
967
- label: this.props.type === Type.INPUT ? this._getLabel() : null,
968
- placeholder: this.props.inputPlaceholder,
969
- onKeyDown: this.props.onKeyDown,
970
- "data-test": "ring-select__focus",
971
- enableShortcuts: shortcutsEnabled ? Object.keys({
972
- ...this.getShortcutsMap(),
973
- ...this._popup?.list?.shortcutsMap
974
- }) : undefined,
975
- afterInput: this.props.type === Type.INPUT && iconsNode
976
- })), this._renderPopup()), this.props.error && /*#__PURE__*/React.createElement("div", {
977
- className: classNames(modules_88cfaf40.errorText, modules_88cfaf40[`size${this.props.size}`])
978
- }, this.props.error));
979
- case Type.BUTTON:
980
- return /*#__PURE__*/React.createElement("div", {
981
- ref: this.nodeRef,
982
- className: classNames(classes, modules_9d0de074.buttonMode),
983
- "data-test": joinDataTestAttributes('ring-select', dataTest)
984
- }, selectedLabel && /*#__PURE__*/React.createElement(InputLabel, {
985
- label: selectedLabel,
892
+ }, {
893
+ key: "_getSelectedString",
894
+ value: function _getSelectedString() {
895
+ if (Array.isArray(this.state.selected)) {
896
+ var labels = [];
897
+ for (var i = 0; i < this.state.selected.length; i++) {
898
+ labels.push(getItemLabel(this.state.selected[i]));
899
+ }
900
+ return labels.filter(Boolean).join(', ');
901
+ } else {
902
+ return this.state.selected != null ? getItemLabel(this.state.selected) : null;
903
+ }
904
+ }
905
+ }, {
906
+ key: "_getIcons",
907
+ value: function _getIcons() {
908
+ var selected = this.state.selected;
909
+ var _this$props4 = this.props,
910
+ disabled = _this$props4.disabled,
911
+ clear = _this$props4.clear,
912
+ hideArrow = _this$props4.hideArrow;
913
+ var icons = [];
914
+ var height = this.props.height || this.context;
915
+ if (!Array.isArray(selected) && selected !== null && selected !== void 0 && selected.icon) {
916
+ icons.push( /*#__PURE__*/React.createElement("button", {
917
+ title: "Toggle options popup",
918
+ type: "button",
919
+ className: modules_9d0de074.selectedIcon,
920
+ key: "selected",
986
921
  disabled: this.props.disabled,
987
- htmlFor: this.props.id
988
- }), shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
989
- map: this.getShortcutsMap(),
990
- scope: this.shortcutsScope
991
- }), /*#__PURE__*/React.createElement("div", {
992
- className: modules_9d0de074.buttonContainer
993
- }, /*#__PURE__*/React.createElement(Button, _extends({}, ariaProps, {
994
- height: this.props.height,
995
- id: this.props.id,
996
922
  onClick: this._clickHandler,
997
- className: classNames(this.props.buttonClassName, modules_9d0de074.buttonValue, {
998
- [modules_9d0de074.buttonValueOpen]: this.state.showPopup
999
- }),
923
+ style: {
924
+ backgroundImage: "url(".concat(selected.icon, ")")
925
+ }
926
+ }));
927
+ }
928
+ if (clear && !disabled && !this._selectionIsEmpty()) {
929
+ icons.push( /*#__PURE__*/React.createElement(Button, {
930
+ title: "Clear selection",
931
+ "data-test": "ring-clear-select",
932
+ className: modules_9d0de074.clearIcon,
933
+ key: "close",
1000
934
  disabled: this.props.disabled,
1001
- style: style,
1002
- "data-test": "ring-select__button ring-select__focus"
1003
- }), this._getAvatar(), this._getPlaceholder()), iconsNode), this._renderPopup());
1004
- case Type.INLINE:
1005
- return /*#__PURE__*/React.createElement("div", {
1006
- className: classes,
1007
- ref: this.nodeRef,
1008
- "data-test": joinDataTestAttributes('ring-select', dataTest)
1009
- }, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
1010
- map: this.getShortcutsMap(),
1011
- scope: this.shortcutsScope
1012
- }), /*#__PURE__*/React.createElement(Anchor, _extends({}, ariaProps, {
1013
- className: (_this$props$buttonCla = this.props.buttonClassName) !== null && _this$props$buttonCla !== void 0 ? _this$props$buttonCla : undefined,
1014
- id: this.props.id,
1015
- onClick: this._clickHandler,
1016
- "data-test": "ring-select__focus",
935
+ onClick: this.clear,
936
+ height: height,
937
+ icon: closeIcon
938
+ }));
939
+ }
940
+ if (!hideArrow) {
941
+ icons.push( /*#__PURE__*/React.createElement(Button, {
942
+ title: "Toggle options popup",
943
+ className: modules_9d0de074.chevron,
944
+ iconClassName: modules_9d0de074.chevronIcon,
945
+ icon: chevronDownIcon,
946
+ key: "hide",
1017
947
  disabled: this.props.disabled,
1018
- active: this.state.showPopup
1019
- }), this._getPlaceholder()), this._renderPopup());
1020
- default:
1021
- if (this.props.customAnchor) {
1022
- return /*#__PURE__*/React.createElement(Fragment, null, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
948
+ height: height,
949
+ onClick: this._clickHandler
950
+ }));
951
+ }
952
+ return icons;
953
+ }
954
+ }, {
955
+ key: "_getAvatar",
956
+ value: function _getAvatar() {
957
+ var _this$state$selected, _this$state$selected2;
958
+ return !Array.isArray(this.state.selected) && (((_this$state$selected = this.state.selected) === null || _this$state$selected === void 0 ? void 0 : _this$state$selected.avatar) || ((_this$state$selected2 = this.state.selected) === null || _this$state$selected2 === void 0 ? void 0 : _this$state$selected2.showGeneratedAvatar)) && /*#__PURE__*/React.createElement(Avatar, {
959
+ className: modules_9d0de074.avatar,
960
+ url: this.state.selected.avatar,
961
+ username: this.state.selected.username,
962
+ size: Size$1.Size20
963
+ });
964
+ }
965
+ }, {
966
+ key: "getShortcutsMap",
967
+ value: function getShortcutsMap() {
968
+ return {
969
+ enter: this._onEnter,
970
+ esc: this._onEsc,
971
+ up: this._inputShortcutHandler,
972
+ down: this._inputShortcutHandler,
973
+ right: noop,
974
+ left: noop,
975
+ 'shift+up': noop,
976
+ 'shift+down': noop,
977
+ space: noop
978
+ };
979
+ }
980
+ }, {
981
+ key: "renderSelect",
982
+ value: function renderSelect(activeItemId) {
983
+ var _classNames2, _this$props$label3, _this$props$label4, _this$_popup5, _classNames3, _this$props$buttonCla;
984
+ var dataTest = this.props['data-test'];
985
+ var selectedLabel = this.props.selectedLabel;
986
+ var shortcutsEnabled = this.state.shortcutsEnabled;
987
+ var classes = classNames(modules_9d0de074.select, 'ring-js-shortcuts', this.props.className, modules_9d0de074["height".concat(this.props.height || this.context)], (_classNames2 = {}, _defineProperty(_classNames2, modules_9d0de074["size".concat(this.props.size)], this.props.type !== Type.INLINE), _defineProperty(_classNames2, modules_9d0de074.disabled, this.props.disabled), _classNames2));
988
+ var icons = this._getIcons();
989
+ var style = getStyle(icons.length);
990
+ var iconsNode = /*#__PURE__*/React.createElement("div", {
991
+ className: modules_9d0de074.icons
992
+ }, icons);
993
+ var ariaProps = this.state.showPopup ? {
994
+ 'aria-owns': this.listId,
995
+ 'aria-activedescendant': activeItemId,
996
+ 'aria-label': (_this$props$label3 = this.props.label) !== null && _this$props$label3 !== void 0 ? _this$props$label3 : undefined
997
+ } : {
998
+ 'aria-label': (_this$props$label4 = this.props.label) !== null && _this$props$label4 !== void 0 ? _this$props$label4 : undefined
999
+ };
1000
+ switch (this.props.type) {
1001
+ case Type.INPUT_WITHOUT_CONTROLS:
1002
+ case Type.INPUT:
1003
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
1004
+ ref: this.nodeRef,
1005
+ className: classNames(classes, modules_9d0de074.inputMode),
1006
+ "data-test": joinDataTestAttributes('ring-select', dataTest)
1007
+ }, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
1008
+ map: this.getShortcutsMap(),
1009
+ scope: this.shortcutsScope
1010
+ }), /*#__PURE__*/React.createElement(Input, _extends({}, ariaProps, {
1011
+ height: this.props.height,
1012
+ autoComplete: "off",
1013
+ id: this.props.id,
1014
+ onClick: this._clickHandler,
1015
+ inputRef: composeRefs(this.filterRef, this.props.filterRef),
1016
+ disabled: this.props.disabled,
1017
+ value: this.state.filterValue,
1018
+ borderless: this.props.type === Type.INPUT_WITHOUT_CONTROLS,
1019
+ style: style,
1020
+ size: Size.FULL,
1021
+ onChange: this._filterChangeHandler,
1022
+ onFocus: this._focusHandler,
1023
+ onBlur: this._blurHandler
1024
+ // Input with error style without description
1025
+ ,
1026
+ error: this.props.error != null ? '' : null,
1027
+ label: this.props.type === Type.INPUT ? this._getLabel() : null,
1028
+ placeholder: this.props.inputPlaceholder,
1029
+ onKeyDown: this.props.onKeyDown,
1030
+ "data-test": "ring-select__focus",
1031
+ enableShortcuts: shortcutsEnabled ? Object.keys(_objectSpread2(_objectSpread2({}, this.getShortcutsMap()), (_this$_popup5 = this._popup) === null || _this$_popup5 === void 0 || (_this$_popup5 = _this$_popup5.list) === null || _this$_popup5 === void 0 ? void 0 : _this$_popup5.shortcutsMap)) : undefined,
1032
+ icon: this.props.filterIcon,
1033
+ afterInput: this.props.type === Type.INPUT && iconsNode
1034
+ })), this._renderPopup()), this.props.error && /*#__PURE__*/React.createElement("div", {
1035
+ className: classNames(modules_88cfaf40.errorText, modules_88cfaf40["size".concat(this.props.size)])
1036
+ }, this.props.error));
1037
+ case Type.BUTTON:
1038
+ return /*#__PURE__*/React.createElement("div", {
1039
+ ref: this.nodeRef,
1040
+ className: classNames(classes, modules_9d0de074.buttonMode),
1041
+ "data-test": joinDataTestAttributes('ring-select', dataTest)
1042
+ }, selectedLabel && /*#__PURE__*/React.createElement(ControlLabel, {
1043
+ type: this.props.labelType,
1044
+ disabled: this.props.disabled,
1045
+ htmlFor: this.props.id
1046
+ }, selectedLabel), shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
1047
+ map: this.getShortcutsMap(),
1048
+ scope: this.shortcutsScope
1049
+ }), /*#__PURE__*/React.createElement("div", {
1050
+ className: modules_9d0de074.buttonContainer
1051
+ }, /*#__PURE__*/React.createElement(Button, _extends({}, ariaProps, {
1052
+ height: this.props.height,
1053
+ id: this.props.id,
1054
+ onClick: this._clickHandler,
1055
+ className: classNames(this.props.buttonClassName, modules_9d0de074.buttonValue, (_classNames3 = {}, _defineProperty(_classNames3, modules_9d0de074.buttonValueOpen, this.state.showPopup), _defineProperty(_classNames3, modules_9d0de074.buttonValueEmpty, this._selectionIsEmpty()), _classNames3)),
1056
+ disabled: this.props.disabled,
1057
+ style: style,
1058
+ "data-test": "ring-select__button ring-select__focus"
1059
+ }), this._getAvatar(), this._getPlaceholder()), iconsNode), this._renderPopup());
1060
+ case Type.INLINE:
1061
+ return /*#__PURE__*/React.createElement("div", {
1062
+ className: classes,
1063
+ ref: this.nodeRef,
1064
+ "data-test": joinDataTestAttributes('ring-select', dataTest)
1065
+ }, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
1023
1066
  map: this.getShortcutsMap(),
1024
1067
  scope: this.shortcutsScope
1025
- }), this.props.customAnchor({
1026
- wrapperProps: {
1027
- ref: this.nodeRef,
1028
- 'data-test': joinDataTestAttributes('ring-select', dataTest)
1029
- },
1030
- buttonProps: {
1031
- ...ariaProps,
1032
- id: this.props.id,
1033
- onClick: this._clickHandler,
1034
- disabled: this.props.disabled,
1035
- children: this._getPlaceholder(),
1036
- 'data-test': 'ring-select_focus'
1037
- },
1038
- popup: this._renderPopup()
1039
- }));
1068
+ }), /*#__PURE__*/React.createElement(Anchor, _extends({}, ariaProps, {
1069
+ className: (_this$props$buttonCla = this.props.buttonClassName) !== null && _this$props$buttonCla !== void 0 ? _this$props$buttonCla : undefined,
1070
+ id: this.props.id,
1071
+ onClick: this._clickHandler,
1072
+ "data-test": "ring-select__focus",
1073
+ disabled: this.props.disabled,
1074
+ active: this.state.showPopup
1075
+ }), this._getPlaceholder()), this._renderPopup());
1076
+ default:
1077
+ if (this.props.customAnchor) {
1078
+ return /*#__PURE__*/React.createElement(Fragment, null, shortcutsEnabled && /*#__PURE__*/React.createElement(Shortcuts, {
1079
+ map: this.getShortcutsMap(),
1080
+ scope: this.shortcutsScope
1081
+ }), this.props.customAnchor({
1082
+ wrapperProps: {
1083
+ ref: this.nodeRef,
1084
+ 'data-test': joinDataTestAttributes('ring-select', dataTest)
1085
+ },
1086
+ buttonProps: _objectSpread2(_objectSpread2({}, ariaProps), {}, {
1087
+ id: this.props.id,
1088
+ onClick: this._clickHandler,
1089
+ disabled: this.props.disabled,
1090
+ children: this._getPlaceholder(),
1091
+ 'data-test': 'ring-select_focus'
1092
+ }),
1093
+ popup: this._renderPopup()
1094
+ }));
1095
+ }
1096
+ return /*#__PURE__*/React.createElement("span", {
1097
+ id: this.props.id,
1098
+ ref: this.nodeRef,
1099
+ "data-test": "ring-select"
1100
+ }, this._renderPopup());
1101
+ }
1102
+ }
1103
+ }, {
1104
+ key: "render",
1105
+ value: function render() {
1106
+ var _this5 = this;
1107
+ return /*#__PURE__*/React.createElement(ActiveItemContext.Provider, null, /*#__PURE__*/React.createElement(ActiveItemContext.ValueContext.Consumer, null, function (activeItemId) {
1108
+ return _this5.renderSelect(activeItemId);
1109
+ }));
1110
+ }
1111
+ }], [{
1112
+ key: "getDerivedStateFromProps",
1113
+ value: function getDerivedStateFromProps(nextProps, prevState) {
1114
+ var multiple = nextProps.multiple,
1115
+ data = nextProps.data,
1116
+ type = nextProps.type;
1117
+ var prevSelected = prevState.prevSelected,
1118
+ prevData = prevState.prevData,
1119
+ prevMultiple = prevState.prevMultiple,
1120
+ filterValue = prevState.filterValue;
1121
+ var nextState = {
1122
+ prevData: data,
1123
+ prevSelected: nextProps.selected,
1124
+ prevMultiple: multiple
1125
+ };
1126
+ if ('data' in nextProps && data !== prevData) {
1127
+ var _getListItems3 = _getListItems(nextProps, prevState, filterValue, data),
1128
+ filteredData = _getListItems3.filteredData,
1129
+ addButton = _getListItems3.addButton;
1130
+ Object.assign(nextState, {
1131
+ shownData: filteredData,
1132
+ addButton: addButton
1133
+ });
1134
+ if (prevState.selected) {
1135
+ Object.assign(nextState, {
1136
+ selectedIndex: getSelectedIndex(prevState.selected, data),
1137
+ filterValue: _getValueForFilter(prevState.selected, type, filterValue)
1138
+ });
1139
+ }
1140
+ }
1141
+ if ('selected' in nextProps && nextProps.selected !== prevSelected) {
1142
+ var _selected = nextProps.selected || (multiple ? [] : null);
1143
+ var selectedIndex = getSelectedIndex(_selected, data || prevData);
1144
+ Object.assign(nextState, {
1145
+ selected: _selected,
1146
+ filterValue: _getValueForFilter(_selected, type, filterValue)
1147
+ });
1148
+ if (!Array.isArray(prevSelected) || !Array.isArray(_selected) || !isSameSelected(prevSelected, _selected)) {
1149
+ Object.assign(nextState, {
1150
+ selectedIndex: selectedIndex
1151
+ });
1040
1152
  }
1041
- return /*#__PURE__*/React.createElement("span", {
1042
- id: this.props.id,
1043
- ref: this.nodeRef,
1044
- "data-test": "ring-select"
1045
- }, this._renderPopup());
1153
+ }
1154
+ if (prevMultiple !== multiple && !deepEqual(prevMultiple, multiple)) {
1155
+ nextState.selected = multiple ? [] : null;
1156
+ }
1157
+ if (multiple && !nextState.selected) {
1158
+ nextState.selected = prevState.selected;
1159
+ }
1160
+ var _prevState$nextState = _objectSpread2(_objectSpread2({}, prevState), nextState),
1161
+ selected = _prevState$nextState.selected;
1162
+ if (selected && Array.isArray(selected)) {
1163
+ nextState.multipleMap = buildMultipleMap(selected);
1164
+ var _getListItems4 = _getListItems(nextProps, nextState, filterValue, data),
1165
+ _filteredData = _getListItems4.filteredData,
1166
+ _addButton = _getListItems4.addButton;
1167
+ Object.assign(nextState, {
1168
+ shownData: _filteredData,
1169
+ addButton: _addButton
1170
+ });
1171
+ }
1172
+ return nextState;
1046
1173
  }
1047
- }
1048
- render() {
1049
- return /*#__PURE__*/React.createElement(ActiveItemContext.Provider, null, /*#__PURE__*/React.createElement(ActiveItemContext.ValueContext.Consumer, null, activeItemId => this.renderSelect(activeItemId)));
1050
- }
1051
- }
1174
+ }]);
1175
+ return Select;
1176
+ }(Component);
1052
1177
  _defineProperty(Select, "defaultProps", {
1053
1178
  data: [],
1054
1179
  filter: false,
1180
+ filterIcon: null,
1181
+ filterRef: noop,
1055
1182
  multiple: false,
1056
1183
  clear: false,
1057
1184
  loading: false,
1058
1185
  disabled: false,
1059
- loadingMessage: 'Loading...',
1060
- notFoundMessage: 'No options found',
1061
1186
  type: Type.BUTTON,
1062
1187
  size: Size.M,
1063
1188
  targetElement: null,
1064
1189
  hideSelected: false,
1065
1190
  allowAny: false,
1066
1191
  hideArrow: false,
1192
+ showPopup: false,
1067
1193
  maxHeight: 600,
1068
1194
  directions: [Popup.PopupProps.Directions.BOTTOM_RIGHT, Popup.PopupProps.Directions.BOTTOM_LEFT, Popup.PopupProps.Directions.TOP_LEFT, Popup.PopupProps.Directions.TOP_RIGHT],
1069
1195
  selected: null,
@@ -1082,6 +1208,7 @@ _defineProperty(Select, "defaultProps", {
1082
1208
  onKeyDown: noop,
1083
1209
  onSelect: noop,
1084
1210
  onDeselect: noop,
1211
+ onOutsideClick: noop,
1085
1212
  onChange: noop,
1086
1213
  onAdd: noop,
1087
1214
  onDone: noop,
@@ -1100,6 +1227,8 @@ Select.propTypes = {
1100
1227
  multiple: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
1101
1228
  allowAny: PropTypes.bool,
1102
1229
  filter: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),
1230
+ filterIcon: PropTypes.oneOfType([PropTypes.string, PropTypes.elementType]),
1231
+ filterRef: PropTypes.oneOfType([PropTypes.func, refObject(PropTypes.instanceOf(HTMLInputElement))]),
1103
1232
  getInitial: PropTypes.func,
1104
1233
  onClose: PropTypes.func,
1105
1234
  onOpen: PropTypes.func,
@@ -1112,6 +1241,7 @@ Select.propTypes = {
1112
1241
  onBeforeOpen: PropTypes.func,
1113
1242
  onSelect: PropTypes.func,
1114
1243
  onDeselect: PropTypes.func,
1244
+ onOutsideClick: PropTypes.func,
1115
1245
  onFocus: PropTypes.func,
1116
1246
  onBlur: PropTypes.func,
1117
1247
  onKeyDown: PropTypes.func,
@@ -1142,6 +1272,8 @@ Select.propTypes = {
1142
1272
  inputPlaceholder: PropTypes.string,
1143
1273
  clear: PropTypes.bool,
1144
1274
  hideArrow: PropTypes.bool,
1275
+ showPopup: PropTypes.bool,
1276
+ tryKeepOpen: PropTypes.bool,
1145
1277
  compact: PropTypes.bool,
1146
1278
  size: PropTypes.oneOf(Object.values(Size)),
1147
1279
  customAnchor: PropTypes.func,
@@ -1150,6 +1282,6 @@ Select.propTypes = {
1150
1282
  dir: PropTypes.oneOf(['ltr', 'rtl']),
1151
1283
  'data-test': PropTypes.string
1152
1284
  };
1153
- const RerenderableSelect = rerenderHOC(Select);
1285
+ var RerenderableSelect = rerenderHOC(Select);
1154
1286
 
1155
- export { RerenderableSelect, Select as default };
1287
+ export { RerenderableSelect, Type, Select as default };