@jetbrains/ring-ui 5.0.155 → 5.0.157

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 (299) hide show
  1. package/components/checkbox/checkbox.css +1 -1
  2. package/components/global/variables_dark.css +2 -2
  3. package/components/radio/radio.css +1 -1
  4. package/dist/_helpers/_rollupPluginBabelHelpers.js +642 -1
  5. package/dist/_helpers/anchor.js +6 -7
  6. package/dist/_helpers/button__classes.js +16 -28
  7. package/dist/_helpers/card.js +107 -95
  8. package/dist/_helpers/dialog__body-scroll-preventer.js +20 -11
  9. package/dist/_helpers/footer.js +29 -34
  10. package/dist/_helpers/query-assist__suggestions.js +91 -74
  11. package/dist/_helpers/select__filter.js +71 -48
  12. package/dist/_helpers/services-link.js +41 -29
  13. package/dist/_helpers/sidebar.js +103 -99
  14. package/dist/_helpers/theme.js +42 -35
  15. package/dist/_helpers/title.js +71 -57
  16. package/dist/alert/alert.js +199 -158
  17. package/dist/alert/container.js +43 -32
  18. package/dist/alert-service/alert-service.js +172 -104
  19. package/dist/analytics/analytics.js +92 -68
  20. package/dist/analytics/analytics__custom-plugin.js +84 -60
  21. package/dist/analytics/analytics__fus-plugin.js +28 -15
  22. package/dist/analytics/analytics__ga-plugin.js +60 -43
  23. package/dist/analytics/analytics__plugin-utils.js +28 -22
  24. package/dist/auth/auth.js +36 -4
  25. package/dist/auth/auth__core.js +1458 -732
  26. package/dist/auth/background-flow.js +129 -87
  27. package/dist/auth/down-notification.js +75 -30
  28. package/dist/auth/iframe-flow.js +136 -75
  29. package/dist/auth/landing.js +90 -30
  30. package/dist/auth/request-builder.js +82 -46
  31. package/dist/auth/response-parser.js +119 -86
  32. package/dist/auth/storage.js +333 -171
  33. package/dist/auth/token-validator.js +244 -137
  34. package/dist/auth/window-flow.js +136 -92
  35. package/dist/auth-dialog/auth-dialog.js +176 -114
  36. package/dist/auth-dialog-service/auth-dialog-service.js +32 -7
  37. package/dist/auth-ng/auth-ng.js +70 -34
  38. package/dist/auth-ng/auth-ng.mock.js +6 -6
  39. package/dist/autofocus-ng/autofocus-ng.js +23 -8
  40. package/dist/avatar/avatar-example-datauri.js +1 -23
  41. package/dist/avatar/avatar.js +155 -119
  42. package/dist/avatar/fallback-avatar.js +41 -22
  43. package/dist/avatar-editor-ng/avatar-editor-ng.js +56 -23
  44. package/dist/avatar-editor-ng/avatar-editor-ng__template.js +1 -28
  45. package/dist/avatar-ng/avatar-ng.js +23 -1
  46. package/dist/badge/badge.js +43 -35
  47. package/dist/badge-ng/badge-ng.js +13 -1
  48. package/dist/breadcrumb-ng/breadcrumb-ng.js +15 -29
  49. package/dist/button/button.js +111 -87
  50. package/dist/button/button__classes.js +1 -0
  51. package/dist/button-group/button-group.js +35 -19
  52. package/dist/button-group/caption.js +22 -14
  53. package/dist/button-group-ng/button-group-ng.js +13 -7
  54. package/dist/button-ng/button-ng.js +154 -133
  55. package/dist/button-set/button-set.js +34 -20
  56. package/dist/button-set-ng/button-set-ng.js +2 -2
  57. package/dist/button-toolbar/button-toolbar.js +33 -19
  58. package/dist/button-toolbar-ng/button-toolbar-ng.js +5 -3
  59. package/dist/caret/caret.js +225 -188
  60. package/dist/checkbox/checkbox.js +104 -76
  61. package/dist/checkbox-ng/checkbox-ng.js +18 -27
  62. package/dist/clipboard/clipboard-fallback.js +10 -10
  63. package/dist/clipboard/clipboard.js +131 -34
  64. package/dist/code/code.js +168 -92
  65. package/dist/compiler-ng/compiler-ng.js +18 -15
  66. package/dist/confirm/confirm.js +108 -66
  67. package/dist/confirm-ng/confirm-ng.js +33 -4
  68. package/dist/confirm-service/confirm-service.js +66 -42
  69. package/dist/content-layout/content-layout.js +64 -43
  70. package/dist/content-layout/sidebar.js +1 -0
  71. package/dist/contenteditable/contenteditable.js +61 -50
  72. package/dist/control-label/control-label.js +11 -15
  73. package/dist/data-list/data-list.js +184 -128
  74. package/dist/data-list/data-list.mock.js +11 -2
  75. package/dist/data-list/item.js +174 -143
  76. package/dist/data-list/selection.js +139 -76
  77. package/dist/data-list/title.js +13 -1
  78. package/dist/data-list-ng/data-list-ng.js +31 -1
  79. package/dist/date-picker/consts.js +18 -15
  80. package/dist/date-picker/date-input.js +147 -115
  81. package/dist/date-picker/date-picker.js +285 -228
  82. package/dist/date-picker/date-popup.js +397 -356
  83. package/dist/date-picker/day.js +98 -84
  84. package/dist/date-picker/month-names.js +64 -43
  85. package/dist/date-picker/month-slider.js +74 -51
  86. package/dist/date-picker/month.js +21 -15
  87. package/dist/date-picker/months.js +48 -43
  88. package/dist/date-picker/weekdays.js +18 -12
  89. package/dist/date-picker/years.js +109 -84
  90. package/dist/dialog/dialog.js +189 -141
  91. package/dist/dialog/dialog__body-scroll-preventer.js +5 -0
  92. package/dist/dialog-ng/dialog-ng.js +401 -287
  93. package/dist/dialog-ng/dialog-ng__template.js +1 -70
  94. package/dist/docked-panel-ng/docked-panel-ng.js +33 -18
  95. package/dist/dropdown/anchor.js +10 -0
  96. package/dist/dropdown/dropdown.js +214 -182
  97. package/dist/dropdown-menu/dropdown-menu.js +102 -72
  98. package/dist/editable-heading/editable-heading.js +100 -58
  99. package/dist/error-bubble/error-bubble.js +64 -31
  100. package/dist/error-message/error-message.js +61 -38
  101. package/dist/error-message-ng/error-message-ng.js +11 -22
  102. package/dist/footer/footer.js +11 -1
  103. package/dist/footer-ng/footer-ng.js +64 -36
  104. package/dist/form-ng/form-ng.js +66 -56
  105. package/dist/global/angular-component-factory.js +76 -53
  106. package/dist/global/compose.js +10 -1
  107. package/dist/global/composeRefs.js +12 -7
  108. package/dist/global/controls-height.js +2 -2
  109. package/dist/global/create-stateful-context.js +19 -19
  110. package/dist/global/data-tests.js +15 -7
  111. package/dist/global/dom.js +95 -53
  112. package/dist/global/focus-sensor-hoc.js +134 -122
  113. package/dist/global/fuzzy-highlight.js +41 -27
  114. package/dist/global/get-event-key.js +8 -8
  115. package/dist/global/get-uid.js +8 -4
  116. package/dist/global/inject-styles.js +15 -10
  117. package/dist/global/linear-function.js +2 -2
  118. package/dist/global/listeners.js +53 -27
  119. package/dist/global/memoize.js +13 -6
  120. package/dist/global/normalize-indent.js +51 -19
  121. package/dist/global/promise-with-timeout.js +8 -6
  122. package/dist/global/prop-types.js +5 -3
  123. package/dist/global/react-dom-renderer.js +47 -28
  124. package/dist/global/react-render-adapter.js +19 -13
  125. package/dist/global/rerender-hoc.js +41 -16
  126. package/dist/global/ring-angular-component.js +20 -10
  127. package/dist/global/schedule-raf.js +6 -5
  128. package/dist/global/sniffer.js +1 -1
  129. package/dist/global/theme.js +24 -0
  130. package/dist/global/trivial-template-tag.js +10 -3
  131. package/dist/global/typescript-utils.js +6 -2
  132. package/dist/global/url.js +27 -21
  133. package/dist/global/use-event-callback.js +4 -6
  134. package/dist/grid/col.js +55 -35
  135. package/dist/grid/grid.js +36 -17
  136. package/dist/grid/row.js +48 -35
  137. package/dist/group/group.js +27 -17
  138. package/dist/group-ng/group-ng.js +2 -2
  139. package/dist/header/header.js +80 -33
  140. package/dist/header/logo.js +39 -20
  141. package/dist/header/profile.js +188 -150
  142. package/dist/header/services-link.js +9 -0
  143. package/dist/header/services.js +118 -73
  144. package/dist/header/smart-profile.js +207 -111
  145. package/dist/header/smart-services.js +115 -62
  146. package/dist/header/tray-icon.js +38 -21
  147. package/dist/header/tray.js +34 -21
  148. package/dist/heading/heading.js +25 -26
  149. package/dist/heading-ng/heading-ng.js +11 -1
  150. package/dist/http/http.js +368 -215
  151. package/dist/http/http.mock.js +104 -49
  152. package/dist/hub-source/hub-source.js +191 -83
  153. package/dist/hub-source/hub-source__user.js +45 -11
  154. package/dist/hub-source/hub-source__users-groups.js +67 -37
  155. package/dist/i18n/i18n-context.js +14 -10
  156. package/dist/i18n/i18n.js +11 -7
  157. package/dist/icon/icon.js +94 -76
  158. package/dist/icon/icon__svg.js +31 -24
  159. package/dist/icon/index.js +9 -0
  160. package/dist/icon-ng/icon-ng.js +27 -15
  161. package/dist/input/input.js +184 -145
  162. package/dist/input-ng/input-ng.js +96 -118
  163. package/dist/island/adaptive-island-hoc.js +45 -30
  164. package/dist/island/content.js +130 -115
  165. package/dist/island/header.js +69 -56
  166. package/dist/island/island.js +40 -28
  167. package/dist/island-legacy/content-legacy.js +27 -17
  168. package/dist/island-legacy/header-legacy.js +29 -19
  169. package/dist/island-legacy/island-legacy.js +27 -17
  170. package/dist/island-ng/island-content-ng.js +17 -26
  171. package/dist/island-ng/island-header-ng.js +9 -12
  172. package/dist/island-ng/island-ng-class-fixer.js +3 -0
  173. package/dist/island-ng/island-ng.js +6 -10
  174. package/dist/link/clickableLink.js +61 -44
  175. package/dist/link/link.js +85 -74
  176. package/dist/link-ng/link-ng.js +3 -5
  177. package/dist/list/consts.js +1 -1
  178. package/dist/list/list.js +696 -602
  179. package/dist/list/list__custom.js +61 -44
  180. package/dist/list/list__hint.js +21 -10
  181. package/dist/list/list__item.js +167 -129
  182. package/dist/list/list__link.js +54 -37
  183. package/dist/list/list__separator.js +24 -14
  184. package/dist/list/list__title.js +32 -22
  185. package/dist/list/list__users-groups-source.js +131 -54
  186. package/dist/loader/loader.js +78 -43
  187. package/dist/loader/loader__core.js +257 -189
  188. package/dist/loader-inline/loader-inline.js +37 -23
  189. package/dist/loader-inline-ng/loader-inline-ng.js +2 -2
  190. package/dist/loader-ng/loader-ng.js +46 -19
  191. package/dist/loader-screen/loader-screen.js +48 -25
  192. package/dist/loader-screen-ng/loader-screen-ng.js +46 -30
  193. package/dist/login-dialog/login-dialog.js +162 -111
  194. package/dist/login-dialog/service.js +35 -7
  195. package/dist/markdown/code.js +31 -9
  196. package/dist/markdown/heading.js +3 -5
  197. package/dist/markdown/link.js +13 -6
  198. package/dist/markdown/markdown.js +66 -33
  199. package/dist/message/message.js +157 -125
  200. package/dist/message-bundle-ng/message-bundle-ng.js +128 -44
  201. package/dist/old-browsers-message/old-browsers-message.js +19 -11
  202. package/dist/old-browsers-message/old-browsers-message__stop.js +8 -0
  203. package/dist/old-browsers-message/white-list.js +16 -9
  204. package/dist/pager/pager.js +275 -210
  205. package/dist/pager-ng/pager-ng.js +36 -1
  206. package/dist/panel/panel.js +27 -17
  207. package/dist/panel-ng/panel-ng.js +14 -1
  208. package/dist/permissions/permissions.js +173 -127
  209. package/dist/permissions/permissions__cache.js +225 -194
  210. package/dist/permissions-ng/permissions-ng.js +86 -35
  211. package/dist/place-under-ng/place-under-ng.js +68 -45
  212. package/dist/popup/popup.consts.js +1 -1
  213. package/dist/popup/popup.js +342 -280
  214. package/dist/popup/popup.target.js +8 -9
  215. package/dist/popup/position.js +153 -153
  216. package/dist/popup-menu/popup-menu.js +86 -44
  217. package/dist/progress-bar/progress-bar.js +97 -80
  218. package/dist/progress-bar-ng/progress-bar-ng.js +11 -1
  219. package/dist/promised-click-ng/promised-click-ng.js +92 -58
  220. package/dist/proxy-attrs/proxy-attrs.js +18 -9
  221. package/dist/query-assist/query-assist.js +903 -832
  222. package/dist/query-assist/query-assist__suggestions.js +33 -1
  223. package/dist/query-assist-ng/query-assist-ng.js +38 -1
  224. package/dist/radio/radio.js +36 -19
  225. package/dist/radio/radio__item.js +71 -52
  226. package/dist/radio-ng/radio-ng.js +14 -25
  227. package/dist/save-field-ng/save-field-ng.js +86 -52
  228. package/dist/save-field-ng/save-field-ng__template.js +1 -32
  229. package/dist/select/select.js +937 -835
  230. package/dist/select/select__filter.js +33 -0
  231. package/dist/select/select__popup.js +472 -359
  232. package/dist/select-ng/select-ng.js +125 -74
  233. package/dist/select-ng/select-ng__lazy.js +101 -50
  234. package/dist/select-ng/select-ng__options.js +107 -81
  235. package/dist/shortcuts/core.js +218 -166
  236. package/dist/shortcuts/shortcut-title.js +11 -6
  237. package/dist/shortcuts/shortcuts-hoc.js +47 -19
  238. package/dist/shortcuts/shortcuts.js +77 -50
  239. package/dist/shortcuts-hint-ng/shortcuts-hint-ng.js +104 -53
  240. package/dist/shortcuts-hint-ng/shortcuts-hint-ng__template.js +1 -48
  241. package/dist/shortcuts-ng/shortcuts-ng.js +86 -51
  242. package/dist/sidebar-ng/sidebar-ng.js +53 -22
  243. package/dist/sidebar-ng/sidebar-ng__button-template.js +1 -18
  244. package/dist/sidebar-ng/sidebar-ng__template.js +1 -10
  245. package/dist/storage/storage.js +35 -4
  246. package/dist/storage/storage__fallback.js +224 -149
  247. package/dist/storage/storage__local.js +156 -90
  248. package/dist/style.css +1 -1
  249. package/dist/tab-trap/tab-trap.js +157 -122
  250. package/dist/table/cell.js +28 -14
  251. package/dist/table/disable-hover-hoc.js +53 -33
  252. package/dist/table/header-cell.js +87 -64
  253. package/dist/table/header.js +126 -98
  254. package/dist/table/multitable.js +127 -107
  255. package/dist/table/row-with-focus-sensor.js +73 -25
  256. package/dist/table/row.js +208 -170
  257. package/dist/table/selection-adapter.js +3 -1
  258. package/dist/table/selection-shortcuts-hoc.js +184 -181
  259. package/dist/table/selection.js +228 -156
  260. package/dist/table/smart-table.js +93 -51
  261. package/dist/table/table.js +348 -281
  262. package/dist/table-legacy-ng/table-legacy-ng.js +117 -102
  263. package/dist/table-legacy-ng/table-legacy-ng__pager.js +42 -10
  264. package/dist/table-legacy-ng/table-legacy-ng__selection-navigate-actions.js +92 -69
  265. package/dist/table-legacy-ng/table-legacy-ng__selection.js +169 -119
  266. package/dist/table-legacy-ng/table-legacy-ng__toolbar.js +36 -21
  267. package/dist/table-ng/smart-table-ng.js +31 -1
  268. package/dist/table-ng/table-ng.js +31 -1
  269. package/dist/tabs/collapsible-more.js +87 -50
  270. package/dist/tabs/collapsible-tab.js +45 -38
  271. package/dist/tabs/collapsible-tabs.js +161 -94
  272. package/dist/tabs/custom-item.js +2 -4
  273. package/dist/tabs/dumb-tabs.js +122 -75
  274. package/dist/tabs/smart-tabs.js +75 -29
  275. package/dist/tabs/tab-link.js +29 -19
  276. package/dist/tabs/tab.js +33 -19
  277. package/dist/tabs/tabs.js +35 -0
  278. package/dist/tabs-ng/tabs-ng.js +38 -24
  279. package/dist/tabs-ng/tabs-ng__template.js +1 -38
  280. package/dist/tag/tag.js +170 -133
  281. package/dist/tags-input/tags-input.js +428 -327
  282. package/dist/tags-input-ng/tags-input-ng.js +37 -1
  283. package/dist/tags-list/tags-list.js +80 -56
  284. package/dist/template-ng/template-ng.js +50 -39
  285. package/dist/text/text.js +38 -28
  286. package/dist/title-ng/title-ng.js +28 -23
  287. package/dist/toggle/toggle.js +72 -56
  288. package/dist/toggle-ng/toggle-ng.js +14 -1
  289. package/dist/tooltip/tooltip.js +192 -146
  290. package/dist/tooltip-ng/tooltip-ng.js +51 -25
  291. package/dist/user-agreement/service.js +374 -227
  292. package/dist/user-agreement/toolbox.eula.js +1 -160
  293. package/dist/user-agreement/user-agreement.js +128 -86
  294. package/dist/user-card/card.js +32 -0
  295. package/dist/user-card/smart-user-card-tooltip.js +116 -51
  296. package/dist/user-card/tooltip.js +90 -48
  297. package/dist/user-card/user-card.js +32 -0
  298. package/dist/user-card-ng/user-card-ng.js +34 -2
  299. package/package.json +13 -13
