@jetbrains/ring-ui 4.1.5 → 5.0.0-beta.2

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 (1137) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +0 -23
  3. package/babel.config.js +1 -0
  4. package/components/alert/alert.d.ts +110 -0
  5. package/components/alert/alert.jsx +185 -0
  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 +68 -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.d.ts +70 -0
  115. package/components/date-picker/date-picker.jsx +205 -0
  116. package/components/date-picker/date-popup.d.ts +56 -0
  117. package/components/date-picker/date-popup.jsx +344 -0
  118. package/components/date-picker/day.d.ts +30 -0
  119. package/components/date-picker/day.jsx +88 -0
  120. package/components/date-picker/formats.d.ts +2 -0
  121. package/components/date-picker/month-names.d.ts +13 -0
  122. package/components/date-picker/month-names.jsx +62 -0
  123. package/components/date-picker/month-slider.d.ts +29 -0
  124. package/components/date-picker/month-slider.jsx +56 -0
  125. package/components/date-picker/month.d.ts +14 -0
  126. package/components/date-picker/month.jsx +33 -0
  127. package/components/date-picker/months.d.ts +11 -0
  128. package/components/date-picker/months.jsx +86 -0
  129. package/components/date-picker/weekdays.d.ts +13 -0
  130. package/components/date-picker/weekdays.jsx +24 -0
  131. package/components/date-picker/years.d.ts +21 -0
  132. package/components/date-picker/years.jsx +75 -0
  133. package/components/dialog/dialog.d.ts +73 -0
  134. package/components/dialog/dialog.jsx +125 -0
  135. package/components/dialog/dialog__body-scroll-preventer.d.ts +9 -0
  136. package/components/dialog/dialog__body-scroll-preventer.js +35 -51
  137. package/components/dialog-ng/dialog-ng.examples.js +5 -5
  138. package/components/docked-panel-ng/docked-panel-ng.examples.js +3 -3
  139. package/components/dropdown/anchor.d.ts +11 -0
  140. package/components/dropdown/anchor.jsx +16 -0
  141. package/components/dropdown/dropdown.d.ts +77 -0
  142. package/components/dropdown/dropdown.jsx +148 -0
  143. package/components/dropdown-menu/dropdown-menu.d.ts +26 -0
  144. package/components/dropdown-menu/dropdown-menu.jsx +56 -0
  145. package/components/error-bubble/error-bubble.d.ts +18 -0
  146. package/components/error-bubble/error-bubble.jsx +28 -0
  147. package/components/error-message/error-message.d.ts +25 -0
  148. package/components/error-message/error-message.jsx +35 -0
  149. package/components/error-message-ng/error-message-ng.examples.js +1 -1
  150. package/components/error-page-ng/error-page-ng.examples.js +2 -2
  151. package/components/footer/footer.d.ts +28 -0
  152. package/components/footer/footer.jsx +96 -0
  153. package/components/footer-ng/footer-ng.examples.js +2 -2
  154. package/components/form/form.examples.js +4 -4
  155. package/components/form-ng/form-ng.examples.js +6 -6
  156. package/components/global/compose.d.ts +7 -0
  157. package/components/global/compose.js +3 -3
  158. package/components/global/composeRefs.d.ts +3 -0
  159. package/components/global/composeRefs.js +7 -6
  160. package/components/global/conic-gradient.d.ts +796 -0
  161. package/components/global/conic-gradient.js +14 -24
  162. package/components/global/create-stateful-context.d.ts +27 -0
  163. package/components/global/create-stateful-context.jsx +38 -0
  164. package/components/global/data-tests.d.ts +3 -0
  165. package/components/global/data-tests.js +12 -12
  166. package/components/global/dom.d.ts +37 -0
  167. package/components/global/dom.js +51 -73
  168. package/components/global/focus-sensor-hoc.d.ts +18 -0
  169. package/components/global/focus-sensor-hoc.jsx +101 -0
  170. package/components/global/fuzzy-highlight.d.ts +5 -0
  171. package/components/global/fuzzy-highlight.js +38 -40
  172. package/components/global/get-event-key.d.ts +2 -0
  173. package/components/global/get-event-key.js +88 -100
  174. package/components/global/get-uid.d.ts +1 -0
  175. package/components/global/get-uid.js +8 -12
  176. package/components/global/inject-styles.d.ts +3 -0
  177. package/components/global/inject-styles.js +7 -9
  178. package/components/global/linear-function.d.ts +6 -0
  179. package/components/global/linear-function.js +9 -12
  180. package/components/global/listeners.d.ts +8 -0
  181. package/components/global/listeners.js +22 -33
  182. package/components/global/memoize.d.ts +1 -0
  183. package/components/global/memoize.js +13 -12
  184. package/components/global/normalize-indent.d.ts +1 -0
  185. package/components/global/normalize-indent.js +26 -30
  186. package/components/global/promise-with-timeout.d.ts +4 -0
  187. package/components/global/promise-with-timeout.js +5 -7
  188. package/components/global/prop-types.d.ts +4 -0
  189. package/components/global/prop-types.js +4 -0
  190. package/components/global/radial-gradient-mask.d.ts +9 -0
  191. package/components/global/radial-gradient-mask.js +20 -24
  192. package/components/global/react-dom-renderer.d.ts +16 -0
  193. package/components/global/react-dom-renderer.jsx +25 -0
  194. package/components/global/rerender-hoc.d.ts +45 -0
  195. package/components/global/rerender-hoc.js +18 -27
  196. package/components/global/schedule-raf.d.ts +1 -0
  197. package/components/global/schedule-raf.js +24 -24
  198. package/components/global/sniffer.d.ts +3 -0
  199. package/components/global/sniffer.js +0 -2
  200. package/components/global/supports-css.d.ts +2 -0
  201. package/components/global/supports-css.js +12 -15
  202. package/components/global/theme.d.ts +26 -0
  203. package/components/global/theme.jsx +39 -0
  204. package/components/global/trivial-template-tag.d.ts +1 -0
  205. package/components/global/trivial-template-tag.js +6 -8
  206. package/components/global/typescript-utils.d.ts +2 -0
  207. package/components/global/typescript-utils.js +2 -0
  208. package/components/global/url.d.ts +57 -0
  209. package/components/global/url.js +58 -84
  210. package/components/global/variables.d.ts +88 -0
  211. package/components/global/variables.js +1 -0
  212. package/components/global/variables_dark.d.ts +3 -0
  213. package/components/global/variables_dark.js +52 -54
  214. package/components/grid/col.d.ts +31 -0
  215. package/components/grid/col.jsx +49 -0
  216. package/components/grid/grid.d.ts +14 -0
  217. package/components/grid/grid.jsx +22 -0
  218. package/components/grid/row.d.ts +40 -0
  219. package/components/grid/row.jsx +51 -0
  220. package/components/group/group.d.ts +12 -0
  221. package/components/group/group.jsx +20 -0
  222. package/components/group-ng/group.examples.js +2 -2
  223. package/components/header/header.d.ts +96 -0
  224. package/components/header/header.jsx +40 -0
  225. package/components/header/logo.d.ts +14 -0
  226. package/components/header/logo.jsx +22 -0
  227. package/components/header/profile.d.ts +73 -0
  228. package/components/header/profile.jsx +115 -0
  229. package/components/header/services-link.d.ts +25 -0
  230. package/components/header/services-link.jsx +28 -0
  231. package/components/header/services.d.ts +28 -0
  232. package/components/header/services.jsx +56 -0
  233. package/components/header/smart-profile.d.ts +36 -0
  234. package/components/header/smart-profile.jsx +86 -0
  235. package/components/header/smart-services.d.ts +25 -0
  236. package/components/header/smart-services.jsx +49 -0
  237. package/components/header/tray-icon.d.ts +589 -0
  238. package/components/header/tray-icon.jsx +20 -0
  239. package/components/header/tray.d.ts +9 -0
  240. package/components/header/tray.jsx +18 -0
  241. package/components/heading/heading.d.ts +25 -0
  242. package/components/heading/heading.jsx +52 -0
  243. package/components/http/http.d.ts +49 -0
  244. package/components/http/http.js +144 -174
  245. package/components/http/http.mock.d.ts +20 -0
  246. package/components/http/http.mock.js +46 -56
  247. package/components/hub-source/hub-source.d.ts +42 -0
  248. package/components/hub-source/hub-source.js +89 -105
  249. package/components/hub-source/hub-source__user.d.ts +4 -0
  250. package/components/hub-source/hub-source__user.js +14 -21
  251. package/components/hub-source/hub-source__users-groups.d.ts +24 -0
  252. package/components/hub-source/hub-source__users-groups.js +46 -53
  253. package/components/icon/icon.d.ts +43 -0
  254. package/components/icon/icon.jsx +69 -0
  255. package/components/icon/icon__constants.d.ts +30 -0
  256. package/components/icon/icon__constants.js +25 -24
  257. package/components/icon/icon__svg.d.ts +15 -0
  258. package/components/icon/icon__svg.jsx +58 -0
  259. package/components/icon/index.d.ts +2 -0
  260. package/components/icon/index.js +1 -1
  261. package/components/icon-ng/icon-ng.examples.js +1 -1
  262. package/components/input/input.css +1 -0
  263. package/components/input/input.d.ts +73 -0
  264. package/components/input/input.jsx +165 -0
  265. package/components/input-ng/input-ng.examples.js +1 -1
  266. package/components/input-size/input-size.examples.js +5 -5
  267. package/components/island/adaptive-island-hoc.d.ts +65 -0
  268. package/components/island/adaptive-island-hoc.jsx +28 -0
  269. package/components/island/content.d.ts +12 -0
  270. package/components/island/content.jsx +104 -0
  271. package/components/island/header.d.ts +8 -0
  272. package/components/island/header.jsx +75 -0
  273. package/components/island/island.d.ts +82 -0
  274. package/components/island/island.jsx +31 -0
  275. package/components/island-legacy/content-legacy.d.ts +10 -0
  276. package/components/island-legacy/content-legacy.jsx +17 -0
  277. package/components/island-legacy/header-legacy.d.ts +10 -0
  278. package/components/island-legacy/header-legacy.jsx +19 -0
  279. package/components/island-legacy/island-legacy.d.ts +12 -0
  280. package/components/island-legacy/island-legacy.jsx +19 -0
  281. package/components/island-ng/island-ng.examples.js +1 -1
  282. package/components/link/clickableLink.d.ts +20 -0
  283. package/components/link/clickableLink.jsx +33 -0
  284. package/components/link/link.d.ts +157 -0
  285. package/components/link/link.jsx +74 -0
  286. package/components/link-ng/link-ng.examples.js +1 -1
  287. package/components/list/consts.d.ts +74 -0
  288. package/components/list/consts.js +22 -22
  289. package/components/list/list.d.ts +191 -0
  290. package/components/list/list.jsx +579 -0
  291. package/components/list/list__custom.d.ts +6 -0
  292. package/components/list/list__custom.jsx +52 -0
  293. package/components/list/list__hint.d.ts +15 -0
  294. package/components/list/list__hint.jsx +16 -0
  295. package/components/list/list__item.d.ts +8 -0
  296. package/components/list/list__item.jsx +129 -0
  297. package/components/list/list__link.d.ts +9 -0
  298. package/components/list/list__link.jsx +43 -0
  299. package/components/list/list__separator.d.ts +5 -0
  300. package/components/list/list__separator.jsx +21 -0
  301. package/components/list/list__title.d.ts +5 -0
  302. package/components/list/list__title.jsx +28 -0
  303. package/components/list/list__users-groups-source.d.ts +27 -0
  304. package/components/list/list__users-groups-source.js +63 -78
  305. package/components/loader/loader.d.ts +28 -0
  306. package/components/loader/loader.jsx +44 -0
  307. package/components/loader/loader__core.d.ts +75 -0
  308. package/components/loader/loader__core.js +208 -240
  309. package/components/loader-inline/inject-styles.d.ts +2 -0
  310. package/components/loader-inline/inject-styles.js +10 -21
  311. package/components/loader-inline/loader-inline.d.ts +55 -0
  312. package/components/loader-inline/loader-inline.jsx +35 -0
  313. package/components/loader-inline-ng/loader-inline-ng.examples.js +1 -1
  314. package/components/loader-ng/loader-ng.examples.js +1 -1
  315. package/components/loader-screen/loader-screen.d.ts +17 -0
  316. package/components/loader-screen/loader-screen.jsx +25 -0
  317. package/components/loader-screen-ng/loader-screen-ng.examples.js +1 -1
  318. package/components/login-dialog/login-dialog.d.ts +47 -0
  319. package/components/login-dialog/login-dialog.jsx +84 -0
  320. package/components/login-dialog/service.d.ts +2 -0
  321. package/components/login-dialog/service.jsx +20 -0
  322. package/components/markdown/code.d.ts +16 -0
  323. package/components/markdown/code.jsx +10 -0
  324. package/components/markdown/heading.d.ts +15 -0
  325. package/components/markdown/{heading.js → heading.jsx} +3 -7
  326. package/components/markdown/link.d.ts +16 -0
  327. package/components/markdown/link.jsx +10 -0
  328. package/components/markdown/markdown.d.ts +15 -0
  329. package/components/markdown/markdown.jsx +41 -0
  330. package/components/message/message.d.ts +56 -0
  331. package/components/message/message.jsx +106 -0
  332. package/components/old-browsers-message/old-browsers-message.d.ts +2 -0
  333. package/components/old-browsers-message/old-browsers-message.js +57 -73
  334. package/components/old-browsers-message/old-browsers-message__stop.d.ts +1 -0
  335. package/components/old-browsers-message/old-browsers-message__stop.js +1 -1
  336. package/components/old-browsers-message/white-list.d.ts +2 -0
  337. package/components/old-browsers-message/white-list.js +9 -16
  338. package/components/pager/pager.d.ts +83 -0
  339. package/components/pager/pager.jsx +236 -0
  340. package/components/pager-ng/pager-ng.examples.js +1 -1
  341. package/components/palette/palette.examples.js +1 -1
  342. package/components/panel/panel.d.ts +12 -0
  343. package/components/panel/panel.jsx +20 -0
  344. package/components/permissions/permissions.d.ts +111 -0
  345. package/components/permissions/permissions.js +144 -160
  346. package/components/permissions/permissions__cache.d.ts +93 -0
  347. package/components/permissions/permissions__cache.js +200 -231
  348. package/components/permissions-ng/permissions-ng.examples.js +2 -2
  349. package/components/place-under-ng/place-under-ng.examples.js +2 -2
  350. package/components/popup/popup.consts.d.ts +37 -0
  351. package/components/popup/popup.consts.js +36 -36
  352. package/components/popup/popup.d.ts +141 -0
  353. package/components/popup/popup.jsx +311 -0
  354. package/components/popup/popup.target.d.ts +6 -0
  355. package/components/popup/popup.target.jsx +15 -0
  356. package/components/popup/position.d.ts +30 -0
  357. package/components/popup/position.js +172 -225
  358. package/components/popup-menu/popup-menu.d.ts +59 -0
  359. package/components/popup-menu/popup-menu.jsx +41 -0
  360. package/components/progress-bar/progress-bar.d.ts +62 -0
  361. package/components/progress-bar/progress-bar.jsx +75 -0
  362. package/components/progress-bar-ng/progress-bar-ng.examples.js +1 -1
  363. package/components/promised-click-ng/promised-click-ng.examples.js +2 -2
  364. package/components/query-assist/query-assist.d.ts +332 -0
  365. package/components/query-assist/query-assist.jsx +799 -0
  366. package/components/query-assist/query-assist__suggestions.d.ts +29 -0
  367. package/components/query-assist/query-assist__suggestions.jsx +60 -0
  368. package/components/query-assist-ng/query-assist-ng.examples.js +2 -2
  369. package/components/radio/radio.d.ts +18 -0
  370. package/components/radio/radio.jsx +27 -0
  371. package/components/radio/radio__item.d.ts +28 -0
  372. package/components/radio/radio__item.jsx +41 -0
  373. package/components/radio-ng/radio-ng.examples.js +1 -1
  374. package/components/save-field-ng/save-field-ng.examples.js +2 -2
  375. package/components/select/select.d.ts +291 -0
  376. package/components/select/select.jsx +922 -0
  377. package/components/select/select__filter.d.ts +20 -0
  378. package/components/select/select__filter.jsx +47 -0
  379. package/components/select/select__popup.d.ts +123 -0
  380. package/components/select/select__popup.jsx +383 -0
  381. package/components/select-ng/select-ng.examples.js +3 -3
  382. package/components/shortcuts/core.d.ts +74 -0
  383. package/components/shortcuts/core.js +185 -226
  384. package/components/shortcuts/shortcut-title.d.ts +1 -0
  385. package/components/shortcuts/shortcut-title.js +43 -49
  386. package/components/shortcuts/shortcuts-hoc.d.ts +69 -0
  387. package/components/shortcuts/shortcuts-hoc.jsx +19 -0
  388. package/components/shortcuts/shortcuts.d.ts +28 -0
  389. package/components/shortcuts/shortcuts.js +39 -48
  390. package/components/shortcuts-hint-ng/shortcuts-hint-ng.examples.js +1 -1
  391. package/components/sidebar-ng/sidebar-ng.examples.js +3 -3
  392. package/components/storage/storage.d.ts +18 -0
  393. package/components/storage/storage.js +6 -9
  394. package/components/storage/storage__fallback.d.ts +79 -0
  395. package/components/storage/storage__fallback.js +160 -178
  396. package/components/storage/storage__local.d.ts +38 -0
  397. package/components/storage/storage__local.js +108 -104
  398. package/components/tab-trap/tab-trap.d.ts +43 -0
  399. package/components/tab-trap/tab-trap.jsx +125 -0
  400. package/components/table/cell.d.ts +13 -0
  401. package/components/table/cell.jsx +16 -0
  402. package/components/table/disable-hover-hoc.d.ts +68 -0
  403. package/components/table/disable-hover-hoc.jsx +32 -0
  404. package/components/table/header-cell.d.ts +43 -0
  405. package/components/table/header-cell.jsx +56 -0
  406. package/components/table/header.d.ts +60 -0
  407. package/components/table/header.jsx +111 -0
  408. package/components/table/multitable.d.ts +25 -0
  409. package/components/table/multitable.jsx +81 -0
  410. package/components/table/row-with-focus-sensor.d.ts +18 -0
  411. package/components/table/row-with-focus-sensor.jsx +25 -0
  412. package/components/table/row.d.ts +56 -0
  413. package/components/table/row.jsx +153 -0
  414. package/components/table/selection-adapter.d.ts +5 -0
  415. package/components/table/selection-adapter.js +8 -8
  416. package/components/table/selection-shortcuts-hoc.d.ts +17 -0
  417. package/components/table/selection-shortcuts-hoc.jsx +146 -0
  418. package/components/table/selection.d.ts +47 -0
  419. package/components/table/selection.js +148 -183
  420. package/components/table/smart-table.d.ts +60 -0
  421. package/components/table/smart-table.jsx +36 -0
  422. package/components/table/table.d.ts +160 -0
  423. package/components/table/table.jsx +229 -0
  424. package/components/table-legacy-ng/table-legacy-ng.examples.js +4 -4
  425. package/components/table-ng/table-ng.examples.js +4 -4
  426. package/components/tabs/collapsible-more.d.ts +29 -0
  427. package/components/tabs/collapsible-more.jsx +97 -0
  428. package/components/tabs/collapsible-tab.d.ts +16 -0
  429. package/components/tabs/collapsible-tab.jsx +34 -0
  430. package/components/tabs/collapsible-tabs.d.ts +43 -0
  431. package/components/tabs/collapsible-tabs.jsx +196 -0
  432. package/components/tabs/custom-item.d.ts +9 -0
  433. package/components/tabs/custom-item.jsx +5 -0
  434. package/components/tabs/dumb-tabs.d.ts +136 -0
  435. package/components/tabs/dumb-tabs.jsx +59 -0
  436. package/components/tabs/smart-tabs.d.ts +20 -0
  437. package/components/tabs/smart-tabs.jsx +19 -0
  438. package/components/tabs/tab-link.d.ts +18 -0
  439. package/components/tabs/{tab-link.js → tab-link.jsx} +12 -22
  440. package/components/tabs/tab.d.ts +25 -0
  441. package/components/tabs/tab.jsx +19 -0
  442. package/components/tabs/tabs.d.ts +7 -0
  443. package/components/tabs/tabs.js +4 -5
  444. package/components/tabs-ng/tabs-ng.examples.js +1 -1
  445. package/components/tag/tag.d.ts +63 -0
  446. package/components/tag/tag.jsx +129 -0
  447. package/components/tags-input/tags-input.d.ts +154 -0
  448. package/components/tags-input/tags-input.jsx +265 -0
  449. package/components/tags-input-ng/tags-input-ng.examples.js +1 -1
  450. package/components/tags-list/tags-list.d.ts +46 -0
  451. package/components/tags-list/tags-list.jsx +45 -0
  452. package/components/template-ng/template-ng.examples.js +1 -1
  453. package/components/text/text.d.ts +17 -0
  454. package/components/text/text.jsx +21 -0
  455. package/components/title-ng/title-ng.examples.js +1 -1
  456. package/components/toggle/toggle.d.ts +119 -0
  457. package/components/toggle/toggle.jsx +46 -0
  458. package/components/toggle-ng/toggle-ng.examples.js +1 -1
  459. package/components/tooltip/tooltip.d.ts +64 -0
  460. package/components/tooltip/tooltip.jsx +125 -0
  461. package/components/tooltip-ng/tooltip-ng.examples.js +2 -2
  462. package/components/user-agreement/service.d.ts +161 -0
  463. package/components/user-agreement/service.jsx +238 -0
  464. package/components/user-agreement/toolbox.eula.d.ts +2 -0
  465. package/components/user-agreement/user-agreement.d.ts +69 -0
  466. package/components/user-agreement/user-agreement.jsx +81 -0
  467. package/components/user-card/card.d.ts +52 -0
  468. package/components/user-card/card.jsx +62 -0
  469. package/components/user-card/smart-user-card-tooltip.d.ts +20 -0
  470. package/components/user-card/smart-user-card-tooltip.jsx +47 -0
  471. package/components/user-card/tooltip.d.ts +31 -0
  472. package/components/user-card/tooltip.jsx +37 -0
  473. package/components/user-card/user-card.d.ts +11 -0
  474. package/components/user-card/user-card.js +3 -5
  475. package/components/user-card-ng/user-card-ng.examples.js +4 -4
  476. package/dist/_helpers/anchor.js +2 -2
  477. package/dist/_helpers/dialog__body-scroll-preventer.js +1 -1
  478. package/dist/_helpers/footer.js +2 -2
  479. package/dist/_helpers/inject-styles.js +1 -1
  480. package/dist/_helpers/input.js +1 -1
  481. package/dist/_helpers/query-assist__suggestions.js +2 -2
  482. package/dist/_helpers/select__filter.js +11 -9
  483. package/dist/_helpers/sidebar.js +6 -3
  484. package/dist/_helpers/title.js +13 -13
  485. package/dist/alert/alert.d.ts +110 -0
  486. package/dist/alert/alert.js +40 -36
  487. package/dist/alert/container.d.ts +15 -0
  488. package/dist/alert/container.js +5 -7
  489. package/dist/alert-service/alert-service.d.ts +34 -0
  490. package/dist/analytics/analytics.d.ts +24 -0
  491. package/dist/analytics/analytics.js +10 -15
  492. package/dist/analytics/analytics__custom-plugin.d.ts +39 -0
  493. package/dist/analytics/analytics__custom-plugin.js +30 -9
  494. package/dist/analytics/analytics__fus-plugin.d.ts +62 -0
  495. package/dist/analytics/analytics__fus-plugin.js +23 -6
  496. package/dist/analytics/analytics__ga-plugin.d.ts +17 -0
  497. package/dist/analytics/analytics__ga-plugin.js +12 -6
  498. package/dist/analytics/analytics__plugin-utils.d.ts +15 -0
  499. package/dist/analytics/analytics__plugin-utils.js +58 -59
  500. package/dist/analytics-ng/analytics-ng.js +1 -0
  501. package/dist/auth/auth.d.ts +3 -0
  502. package/dist/auth/auth__core.d.ts +233 -0
  503. package/dist/auth/auth__core.js +205 -116
  504. package/dist/auth/background-flow.d.ts +31 -0
  505. package/dist/auth/background-flow.js +9 -1
  506. package/dist/auth/down-notification.d.ts +15 -0
  507. package/dist/auth/iframe-flow.d.ts +20 -0
  508. package/dist/auth/iframe-flow.js +19 -5
  509. package/dist/auth/landing-entry.d.ts +3 -0
  510. package/dist/auth/landing.d.ts +2 -0
  511. package/dist/auth/landing.js +13 -7
  512. package/dist/auth/request-builder.d.ts +47 -0
  513. package/dist/auth/request-builder.js +7 -1
  514. package/dist/auth/response-parser.d.ts +70 -0
  515. package/dist/auth/response-parser.js +25 -13
  516. package/dist/auth/storage.d.ts +112 -0
  517. package/dist/auth/storage.js +41 -10
  518. package/dist/auth/token-validator.d.ts +93 -0
  519. package/dist/auth/token-validator.js +32 -12
  520. package/dist/auth/window-flow.d.ts +26 -0
  521. package/dist/auth/window-flow.js +24 -11
  522. package/dist/auth-dialog/auth-dialog.d.ts +49 -0
  523. package/dist/auth-dialog/auth-dialog.js +4 -8
  524. package/dist/auth-dialog-service/auth-dialog-service.d.ts +5 -0
  525. package/dist/avatar/avatar-example-datauri.d.ts +1 -0
  526. package/dist/avatar/avatar.d.ts +51 -0
  527. package/dist/avatar/avatar.js +13 -10
  528. package/dist/avatar/fallback-avatar.d.ts +17 -0
  529. package/dist/badge/badge.d.ts +24 -0
  530. package/dist/button/button.d.ts +68 -0
  531. package/dist/button/button.js +13 -12
  532. package/dist/button/button__classes.d.ts +2 -0
  533. package/dist/button-group/button-group.d.ts +14 -0
  534. package/dist/button-group/caption.d.ts +8 -0
  535. package/dist/button-set/button-set.d.ts +12 -0
  536. package/dist/button-toolbar/button-toolbar.d.ts +12 -0
  537. package/dist/caret/caret.d.ts +66 -0
  538. package/dist/caret/caret.js +35 -19
  539. package/dist/checkbox/checkbox.d.ts +41 -0
  540. package/dist/checkbox/checkbox.js +6 -0
  541. package/dist/code/code.d.ts +43 -0
  542. package/dist/code/code.js +12 -8
  543. package/dist/confirm/confirm.d.ts +48 -0
  544. package/dist/confirm/confirm.js +4 -4
  545. package/dist/confirm-service/confirm-service.d.ts +15 -0
  546. package/dist/content-layout/content-layout.d.ts +26 -0
  547. package/dist/content-layout/content-layout.js +4 -2
  548. package/dist/content-layout/sidebar.d.ts +31 -0
  549. package/dist/contenteditable/contenteditable.d.ts +47 -0
  550. package/dist/contenteditable/contenteditable.js +6 -4
  551. package/dist/data-list/data-list.d.ts +89 -0
  552. package/dist/data-list/data-list.js +52 -23
  553. package/dist/data-list/data-list.mock.d.ts +16 -0
  554. package/dist/data-list/data-list.mock.js +2 -2
  555. package/dist/data-list/item.d.ts +50 -0
  556. package/dist/data-list/item.js +34 -28
  557. package/dist/data-list/selection.d.ts +16 -0
  558. package/dist/data-list/selection.js +13 -0
  559. package/dist/data-list/title.d.ts +26 -0
  560. package/dist/data-list/title.js +1 -0
  561. package/dist/data-list-ng/data-list-ng.js +4 -2
  562. package/dist/date-picker/consts.d.ts +99 -0
  563. package/dist/date-picker/consts.js +2 -21
  564. package/dist/date-picker/date-input.d.ts +57 -0
  565. package/dist/date-picker/date-input.js +7 -3
  566. package/dist/date-picker/date-picker.d.ts +70 -0
  567. package/dist/date-picker/date-picker.js +38 -38
  568. package/dist/date-picker/date-popup.d.ts +56 -0
  569. package/dist/date-picker/date-popup.js +43 -26
  570. package/dist/date-picker/day.d.ts +30 -0
  571. package/dist/date-picker/day.js +8 -4
  572. package/dist/date-picker/formats.d.ts +2 -0
  573. package/dist/date-picker/month-names.d.ts +13 -0
  574. package/dist/date-picker/month-names.js +6 -5
  575. package/dist/date-picker/month-slider.d.ts +29 -0
  576. package/dist/date-picker/month-slider.js +2 -2
  577. package/dist/date-picker/month.d.ts +14 -0
  578. package/dist/date-picker/months.d.ts +11 -0
  579. package/dist/date-picker/months.js +3 -3
  580. package/dist/date-picker/weekdays.d.ts +13 -0
  581. package/dist/date-picker/weekdays.js +1 -1
  582. package/dist/date-picker/years.d.ts +21 -0
  583. package/dist/date-picker/years.js +8 -6
  584. package/dist/dialog/dialog.d.ts +73 -0
  585. package/dist/dialog/dialog.js +4 -2
  586. package/dist/dialog/dialog__body-scroll-preventer.d.ts +9 -0
  587. package/dist/dropdown/anchor.d.ts +11 -0
  588. package/dist/dropdown/dropdown.d.ts +77 -0
  589. package/dist/dropdown/dropdown.js +13 -6
  590. package/dist/dropdown-menu/dropdown-menu.d.ts +26 -0
  591. package/dist/dropdown-menu/dropdown-menu.js +8 -5
  592. package/dist/error-bubble/error-bubble.d.ts +18 -0
  593. package/dist/error-bubble/error-bubble.js +3 -1
  594. package/dist/error-message/error-message.d.ts +25 -0
  595. package/dist/footer/footer.d.ts +28 -0
  596. package/dist/global/compose.d.ts +7 -0
  597. package/dist/global/compose.js +2 -2
  598. package/dist/global/composeRefs.d.ts +3 -0
  599. package/dist/global/conic-gradient.d.ts +796 -0
  600. package/dist/global/conic-gradient.js +1 -1
  601. package/dist/global/create-stateful-context.d.ts +27 -0
  602. package/dist/global/data-tests.d.ts +3 -0
  603. package/dist/global/data-tests.js +5 -1
  604. package/dist/global/dom.d.ts +37 -0
  605. package/dist/global/dom.js +4 -4
  606. package/dist/global/focus-sensor-hoc.d.ts +18 -0
  607. package/dist/global/focus-sensor-hoc.js +58 -20
  608. package/dist/global/fuzzy-highlight.d.ts +5 -0
  609. package/dist/global/get-event-key.d.ts +2 -0
  610. package/dist/global/get-event-key.js +0 -1
  611. package/dist/global/get-uid.d.ts +1 -0
  612. package/dist/global/inject-styles.d.ts +3 -0
  613. package/dist/global/linear-function.d.ts +6 -0
  614. package/dist/global/listeners.d.ts +8 -0
  615. package/dist/global/listeners.js +10 -2
  616. package/dist/global/memoize.d.ts +1 -0
  617. package/dist/global/memoize.js +7 -6
  618. package/dist/global/normalize-indent.d.ts +1 -0
  619. package/dist/global/normalize-indent.js +5 -1
  620. package/dist/global/promise-with-timeout.d.ts +4 -0
  621. package/dist/global/prop-types.d.ts +4 -0
  622. package/dist/global/prop-types.js +7 -0
  623. package/dist/global/radial-gradient-mask.d.ts +9 -0
  624. package/dist/global/react-dom-renderer.d.ts +16 -0
  625. package/dist/global/react-dom-renderer.js +2 -0
  626. package/dist/global/rerender-hoc.d.ts +45 -0
  627. package/dist/global/rerender-hoc.js +5 -14
  628. package/dist/global/schedule-raf.d.ts +1 -0
  629. package/dist/global/schedule-raf.js +3 -1
  630. package/dist/global/sniffer.d.ts +3 -0
  631. package/dist/global/supports-css.d.ts +2 -0
  632. package/dist/global/theme.d.ts +26 -0
  633. package/dist/global/theme.js +22 -14
  634. package/dist/global/trivial-template-tag.d.ts +1 -0
  635. package/dist/global/typescript-utils.d.ts +2 -0
  636. package/dist/global/typescript-utils.js +4 -0
  637. package/dist/global/url.d.ts +57 -0
  638. package/dist/global/url.js +1 -1
  639. package/dist/global/variables.d.ts +88 -0
  640. package/dist/global/variables.js +1 -0
  641. package/dist/global/variables_dark.d.ts +3 -0
  642. package/dist/global/variables_dark.js +2 -2
  643. package/dist/grid/col.d.ts +31 -0
  644. package/dist/grid/col.js +7 -1
  645. package/dist/grid/grid.d.ts +14 -0
  646. package/dist/grid/row.d.ts +40 -0
  647. package/dist/grid/row.js +1 -4
  648. package/dist/group/group.d.ts +12 -0
  649. package/dist/header/header.d.ts +96 -0
  650. package/dist/header/header.js +3 -4
  651. package/dist/header/logo.d.ts +14 -0
  652. package/dist/header/profile.d.ts +73 -0
  653. package/dist/header/profile.js +4 -4
  654. package/dist/header/services-link.d.ts +25 -0
  655. package/dist/header/services.d.ts +28 -0
  656. package/dist/header/services.js +1 -0
  657. package/dist/header/smart-profile.d.ts +36 -0
  658. package/dist/header/smart-profile.js +1 -0
  659. package/dist/header/smart-services.d.ts +25 -0
  660. package/dist/header/smart-services.js +12 -3
  661. package/dist/header/tray-icon.d.ts +589 -0
  662. package/dist/header/tray-icon.js +3 -6
  663. package/dist/header/tray.d.ts +9 -0
  664. package/dist/heading/heading.d.ts +25 -0
  665. package/dist/heading/heading.js +14 -13
  666. package/dist/http/http.d.ts +49 -0
  667. package/dist/http/http.js +47 -12
  668. package/dist/http/http.mock.d.ts +20 -0
  669. package/dist/http/http.mock.js +12 -5
  670. package/dist/hub-source/hub-source.d.ts +42 -0
  671. package/dist/hub-source/hub-source.js +14 -1
  672. package/dist/hub-source/hub-source__user.d.ts +4 -0
  673. package/dist/hub-source/hub-source__user.js +4 -2
  674. package/dist/hub-source/hub-source__users-groups.d.ts +24 -0
  675. package/dist/hub-source/hub-source__users-groups.js +9 -1
  676. package/dist/icon/icon.d.ts +43 -0
  677. package/dist/icon/icon.js +2 -2
  678. package/dist/icon/icon__constants.d.ts +30 -0
  679. package/dist/icon/icon__constants.js +28 -23
  680. package/dist/icon/icon__svg.d.ts +15 -0
  681. package/dist/icon/index.d.ts +2 -0
  682. package/dist/icon/index.js +1 -1
  683. package/dist/input/input.d.ts +73 -0
  684. package/dist/input/input.js +75 -60
  685. package/dist/island/adaptive-island-hoc.d.ts +65 -0
  686. package/dist/island/adaptive-island-hoc.js +2 -2
  687. package/dist/island/content.d.ts +12 -0
  688. package/dist/island/content.js +11 -2
  689. package/dist/island/header.d.ts +8 -0
  690. package/dist/island/header.js +11 -6
  691. package/dist/island/island.d.ts +82 -0
  692. package/dist/island-legacy/content-legacy.d.ts +10 -0
  693. package/dist/island-legacy/header-legacy.d.ts +10 -0
  694. package/dist/island-legacy/island-legacy.d.ts +12 -0
  695. package/dist/link/clickableLink.d.ts +20 -0
  696. package/dist/link/link.d.ts +157 -0
  697. package/dist/link/link.js +9 -5
  698. package/dist/list/consts.d.ts +74 -0
  699. package/dist/list/consts.js +26 -20
  700. package/dist/list/list.d.ts +191 -0
  701. package/dist/list/list.js +32 -26
  702. package/dist/list/list__custom.d.ts +6 -0
  703. package/dist/list/list__custom.js +8 -13
  704. package/dist/list/list__hint.d.ts +15 -0
  705. package/dist/list/list__item.d.ts +8 -0
  706. package/dist/list/list__item.js +3 -4
  707. package/dist/list/list__link.d.ts +9 -0
  708. package/dist/list/list__link.js +5 -6
  709. package/dist/list/list__separator.d.ts +5 -0
  710. package/dist/list/list__separator.js +2 -4
  711. package/dist/list/list__title.d.ts +5 -0
  712. package/dist/list/list__title.js +2 -4
  713. package/dist/list/list__users-groups-source.d.ts +27 -0
  714. package/dist/list/list__users-groups-source.js +22 -12
  715. package/dist/loader/loader.d.ts +28 -0
  716. package/dist/loader/loader.js +5 -1
  717. package/dist/loader/loader__core.d.ts +75 -0
  718. package/dist/loader/loader__core.js +89 -47
  719. package/dist/loader-inline/inject-styles.d.ts +2 -0
  720. package/dist/loader-inline/loader-inline.d.ts +55 -0
  721. package/dist/loader-inline/loader-inline.js +2 -2
  722. package/dist/loader-screen/loader-screen.d.ts +17 -0
  723. package/dist/login-dialog/login-dialog.d.ts +47 -0
  724. package/dist/login-dialog/login-dialog.js +3 -1
  725. package/dist/login-dialog/service.d.ts +2 -0
  726. package/dist/login-dialog/service.js +5 -1
  727. package/dist/markdown/code.d.ts +16 -0
  728. package/dist/markdown/heading.d.ts +15 -0
  729. package/dist/markdown/link.d.ts +16 -0
  730. package/dist/markdown/link.js +2 -2
  731. package/dist/markdown/markdown.d.ts +15 -0
  732. package/dist/markdown/markdown.js +3 -5
  733. package/dist/message/message.d.ts +56 -0
  734. package/dist/message/message.js +24 -23
  735. package/dist/old-browsers-message/old-browsers-message.d.ts +2 -0
  736. package/dist/old-browsers-message/old-browsers-message.js +10 -6
  737. package/dist/old-browsers-message/old-browsers-message__stop.d.ts +1 -0
  738. package/dist/old-browsers-message/white-list.d.ts +2 -0
  739. package/dist/old-browsers-message/white-list.js +3 -3
  740. package/dist/pager/pager.d.ts +83 -0
  741. package/dist/pager/pager.js +40 -29
  742. package/dist/pager-ng/pager-ng.js +3 -0
  743. package/dist/panel/panel.d.ts +12 -0
  744. package/dist/permissions/permissions.d.ts +111 -0
  745. package/dist/permissions/permissions.js +23 -4
  746. package/dist/permissions/permissions__cache.d.ts +93 -0
  747. package/dist/permissions/permissions__cache.js +10 -3
  748. package/dist/popup/popup.consts.d.ts +37 -0
  749. package/dist/popup/popup.consts.js +43 -29
  750. package/dist/popup/popup.d.ts +141 -0
  751. package/dist/popup/popup.js +83 -53
  752. package/dist/popup/popup.target.d.ts +6 -0
  753. package/dist/popup/popup.target.js +3 -4
  754. package/dist/popup/position.d.ts +30 -0
  755. package/dist/popup/position.js +11 -6
  756. package/dist/popup-menu/popup-menu.d.ts +59 -0
  757. package/dist/popup-menu/popup-menu.js +7 -6
  758. package/dist/progress-bar/progress-bar.d.ts +62 -0
  759. package/dist/progress-bar/progress-bar.js +5 -1
  760. package/dist/query-assist/query-assist.d.ts +332 -0
  761. package/dist/query-assist/query-assist.js +134 -70
  762. package/dist/query-assist/query-assist__suggestions.d.ts +29 -0
  763. package/dist/radio/radio.d.ts +18 -0
  764. package/dist/radio/radio__item.d.ts +28 -0
  765. package/dist/radio/radio__item.js +5 -2
  766. package/dist/select/select.d.ts +291 -0
  767. package/dist/select/select.js +179 -175
  768. package/dist/select/select__filter.d.ts +20 -0
  769. package/dist/select/select__filter.js +2 -0
  770. package/dist/select/select__popup.d.ts +123 -0
  771. package/dist/select/select__popup.js +97 -72
  772. package/dist/select-ng/select-ng.js +3 -0
  773. package/dist/select-ng/select-ng__lazy.js +3 -0
  774. package/dist/shortcuts/core.d.ts +74 -0
  775. package/dist/shortcuts/core.js +16 -10
  776. package/dist/shortcuts/shortcut-title.d.ts +1 -0
  777. package/dist/shortcuts/shortcuts-hoc.d.ts +69 -0
  778. package/dist/shortcuts/shortcuts.d.ts +28 -0
  779. package/dist/storage/storage.d.ts +18 -0
  780. package/dist/storage/storage.js +1 -1
  781. package/dist/storage/storage__fallback.d.ts +79 -0
  782. package/dist/storage/storage__fallback.js +31 -19
  783. package/dist/storage/storage__local.d.ts +38 -0
  784. package/dist/storage/storage__local.js +34 -19
  785. package/dist/style.css +1 -1
  786. package/dist/tab-trap/tab-trap.d.ts +43 -0
  787. package/dist/tab-trap/tab-trap.js +16 -4
  788. package/dist/table/cell.d.ts +13 -0
  789. package/dist/table/disable-hover-hoc.d.ts +68 -0
  790. package/dist/table/disable-hover-hoc.js +1 -1
  791. package/dist/table/header-cell.d.ts +43 -0
  792. package/dist/table/header-cell.js +4 -0
  793. package/dist/table/header.d.ts +60 -0
  794. package/dist/table/header.js +9 -5
  795. package/dist/table/multitable.d.ts +25 -0
  796. package/dist/table/multitable.js +21 -7
  797. package/dist/table/row-with-focus-sensor.d.ts +18 -0
  798. package/dist/table/row-with-focus-sensor.js +7 -4
  799. package/dist/table/row.d.ts +56 -0
  800. package/dist/table/row.js +31 -29
  801. package/dist/table/selection-adapter.d.ts +5 -0
  802. package/dist/table/selection-shortcuts-hoc.d.ts +17 -0
  803. package/dist/table/selection-shortcuts-hoc.js +44 -19
  804. package/dist/table/selection.d.ts +47 -0
  805. package/dist/table/selection.js +18 -1
  806. package/dist/table/smart-table.d.ts +60 -0
  807. package/dist/table/smart-table.js +5 -3
  808. package/dist/table/table.d.ts +160 -0
  809. package/dist/table/table.js +58 -38
  810. package/dist/table-legacy-ng/table-legacy-ng.js +3 -0
  811. package/dist/table-legacy-ng/table-legacy-ng__pager.js +3 -0
  812. package/dist/table-ng/smart-table-ng.js +1 -0
  813. package/dist/table-ng/table-ng.js +3 -2
  814. package/dist/tabs/collapsible-more.d.ts +29 -0
  815. package/dist/tabs/collapsible-more.js +1 -0
  816. package/dist/tabs/collapsible-tab.d.ts +16 -0
  817. package/dist/tabs/collapsible-tab.js +6 -8
  818. package/dist/tabs/collapsible-tabs.d.ts +43 -0
  819. package/dist/tabs/collapsible-tabs.js +57 -106
  820. package/dist/tabs/custom-item.d.ts +9 -0
  821. package/dist/tabs/dumb-tabs.d.ts +136 -0
  822. package/dist/tabs/dumb-tabs.js +3 -2
  823. package/dist/tabs/smart-tabs.d.ts +20 -0
  824. package/dist/tabs/smart-tabs.js +3 -2
  825. package/dist/tabs/tab-link.d.ts +18 -0
  826. package/dist/tabs/tab.d.ts +25 -0
  827. package/dist/tabs/tabs.d.ts +7 -0
  828. package/dist/tabs/tabs.js +1 -0
  829. package/dist/tag/tag.d.ts +63 -0
  830. package/dist/tag/tag.js +7 -3
  831. package/dist/tags-input/tags-input.d.ts +154 -0
  832. package/dist/tags-input/tags-input.js +63 -30
  833. package/dist/tags-input-ng/tags-input-ng.js +3 -0
  834. package/dist/tags-list/tags-list.d.ts +46 -0
  835. package/dist/tags-list/tags-list.js +1 -7
  836. package/dist/text/text.d.ts +17 -0
  837. package/dist/toggle/toggle.d.ts +119 -0
  838. package/dist/toggle/toggle.js +3 -5
  839. package/dist/toggle-ng/toggle-ng.js +2 -2
  840. package/dist/tooltip/tooltip.d.ts +64 -0
  841. package/dist/tooltip/tooltip.js +13 -4
  842. package/dist/user-agreement/service.d.ts +161 -0
  843. package/dist/user-agreement/service.js +20 -13
  844. package/dist/user-agreement/toolbox.eula.d.ts +2 -0
  845. package/dist/user-agreement/user-agreement.d.ts +69 -0
  846. package/dist/user-agreement/user-agreement.js +6 -7
  847. package/dist/user-card/card.d.ts +52 -0
  848. package/dist/user-card/smart-user-card-tooltip.d.ts +20 -0
  849. package/dist/user-card/smart-user-card-tooltip.js +3 -2
  850. package/dist/user-card/tooltip.d.ts +31 -0
  851. package/dist/user-card/tooltip.js +5 -1
  852. package/dist/user-card/user-card.d.ts +11 -0
  853. package/dist/user-card/user-card.js +1 -0
  854. package/dist/user-card-ng/user-card-ng.js +1 -0
  855. package/package.json +45 -21
  856. package/typings.d.ts +97 -0
  857. package/webpack.config.js +4 -1
  858. package/components/alert/alert.examples.js +0 -143
  859. package/components/alert/alert.js +0 -242
  860. package/components/alert/alert.test.js +0 -61
  861. package/components/alert/container.js +0 -47
  862. package/components/alert/container.test.js +0 -12
  863. package/components/alert-service/alert-service.examples.js +0 -91
  864. package/components/alert-service/alert-service.js +0 -137
  865. package/components/alert-service/alert-service.test.js +0 -88
  866. package/components/analytics/analytics.examples.js +0 -47
  867. package/components/analytics/analytics.test.js +0 -419
  868. package/components/auth/auth.examples.js +0 -122
  869. package/components/auth/auth.test.js +0 -774
  870. package/components/auth/down-notification.js +0 -72
  871. package/components/auth/iframe-flow.js +0 -99
  872. package/components/auth/request-builder.test.js +0 -64
  873. package/components/auth/response-parser.test.js +0 -89
  874. package/components/auth/storage.test.js +0 -178
  875. package/components/auth/token-validator.test.js +0 -199
  876. package/components/auth-dialog/auth-dialog.examples.js +0 -76
  877. package/components/auth-dialog/auth-dialog.js +0 -115
  878. package/components/auth-dialog/auth-dialog.test.js +0 -11
  879. package/components/auth-dialog-service/auth-dialog-service.examples.js +0 -66
  880. package/components/auth-dialog-service/auth-dialog-service.test.js +0 -75
  881. package/components/avatar/avatar.examples.js +0 -46
  882. package/components/avatar/avatar.js +0 -169
  883. package/components/avatar/avatar.test.js +0 -59
  884. package/components/avatar/fallback-avatar.js +0 -136
  885. package/components/badge/badge.examples.js +0 -26
  886. package/components/badge/badge.js +0 -59
  887. package/components/badge/badge.test.js +0 -34
  888. package/components/button/button.examples.js +0 -219
  889. package/components/button/button.js +0 -122
  890. package/components/button/button.test.js +0 -64
  891. package/components/button-group/button-group.examples.js +0 -58
  892. package/components/button-group/button-group.js +0 -30
  893. package/components/button-group/button-group.test.js +0 -10
  894. package/components/button-group/caption.js +0 -23
  895. package/components/button-set/button-set.examples.js +0 -24
  896. package/components/button-set/button-set.js +0 -27
  897. package/components/button-set/button-set.test.js +0 -10
  898. package/components/button-toolbar/button-toolbar.examples.js +0 -31
  899. package/components/button-toolbar/button-toolbar.js +0 -29
  900. package/components/button-toolbar/button-toolbar.test.js +0 -21
  901. package/components/caret/caret.examples.js +0 -39
  902. package/components/caret/caret.test.js +0 -137
  903. package/components/checkbox/checkbox.examples.js +0 -67
  904. package/components/checkbox/checkbox.js +0 -100
  905. package/components/checkbox/checkbox.test.js +0 -78
  906. package/components/code/code.examples.js +0 -92
  907. package/components/code/code.js +0 -118
  908. package/components/code/code.test.js +0 -100
  909. package/components/confirm/confirm.examples.js +0 -93
  910. package/components/confirm/confirm.js +0 -101
  911. package/components/confirm/confirm.test.js +0 -28
  912. package/components/confirm-service/confirm-service.examples.js +0 -61
  913. package/components/confirm-service/confirm-service.js +0 -65
  914. package/components/confirm-service/confirm-service.test.js +0 -59
  915. package/components/content-layout/content-layout.examples.js +0 -188
  916. package/components/content-layout/content-layout.js +0 -64
  917. package/components/content-layout/content-layout.test.js +0 -41
  918. package/components/content-layout/sidebar.js +0 -105
  919. package/components/contenteditable/contenteditable.examples.js +0 -45
  920. package/components/contenteditable/contenteditable.js +0 -66
  921. package/components/contenteditable/contenteditable.test.js +0 -73
  922. package/components/data-list/data-list.examples.js +0 -116
  923. package/components/data-list/data-list.js +0 -170
  924. package/components/data-list/data-list.mock.js +0 -248
  925. package/components/data-list/data-list.test.js +0 -40
  926. package/components/data-list/item.js +0 -214
  927. package/components/data-list/title.js +0 -96
  928. package/components/date-picker/date-input.js +0 -132
  929. package/components/date-picker/date-picker.examples.js +0 -345
  930. package/components/date-picker/date-picker.js +0 -285
  931. package/components/date-picker/date-picker.test.js +0 -89
  932. package/components/date-picker/date-popup.js +0 -441
  933. package/components/date-picker/day.js +0 -121
  934. package/components/date-picker/month-names.js +0 -104
  935. package/components/date-picker/month-slider.js +0 -83
  936. package/components/date-picker/month.js +0 -48
  937. package/components/date-picker/months.js +0 -113
  938. package/components/date-picker/weekdays.js +0 -40
  939. package/components/date-picker/years.js +0 -111
  940. package/components/dialog/dialog.examples.js +0 -209
  941. package/components/dialog/dialog.js +0 -183
  942. package/components/dialog/dialog.test.js +0 -62
  943. package/components/dropdown/anchor.js +0 -32
  944. package/components/dropdown/dropdown.examples.js +0 -151
  945. package/components/dropdown/dropdown.js +0 -185
  946. package/components/dropdown/dropdown.test.js +0 -175
  947. package/components/dropdown-menu/dropdown-menu.examples.js +0 -47
  948. package/components/dropdown-menu/dropdown-menu.js +0 -117
  949. package/components/dropdown-menu/dropdown-menu.test.js +0 -76
  950. package/components/error-bubble/error-bubble.examples.js +0 -96
  951. package/components/error-bubble/error-bubble.js +0 -50
  952. package/components/error-bubble/error-bubble.test.js +0 -41
  953. package/components/error-message/error-message.examples.js +0 -33
  954. package/components/error-message/error-message.js +0 -54
  955. package/components/error-message/error-message.test.js +0 -21
  956. package/components/footer/footer.examples.js +0 -56
  957. package/components/footer/footer.js +0 -138
  958. package/components/footer/footer.test.js +0 -78
  959. package/components/global/create-stateful-context.js +0 -46
  960. package/components/global/data-tests.test.js +0 -18
  961. package/components/global/dom.examples.js +0 -39
  962. package/components/global/dom.test.js +0 -99
  963. package/components/global/focus-sensor-hoc.js +0 -112
  964. package/components/global/fuzzy-highlight.test.js +0 -52
  965. package/components/global/get-uid.test.js +0 -21
  966. package/components/global/listeners.test.js +0 -78
  967. package/components/global/react-dom-renderer.js +0 -34
  968. package/components/global/theme.js +0 -51
  969. package/components/global/url.test.js +0 -138
  970. package/components/global/variables.examples.js +0 -160
  971. package/components/grid/col.js +0 -58
  972. package/components/grid/grid.examples.js +0 -291
  973. package/components/grid/grid.js +0 -33
  974. package/components/grid/grid.test.js +0 -72
  975. package/components/grid/row.js +0 -60
  976. package/components/group/group.examples.js +0 -27
  977. package/components/group/group.js +0 -30
  978. package/components/group/group.test.js +0 -21
  979. package/components/header/header.examples.js +0 -118
  980. package/components/header/header.js +0 -55
  981. package/components/header/header.test.js +0 -21
  982. package/components/header/logo.js +0 -31
  983. package/components/header/profile.js +0 -181
  984. package/components/header/services-link.js +0 -45
  985. package/components/header/services.js +0 -115
  986. package/components/header/smart-profile.js +0 -121
  987. package/components/header/smart-services.js +0 -73
  988. package/components/header/tray-icon.js +0 -33
  989. package/components/header/tray.js +0 -30
  990. package/components/heading/heading.examples.js +0 -64
  991. package/components/heading/heading.js +0 -82
  992. package/components/heading/heading.test.js +0 -29
  993. package/components/http/http.examples.js +0 -34
  994. package/components/http/http.test.js +0 -187
  995. package/components/hub-source/hub-source.test.js +0 -200
  996. package/components/hub-source/hub-source__users-groups.test.js +0 -91
  997. package/components/icon/icon.examples.js +0 -146
  998. package/components/icon/icon.js +0 -97
  999. package/components/icon/icon.test.js +0 -51
  1000. package/components/icon/icon__svg.js +0 -77
  1001. package/components/input/input.examples.js +0 -140
  1002. package/components/input/input.js +0 -228
  1003. package/components/input/input.test.js +0 -40
  1004. package/components/island/adaptive-island-hoc.js +0 -38
  1005. package/components/island/content.js +0 -141
  1006. package/components/island/header.js +0 -102
  1007. package/components/island/island.examples.js +0 -74
  1008. package/components/island/island.js +0 -53
  1009. package/components/island/island.test.js +0 -59
  1010. package/components/island-legacy/content-legacy.js +0 -26
  1011. package/components/island-legacy/header-legacy.js +0 -28
  1012. package/components/island-legacy/island-legacy.examples.js +0 -33
  1013. package/components/island-legacy/island-legacy.js +0 -29
  1014. package/components/island-legacy/island-legacy.test.js +0 -21
  1015. package/components/link/clickableLink.js +0 -48
  1016. package/components/link/link.examples.js +0 -86
  1017. package/components/link/link.js +0 -119
  1018. package/components/link/link.test.js +0 -182
  1019. package/components/list/list.examples.js +0 -271
  1020. package/components/list/list.js +0 -765
  1021. package/components/list/list.test.js +0 -428
  1022. package/components/list/list__custom.js +0 -90
  1023. package/components/list/list__hint.js +0 -24
  1024. package/components/list/list__item.js +0 -233
  1025. package/components/list/list__item.test.js +0 -60
  1026. package/components/list/list__link.js +0 -72
  1027. package/components/list/list__separator.js +0 -30
  1028. package/components/list/list__title.js +0 -44
  1029. package/components/list/list__users-groups-source.test.js +0 -125
  1030. package/components/loader/loader.examples.js +0 -22
  1031. package/components/loader/loader.js +0 -64
  1032. package/components/loader/loader__core.test.js +0 -232
  1033. package/components/loader-inline/loader-inline.examples.js +0 -106
  1034. package/components/loader-inline/loader-inline.js +0 -57
  1035. package/components/loader-inline/loader-inline.test.js +0 -21
  1036. package/components/loader-screen/loader-screen.examples.js +0 -40
  1037. package/components/loader-screen/loader-screen.js +0 -38
  1038. package/components/login-dialog/login-dialog.js +0 -125
  1039. package/components/login-dialog/service.js +0 -24
  1040. package/components/markdown/code.js +0 -20
  1041. package/components/markdown/link.js +0 -14
  1042. package/components/markdown/markdown.examples.js +0 -110
  1043. package/components/markdown/markdown.js +0 -58
  1044. package/components/markdown/markdown.test.js +0 -60
  1045. package/components/message/message.examples.js +0 -78
  1046. package/components/message/message.js +0 -156
  1047. package/components/message/message.test.js +0 -26
  1048. package/components/old-browsers-message/old-browsers-message.examples.js +0 -37
  1049. package/components/pager/pager.examples.js +0 -291
  1050. package/components/pager/pager.js +0 -337
  1051. package/components/pager/pager.test.js +0 -56
  1052. package/components/panel/panel.examples.js +0 -33
  1053. package/components/panel/panel.js +0 -28
  1054. package/components/panel/panel.test.js +0 -20
  1055. package/components/permissions/permissions.test.js +0 -435
  1056. package/components/permissions/permissions__cache.test.js +0 -75
  1057. package/components/popup/popup.examples.js +0 -340
  1058. package/components/popup/popup.js +0 -395
  1059. package/components/popup/popup.target.js +0 -27
  1060. package/components/popup/popup.test.js +0 -242
  1061. package/components/popup/position.test.js +0 -192
  1062. package/components/popup-menu/popup-menu.examples.js +0 -38
  1063. package/components/popup-menu/popup-menu.js +0 -58
  1064. package/components/popup-menu/popup-menu.test.js +0 -29
  1065. package/components/progress-bar/progress-bar.examples.js +0 -56
  1066. package/components/progress-bar/progress-bar.js +0 -103
  1067. package/components/progress-bar/progress-bar.test.js +0 -114
  1068. package/components/query-assist/query-assist.examples.js +0 -305
  1069. package/components/query-assist/query-assist.js +0 -992
  1070. package/components/query-assist/query-assist.test.js +0 -690
  1071. package/components/query-assist/query-assist__suggestions.js +0 -100
  1072. package/components/radio/radio.examples.js +0 -58
  1073. package/components/radio/radio.js +0 -37
  1074. package/components/radio/radio.test.js +0 -90
  1075. package/components/radio/radio__item.js +0 -69
  1076. package/components/radio/radio__item.test.js +0 -98
  1077. package/components/select/select.examples.js +0 -1023
  1078. package/components/select/select.js +0 -1284
  1079. package/components/select/select.test.js +0 -1201
  1080. package/components/select/select__filter.js +0 -70
  1081. package/components/select/select__popup.js +0 -556
  1082. package/components/select/select__popup.test.js +0 -156
  1083. package/components/shortcuts/core.test.js +0 -282
  1084. package/components/shortcuts/shortcuts-hoc.js +0 -33
  1085. package/components/shortcuts/shortcuts-hoc.test.js +0 -53
  1086. package/components/shortcuts/shortcuts.test.js +0 -45
  1087. package/components/storage/storage.examples.js +0 -37
  1088. package/components/storage/storage.test.js +0 -248
  1089. package/components/tab-trap/tab-trap.examples.js +0 -49
  1090. package/components/tab-trap/tab-trap.js +0 -175
  1091. package/components/table/cell.js +0 -26
  1092. package/components/table/disable-hover-hoc.js +0 -44
  1093. package/components/table/header-cell.js +0 -77
  1094. package/components/table/header.js +0 -178
  1095. package/components/table/multitable.js +0 -99
  1096. package/components/table/row-with-focus-sensor.js +0 -39
  1097. package/components/table/row.js +0 -242
  1098. package/components/table/selection-shortcuts-hoc.js +0 -177
  1099. package/components/table/smart-table.js +0 -55
  1100. package/components/table/table.examples.js +0 -346
  1101. package/components/table/table.js +0 -315
  1102. package/components/tabs/collapsible-more.js +0 -183
  1103. package/components/tabs/collapsible-tab.js +0 -90
  1104. package/components/tabs/collapsible-tabs.js +0 -314
  1105. package/components/tabs/custom-item.js +0 -6
  1106. package/components/tabs/dumb-tabs.js +0 -107
  1107. package/components/tabs/smart-tabs.js +0 -32
  1108. package/components/tabs/tab.js +0 -25
  1109. package/components/tabs/tabs.examples.js +0 -275
  1110. package/components/tabs/tabs.test.js +0 -26
  1111. package/components/tag/tag.examples.js +0 -50
  1112. package/components/tag/tag.js +0 -182
  1113. package/components/tag/tag.test.js +0 -21
  1114. package/components/tags-input/tag-input.examples.js +0 -133
  1115. package/components/tags-input/tags-input.js +0 -347
  1116. package/components/tags-input/tags-input.test.js +0 -234
  1117. package/components/tags-list/tags-list.examples.js +0 -41
  1118. package/components/tags-list/tags-list.js +0 -93
  1119. package/components/tags-list/tags-list.test.js +0 -43
  1120. package/components/text/text.examples.js +0 -25
  1121. package/components/text/text.js +0 -29
  1122. package/components/text/text.test.js +0 -25
  1123. package/components/toggle/toggle.examples.js +0 -79
  1124. package/components/toggle/toggle.js +0 -77
  1125. package/components/toggle/toggle.test.js +0 -34
  1126. package/components/tooltip/tooltip.examples.js +0 -118
  1127. package/components/tooltip/tooltip.js +0 -168
  1128. package/components/tooltip/tooltip.test.js +0 -128
  1129. package/components/user-agreement/service.js +0 -292
  1130. package/components/user-agreement/user-agreement.examples.js +0 -112
  1131. package/components/user-agreement/user-agreement.js +0 -124
  1132. package/components/user-card/card.js +0 -98
  1133. package/components/user-card/smart-user-card-tooltip.js +0 -66
  1134. package/components/user-card/tooltip.js +0 -58
  1135. package/components/user-card/user-card.examples.js +0 -88
  1136. package/components/user-card/user-card.test.js +0 -102
  1137. 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
- });