@jetbrains/ring-ui 4.1.6 → 5.0.0-beta.3

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 (1006) 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.js +138 -195
  6. package/components/alert/container.d.ts +15 -0
  7. package/components/alert/container.js +24 -41
  8. package/components/alert-service/alert-service.d.ts +34 -0
  9. package/components/alert-service/alert-service.js +94 -124
  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.js +32 -52
  29. package/components/auth/iframe-flow.d.ts +20 -0
  30. package/components/auth/iframe-flow.js +71 -89
  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.js +44 -99
  48. package/components/auth-dialog-service/auth-dialog-service.d.ts +5 -0
  49. package/components/auth-dialog-service/auth-dialog-service.js +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 +0 -1
  54. package/components/avatar/avatar.d.ts +51 -0
  55. package/components/avatar/avatar.js +86 -157
  56. package/components/avatar/fallback-avatar.d.ts +17 -0
  57. package/components/avatar/fallback-avatar.js +84 -108
  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.js +25 -49
  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.js +58 -107
  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.js +11 -21
  70. package/components/button-group/caption.d.ts +8 -0
  71. package/components/button-group/caption.js +9 -18
  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.js +10 -18
  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.js +10 -21
  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.js +47 -81
  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.js +74 -98
  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.js +39 -81
  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.js +35 -51
  93. package/components/content-layout/content-layout.d.ts +26 -0
  94. package/components/content-layout/content-layout.js +33 -52
  95. package/components/content-layout/sidebar.d.ts +31 -0
  96. package/components/content-layout/sidebar.js +62 -91
  97. package/components/contenteditable/contenteditable.d.ts +47 -0
  98. package/components/contenteditable/contenteditable.js +36 -55
  99. package/components/data-list/data-list.d.ts +89 -0
  100. package/components/data-list/data-list.js +95 -146
  101. package/components/data-list/data-list.mock.d.ts +16 -0
  102. package/components/data-list/data-list.mock.js +166 -207
  103. package/components/data-list/item.d.ts +50 -0
  104. package/components/data-list/item.js +87 -187
  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.js +48 -79
  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.js +87 -122
  114. package/components/date-picker/date-picker.d.ts +70 -0
  115. package/components/date-picker/date-picker.js +180 -260
  116. package/components/date-picker/date-popup.d.ts +56 -0
  117. package/components/date-picker/date-popup.js +308 -405
  118. package/components/date-picker/day.d.ts +30 -0
  119. package/components/date-picker/day.js +71 -104
  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.js +44 -86
  123. package/components/date-picker/month-slider.d.ts +29 -0
  124. package/components/date-picker/month-slider.js +44 -71
  125. package/components/date-picker/month.d.ts +14 -0
  126. package/components/date-picker/month.js +18 -33
  127. package/components/date-picker/months.d.ts +11 -0
  128. package/components/date-picker/months.js +52 -79
  129. package/components/date-picker/weekdays.d.ts +13 -0
  130. package/components/date-picker/weekdays.js +12 -28
  131. package/components/date-picker/years.d.ts +21 -0
  132. package/components/date-picker/years.js +55 -91
  133. package/components/dialog/dialog.d.ts +73 -0
  134. package/components/dialog/dialog.js +100 -158
  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.js +6 -22
  141. package/components/dropdown/dropdown.d.ts +77 -0
  142. package/components/dropdown/dropdown.js +131 -168
  143. package/components/dropdown-menu/dropdown-menu.d.ts +26 -0
  144. package/components/dropdown-menu/dropdown-menu.js +43 -104
  145. package/components/error-bubble/error-bubble.d.ts +18 -0
  146. package/components/error-bubble/error-bubble.js +17 -39
  147. package/components/error-message/error-message.d.ts +25 -0
  148. package/components/error-message/error-message.js +19 -38
  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.js +61 -103
  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.js +32 -40
  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.js +94 -105
  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.js +21 -30
  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.js +33 -45
  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.js +33 -42
  216. package/components/grid/grid.d.ts +14 -0
  217. package/components/grid/grid.js +13 -24
  218. package/components/grid/row.d.ts +40 -0
  219. package/components/grid/row.js +35 -44
  220. package/components/group/group.d.ts +12 -0
  221. package/components/group/group.js +11 -21
  222. package/components/group-ng/group.examples.js +2 -2
  223. package/components/header/header.d.ts +96 -0
  224. package/components/header/header.js +28 -43
  225. package/components/header/logo.d.ts +14 -0
  226. package/components/header/logo.js +16 -25
  227. package/components/header/profile.d.ts +73 -0
  228. package/components/header/profile.js +102 -168
  229. package/components/header/services-link.d.ts +25 -0
  230. package/components/header/services-link.js +20 -37
  231. package/components/header/services.d.ts +28 -0
  232. package/components/header/services.js +43 -102
  233. package/components/header/smart-profile.d.ts +36 -0
  234. package/components/header/smart-profile.js +76 -111
  235. package/components/header/smart-services.d.ts +25 -0
  236. package/components/header/smart-services.js +42 -66
  237. package/components/header/tray-icon.d.ts +589 -0
  238. package/components/header/tray-icon.js +14 -27
  239. package/components/header/tray.d.ts +9 -0
  240. package/components/header/tray.js +12 -24
  241. package/components/heading/heading.d.ts +25 -0
  242. package/components/heading/heading.js +33 -63
  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.js +55 -83
  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.js +39 -58
  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.js +136 -199
  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.js +21 -31
  269. package/components/island/content.d.ts +12 -0
  270. package/components/island/content.js +86 -123
  271. package/components/island/header.d.ts +8 -0
  272. package/components/island/header.js +57 -84
  273. package/components/island/island.d.ts +82 -0
  274. package/components/island/island.js +19 -41
  275. package/components/island-legacy/content-legacy.d.ts +10 -0
  276. package/components/island-legacy/content-legacy.js +11 -20
  277. package/components/island-legacy/header-legacy.d.ts +10 -0
  278. package/components/island-legacy/header-legacy.js +11 -20
  279. package/components/island-legacy/island-legacy.d.ts +12 -0
  280. package/components/island-legacy/island-legacy.js +13 -23
  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.js +27 -42
  284. package/components/link/link.d.ts +157 -0
  285. package/components/link/link.js +56 -101
  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.js +505 -691
  291. package/components/list/list__custom.d.ts +6 -0
  292. package/components/list/list__custom.js +37 -75
  293. package/components/list/list__hint.d.ts +15 -0
  294. package/components/list/list__hint.js +7 -15
  295. package/components/list/list__item.d.ts +8 -0
  296. package/components/list/list__item.js +81 -185
  297. package/components/list/list__link.d.ts +9 -0
  298. package/components/list/list__link.js +25 -54
  299. package/components/list/list__separator.d.ts +5 -0
  300. package/components/list/list__separator.js +13 -22
  301. package/components/list/list__title.d.ts +5 -0
  302. package/components/list/list__title.js +18 -34
  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.js +31 -51
  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.js +23 -45
  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.js +16 -29
  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.js +63 -104
  320. package/components/login-dialog/service.d.ts +2 -0
  321. package/components/login-dialog/service.js +11 -15
  322. package/components/markdown/code.d.ts +16 -0
  323. package/components/markdown/code.js +4 -14
  324. package/components/markdown/heading.d.ts +15 -0
  325. package/components/markdown/heading.js +3 -7
  326. package/components/markdown/link.d.ts +16 -0
  327. package/components/markdown/link.js +4 -8
  328. package/components/markdown/markdown.d.ts +15 -0
  329. package/components/markdown/markdown.js +21 -38
  330. package/components/message/message.d.ts +56 -0
  331. package/components/message/message.js +77 -127
  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.js +187 -288
  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.js +11 -19
  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.js +262 -346
  354. package/components/popup/popup.target.d.ts +6 -0
  355. package/components/popup/popup.target.js +12 -24
  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.js +30 -47
  360. package/components/progress-bar/progress-bar.d.ts +62 -0
  361. package/components/progress-bar/progress-bar.js +64 -92
  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.js +706 -899
  366. package/components/query-assist/query-assist__suggestions.d.ts +29 -0
  367. package/components/query-assist/query-assist__suggestions.js +51 -91
  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.js +19 -29
  371. package/components/radio/radio__item.d.ts +28 -0
  372. package/components/radio/radio__item.js +28 -56
  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.js +818 -1180
  377. package/components/select/select__filter.d.ts +20 -0
  378. package/components/select/select__filter.js +36 -59
  379. package/components/select/select__popup.d.ts +123 -0
  380. package/components/select/select__popup.js +324 -497
  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.js +12 -26
  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.js +113 -163
  400. package/components/table/cell.d.ts +13 -0
  401. package/components/table/cell.js +10 -20
  402. package/components/table/disable-hover-hoc.d.ts +68 -0
  403. package/components/table/disable-hover-hoc.js +29 -41
  404. package/components/table/header-cell.d.ts +43 -0
  405. package/components/table/header-cell.js +40 -61
  406. package/components/table/header.d.ts +60 -0
  407. package/components/table/header.js +89 -156
  408. package/components/table/multitable.d.ts +25 -0
  409. package/components/table/multitable.js +76 -94
  410. package/components/table/row-with-focus-sensor.d.ts +18 -0
  411. package/components/table/row-with-focus-sensor.js +21 -35
  412. package/components/table/row.d.ts +56 -0
  413. package/components/table/row.js +110 -199
  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.js +140 -171
  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.js +29 -48
  422. package/components/table/table.d.ts +160 -0
  423. package/components/table/table.js +170 -256
  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.js +72 -158
  428. package/components/tabs/collapsible-tab.d.ts +16 -0
  429. package/components/tabs/collapsible-tab.js +24 -80
  430. package/components/tabs/collapsible-tabs.d.ts +43 -0
  431. package/components/tabs/collapsible-tabs.js +176 -294
  432. package/components/tabs/custom-item.d.ts +9 -0
  433. package/components/tabs/custom-item.js +2 -3
  434. package/components/tabs/dumb-tabs.d.ts +136 -0
  435. package/components/tabs/dumb-tabs.js +46 -94
  436. package/components/tabs/smart-tabs.d.ts +20 -0
  437. package/components/tabs/smart-tabs.js +14 -27
  438. package/components/tabs/tab-link.d.ts +18 -0
  439. package/components/tabs/tab-link.js +12 -22
  440. package/components/tabs/tab.d.ts +25 -0
  441. package/components/tabs/tab.js +13 -19
  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.js +102 -155
  447. package/components/tags-input/tags-input.d.ts +154 -0
  448. package/components/tags-input/tags-input.js +233 -315
  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.js +35 -83
  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.js +13 -21
  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.js +31 -62
  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.js +108 -151
  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.js +216 -270
  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.js +55 -98
  467. package/components/user-card/card.d.ts +52 -0
  468. package/components/user-card/card.js +42 -78
  469. package/components/user-card/smart-user-card-tooltip.d.ts +20 -0
  470. package/components/user-card/smart-user-card-tooltip.js +39 -58
  471. package/components/user-card/tooltip.d.ts +31 -0
  472. package/components/user-card/tooltip.js +25 -46
  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 +29 -27
  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 +42 -17
  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.test.js +0 -61
  860. package/components/alert/container.test.js +0 -12
  861. package/components/alert-service/alert-service.examples.js +0 -91
  862. package/components/alert-service/alert-service.test.js +0 -88
  863. package/components/analytics/analytics.examples.js +0 -47
  864. package/components/analytics/analytics.test.js +0 -419
  865. package/components/auth/auth.examples.js +0 -122
  866. package/components/auth/auth.test.js +0 -774
  867. package/components/auth/request-builder.test.js +0 -64
  868. package/components/auth/response-parser.test.js +0 -89
  869. package/components/auth/storage.test.js +0 -178
  870. package/components/auth/token-validator.test.js +0 -199
  871. package/components/auth-dialog/auth-dialog.examples.js +0 -76
  872. package/components/auth-dialog/auth-dialog.test.js +0 -11
  873. package/components/auth-dialog-service/auth-dialog-service.examples.js +0 -66
  874. package/components/auth-dialog-service/auth-dialog-service.test.js +0 -75
  875. package/components/avatar/avatar.examples.js +0 -46
  876. package/components/avatar/avatar.test.js +0 -59
  877. package/components/badge/badge.examples.js +0 -26
  878. package/components/badge/badge.test.js +0 -34
  879. package/components/button/button.examples.js +0 -219
  880. package/components/button/button.test.js +0 -64
  881. package/components/button-group/button-group.examples.js +0 -58
  882. package/components/button-group/button-group.test.js +0 -10
  883. package/components/button-set/button-set.examples.js +0 -24
  884. package/components/button-set/button-set.test.js +0 -10
  885. package/components/button-toolbar/button-toolbar.examples.js +0 -31
  886. package/components/button-toolbar/button-toolbar.test.js +0 -21
  887. package/components/caret/caret.examples.js +0 -39
  888. package/components/caret/caret.test.js +0 -137
  889. package/components/checkbox/checkbox.examples.js +0 -67
  890. package/components/checkbox/checkbox.test.js +0 -78
  891. package/components/code/code.examples.js +0 -92
  892. package/components/code/code.test.js +0 -100
  893. package/components/confirm/confirm.examples.js +0 -93
  894. package/components/confirm/confirm.test.js +0 -28
  895. package/components/confirm-service/confirm-service.examples.js +0 -61
  896. package/components/confirm-service/confirm-service.test.js +0 -59
  897. package/components/content-layout/content-layout.examples.js +0 -188
  898. package/components/content-layout/content-layout.test.js +0 -41
  899. package/components/contenteditable/contenteditable.examples.js +0 -45
  900. package/components/contenteditable/contenteditable.test.js +0 -73
  901. package/components/data-list/data-list.examples.js +0 -116
  902. package/components/data-list/data-list.test.js +0 -40
  903. package/components/date-picker/date-picker.examples.js +0 -345
  904. package/components/date-picker/date-picker.test.js +0 -89
  905. package/components/dialog/dialog.examples.js +0 -209
  906. package/components/dialog/dialog.test.js +0 -62
  907. package/components/dropdown/dropdown.examples.js +0 -151
  908. package/components/dropdown/dropdown.test.js +0 -175
  909. package/components/dropdown-menu/dropdown-menu.examples.js +0 -47
  910. package/components/dropdown-menu/dropdown-menu.test.js +0 -76
  911. package/components/error-bubble/error-bubble.examples.js +0 -96
  912. package/components/error-bubble/error-bubble.test.js +0 -41
  913. package/components/error-message/error-message.examples.js +0 -33
  914. package/components/error-message/error-message.test.js +0 -21
  915. package/components/footer/footer.examples.js +0 -56
  916. package/components/footer/footer.test.js +0 -78
  917. package/components/global/data-tests.test.js +0 -18
  918. package/components/global/dom.examples.js +0 -39
  919. package/components/global/dom.test.js +0 -99
  920. package/components/global/fuzzy-highlight.test.js +0 -52
  921. package/components/global/get-uid.test.js +0 -21
  922. package/components/global/listeners.test.js +0 -78
  923. package/components/global/url.test.js +0 -138
  924. package/components/global/variables.examples.js +0 -160
  925. package/components/grid/grid.examples.js +0 -291
  926. package/components/grid/grid.test.js +0 -72
  927. package/components/group/group.examples.js +0 -27
  928. package/components/group/group.test.js +0 -21
  929. package/components/header/header.examples.js +0 -118
  930. package/components/header/header.test.js +0 -21
  931. package/components/heading/heading.examples.js +0 -64
  932. package/components/heading/heading.test.js +0 -29
  933. package/components/http/http.examples.js +0 -34
  934. package/components/http/http.test.js +0 -187
  935. package/components/hub-source/hub-source.test.js +0 -200
  936. package/components/hub-source/hub-source__users-groups.test.js +0 -91
  937. package/components/icon/icon.examples.js +0 -146
  938. package/components/icon/icon.test.js +0 -51
  939. package/components/input/input.examples.js +0 -140
  940. package/components/input/input.test.js +0 -40
  941. package/components/island/island.examples.js +0 -74
  942. package/components/island/island.test.js +0 -59
  943. package/components/island-legacy/island-legacy.examples.js +0 -33
  944. package/components/island-legacy/island-legacy.test.js +0 -21
  945. package/components/link/link.examples.js +0 -86
  946. package/components/link/link.test.js +0 -182
  947. package/components/list/list.examples.js +0 -271
  948. package/components/list/list.test.js +0 -428
  949. package/components/list/list__item.test.js +0 -60
  950. package/components/list/list__users-groups-source.test.js +0 -125
  951. package/components/loader/loader.examples.js +0 -22
  952. package/components/loader/loader__core.test.js +0 -232
  953. package/components/loader-inline/loader-inline.examples.js +0 -106
  954. package/components/loader-inline/loader-inline.test.js +0 -21
  955. package/components/loader-screen/loader-screen.examples.js +0 -40
  956. package/components/markdown/markdown.examples.js +0 -110
  957. package/components/markdown/markdown.test.js +0 -60
  958. package/components/message/message.examples.js +0 -78
  959. package/components/message/message.test.js +0 -26
  960. package/components/old-browsers-message/old-browsers-message.examples.js +0 -37
  961. package/components/pager/pager.examples.js +0 -291
  962. package/components/pager/pager.test.js +0 -56
  963. package/components/panel/panel.examples.js +0 -33
  964. package/components/panel/panel.test.js +0 -20
  965. package/components/permissions/permissions.test.js +0 -435
  966. package/components/permissions/permissions__cache.test.js +0 -75
  967. package/components/popup/popup.examples.js +0 -340
  968. package/components/popup/popup.test.js +0 -242
  969. package/components/popup/position.test.js +0 -192
  970. package/components/popup-menu/popup-menu.examples.js +0 -38
  971. package/components/popup-menu/popup-menu.test.js +0 -29
  972. package/components/progress-bar/progress-bar.examples.js +0 -56
  973. package/components/progress-bar/progress-bar.test.js +0 -114
  974. package/components/query-assist/query-assist.examples.js +0 -305
  975. package/components/query-assist/query-assist.test.js +0 -690
  976. package/components/radio/radio.examples.js +0 -58
  977. package/components/radio/radio.test.js +0 -90
  978. package/components/radio/radio__item.test.js +0 -98
  979. package/components/select/select.examples.js +0 -1023
  980. package/components/select/select.test.js +0 -1201
  981. package/components/select/select__popup.test.js +0 -156
  982. package/components/shortcuts/core.test.js +0 -282
  983. package/components/shortcuts/shortcuts-hoc.test.js +0 -53
  984. package/components/shortcuts/shortcuts.test.js +0 -45
  985. package/components/storage/storage.examples.js +0 -37
  986. package/components/storage/storage.test.js +0 -248
  987. package/components/tab-trap/tab-trap.examples.js +0 -49
  988. package/components/table/table.examples.js +0 -346
  989. package/components/tabs/tabs.examples.js +0 -275
  990. package/components/tabs/tabs.test.js +0 -26
  991. package/components/tag/tag.examples.js +0 -50
  992. package/components/tag/tag.test.js +0 -21
  993. package/components/tags-input/tag-input.examples.js +0 -133
  994. package/components/tags-input/tags-input.test.js +0 -234
  995. package/components/tags-list/tags-list.examples.js +0 -41
  996. package/components/tags-list/tags-list.test.js +0 -43
  997. package/components/text/text.examples.js +0 -25
  998. package/components/text/text.test.js +0 -25
  999. package/components/toggle/toggle.examples.js +0 -79
  1000. package/components/toggle/toggle.test.js +0 -34
  1001. package/components/tooltip/tooltip.examples.js +0 -118
  1002. package/components/tooltip/tooltip.test.js +0 -128
  1003. package/components/user-agreement/user-agreement.examples.js +0 -112
  1004. package/components/user-card/user-card.examples.js +0 -88
  1005. package/components/user-card/user-card.test.js +0 -102
  1006. 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
- });