@jetbrains/ring-ui 4.1.0-beta.8 → 4.1.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 (440) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +22 -16
  3. package/babel.config.js +3 -2
  4. package/components/alert/alert.js +9 -3
  5. package/components/alert/container.css +1 -1
  6. package/components/alert-service/alert-service.examples.css +18 -0
  7. package/components/alert-service/alert-service.examples.js +21 -0
  8. package/components/alert-service/alert-service.js +10 -3
  9. package/components/analytics/analytics__fus-plugin.js +3 -3
  10. package/components/analytics/analytics__ga-plugin.js +2 -2
  11. package/components/auth/auth.test.js +14 -7
  12. package/components/auth/auth__core.js +64 -33
  13. package/components/auth-dialog/auth-dialog.js +1 -0
  14. package/components/avatar/avatar.css +4 -1
  15. package/components/avatar/avatar.examples.js +3 -2
  16. package/components/avatar/avatar.js +31 -6
  17. package/components/avatar/fallback-avatar.js +136 -0
  18. package/components/avatar-editor-ng/avatar-editor-ng.css +2 -2
  19. package/components/avatar-editor-ng/avatar-editor-ng.js +2 -1
  20. package/components/avatar-editor-ng/{avatar-editor-ng.html → avatar-editor-ng__template.js} +2 -2
  21. package/components/button/button.css +2 -2
  22. package/components/button/button.js +4 -1
  23. package/components/button-group/button-group.js +1 -1
  24. package/components/button-group/caption.js +1 -1
  25. package/components/button-ng/button-ng.js +1 -1
  26. package/components/button-set-ng/button-set-ng.js +3 -1
  27. package/components/checkbox/checkbox.css +1 -1
  28. package/components/code/code.js +2 -5
  29. package/components/confirm/confirm.js +1 -0
  30. package/components/confirm-service/confirm-service.js +5 -5
  31. package/components/content-layout/content-layout.css +1 -1
  32. package/components/data-list/data-list.css +1 -1
  33. package/components/date-picker/date-input.js +5 -4
  34. package/components/date-picker/date-picker.css +34 -22
  35. package/components/date-picker/date-picker.js +16 -14
  36. package/components/date-picker/date-popup.js +22 -7
  37. package/components/date-picker/month-names.js +8 -5
  38. package/components/date-picker/month.js +6 -2
  39. package/components/date-picker/weekdays.js +10 -2
  40. package/components/dialog/dialog.examples.js +3 -1
  41. package/components/dialog/dialog.js +10 -5
  42. package/components/dialog/dialog.test.js +1 -1
  43. package/components/dialog/dialog__body-scroll-preventer.js +51 -31
  44. package/components/dialog-ng/dialog-ng.js +10 -10
  45. package/components/dialog-ng/{dialog-ng.html → dialog-ng__template.js} +2 -2
  46. package/components/dropdown/dropdown.examples.js +36 -1
  47. package/components/dropdown-menu/dropdown-menu.examples.js +47 -0
  48. package/components/dropdown-menu/dropdown-menu.js +117 -0
  49. package/components/dropdown-menu/dropdown-menu.test.js +76 -0
  50. package/components/error-bubble/error-bubble-legacy.css +1 -1
  51. package/components/error-bubble/error-bubble.css +1 -1
  52. package/components/error-bubble/error-bubble.examples.js +1 -1
  53. package/components/error-page/error-page.css +2 -2
  54. package/components/footer-ng/footer-ng.js +13 -3
  55. package/components/form/form.css +2 -2
  56. package/components/form-ng/form-ng.js +3 -1
  57. package/components/global/global.css +1 -1
  58. package/components/global/theme.js +1 -1
  59. package/components/global/variables.css +8 -1
  60. package/components/grid/grid.css +10 -9
  61. package/components/header/header.css +1 -1
  62. package/components/header/header.examples.js +7 -8
  63. package/components/header/profile.js +10 -11
  64. package/components/http/http.js +1 -1
  65. package/components/icon/icon.css +5 -4
  66. package/components/input/input-legacy.css +7 -7
  67. package/components/island/header.js +2 -2
  68. package/components/island/island.css +8 -3
  69. package/components/island-legacy/island-legacy.css +3 -1
  70. package/components/list/list.js +6 -1
  71. package/components/list/list__custom.js +9 -3
  72. package/components/list/list__item.js +8 -2
  73. package/components/list/list__link.js +2 -1
  74. package/components/loader-inline/loader-inline.css +1 -1
  75. package/components/loader-screen/loader-screen.css +1 -1
  76. package/components/message/message.css +1 -1
  77. package/components/message/message.examples.js +8 -7
  78. package/components/pager/pager.js +5 -3
  79. package/components/permissions/permissions.js +1 -1
  80. package/components/progress-bar/progress-bar.css +1 -1
  81. package/components/progress-bar/progress-bar.examples.js +3 -3
  82. package/components/progress-bar/progress-bar.js +5 -2
  83. package/components/progress-bar/progress-bar.test.js +12 -13
  84. package/components/progress-bar-ng/progress-bar-ng.examples.js +3 -3
  85. package/components/query-assist/query-assist.css +13 -3
  86. package/components/query-assist/query-assist.examples.js +3 -4
  87. package/components/query-assist/query-assist.js +56 -12
  88. package/components/query-assist/query-assist.test.js +37 -5
  89. package/components/save-field-ng/save-field-ng.css +0 -3
  90. package/components/save-field-ng/save-field-ng.js +3 -1
  91. package/components/save-field-ng/{save-field-ng.html → save-field-ng__template.js} +2 -2
  92. package/components/select/select.css +12 -7
  93. package/components/select/select.examples.js +13 -0
  94. package/components/select/select.js +30 -43
  95. package/components/select/select.test.js +4 -5
  96. package/components/shortcuts-hint-ng/shortcuts-hint-ng.css +1 -1
  97. package/components/shortcuts-hint-ng/shortcuts-hint-ng.js +1 -1
  98. package/components/shortcuts-hint-ng/{shortcuts-hint-ng.html → shortcuts-hint-ng__template.js} +2 -2
  99. package/components/sidebar/sidebar.css +1 -0
  100. package/components/sidebar-ng/sidebar-ng.js +6 -2
  101. package/components/sidebar-ng/{sidebar-ng__button.html → sidebar-ng__button-template.js} +2 -2
  102. package/components/sidebar-ng/{sidebar-ng.html → sidebar-ng__template.js} +2 -2
  103. package/components/table/header.js +9 -1
  104. package/components/table/row.js +2 -1
  105. package/components/table/table.css +2 -1
  106. package/components/table-legacy/table-legacy.css +2 -2
  107. package/components/table-legacy/table-legacy__toolbar.css +2 -2
  108. package/components/table-legacy-ng/table-legacy-ng.js +38 -5
  109. package/components/table-legacy-ng/table-legacy-ng__pager.js +7 -1
  110. package/components/tabs/collapsible-tab.js +2 -2
  111. package/components/tabs/collapsible-tabs.js +5 -9
  112. package/components/tabs/dumb-tabs.js +1 -0
  113. package/components/tabs/tab-link.js +4 -2
  114. package/components/tabs/tabs.css +32 -5
  115. package/components/tabs-ng/tabs-ng.js +4 -2
  116. package/components/tabs-ng/{tabs-ng.html → tabs-ng__template.js} +6 -2
  117. package/components/tag/tag.css +5 -2
  118. package/components/tag/tag.examples.js +3 -0
  119. package/components/tag/tag.js +19 -16
  120. package/components/tags-input/tag-input.examples.js +1 -1
  121. package/components/tags-input/tags-input.js +5 -2
  122. package/components/template-ng/template-ng.js +1 -1
  123. package/components/tooltip/tooltip.js +7 -2
  124. package/components/user-agreement/user-agreement.css +1 -5
  125. package/components/user-agreement/user-agreement.examples.js +7 -6
  126. package/components/user-agreement/user-agreement.js +11 -3
  127. package/dist/_helpers/_rollupPluginBabelHelpers.js +1 -94
  128. package/dist/_helpers/anchor.js +5 -6
  129. package/dist/_helpers/badge.js +1 -1
  130. package/dist/_helpers/button-group.js +3 -0
  131. package/dist/_helpers/button-set.js +3 -0
  132. package/dist/_helpers/button-toolbar.js +3 -0
  133. package/dist/_helpers/button__classes.js +1 -1
  134. package/dist/_helpers/card.js +6 -8
  135. package/dist/_helpers/checkbox.js +3 -0
  136. package/dist/_helpers/date-picker.js +1 -1
  137. package/dist/_helpers/dialog__body-scroll-preventer.js +49 -32
  138. package/dist/_helpers/error-message.js +3 -0
  139. package/dist/_helpers/footer.js +121 -0
  140. package/dist/_helpers/grid.js +1 -1
  141. package/dist/_helpers/group.js +3 -0
  142. package/dist/_helpers/header.js +1 -1
  143. package/dist/_helpers/icon.js +3 -0
  144. package/dist/_helpers/inject-styles.js +1 -1
  145. package/dist/_helpers/input.js +3 -0
  146. package/dist/_helpers/island.js +1 -1
  147. package/dist/_helpers/link.js +3 -0
  148. package/dist/_helpers/list.js +1 -1
  149. package/dist/_helpers/loader-screen.js +3 -0
  150. package/dist/_helpers/panel.js +3 -0
  151. package/dist/_helpers/query-assist__suggestions.js +1 -1
  152. package/dist/_helpers/radio.js +3 -0
  153. package/dist/_helpers/select__filter.js +6 -8
  154. package/dist/_helpers/services-link.js +6 -8
  155. package/dist/_helpers/sidebar.js +6 -8
  156. package/dist/_helpers/table.js +1 -1
  157. package/dist/_helpers/tabs.js +1 -1
  158. package/dist/_helpers/title.js +1 -1
  159. package/dist/alert/alert.js +15 -9
  160. package/dist/alert/container.js +7 -9
  161. package/dist/alert-service/alert-service.js +24 -13
  162. package/dist/analytics/analytics.js +2 -2
  163. package/dist/analytics/analytics__custom-plugin.js +1 -1
  164. package/dist/analytics/analytics__fus-plugin.js +4 -4
  165. package/dist/analytics/analytics__ga-plugin.js +3 -3
  166. package/dist/analytics/analytics__plugin-utils.js +1 -1
  167. package/dist/analytics-ng/analytics-ng.js +94 -0
  168. package/dist/auth/auth.js +7 -4
  169. package/dist/auth/auth__core.js +86 -48
  170. package/dist/auth/background-flow.js +1 -2
  171. package/dist/auth/down-notification.js +6 -3
  172. package/dist/auth/iframe-flow.js +5 -2
  173. package/dist/auth/landing-entry.js +1 -1
  174. package/dist/auth/landing.js +5 -2
  175. package/dist/auth/request-builder.js +1 -1
  176. package/dist/auth/response-parser.js +1 -1
  177. package/dist/auth/storage.js +3 -2
  178. package/dist/auth/token-validator.js +1 -1
  179. package/dist/auth/window-flow.js +1 -1
  180. package/dist/auth-dialog/auth-dialog.js +5 -3
  181. package/dist/auth-dialog-service/auth-dialog-service.js +6 -5
  182. package/dist/auth-ng/auth-ng.js +203 -0
  183. package/dist/auth-ng/auth-ng.mock.js +33 -0
  184. package/dist/autofocus-ng/autofocus-ng.js +50 -0
  185. package/dist/avatar/avatar.js +36 -30
  186. package/dist/avatar/fallback-avatar.js +141 -0
  187. package/dist/avatar-editor-ng/avatar-editor-ng.js +164 -0
  188. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +30 -0
  189. package/dist/avatar-ng/avatar-ng.js +18 -0
  190. package/dist/badge/badge.js +6 -8
  191. package/dist/badge-ng/badge-ng.js +16 -0
  192. package/dist/breadcrumb-ng/breadcrumb-ng.js +61 -0
  193. package/dist/button/button.js +16 -10
  194. package/dist/button-group/button-group.js +4 -4
  195. package/dist/button-group/caption.js +24 -5
  196. package/dist/button-group-ng/button-group-ng.js +38 -0
  197. package/dist/button-ng/button-ng.js +223 -0
  198. package/dist/button-set/button-set.js +3 -4
  199. package/dist/button-set-ng/button-set-ng.js +19 -0
  200. package/dist/button-toolbar/button-toolbar.js +3 -4
  201. package/dist/button-toolbar-ng/button-toolbar-ng.js +23 -0
  202. package/dist/caret/caret.js +1 -1
  203. package/dist/checkbox/checkbox.js +9 -11
  204. package/dist/checkbox-ng/checkbox-ng.js +55 -0
  205. package/dist/code/code.js +136 -0
  206. package/dist/compiler-ng/compiler-ng.js +53 -0
  207. package/dist/confirm/confirm.js +6 -3
  208. package/dist/confirm-ng/confirm-ng.js +66 -0
  209. package/dist/confirm-service/confirm-service.js +12 -10
  210. package/dist/content-layout/content-layout.js +6 -8
  211. package/dist/contenteditable/contenteditable.js +13 -16
  212. package/dist/data-list/data-list.js +10 -7
  213. package/dist/data-list/data-list.mock.js +2 -2
  214. package/dist/data-list/item.js +5 -3
  215. package/dist/data-list/selection.js +1 -1
  216. package/dist/data-list/title.js +3 -1
  217. package/dist/data-list-ng/data-list-ng.js +59 -0
  218. package/dist/date-picker/consts.js +1 -2
  219. package/dist/date-picker/date-input.js +10 -6
  220. package/dist/date-picker/date-picker.js +38 -29
  221. package/dist/date-picker/date-popup.js +51 -28
  222. package/dist/date-picker/day.js +2 -2
  223. package/dist/date-picker/formats.js +1 -1
  224. package/dist/date-picker/month-names.js +16 -9
  225. package/dist/date-picker/month-slider.js +2 -2
  226. package/dist/date-picker/month.js +13 -7
  227. package/dist/date-picker/months.js +3 -3
  228. package/dist/date-picker/weekdays.js +12 -4
  229. package/dist/date-picker/years.js +2 -2
  230. package/dist/dialog/dialog.js +19 -14
  231. package/dist/dialog/dialog__body-scroll-preventer.js +1 -1
  232. package/dist/dialog-ng/dialog-ng.js +601 -0
  233. package/dist/dialog-ng/dialog-ng__template.js +71 -0
  234. package/dist/docked-panel-ng/docked-panel-ng.js +170 -0
  235. package/dist/dropdown/anchor.js +2 -1
  236. package/dist/dropdown/dropdown.js +8 -10
  237. package/dist/dropdown-menu/dropdown-menu.js +175 -0
  238. package/dist/error-bubble/error-bubble.js +7 -9
  239. package/dist/error-message/error-message.js +4 -4
  240. package/dist/error-message-ng/error-message-ng.js +53 -0
  241. package/dist/footer/footer.js +6 -122
  242. package/dist/footer-ng/footer-ng.js +75 -0
  243. package/dist/form-ng/form-ng.js +169 -0
  244. package/dist/global/angular-component-factory.js +1 -2
  245. package/dist/global/compose.js +1 -1
  246. package/dist/global/composeRefs.js +1 -1
  247. package/dist/global/conic-gradient.js +3 -5
  248. package/dist/global/create-stateful-context.js +1 -1
  249. package/dist/global/data-tests.js +1 -1
  250. package/dist/global/focus-sensor-hoc.js +9 -11
  251. package/dist/global/fuzzy-highlight.js +1 -1
  252. package/dist/global/get-event-key.js +1 -1
  253. package/dist/global/get-uid.js +1 -1
  254. package/dist/global/linear-function.js +1 -2
  255. package/dist/global/listeners.js +1 -1
  256. package/dist/global/memoize.js +1 -1
  257. package/dist/global/normalize-indent.js +1 -1
  258. package/dist/global/promise-with-timeout.js +1 -1
  259. package/dist/global/radial-gradient-mask.js +1 -1
  260. package/dist/global/react-dom-renderer.js +1 -1
  261. package/dist/global/rerender-hoc.js +3 -5
  262. package/dist/global/ring-angular-component.js +1 -1
  263. package/dist/global/schedule-raf.js +1 -1
  264. package/dist/global/sniffer.js +1 -1
  265. package/dist/global/supports-css.js +1 -1
  266. package/dist/global/theme.js +6 -8
  267. package/dist/global/trivial-template-tag.js +1 -1
  268. package/dist/global/variables_dark.js +1 -1
  269. package/dist/grid/col.js +6 -8
  270. package/dist/grid/grid.js +5 -7
  271. package/dist/grid/row.js +6 -8
  272. package/dist/group/group.js +7 -10
  273. package/dist/group-ng/group-ng.js +11 -0
  274. package/dist/header/header.js +29 -26
  275. package/dist/header/logo.js +8 -9
  276. package/dist/header/profile.js +37 -32
  277. package/dist/header/services-link.js +1 -0
  278. package/dist/header/services.js +10 -9
  279. package/dist/header/smart-profile.js +27 -24
  280. package/dist/header/smart-services.js +10 -9
  281. package/dist/header/tray-icon.js +12 -12
  282. package/dist/header/tray.js +6 -8
  283. package/dist/heading/heading.js +9 -12
  284. package/dist/http/http.js +37 -37
  285. package/dist/http/http.mock.js +4 -4
  286. package/dist/hub-source/hub-source.js +1 -1
  287. package/dist/hub-source/hub-source__users-groups.js +1 -1
  288. package/dist/icon/icon.js +8 -8
  289. package/dist/icon/icon__svg.js +81 -6
  290. package/dist/icon/index.js +2 -1
  291. package/dist/icon-ng/icon-ng.js +89 -0
  292. package/dist/input/input.js +9 -12
  293. package/dist/input-ng/input-ng.js +166 -0
  294. package/dist/island/adaptive-island-hoc.js +1 -2
  295. package/dist/island/content.js +6 -8
  296. package/dist/island/header.js +7 -9
  297. package/dist/island/island.js +6 -9
  298. package/dist/island-legacy/content-legacy.js +6 -8
  299. package/dist/island-legacy/header-legacy.js +6 -8
  300. package/dist/island-legacy/island-legacy.js +6 -8
  301. package/dist/island-ng/island-content-ng.js +56 -0
  302. package/dist/island-ng/island-header-ng.js +32 -0
  303. package/dist/island-ng/island-ng-class-fixer.js +9 -0
  304. package/dist/island-ng/island-ng.js +31 -0
  305. package/dist/link/clickableLink.js +6 -8
  306. package/dist/link/link.js +7 -11
  307. package/dist/link-ng/link-ng.js +25 -0
  308. package/dist/list/list.js +25 -13
  309. package/dist/list/list__custom.js +13 -10
  310. package/dist/list/list__hint.js +1 -1
  311. package/dist/list/list__item.js +20 -13
  312. package/dist/list/list__link.js +11 -12
  313. package/dist/list/list__separator.js +1 -1
  314. package/dist/list/list__title.js +1 -1
  315. package/dist/list/list__users-groups-source.js +11 -7
  316. package/dist/loader/loader.js +6 -8
  317. package/dist/loader/loader__core.js +2 -2
  318. package/dist/loader-inline/inject-styles.js +1 -1
  319. package/dist/loader-inline/loader-inline.js +6 -8
  320. package/dist/loader-inline-ng/loader-inline-ng.js +42 -0
  321. package/dist/loader-ng/loader-ng.js +43 -0
  322. package/dist/loader-screen/loader-screen.js +7 -10
  323. package/dist/loader-screen-ng/loader-screen-ng.js +99 -0
  324. package/dist/login-dialog/login-dialog.js +5 -3
  325. package/dist/login-dialog/service.js +7 -5
  326. package/dist/markdown/code.js +30 -0
  327. package/dist/markdown/heading.js +23 -0
  328. package/dist/markdown/link.js +30 -0
  329. package/dist/markdown/markdown.js +73 -0
  330. package/dist/message/message.js +5 -4
  331. package/dist/message-bundle-ng/message-bundle-ng.js +111 -0
  332. package/dist/old-browsers-message/old-browsers-message.js +0 -1
  333. package/dist/old-browsers-message/old-browsers-message__stop.js +0 -1
  334. package/dist/old-browsers-message/white-list.js +4 -5
  335. package/dist/pager/pager.js +18 -9
  336. package/dist/pager-ng/pager-ng.js +96 -0
  337. package/dist/panel/panel.js +7 -10
  338. package/dist/panel-ng/panel-ng.js +16 -0
  339. package/dist/permissions/permissions.js +1 -1
  340. package/dist/permissions/permissions__cache.js +1 -1
  341. package/dist/permissions-ng/permissions-ng.js +274 -0
  342. package/dist/place-under-ng/place-under-ng.js +157 -0
  343. package/dist/popup/popup.js +8 -8
  344. package/dist/popup/popup.target.js +4 -5
  345. package/dist/popup/position.js +1 -2
  346. package/dist/popup-menu/popup-menu.js +21 -14
  347. package/dist/progress-bar/progress-bar.js +12 -10
  348. package/dist/progress-bar-ng/progress-bar-ng.js +15 -0
  349. package/dist/promised-click-ng/promised-click-ng.js +126 -0
  350. package/dist/proxy-attrs/proxy-attrs.js +1 -1
  351. package/dist/query-assist/query-assist.js +97 -28
  352. package/dist/query-assist/query-assist__suggestions.js +5 -1
  353. package/dist/query-assist-ng/query-assist-ng.js +82 -0
  354. package/dist/radio/radio.js +7 -5
  355. package/dist/radio/radio__item.js +10 -15
  356. package/dist/radio-ng/radio-ng.js +63 -0
  357. package/dist/save-field-ng/save-field-ng.js +335 -0
  358. package/dist/save-field-ng/save-field-ng__template.js +34 -0
  359. package/dist/select/select.js +50 -49
  360. package/dist/select/select__filter.js +6 -1
  361. package/dist/select/select__popup.js +8 -3
  362. package/dist/select-ng/select-ng.js +621 -0
  363. package/dist/select-ng/select-ng__lazy.js +150 -0
  364. package/dist/select-ng/select-ng__options.js +145 -0
  365. package/dist/shortcuts/core.js +2 -2
  366. package/dist/shortcuts/shortcuts-hoc.js +6 -8
  367. package/dist/shortcuts/shortcuts.js +6 -6
  368. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +120 -0
  369. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +50 -0
  370. package/dist/shortcuts-ng/shortcuts-ng.js +261 -0
  371. package/dist/sidebar-ng/sidebar-ng.js +111 -0
  372. package/dist/sidebar-ng/sidebar-ng__button-template.js +20 -0
  373. package/dist/sidebar-ng/sidebar-ng__template.js +12 -0
  374. package/dist/storage/storage.js +3 -2
  375. package/dist/storage/storage__fallback.js +1 -1
  376. package/dist/storage/storage__local.js +3 -2
  377. package/dist/style.css +1 -1
  378. package/dist/tab-trap/tab-trap.js +7 -9
  379. package/dist/table/cell.js +2 -2
  380. package/dist/table/disable-hover-hoc.js +2 -2
  381. package/dist/table/header-cell.js +8 -9
  382. package/dist/table/header.js +10 -6
  383. package/dist/table/multitable.js +1 -1
  384. package/dist/table/row-with-focus-sensor.js +5 -3
  385. package/dist/table/row.js +11 -10
  386. package/dist/table/selection-adapter.js +1 -1
  387. package/dist/table/selection-shortcuts-hoc.js +8 -6
  388. package/dist/table/selection.js +1 -1
  389. package/dist/table/smart-table.js +14 -8
  390. package/dist/table/table.js +10 -11
  391. package/dist/table-legacy-ng/table-legacy-ng.js +501 -0
  392. package/dist/table-legacy-ng/table-legacy-ng__pager.js +122 -0
  393. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +123 -0
  394. package/dist/table-legacy-ng/table-legacy-ng__selection.js +179 -0
  395. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +56 -0
  396. package/dist/table-ng/smart-table-ng.js +65 -0
  397. package/dist/table-ng/table-ng.js +64 -0
  398. package/dist/tabs/collapsible-more.js +9 -6
  399. package/dist/tabs/collapsible-tab.js +7 -7
  400. package/dist/tabs/collapsible-tabs.js +19 -20
  401. package/dist/tabs/dumb-tabs.js +12 -9
  402. package/dist/tabs/smart-tabs.js +11 -9
  403. package/dist/tabs/tab-link.js +13 -7
  404. package/dist/tabs/tab.js +1 -1
  405. package/dist/tabs/tabs.js +5 -1
  406. package/dist/tabs-ng/tabs-ng.js +193 -0
  407. package/dist/tabs-ng/tabs-ng__template.js +40 -0
  408. package/dist/tag/tag.js +20 -14
  409. package/dist/tags-input/tags-input.js +14 -10
  410. package/dist/tags-input-ng/tags-input-ng.js +89 -0
  411. package/dist/tags-list/tags-list.js +8 -9
  412. package/dist/template-ng/template-ng.js +70 -0
  413. package/dist/text/text.js +7 -9
  414. package/dist/theme-ng/theme-ng.js +44 -0
  415. package/dist/title-ng/title-ng.js +114 -0
  416. package/dist/toggle/toggle.js +8 -11
  417. package/dist/toggle-ng/toggle-ng.js +16 -0
  418. package/dist/tooltip/tooltip.js +14 -12
  419. package/dist/tooltip-ng/tooltip-ng.js +98 -0
  420. package/dist/user-agreement/service.js +409 -0
  421. package/dist/user-agreement/toolbox.eula.js +162 -0
  422. package/dist/user-agreement/user-agreement.js +167 -0
  423. package/dist/user-card/card.js +3 -0
  424. package/dist/user-card/smart-user-card-tooltip.js +14 -14
  425. package/dist/user-card/tooltip.js +9 -7
  426. package/dist/user-card/user-card.js +5 -2
  427. package/dist/user-card-ng/user-card-ng.js +59 -0
  428. package/package.json +84 -82
  429. package/webpack.config.js +14 -10
  430. package/components/button-set-ng/button-set-ng.html +0 -1
  431. package/components/footer-ng/footer-ng.html +0 -13
  432. package/components/form-ng/form-ng__error-bubble.html +0 -3
  433. package/components/table-legacy-ng/table-legacy-ng.html +0 -4
  434. package/components/table-legacy-ng/table-legacy-ng__column.html +0 -12
  435. package/components/table-legacy-ng/table-legacy-ng__header.html +0 -4
  436. package/components/table-legacy-ng/table-legacy-ng__pager.html +0 -7
  437. package/components/table-legacy-ng/table-legacy-ng__row.html +0 -12
  438. package/components/table-legacy-ng/table-legacy-ng__title.html +0 -9
  439. package/dist/_helpers/caption.js +0 -25
  440. package/dist/_helpers/icon__svg.js +0 -83
