@jetbrains/ring-ui 4.1.4 → 5.0.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1170) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/babel.config.js +1 -0
  3. package/components/alert/alert.d.ts +110 -0
  4. package/components/alert/alert.jsx +185 -0
  5. package/components/alert/container.css +1 -2
  6. package/components/alert/container.d.ts +15 -0
  7. package/components/alert/container.jsx +30 -0
  8. package/components/alert-service/alert-service.d.ts +34 -0
  9. package/components/alert-service/alert-service.jsx +107 -0
  10. package/components/analytics/analytics.d.ts +24 -0
  11. package/components/analytics/analytics.js +75 -89
  12. package/components/analytics/analytics__custom-plugin.d.ts +39 -0
  13. package/components/analytics/analytics__custom-plugin.js +90 -111
  14. package/components/analytics/analytics__fus-plugin.d.ts +62 -0
  15. package/components/analytics/analytics__fus-plugin.js +62 -75
  16. package/components/analytics/analytics__ga-plugin.d.ts +17 -0
  17. package/components/analytics/analytics__ga-plugin.js +40 -43
  18. package/components/analytics/analytics__plugin-utils.d.ts +15 -0
  19. package/components/analytics/analytics__plugin-utils.js +61 -68
  20. package/components/analytics-ng/analytics-ng.examples.js +2 -2
  21. package/components/auth/auth.d.ts +3 -0
  22. package/components/auth/auth.js +3 -6
  23. package/components/auth/auth__core.d.ts +233 -0
  24. package/components/auth/auth__core.js +754 -853
  25. package/components/auth/background-flow.d.ts +31 -0
  26. package/components/auth/background-flow.js +91 -108
  27. package/components/auth/down-notification.d.ts +15 -0
  28. package/components/auth/down-notification.jsx +52 -0
  29. package/components/auth/iframe-flow.d.ts +20 -0
  30. package/components/auth/iframe-flow.jsx +81 -0
  31. package/components/auth/landing-entry.d.ts +3 -0
  32. package/components/auth/landing-entry.js +0 -1
  33. package/components/auth/landing.d.ts +2 -0
  34. package/components/auth/landing.html +1 -1
  35. package/components/auth/landing.js +19 -23
  36. package/components/auth/request-builder.d.ts +47 -0
  37. package/components/auth/request-builder.js +61 -68
  38. package/components/auth/response-parser.d.ts +70 -0
  39. package/components/auth/response-parser.js +84 -94
  40. package/components/auth/storage.d.ts +112 -0
  41. package/components/auth/storage.js +199 -214
  42. package/components/auth/token-validator.d.ts +93 -0
  43. package/components/auth/token-validator.js +160 -172
  44. package/components/auth/window-flow.d.ts +26 -0
  45. package/components/auth/window-flow.js +91 -112
  46. package/components/auth-dialog/auth-dialog.d.ts +49 -0
  47. package/components/auth-dialog/auth-dialog.jsx +60 -0
  48. package/components/auth-dialog-service/auth-dialog-service.d.ts +5 -0
  49. package/components/auth-dialog-service/{auth-dialog-service.js → auth-dialog-service.jsx} +9 -15
  50. package/components/auth-ng/auth-ng.examples.js +1 -1
  51. package/components/autofocus-ng/autofocus-ng.examples.js +3 -3
  52. package/components/avatar/avatar-example-datauri.d.ts +1 -0
  53. package/components/avatar/{avatar-example-datauri.js → avatar-example-datauri.jsx} +0 -1
  54. package/components/avatar/avatar.d.ts +51 -0
  55. package/components/avatar/avatar.jsx +98 -0
  56. package/components/avatar/fallback-avatar.d.ts +17 -0
  57. package/components/avatar/fallback-avatar.jsx +112 -0
  58. package/components/avatar-editor-ng/avatar-editor-ng.examples.js +1 -1
  59. package/components/avatar-ng/avatar-ng.examples.js +3 -3
  60. package/components/badge/badge.d.ts +24 -0
  61. package/components/badge/badge.jsx +35 -0
  62. package/components/badge-ng/badge-ng.examples.js +2 -2
  63. package/components/breadcrumb-ng/breadcrumb-ng.examples.js +1 -1
  64. package/components/button/button.d.ts +255 -0
  65. package/components/button/button.jsx +73 -0
  66. package/components/button/button__classes.d.ts +2 -0
  67. package/components/button/button__classes.js +17 -36
  68. package/components/button-group/button-group.d.ts +14 -0
  69. package/components/button-group/button-group.jsx +20 -0
  70. package/components/button-group/caption.d.ts +8 -0
  71. package/components/button-group/caption.jsx +14 -0
  72. package/components/button-group-ng/button-group-ng.examples.js +2 -2
  73. package/components/button-ng/button-ng.examples.js +5 -5
  74. package/components/button-set/button-set.d.ts +12 -0
  75. package/components/button-set/button-set.jsx +19 -0
  76. package/components/button-set-ng/button-set-ng.examples.js +2 -2
  77. package/components/button-toolbar/button-toolbar.d.ts +12 -0
  78. package/components/button-toolbar/button-toolbar.jsx +18 -0
  79. package/components/button-toolbar-ng/button-toolbar-ng.examples.js +3 -3
  80. package/components/caret/caret.d.ts +66 -0
  81. package/components/caret/caret.js +200 -209
  82. package/components/checkbox/checkbox.d.ts +41 -0
  83. package/components/checkbox/checkbox.jsx +66 -0
  84. package/components/checkbox-ng/checkbox-ng.examples.js +2 -2
  85. package/components/code/code.d.ts +43 -0
  86. package/components/code/code.jsx +94 -0
  87. package/components/compiler-ng/compiler-ng.examples.js +1 -1
  88. package/components/confirm/confirm.d.ts +48 -0
  89. package/components/confirm/confirm.jsx +59 -0
  90. package/components/confirm-ng/confirm-ng.examples.js +2 -2
  91. package/components/confirm-service/confirm-service.d.ts +15 -0
  92. package/components/confirm-service/confirm-service.jsx +49 -0
  93. package/components/content-layout/content-layout.d.ts +26 -0
  94. package/components/content-layout/content-layout.jsx +45 -0
  95. package/components/content-layout/sidebar.d.ts +31 -0
  96. package/components/content-layout/sidebar.jsx +76 -0
  97. package/components/contenteditable/contenteditable.d.ts +47 -0
  98. package/components/contenteditable/contenteditable.jsx +47 -0
  99. package/components/data-list/data-list.d.ts +89 -0
  100. package/components/data-list/data-list.jsx +119 -0
  101. package/components/data-list/data-list.mock.d.ts +16 -0
  102. package/components/data-list/data-list.mock.jsx +207 -0
  103. package/components/data-list/item.d.ts +50 -0
  104. package/components/data-list/item.jsx +114 -0
  105. package/components/data-list/selection.d.ts +16 -0
  106. package/components/data-list/selection.js +75 -90
  107. package/components/data-list/title.d.ts +26 -0
  108. package/components/data-list/title.jsx +65 -0
  109. package/components/data-list-ng/data-list-ng.examples.js +3 -3
  110. package/components/date-picker/consts.d.ts +99 -0
  111. package/components/date-picker/consts.js +26 -53
  112. package/components/date-picker/date-input.d.ts +57 -0
  113. package/components/date-picker/date-input.jsx +97 -0
  114. package/components/date-picker/date-picker.css +5 -5
  115. package/components/date-picker/date-picker.d.ts +70 -0
  116. package/components/date-picker/date-picker.jsx +205 -0
  117. package/components/date-picker/date-popup.d.ts +56 -0
  118. package/components/date-picker/date-popup.jsx +344 -0
  119. package/components/date-picker/day.d.ts +30 -0
  120. package/components/date-picker/day.jsx +88 -0
  121. package/components/date-picker/formats.d.ts +2 -0
  122. package/components/date-picker/month-names.d.ts +13 -0
  123. package/components/date-picker/month-names.jsx +62 -0
  124. package/components/date-picker/month-slider.d.ts +29 -0
  125. package/components/date-picker/month-slider.jsx +56 -0
  126. package/components/date-picker/month.d.ts +14 -0
  127. package/components/date-picker/month.jsx +33 -0
  128. package/components/date-picker/months.d.ts +11 -0
  129. package/components/date-picker/months.jsx +86 -0
  130. package/components/date-picker/weekdays.d.ts +13 -0
  131. package/components/date-picker/weekdays.jsx +24 -0
  132. package/components/date-picker/years.d.ts +21 -0
  133. package/components/date-picker/years.jsx +75 -0
  134. package/components/dialog/dialog.d.ts +73 -0
  135. package/components/dialog/dialog.jsx +125 -0
  136. package/components/dialog/dialog__body-scroll-preventer.d.ts +9 -0
  137. package/components/dialog/dialog__body-scroll-preventer.js +35 -51
  138. package/components/dialog-ng/dialog-ng.examples.js +5 -5
  139. package/components/docked-panel-ng/docked-panel-ng.examples.js +3 -3
  140. package/components/dropdown/anchor.d.ts +90 -0
  141. package/components/dropdown/anchor.jsx +16 -0
  142. package/components/dropdown/dropdown.d.ts +77 -0
  143. package/components/dropdown/dropdown.jsx +148 -0
  144. package/components/dropdown-menu/dropdown-menu.d.ts +26 -0
  145. package/components/dropdown-menu/dropdown-menu.jsx +56 -0
  146. package/components/error-bubble/error-bubble.d.ts +18 -0
  147. package/components/error-bubble/error-bubble.jsx +28 -0
  148. package/components/error-message/error-message.d.ts +25 -0
  149. package/components/error-message/error-message.jsx +35 -0
  150. package/components/error-message-ng/error-message-ng.examples.js +1 -1
  151. package/components/error-page-ng/error-page-ng.examples.js +2 -2
  152. package/components/footer/footer.d.ts +28 -0
  153. package/components/footer/footer.jsx +96 -0
  154. package/components/footer-ng/footer-ng.examples.js +2 -2
  155. package/components/form/form.examples.js +4 -4
  156. package/components/form-ng/form-ng.examples.js +6 -6
  157. package/components/global/compose.d.ts +7 -0
  158. package/components/global/compose.js +3 -3
  159. package/components/global/composeRefs.d.ts +3 -0
  160. package/components/global/composeRefs.js +7 -6
  161. package/components/global/conic-gradient.d.ts +796 -0
  162. package/components/global/conic-gradient.js +14 -24
  163. package/components/global/create-stateful-context.d.ts +27 -0
  164. package/components/global/create-stateful-context.jsx +38 -0
  165. package/components/global/data-tests.d.ts +3 -0
  166. package/components/global/data-tests.js +12 -12
  167. package/components/global/dom.d.ts +37 -0
  168. package/components/global/dom.js +51 -73
  169. package/components/global/focus-sensor-hoc.d.ts +18 -0
  170. package/components/global/focus-sensor-hoc.jsx +101 -0
  171. package/components/global/fuzzy-highlight.d.ts +5 -0
  172. package/components/global/fuzzy-highlight.js +38 -40
  173. package/components/global/get-event-key.d.ts +2 -0
  174. package/components/global/get-event-key.js +88 -100
  175. package/components/global/get-uid.d.ts +1 -0
  176. package/components/global/get-uid.js +8 -12
  177. package/components/global/inject-styles.d.ts +3 -0
  178. package/components/global/inject-styles.js +7 -9
  179. package/components/global/linear-function.d.ts +6 -0
  180. package/components/global/linear-function.js +9 -12
  181. package/components/global/listeners.d.ts +8 -0
  182. package/components/global/listeners.js +22 -33
  183. package/components/global/memoize.d.ts +1 -0
  184. package/components/global/memoize.js +13 -12
  185. package/components/global/normalize-indent.d.ts +1 -0
  186. package/components/global/normalize-indent.js +26 -30
  187. package/components/global/promise-with-timeout.d.ts +4 -0
  188. package/components/global/promise-with-timeout.js +5 -7
  189. package/components/global/prop-types.d.ts +4 -0
  190. package/components/global/prop-types.js +4 -0
  191. package/components/global/radial-gradient-mask.d.ts +9 -0
  192. package/components/global/radial-gradient-mask.js +20 -24
  193. package/components/global/react-dom-renderer.d.ts +16 -0
  194. package/components/global/react-dom-renderer.jsx +25 -0
  195. package/components/global/rerender-hoc.d.ts +45 -0
  196. package/components/global/rerender-hoc.js +18 -27
  197. package/components/global/schedule-raf.d.ts +1 -0
  198. package/components/global/schedule-raf.js +24 -24
  199. package/components/global/sniffer.d.ts +3 -0
  200. package/components/global/sniffer.js +0 -2
  201. package/components/global/supports-css.d.ts +2 -0
  202. package/components/global/supports-css.js +12 -15
  203. package/components/global/theme.d.ts +26 -0
  204. package/components/global/theme.jsx +39 -0
  205. package/components/global/trivial-template-tag.d.ts +1 -0
  206. package/components/global/trivial-template-tag.js +6 -8
  207. package/components/global/typescript-utils.d.ts +2 -0
  208. package/components/global/typescript-utils.js +2 -0
  209. package/components/global/url.d.ts +57 -0
  210. package/components/global/url.js +58 -84
  211. package/components/global/variables.d.ts +88 -0
  212. package/components/global/variables.js +1 -0
  213. package/components/global/variables_dark.d.ts +3 -0
  214. package/components/global/variables_dark.js +52 -54
  215. package/components/grid/col.d.ts +31 -0
  216. package/components/grid/col.jsx +49 -0
  217. package/components/grid/grid.d.ts +14 -0
  218. package/components/grid/grid.jsx +22 -0
  219. package/components/grid/row.d.ts +40 -0
  220. package/components/grid/row.jsx +51 -0
  221. package/components/group/group.d.ts +12 -0
  222. package/components/group/group.jsx +20 -0
  223. package/components/group-ng/group.examples.js +2 -2
  224. package/components/header/header.css +2 -2
  225. package/components/header/header.d.ts +96 -0
  226. package/components/header/header.jsx +40 -0
  227. package/components/header/logo.d.ts +14 -0
  228. package/components/header/logo.jsx +22 -0
  229. package/components/header/profile.d.ts +73 -0
  230. package/components/header/profile.jsx +115 -0
  231. package/components/header/services-link.d.ts +25 -0
  232. package/components/header/services-link.jsx +28 -0
  233. package/components/header/services.d.ts +28 -0
  234. package/components/header/services.jsx +56 -0
  235. package/components/header/smart-profile.d.ts +36 -0
  236. package/components/header/smart-profile.jsx +86 -0
  237. package/components/header/smart-services.d.ts +25 -0
  238. package/components/header/smart-services.jsx +49 -0
  239. package/components/header/tray-icon.d.ts +33 -0
  240. package/components/header/tray-icon.jsx +20 -0
  241. package/components/header/tray.d.ts +9 -0
  242. package/components/header/tray.jsx +18 -0
  243. package/components/heading/heading.d.ts +25 -0
  244. package/components/heading/heading.jsx +52 -0
  245. package/components/http/http.d.ts +49 -0
  246. package/components/http/http.js +144 -174
  247. package/components/http/http.mock.d.ts +20 -0
  248. package/components/http/http.mock.js +46 -56
  249. package/components/hub-source/hub-source.d.ts +42 -0
  250. package/components/hub-source/hub-source.js +89 -105
  251. package/components/hub-source/hub-source__user.d.ts +4 -0
  252. package/components/hub-source/hub-source__user.js +14 -21
  253. package/components/hub-source/hub-source__users-groups.d.ts +24 -0
  254. package/components/hub-source/hub-source__users-groups.js +46 -53
  255. package/components/icon/icon.d.ts +43 -0
  256. package/components/icon/icon.jsx +69 -0
  257. package/components/icon/icon__constants.d.ts +30 -0
  258. package/components/icon/icon__constants.js +25 -24
  259. package/components/icon/icon__svg.d.ts +15 -0
  260. package/components/icon/icon__svg.jsx +58 -0
  261. package/components/icon/index.d.ts +2 -0
  262. package/components/icon/index.js +1 -1
  263. package/components/icon-ng/icon-ng.examples.js +1 -1
  264. package/components/input/input.css +1 -0
  265. package/components/input/input.d.ts +73 -0
  266. package/components/input/input.jsx +165 -0
  267. package/components/input-ng/input-ng.examples.js +1 -1
  268. package/components/input-size/input-size.examples.js +5 -5
  269. package/components/island/adaptive-island-hoc.d.ts +65 -0
  270. package/components/island/adaptive-island-hoc.jsx +28 -0
  271. package/components/island/content.d.ts +12 -0
  272. package/components/island/content.jsx +104 -0
  273. package/components/island/header.d.ts +8 -0
  274. package/components/island/header.jsx +75 -0
  275. package/components/island/island.d.ts +82 -0
  276. package/components/island/island.jsx +31 -0
  277. package/components/island-legacy/content-legacy.d.ts +10 -0
  278. package/components/island-legacy/content-legacy.jsx +17 -0
  279. package/components/island-legacy/header-legacy.d.ts +10 -0
  280. package/components/island-legacy/header-legacy.jsx +19 -0
  281. package/components/island-legacy/island-legacy.d.ts +12 -0
  282. package/components/island-legacy/island-legacy.jsx +19 -0
  283. package/components/island-ng/island-ng.examples.js +1 -1
  284. package/components/link/clickableLink.d.ts +20 -0
  285. package/components/link/clickableLink.jsx +33 -0
  286. package/components/link/link.d.ts +157 -0
  287. package/components/link/link.jsx +74 -0
  288. package/components/link-ng/link-ng.examples.js +1 -1
  289. package/components/list/consts.d.ts +74 -0
  290. package/components/list/consts.js +22 -22
  291. package/components/list/list.d.ts +191 -0
  292. package/components/list/list.jsx +579 -0
  293. package/components/list/list__custom.d.ts +6 -0
  294. package/components/list/list__custom.jsx +52 -0
  295. package/components/list/list__hint.d.ts +15 -0
  296. package/components/list/list__hint.jsx +16 -0
  297. package/components/list/list__item.d.ts +8 -0
  298. package/components/list/list__item.jsx +129 -0
  299. package/components/list/list__link.d.ts +9 -0
  300. package/components/list/list__link.jsx +43 -0
  301. package/components/list/list__separator.d.ts +5 -0
  302. package/components/list/list__separator.jsx +21 -0
  303. package/components/list/list__title.d.ts +5 -0
  304. package/components/list/list__title.jsx +28 -0
  305. package/components/list/list__users-groups-source.d.ts +27 -0
  306. package/components/list/list__users-groups-source.js +63 -78
  307. package/components/loader/loader.d.ts +28 -0
  308. package/components/loader/loader.jsx +44 -0
  309. package/components/loader/loader__core.d.ts +75 -0
  310. package/components/loader/loader__core.js +208 -240
  311. package/components/loader-inline/inject-styles.d.ts +2 -0
  312. package/components/loader-inline/inject-styles.js +10 -21
  313. package/components/loader-inline/loader-inline.d.ts +55 -0
  314. package/components/loader-inline/loader-inline.jsx +35 -0
  315. package/components/loader-inline-ng/loader-inline-ng.examples.js +1 -1
  316. package/components/loader-ng/loader-ng.examples.js +1 -1
  317. package/components/loader-screen/loader-screen.d.ts +17 -0
  318. package/components/loader-screen/loader-screen.jsx +25 -0
  319. package/components/loader-screen-ng/loader-screen-ng.examples.js +1 -1
  320. package/components/login-dialog/login-dialog.d.ts +47 -0
  321. package/components/login-dialog/login-dialog.jsx +84 -0
  322. package/components/login-dialog/service.d.ts +2 -0
  323. package/components/login-dialog/service.jsx +20 -0
  324. package/components/markdown/code.d.ts +16 -0
  325. package/components/markdown/code.jsx +10 -0
  326. package/components/markdown/heading.d.ts +15 -0
  327. package/components/markdown/{heading.js → heading.jsx} +3 -7
  328. package/components/markdown/link.d.ts +16 -0
  329. package/components/markdown/link.jsx +10 -0
  330. package/components/markdown/markdown.d.ts +23 -0
  331. package/components/markdown/markdown.jsx +41 -0
  332. package/components/message/message.d.ts +72 -0
  333. package/components/message/message.jsx +106 -0
  334. package/components/old-browsers-message/old-browsers-message.d.ts +2 -0
  335. package/components/old-browsers-message/old-browsers-message.js +57 -73
  336. package/components/old-browsers-message/old-browsers-message__stop.d.ts +1 -0
  337. package/components/old-browsers-message/old-browsers-message__stop.js +1 -1
  338. package/components/old-browsers-message/white-list.d.ts +2 -0
  339. package/components/old-browsers-message/white-list.js +9 -16
  340. package/components/pager/pager.d.ts +102 -0
  341. package/components/pager/pager.jsx +236 -0
  342. package/components/pager-ng/pager-ng.examples.js +1 -1
  343. package/components/palette/palette.examples.js +1 -1
  344. package/components/panel/panel.d.ts +12 -0
  345. package/components/panel/panel.jsx +20 -0
  346. package/components/permissions/permissions.d.ts +111 -0
  347. package/components/permissions/permissions.js +144 -160
  348. package/components/permissions/permissions__cache.d.ts +93 -0
  349. package/components/permissions/permissions__cache.js +200 -231
  350. package/components/permissions-ng/permissions-ng.examples.js +2 -2
  351. package/components/place-under-ng/place-under-ng.examples.js +2 -2
  352. package/components/popup/popup.consts.d.ts +37 -0
  353. package/components/popup/popup.consts.js +36 -36
  354. package/components/popup/popup.d.ts +141 -0
  355. package/components/popup/popup.jsx +311 -0
  356. package/components/popup/popup.target.d.ts +6 -0
  357. package/components/popup/popup.target.jsx +15 -0
  358. package/components/popup/position.d.ts +30 -0
  359. package/components/popup/position.js +172 -225
  360. package/components/popup-menu/popup-menu.d.ts +59 -0
  361. package/components/popup-menu/popup-menu.jsx +41 -0
  362. package/components/progress-bar/progress-bar.d.ts +62 -0
  363. package/components/progress-bar/progress-bar.jsx +75 -0
  364. package/components/progress-bar-ng/progress-bar-ng.examples.js +1 -1
  365. package/components/promised-click-ng/promised-click-ng.examples.js +2 -2
  366. package/components/query-assist/query-assist.css +2 -2
  367. package/components/query-assist/query-assist.d.ts +332 -0
  368. package/components/query-assist/query-assist.jsx +799 -0
  369. package/components/query-assist/query-assist__suggestions.d.ts +29 -0
  370. package/components/query-assist/query-assist__suggestions.jsx +60 -0
  371. package/components/query-assist-ng/query-assist-ng.examples.js +2 -2
  372. package/components/radio/radio.d.ts +18 -0
  373. package/components/radio/radio.jsx +27 -0
  374. package/components/radio/radio__item.d.ts +28 -0
  375. package/components/radio/radio__item.jsx +41 -0
  376. package/components/radio-ng/radio-ng.examples.js +1 -1
  377. package/components/save-field-ng/save-field-ng.examples.js +2 -2
  378. package/components/select/select.css +2 -2
  379. package/components/select/select.d.ts +289 -0
  380. package/components/select/select.jsx +922 -0
  381. package/components/select/select__filter.d.ts +20 -0
  382. package/components/select/select__filter.jsx +47 -0
  383. package/components/select/select__popup.d.ts +123 -0
  384. package/components/select/select__popup.jsx +383 -0
  385. package/components/select-ng/select-ng.examples.js +3 -3
  386. package/components/shortcuts/core.d.ts +74 -0
  387. package/components/shortcuts/core.js +185 -226
  388. package/components/shortcuts/shortcut-title.d.ts +1 -0
  389. package/components/shortcuts/shortcut-title.js +43 -49
  390. package/components/shortcuts/shortcuts-hoc.d.ts +69 -0
  391. package/components/shortcuts/shortcuts-hoc.jsx +19 -0
  392. package/components/shortcuts/shortcuts.d.ts +28 -0
  393. package/components/shortcuts/shortcuts.js +39 -48
  394. package/components/shortcuts-hint-ng/shortcuts-hint-ng.examples.js +1 -1
  395. package/components/sidebar-ng/sidebar-ng.examples.js +3 -3
  396. package/components/storage/storage.d.ts +18 -0
  397. package/components/storage/storage.js +6 -9
  398. package/components/storage/storage__fallback.d.ts +79 -0
  399. package/components/storage/storage__fallback.js +160 -178
  400. package/components/storage/storage__local.d.ts +38 -0
  401. package/components/storage/storage__local.js +108 -104
  402. package/components/tab-trap/tab-trap.d.ts +43 -0
  403. package/components/tab-trap/tab-trap.jsx +125 -0
  404. package/components/table/cell.d.ts +13 -0
  405. package/components/table/cell.jsx +16 -0
  406. package/components/table/disable-hover-hoc.d.ts +68 -0
  407. package/components/table/disable-hover-hoc.jsx +32 -0
  408. package/components/table/header-cell.d.ts +43 -0
  409. package/components/table/header-cell.jsx +56 -0
  410. package/components/table/header.d.ts +60 -0
  411. package/components/table/header.jsx +111 -0
  412. package/components/table/multitable.d.ts +25 -0
  413. package/components/table/multitable.jsx +81 -0
  414. package/components/table/row-with-focus-sensor.d.ts +18 -0
  415. package/components/table/row-with-focus-sensor.jsx +25 -0
  416. package/components/table/row.d.ts +56 -0
  417. package/components/table/row.jsx +153 -0
  418. package/components/table/selection-adapter.d.ts +5 -0
  419. package/components/table/selection-adapter.js +8 -8
  420. package/components/table/selection-shortcuts-hoc.d.ts +17 -0
  421. package/components/table/selection-shortcuts-hoc.jsx +146 -0
  422. package/components/table/selection.d.ts +47 -0
  423. package/components/table/selection.js +148 -183
  424. package/components/table/smart-table.d.ts +60 -0
  425. package/components/table/smart-table.jsx +36 -0
  426. package/components/table/table.d.ts +160 -0
  427. package/components/table/table.jsx +229 -0
  428. package/components/table-legacy-ng/table-legacy-ng.examples.js +4 -4
  429. package/components/table-ng/table-ng.examples.js +4 -4
  430. package/components/tabs/collapsible-more.d.ts +29 -0
  431. package/components/tabs/collapsible-more.jsx +97 -0
  432. package/components/tabs/collapsible-tab.d.ts +16 -0
  433. package/components/tabs/collapsible-tab.jsx +34 -0
  434. package/components/tabs/collapsible-tabs.d.ts +43 -0
  435. package/components/tabs/collapsible-tabs.jsx +196 -0
  436. package/components/tabs/custom-item.d.ts +11 -0
  437. package/components/tabs/custom-item.jsx +5 -0
  438. package/components/tabs/dumb-tabs.d.ts +134 -0
  439. package/components/tabs/dumb-tabs.jsx +59 -0
  440. package/components/tabs/smart-tabs.d.ts +20 -0
  441. package/components/tabs/smart-tabs.jsx +19 -0
  442. package/components/tabs/tab-link.d.ts +18 -0
  443. package/components/tabs/{tab-link.js → tab-link.jsx} +12 -22
  444. package/components/tabs/tab.d.ts +25 -0
  445. package/components/tabs/tab.jsx +19 -0
  446. package/components/tabs/tabs.d.ts +7 -0
  447. package/components/tabs/tabs.js +4 -5
  448. package/components/tabs-ng/tabs-ng.examples.js +1 -1
  449. package/components/tag/tag.css +2 -2
  450. package/components/tag/tag.d.ts +63 -0
  451. package/components/tag/tag.jsx +129 -0
  452. package/components/tags-input/tags-input.d.ts +154 -0
  453. package/components/tags-input/tags-input.jsx +265 -0
  454. package/components/tags-input-ng/tags-input-ng.examples.js +1 -1
  455. package/components/tags-list/tags-list.d.ts +46 -0
  456. package/components/tags-list/tags-list.jsx +45 -0
  457. package/components/template-ng/template-ng.examples.js +1 -1
  458. package/components/text/text.d.ts +17 -0
  459. package/components/text/text.jsx +21 -0
  460. package/components/title-ng/title-ng.examples.js +1 -1
  461. package/components/toggle/toggle.d.ts +119 -0
  462. package/components/toggle/toggle.jsx +46 -0
  463. package/components/toggle-ng/toggle-ng.examples.js +1 -1
  464. package/components/tooltip/tooltip.d.ts +64 -0
  465. package/components/tooltip/tooltip.jsx +125 -0
  466. package/components/tooltip-ng/tooltip-ng.examples.js +2 -2
  467. package/components/user-agreement/service.d.ts +161 -0
  468. package/components/user-agreement/service.jsx +238 -0
  469. package/components/user-agreement/toolbox.eula.d.ts +2 -0
  470. package/components/user-agreement/user-agreement.d.ts +69 -0
  471. package/components/user-agreement/user-agreement.jsx +81 -0
  472. package/components/user-card/card.d.ts +52 -0
  473. package/components/user-card/card.jsx +62 -0
  474. package/components/user-card/smart-user-card-tooltip.d.ts +20 -0
  475. package/components/user-card/smart-user-card-tooltip.jsx +47 -0
  476. package/components/user-card/tooltip.d.ts +31 -0
  477. package/components/user-card/tooltip.jsx +37 -0
  478. package/components/user-card/user-card.d.ts +11 -0
  479. package/components/user-card/user-card.js +3 -5
  480. package/components/user-card-ng/user-card-ng.examples.js +4 -4
  481. package/dist/_helpers/anchor.js +3 -3
  482. package/dist/_helpers/badge.js +1 -1
  483. package/dist/_helpers/button-group.js +1 -1
  484. package/dist/_helpers/button-set.js +1 -1
  485. package/dist/_helpers/button-toolbar.js +1 -1
  486. package/dist/_helpers/button__classes.js +1 -1
  487. package/dist/_helpers/card.js +1 -1
  488. package/dist/_helpers/checkbox.js +1 -1
  489. package/dist/_helpers/date-picker.js +1 -1
  490. package/dist/_helpers/dialog__body-scroll-preventer.js +2 -2
  491. package/dist/_helpers/error-message.js +1 -1
  492. package/dist/_helpers/footer.js +3 -3
  493. package/dist/_helpers/grid.js +1 -1
  494. package/dist/_helpers/group.js +1 -1
  495. package/dist/_helpers/header.js +1 -1
  496. package/dist/_helpers/icon.js +1 -1
  497. package/dist/_helpers/inject-styles.js +2 -2
  498. package/dist/_helpers/input.js +1 -1
  499. package/dist/_helpers/island.js +1 -1
  500. package/dist/_helpers/link.js +1 -1
  501. package/dist/_helpers/list.js +1 -1
  502. package/dist/_helpers/loader-screen.js +1 -1
  503. package/dist/_helpers/panel.js +1 -1
  504. package/dist/_helpers/query-assist__suggestions.js +3 -3
  505. package/dist/_helpers/radio.js +1 -1
  506. package/dist/_helpers/select__filter.js +12 -10
  507. package/dist/_helpers/services-link.js +1 -1
  508. package/dist/_helpers/sidebar.js +7 -4
  509. package/dist/_helpers/table.js +1 -1
  510. package/dist/_helpers/tabs.js +1 -1
  511. package/dist/_helpers/title.js +14 -14
  512. package/dist/alert/alert.d.ts +110 -0
  513. package/dist/alert/alert.js +41 -37
  514. package/dist/alert/container.d.ts +15 -0
  515. package/dist/alert/container.js +6 -8
  516. package/dist/alert-service/alert-service.d.ts +34 -0
  517. package/dist/analytics/analytics.d.ts +24 -0
  518. package/dist/analytics/analytics.js +10 -15
  519. package/dist/analytics/analytics__custom-plugin.d.ts +39 -0
  520. package/dist/analytics/analytics__custom-plugin.js +30 -9
  521. package/dist/analytics/analytics__fus-plugin.d.ts +62 -0
  522. package/dist/analytics/analytics__fus-plugin.js +23 -6
  523. package/dist/analytics/analytics__ga-plugin.d.ts +17 -0
  524. package/dist/analytics/analytics__ga-plugin.js +12 -6
  525. package/dist/analytics/analytics__plugin-utils.d.ts +15 -0
  526. package/dist/analytics/analytics__plugin-utils.js +58 -59
  527. package/dist/analytics-ng/analytics-ng.js +1 -0
  528. package/dist/auth/auth.d.ts +3 -0
  529. package/dist/auth/auth__core.d.ts +233 -0
  530. package/dist/auth/auth__core.js +205 -116
  531. package/dist/auth/background-flow.d.ts +31 -0
  532. package/dist/auth/background-flow.js +9 -1
  533. package/dist/auth/down-notification.d.ts +15 -0
  534. package/dist/auth/down-notification.js +1 -1
  535. package/dist/auth/iframe-flow.d.ts +20 -0
  536. package/dist/auth/iframe-flow.js +19 -5
  537. package/dist/auth/landing-entry.d.ts +3 -0
  538. package/dist/auth/landing.d.ts +2 -0
  539. package/dist/auth/landing.js +13 -7
  540. package/dist/auth/request-builder.d.ts +47 -0
  541. package/dist/auth/request-builder.js +7 -1
  542. package/dist/auth/response-parser.d.ts +70 -0
  543. package/dist/auth/response-parser.js +25 -13
  544. package/dist/auth/storage.d.ts +112 -0
  545. package/dist/auth/storage.js +41 -10
  546. package/dist/auth/token-validator.d.ts +93 -0
  547. package/dist/auth/token-validator.js +32 -12
  548. package/dist/auth/window-flow.d.ts +26 -0
  549. package/dist/auth/window-flow.js +24 -11
  550. package/dist/auth-dialog/auth-dialog.d.ts +49 -0
  551. package/dist/auth-dialog/auth-dialog.js +5 -9
  552. package/dist/auth-dialog-service/auth-dialog-service.d.ts +5 -0
  553. package/dist/avatar/avatar-example-datauri.d.ts +1 -0
  554. package/dist/avatar/avatar.d.ts +51 -0
  555. package/dist/avatar/avatar.js +14 -11
  556. package/dist/avatar/fallback-avatar.d.ts +17 -0
  557. package/dist/badge/badge.d.ts +24 -0
  558. package/dist/breadcrumb-ng/breadcrumb-ng.js +1 -1
  559. package/dist/button/button.d.ts +255 -0
  560. package/dist/button/button.js +13 -12
  561. package/dist/button/button__classes.d.ts +2 -0
  562. package/dist/button-group/button-group.d.ts +14 -0
  563. package/dist/button-group/caption.d.ts +8 -0
  564. package/dist/button-ng/button-ng.js +1 -1
  565. package/dist/button-set/button-set.d.ts +12 -0
  566. package/dist/button-toolbar/button-toolbar.d.ts +12 -0
  567. package/dist/caret/caret.d.ts +66 -0
  568. package/dist/caret/caret.js +35 -19
  569. package/dist/checkbox/checkbox.d.ts +41 -0
  570. package/dist/checkbox/checkbox.js +6 -0
  571. package/dist/code/code.d.ts +43 -0
  572. package/dist/code/code.js +14 -10
  573. package/dist/confirm/confirm.d.ts +48 -0
  574. package/dist/confirm/confirm.js +5 -5
  575. package/dist/confirm-service/confirm-service.d.ts +15 -0
  576. package/dist/content-layout/content-layout.d.ts +26 -0
  577. package/dist/content-layout/content-layout.js +4 -2
  578. package/dist/content-layout/sidebar.d.ts +31 -0
  579. package/dist/contenteditable/contenteditable.d.ts +47 -0
  580. package/dist/contenteditable/contenteditable.js +6 -4
  581. package/dist/data-list/data-list.d.ts +89 -0
  582. package/dist/data-list/data-list.js +52 -23
  583. package/dist/data-list/data-list.mock.d.ts +16 -0
  584. package/dist/data-list/data-list.mock.js +2 -2
  585. package/dist/data-list/item.d.ts +50 -0
  586. package/dist/data-list/item.js +34 -28
  587. package/dist/data-list/selection.d.ts +16 -0
  588. package/dist/data-list/selection.js +13 -0
  589. package/dist/data-list/title.d.ts +26 -0
  590. package/dist/data-list/title.js +1 -0
  591. package/dist/data-list-ng/data-list-ng.js +4 -2
  592. package/dist/date-picker/consts.d.ts +99 -0
  593. package/dist/date-picker/consts.js +2 -21
  594. package/dist/date-picker/date-input.d.ts +57 -0
  595. package/dist/date-picker/date-input.js +7 -3
  596. package/dist/date-picker/date-picker.d.ts +70 -0
  597. package/dist/date-picker/date-picker.js +38 -38
  598. package/dist/date-picker/date-popup.d.ts +56 -0
  599. package/dist/date-picker/date-popup.js +43 -26
  600. package/dist/date-picker/day.d.ts +30 -0
  601. package/dist/date-picker/day.js +8 -4
  602. package/dist/date-picker/formats.d.ts +2 -0
  603. package/dist/date-picker/month-names.d.ts +13 -0
  604. package/dist/date-picker/month-names.js +6 -5
  605. package/dist/date-picker/month-slider.d.ts +29 -0
  606. package/dist/date-picker/month-slider.js +2 -2
  607. package/dist/date-picker/month.d.ts +14 -0
  608. package/dist/date-picker/months.d.ts +11 -0
  609. package/dist/date-picker/months.js +3 -3
  610. package/dist/date-picker/weekdays.d.ts +13 -0
  611. package/dist/date-picker/weekdays.js +1 -1
  612. package/dist/date-picker/years.d.ts +21 -0
  613. package/dist/date-picker/years.js +8 -6
  614. package/dist/dialog/dialog.d.ts +73 -0
  615. package/dist/dialog/dialog.js +4 -2
  616. package/dist/dialog/dialog__body-scroll-preventer.d.ts +9 -0
  617. package/dist/dialog-ng/dialog-ng.js +1 -1
  618. package/dist/docked-panel-ng/docked-panel-ng.js +1 -1
  619. package/dist/dropdown/anchor.d.ts +90 -0
  620. package/dist/dropdown/dropdown.d.ts +77 -0
  621. package/dist/dropdown/dropdown.js +13 -6
  622. package/dist/dropdown-menu/dropdown-menu.d.ts +26 -0
  623. package/dist/dropdown-menu/dropdown-menu.js +8 -5
  624. package/dist/error-bubble/error-bubble.d.ts +18 -0
  625. package/dist/error-bubble/error-bubble.js +4 -2
  626. package/dist/error-message/error-message.d.ts +25 -0
  627. package/dist/footer/footer.d.ts +28 -0
  628. package/dist/global/compose.d.ts +7 -0
  629. package/dist/global/compose.js +2 -2
  630. package/dist/global/composeRefs.d.ts +3 -0
  631. package/dist/global/conic-gradient.d.ts +796 -0
  632. package/dist/global/conic-gradient.js +1 -1
  633. package/dist/global/create-stateful-context.d.ts +27 -0
  634. package/dist/global/data-tests.d.ts +3 -0
  635. package/dist/global/data-tests.js +5 -1
  636. package/dist/global/dom.d.ts +37 -0
  637. package/dist/global/dom.js +4 -4
  638. package/dist/global/focus-sensor-hoc.d.ts +18 -0
  639. package/dist/global/focus-sensor-hoc.js +58 -20
  640. package/dist/global/fuzzy-highlight.d.ts +5 -0
  641. package/dist/global/get-event-key.d.ts +2 -0
  642. package/dist/global/get-event-key.js +0 -1
  643. package/dist/global/get-uid.d.ts +1 -0
  644. package/dist/global/inject-styles.d.ts +3 -0
  645. package/dist/global/linear-function.d.ts +6 -0
  646. package/dist/global/listeners.d.ts +8 -0
  647. package/dist/global/listeners.js +10 -2
  648. package/dist/global/memoize.d.ts +1 -0
  649. package/dist/global/memoize.js +7 -6
  650. package/dist/global/normalize-indent.d.ts +1 -0
  651. package/dist/global/normalize-indent.js +5 -1
  652. package/dist/global/promise-with-timeout.d.ts +4 -0
  653. package/dist/global/prop-types.d.ts +4 -0
  654. package/dist/global/prop-types.js +7 -0
  655. package/dist/global/radial-gradient-mask.d.ts +9 -0
  656. package/dist/global/react-dom-renderer.d.ts +16 -0
  657. package/dist/global/react-dom-renderer.js +2 -0
  658. package/dist/global/rerender-hoc.d.ts +45 -0
  659. package/dist/global/rerender-hoc.js +5 -14
  660. package/dist/global/schedule-raf.d.ts +1 -0
  661. package/dist/global/schedule-raf.js +3 -1
  662. package/dist/global/sniffer.d.ts +3 -0
  663. package/dist/global/supports-css.d.ts +2 -0
  664. package/dist/global/theme.d.ts +26 -0
  665. package/dist/global/theme.js +22 -14
  666. package/dist/global/trivial-template-tag.d.ts +1 -0
  667. package/dist/global/typescript-utils.d.ts +2 -0
  668. package/dist/global/typescript-utils.js +4 -0
  669. package/dist/global/url.d.ts +57 -0
  670. package/dist/global/url.js +1 -1
  671. package/dist/global/variables.d.ts +88 -0
  672. package/dist/global/variables.js +1 -0
  673. package/dist/global/variables_dark.d.ts +3 -0
  674. package/dist/global/variables_dark.js +2 -2
  675. package/dist/grid/col.d.ts +31 -0
  676. package/dist/grid/col.js +7 -1
  677. package/dist/grid/grid.d.ts +14 -0
  678. package/dist/grid/row.d.ts +40 -0
  679. package/dist/grid/row.js +1 -4
  680. package/dist/group/group.d.ts +12 -0
  681. package/dist/header/header.d.ts +96 -0
  682. package/dist/header/header.js +3 -4
  683. package/dist/header/logo.d.ts +14 -0
  684. package/dist/header/profile.d.ts +73 -0
  685. package/dist/header/profile.js +4 -4
  686. package/dist/header/services-link.d.ts +25 -0
  687. package/dist/header/services.d.ts +28 -0
  688. package/dist/header/services.js +1 -0
  689. package/dist/header/smart-profile.d.ts +36 -0
  690. package/dist/header/smart-profile.js +1 -0
  691. package/dist/header/smart-services.d.ts +25 -0
  692. package/dist/header/smart-services.js +12 -3
  693. package/dist/header/tray-icon.d.ts +33 -0
  694. package/dist/header/tray-icon.js +3 -6
  695. package/dist/header/tray.d.ts +9 -0
  696. package/dist/heading/heading.d.ts +25 -0
  697. package/dist/heading/heading.js +15 -14
  698. package/dist/http/http.d.ts +49 -0
  699. package/dist/http/http.js +47 -12
  700. package/dist/http/http.mock.d.ts +20 -0
  701. package/dist/http/http.mock.js +12 -5
  702. package/dist/hub-source/hub-source.d.ts +42 -0
  703. package/dist/hub-source/hub-source.js +14 -1
  704. package/dist/hub-source/hub-source__user.d.ts +4 -0
  705. package/dist/hub-source/hub-source__user.js +4 -2
  706. package/dist/hub-source/hub-source__users-groups.d.ts +24 -0
  707. package/dist/hub-source/hub-source__users-groups.js +9 -1
  708. package/dist/icon/icon.d.ts +43 -0
  709. package/dist/icon/icon.js +2 -2
  710. package/dist/icon/icon__constants.d.ts +30 -0
  711. package/dist/icon/icon__constants.js +28 -23
  712. package/dist/icon/icon__svg.d.ts +15 -0
  713. package/dist/icon/index.d.ts +2 -0
  714. package/dist/icon/index.js +1 -1
  715. package/dist/input/input.d.ts +73 -0
  716. package/dist/input/input.js +75 -60
  717. package/dist/island/adaptive-island-hoc.d.ts +65 -0
  718. package/dist/island/adaptive-island-hoc.js +2 -2
  719. package/dist/island/content.d.ts +12 -0
  720. package/dist/island/content.js +11 -2
  721. package/dist/island/header.d.ts +8 -0
  722. package/dist/island/header.js +11 -6
  723. package/dist/island/island.d.ts +82 -0
  724. package/dist/island-legacy/content-legacy.d.ts +10 -0
  725. package/dist/island-legacy/header-legacy.d.ts +10 -0
  726. package/dist/island-legacy/island-legacy.d.ts +12 -0
  727. package/dist/link/clickableLink.d.ts +20 -0
  728. package/dist/link/link.d.ts +157 -0
  729. package/dist/link/link.js +9 -5
  730. package/dist/list/consts.d.ts +74 -0
  731. package/dist/list/consts.js +26 -20
  732. package/dist/list/list.d.ts +191 -0
  733. package/dist/list/list.js +32 -26
  734. package/dist/list/list__custom.d.ts +6 -0
  735. package/dist/list/list__custom.js +8 -13
  736. package/dist/list/list__hint.d.ts +15 -0
  737. package/dist/list/list__item.d.ts +8 -0
  738. package/dist/list/list__item.js +4 -5
  739. package/dist/list/list__link.d.ts +9 -0
  740. package/dist/list/list__link.js +5 -6
  741. package/dist/list/list__separator.d.ts +5 -0
  742. package/dist/list/list__separator.js +2 -4
  743. package/dist/list/list__title.d.ts +5 -0
  744. package/dist/list/list__title.js +2 -4
  745. package/dist/list/list__users-groups-source.d.ts +27 -0
  746. package/dist/list/list__users-groups-source.js +22 -12
  747. package/dist/loader/loader.d.ts +28 -0
  748. package/dist/loader/loader.js +5 -1
  749. package/dist/loader/loader__core.d.ts +75 -0
  750. package/dist/loader/loader__core.js +90 -48
  751. package/dist/loader-inline/inject-styles.d.ts +2 -0
  752. package/dist/loader-inline/loader-inline.d.ts +55 -0
  753. package/dist/loader-inline/loader-inline.js +2 -2
  754. package/dist/loader-screen/loader-screen.d.ts +17 -0
  755. package/dist/login-dialog/login-dialog.d.ts +47 -0
  756. package/dist/login-dialog/login-dialog.js +4 -2
  757. package/dist/login-dialog/service.d.ts +2 -0
  758. package/dist/login-dialog/service.js +5 -1
  759. package/dist/markdown/code.d.ts +16 -0
  760. package/dist/markdown/heading.d.ts +15 -0
  761. package/dist/markdown/link.d.ts +16 -0
  762. package/dist/markdown/link.js +2 -2
  763. package/dist/markdown/markdown.d.ts +23 -0
  764. package/dist/markdown/markdown.js +1 -1
  765. package/dist/message/message.d.ts +72 -0
  766. package/dist/message/message.js +10 -9
  767. package/dist/old-browsers-message/old-browsers-message.d.ts +2 -0
  768. package/dist/old-browsers-message/old-browsers-message.js +10 -6
  769. package/dist/old-browsers-message/old-browsers-message__stop.d.ts +1 -0
  770. package/dist/old-browsers-message/white-list.d.ts +2 -0
  771. package/dist/old-browsers-message/white-list.js +3 -3
  772. package/dist/pager/pager.d.ts +102 -0
  773. package/dist/pager/pager.js +21 -10
  774. package/dist/pager-ng/pager-ng.js +3 -0
  775. package/dist/panel/panel.d.ts +12 -0
  776. package/dist/permissions/permissions.d.ts +111 -0
  777. package/dist/permissions/permissions.js +23 -4
  778. package/dist/permissions/permissions__cache.d.ts +93 -0
  779. package/dist/permissions/permissions__cache.js +10 -3
  780. package/dist/popup/popup.consts.d.ts +37 -0
  781. package/dist/popup/popup.consts.js +43 -29
  782. package/dist/popup/popup.d.ts +141 -0
  783. package/dist/popup/popup.js +84 -54
  784. package/dist/popup/popup.target.d.ts +6 -0
  785. package/dist/popup/popup.target.js +3 -4
  786. package/dist/popup/position.d.ts +30 -0
  787. package/dist/popup/position.js +11 -6
  788. package/dist/popup-menu/popup-menu.d.ts +59 -0
  789. package/dist/popup-menu/popup-menu.js +7 -6
  790. package/dist/progress-bar/progress-bar.d.ts +62 -0
  791. package/dist/progress-bar/progress-bar.js +6 -2
  792. package/dist/query-assist/query-assist.d.ts +332 -0
  793. package/dist/query-assist/query-assist.js +134 -70
  794. package/dist/query-assist/query-assist__suggestions.d.ts +29 -0
  795. package/dist/radio/radio.d.ts +18 -0
  796. package/dist/radio/radio__item.d.ts +28 -0
  797. package/dist/radio/radio__item.js +5 -2
  798. package/dist/select/select.d.ts +289 -0
  799. package/dist/select/select.js +180 -176
  800. package/dist/select/select__filter.d.ts +20 -0
  801. package/dist/select/select__filter.js +2 -0
  802. package/dist/select/select__popup.d.ts +123 -0
  803. package/dist/select/select__popup.js +97 -72
  804. package/dist/select-ng/select-ng.js +3 -0
  805. package/dist/select-ng/select-ng__lazy.js +3 -0
  806. package/dist/shortcuts/core.d.ts +74 -0
  807. package/dist/shortcuts/core.js +16 -10
  808. package/dist/shortcuts/shortcut-title.d.ts +1 -0
  809. package/dist/shortcuts/shortcuts-hoc.d.ts +69 -0
  810. package/dist/shortcuts/shortcuts.d.ts +28 -0
  811. package/dist/storage/storage.d.ts +18 -0
  812. package/dist/storage/storage.js +1 -1
  813. package/dist/storage/storage__fallback.d.ts +79 -0
  814. package/dist/storage/storage__fallback.js +31 -19
  815. package/dist/storage/storage__local.d.ts +38 -0
  816. package/dist/storage/storage__local.js +34 -19
  817. package/dist/style.css +1 -1
  818. package/dist/tab-trap/tab-trap.d.ts +43 -0
  819. package/dist/tab-trap/tab-trap.js +17 -5
  820. package/dist/table/cell.d.ts +13 -0
  821. package/dist/table/disable-hover-hoc.d.ts +68 -0
  822. package/dist/table/disable-hover-hoc.js +1 -1
  823. package/dist/table/header-cell.d.ts +43 -0
  824. package/dist/table/header-cell.js +4 -0
  825. package/dist/table/header.d.ts +60 -0
  826. package/dist/table/header.js +9 -5
  827. package/dist/table/multitable.d.ts +25 -0
  828. package/dist/table/multitable.js +21 -7
  829. package/dist/table/row-with-focus-sensor.d.ts +18 -0
  830. package/dist/table/row-with-focus-sensor.js +7 -4
  831. package/dist/table/row.d.ts +56 -0
  832. package/dist/table/row.js +31 -29
  833. package/dist/table/selection-adapter.d.ts +5 -0
  834. package/dist/table/selection-shortcuts-hoc.d.ts +17 -0
  835. package/dist/table/selection-shortcuts-hoc.js +44 -19
  836. package/dist/table/selection.d.ts +47 -0
  837. package/dist/table/selection.js +18 -1
  838. package/dist/table/smart-table.d.ts +60 -0
  839. package/dist/table/smart-table.js +5 -3
  840. package/dist/table/table.d.ts +160 -0
  841. package/dist/table/table.js +58 -38
  842. package/dist/table-legacy-ng/table-legacy-ng.js +3 -0
  843. package/dist/table-legacy-ng/table-legacy-ng__pager.js +3 -0
  844. package/dist/table-ng/smart-table-ng.js +1 -0
  845. package/dist/table-ng/table-ng.js +3 -2
  846. package/dist/tabs/collapsible-more.d.ts +29 -0
  847. package/dist/tabs/collapsible-more.js +1 -0
  848. package/dist/tabs/collapsible-tab.d.ts +16 -0
  849. package/dist/tabs/collapsible-tab.js +6 -8
  850. package/dist/tabs/collapsible-tabs.d.ts +43 -0
  851. package/dist/tabs/collapsible-tabs.js +57 -106
  852. package/dist/tabs/custom-item.d.ts +11 -0
  853. package/dist/tabs/dumb-tabs.d.ts +134 -0
  854. package/dist/tabs/dumb-tabs.js +3 -2
  855. package/dist/tabs/smart-tabs.d.ts +20 -0
  856. package/dist/tabs/smart-tabs.js +3 -2
  857. package/dist/tabs/tab-link.d.ts +18 -0
  858. package/dist/tabs/tab.d.ts +25 -0
  859. package/dist/tabs/tabs.d.ts +7 -0
  860. package/dist/tabs/tabs.js +1 -0
  861. package/dist/tag/tag.d.ts +63 -0
  862. package/dist/tag/tag.js +8 -4
  863. package/dist/tags-input/tags-input.d.ts +154 -0
  864. package/dist/tags-input/tags-input.js +64 -31
  865. package/dist/tags-input-ng/tags-input-ng.js +3 -0
  866. package/dist/tags-list/tags-list.d.ts +46 -0
  867. package/dist/tags-list/tags-list.js +1 -7
  868. package/dist/text/text.d.ts +17 -0
  869. package/dist/text/text.js +1 -1
  870. package/dist/toggle/toggle.d.ts +119 -0
  871. package/dist/toggle/toggle.js +4 -6
  872. package/dist/toggle-ng/toggle-ng.js +2 -2
  873. package/dist/tooltip/tooltip.d.ts +64 -0
  874. package/dist/tooltip/tooltip.js +14 -5
  875. package/dist/user-agreement/service.d.ts +161 -0
  876. package/dist/user-agreement/service.js +20 -13
  877. package/dist/user-agreement/toolbox.eula.d.ts +2 -0
  878. package/dist/user-agreement/user-agreement.d.ts +69 -0
  879. package/dist/user-agreement/user-agreement.js +7 -8
  880. package/dist/user-card/card.d.ts +52 -0
  881. package/dist/user-card/smart-user-card-tooltip.d.ts +20 -0
  882. package/dist/user-card/smart-user-card-tooltip.js +3 -2
  883. package/dist/user-card/tooltip.d.ts +31 -0
  884. package/dist/user-card/tooltip.js +5 -1
  885. package/dist/user-card/user-card.d.ts +11 -0
  886. package/dist/user-card/user-card.js +1 -0
  887. package/dist/user-card-ng/user-card-ng.js +1 -0
  888. package/package.json +49 -23
  889. package/typings.d.ts +97 -0
  890. package/webpack.config.js +4 -1
  891. package/components/alert/alert.examples.js +0 -143
  892. package/components/alert/alert.js +0 -242
  893. package/components/alert/alert.test.js +0 -61
  894. package/components/alert/container.js +0 -47
  895. package/components/alert/container.test.js +0 -12
  896. package/components/alert-service/alert-service.examples.js +0 -91
  897. package/components/alert-service/alert-service.js +0 -137
  898. package/components/alert-service/alert-service.test.js +0 -88
  899. package/components/analytics/analytics.examples.js +0 -47
  900. package/components/analytics/analytics.test.js +0 -419
  901. package/components/auth/auth.examples.js +0 -122
  902. package/components/auth/auth.test.js +0 -774
  903. package/components/auth/down-notification.js +0 -72
  904. package/components/auth/iframe-flow.js +0 -99
  905. package/components/auth/request-builder.test.js +0 -64
  906. package/components/auth/response-parser.test.js +0 -89
  907. package/components/auth/storage.test.js +0 -178
  908. package/components/auth/token-validator.test.js +0 -199
  909. package/components/auth-dialog/auth-dialog.examples.js +0 -76
  910. package/components/auth-dialog/auth-dialog.js +0 -115
  911. package/components/auth-dialog/auth-dialog.test.js +0 -11
  912. package/components/auth-dialog-service/auth-dialog-service.examples.js +0 -66
  913. package/components/auth-dialog-service/auth-dialog-service.test.js +0 -75
  914. package/components/avatar/avatar.examples.js +0 -46
  915. package/components/avatar/avatar.js +0 -169
  916. package/components/avatar/avatar.test.js +0 -59
  917. package/components/avatar/fallback-avatar.js +0 -136
  918. package/components/badge/badge.examples.js +0 -26
  919. package/components/badge/badge.js +0 -59
  920. package/components/badge/badge.test.js +0 -34
  921. package/components/button/button.examples.js +0 -219
  922. package/components/button/button.js +0 -122
  923. package/components/button/button.test.js +0 -64
  924. package/components/button-group/button-group.examples.js +0 -58
  925. package/components/button-group/button-group.js +0 -30
  926. package/components/button-group/button-group.test.js +0 -10
  927. package/components/button-group/caption.js +0 -23
  928. package/components/button-set/button-set.examples.js +0 -24
  929. package/components/button-set/button-set.js +0 -27
  930. package/components/button-set/button-set.test.js +0 -10
  931. package/components/button-toolbar/button-toolbar.examples.js +0 -31
  932. package/components/button-toolbar/button-toolbar.js +0 -29
  933. package/components/button-toolbar/button-toolbar.test.js +0 -21
  934. package/components/caret/caret.examples.js +0 -39
  935. package/components/caret/caret.test.js +0 -137
  936. package/components/checkbox/checkbox.examples.js +0 -67
  937. package/components/checkbox/checkbox.js +0 -100
  938. package/components/checkbox/checkbox.test.js +0 -78
  939. package/components/code/code.examples.js +0 -92
  940. package/components/code/code.js +0 -118
  941. package/components/code/code.test.js +0 -100
  942. package/components/confirm/confirm.examples.js +0 -93
  943. package/components/confirm/confirm.js +0 -101
  944. package/components/confirm/confirm.test.js +0 -28
  945. package/components/confirm-service/confirm-service.examples.js +0 -61
  946. package/components/confirm-service/confirm-service.js +0 -65
  947. package/components/confirm-service/confirm-service.test.js +0 -59
  948. package/components/content-layout/content-layout.examples.js +0 -188
  949. package/components/content-layout/content-layout.js +0 -64
  950. package/components/content-layout/content-layout.test.js +0 -41
  951. package/components/content-layout/sidebar.js +0 -105
  952. package/components/contenteditable/contenteditable.examples.js +0 -45
  953. package/components/contenteditable/contenteditable.js +0 -66
  954. package/components/contenteditable/contenteditable.test.js +0 -73
  955. package/components/data-list/data-list.examples.js +0 -116
  956. package/components/data-list/data-list.js +0 -170
  957. package/components/data-list/data-list.mock.js +0 -248
  958. package/components/data-list/data-list.test.js +0 -40
  959. package/components/data-list/item.js +0 -214
  960. package/components/data-list/title.js +0 -96
  961. package/components/date-picker/date-input.js +0 -132
  962. package/components/date-picker/date-picker.examples.js +0 -345
  963. package/components/date-picker/date-picker.js +0 -285
  964. package/components/date-picker/date-picker.test.js +0 -89
  965. package/components/date-picker/date-popup.js +0 -441
  966. package/components/date-picker/day.js +0 -121
  967. package/components/date-picker/month-names.js +0 -104
  968. package/components/date-picker/month-slider.js +0 -83
  969. package/components/date-picker/month.js +0 -48
  970. package/components/date-picker/months.js +0 -113
  971. package/components/date-picker/weekdays.js +0 -40
  972. package/components/date-picker/years.js +0 -111
  973. package/components/dialog/dialog.examples.js +0 -209
  974. package/components/dialog/dialog.js +0 -183
  975. package/components/dialog/dialog.test.js +0 -62
  976. package/components/dropdown/anchor.js +0 -32
  977. package/components/dropdown/dropdown.examples.js +0 -151
  978. package/components/dropdown/dropdown.js +0 -185
  979. package/components/dropdown/dropdown.test.js +0 -175
  980. package/components/dropdown-menu/dropdown-menu.examples.js +0 -47
  981. package/components/dropdown-menu/dropdown-menu.js +0 -117
  982. package/components/dropdown-menu/dropdown-menu.test.js +0 -76
  983. package/components/error-bubble/error-bubble.examples.js +0 -96
  984. package/components/error-bubble/error-bubble.js +0 -50
  985. package/components/error-bubble/error-bubble.test.js +0 -41
  986. package/components/error-message/error-message.examples.js +0 -33
  987. package/components/error-message/error-message.js +0 -54
  988. package/components/error-message/error-message.test.js +0 -21
  989. package/components/footer/footer.examples.js +0 -56
  990. package/components/footer/footer.js +0 -138
  991. package/components/footer/footer.test.js +0 -78
  992. package/components/global/create-stateful-context.js +0 -46
  993. package/components/global/data-tests.test.js +0 -18
  994. package/components/global/dom.examples.js +0 -39
  995. package/components/global/dom.test.js +0 -99
  996. package/components/global/focus-sensor-hoc.js +0 -112
  997. package/components/global/fuzzy-highlight.test.js +0 -52
  998. package/components/global/get-uid.test.js +0 -21
  999. package/components/global/listeners.test.js +0 -78
  1000. package/components/global/react-dom-renderer.js +0 -34
  1001. package/components/global/theme.js +0 -51
  1002. package/components/global/url.test.js +0 -138
  1003. package/components/global/variables.examples.js +0 -160
  1004. package/components/grid/col.js +0 -58
  1005. package/components/grid/grid.examples.js +0 -291
  1006. package/components/grid/grid.js +0 -33
  1007. package/components/grid/grid.test.js +0 -72
  1008. package/components/grid/row.js +0 -60
  1009. package/components/group/group.examples.js +0 -27
  1010. package/components/group/group.js +0 -30
  1011. package/components/group/group.test.js +0 -21
  1012. package/components/header/header.examples.js +0 -118
  1013. package/components/header/header.js +0 -55
  1014. package/components/header/header.test.js +0 -21
  1015. package/components/header/logo.js +0 -31
  1016. package/components/header/profile.js +0 -181
  1017. package/components/header/services-link.js +0 -45
  1018. package/components/header/services.js +0 -115
  1019. package/components/header/smart-profile.js +0 -121
  1020. package/components/header/smart-services.js +0 -73
  1021. package/components/header/tray-icon.js +0 -33
  1022. package/components/header/tray.js +0 -30
  1023. package/components/heading/heading.examples.js +0 -64
  1024. package/components/heading/heading.js +0 -82
  1025. package/components/heading/heading.test.js +0 -29
  1026. package/components/http/http.examples.js +0 -34
  1027. package/components/http/http.test.js +0 -187
  1028. package/components/hub-source/hub-source.test.js +0 -200
  1029. package/components/hub-source/hub-source__users-groups.test.js +0 -91
  1030. package/components/icon/icon.examples.js +0 -146
  1031. package/components/icon/icon.js +0 -97
  1032. package/components/icon/icon.test.js +0 -51
  1033. package/components/icon/icon__svg.js +0 -77
  1034. package/components/input/input.examples.js +0 -140
  1035. package/components/input/input.js +0 -228
  1036. package/components/input/input.test.js +0 -40
  1037. package/components/island/adaptive-island-hoc.js +0 -38
  1038. package/components/island/content.js +0 -141
  1039. package/components/island/header.js +0 -102
  1040. package/components/island/island.examples.js +0 -74
  1041. package/components/island/island.js +0 -53
  1042. package/components/island/island.test.js +0 -59
  1043. package/components/island-legacy/content-legacy.js +0 -26
  1044. package/components/island-legacy/header-legacy.js +0 -28
  1045. package/components/island-legacy/island-legacy.examples.js +0 -33
  1046. package/components/island-legacy/island-legacy.js +0 -29
  1047. package/components/island-legacy/island-legacy.test.js +0 -21
  1048. package/components/link/clickableLink.js +0 -48
  1049. package/components/link/link.examples.js +0 -86
  1050. package/components/link/link.js +0 -119
  1051. package/components/link/link.test.js +0 -182
  1052. package/components/list/list.examples.js +0 -271
  1053. package/components/list/list.js +0 -765
  1054. package/components/list/list.test.js +0 -428
  1055. package/components/list/list__custom.js +0 -90
  1056. package/components/list/list__hint.js +0 -24
  1057. package/components/list/list__item.js +0 -233
  1058. package/components/list/list__item.test.js +0 -60
  1059. package/components/list/list__link.js +0 -72
  1060. package/components/list/list__separator.js +0 -30
  1061. package/components/list/list__title.js +0 -44
  1062. package/components/list/list__users-groups-source.test.js +0 -125
  1063. package/components/loader/loader.examples.js +0 -22
  1064. package/components/loader/loader.js +0 -64
  1065. package/components/loader/loader__core.test.js +0 -232
  1066. package/components/loader-inline/loader-inline.examples.js +0 -106
  1067. package/components/loader-inline/loader-inline.js +0 -57
  1068. package/components/loader-inline/loader-inline.test.js +0 -21
  1069. package/components/loader-screen/loader-screen.examples.js +0 -40
  1070. package/components/loader-screen/loader-screen.js +0 -38
  1071. package/components/login-dialog/login-dialog.js +0 -125
  1072. package/components/login-dialog/service.js +0 -24
  1073. package/components/markdown/code.js +0 -20
  1074. package/components/markdown/link.js +0 -14
  1075. package/components/markdown/markdown.examples.js +0 -110
  1076. package/components/markdown/markdown.js +0 -58
  1077. package/components/markdown/markdown.test.js +0 -60
  1078. package/components/message/message.examples.js +0 -78
  1079. package/components/message/message.js +0 -156
  1080. package/components/message/message.test.js +0 -26
  1081. package/components/old-browsers-message/old-browsers-message.examples.js +0 -37
  1082. package/components/pager/pager.examples.js +0 -291
  1083. package/components/pager/pager.js +0 -337
  1084. package/components/pager/pager.test.js +0 -56
  1085. package/components/panel/panel.examples.js +0 -33
  1086. package/components/panel/panel.js +0 -28
  1087. package/components/panel/panel.test.js +0 -20
  1088. package/components/permissions/permissions.test.js +0 -435
  1089. package/components/permissions/permissions__cache.test.js +0 -75
  1090. package/components/popup/popup.examples.js +0 -340
  1091. package/components/popup/popup.js +0 -395
  1092. package/components/popup/popup.target.js +0 -27
  1093. package/components/popup/popup.test.js +0 -242
  1094. package/components/popup/position.test.js +0 -192
  1095. package/components/popup-menu/popup-menu.examples.js +0 -38
  1096. package/components/popup-menu/popup-menu.js +0 -58
  1097. package/components/popup-menu/popup-menu.test.js +0 -29
  1098. package/components/progress-bar/progress-bar.examples.js +0 -56
  1099. package/components/progress-bar/progress-bar.js +0 -103
  1100. package/components/progress-bar/progress-bar.test.js +0 -114
  1101. package/components/query-assist/query-assist.examples.js +0 -305
  1102. package/components/query-assist/query-assist.js +0 -992
  1103. package/components/query-assist/query-assist.test.js +0 -690
  1104. package/components/query-assist/query-assist__suggestions.js +0 -100
  1105. package/components/radio/radio.examples.js +0 -58
  1106. package/components/radio/radio.js +0 -37
  1107. package/components/radio/radio.test.js +0 -90
  1108. package/components/radio/radio__item.js +0 -69
  1109. package/components/radio/radio__item.test.js +0 -98
  1110. package/components/select/select.examples.js +0 -1023
  1111. package/components/select/select.js +0 -1284
  1112. package/components/select/select.test.js +0 -1201
  1113. package/components/select/select__filter.js +0 -70
  1114. package/components/select/select__popup.js +0 -556
  1115. package/components/select/select__popup.test.js +0 -156
  1116. package/components/shortcuts/core.test.js +0 -282
  1117. package/components/shortcuts/shortcuts-hoc.js +0 -33
  1118. package/components/shortcuts/shortcuts-hoc.test.js +0 -53
  1119. package/components/shortcuts/shortcuts.test.js +0 -45
  1120. package/components/storage/storage.examples.js +0 -37
  1121. package/components/storage/storage.test.js +0 -248
  1122. package/components/tab-trap/tab-trap.examples.js +0 -49
  1123. package/components/tab-trap/tab-trap.js +0 -175
  1124. package/components/table/cell.js +0 -26
  1125. package/components/table/disable-hover-hoc.js +0 -44
  1126. package/components/table/header-cell.js +0 -77
  1127. package/components/table/header.js +0 -178
  1128. package/components/table/multitable.js +0 -99
  1129. package/components/table/row-with-focus-sensor.js +0 -39
  1130. package/components/table/row.js +0 -242
  1131. package/components/table/selection-shortcuts-hoc.js +0 -177
  1132. package/components/table/smart-table.js +0 -55
  1133. package/components/table/table.examples.js +0 -346
  1134. package/components/table/table.js +0 -315
  1135. package/components/tabs/collapsible-more.js +0 -183
  1136. package/components/tabs/collapsible-tab.js +0 -90
  1137. package/components/tabs/collapsible-tabs.js +0 -314
  1138. package/components/tabs/custom-item.js +0 -6
  1139. package/components/tabs/dumb-tabs.js +0 -107
  1140. package/components/tabs/smart-tabs.js +0 -32
  1141. package/components/tabs/tab.js +0 -25
  1142. package/components/tabs/tabs.examples.js +0 -275
  1143. package/components/tabs/tabs.test.js +0 -26
  1144. package/components/tag/tag.examples.js +0 -50
  1145. package/components/tag/tag.js +0 -182
  1146. package/components/tag/tag.test.js +0 -21
  1147. package/components/tags-input/tag-input.examples.js +0 -133
  1148. package/components/tags-input/tags-input.js +0 -347
  1149. package/components/tags-input/tags-input.test.js +0 -234
  1150. package/components/tags-list/tags-list.examples.js +0 -41
  1151. package/components/tags-list/tags-list.js +0 -93
  1152. package/components/tags-list/tags-list.test.js +0 -43
  1153. package/components/text/text.examples.js +0 -25
  1154. package/components/text/text.js +0 -29
  1155. package/components/text/text.test.js +0 -25
  1156. package/components/toggle/toggle.examples.js +0 -79
  1157. package/components/toggle/toggle.js +0 -77
  1158. package/components/toggle/toggle.test.js +0 -34
  1159. package/components/tooltip/tooltip.examples.js +0 -118
  1160. package/components/tooltip/tooltip.js +0 -168
  1161. package/components/tooltip/tooltip.test.js +0 -128
  1162. package/components/user-agreement/service.js +0 -292
  1163. package/components/user-agreement/user-agreement.examples.js +0 -112
  1164. package/components/user-agreement/user-agreement.js +0 -124
  1165. package/components/user-card/card.js +0 -98
  1166. package/components/user-card/smart-user-card-tooltip.js +0 -66
  1167. package/components/user-card/tooltip.js +0 -58
  1168. package/components/user-card/user-card.examples.js +0 -88
  1169. package/components/user-card/user-card.test.js +0 -102
  1170. package/components/welcome.examples.js +0 -25