@@ -1,4 +1,17 @@
1
- import React, { PureComponent, Component } from 'react';
1
+ import { c as _defineProperty, j as _inherits, k as _createSuper, b as _classCallCheck, m as _assertThisInitialized, e as _asyncToGenerator, _ as _createClass, f as _regeneratorRuntime } from '../_helpers/_rollupPluginBabelHelpers.js';
2
+ import 'core-js/modules/es.array.filter.js';
3
+ import 'core-js/modules/es.object.to-string.js';
4
+ import 'core-js/modules/es.array.concat.js';
5
+ import 'core-js/modules/es.array.iterator.js';
6
+ import 'core-js/modules/es.map.js';
7
+ import 'core-js/modules/es.string.iterator.js';
8
+ import 'core-js/modules/web.dom-collections.iterator.js';
9
+ import 'core-js/modules/es.array.map.js';
10
+ import 'core-js/modules/es.number.constructor.js';
11
+ import 'core-js/modules/es.array.index-of.js';
12
+ import 'core-js/modules/es.promise.js';
13
+ import 'core-js/modules/es.object.assign.js';
14
+ import React, { Component, PureComponent } from 'react';
2
15
  import PropTypes from 'prop-types';
3
16
  import classNames from 'classnames';
4
17
  import getEventKey from '../global/get-event-key.js';