@@ -14,11 +14,13 @@ import '@jetbrains/icons/chevron-10px';
14
14
  import '../icon/icon.js';
15
15
  import 'util-deprecate';
16
16
  import '../icon/icon__constants.js';
17
- import '../_helpers/icon__svg.js';
17
+ import '../_helpers/icon.js';
18
+ import '../icon/icon__svg.js';
18
19
  import '../global/memoize.js';
19
20
  import '../link/clickableLink.js';
20
21
  import '../_helpers/button__classes.js';
21
22
  import '../global/get-uid.js';
23
+ import '../_helpers/input.js';
22
24
  import 'sniffr';
23
25
  import 'react-virtualized/dist/es/List';
24
26
  import 'react-virtualized/dist/es/AutoSizer';
@@ -34,13 +36,16 @@ import 'combokeys';
34
36
  import '../global/create-stateful-context.js';
35
37
  import '../list/list__link.js';
36
38
  import '../link/link.js';
39
+ import '../_helpers/link.js';
37
40
  import '../_helpers/list.js';
38
41
  import '../list/list__item.js';
39
42
  import '../avatar/avatar.js';
40
43
  import '../global/url.js';
44
+ import '../avatar/fallback-avatar.js';
41
45
  import '../checkbox/checkbox.js';
42
46
  import '@jetbrains/icons/checkmark';