@@ -1,1201 +0,0 @@
1
- /* eslint-disable no-magic-numbers*/
2
- import React from 'react';
3
- import {Simulate} from 'react-dom/test-utils';
4
- import {shallow, mount} from 'enzyme';
5
-
6
- import List from '../list/list';
7
- import Input from '../input/input';
8
- import simulateCombo from '../../test-helpers/simulate-combo';
9
-
10
- import Select from './select';
11
- import styles from './select.css';
12
-
13
- function simulateInput(target, value) {
14
- target.value = value;
15
-
16
- Simulate.change(target, {target});
17
- }
18
-
19
- const selectedIconSelector = `.${styles.selectedIcon.split(/\s/)[0]}`;
20
-
21
- describe('Select', () => {
22
- const testData = [
23
- {key: 1, label: 'first1', type: List.ListProps.Type.ITEM},
24
- {key: 2, label: 'test2', type: List.ListProps.Type.ITEM},
25
- {key: 3, label: 'test3', type: List.ListProps.Type.ITEM},
26
- {key: 4, label: 'four4', selectedLabel: '', type: List.ListProps.Type.ITEM}
27
- ];
28
-
29
- const defaultProps = () => ({
30
- data: testData,
31
- selected: testData[0],
32
- onChange: sandbox.spy(),
33
- onFilter: sandbox.spy(),
34
- onFocus: sandbox.spy(),
35
- onBlur: sandbox.spy(),
36
- filter: true
37
- });
38
-
39
- let mountWrapper;
40
- const shallowSelect = props => shallow(<Select {...defaultProps()} {...props}/>);
41
- const mountSelect = props => {
42
- mountWrapper = mount(<Select {...defaultProps()} {...props}/>);
43
- return mountWrapper;
44
- };
45
-
46
- afterEach(() => {
47
- if (mountWrapper) {
48
- mountWrapper.unmount();
49
- mountWrapper = null;
50
- }
51
- });
52
-
53
- it('Should initialize', () => {
54
- shallowSelect().should.exist;
55
- });
56
-
57
- it('Should save selected item in state', () => {
58
- const wrapper = mountSelect();
59
- wrapper.should.have.state('selected', wrapper.prop('selected'));
60
- });
61
-
62
- it('Should provide select types', () => {
63
- Select.Type.should.exist;
64
- Select.Type.BUTTON.should.exist;
65
- Select.Type.INPUT.should.exist;
66
- Select.Type.CUSTOM.should.exist;
67
- Select.Type.MATERIAL.should.exist;
68
- Select.Type.INLINE.should.exist;
69
- });
70
-
71
- it('Should take provided className', () => {
72
- const wrapper = mountSelect({className: 'foo-bar'});
73
- wrapper.should.have.className('foo-bar');
74
- });
75
-
76
- it('Should compute selected index', () => {
77
- const instance = shallowSelect().instance();
78
- const selectedIndex = instance._getSelectedIndex(testData[2], testData);
79
- selectedIndex.should.equal(2);
80
- });
81
-
82
- it('should update rendered data if props change', () => {
83
- const wrapper = shallowSelect();
84
- wrapper.setProps({data: [testData[0]]});
85
- wrapper.state('shownData').should.deep.equal([testData[0]]);
86
- });
87
-
88
- it('Should use selectedLabel for select button title if provided', () => {
89
- const wrapper = shallowSelect({
90
- selected: {
91
- key: 1, label: 'test1', selectedLabel: 'testLabel'
92
- }
93
- });
94
- const instance = wrapper.instance();
95
- const selectedLabel = instance._getSelectedString();
96
- selectedLabel.should.equal('testLabel');
97
- });
98
-
99
- it('Should use label for select button title', () => {
100
- const instance = shallowSelect().instance();
101
- const selectedLabel = instance._getSelectedString();
102
- selectedLabel.should.equal('first1');
103
- });
104
-
105
- it('Should clear selected on clearing', () => {
106
- const wrapper = shallowSelect();
107
- const instance = wrapper.instance();
108
- instance.clear();
109
- wrapper.should.have.state('selected', null);
110
- });
111
-
112
- it('Should call onChange on clearing', () => {
113
- const wrapper = mountSelect();
114
- const instance = wrapper.instance();
115
- instance.clear();
116
- wrapper.prop('onChange').should.be.calledOnce;
117
- wrapper.prop('onChange').should.be.called.calledWith(null);
118
- });
119
-
120
- it('Should pass selected item and event to onChange', () => {
121
- const wrapper = mountSelect();
122
- const instance = wrapper.instance();
123
- instance._listSelectHandler({item: 'foo'}, {nativeEvent: 'foo'});
124
- wrapper.prop('onChange').should.be.called.calledWith({item: 'foo'}, {nativeEvent: 'foo'});
125
- });
126
-
127
- it('Should clear selected when rerendering with no selected item', () => {
128
- const wrapper = shallowSelect();
129
- wrapper.setProps({selected: null});
130
- wrapper.should.have.state('selected', null);
131
- });
132
-
133
- it('Should handle UP, DOWN and ENTER shortcuts', () => {
134
- const wrapper = shallowSelect();
135
- const instance = wrapper.instance();
136
- const shortcutsMap = instance.getShortcutsMap();
137
- shortcutsMap.enter.should.exist;
138
- shortcutsMap.up.should.exist;
139
- shortcutsMap.down.should.exist;
140
- });
141
-
142
- it('Should generate unique scope for shortcuts', () => {
143
- const firstTimeScope = shallowSelect().instance().shortcutsScope;
144
- const secondTimeScope = shallowSelect().instance().shortcutsScope;
145
- secondTimeScope.should.not.be.equal(firstTimeScope);
146
- });
147
-
148
- it('Should open popup on key handling if not opened', () => {
149
- const wrapper = mountSelect({type: Select.Type.INPUT});
150
- const instance = wrapper.instance();
151
- instance._showPopup = sandbox.spy();
152
- wrapper.setState({focused: true});
153
- instance._inputShortcutHandler();
154
- instance._showPopup.should.be.calledOnce;
155
- });
156
-
157
- it('Should not open popup if disabled', () => {
158
- const wrapper = mountSelect({disabled: true});
159
- const instance = wrapper.instance();
160
- instance._showPopup = sandbox.spy();
161
- instance._clickHandler();
162
- instance._showPopup.should.not.be.called;
163
- });
164
-
165
- it('Should close popup on click if it is already open', () => {
166
- const wrapper = mountSelect();
167
- const instance = wrapper.instance();
168
- instance._hidePopup = sandbox.spy();
169
- instance._showPopup();
170
- instance._clickHandler();
171
- instance._hidePopup.should.be.called;
172
- });
173
-
174
- it('Should call onAdd on adding', () => {
175
- const wrapper = mountSelect({onAdd: sandbox.spy()});
176
- const instance = wrapper.instance();
177
- instance.addHandler();
178
- wrapper.prop('onAdd').should.be.calledOnce;
179
- });
180
-
181
- it('Should call onFocus on input focus', () => {
182
- const wrapper = mountSelect({type: Select.Type.INPUT});
183
- const instance = wrapper.instance();
184
-
185
- Simulate.focus(instance.filter);
186
- wrapper.prop('onFocus').should.be.called;
187
- });
188
-
189
- it('Should call onBlur on input blur', () => {
190
- const wrapper = mountSelect({type: Select.Type.INPUT});
191
- const instance = wrapper.instance();
192
-
193
- Simulate.blur(instance.filter);
194
- wrapper.prop('onBlur').should.be.called;
195
- });
196
-
197
- it('Should close popup if input lost focus in INPUT mode', () => {
198
- sandbox.useFakeTimers({toFake: ['setTimeout']});
199
- const wrapper = mountSelect({type: Select.Type.INPUT});
200
- const instance = wrapper.instance();
201
- instance._showPopup();
202
-
203
- Simulate.blur(instance.filter);
204
- sandbox.clock.tick();
205
- instance._popup.props.hidden.should.be.true;
206
- });
207
-
208
- it('Should not close popup while clicking on popup in INPUT mode', () => {
209
- sandbox.useFakeTimers({toFake: ['setTimeout']});
210
- const wrapper = mountSelect({type: Select.Type.INPUT});
211
- const instance = wrapper.instance();
212
- instance._showPopup();
213
-
214
- Simulate.mouseDown(instance._popup.list.container);
215
- Simulate.blur(instance.filter);
216
- sandbox.clock.tick();
217
- instance._popup.props.hidden.should.be.false;
218
- });
219
-
220
- describe('Derived state', () => {
221
-
222
- let wrapper;
223
- beforeEach(() => {
224
- wrapper = shallowSelect();
225
- });
226
-
227
- it('Should update shown data', () => {
228
- const {shownData} = wrapper.state();
229
- wrapper.setProps({data: []});
230
-
231
- wrapper.state().shownData.should.deep.equal([]);
232
- wrapper.state().shownData.should.not.equal(shownData);
233
- });
234
-
235
- it('Should not update shown data if data is not passed', () => {
236
- const {shownData} = wrapper.state();
237
- wrapper.setProps({});
238
-
239
- wrapper.state().shownData.should.equal(shownData);
240
- });
241
-
242
- it('Should not update shown data if data the same as previous', () => {
243
- const {shownData} = wrapper.state();
244
- wrapper.setProps({data: testData});
245
-
246
- wrapper.state().shownData.should.equal(shownData);
247
- });
248
-
249
- it('Should reset selection when toggling multiple state', () => {
250
- wrapper.setProps({multiple: true});
251
- wrapper.state().selected.should.deep.equal([]);
252
-
253
- wrapper.setProps({multiple: false});
254
- should.equal(wrapper.state().selected, null);
255
- });
256
-
257
- it('Should not reset selection if mulitiple prop is the same as previous', () => {
258
- const {selected} = wrapper.state();
259
- wrapper.setProps({multiple: false});
260
-
261
- wrapper.state().selected.should.equal(selected);
262
- });
263
-
264
- it('Should update selected index for select', () => {
265
- const selectedItem = createItem();
266
-
267
- wrapper.setProps({
268
- selected: selectedItem,
269
- data: [createItem(), selectedItem]
270
- });
271
-
272
- wrapper.state().selectedIndex.should.equal(1);
273
- });
274
-
275
- it('Should update selected index for multiple select if selected is changed', () => {
276
- const selectedItem = createItem();
277
-
278
- wrapper.setProps({
279
- multiple: true,
280
- selected: [selectedItem],
281
- data: [createItem(), selectedItem]
282
- });
283
-
284
- wrapper.state().selectedIndex.should.equal(1);
285
- });
286
-
287
- it('Should update selected index for multiple select if selected is changed but count of element is the same', () => {
288
- const firstItem = createItem();
289
- const secondItem = createItem();
290
-
291
- wrapper.setProps({
292
- multiple: true,
293
- selected: [secondItem],
294
- data: [firstItem, secondItem]
295
- });
296
-
297
- wrapper.setProps({
298
- selected: [firstItem]
299
- });
300
-
301
- wrapper.state().selectedIndex.should.equal(0);
302
- });
303
-
304
- function createItem() {
305
- createItem.key = (createItem.key || 0) + 1;
306
- return {key: createItem.key};
307
- }
308
- });
309
-
310
- describe('DOM', () => {
311
- it('Should place select button inside container', () => {
312
- const wrapper = mountSelect();
313
- wrapper.should.have.className(styles.select);
314
- });
315
-
316
- it('Should disable select button if needed', () => {
317
- const wrapper = mountSelect({
318
- disabled: true
319
- });
320
- wrapper.should.have.className(styles.disabled);
321
- wrapper.instance().button.should.have.attr('disabled');
322
- });
323
-
324
- it('Should not disable select button if not needed', () => {
325
- const wrapper = mountSelect({
326
- disabled: false
327
- });
328
- wrapper.instance().button.should.not.have.attr('disabled');
329
- });
330
-
331
- it('Should place input inside in INPUT mode', () => {
332
- const wrapper = mountSelect({type: Select.Type.INPUT});
333
- wrapper.should.have.descendants(Input);
334
- });
335
-
336
- it('Should place icons inside', () => {
337
- const wrapper = mountSelect();
338
- wrapper.should.have.descendants(`.${styles.icons}`);
339
- });
340
-
341
- it('Should add selected item icon to button', () => {
342
- const wrapper = mountSelect({
343
- selected: {
344
- key: 1,
345
- label: 'test',
346
- icon: 'fakeImageUrl'
347
- }
348
- });
349
- wrapper.should.have.descendants(selectedIconSelector);
350
- });
351
-
352
- it('Should not display selected item icon if it is not provided', () => {
353
- const wrapper = shallowSelect({selected: {key: 1, label: 'test', icon: null}});
354
- wrapper.should.not.have.descendants(selectedIconSelector);
355
- });
356
-
357
- it('Should display selected item icon', () => {
358
- const wrapper = mountSelect({
359
- selected: {
360
- key: 1,
361
- label: 'test',
362
- icon: 'http://fake.image/'
363
- }
364
- });
365
- const icon = wrapper.find(selectedIconSelector).getDOMNode();
366
- icon.style.backgroundImage.should.contain('http://fake.image/');
367
- });
368
-
369
- it('Should place icons inside in INPUT mode', () => {
370
- const wrapper = mountSelect({type: Select.Type.INPUT});
371
- wrapper.should.have.descendants(`.${styles.icons}`);
372
- });
373
-
374
- it('Should open select dropdown on click', () => {
375
- const wrapper = mountSelect();
376
- const instance = wrapper.instance();
377
- sandbox.spy(instance, '_showPopup');
378
- wrapper.find('button').first().simulate('click');
379
-
380
- instance._showPopup.should.be.called;
381
- });
382
-
383
- describe('Bottom toolbar', () => {
384
- it('Should not add "Add" button if enabled but filter query is empty', () => {
385
- const wrapper = mountSelect({add: {}});
386
- const instance = wrapper.instance();
387
- instance.filterValue = sandbox.stub().returns('');
388
- instance._showPopup();
389
- instance._popup.popup.popup.should.not.contain('.ring-select__button');
390
- });
391
-
392
- it('Should add "Add" button if enabled and filter query not empty', () => {
393
- const wrapper = mountSelect({add: {}});
394
- const instance = wrapper.instance();
395
- instance.filterValue = sandbox.stub().returns('test');
396
- instance._showPopup();
397
- instance._popup.popup.popup.should.contain(`.${styles.button}`);
398
- });
399
-
400
- it('Should add "Add" button if alwaysVisible is set', () => {
401
- const wrapper = mountSelect({
402
- add: {
403
- alwaysVisible: true
404
- }
405
- });
406
- const instance = wrapper.instance();
407
- instance._showPopup();
408
- instance._popup.popup.popup.should.contain(`.${styles.button}`);
409
- });
410
-
411
- it('Should place label instead filterValue to "Add" button if alwaysVisible is set', () => {
412
- const wrapper = mountSelect({
413
- add: {
414
- alwaysVisible: true,
415
- label: 'Add Something'
416
- }
417
- });
418
- const instance = wrapper.instance();
419
- instance._showPopup();
420
- const addButton = instance._popup.popup.popup.querySelector(`.${styles.button}`);
421
-
422
- addButton.should.contain.text('Add Something');
423
- });
424
-
425
- it('Should process filterValue into a label at the "Add" button if "add.label" prop is a function', () => {
426
- const wrapper = mountSelect({
427
- add: {
428
- label: value => `--${value}--`
429
- }
430
- });
431
- const instance = wrapper.instance();
432
- instance.filterValue = sandbox.stub().returns('test');
433
- instance._showPopup();
434
- const addButton = instance._popup.popup.popup.querySelector(`.${styles.button}`);
435
-
436
- addButton.should.contain.text('--test--');
437
- });
438
-
439
- it('Should add hint if specified', () => {
440
- const wrapper = mountSelect({
441
- hint: 'blah blah'
442
- });
443
- const instance = wrapper.instance();
444
- instance._showPopup();
445
- instance._popup.popup.popup.should.contain('[data-test=ring-list-hint]');
446
- });
447
-
448
- it('Hint should be placed under "add" button', () => {
449
- const wrapper = mountSelect({
450
- add: {},
451
- hint: 'blah blah'
452
- });
453
- const instance = wrapper.instance();
454
- instance._showPopup();
455
- const hint = instance._popup.popup.popup.querySelectorAll('[data-test=ring-list-hint]');
456
-
457
- hint.should.exist;
458
- });
459
- });
460
- });
461
-
462
- describe('getListItems', () => {
463
- it('Should filter items by label', () => {
464
- const wrapper = shallowSelect();
465
- const instance = wrapper.instance();
466
- const filtered = instance.getListItems('test3');
467
- filtered.length.should.equal(1);
468
- filtered[0].label.should.equal('test3');
469
- });
470
-
471
- it('Should filter items by part of label', () => {
472
- const wrapper = shallowSelect();
473
- const instance = wrapper.instance();
474
- const filtered = instance.getListItems('test');
475
- filtered.length.should.equal(2);
476
- });
477
-
478
- it('Should not filter separators', () => {
479
- const separators = [{
480
- type: List.ListProps.Type.SEPARATOR,
481
- key: 1,
482
- description: 'test'
483
- }];
484
- const wrapper = shallowSelect({data: separators});
485
- const instance = wrapper.instance();
486
-
487
- const filtered = instance.getListItems('foo');
488
- filtered.should.deep.equal(separators);
489
- });
490
-
491
- it('Should not filter hints', () => {
492
- const hints = [{
493
- type: List.ListProps.Type.HINT,
494
- key: 1,
495
- description: 'test'
496
- }];
497
- const wrapper = shallowSelect({data: hints});
498
- const instance = wrapper.instance();
499
-
500
- const filtered = instance.getListItems('foo');
501
- filtered.should.deep.equal(hints);
502
- });
503
-
504
- it('Should filter custom items with label', () => {
505
- const customItems = [{
506
- type: List.ListProps.Type.CUSTOM,
507
- key: 1,
508
- label: 'bar',
509
- template: <div/>
510
- }];
511
- const wrapper = shallowSelect({data: customItems});
512
- const instance = wrapper.instance();
513
-
514
- const filtered = instance.getListItems('foo');
515
- filtered.should.deep.equal([]);
516
- });
517
-
518
- it('Should not filter items without label', () => {
519
- const items = [{
520
- key: 1,
521
- description: 'test'
522
- }];
523
- const wrapper = shallowSelect({data: items});
524
- const instance = wrapper.instance();
525
-
526
- const filtered = instance.getListItems('foo');
527
- filtered.should.deep.equal(items);
528
- });
529
-
530
- it('Should use custom filter.fn if provided', () => {
531
- const filterStub = sandbox.stub().returns(true);
532
-
533
- const wrapper = shallowSelect({
534
- filter: {fn: filterStub}
535
- });
536
- const instance = wrapper.instance();
537
-
538
- const filtered = instance.getListItems('test3');
539
-
540
- filtered.length.should.equal(testData.length);
541
- filterStub.should.have.callCount(4);
542
- });
543
-
544
- it('Should write filter query on add button if enabled', () => {
545
- const wrapper = shallowSelect({
546
- add: {
547
- prefix: 'Add some'
548
- }
549
- });
550
- const instance = wrapper.instance();
551
-
552
- instance.getListItems('foo');
553
-
554
- wrapper.state().addButton.label.should.equal('foo');
555
- });
556
- });
557
-
558
- describe('Filtering', () => {
559
- it('Should call onFilter on input changes', () => {
560
- const wrapper = mountSelect();
561
- const instance = wrapper.instance();
562
- wrapper.setState({
563
- focused: true,
564
- showPopup: true
565
- });
566
- simulateInput(instance._popup.filter, 'a');
567
- wrapper.prop('onFilter').should.be.called;
568
- });
569
-
570
- it('Should save input changes', () => {
571
- const wrapper = mountSelect();
572
- const instance = wrapper.instance();
573
- wrapper.setState({showPopup: true});
574
- simulateInput(instance._popup.filter, 'a');
575
- wrapper.should.have.state('filterValue', 'a');
576
- });
577
-
578
- it('Should open popup on input changes if in focus', () => {
579
- const wrapper = mountSelect({type: Select.Type.INPUT});
580
- const instance = wrapper.instance();
581
- instance._showPopup = sandbox.spy();
582
- wrapper.setState({focused: true});
583
- simulateInput(instance.filter, 'a');
584
- instance._showPopup.should.be.called;
585
- });
586
-
587
- it('should filter if not focused but not in input mode', () => {
588
- const wrapper = mountSelect({type: Select.Type.MATERIAL});
589
- const instance = wrapper.instance();
590
- wrapper.setState({showPopup: true});
591
- simulateInput(instance._popup.filter, 'a');
592
-
593
- wrapper.prop('onFilter').should.be.called;
594
- });
595
-
596
- it('Should not open popup on input changes if not in focus', () => {
597
- const wrapper = mountSelect({type: Select.Type.INPUT});
598
- const instance = wrapper.instance();
599
-
600
- instance._showPopup = sandbox.spy();
601
- simulateInput(instance.filter, 'a');
602
- instance._showPopup.should.not.be.called;
603
- });
604
-
605
- it('Should return empty string if not input mode and filter is disabled', () => {
606
- const wrapper = shallowSelect({filter: false, type: Select.Type.MATERIAL});
607
- const instance = wrapper.instance();
608
-
609
- instance.filterValue().should.equal('');
610
- });
611
-
612
- it('Should return input value if input mode enabled', () => {
613
- const wrapper = mountSelect({filter: false, type: Select.Type.INPUT});
614
- const instance = wrapper.instance();
615
- wrapper.setState({focused: true});
616
- simulateInput(instance.filter, 'test input');
617
- instance.filterValue().should.equal('test input');
618
- });
619
-
620
- it('Should set value to popup input if passed', () => {
621
- const wrapper = mountSelect();
622
- const instance = wrapper.instance();
623
- instance._showPopup();
624
- instance.filterValue('test');
625
- instance._popup.filter.value.should.equal('test');
626
- });
627
-
628
- it('Should set target input value in input mode', () => {
629
- const wrapper = mountSelect({filter: false, type: Select.Type.INPUT});
630
- const instance = wrapper.instance();
631
-
632
- wrapper.setState({focused: true});
633
- instance.filterValue('test');
634
- instance.filter.value.should.equal('test');
635
- });
636
-
637
- it('Should clear filter value when closing', () => {
638
- const wrapper = mountSelect();
639
- const instance = wrapper.instance();
640
- instance.filterValue('test');
641
- instance._showPopup();
642
- instance._hidePopup();
643
- instance._showPopup();
644
- instance._popup.filter.value.should.equal('');
645
- });
646
- });
647
-
648
- describe('Multiple', () => {
649
- const defaultPropsMultiple = () => ({
650
- data: testData,
651
- selected: testData.slice(0, 2),
652
- filter: true,
653
- multiple: true,
654
- onChange: sandbox.spy()
655
- });
656
-
657
- const shallowSelectMultiple = props => shallow(
658
- <Select {...defaultPropsMultiple()} {...props}/>
659
- );
660
- const mountSelectMultiple = props => {
661
- mountWrapper = mount(
662
- <Select {...defaultPropsMultiple()} {...props}/>
663
- );
664
- return mountWrapper;
665
- };
666
-
667
- it('Should fill multipleMap on initialization', () => {
668
- const wrapper = mountSelectMultiple();
669
- wrapper.state().multipleMap.should.deep.equal({1: true, 2: true});
670
- });
671
-
672
- it('Should fill multipleMap on selection change', () => {
673
- const wrapper = mountSelectMultiple();
674
- wrapper.setProps({selected: testData.slice(1, 2)});
675
- wrapper.state().multipleMap.should.deep.equal({2: true});
676
- });
677
-
678
- it('Should construct label from selected array', () => {
679
- const wrapper = shallowSelectMultiple();
680
- const instance = wrapper.instance();
681
- const selectedLabel = instance._getSelectedString();
682
- selectedLabel.should.equal('first1, test2');
683
- });
684
-
685
- it('Should skip empty labels', () => {
686
- const wrapper = shallowSelectMultiple({
687
- selected: testData.slice(2)
688
- });
689
- const instance = wrapper.instance();
690
- const selectedLabel = instance._getSelectedString();
691
- selectedLabel.should.equal('test3');
692
- });
693
-
694
- it('Should detect selection is empty according on not empty array', () => {
695
- const wrapper = shallowSelectMultiple();
696
- const instance = wrapper.instance();
697
- instance._selectionIsEmpty().should.be.false;
698
- });
699
-
700
- it('Should detect selection is empty according on empty array', () => {
701
- const wrapper = shallowSelectMultiple({selected: []});
702
- const instance = wrapper.instance();
703
- instance._selectionIsEmpty().should.be.true;
704
- });
705
-
706
- it('Should clear selected on clearing', () => {
707
- const wrapper = shallowSelectMultiple();
708
- const instance = wrapper.instance();
709
- instance.clear();
710
- wrapper.state('selected').length.should.equal(0);
711
- });
712
-
713
- it('Should not draw "clear" button if multiple and nothing selected', () => {
714
- const wrapper = shallowSelectMultiple();
715
- wrapper.setProps({clear: true, selected: []});
716
- wrapper.should.not.have.descendants('[data-test~="ring-clear-select"]');
717
- });
718
-
719
- it('Should call onChange on clearing', () => {
720
- const wrapper = mountSelectMultiple();
721
- const instance = wrapper.instance();
722
- instance.clear();
723
- wrapper.prop('onChange').should.be.calledOnce;
724
- wrapper.prop('onChange').should.be.called.calledWith([]);
725
- });
726
-
727
- it('Should clear selected when rerendering with no selected item in multiple mode', () => {
728
- const wrapper = shallowSelectMultiple();
729
- wrapper.setProps({selected: null});
730
- wrapper.state('selected').should.deep.equal([]);
731
- });
732
-
733
- it('Should update selected checkboxes on selected update', () => {
734
- const wrapper = shallowSelectMultiple();
735
- const instance = wrapper.instance();
736
- wrapper.setProps({selected: []});
737
- instance.getListItems(instance.filterValue())[0].checkbox.should.be.false;
738
- });
739
-
740
- describe('On selecting', () => {
741
- let wrapper;
742
- let instance;
743
- beforeEach(() => {
744
- wrapper = mountSelectMultiple();
745
- instance = wrapper.instance();
746
- });
747
-
748
- it('Should add item to multiple map on selecting item', () => {
749
- instance._listSelectHandler(testData[3]);
750
- wrapper.state().multipleMap['4'].should.be.true;
751
- });
752
-
753
- it('Should select just picked item on selecting by clicking item', () => {
754
- const lengthBefore = testData.slice(0, 2).length;
755
- instance._listSelectHandler(testData[3]);
756
- wrapper.state('selected').length.should.equal(lengthBefore + 1);
757
- });
758
-
759
- it('Should add item to selection on clicking by checkbox', () => {
760
- const lengthBefore = testData.slice(0, 2).length;
761
- instance._listSelectHandler(testData[3], {
762
- originalEvent: {
763
- target: {
764
- matches: () => true
765
- }
766
- }
767
- });
768
- wrapper.state('selected').length.should.equal(lengthBefore + 1);
769
- });
770
-
771
- it('Should close popup on selecting by item', () => {
772
- instance._hidePopup = sandbox.spy();
773
- instance._listSelectHandler(testData[3], {
774
- originalEvent: {
775
- target: {
776
- matches: () => false
777
- }
778
- }
779
- });
780
- instance._hidePopup.should.have.been.called;
781
- });
782
-
783
- it('Should not close popup on selecting by checkbox', () => {
784
- instance._hidePopup = sandbox.spy();
785
- instance._listSelectHandler(testData[3], {}, {tryKeepOpen: true});
786
- instance._hidePopup.should.not.be.called;
787
- });
788
- });
789
-
790
- describe('On deselecting', () => {
791
- it('Should remove item from selected on deselecting', () => {
792
- const wrapper = mountSelectMultiple();
793
- const instance = wrapper.instance();
794
- const lengthBefore = testData.slice(0, 2).length;
795
- instance._listSelectHandler(testData[0]);
796
- wrapper.state('selected').length.should.equal(lengthBefore - 1);
797
- });
798
-
799
- it('Should call onDeselect on deselecting item', () => {
800
- const wrapper = mountSelectMultiple({
801
- onDeselect: sandbox.spy()
802
- });
803
- const instance = wrapper.instance();
804
- instance._listSelectHandler(testData[0]);
805
- wrapper.prop('onDeselect').should.be.calledWith(testData[0]);
806
- });
807
- });
808
-
809
- });
810
-
811
- describe('On selecting', () => {
812
- it('Should not react on selecting disabled element', () => {
813
- const wrapper = shallowSelect();
814
- const instance = wrapper.instance();
815
- instance.setState = sandbox.spy();
816
-
817
- instance._listSelectHandler({
818
- key: 1,
819
- label: 'test',
820
- disabled: true
821
- });
822
-
823
- instance.setState.should.not.be.called;
824
- });
825
-
826
- it('Should not react on selecting separator', () => {
827
- const wrapper = shallowSelect();
828
- const instance = wrapper.instance();
829
- instance.setState = sandbox.spy();
830
-
831
- instance._listSelectHandler({
832
- key: 1,
833
- label: 'test',
834
- rgItemType: List.ListProps.Type.SEPARATOR
835
- });
836
-
837
- instance.setState.should.not.be.called;
838
- });
839
-
840
- it('Should react on selecting custom item', () => {
841
- const wrapper = shallowSelect();
842
- const instance = wrapper.instance();
843
- instance.setState = sandbox.spy();
844
-
845
- instance._listSelectHandler({
846
- key: 1,
847
- label: 'test',
848
- type: List.ListProps.Type.CUSTOM
849
- });
850
-
851
- instance.setState.should.be.called;
852
- });
853
-
854
- it('Should set selected on selecting', () => {
855
- const wrapper = shallowSelect();
856
- const instance = wrapper.instance();
857
- instance._listSelectHandler(testData[3]);
858
- wrapper.should.have.state('selected', testData[3]);
859
- });
860
-
861
- it('Should set call onSelect on selecting', () => {
862
- const wrapper = mountSelect({
863
- onSelect: sandbox.spy()
864
- });
865
- const instance = wrapper.instance();
866
- instance._listSelectHandler(testData[1]);
867
- wrapper.prop('onSelect').should.be.calledOnce;
868
- });
869
-
870
- it('Should set call onChange on selecting', () => {
871
- const wrapper = mountSelect({
872
- onChange: sandbox.spy()
873
- });
874
- const instance = wrapper.instance();
875
- instance._listSelectHandler(testData[1]);
876
- wrapper.prop('onChange').should.be.calledOnce;
877
- });
878
-
879
- it('Should hide popup on selecting', () => {
880
- const wrapper = mountSelect();
881
- const instance = wrapper.instance();
882
- instance._hidePopup = sandbox.spy();
883
- instance._listSelectHandler(testData[1]);
884
- instance._hidePopup.should.be.calledOnce;
885
- });
886
- });
887
-
888
- describe('On select all', () => {
889
- it('Should react on select all action', () => {
890
- const wrapper = shallowSelect();
891
- const instance = wrapper.instance();
892
- instance.setState = sandbox.spy();
893
-
894
- instance._listSelectAllHandler();
895
-
896
- instance.setState.should.be.called;
897
- });
898
-
899
- it('Should react on select all action with false flag', () => {
900
- const wrapper = shallowSelect();
901
- const instance = wrapper.instance();
902
- instance.setState = sandbox.spy();
903
-
904
- instance._listSelectAllHandler(false);
905
-
906
- instance.setState.should.be.called;
907
- });
908
-
909
- it('Should set selected on selecting all', () => {
910
- const wrapper = mountSelect({
911
- onSelect: sandbox.spy(),
912
- multiple: true,
913
- selected: [],
914
- data: testData
915
- });
916
- const instance = wrapper.instance();
917
- instance._listSelectAllHandler();
918
- wrapper.state().selected.should.be.eql(testData);
919
- });
920
-
921
- it('Should set call onSelect on selecting', () => {
922
- const wrapper = mountSelect({
923
- onSelect: sandbox.spy(),
924
- multiple: true,
925
- selected: [testData[0]],
926
- data: testData
927
- });
928
- const instance = wrapper.instance();
929
- instance._listSelectAllHandler();
930
- wrapper.prop('onSelect').should.be.calledThrice;
931
- });
932
-
933
- it('Should set call onDeselect on call handler with false flag', () => {
934
- const wrapper = mountSelect({
935
- onDeselect: sandbox.spy(),
936
- multiple: true,
937
- selected: [testData[0], testData[1], testData[2]],
938
- data: testData
939
- });
940
- const instance = wrapper.instance();
941
- instance._listSelectAllHandler(false);
942
- wrapper.prop('onDeselect').should.be.calledThrice;
943
- });
944
-
945
- it('Should set call onChange on selecting', () => {
946
- const wrapper = mountSelect({
947
- onChange: sandbox.spy(),
948
- multiple: true,
949
- selected: [testData[0]],
950
- data: testData
951
- });
952
- const instance = wrapper.instance();
953
- instance._listSelectAllHandler(testData[1]);
954
- wrapper.prop('onChange').should.be.calledOnce;
955
- });
956
- });
957
-
958
- describe('Popup', () => {
959
- let container;
960
- const mountSelectToContainer = props => {
961
- mountWrapper = mount(
962
- <Select {...props}/>,
963
- {
964
- attachTo: container
965
- }
966
- );
967
- };
968
- beforeEach(() => {
969
- container = document.createElement('div');
970
- document.body.appendChild(container);
971
- });
972
-
973
- afterEach(() => {
974
- document.body.removeChild(container);
975
- container = null;
976
- });
977
-
978
- it('Should pass loading message and indicator to popup if loading', () => {
979
- const wrapper = mountSelect({loading: true, loadingMessage: 'test message'});
980
- const instance = wrapper.instance();
981
- instance._popup.rerender = sandbox.stub();
982
- instance._showPopup();
983
- instance._popup.props.message.should.equal('test message');
984
- instance._popup.props.loading.should.be.true;
985
- });
986
-
987
- it('Should pass notFoundMessage message to popup if not loading and data is empty', () => {
988
- const wrapper = mountSelect({data: [], notFoundMessage: 'test not found'});
989
- const instance = wrapper.instance();
990
- instance._popup.rerender = sandbox.stub();
991
- instance._showPopup();
992
- instance._popup.props.message.should.equal('test not found');
993
- });
994
-
995
- describe('filter focusing', () => {
996
- const SHOW_TIMEOUT = 300;
997
-
998
- beforeEach(() => {
999
- mountSelectToContainer({filter: true});
1000
- });
1001
-
1002
- it('Should focus the filter on opening', done => {
1003
- const instance = mountWrapper.instance();
1004
- instance._showPopup();
1005
- // Can't use fake timers here, as Popup redraws by requestAnimationFrame.
1006
- // Stabbing it isn't possible either, as it hangs IE11
1007
- setTimeout(() => {
1008
- instance._popup.filter.should.equal(document.activeElement);
1009
- done();
1010
- }, SHOW_TIMEOUT);
1011
- });
1012
-
1013
- it('Should focus the filter on second opening', done => {
1014
- const instance = mountWrapper.instance();
1015
- instance._showPopup();
1016
- instance._hidePopup();
1017
- instance._showPopup();
1018
- setTimeout(() => {
1019
- instance._popup.filter.should.equal(document.activeElement);
1020
- done();
1021
- }, SHOW_TIMEOUT);
1022
- });
1023
- });
1024
-
1025
- it('Should restore focus on select in button mode after closing popup', () => {
1026
- mountSelectToContainer({
1027
- data: testData,
1028
- filter: true
1029
- });
1030
- const instance = mountWrapper.instance();
1031
-
1032
- instance._showPopup();
1033
- instance._hidePopup(true);
1034
- document.activeElement.should.equal(instance.button);
1035
- });
1036
-
1037
- describe('Focus after close', () => {
1038
- let instance;
1039
- let targetInput;
1040
- beforeEach(() => {
1041
- targetInput = document.createElement('input');
1042
- document.body.appendChild(targetInput);
1043
-
1044
- mountSelectToContainer({
1045
- data: testData,
1046
- filter: true,
1047
- targetElement: targetInput
1048
- });
1049
- instance = mountWrapper.instance();
1050
-
1051
- instance._showPopup();
1052
- });
1053
-
1054
- afterEach(() => {
1055
- document.body.removeChild(targetInput);
1056
- targetInput = null;
1057
- });
1058
-
1059
- it('Should restore focus on provided target element after closing popup', () => {
1060
- instance._hidePopup(true);
1061
-
1062
- targetInput.should.equal(document.activeElement);
1063
- });
1064
-
1065
- it('Should restore focus on provided target element after closing popup with keyboard', () => {
1066
- simulateCombo('esc');
1067
- targetInput.should.equal(document.activeElement);
1068
- });
1069
-
1070
- it('Should not restore focus on provided target element after closing popup with not keyboard event', () => {
1071
- Simulate.click(document.body);
1072
-
1073
- targetInput.should.not.equal(document.activeElement);
1074
- });
1075
-
1076
- it('Should not restore focus on provided target element after closing popup', () => {
1077
- instance._hidePopup();
1078
-
1079
- targetInput.should.not.equal(document.activeElement);
1080
- });
1081
- });
1082
-
1083
- });
1084
-
1085
- describe('_getResetOption', () => {
1086
- let instance;
1087
-
1088
- it('should create tags reset option', () => {
1089
- const labelMock = 'label';
1090
- const tagsMock = {
1091
- reset: {
1092
- key: labelMock,
1093
- template: labelMock,
1094
- glyph: 'glyph',
1095
- rgItemType: List.ListProps.Type.CUSTOM,
1096
- className: 'cssClass',
1097
- onClick: () => {}
1098
- }
1099
- };
1100
- instance = shallowSelect({
1101
- selected: [{}, {}],
1102
- tags: tagsMock
1103
- }).instance();
1104
-
1105
- const resetOption = instance._getResetOption();
1106
-
1107
- resetOption.rgItemType.should.be.equal(List.ListProps.Type.CUSTOM);
1108
- resetOption.glyph.should.be.equal(tagsMock.reset.glyph);
1109
- resetOption.onClick.should.be.an.instanceof(Function);
1110
- });
1111
-
1112
- it('should not create tags reset option if it is not provided', () => {
1113
- instance = shallowSelect({
1114
- select: [{}, {}]
1115
- }).instance();
1116
-
1117
- should.not.exist(instance._getResetOption());
1118
- });
1119
-
1120
- it('should not create tags reset option without selected elements', () => {
1121
- instance = shallowSelect({
1122
- tags: {reset: {}}
1123
- }).instance();
1124
-
1125
- should.not.exist(instance._getResetOption());
1126
- });
1127
- });
1128
-
1129
-
1130
- describe('_prependResetOption', () => {
1131
- let instance;
1132
-
1133
- it('should prepend reset option', () => {
1134
- instance = getInstance();
1135
- const newShownData = instance._prependResetOption([{}]);
1136
-
1137
- newShownData.length.should.be.equal(4);
1138
- });
1139
-
1140
- it('should prepend reset option with separator', () => {
1141
- instance = getInstance(true);
1142
-
1143
- const newShownData = instance._prependResetOption([{}]);
1144
-
1145
- newShownData.length.should.be.equal(5);
1146
- });
1147
-
1148
- it('should not prepend reset option', () => {
1149
- instance = getInstance(true, []);
1150
-
1151
- const newShownData = instance._prependResetOption([]);
1152
-
1153
- newShownData.length.should.be.equal(0);
1154
- });
1155
-
1156
- function getInstance(resetWithSeparator, selected) {
1157
- const resetMock = {
1158
- reset: {}
1159
- };
1160
- if (resetWithSeparator) {
1161
- resetMock.reset.separator = true;
1162
- }
1163
-
1164
- return shallowSelect({
1165
- selected: selected || [{}, {}],
1166
- tags: resetMock
1167
- }).instance();
1168
- }
1169
- });
1170
-
1171
-
1172
- describe('_redrawPopup', () => {
1173
- let clock;
1174
-
1175
- beforeEach(() => {
1176
- clock = sandbox.useFakeTimers({toFake: ['setTimeout']});
1177
- });
1178
-
1179
- it('should not redraw a popup in default mode', () => {
1180
- const instance = shallowSelect().instance();
1181
- sandbox.stub(instance, '_showPopup');
1182
- instance._redrawPopup();
1183
-
1184
- clock.tick();
1185
- instance._showPopup.should.not.have.been.called;
1186
- });
1187
-
1188
- it('should redraw a popup in multiselect mode', () => {
1189
- const instance = shallowSelect({
1190
- multiple: true,
1191
- selected: testData.slice(1)
1192
- }).instance();
1193
-
1194
- sandbox.stub(instance, '_showPopup');
1195
- instance._redrawPopup();
1196
-
1197
- clock.tick();
1198
- instance._showPopup.should.have.been.called;
1199
- });
1200
- });
1201
- });