@@ -12,12 +25,21 @@ import { ControlsHeightContext } from '../global/controls-height.js';
12
25
  import getUID from '../global/get-uid.js';
13
26
  import { m as modules_88cfaf40 } from '../_helpers/input.js';
14
27
  import { ControlLabel } from '../control-label/control-label.js';
15
- import '../_helpers/_rollupPluginBabelHelpers.js';
28
+ import 'core-js/modules/es.array.reduce.js';
29
+ import 'core-js/modules/es.string.trim.js';
30
+ import 'core-js/modules/es.regexp.exec.js';
31
+ import 'core-js/modules/es.array.find.js';
32
+ import 'core-js/modules/es.string.replace.js';
33
+ import 'core-js/modules/web.dom-collections.for-each.js';
34
+ import 'core-js/modules/es.array.slice.js';
35
+ import 'core-js/modules/es.object.keys.js';
36
+ import 'core-js/modules/es.object.values.js';
16
37
  import '@jetbrains/icons/chevron-down';
17
38
  import '@jetbrains/icons/close-12px';
18
39
  import 'deep-equal';
19
40
  import '../dropdown/dropdown.js';
20
41
  import '../global/data-tests.js';
42
+ import 'core-js/modules/es.object.entries.js';
21
43
  import '../global/typescript-utils.js';