43
47
  import '@jetbrains/icons/remove-10px';
48
+ import '../_helpers/checkbox.js';
44
49
  import '../list/list__custom.js';
45
50
  import '../global/get-event-key.js';
46
51
  import '../list/list__title.js';
@@ -20,10 +20,11 @@ import Shortcuts from '../shortcuts/shortcuts.js';
20
20
  import Button from '../button/button.js';
21
21
  import Text from '../text/text.js';
22
22
  import { DEFAULT_DIRECTIONS } from '../popup/popup.consts.js';
23
- import { m as modules_b607bec2, S as SelectFilter } from '../_helpers/select__filter.js';
23
+ import { S as SelectFilter, m as modules_b607bec2 } from '../_helpers/select__filter.js';
24
24
  import 'util-deprecate';
25
25
  import '../icon/icon__constants.js';
26
- import '../_helpers/icon__svg.js';
26
+ import '../_helpers/icon.js';
27
+ import '../icon/icon__svg.js';
27
28
  import 'react-dom';
28
29
  import '../global/schedule-raf.js';
29
30
  import '../global/data-tests.js';
@@ -41,13 +42,16 @@ import '../list/list__link.js';
41
42
  import '../link/link.js';
42
43
  import 'focus-visible';
43
44
  import '../link/clickableLink.js';