22
44
  import '../_helpers/anchor.js';
23
45
  import '@jetbrains/icons/chevron-10px';
@@ -26,26 +48,40 @@ import 'util-deprecate';
26
48
  import '../icon/icon__constants.js';
27
49
  import '../_helpers/icon.js';
28
50
  import '../icon/icon__svg.js';
51
+ import 'core-js/modules/es.string.starts-with.js';
52
+ import 'core-js/modules/es.weak-map.js';
29
53
  import '../button/button.js';
30
54
  import '../link/clickableLink.js';
31
55
  import '../_helpers/button__classes.js';
32
56
  import '../avatar/avatar.js';
33
57
  import '../global/url.js';
58
+ import 'core-js/modules/es.string.match.js';
34
59
  import '../global/dom.js';
60
+ import 'core-js/modules/es.string.split.js';
61
+ import 'core-js/modules/es.set.js';
35
62
  import '../avatar/fallback-avatar.js';
63
+ import 'core-js/modules/es.array.from.js';
64
+ import 'core-js/modules/es.regexp.to-string.js';
36
65
  import '../popup/popup.js';
37
66
  import 'react-dom';
38
67
  import '../global/schedule-raf.js';
39
68
  import '../shortcuts/shortcuts.js';
40
69
  import '../shortcuts/core.js';
70
+ import 'core-js/modules/es.array.includes.js';
71
+ import 'core-js/modules/es.string.includes.js';
72
+ import 'core-js/modules/es.array.splice.js';
73
+ import 'core-js/modules/es.array.find-index.js';
41
74
  import 'combokeys';
42
75
  import '../global/sniffer.js';
43
76
  import 'sniffr';
44
77
  import '../tab-trap/tab-trap.js';
45
78
  import '../popup/position.js';
79
+ import 'core-js/modules/es.array.sort.js';
46
80
  import '../popup/popup.consts.js';
47
81
  import '../popup/popup.target.js';
48
82
  import '../list/list.js';
83
+ import 'core-js/modules/es.symbol.js';
84
+ import 'core-js/modules/es.symbol.description.js';
49
85
  import 'react-virtualized/dist/es/List';
50
86
  import 'react-virtualized/dist/es/AutoSizer';
51
87
  import 'react-virtualized/dist/es/WindowScroller';
@@ -88,350 +124,415 @@ function noop() {}
88
124
  /**
89
125
  * @name Tags Input
90
126
  */
91
- const POPUP_VERTICAL_SHIFT = 2;
92
- class TagsInput extends PureComponent {
93
- static propTypes = {
94
- className: PropTypes.string,
95
- tags: PropTypes.array,
96
- /**
97
- * Datasource should return array(or promise) of suggestions.
98
- * Each suggestion should contain key and label fields.
99
- * DataSource should handle caching and response racing (when later request
100
- * responded earlier) by himself.
101
- */
102
- dataSource: PropTypes.func,
103
- onAddTag: PropTypes.func,
104
- onRemoveTag: PropTypes.func,
105
- customTagComponent: PropTypes.instanceOf(Component),
106
- maxPopupHeight: PropTypes.number,
107
- minPopupWidth: PropTypes.number,
108
- placeholder: PropTypes.string,
109
- canNotBeEmpty: PropTypes.bool,
110
- disabled: PropTypes.bool,
111
- autoOpen: PropTypes.bool,
112
- renderOptimization: PropTypes.bool,
113
- filter: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({
114
- fn: PropTypes.func
115
- })]),
116
- size: PropTypes.string,
117
- height: PropTypes.string,
118
- label: PropTypes.node,
119
- loadingMessage: PropTypes.string,
120
- notFoundMessage: PropTypes.string,
121
- hint: PropTypes.node,
122
- allowAddNewTags: PropTypes.bool
123
- };
124
- static defaultProps = {
125
- dataSource: noop,
126
- onAddTag: noop,
127
- onRemoveTag: noop,
128
- customTagComponent: null,
129
- maxPopupHeight: 500,
130
- minPopupWidth: 360,
131
- canNotBeEmpty: false,
132
- disabled: false,
133
- autoOpen: false,
134
- renderOptimization: true,
135
- allowAddNewTags: false,
136
- filter: {
137
- fn: () => true
138
- },
139
- placeholder: 'Select an option',
140
- size: Size.M
141
- };
142
- constructor(props) {
143
- super(props);
144
- this.ngModelStateField = TagsInput.ngModelStateField;
145
- }
146
- state = {
147
- tags: [],
148
- prevTags: null,
149
- suggestions: [],
150
- loading: true,
151
- focused: false,
152
- query: '',
153
- activeIndex: 0
154
- };
155
- static getDerivedStateFromProps(_ref, _ref2) {
156
- let {
157
- tags
158
- } = _ref;
159
- let {
160
- prevTags
161
- } = _ref2;
162
- const nextState = {
163
- prevTags: tags
164
- };
165
- if (tags != null && tags !== prevTags) {
166
- Object.assign(nextState, {
167
- tags,
168
- activeIndex: tags.length
169
- });
170
- }
171
- return nextState;
172
- }
173
- componentDidMount() {
174
- if (this.props.autoOpen && !this.props.disabled) {
175
- this.focusInput();
176
- this.loadSuggestions();
177
- this.select?._showPopup();
178
- }
179
- }
180
- static ngModelStateField = 'tags';
181
- ngModelStateField;
182
- static contextType = ControlsHeightContext;
183
- id = getUID('ring-tags-list-');
184
- node;
185
- nodeRef = node => {
186
- this.node = node;
187
- };
188
- input;
189
- caret;
190
- getInputNode() {
191
- if (!this.input) {
192
- this.input = this.select?.filter;
193
- if (this.input) {
194
- this.caret = new Caret(this.input);
127
+ var POPUP_VERTICAL_SHIFT = 2;
128
+ var TagsInput = /*#__PURE__*/function (_PureComponent) {
129
+ _inherits(TagsInput, _PureComponent);
130
+ var _super = _createSuper(TagsInput);
131
+ function TagsInput(props) {
132
+ var _this;
133
+ _classCallCheck(this, TagsInput);
134
+ _this = _super.call(this, props);
135
+ _defineProperty(_assertThisInitialized(_this), "state", {
136
+ tags: [],
137
+ prevTags: null,
138
+ suggestions: [],
139
+ loading: true,
140
+ focused: false,
141
+ query: '',
142
+ activeIndex: 0
143
+ });
144
+ _defineProperty(_assertThisInitialized(_this), "ngModelStateField", void 0);
145
+ _defineProperty(_assertThisInitialized(_this), "id", getUID('ring-tags-list-'));
146
+ _defineProperty(_assertThisInitialized(_this), "node", void 0);
147
+ _defineProperty(_assertThisInitialized(_this), "nodeRef", function (node) {
148
+ _this.node = node;
149
+ });
150
+ _defineProperty(_assertThisInitialized(_this), "input", void 0);
151
+ _defineProperty(_assertThisInitialized(_this), "caret", void 0);
152
+ _defineProperty(_assertThisInitialized(_this), "focusInput", function () {
153
+ var _this$getInputNode;
154
+ (_this$getInputNode = _this.getInputNode()) === null || _this$getInputNode === void 0 ? void 0 : _this$getInputNode.focus();
155
+ });
156
+ _defineProperty(_assertThisInitialized(_this), "addTag", function (tag) {
157
+ var _this$select, _this$select2;
158
+ if (tag == null) {
159
+ return;
160
+ }
161
+ var isUniqueTag = _this.state.tags.filter(function (item) {
162
+ return tag.key === item.key;
163
+ }).length === 0;
164
+ (_this$select = _this.select) === null || _this$select === void 0 ? void 0 : _this$select.clear();
165
+ (_this$select2 = _this.select) === null || _this$select2 === void 0 ? void 0 : _this$select2.filterValue('');
166
+ if (isUniqueTag) {
167
+ _this.setState(function (prevState) {
168
+ return {
169
+ tags: prevState.tags.concat([tag])
170
+ };
171
+ });
172
+ _this.props.onAddTag({
173
+ tag: tag
174
+ });
175
+ _this.setActiveIndex();
195
176
  }
196
- }
197
- return this.input;
198
- }
199
- setActiveIndex(activeIndex) {
200
- this.setState({
201
- activeIndex
202
177
  });
203
- }
204
- focusInput = () => {
205
- this.getInputNode()?.focus();
206
- };
207
- addTag = tag => {
208
- if (tag == null) {
209
- return;
210
- }
211
- const isUniqueTag = this.state.tags.filter(item => tag.key === item.key).length === 0;
212
- this.select?.clear();
213
- this.select?.filterValue('');
214
- if (isUniqueTag) {
215
- this.setState(prevState => ({
216
- tags: prevState.tags.concat([tag])
178
+ _defineProperty(_assertThisInitialized(_this), "clickHandler", function (event) {
179
+ var _this$select3;
180
+ if (event.target !== _this.node && event.target.parentElement !== _this.node) {
181
+ return;
182
+ }
183
+ (_this$select3 = _this.select) === null || _this$select3 === void 0 ? void 0 : _this$select3._clickHandler();
184
+ });
185
+ _defineProperty(_assertThisInitialized(_this), "filterExistingTags", function (suggestions) {
186
+ var tagsMap = new Map(_this.state.tags.map(function (tag) {
187
+ return [tag.key, tag];
217
188
  }));
218
- this.props.onAddTag({
219
- tag
189
+ return suggestions.filter(function (suggestion) {
190
+ return !tagsMap.has(suggestion.key);
220
191
  });
221
- this.setActiveIndex();
222
- }
223
- };
224
- onRemoveTag(tagToRemove) {
225
- return Promise.resolve(this.props.onRemoveTag({
226
- tag: tagToRemove
227
- })).then(() => {
228
- const tags = this.state.tags.filter(tag => tag !== tagToRemove);
229
- if (this.node) {
230
- this.setState({
231
- tags
232
- });
233
- this.focusInput();
234
- }
235
- return tags;
236
- }, this.focusInput);
237
- }
238
- clickHandler = event => {
239
- if (event.target !== this.node && event.target.parentElement !== this.node) {
240
- return;
241
- }
242
- this.select?._clickHandler();
243
- };
244
- filterExistingTags = suggestions => {
245
- const tagsMap = new Map(this.state.tags.map(tag => [tag.key, tag]));
246
- return suggestions.filter(suggestion => !tagsMap.has(suggestion.key));
247
- };
248
- loadSuggestions = (() => {
249
- var _this = this;
250
- return function () {
251
- let query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
192
+ });
193
+ _defineProperty(_assertThisInitialized(_this), "loadSuggestions", function () {
194
+ var query = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
252
195
  return _this.setState({
253
196
  loading: true,
254
- query
255
- }, async () => {
256
- try {
257
- const suggestionsResult = _this.props.dataSource({
258
- query
259
- });
260
- const allSuggestions = Array.isArray(suggestionsResult) ? suggestionsResult : await suggestionsResult;
261
- const suggestions = _this.filterExistingTags(allSuggestions);
262
- if (_this.node && query === _this.state.query) {
263
- _this.setState({
264
- suggestions,
265
- loading: false
266
- });
197
+ query: query
198
+ }, /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
199
+ var suggestionsResult, allSuggestions, suggestions;
200
+ return _regeneratorRuntime().wrap(function _callee$(_context) {
201
+ while (1) switch (_context.prev = _context.next) {
202
+ case 0:
203
+ _context.prev = 0;
204
+ suggestionsResult = _this.props.dataSource({
205
+ query: query
206
+ });
207
+ if (!Array.isArray(suggestionsResult)) {
208
+ _context.next = 6;
209
+ break;
210
+ }
211
+ _context.t0 = suggestionsResult;
212
+ _context.next = 9;
213
+ break;
214
+ case 6:
215
+ _context.next = 8;
216
+ return suggestionsResult;
217
+ case 8:
218
+ _context.t0 = _context.sent;
219
+ case 9:
220
+ allSuggestions = _context.t0;
221
+ suggestions = _this.filterExistingTags(allSuggestions);
222
+ if (_this.node && query === _this.state.query) {
223
+ _this.setState({
224
+ suggestions: suggestions,
225
+ loading: false
226
+ });
227
+ }
228
+ _context.next = 17;
229
+ break;
230
+ case 14:
231
+ _context.prev = 14;
232
+ _context.t1 = _context["catch"](0);
233
+ _this.setState({
234
+ loading: false
235
+ });
236
+ case 17:
237
+ case "end":
238
+ return _context.stop();
267
239
  }
268
- } catch (e) {
269
- _this.setState({
270
- loading: false
271
- });
272
- }
240
+ }, _callee, null, [[0, 14]]);
241
+ })));
242
+ });
243
+ _defineProperty(_assertThisInitialized(_this), "_focusHandler", function () {
244
+ _this.setActiveIndex(null);
245
+ _this.setState({
246
+ focused: true
273
247
  });
274
- };
275
- })();
276
- _focusHandler = () => {
277
- this.setActiveIndex(null);
278
- this.setState({
279
- focused: true
280
248
  });
281
- };
282
- _blurHandler = () => {
283
- this.setState({
284
- focused: false
249
+ _defineProperty(_assertThisInitialized(_this), "_blurHandler", function () {
250
+ _this.setState({
251
+ focused: false
252
+ });
285
253
  });
286
- };
287
- selectTag = moveForward => {
288
- const activeIndex = typeof this.state.activeIndex === 'number' ? this.state.activeIndex : this.state.tags.length + 1;
289
- let newActiveIndex = activeIndex + (moveForward ? 1 : -1);
290
- if (newActiveIndex >= this.state.tags.length) {
291
- newActiveIndex = this.state.tags.length - 1;
292
- } else if (newActiveIndex < 0) {
293
- newActiveIndex = 0;
294
- }
295
- if (this.state.activeIndex !== newActiveIndex) {
296
- this.setActiveIndex(newActiveIndex);
297
- }
298
- };
299
- handleKeyDown = event => {
300
- const key = getEventKey(event);
301
- const isInputFocused = () => {
302
- var _this$getInputNode$ta;
303
- return event.target instanceof Element && event.target.matches((_this$getInputNode$ta = this.getInputNode()?.tagName) !== null && _this$getInputNode$ta !== void 0 ? _this$getInputNode$ta : '');
304
- };
305
- if (key === ' ' && this.props.allowAddNewTags) {
306
- event.stopPropagation();
307
- const value = this.getInputNode()?.value;
308
- if (value != null && value !== '') {
309
- this.handleTagCreation(value);
254
+ _defineProperty(_assertThisInitialized(_this), "selectTag", function (moveForward) {
255
+ var activeIndex = typeof _this.state.activeIndex === 'number' ? _this.state.activeIndex : _this.state.tags.length + 1;
256
+ var newActiveIndex = activeIndex + (moveForward ? 1 : -1);
257
+ if (newActiveIndex >= _this.state.tags.length) {
258
+ newActiveIndex = _this.state.tags.length - 1;
259
+ } else if (newActiveIndex < 0) {
260
+ newActiveIndex = 0;
310
261
  }
311
- return true;
312
- }
313
- if (this.select?._popup?.isVisible()) {
314
- return true;
315
- }
316
- if (key === 'ArrowLeft') {
317
- if (this.getInputNode() && this.caret != null && Number(this.caret.getPosition()) > 0) {
318
- return true;
262
+ if (_this.state.activeIndex !== newActiveIndex) {
263
+ _this.setActiveIndex(newActiveIndex);
319
264
  }
320
- this.selectTag();
321
- return false;
322
- }
323
- if (key === 'ArrowRight' && !isInputFocused()) {
324
- if (this.state.activeIndex === this.state.tags.length - 1) {
325
- if (!this.props.disabled) {
326
- this.getInputNode()?.focus();
327
- this.setActiveIndex();
265
+ });
266
+ _defineProperty(_assertThisInitialized(_this), "handleKeyDown", function (event) {
267
+ var _this$select4, _this$select4$_popup;
268
+ var key = getEventKey(event);
269
+ var isInputFocused = function isInputFocused() {
270
+ var _this$getInputNode$ta, _this$getInputNode2;
271
+ return event.target instanceof Element && event.target.matches((_this$getInputNode$ta = (_this$getInputNode2 = _this.getInputNode()) === null || _this$getInputNode2 === void 0 ? void 0 : _this$getInputNode2.tagName) !== null && _this$getInputNode$ta !== void 0 ? _this$getInputNode$ta : '');
272
+ };
273
+ if (key === ' ' && _this.props.allowAddNewTags) {
274
+ var _this$getInputNode3;
275
+ event.stopPropagation();
276
+ var value = (_this$getInputNode3 = _this.getInputNode()) === null || _this$getInputNode3 === void 0 ? void 0 : _this$getInputNode3.value;
277
+ if (value != null && value !== '') {
278
+ _this.handleTagCreation(value);
328
279
  }
329
- } else {
330
- this.selectTag(true);
280
+ return true;
331
281
  }
332
- return false;
333
- }
334
- if (!this.props.disabled) {
335
- if (key === 'Backspace' && !this.getInputNode()?.value) {
336
- event.preventDefault();
337
- const tagsLength = this.state.tags.length;
338
- this.select?._hidePopup(true); // otherwise confirmation may be overlapped by popup
339
- this.onRemoveTag(this.state.tags[tagsLength - 1]);
282
+ if ((_this$select4 = _this.select) !== null && _this$select4 !== void 0 && (_this$select4$_popup = _this$select4._popup) !== null && _this$select4$_popup !== void 0 && _this$select4$_popup.isVisible()) {
283
+ return true;
284
+ }
285
+ if (key === 'ArrowLeft') {
286
+ if (_this.getInputNode() && _this.caret != null && Number(_this.caret.getPosition()) > 0) {
287
+ return true;
288
+ }
289
+ _this.selectTag();
340
290
  return false;
341
291
  }
342
- if ((key === 'Delete' || key === 'Backspace') && this.state.activeIndex != null && this.state.tags[this.state.activeIndex]) {
343
- this.onRemoveTag(this.state.tags[this.state.activeIndex]).then(() => this.selectTag(true));
292
+ if (key === 'ArrowRight' && !isInputFocused()) {
293
+ if (_this.state.activeIndex === _this.state.tags.length - 1) {
294
+ if (!_this.props.disabled) {
295
+ var _this$getInputNode4;
296
+ (_this$getInputNode4 = _this.getInputNode()) === null || _this$getInputNode4 === void 0 ? void 0 : _this$getInputNode4.focus();
297
+ _this.setActiveIndex();
298
+ }
299
+ } else {
300
+ _this.selectTag(true);
301
+ }
344
302
  return false;
345
303
  }
346
- }
347
- return true;
348
- };
349
- handleClick = memoize(tag => () => {
350
- this.setActiveIndex(this.state.tags.indexOf(tag));
351
- });
352
- handleRemove = memoize(tag => () => this.onRemoveTag(tag));
353
- handleTagCreation = label => {
354
- this.addTag({
355
- key: label,
356
- label
304
+ if (!_this.props.disabled) {
305
+ var _this$getInputNode5;
306
+ if (key === 'Backspace' && !((_this$getInputNode5 = _this.getInputNode()) !== null && _this$getInputNode5 !== void 0 && _this$getInputNode5.value)) {
307
+ var _this$select5;
308
+ event.preventDefault();
309
+ var tagsLength = _this.state.tags.length;
310
+ (_this$select5 = _this.select) === null || _this$select5 === void 0 ? void 0 : _this$select5._hidePopup(true); // otherwise confirmation may be overlapped by popup
311
+ _this.onRemoveTag(_this.state.tags[tagsLength - 1]);
312
+ return false;
313
+ }
314
+ if ((key === 'Delete' || key === 'Backspace') && _this.state.activeIndex != null && _this.state.tags[_this.state.activeIndex]) {
315
+ _this.onRemoveTag(_this.state.tags[_this.state.activeIndex]).then(function () {
316
+ return _this.selectTag(true);
317
+ });
318
+ return false;
319
+ }
320
+ }
321
+ return true;
322
+ });
323
+ _defineProperty(_assertThisInitialized(_this), "handleClick", memoize(function (tag) {
324
+ return function () {
325
+ _this.setActiveIndex(_this.state.tags.indexOf(tag));
326
+ };
327
+ }));
328
+ _defineProperty(_assertThisInitialized(_this), "handleRemove", memoize(function (tag) {
329
+ return function () {
330
+ return _this.onRemoveTag(tag);
331
+ };
332
+ }));
333
+ _defineProperty(_assertThisInitialized(_this), "handleTagCreation", function (label) {
334
+ _this.addTag({
335
+ key: label,
336
+ label: label
337
+ });
338
+ });
339
+ _defineProperty(_assertThisInitialized(_this), "select", void 0);
340
+ _defineProperty(_assertThisInitialized(_this), "selectRef", function (el) {
341
+ _this.select = el;
357
342
  });
358
- };
359
- select;
360
- selectRef = el => {
361
- this.select = el;
362
- };
363
- render() {
364
- const {
365
- focused,
366
- tags,
367
- activeIndex
368
- } = this.state;
369
- const {
370
- disabled,
371
- canNotBeEmpty,
372
- allowAddNewTags,
373
- filter,
374
- size,
375
- labelType,
376
- height = this.context,
377
- label
378
- } = this.props;
379
- const classes = classNames(modules_5aa8aaf3.tagsInput, [modules_88cfaf40[`size${size}`]], [modules_88cfaf40[`height${height}`]], {
380
- [modules_5aa8aaf3.tagsInputDisabled]: disabled,
381
- [modules_5aa8aaf3.tagsInputFocused]: focused
382
- }, this.props.className);
383
- return /*#__PURE__*/React.createElement("div", {
384
- // it transfers focus to input
385
- role: "presentation",
386
- className: classes,
387
- onKeyDown: this.handleKeyDown,
388
- onClick: this.clickHandler,
389
- ref: this.nodeRef
390
- }, label && /*#__PURE__*/React.createElement(ControlLabel, {
391
- htmlFor: this.id,
392
- disabled: disabled,
393
- type: labelType
394
- }, label), /*#__PURE__*/React.createElement(TagsList, {
395
- tags: tags,
396
- activeIndex: activeIndex,
397
- disabled: disabled,
398
- canNotBeEmpty: canNotBeEmpty,
399
- handleRemove: this.handleRemove,
400
- className: modules_5aa8aaf3.tagsList,
401
- tagClassName: modules_5aa8aaf3.tag,
402
- handleClick: this.handleClick,
403
- customTagComponent: this.props.customTagComponent
404
- }, /*#__PURE__*/React.createElement(Select, {
405
- id: this.id,
406
- ref: this.selectRef,
407
- size: Select.Size.AUTO,
408
- type: Select.Type.INPUT_WITHOUT_CONTROLS,
409
- inputPlaceholder: this.props.placeholder,
410
- data: this.state.suggestions,
411
- className: classNames(modules_5aa8aaf3.tagsSelect),
412
- onSelect: this.addTag,
413
- onFocus: this._focusHandler,
414
- onBlur: this._blurHandler,
415
- renderOptimization: this.props.renderOptimization,
416
- add: allowAddNewTags ? {
417
- prefix: 'Add new tag'
418
- } : undefined,
419
- onAdd: allowAddNewTags ? this.handleTagCreation : undefined,
420
- filter: filter,
421
- maxHeight: this.props.maxPopupHeight,
422
- minWidth: this.props.minPopupWidth,
423
- top: POPUP_VERTICAL_SHIFT,
424
- loading: this.state.loading,
425
- onFilter: this.loadSuggestions,
426
- onBeforeOpen: this.loadSuggestions,
427
- onKeyDown: this.handleKeyDown,
428
- disabled: this.props.disabled,
429
- loadingMessage: this.props.loadingMessage,
430
- notFoundMessage: this.props.notFoundMessage,
431
- hint: this.props.hint
432
- })));
343
+ _this.ngModelStateField = TagsInput.ngModelStateField;
344
+ return _this;
433
345
  }
434
- }
435
- const RerenderableTagsInput = rerenderHOC(TagsInput);
346
+ _createClass(TagsInput, [{
347
+ key: "componentDidMount",
348
+ value: function componentDidMount() {
349
+ if (this.props.autoOpen && !this.props.disabled) {
350
+ var _this$select6;
351
+ this.focusInput();
352
+ this.loadSuggestions();
353
+ (_this$select6 = this.select) === null || _this$select6 === void 0 ? void 0 : _this$select6._showPopup();
354
+ }
355
+ }
356
+ }, {
357
+ key: "getInputNode",
358
+ value: function getInputNode() {
359
+ if (!this.input) {
360
+ var _this$select7;
361
+ this.input = (_this$select7 = this.select) === null || _this$select7 === void 0 ? void 0 : _this$select7.filter;
362
+ if (this.input) {
363
+ this.caret = new Caret(this.input);
364
+ }
365
+ }
366
+ return this.input;
367
+ }
368
+ }, {
369
+ key: "setActiveIndex",
370
+ value: function setActiveIndex(activeIndex) {
371
+ this.setState({
372
+ activeIndex: activeIndex
373
+ });
374
+ }
375
+ }, {
376
+ key: "onRemoveTag",
377
+ value: function onRemoveTag(tagToRemove) {
378
+ var _this2 = this;
379
+ return Promise.resolve(this.props.onRemoveTag({
380
+ tag: tagToRemove
381
+ })).then(function () {
382
+ var tags = _this2.state.tags.filter(function (tag) {
383
+ return tag !== tagToRemove;
384
+ });
385
+ if (_this2.node) {
386
+ _this2.setState({
387
+ tags: tags
388
+ });
389
+ _this2.focusInput();
390
+ }
391
+ return tags;
392
+ }, this.focusInput);
393
+ }
394
+ }, {
395
+ key: "render",
396
+ value: function render() {
397
+ var _classNames;
398
+ var _this$state = this.state,
399
+ focused = _this$state.focused,
400
+ tags = _this$state.tags,
401
+ activeIndex = _this$state.activeIndex;
402
+ var _this$props = this.props,
403
+ disabled = _this$props.disabled,
404
+ canNotBeEmpty = _this$props.canNotBeEmpty,
405
+ allowAddNewTags = _this$props.allowAddNewTags,
406
+ filter = _this$props.filter,
407
+ size = _this$props.size,
408
+ labelType = _this$props.labelType,
409
+ _this$props$height = _this$props.height,
410
+ height = _this$props$height === void 0 ? this.context : _this$props$height,
411
+ label = _this$props.label;
412
+ var classes = classNames(modules_5aa8aaf3.tagsInput, [modules_88cfaf40["size".concat(size)]], [modules_88cfaf40["height".concat(height)]], (_classNames = {}, _defineProperty(_classNames, modules_5aa8aaf3.tagsInputDisabled, disabled), _defineProperty(_classNames, modules_5aa8aaf3.tagsInputFocused, focused), _classNames), this.props.className);
413
+ return /*#__PURE__*/React.createElement("div", {
414
+ // it transfers focus to input
415
+ role: "presentation",
416
+ className: classes,
417
+ onKeyDown: this.handleKeyDown,
418
+ onClick: this.clickHandler,
419
+ ref: this.nodeRef
420
+ }, label && /*#__PURE__*/React.createElement(ControlLabel, {
421
+ htmlFor: this.id,
422
+ disabled: disabled,
423
+ type: labelType
424
+ }, label), /*#__PURE__*/React.createElement(TagsList, {
425
+ tags: tags,
426
+ activeIndex: activeIndex,
427
+ disabled: disabled,
428
+ canNotBeEmpty: canNotBeEmpty,
429
+ handleRemove: this.handleRemove,
430
+ className: modules_5aa8aaf3.tagsList,
431
+ tagClassName: modules_5aa8aaf3.tag,
432
+ handleClick: this.handleClick,
433
+ customTagComponent: this.props.customTagComponent
434
+ }, /*#__PURE__*/React.createElement(Select, {
435
+ id: this.id,
436
+ ref: this.selectRef,
437
+ size: Select.Size.AUTO,
438
+ type: Select.Type.INPUT_WITHOUT_CONTROLS,
439
+ inputPlaceholder: this.props.placeholder,
440
+ data: this.state.suggestions,
441
+ className: classNames(modules_5aa8aaf3.tagsSelect),
442
+ onSelect: this.addTag,
443
+ onFocus: this._focusHandler,
444
+ onBlur: this._blurHandler,
445
+ renderOptimization: this.props.renderOptimization,
446
+ add: allowAddNewTags ? {
447
+ prefix: 'Add new tag'
448
+ } : undefined,
449
+ onAdd: allowAddNewTags ? this.handleTagCreation : undefined,
450
+ filter: filter,
451
+ maxHeight: this.props.maxPopupHeight,
452
+ minWidth: this.props.minPopupWidth,
453
+ top: POPUP_VERTICAL_SHIFT,
454
+ loading: this.state.loading,
455
+ onFilter: this.loadSuggestions,
456
+ onBeforeOpen: this.loadSuggestions,
457
+ onKeyDown: this.handleKeyDown,
458
+ disabled: this.props.disabled,
459
+ loadingMessage: this.props.loadingMessage,
460
+ notFoundMessage: this.props.notFoundMessage,
461
+ hint: this.props.hint
462
+ })));
463
+ }
464
+ }], [{
465
+ key: "getDerivedStateFromProps",
466
+ value: function getDerivedStateFromProps(_ref2, _ref3) {
467
+ var tags = _ref2.tags;
468
+ var prevTags = _ref3.prevTags;
469
+ var nextState = {
470
+ prevTags: tags
471
+ };
472
+ if (tags != null && tags !== prevTags) {
473
+ Object.assign(nextState, {
474
+ tags: tags,
475
+ activeIndex: tags.length
476
+ });
477
+ }
478
+ return nextState;
479
+ }
480
+ }]);
481
+ return TagsInput;
482
+ }(PureComponent);
483
+ _defineProperty(TagsInput, "propTypes", {
484
+ className: PropTypes.string,
485
+ tags: PropTypes.array,
486
+ /**
487
+ * Datasource should return array(or promise) of suggestions.
488
+ * Each suggestion should contain key and label fields.
489
+ * DataSource should handle caching and response racing (when later request
490
+ * responded earlier) by himself.
491
+ */
492
+ dataSource: PropTypes.func,
493
+ onAddTag: PropTypes.func,
494
+ onRemoveTag: PropTypes.func,
495
+ customTagComponent: PropTypes.instanceOf(Component),
496
+ maxPopupHeight: PropTypes.number,
497
+ minPopupWidth: PropTypes.number,
498
+ placeholder: PropTypes.string,
499
+ canNotBeEmpty: PropTypes.bool,
500
+ disabled: PropTypes.bool,
501
+ autoOpen: PropTypes.bool,
502
+ renderOptimization: PropTypes.bool,
503
+ filter: PropTypes.oneOfType([PropTypes.bool, PropTypes.shape({
504
+ fn: PropTypes.func
505
+ })]),
506
+ size: PropTypes.string,
507
+ height: PropTypes.string,
508
+ label: PropTypes.node,
509
+ loadingMessage: PropTypes.string,
510
+ notFoundMessage: PropTypes.string,
511
+ hint: PropTypes.node,
512
+ allowAddNewTags: PropTypes.bool
513
+ });
514
+ _defineProperty(TagsInput, "defaultProps", {
515
+ dataSource: noop,
516
+ onAddTag: noop,
517
+ onRemoveTag: noop,
518
+ customTagComponent: null,
519
+ maxPopupHeight: 500,
520
+ minPopupWidth: 360,
521
+ canNotBeEmpty: false,
522
+ disabled: false,
523
+ autoOpen: false,
524
+ renderOptimization: true,
525
+ allowAddNewTags: false,
526
+ filter: {
527
+ fn: function fn() {
528
+ return true;
529
+ }
530
+ },
531
+ placeholder: 'Select an option',
532
+ size: Size.M
533
+ });
534
+ _defineProperty(TagsInput, "ngModelStateField", 'tags');
535
+ _defineProperty(TagsInput, "contextType", ControlsHeightContext);
536
+ var RerenderableTagsInput = rerenderHOC(TagsInput);
436
537
 
437
538
  export { RerenderableTagsInput, TagsInput as default };