45
+ import '../_helpers/link.js';
44
46
  import '../_helpers/list.js';
45
47
  import '../list/list__item.js';
46
48
  import '../avatar/avatar.js';
47
49
  import '../global/url.js';
50
+ import '../avatar/fallback-avatar.js';
48
51
  import '../checkbox/checkbox.js';
49
52
  import '@jetbrains/icons/checkmark';
50
53
  import '@jetbrains/icons/remove-10px';
54
+ import '../_helpers/checkbox.js';
51
55
  import '../list/list__custom.js';
52
56
  import '../global/get-event-key.js';
53
57
  import '../list/list__title.js';
@@ -66,6 +70,7 @@ import '@jetbrains/icons/close';
66
70
  import '@jetbrains/icons/chevron-10px';
67
71
  import '../_helpers/button__classes.js';
68
72
  import '../input/input.js';
73
+ import '../_helpers/input.js';
69
74
 
70
75
  const INPUT_MARGIN_COMPENSATION = -14;
71
76
  const FILTER_HEIGHT = 35;
@@ -538,4 +543,4 @@ _defineProperty(SelectPopup, "defaultProps", {
538
543
  onEmptyPopupEnter: noop
539
544
  });
540
545
 
541
- export default SelectPopup;
546
+ export { SelectPopup as default };
@@ -0,0 +1,621 @@
1
+ import angular from 'angular';
2
+ import React from 'react';
3
+ import { unmountComponentAtNode, render } from 'react-dom';
4
+ import getEventKey from '../global/get-event-key.js';
5
+ import Select, { RerenderableSelect } from '../select/select.js';
6
+ import MessageBundle from '../message-bundle-ng/message-bundle-ng.js';
7
+ import SelectNgOptions from './select-ng__options.js';
8
+ import SelectLazy from './select-ng__lazy.js';
9
+ import '../_helpers/_rollupPluginBabelHelpers.js';
10
+ import 'classnames';
11
+ import 'prop-types';
12
+ import '@jetbrains/icons/chevron-10px';
13
+ import '@jetbrains/icons/close';
14
+ import 'deep-equal';
15
+ import '../dropdown/dropdown.js';
16
+ import '../global/data-tests.js';
17
+ import '../_helpers/anchor.js';
18
+ import '../icon/icon.js';
19
+ import 'util-deprecate';
20
+ import '../icon/icon__constants.js';
21
+ import '../_helpers/icon.js';
22
+ import '../icon/icon__svg.js';
23
+ import '../global/memoize.js';
24
+ import '../button/button.js';
25
+ import 'focus-visible';
26
+ import '../global/theme.js';
27
+ import '../link/clickableLink.js';
28
+ import '../_helpers/button__classes.js';
29
+ import '../avatar/avatar.js';
30
+ import '../global/url.js';
31
+ import '../global/dom.js';
32
+ import '../avatar/fallback-avatar.js';
33
+ import '../global/get-uid.js';
34
+ import '../popup/popup.js';
35
+ import '../global/schedule-raf.js';
36
+ import '../shortcuts/shortcuts.js';
37
+ import '../shortcuts/core.js';
38
+ import 'combokeys';
39
+ import '../global/sniffer.js';
40
+ import 'sniffr';
41
+ import '../tab-trap/tab-trap.js';
42
+ import '../popup/position.js';
43
+ import '../popup/popup.consts.js';
44
+ import '../popup/popup.target.js';
45
+ import '../list/list.js';
46
+ import 'react-virtualized/dist/es/List';
47
+ import 'react-virtualized/dist/es/AutoSizer';
48
+ import 'react-virtualized/dist/es/WindowScroller';
49
+ import 'react-virtualized/dist/es/CellMeasurer';
50
+ import 'memoize-one';
51
+ import '../global/create-stateful-context.js';
52
+ import '../list/list__link.js';
53
+ import '../link/link.js';
54
+ import '../_helpers/link.js';
55
+ import '../_helpers/list.js';
56
+ import '../list/list__item.js';
57
+ import '../checkbox/checkbox.js';
58
+ import '@jetbrains/icons/checkmark';
59
+ import '@jetbrains/icons/remove-10px';
60
+ import '../_helpers/checkbox.js';
61
+ import '../list/list__custom.js';
62
+ import '../list/list__title.js';
63
+ import '../list/list__separator.js';
64
+ import '../list/list__hint.js';
65
+ import '../list/consts.js';
66
+ import '../input/input.js';
67
+ import '../_helpers/input.js';
68
+ import '../global/rerender-hoc.js';
69
+ import '../global/fuzzy-highlight.js';
70
+ import '../select/select__popup.js';
71
+ import '@jetbrains/icons/search';
72
+ import '../loader-inline/loader-inline.js';
73
+ import '../_helpers/inject-styles.js';
74
+ import '../global/conic-gradient.js';
75
+ import 'conic-gradient';
76
+ import '../global/supports-css.js';
77
+ import '../global/inject-styles.js';
78
+ import '../global/radial-gradient-mask.js';
79
+ import '../shortcuts/shortcuts-hoc.js';
80
+ import '../tags-list/tags-list.js';
81
+ import '../tag/tag.js';
82
+ import '../caret/caret.js';
83
+ import '../text/text.js';
84
+ import '../_helpers/select__filter.js';
85
+
86
+ const LOADER_DELAY = 150; // delay to show loader in ms
87
+
88
+ const INFINITE_SCROLL_PACK_SIZE = 50;
89
+ const DIALOG_NG_SELECTOR = '[data-anchor=dialog-container][data-in-sidebar=false]';
90
+ /**
91
+ * @name Select Ng
92
+ */
93
+
94
+ const angularModule = angular.module('Ring.select', [SelectNgOptions, MessageBundle]);
95
+ angularModule.directive('rgSelect', function rgSelectDirective() {
96
+ const types = {
97
+ input: Select.Type.INPUT,
98
+ button: Select.Type.BUTTON,
99
+ material: Select.Type.MATERIAL,
100
+ dropdown: Select.Type.CUSTOM,
101
+ suggest: Select.Type.INPUT
102
+ };
103
+ const sizes = {
104
+ FULL: Select.Size.FULL,
105
+ S: Select.Size.S,
106
+ M: Select.Size.M,
107
+ L: Select.Size.L
108
+ };
109
+ return {
110
+ /**
111
+ * @property {Object} scope
112
+ * @property {Object} scope.ngModel
113
+ * @property {String} scope.selectType - select type. Can be "button" (default), "input" or "dropdown"
114
+ * @property {String} scope.lazy - Load options lazily. "true" by default.
115
+ * @property {Boolean} scope.withInfiniteScroll - If true, rgSelect calls getOptions with skip parameter when the list is scrolled to the bottom
116
+ * @property {String} scope.options - query for options
117
+ * @property {Boolean} scope.externalFilter - whether or not to use the options function as a filter.
118
+ * "filter" property should not be passed in that case.
119
+ * @property {Boolean} scope.multiple - toggles multiple selection
120
+ * @property {Function} scope.onSelect - callback to call on item selection
121
+ * Receives "selected" property (<rg-select on-select='doSomethingWith(selected)'>)
122
+ * @property {Function} scope.onDeselect - callback to call on item deselection
123
+ * Receives "deselected" property (<rg-select on-deselect='doSomethingWith(deselected)'>)
124
+ * @property {Function} scope.onOpen - callback to call on select popup opening
125
+ * @property {Function} scope.onClose - callback to call on select popup closing
126
+ * @property {Function} scope.onChange - callback to call on selection change
127
+ * Receives "selected" property (<rg-select on-change='doSomethingWith(selected)'>)
128
+ * @property {String} scope.label - Label to place on empty select button
129
+ * @property {String} scope.selectedLabel - Label to replace any selected item/items with
130
+ * @property {String} scope.notFoundMessage - message to display if no options found
131
+ * @property {String} scope.loadingMessage - message to display while loading
132
+ * @property {Object} scope.config - hash to pass to react select component
133
+ * @property {Boolean} scope.configAutoUpdate - whether or not to watch for configuration updates
134
+ * @property {String} scope.size - select size. Can be "S", "M" (default), or "L".
135
+ */
136
+ scope: {
137
+ ngModel: '=',
138
+ selectType: '@',
139
+ lazy: '=?',
140
+ withInfiniteScroll: '=?',
141
+ // NB: Deprecated! Use infinite-scroll-pack-size="50" instead
142
+ infiniteScrollPackSize: '@',
143
+ options: '@',
144
+ optionsScope: '=',
145
+ label: '@',
146
+ selectedLabel: '@',
147
+ externalFilter: '=?',
148
+ filter: '=?',
149
+ tags: '=?',
150
+ multiple: '=?',
151
+ clear: '=?',
152
+ onSelect: '&',
153
+ onDeselect: '&',
154
+ onOpen: '&',
155
+ onClose: '&',
156
+ onChange: '&',
157
+ notFoundMessage: '@',
158
+ loadingMessage: '@',
159
+ config: '=?',
160
+ configAutoUpdate: '=',
161
+ selectInstance: '=?',
162
+ size: '@',
163
+ dir: '@'
164
+ },
165
+ bindToController: true,
166
+ controllerAs: 'selectCtrl',
167
+ require: ['?ngModel', 'rgSelect'],
168
+ link: function link(scope, iElement, iAttrs, ctrls) {
169
+ const ngModelCtrl = ctrls[0];
170
+ const rgSelectCtrl = ctrls[1];
171
+ rgSelectCtrl.setNgModelCtrl(ngModelCtrl);
172
+ },
173
+ controller: ["$q", "$scope", "$element", "$attrs", "$timeout", "SelectOptions", "RingMessageBundle", function controller($q, $scope, $element, $attrs, $timeout, SelectOptions, RingMessageBundle) {
174
+ /*eslint-disable consistent-this*/
175
+ const ctrl = this;
176
+ /*eslint-enable consistent-this*/
177
+
178
+ const element = $element[0];
179
+ const container = document.createElement('span');
180
+ const infiniteScrollPackSize = Number(ctrl.infiniteScrollPackSize) || (ctrl.withInfiniteScroll ? INFINITE_SCROLL_PACK_SIZE : 0);
181
+ /**
182
+ * Properties
183
+ */
184
+
185
+ ctrl.selectInstance = null;
186
+ ctrl.ngModelCtrl = null;
187
+ ctrl.query = null;
188
+ ctrl.dataReceived = false;
189
+ ctrl.skipNextModelSync = false;
190
+ const scope = ctrl.optionsScope ? ctrl.optionsScope : $scope.$parent;
191
+
192
+ ctrl.setNgModelCtrl = ngModelCtrl => {
193
+ ctrl.ngModelCtrl = ngModelCtrl;
194
+ };
195
+ /**
196
+ * @param {Array} options
197
+ */
198
+
199
+
200
+ function memorizeOptions(options, skip) {
201
+ if (ctrl.loadedOptions && skip > 0) {
202
+ ctrl.loadedOptions = ctrl.loadedOptions.concat(options);
203
+ ctrl.stopLoadingNewOptions = options.length === 0 && infiniteScrollPackSize;
204
+ } else {
205
+ ctrl.loadedOptions = options;
206
+ }
207
+
208
+ ctrl.lastSkip = skip;
209
+ return ctrl.loadedOptions;
210
+ }
211
+
212
+ function resetMemorizedOptions() {
213
+ ctrl.lastSkip = -1;
214
+ ctrl.loadedOptions = [];
215
+ ctrl.stopLoadingNewOptions = false;
216
+ }
217
+
218
+ function getType() {
219
+ // $attrs.type as fallback, not recommended to use because of native "type" attribute
220
+ return ctrl.selectType || $attrs.type;
221
+ }
222
+
223
+ function getCurrentSkipParameter(query, prevQuery) {
224
+ if (!infiniteScrollPackSize || query !== prevQuery || !ctrl.loadedOptions) {
225
+ return 0;
226
+ }
227
+
228
+ return ctrl.lastSkip < 0 ? 0 : ctrl.lastSkip + infiniteScrollPackSize;
229
+ }
230
+
231
+ function isInDialog() {
232
+ const dialogContainer = document.querySelector(DIALOG_NG_SELECTOR);
233
+ return dialogContainer && dialogContainer.contains(element);
234
+ }
235
+
236
+ ctrl.syncSelectToNgModel = selectedValue => {
237
+ function valueOf(option) {
238
+ if (option && option.originalModel) {
239
+ return ctrl.optionsParser.getValue(option.originalModel);
240
+ }
241
+
242
+ return ctrl.optionsParser.getValue(option);
243
+ }
244
+
245
+ if (ctrl.ngModelCtrl) {
246
+ ctrl.skipNextModelSync = true;
247
+
248
+ if (getType() === 'suggest') {
249
+ ctrl.ngModelCtrl.$setViewValue(selectedValue.label);
250
+ } else if (Array.isArray(selectedValue)) {
251
+ ctrl.ngModelCtrl.$setViewValue(selectedValue.map(valueOf));
252
+ } else {
253
+ ctrl.ngModelCtrl.$setViewValue(valueOf(selectedValue));
254
+ }
255
+ }
256
+ };
257
+
258
+ ctrl.convertNgModelToSelect = model => {
259
+ function convertItem(modelValue) {
260
+ let item = ctrl.optionsParser.getOptionByValue(modelValue, ctrl.loadedOptions || []); // could happen when lazily fetching the data
261
+
262
+ if (item === undefined) {
263
+ item = modelValue;
264
+ }
265
+
266
+ return angular.extend({
267
+ key: ctrl.optionsParser.getKey(item),
268
+ label: ctrl.optionsParser.getLabel(item),
269
+ selectedLabel: ctrl.optionsParser.getSelectedLabel(item),
270
+ description: ctrl.optionsParser.getDescription(item),
271
+ originalModel: item
272
+ }, typeof item === 'object' ? item : null);
273
+ }
274
+
275
+ if (model !== undefined && model !== null) {
276
+ if (Array.isArray(model)) {
277
+ return model.map(convertItem);
278
+ } else {
279
+ return convertItem(model);
280
+ }
281
+ }
282
+
283
+ return undefined;
284
+ };
285
+
286
+ let lastQuery = null;
287
+ let inProcessQueries = 0;
288
+
289
+ ctrl.getOptions = (query, skip) => $q.when(ctrl.optionsParser.getOptions(query, skip));
290
+
291
+ let loaderDelayTimeout = null;
292
+
293
+ ctrl.showLoader = () => {
294
+ if (getType() !== 'suggest') {
295
+ reRenderSelect({
296
+ loading: true
297
+ });
298
+ }
299
+ };
300
+
301
+ ctrl.loadOptionsToSelect = query => {
302
+ if (ctrl.stopLoadingNewOptions && query === lastQuery) {
303
+ return $q.resolve();
304
+ }
305
+
306
+ ctrl.stopLoadingNewOptions = false;
307
+ const skip = getCurrentSkipParameter(query, lastQuery);
308
+ lastQuery = query;
309
+ $timeout.cancel(loaderDelayTimeout); // Delay loader only when there is some data
310
+ // Otherwise, user can notice the "not found" message
311
+
312
+ if (ctrl.dataReceived) {
313
+ loaderDelayTimeout = $timeout(ctrl.showLoader, LOADER_DELAY);
314
+ } else {
315
+ ctrl.showLoader();
316
+ }
317
+
318
+ inProcessQueries++;
319
+ return ctrl.getOptions(query, skip).then(results => {
320
+ inProcessQueries--;
321
+
322
+ if (query !== lastQuery) {
323
+ return; // do not process the result if queries don't match
324
+ }
325
+
326
+ if (skip && ctrl.lastSkip !== -1 && skip !== ctrl.lastSkip + infiniteScrollPackSize && ctrl.infiniteScrollPackSize) {
327
+ return; // do not process the result if skips not match
328
+ }
329
+
330
+ const items = memorizeOptions(results.data || results, skip).map(ctrl.convertNgModelToSelect);
331
+ $timeout.cancel(loaderDelayTimeout);
332
+ ctrl.dataReceived = true;
333
+ reRenderSelect({
334
+ data: items,
335
+ loading: false
336
+ });
337
+ }).catch(error => {
338
+ inProcessQueries--;
339
+ $timeout.cancel(loaderDelayTimeout);
340
+ reRenderSelect({
341
+ loading: false
342
+ });
343
+ return $q.reject(error);
344
+ });
345
+ };
346
+
347
+ function setSelectModel(newValue) {
348
+ if (ctrl.skipNextModelSync) {
349
+ ctrl.skipNextModelSync = false;
350
+ return;
351
+ }
352
+
353
+ if (ctrl.ngModelCtrl) {
354
+ reRenderSelect({
355
+ selected: ctrl.convertNgModelToSelect(newValue)
356
+ });
357
+ }
358
+ }
359
+
360
+ function syncNgModelToSelect() {
361
+ $scope.$watch(() => ctrl.ngModelCtrl && ctrl.ngModelCtrl.$modelValue, setSelectModel, true);
362
+ }
363
+
364
+ function syncDisabled() {
365
+ $attrs.$observe('disabled', newValue => {
366
+ reRenderSelect({
367
+ disabled: newValue
368
+ });
369
+ });
370
+ }
371
+
372
+ function syncMultiple() {
373
+ $scope.$watch(() => ctrl.multiple, () => {
374
+ if (angular.isDefined(ctrl.multiple)) {
375
+ reRenderSelect({
376
+ multiple: ctrl.multiple
377
+ });
378
+ }
379
+ });
380
+ }
381
+
382
+ function syncConfig() {
383
+ $scope.$watchCollection(() => ctrl.config, (config, old) => {
384
+ if (config !== old) {
385
+ reRenderSelect(config);
386
+ }
387
+ });
388
+ }
389
+
390
+ function isSelectPopupOpen() {
391
+ return ctrl.selectInstance._popup.isVisible();
392
+ }
393
+
394
+ function attachDropdownIfNeeded() {
395
+ if (getType() === 'dropdown') {
396
+ const handler = () => {
397
+ ctrl.selectInstance._clickHandler();
398
+ };
399
+
400
+ element.addEventListener('click', handler);
401
+ element.addEventListener('keydown', event => {
402
+ const key = getEventKey(event);
403
+ const modifier = event.ctrlKey || event.altKey || event.metaKey || event.shiftKey;
404
+
405
+ if (key === 'Enter' && !modifier || key === ' ') {
406
+ if (!isSelectPopupOpen()) {
407
+ handler(); // XXX: preventDefault is needed because some controls (button, input, etc)
408
+ // have an activation behaviour which fires a `click` event on `keypress`
409
+ // @see https://www.w3.org/TR/2017/PR-html51-20170803/editing.html#activation
410
+
411
+ event.preventDefault(); // XXX: stopPropagation is needed because when a React component is rendered with
412
+ // shortcuts, document-level handlers are added. For example, `enter` that leads
413
+ // to this handler being called right after current function's call, which
414
+ // leads to the popup being closed immediately after opening.
415
+ // @see https://www.w3.org/TR/uievents/#Event_dispatch_and_DOM_event_flow
416
+
417
+ event.stopPropagation();
418
+ }
419
+ }
420
+ });
421
+ }
422
+ }
423
+
424
+ function listenToRouteChanges() {
425
+ $scope.$on('$locationChangeSuccess', () => {
426
+ if (isSelectPopupOpen()) {
427
+ ctrl.selectInstance._hidePopup();
428
+ }
429
+ });
430
+ }
431
+
432
+ function getSelectType() {
433
+ return types[getType()] || types.material;
434
+ }
435
+
436
+ function getSelectSize() {
437
+ return sizes[ctrl.size] || sizes.FULL;
438
+ }
439
+
440
+ function reRenderSelect(props) {
441
+ if (ctrl.selectInstance.node) {
442
+ ctrl.selectInstance.rerender(props);
443
+ }
444
+ }
445
+ /**
446
+ * @param {newValue} newValue New value of options
447
+ * @param {value} value Previous value of options
448
+ */
449
+
450
+
451
+ function optionsWatcher(newValue, value) {
452
+ memorizeOptions(newValue, 0);
453
+
454
+ if (newValue === value) {
455
+ return;
456
+ }
457
+
458
+ if (ctrl.ngModelCtrl) {
459
+ setSelectModel(ctrl.ngModelCtrl.$modelValue);
460
+ }
461
+ }
462
+
463
+ function createDefaultConfig() {
464
+ const defaultConfig = {
465
+ label: ctrl.label || RingMessageBundle.select_label(),
466
+ selectedLabel: ctrl.selectedLabel,
467
+ allowAny: getType() === 'suggest',
468
+ hideArrow: getType() === 'suggest',
469
+ filter: ctrl.filter,
470
+ tags: ctrl.tags,
471
+ dir: ctrl.dir,
472
+ multiple: ctrl.multiple,
473
+ popupClassName: $attrs.popupClass,
474
+ clear: ctrl.clear,
475
+ ringPopupTarget: isInDialog() ? 'dialog-ng-popup-container' : null,
476
+ renderOptimization: getType() !== 'dropdown',
477
+ type: getSelectType(),
478
+ loadingMessage: ctrl.loadingMessage || RingMessageBundle.select_loading(),
479
+ notFoundMessage: ctrl.notFoundMessage || RingMessageBundle.select_options_not_found(),
480
+ targetElement: getType() === 'dropdown' ? element : null,
481
+ size: getSelectSize(),
482
+ onBeforeOpen: () => {
483
+ resetMemorizedOptions();
484
+ ctrl.loadOptionsToSelect(ctrl.query);
485
+ $scope.$evalAsync(() => {});
486
+ },
487
+ onOpen: () => {
488
+ $scope.$evalAsync(() => {
489
+ ctrl.onOpen();
490
+ });
491
+ },
492
+ onClose: () => {
493
+ ctrl.query = null;
494
+ $scope.$evalAsync(() => {
495
+ ctrl.onClose();
496
+ });
497
+ },
498
+ onSelect: (selected, event) => {
499
+ $scope.$evalAsync(() => {
500
+ ctrl.onSelect({
501
+ selected,
502
+ event
503
+ });
504
+ });
505
+ },
506
+ onDeselect: (deselected, event) => {
507
+ $scope.$evalAsync(() => {
508
+ ctrl.onDeselect({
509
+ deselected,
510
+ event
511
+ });
512
+ });
513
+ },
514
+ onChange: (selected, event) => {
515
+ ctrl.syncSelectToNgModel(selected);
516
+ $scope.$evalAsync(() => {
517
+ ctrl.onChange({
518
+ selected,
519
+ event
520
+ });
521
+ });
522
+ },
523
+ onFilter: query => {
524
+ $scope.$evalAsync(() => {
525
+ ctrl.query = query;
526
+
527
+ if (ctrl.externalFilter) {
528
+ ctrl.loadOptionsToSelect(query);
529
+ }
530
+
531
+ if (ctrl.onFilter) {
532
+ ctrl.onFilter(query);
533
+ }
534
+ });
535
+ },
536
+ reloadOptions: query => {
537
+ $scope.$evalAsync(() => {
538
+ ctrl.loadOptionsToSelect(query || ctrl.query);
539
+ });
540
+ },
541
+ getLoadedOptions: () => ctrl.loadedOptions
542
+ };
543
+
544
+ if (infiniteScrollPackSize) {
545
+ defaultConfig.onLoadMore = () => {
546
+ if (inProcessQueries === 0) {
547
+ $scope.$evalAsync(() => {
548
+ ctrl.loadOptionsToSelect(ctrl.query);
549
+ });
550
+ }
551
+ };
552
+ }
553
+
554
+ return defaultConfig;
555
+ }
556
+
557
+ function removeDefaultConfigPropFromUserConfig() {
558
+ if (!ctrl.defaultConfig || !ctrl.config) {
559
+ return;
560
+ }
561
+
562
+ Object.keys(ctrl.defaultConfig).filter(propName => ctrl.config[propName] === ctrl.defaultConfig[propName]).forEach(propName => {
563
+ delete ctrl.config[propName];
564
+ });
565
+ }
566
+
567
+ ctrl.$onDestroy = () => {
568
+ unmountComponentAtNode(container);
569
+ removeDefaultConfigPropFromUserConfig();
570
+ };
571
+
572
+ ctrl.$onInit = () => {
573
+ ctrl.optionsParser = new SelectOptions(scope, ctrl.options);
574
+ ctrl.lazy = ctrl.hasOwnProperty('lazy') ? ctrl.lazy : true;
575
+ /**
576
+ * Provide specific filter function if externalFilter is enabled
577
+ */
578
+
579
+ if (ctrl.externalFilter) {
580
+ ctrl.filter = ctrl.filter || {};
581
+
582
+ ctrl.filter.fn = () => true;
583
+ }
584
+
585
+ ctrl.defaultConfig = createDefaultConfig();
586
+ ctrl.config = angular.extend({}, ctrl.defaultConfig, ctrl.config || {});
587
+
588
+ if (getType() === 'suggest' || getType() === 'input') {
589
+ ctrl.selectInstance = render( /*#__PURE__*/React.createElement(RerenderableSelect, ctrl.config), container);
590
+ } else {
591
+ ctrl.selectInstance = new SelectLazy(container, ctrl.config, ctrl, getType());
592
+ } // Preserve existing contents of the directive
593
+
594
+
595
+ element.appendChild(container);
596
+
597
+ if (!ctrl.lazy) {
598
+ if (!ctrl.optionsParser.datasourceIsFunction) {
599
+ $scope.$watch(() => ctrl.optionsParser.getOptions(ctrl.query, 0), optionsWatcher, true);
600
+ } else {
601
+ ctrl.loadOptionsToSelect(ctrl.query);
602
+ }
603
+ }
604
+
605
+ syncNgModelToSelect();
606
+ syncDisabled();
607
+ syncMultiple();
608
+
609
+ if (ctrl.configAutoUpdate) {
610
+ syncConfig();
611
+ }
612
+
613
+ attachDropdownIfNeeded();
614
+ listenToRouteChanges();
615
+ };
616
+ }]
617
+ };
618
+ });
619
+ var selectNg = angularModule.name;
620
+
621
+ export { selectNg as default };