@jobber/components 2.86.0 → 2.86.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (269) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/Autocomplete/Autocomplete.d.ts +47 -47
  3. package/dist/Autocomplete/Menu.d.ts +9 -9
  4. package/dist/Autocomplete/Option.d.ts +15 -15
  5. package/dist/Autocomplete/index.d.ts +2 -2
  6. package/dist/Autocomplete/index.js +215 -211
  7. package/dist/Avatar/Avatar.d.ts +37 -37
  8. package/dist/Avatar/index.d.ts +1 -1
  9. package/dist/Avatar/index.js +7 -74
  10. package/dist/Avatar/utilities.d.ts +1 -1
  11. package/dist/Avatar-cfd04e86.js +82 -0
  12. package/dist/Banner/Banner.d.ts +19 -19
  13. package/dist/Banner/index.d.ts +1 -1
  14. package/dist/Banner/index.js +67 -65
  15. package/dist/Button/Button.d.ts +64 -64
  16. package/dist/Button/index.d.ts +1 -1
  17. package/dist/Button/index.js +9 -53
  18. package/dist/Button-5b2f1636.js +60 -0
  19. package/dist/ButtonDismiss/ButtonDismiss.d.ts +7 -7
  20. package/dist/ButtonDismiss/index.d.ts +1 -1
  21. package/dist/ButtonDismiss/index.js +10 -15
  22. package/dist/ButtonDismiss-4cde8f7c.js +15 -0
  23. package/dist/Card/Card.d.ts +31 -31
  24. package/dist/Card/CardClickable.d.ts +12 -12
  25. package/dist/Card/index.d.ts +1 -1
  26. package/dist/Card/index.js +7 -61
  27. package/dist/Card-368e01a3.js +68 -0
  28. package/dist/Checkbox/Checkbox.d.ts +52 -52
  29. package/dist/Checkbox/index.d.ts +1 -1
  30. package/dist/Checkbox/index.js +34 -32
  31. package/dist/Chips/Chip.d.ts +8 -8
  32. package/dist/Chips/ChipDismissible.d.ts +7 -7
  33. package/dist/Chips/ChipTypes.d.ts +59 -59
  34. package/dist/Chips/Chips.d.ts +2 -2
  35. package/dist/Chips/ChipsTypes.d.ts +82 -82
  36. package/dist/Chips/InternalChip.d.ts +2 -2
  37. package/dist/Chips/InternalChipAffix.d.ts +10 -10
  38. package/dist/Chips/InternalChipButton.d.ts +10 -10
  39. package/dist/Chips/InternalChipDismissible/InternalChipDismissible.d.ts +2 -2
  40. package/dist/Chips/InternalChipDismissible/InternalChipDismissibleInput.d.ts +2 -2
  41. package/dist/Chips/InternalChipDismissible/InternalChipDismissibleTypes.d.ts +13 -13
  42. package/dist/Chips/InternalChipDismissible/hooks/index.d.ts +5 -5
  43. package/dist/Chips/InternalChipDismissible/hooks/useInView.d.ts +5 -5
  44. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissible.d.ts +15 -15
  45. package/dist/Chips/InternalChipDismissible/hooks/useInternalChipDismissibleInput.d.ts +28 -28
  46. package/dist/Chips/InternalChipDismissible/hooks/useRepositionMenu.d.ts +16 -16
  47. package/dist/Chips/InternalChipDismissible/hooks/useScrollToActive.d.ts +2 -2
  48. package/dist/Chips/InternalChipDismissible/index.d.ts +1 -1
  49. package/dist/Chips/InternalChipMultiSelect.d.ts +4 -4
  50. package/dist/Chips/InternalChipSingleSelect.d.ts +4 -4
  51. package/dist/Chips/index.d.ts +3 -3
  52. package/dist/Chips/index.js +493 -491
  53. package/dist/Chips/utils/mdxUtils.d.ts +9 -9
  54. package/dist/ConfirmationModal/ConfirmationModal.d.ts +62 -62
  55. package/dist/ConfirmationModal/index.d.ts +1 -1
  56. package/dist/ConfirmationModal/index.js +20 -109
  57. package/dist/ConfirmationModal-b7ef110f.js +103 -0
  58. package/dist/Content/Content.d.ts +13 -13
  59. package/dist/Content/index.d.ts +1 -1
  60. package/dist/Content/index.js +5 -19
  61. package/dist/Content-18de5fbb.js +26 -0
  62. package/dist/Countdown/Countdown.d.ts +31 -31
  63. package/dist/Countdown/computeTimeUnit.d.ts +3 -3
  64. package/dist/Countdown/index.d.ts +1 -1
  65. package/dist/Countdown/index.js +63 -61
  66. package/dist/DataDump/DataDump.d.ts +20 -20
  67. package/dist/DataDump/index.d.ts +1 -1
  68. package/dist/DataDump/index.js +18 -17
  69. package/dist/DatePicker/DatePicker.d.ts +50 -50
  70. package/dist/DatePicker/DatePickerActivator.d.ts +12 -12
  71. package/dist/DatePicker/DatePickerCustomHeader.d.ts +2 -2
  72. package/dist/DatePicker/index.d.ts +1 -1
  73. package/dist/DatePicker/index.js +13 -97
  74. package/dist/DatePicker/useFocusOnSelectedDate.d.ts +5 -5
  75. package/dist/DatePicker-ad6f8630.js +103 -0
  76. package/dist/DescriptionList/DescriptionList.d.ts +10 -10
  77. package/dist/DescriptionList/index.d.ts +1 -1
  78. package/dist/DescriptionList/index.js +16 -15
  79. package/dist/Disclosure/Disclosure.d.ts +20 -20
  80. package/dist/Disclosure/index.d.ts +1 -1
  81. package/dist/Disclosure/index.js +32 -31
  82. package/dist/Divider/Divider.d.ts +16 -16
  83. package/dist/Divider/index.d.ts +1 -1
  84. package/dist/Divider/index.js +19 -17
  85. package/dist/Drawer/Drawer.d.ts +13 -13
  86. package/dist/Drawer/DrawerGrid.d.ts +6 -6
  87. package/dist/Drawer/index.d.ts +2 -2
  88. package/dist/Drawer/index.js +39 -37
  89. package/dist/Emphasis/Emphasis.d.ts +11 -11
  90. package/dist/Emphasis/index.d.ts +1 -1
  91. package/dist/Emphasis/index.js +7 -17
  92. package/dist/Emphasis-fd845639.js +21 -0
  93. package/dist/FeatureSwitch/FeatureSwitch.d.ts +51 -51
  94. package/dist/FeatureSwitch/index.d.ts +1 -1
  95. package/dist/FeatureSwitch/index.js +57 -55
  96. package/dist/Form/Form.d.ts +18 -18
  97. package/dist/Form/index.d.ts +1 -1
  98. package/dist/Form/index.js +58 -57
  99. package/dist/FormField/FormField.d.ts +2 -2
  100. package/dist/FormField/FormFieldAffix.d.ts +13 -13
  101. package/dist/FormField/FormFieldDescription.d.ts +6 -6
  102. package/dist/FormField/FormFieldPostFix.d.ts +5 -5
  103. package/dist/FormField/FormFieldTypes.d.ts +160 -160
  104. package/dist/FormField/FormFieldWrapper.d.ts +9 -9
  105. package/dist/FormField/index.d.ts +2 -2
  106. package/dist/FormField/index.js +15 -208
  107. package/dist/FormField-a92c7bac.js +213 -0
  108. package/dist/FormatDate/FormatDate.d.ts +12 -12
  109. package/dist/FormatDate/index.d.ts +1 -1
  110. package/dist/FormatDate/index.js +24 -23
  111. package/dist/FormatEmail/FormatEmail.d.ts +8 -8
  112. package/dist/FormatEmail/index.d.ts +1 -1
  113. package/dist/FormatEmail/index.js +12 -10
  114. package/dist/FormatFile/FormatFile.d.ts +30 -30
  115. package/dist/FormatFile/FormatFileDeleteButton.d.ts +6 -6
  116. package/dist/FormatFile/InternalThumbnail.d.ts +9 -9
  117. package/dist/FormatFile/index.d.ts +1 -1
  118. package/dist/FormatFile/index.js +21 -112
  119. package/dist/FormatFile-5391d4cf.js +112 -0
  120. package/dist/FormatRelativeDateTime/FormatRelativeDateTime.d.ts +11 -11
  121. package/dist/FormatRelativeDateTime/index.d.ts +1 -1
  122. package/dist/FormatRelativeDateTime/index.js +64 -63
  123. package/dist/FormatTime/FormatTime.d.ts +15 -15
  124. package/dist/FormatTime/index.d.ts +1 -1
  125. package/dist/FormatTime/index.js +28 -27
  126. package/dist/Gallery/Gallery.d.ts +2 -2
  127. package/dist/Gallery/GalleryTypes.d.ts +31 -31
  128. package/dist/Gallery/index.d.ts +1 -1
  129. package/dist/Gallery/index.js +82 -80
  130. package/dist/Heading/Heading.d.ts +14 -14
  131. package/dist/Heading/index.d.ts +1 -1
  132. package/dist/Heading/index.js +7 -53
  133. package/dist/Heading-56750113.js +57 -0
  134. package/dist/Icon/Icon.d.ts +22 -22
  135. package/dist/Icon/index.d.ts +1 -1
  136. package/dist/Icon/index.js +4 -35
  137. package/dist/Icon-d5ad1a6d.js +41 -0
  138. package/dist/InlineLabel/InlineLabel.d.ts +17 -17
  139. package/dist/InlineLabel/index.d.ts +1 -1
  140. package/dist/InlineLabel/index.js +20 -18
  141. package/dist/InputAvatar/InputAvatar.d.ts +22 -22
  142. package/dist/InputAvatar/index.d.ts +1 -1
  143. package/dist/InputAvatar/index.js +57 -56
  144. package/dist/InputDate/InputDate.d.ts +19 -19
  145. package/dist/InputDate/index.d.ts +1 -1
  146. package/dist/InputDate/index.js +34 -33
  147. package/dist/InputEmail/InputEmail.d.ts +5 -5
  148. package/dist/InputEmail/index.d.ts +1 -1
  149. package/dist/InputEmail/index.js +29 -28
  150. package/dist/InputFile/InputFile.d.ts +121 -121
  151. package/dist/InputFile/index.d.ts +1 -1
  152. package/dist/InputFile/index.js +15 -168
  153. package/dist/InputFile-b5cf90c3.js +174 -0
  154. package/dist/InputGroup/InputGroup.d.ts +11 -11
  155. package/dist/InputGroup/index.d.ts +1 -1
  156. package/dist/InputGroup/index.js +24 -22
  157. package/dist/InputNumber/InputNumber.d.ts +11 -11
  158. package/dist/InputNumber/index.d.ts +1 -1
  159. package/dist/InputNumber/index.js +52 -51
  160. package/dist/InputPassword/InputPassword.d.ts +12 -12
  161. package/dist/InputPassword/index.d.ts +1 -1
  162. package/dist/InputPassword/index.js +28 -27
  163. package/dist/InputText/InputText.d.ts +29 -29
  164. package/dist/InputText/index.d.ts +1 -1
  165. package/dist/InputText/index.js +15 -95
  166. package/dist/InputText-cb3be15c.js +91 -0
  167. package/dist/InputTime/InputTime.d.ts +2 -2
  168. package/dist/InputTime/InputTimeProps.d.ts +18 -18
  169. package/dist/InputTime/InputTimeSafari.d.ts +2 -2
  170. package/dist/InputTime/civilTimeConversions.d.ts +3 -3
  171. package/dist/InputTime/index.d.ts +1 -1
  172. package/dist/InputTime/index.js +402 -257
  173. package/dist/InputValidation/InputValidation.d.ts +8 -8
  174. package/dist/InputValidation/index.d.ts +1 -1
  175. package/dist/InputValidation/index.js +8 -24
  176. package/dist/InputValidation-24d3621a.js +28 -0
  177. package/dist/LightBox/LightBox.d.ts +37 -37
  178. package/dist/LightBox/index.d.ts +1 -1
  179. package/dist/LightBox/index.js +6 -34
  180. package/dist/LightBox-b893b656.js +42 -0
  181. package/dist/List/List.d.ts +11 -11
  182. package/dist/List/ListItem.d.ts +54 -54
  183. package/dist/List/index.d.ts +1 -1
  184. package/dist/List/index.js +76 -74
  185. package/dist/Markdown/Markdown.d.ts +17 -17
  186. package/dist/Markdown/index.d.ts +1 -1
  187. package/dist/Markdown/index.js +12 -64
  188. package/dist/Markdown-69986c49.js +68 -0
  189. package/dist/Menu/Menu.d.ts +46 -46
  190. package/dist/Menu/index.d.ts +1 -1
  191. package/dist/Menu/index.js +13 -128
  192. package/dist/Menu-6a392af6.js +134 -0
  193. package/dist/Modal/Modal.d.ts +22 -22
  194. package/dist/Modal/index.d.ts +1 -1
  195. package/dist/Modal/index.js +14 -127
  196. package/dist/Modal/useFocusTrap.d.ts +10 -10
  197. package/dist/Modal-aaaaf2df.js +132 -0
  198. package/dist/Page/Page.d.ts +59 -59
  199. package/dist/Page/index.d.ts +1 -1
  200. package/dist/Page/index.js +63 -61
  201. package/dist/Popover/Popover.d.ts +26 -26
  202. package/dist/Popover/index.d.ts +1 -1
  203. package/dist/Popover/index.js +49 -48
  204. package/dist/ProgressBar/ProgressBar.d.ts +18 -18
  205. package/dist/ProgressBar/index.d.ts +1 -1
  206. package/dist/ProgressBar/index.js +5 -22
  207. package/dist/ProgressBar-e9a49129.js +29 -0
  208. package/dist/RadioGroup/RadioGroup.d.ts +27 -27
  209. package/dist/RadioGroup/RadioOption.d.ts +34 -34
  210. package/dist/RadioGroup/index.d.ts +2 -2
  211. package/dist/RadioGroup/index.js +38 -37
  212. package/dist/RecurringSelect/CurrentRecurrenceComponent.d.ts +8 -8
  213. package/dist/RecurringSelect/RecurringSelect.d.ts +8 -8
  214. package/dist/RecurringSelect/components/DayOfMonthSelect.d.ts +8 -8
  215. package/dist/RecurringSelect/components/MonthlyDayOfWeekSelect.d.ts +8 -8
  216. package/dist/RecurringSelect/components/MonthlySelect.d.ts +8 -8
  217. package/dist/RecurringSelect/components/WeeklySelect.d.ts +8 -8
  218. package/dist/RecurringSelect/components/index.d.ts +4 -4
  219. package/dist/RecurringSelect/index.d.ts +2 -2
  220. package/dist/RecurringSelect/types.d.ts +65 -65
  221. package/dist/Select/Option.d.ts +17 -17
  222. package/dist/Select/Select.d.ts +10 -10
  223. package/dist/Select/index.d.ts +2 -2
  224. package/dist/Select/index.js +20 -19
  225. package/dist/Spinner/Spinner.d.ts +15 -15
  226. package/dist/Spinner/index.d.ts +1 -1
  227. package/dist/Spinner/index.js +5 -19
  228. package/dist/Spinner-18d3dee6.js +26 -0
  229. package/dist/StatusLabel/StatusLabel.d.ts +25 -25
  230. package/dist/StatusLabel/index.d.ts +1 -1
  231. package/dist/StatusLabel/index.js +21 -19
  232. package/dist/Switch/Switch.d.ts +14 -14
  233. package/dist/Switch/index.d.ts +1 -1
  234. package/dist/Switch/index.js +7 -53
  235. package/dist/Switch-d2bec677.js +60 -0
  236. package/dist/Table/Body.d.ts +6 -6
  237. package/dist/Table/Cells/Cell.d.ts +7 -7
  238. package/dist/Table/Cells/CellCurrency.d.ts +8 -8
  239. package/dist/Table/Cells/CellNumeric.d.ts +4 -4
  240. package/dist/Table/Footer.d.ts +6 -6
  241. package/dist/Table/Header.d.ts +6 -6
  242. package/dist/Table/Row.d.ts +6 -6
  243. package/dist/Table/Table.d.ts +6 -6
  244. package/dist/Table/index.d.ts +8 -8
  245. package/dist/Table/index.js +41 -39
  246. package/dist/Tabs/Tabs.d.ts +19 -19
  247. package/dist/Tabs/index.d.ts +1 -1
  248. package/dist/Tabs/index.js +69 -67
  249. package/dist/Text/Text.d.ts +9 -9
  250. package/dist/Text/index.d.ts +1 -1
  251. package/dist/Text/index.js +7 -29
  252. package/dist/Text-9bc093e9.js +32 -0
  253. package/dist/Toast/Toast.d.ts +17 -17
  254. package/dist/Toast/index.d.ts +1 -1
  255. package/dist/Toast/index.js +93 -93
  256. package/dist/Toast/showToast.d.ts +2 -2
  257. package/dist/Tooltip/Tooltip.d.ts +10 -10
  258. package/dist/Tooltip/index.d.ts +1 -1
  259. package/dist/Tooltip/index.js +11 -110
  260. package/dist/Tooltip/useTooltipPositioning.d.ts +18 -18
  261. package/dist/Tooltip-4396164d.js +116 -0
  262. package/dist/Typography/Typography.d.ts +38 -38
  263. package/dist/Typography/index.d.ts +1 -1
  264. package/dist/Typography/index.js +6 -57
  265. package/dist/Typography-7e542a72.js +64 -0
  266. package/dist/{chunk-17e02351.js → style-inject.es-dcee06b6.js} +0 -0
  267. package/dist/{chunk-b67af3cb.js → tslib.es6-5b50eb8e.js} +0 -0
  268. package/package.json +6 -8
  269. package/rollup.config.js +28 -3
@@ -2,532 +2,534 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
6
-
7
- var __chunk_1 = require('../chunk-b67af3cb.js');
8
5
  var React = require('react');
9
- var React__default = _interopDefault(React);
10
- var __chunk_2 = require('../chunk-17e02351.js');
11
- var classnames = _interopDefault(require('classnames'));
12
- var index = require('../Typography/index.js');
13
- var index$1 = require('../Text/index.js');
14
- require('@jobber/design');
15
- var index$2 = require('../Icon/index.js');
6
+ var tslib_es6 = require('../tslib.es6-5b50eb8e.js');
7
+ var classnames = require('classnames');
8
+ var styleInject_es = require('../style-inject.es-dcee06b6.js');
9
+ var hooks = require('@jobber/hooks');
10
+ var Icon = require('../Icon-d5ad1a6d.js');
11
+ var Avatar = require('../Avatar-cfd04e86.js');
12
+ var Typography = require('../Typography-7e542a72.js');
13
+ var Tooltip = require('../Tooltip-4396164d.js');
16
14
  var uuid = require('uuid');
17
- require('react-router-dom');
18
- var index$5 = require('../Button/index.js');
19
- require('framer-motion');
20
- var index$7 = require('../Spinner/index.js');
21
- var index$3 = require('../Avatar/index.js');
15
+ var lodash = require('lodash');
16
+ var reactPopper = require('react-popper');
17
+ var Text = require('../Text-9bc093e9.js');
18
+ var Button = require('../Button-5b2f1636.js');
19
+ var Spinner = require('../Spinner-18d3dee6.js');
20
+ require('@jobber/design');
22
21
  require('color');
23
- var hooks = require('@jobber/hooks');
24
22
  require('react-dom');
25
- var index$4 = require('../Tooltip/index.js');
26
- var reactPopper = require('react-popper');
27
- var lodash = require('lodash');
23
+ require('framer-motion');
24
+ require('react-router-dom');
25
+
26
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
27
+
28
+ var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
29
+ var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
28
30
 
29
- var css = "/**\n * Used in the wrapping chips component:\n * - InternalChipSingleSelect\n * - InternalChipMultiSelect\n */\n\n.uhcyg-a-GLRKF_7oHwvMP {\n display: -ms-flexbox;\n display: flex;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._2XfthED8eqbKIyTNoH1aWp {\n display: inline-grid;\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-larger);\n color: var(--color-text--secondary);\n text-align: left;\n vertical-align: middle;\n background-color: var(--color-surface);\n transition: var(--timing-base) ease-in-out;\n transition-property: background-color, box-shadow, color;\n grid-template-columns: -webkit-max-content;\n grid-template-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm,\n.fl19i7ccgBu7NZkxnpvcI {\n padding: calc(var(--space-smaller) + var(--space-smallest)) var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm {\n grid-template-columns: -webkit-min-content 1fr;\n grid-template-columns: min-content 1fr;\n}\n\n.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: 1fr -webkit-min-content;\n grid-template-columns: 1fr min-content;\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: -webkit-min-content 1fr -webkit-min-content;\n grid-template-columns: min-content 1fr min-content;\n}\n\n._3Uf2El5YBbG3DmUWHBhuea,\n._35he2rVDYRU4YQko5r4adP ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-base);\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n/**\n * Interaction\n */\n\n._3Uf2El5YBbG3DmUWHBhuea:hover,\n._2XfthED8eqbKIyTNoH1aWp:focus {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._2XfthED8eqbKIyTNoH1aWp:focus,\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-focus);\n}\n\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp:not(._18wCcoIrboygQTnIVm8yzS) {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n/**\n * States\n */\n\n._2XfthED8eqbKIyTNoH1aWp._18wCcoIrboygQTnIVm8yzS {\n border-color: var(--color-surface--reverse);\n color: var(--color-text--reverse);\n background-color: var(--color-surface--reverse);\n}\n\n._2XfthED8eqbKIyTNoH1aWp._1FTJ2ALrm1mVaT7HdMFFGN {\n border-color: var(--color-critical--onSurface);\n color: var(--color-critical--onSurface);\n background-color: var(--color-critical--surface);\n}\n\n._2XfthED8eqbKIyTNoH1aWp.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled--secondary);\n color: var(--color-disabled);\n background-color: var(--color-disabled--secondary);\n}\n\n._18wCcoIrboygQTnIVm8yzS.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled);\n color: var(--color-white);\n background-color: var(--color-disabled);\n}\n\n._1FTJ2ALrm1mVaT7HdMFFGN.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-critical);\n}\n\n/**\n * Input checkbox/radio\n *\n * Hide checkbox on UI but not screen readers and still allow focus state\n */\n\n._35he2rVDYRU4YQko5r4adP {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n/**\n * Button\n */\n\n._1M_ek3kiaa7OApx5rwBEc3 {\n display: -ms-flexbox;\n display: flex;\n border-radius: var(--radius-base);\n cursor: pointer;\n transition: background-color 200ms ease;\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:hover,\n._1M_ek3kiaa7OApx5rwBEc3:focus {\n background-color: var(--color-surface--hover);\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:focus,\n._3Uf2El5YBbG3DmUWHBhuea ._1M_ek3kiaa7OApx5rwBEc3:hover {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n/**\n * Override icon default colors.\n *\n * NOTE: This is a workaround since some icons have default colors that we don't\n * want to override until the component color prop overrides it.\n * DO NOT COPY!\n */\n\n._3AG5dSWeyKYD1Xfu9fN_DL > svg {\n fill: var(--color-interactive--subtle);\n}\n\n._3AG5dSWeyKYD1Xfu9fN_DL {\n display: -ms-flexbox;\n display: flex;\n}\n";
30
- var styles = {"wrapper":"uhcyg-a-GLRKF_7oHwvMP","chip":"_2XfthED8eqbKIyTNoH1aWp","hasPrefix":"_4U2lNr3Kk6xnNZTk3Fxgm","hasSuffix":"fl19i7ccgBu7NZkxnpvcI","clickable":"_3Uf2El5YBbG3DmUWHBhuea","input":"_35he2rVDYRU4YQko5r4adP","active":"_18wCcoIrboygQTnIVm8yzS","invalid":"_1FTJ2ALrm1mVaT7HdMFFGN","disabled":"B1ELFzeQy9Ihy9oYcv-px","button":"_1M_ek3kiaa7OApx5rwBEc3","icon":"_3AG5dSWeyKYD1Xfu9fN_DL"};
31
- __chunk_2.styleInject(css);
31
+ var css$1 = "/**\n * Used in the wrapping chips component:\n * - InternalChipSingleSelect\n * - InternalChipMultiSelect\n */\n\n.uhcyg-a-GLRKF_7oHwvMP {\n display: -ms-flexbox;\n display: flex;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n._2XfthED8eqbKIyTNoH1aWp {\n display: inline-grid;\n position: relative;\n max-width: 100%;\n box-sizing: border-box;\n padding: var(--space-small);\n border: var(--border-base) solid var(--color-border);\n border-radius: var(--radius-larger);\n color: var(--color-text--secondary);\n text-align: left;\n vertical-align: middle;\n background-color: var(--color-surface);\n transition: var(--timing-base) ease-in-out;\n transition-property: background-color, box-shadow, color;\n grid-template-columns: -webkit-max-content;\n grid-template-columns: max-content;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm,\n.fl19i7ccgBu7NZkxnpvcI {\n padding: calc(var(--space-smaller) + var(--space-smallest)) var(--space-small);\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm {\n grid-template-columns: -webkit-min-content 1fr;\n grid-template-columns: min-content 1fr;\n}\n\n.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: 1fr -webkit-min-content;\n grid-template-columns: 1fr min-content;\n}\n\n._4U2lNr3Kk6xnNZTk3Fxgm.fl19i7ccgBu7NZkxnpvcI {\n grid-template-columns: -webkit-min-content 1fr -webkit-min-content;\n grid-template-columns: min-content 1fr min-content;\n}\n\n._3Uf2El5YBbG3DmUWHBhuea,\n._35he2rVDYRU4YQko5r4adP ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-base);\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n/**\n * Interaction\n */\n\n._3Uf2El5YBbG3DmUWHBhuea:hover,\n._2XfthED8eqbKIyTNoH1aWp:focus {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._2XfthED8eqbKIyTNoH1aWp:focus,\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp {\n box-shadow: var(--shadow-focus);\n}\n\n._35he2rVDYRU4YQko5r4adP:focus ~ ._2XfthED8eqbKIyTNoH1aWp:not(._18wCcoIrboygQTnIVm8yzS) {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n/**\n * States\n */\n\n._2XfthED8eqbKIyTNoH1aWp._18wCcoIrboygQTnIVm8yzS {\n border-color: var(--color-surface--reverse);\n color: var(--color-text--reverse);\n background-color: var(--color-surface--reverse);\n}\n\n._2XfthED8eqbKIyTNoH1aWp._1FTJ2ALrm1mVaT7HdMFFGN {\n border-color: var(--color-critical--onSurface);\n color: var(--color-critical--onSurface);\n background-color: var(--color-critical--surface);\n}\n\n._2XfthED8eqbKIyTNoH1aWp.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled--secondary);\n color: var(--color-disabled);\n background-color: var(--color-disabled--secondary);\n}\n\n._18wCcoIrboygQTnIVm8yzS.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-disabled);\n color: var(--color-white);\n background-color: var(--color-disabled);\n}\n\n._1FTJ2ALrm1mVaT7HdMFFGN.B1ELFzeQy9Ihy9oYcv-px {\n border-color: var(--color-critical);\n}\n\n/**\n * Input checkbox/radio\n *\n * Hide checkbox on UI but not screen readers and still allow focus state\n */\n\n._35he2rVDYRU4YQko5r4adP {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip: rect(0 0 0 0);\n -webkit-clip-path: inset(100%);\n clip-path: inset(100%);\n white-space: nowrap;\n}\n\n/**\n * Button\n */\n\n._1M_ek3kiaa7OApx5rwBEc3 {\n display: -ms-flexbox;\n display: flex;\n border-radius: var(--radius-base);\n cursor: pointer;\n transition: background-color 200ms ease;\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:hover,\n._1M_ek3kiaa7OApx5rwBEc3:focus {\n background-color: var(--color-surface--hover);\n}\n\n._1M_ek3kiaa7OApx5rwBEc3:focus,\n._3Uf2El5YBbG3DmUWHBhuea ._1M_ek3kiaa7OApx5rwBEc3:hover {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n\n/**\n * Override icon default colors.\n *\n * NOTE: This is a workaround since some icons have default colors that we don't\n * want to override until the component color prop overrides it.\n * DO NOT COPY!\n */\n\n._3AG5dSWeyKYD1Xfu9fN_DL > svg {\n fill: var(--color-interactive--subtle);\n}\n\n._3AG5dSWeyKYD1Xfu9fN_DL {\n display: -ms-flexbox;\n display: flex;\n}\n";
32
+ var styles$1 = {"wrapper":"uhcyg-a-GLRKF_7oHwvMP","chip":"_2XfthED8eqbKIyTNoH1aWp","hasPrefix":"_4U2lNr3Kk6xnNZTk3Fxgm","hasSuffix":"fl19i7ccgBu7NZkxnpvcI","clickable":"_3Uf2El5YBbG3DmUWHBhuea","input":"_35he2rVDYRU4YQko5r4adP","active":"_18wCcoIrboygQTnIVm8yzS","invalid":"_1FTJ2ALrm1mVaT7HdMFFGN","disabled":"B1ELFzeQy9Ihy9oYcv-px","button":"_1M_ek3kiaa7OApx5rwBEc3","icon":"_3AG5dSWeyKYD1Xfu9fN_DL"};
33
+ styleInject_es.styleInject(css$1);
32
34
 
33
- function InternalChipButton(_a) {
34
- var icon = _a.icon, invalid = _a.invalid, disabled = _a.disabled, label = _a.label, onClick = _a.onClick;
35
- var buttonRef = React.useRef();
36
- return (React__default.createElement("div", { ref: buttonRef, className: styles.button, tabIndex: 0, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, onClick: handleClick, role: "button", "aria-label": "Remove " + label, "aria-hidden": true, "aria-disabled": disabled, "data-testid": "remove-chip-button" },
37
- React__default.createElement(index$2.Icon, { name: icon, color: getColor() })));
38
- function handleKeyUp(event) {
39
- if (document.activeElement === buttonRef.current &&
40
- (event.key === " " || event.key === "Enter")) {
41
- event.stopPropagation();
42
- buttonRef.current.click();
43
- }
44
- }
45
- function handleKeyDown(event) {
46
- if (document.activeElement === buttonRef.current && event.key === " ") {
47
- // Don't scroll down
48
- event.preventDefault();
49
- }
50
- }
51
- function getColor() {
52
- if (disabled)
53
- return "disabled";
54
- if (invalid)
55
- return "critical";
56
- return "greyBlue";
57
- }
58
- function handleClick(event) {
59
- event.stopPropagation();
60
- onClick === null || onClick === void 0 ? void 0 : onClick(event);
61
- }
35
+ function InternalChipButton(_a) {
36
+ var icon = _a.icon, invalid = _a.invalid, disabled = _a.disabled, label = _a.label, onClick = _a.onClick;
37
+ var buttonRef = React.useRef();
38
+ return (React__default["default"].createElement("div", { ref: buttonRef, className: styles$1.button, tabIndex: 0, onKeyUp: handleKeyUp, onKeyDown: handleKeyDown, onClick: handleClick, role: "button", "aria-label": "Remove " + label, "aria-hidden": true, "aria-disabled": disabled, "data-testid": "remove-chip-button" },
39
+ React__default["default"].createElement(Icon.Icon, { name: icon, color: getColor() })));
40
+ function handleKeyUp(event) {
41
+ if (document.activeElement === buttonRef.current &&
42
+ (event.key === " " || event.key === "Enter")) {
43
+ event.stopPropagation();
44
+ buttonRef.current.click();
45
+ }
46
+ }
47
+ function handleKeyDown(event) {
48
+ if (document.activeElement === buttonRef.current && event.key === " ") {
49
+ // Don't scroll down
50
+ event.preventDefault();
51
+ }
52
+ }
53
+ function getColor() {
54
+ if (disabled)
55
+ return "disabled";
56
+ if (invalid)
57
+ return "critical";
58
+ return "greyBlue";
59
+ }
60
+ function handleClick(event) {
61
+ event.stopPropagation();
62
+ onClick === null || onClick === void 0 ? void 0 : onClick(event);
63
+ }
62
64
  }
63
65
 
64
- function InternalChipAffix(_a) {
65
- var affix = _a.affix, active = _a.active, invalid = _a.invalid, disabled = _a.disabled;
66
- assertProps();
67
- if ((affix === null || affix === void 0 ? void 0 : affix.type) === index$3.Avatar) {
68
- return React__default.createElement(index$3.Avatar, __chunk_1.__assign({}, affix.props, { size: "small" }));
69
- }
70
- if ((affix === null || affix === void 0 ? void 0 : affix.type) === index$2.Icon) {
71
- return renderChipIcon(affix);
72
- }
73
- if ((affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton) {
74
- return React__default.createElement(InternalChipButton, __chunk_1.__assign({}, affix.props));
75
- }
76
- return React__default.createElement(React__default.Fragment, null);
77
- function renderChipIcon(icon) {
78
- var color = getIconColor();
79
- return (React__default.createElement("div", { className: styles.icon }, React__default.cloneElement(icon, __chunk_1.__assign({ size: "base" }, (color && { color: color })))));
80
- }
81
- function getIconColor() {
82
- if (disabled && !active)
83
- return "disabled";
84
- if (invalid && !disabled)
85
- return "critical";
86
- if (active)
87
- return "white";
88
- return;
89
- }
90
- function assertProps() {
91
- var isAvatar = (affix === null || affix === void 0 ? void 0 : affix.type) === index$3.Avatar || false;
92
- var isIcon = (affix === null || affix === void 0 ? void 0 : affix.type) === index$2.Icon || false;
93
- var isChipButton = (affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton || false;
94
- hooks.useAssert(!!affix && !(isAvatar || isIcon || isChipButton), "Prefix prop only accepts \"<Avatar />\" or \"<Icon />\" component. You have \"" + (affix === null || affix === void 0 ? void 0 : affix.type) + "\".");
95
- }
66
+ function InternalChipAffix(_a) {
67
+ var affix = _a.affix, active = _a.active, invalid = _a.invalid, disabled = _a.disabled;
68
+ assertProps();
69
+ if ((affix === null || affix === void 0 ? void 0 : affix.type) === Avatar.Avatar) {
70
+ return React__default["default"].createElement(Avatar.Avatar, tslib_es6.__assign({}, affix.props, { size: "small" }));
71
+ }
72
+ if ((affix === null || affix === void 0 ? void 0 : affix.type) === Icon.Icon) {
73
+ return renderChipIcon(affix);
74
+ }
75
+ if ((affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton) {
76
+ return React__default["default"].createElement(InternalChipButton, tslib_es6.__assign({}, affix.props));
77
+ }
78
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
79
+ function renderChipIcon(icon) {
80
+ var color = getIconColor();
81
+ return (React__default["default"].createElement("div", { className: styles$1.icon }, React__default["default"].cloneElement(icon, tslib_es6.__assign({ size: "base" }, (color && { color: color })))));
82
+ }
83
+ function getIconColor() {
84
+ if (disabled && !active)
85
+ return "disabled";
86
+ if (invalid && !disabled)
87
+ return "critical";
88
+ if (active)
89
+ return "white";
90
+ return;
91
+ }
92
+ function assertProps() {
93
+ var isAvatar = (affix === null || affix === void 0 ? void 0 : affix.type) === Avatar.Avatar || false;
94
+ var isIcon = (affix === null || affix === void 0 ? void 0 : affix.type) === Icon.Icon || false;
95
+ var isChipButton = (affix === null || affix === void 0 ? void 0 : affix.type) === InternalChipButton || false;
96
+ hooks.useAssert(!!affix && !(isAvatar || isIcon || isChipButton), "Prefix prop only accepts \"<Avatar />\" or \"<Icon />\" component. You have \"" + (affix === null || affix === void 0 ? void 0 : affix.type) + "\".");
97
+ }
96
98
  }
97
99
 
98
- function InternalChip(_a) {
99
- var _b;
100
- var label = _a.label, _c = _a.active, active = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.invalid, invalid = _e === void 0 ? false : _e, prefix = _a.prefix, suffix = _a.suffix, tabIndex = _a.tabIndex, ariaLabel = _a.ariaLabel, onClick = _a.onClick, onKeyDown = _a.onKeyDown;
101
- var _f = __chunk_1.__read(React.useState(), 2), truncateRef = _f[0], setTruncateRef = _f[1];
102
- var isClickable = onClick && !disabled;
103
- var classNames = classnames(styles.chip, (_b = {},
104
- _b[styles.clickable] = isClickable,
105
- _b[styles.active] = active,
106
- _b[styles.disabled] = disabled,
107
- _b[styles.invalid] = invalid,
108
- _b[styles.hasPrefix] = prefix,
109
- _b[styles.hasSuffix] = suffix,
110
- _b));
111
- var affixProps = { active: active, invalid: invalid, disabled: disabled };
112
- var Tag = onClick ? "button" : "div";
113
- var chip = (React__default.createElement(Tag, __chunk_1.__assign({ className: classNames }, (isClickable && { onClick: onClick, disabled: disabled }), { onKeyDown: onKeyDown, "data-testid": "chip-wrapper", "aria-label": ariaLabel, tabIndex: tabIndex, role: tabIndex !== undefined ? "option" : undefined }),
114
- React__default.createElement(InternalChipAffix, __chunk_1.__assign({ affix: prefix }, affixProps)),
115
- React__default.createElement(index.Typography, { element: "span", numberOfLines: 1, size: "base" },
116
- React__default.createElement("span", { ref: setTruncateRef }, label)),
117
- React__default.createElement(InternalChipAffix, __chunk_1.__assign({ affix: suffix }, affixProps))));
118
- return isTruncated() ? React__default.createElement(index$4.Tooltip, { message: label }, chip) : chip;
119
- function isTruncated() {
120
- var _a;
121
- var truncateParentHeight = ((_a = truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.parentElement) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;
122
- var truncateChildHeight = (truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.offsetHeight) || 0;
123
- return truncateChildHeight >= truncateParentHeight * 2;
124
- }
100
+ function InternalChip(_a) {
101
+ var _b;
102
+ var label = _a.label, _c = _a.active, active = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.invalid, invalid = _e === void 0 ? false : _e, prefix = _a.prefix, suffix = _a.suffix, tabIndex = _a.tabIndex, ariaLabel = _a.ariaLabel, onClick = _a.onClick, onKeyDown = _a.onKeyDown;
103
+ var _f = tslib_es6.__read(React.useState(), 2), truncateRef = _f[0], setTruncateRef = _f[1];
104
+ var isClickable = onClick && !disabled;
105
+ var classNames = classnames__default["default"](styles$1.chip, (_b = {},
106
+ _b[styles$1.clickable] = isClickable,
107
+ _b[styles$1.active] = active,
108
+ _b[styles$1.disabled] = disabled,
109
+ _b[styles$1.invalid] = invalid,
110
+ _b[styles$1.hasPrefix] = prefix,
111
+ _b[styles$1.hasSuffix] = suffix,
112
+ _b));
113
+ var affixProps = { active: active, invalid: invalid, disabled: disabled };
114
+ var Tag = onClick ? "button" : "div";
115
+ var chip = (React__default["default"].createElement(Tag, tslib_es6.__assign({ className: classNames }, (isClickable && { onClick: onClick, disabled: disabled }), { onKeyDown: onKeyDown, "data-testid": "chip-wrapper", "aria-label": ariaLabel, tabIndex: tabIndex, role: tabIndex !== undefined ? "option" : undefined }),
116
+ React__default["default"].createElement(InternalChipAffix, tslib_es6.__assign({ affix: prefix }, affixProps)),
117
+ React__default["default"].createElement(Typography.Typography, { element: "span", numberOfLines: 1, size: "base" },
118
+ React__default["default"].createElement("span", { ref: setTruncateRef }, label)),
119
+ React__default["default"].createElement(InternalChipAffix, tslib_es6.__assign({ affix: suffix }, affixProps))));
120
+ return isTruncated() ? React__default["default"].createElement(Tooltip.Tooltip, { message: label }, chip) : chip;
121
+ function isTruncated() {
122
+ var _a;
123
+ var truncateParentHeight = ((_a = truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.parentElement) === null || _a === void 0 ? void 0 : _a.offsetHeight) || 0;
124
+ var truncateChildHeight = (truncateRef === null || truncateRef === void 0 ? void 0 : truncateRef.offsetHeight) || 0;
125
+ return truncateChildHeight >= truncateParentHeight * 2;
126
+ }
125
127
  }
126
128
 
127
- function ChipDismissible(_a) {
128
- var label = _a.label, disabled = _a.disabled, invalid = _a.invalid, prefix = _a.prefix, onClick = _a.onClick, onRequestRemove = _a.onRequestRemove;
129
- return (React__default.createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default.createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
129
+ function ChipDismissible(_a) {
130
+ var label = _a.label, disabled = _a.disabled, invalid = _a.invalid, prefix = _a.prefix, onClick = _a.onClick, onRequestRemove = _a.onRequestRemove;
131
+ return (React__default["default"].createElement(InternalChip, { label: label, disabled: disabled, invalid: invalid, prefix: prefix, onClick: onClick, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", label: label, invalid: invalid, disabled: disabled, onClick: onRequestRemove }) }));
130
132
  }
131
133
 
132
- function InternalChipSingleSelect(_a) {
133
- var children = _a.children, selected = _a.selected, _b = _a.name, name = _b === void 0 ? uuid.v1() : _b, onChange = _a.onChange, onClick = _a.onClick;
134
- return (React__default.createElement("div", { className: styles.wrapper, "data-testid": "singleselect-chips" }, React__default.Children.map(children, function (child) {
135
- var isSelected = child.props.value === selected;
136
- return (React__default.createElement("label", null,
137
- React__default.createElement("input", { type: "radio", checked: isSelected, className: styles.input, name: name, onClick: handleClick(child.props.value), onKeyUp: handleKeyUp(isSelected, child.props.value), onChange: function () {
138
- /* No op. onClick handles the change to allow deselecting. */
139
- }, disabled: child.props.disabled }),
140
- React__default.createElement(InternalChip, __chunk_1.__assign({}, child.props, { active: isSelected }))));
141
- })));
142
- function handleKeyUp(active, value) {
143
- if (!active)
144
- return;
145
- return function (event) {
146
- if (event.key === " ") {
147
- // Wait for DOM changes before applying the new change.
148
- setTimeout(function () { return handleChange(value); }, 0);
149
- }
150
- };
151
- }
152
- function handleClick(value) {
153
- return function (event) {
154
- onClick === null || onClick === void 0 ? void 0 : onClick(event, value);
155
- handleChange(value);
156
- };
157
- }
158
- function handleChange(value) {
159
- var newValue = value !== selected ? value : undefined;
160
- onChange(newValue);
161
- }
134
+ function InternalChipSingleSelect(_a) {
135
+ var children = _a.children, selected = _a.selected, _b = _a.name, name = _b === void 0 ? uuid.v1() : _b, onChange = _a.onChange, onClick = _a.onClick;
136
+ return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "singleselect-chips" }, React__default["default"].Children.map(children, function (child) {
137
+ var isSelected = child.props.value === selected;
138
+ return (React__default["default"].createElement("label", null,
139
+ React__default["default"].createElement("input", { type: "radio", checked: isSelected, className: styles$1.input, name: name, onClick: handleClick(child.props.value), onKeyUp: handleKeyUp(isSelected, child.props.value), onChange: function () {
140
+ /* No op. onClick handles the change to allow deselecting. */
141
+ }, disabled: child.props.disabled }),
142
+ React__default["default"].createElement(InternalChip, tslib_es6.__assign({}, child.props, { active: isSelected }))));
143
+ })));
144
+ function handleKeyUp(active, value) {
145
+ if (!active)
146
+ return;
147
+ return function (event) {
148
+ if (event.key === " ") {
149
+ // Wait for DOM changes before applying the new change.
150
+ setTimeout(function () { return handleChange(value); }, 0);
151
+ }
152
+ };
153
+ }
154
+ function handleClick(value) {
155
+ return function (event) {
156
+ onClick === null || onClick === void 0 ? void 0 : onClick(event, value);
157
+ handleChange(value);
158
+ };
159
+ }
160
+ function handleChange(value) {
161
+ var newValue = value !== selected ? value : undefined;
162
+ onChange(newValue);
163
+ }
162
164
  }
163
165
 
164
- function InternalChipMultiSelect(_a) {
165
- var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick;
166
- return (React__default.createElement("div", { className: styles.wrapper, "data-testid": "multiselect-chips" }, React__default.Children.map(children, function (chip) {
167
- var isChipActive = isChipSelected(chip.props.value);
168
- return (React__default.createElement("label", null,
169
- React__default.createElement("input", { type: "checkbox", checked: isChipActive, className: styles.input, onClick: handleClick(chip.props.value), onChange: handleChange(chip.props.value), disabled: chip.props.disabled }),
170
- React__default.createElement(InternalChip, __chunk_1.__assign({}, chip.props, { active: isChipActive, suffix: checkmarkIcon(isChipActive) }))));
171
- })));
172
- function isChipSelected(value) {
173
- return selected.includes(value);
174
- }
175
- function handleClick(value) {
176
- return function (event) { return onClick === null || onClick === void 0 ? void 0 : onClick(event, value); };
177
- }
178
- function handleChange(value) {
179
- return function () {
180
- if (isChipSelected(value)) {
181
- handleDeselect(value);
182
- }
183
- else {
184
- handleSelect(value);
185
- }
186
- };
187
- }
188
- function handleSelect(value) {
189
- var newVal = __chunk_1.__spread(selected, [value]);
190
- onChange(newVal);
191
- }
192
- function handleDeselect(value) {
193
- var values = selected;
194
- var newVal = values.filter(function (val) { return val !== value; });
195
- onChange(newVal);
196
- }
197
- function checkmarkIcon(show) {
198
- // Ideally, we should be returning a fragment `<></>` when a function
199
- // returns a component / element. However, this one needs to return nothing
200
- // to prevent it from randomly rendering a suffix.
201
- //
202
- // DO NOT COPY!
203
- if (!show)
204
- return;
205
- return React__default.createElement(index$2.Icon, { name: "checkmark" });
206
- }
166
+ function InternalChipMultiSelect(_a) {
167
+ var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick;
168
+ return (React__default["default"].createElement("div", { className: styles$1.wrapper, "data-testid": "multiselect-chips" }, React__default["default"].Children.map(children, function (chip) {
169
+ var isChipActive = isChipSelected(chip.props.value);
170
+ return (React__default["default"].createElement("label", null,
171
+ React__default["default"].createElement("input", { type: "checkbox", checked: isChipActive, className: styles$1.input, onClick: handleClick(chip.props.value), onChange: handleChange(chip.props.value), disabled: chip.props.disabled }),
172
+ React__default["default"].createElement(InternalChip, tslib_es6.__assign({}, chip.props, { active: isChipActive, suffix: checkmarkIcon(isChipActive) }))));
173
+ })));
174
+ function isChipSelected(value) {
175
+ return selected.includes(value);
176
+ }
177
+ function handleClick(value) {
178
+ return function (event) { return onClick === null || onClick === void 0 ? void 0 : onClick(event, value); };
179
+ }
180
+ function handleChange(value) {
181
+ return function () {
182
+ if (isChipSelected(value)) {
183
+ handleDeselect(value);
184
+ }
185
+ else {
186
+ handleSelect(value);
187
+ }
188
+ };
189
+ }
190
+ function handleSelect(value) {
191
+ var newVal = tslib_es6.__spread(selected, [value]);
192
+ onChange(newVal);
193
+ }
194
+ function handleDeselect(value) {
195
+ var values = selected;
196
+ var newVal = values.filter(function (val) { return val !== value; });
197
+ onChange(newVal);
198
+ }
199
+ function checkmarkIcon(show) {
200
+ // Ideally, we should be returning a fragment `<></>` when a function
201
+ // returns a component / element. However, this one needs to return nothing
202
+ // to prevent it from randomly rendering a suffix.
203
+ //
204
+ // DO NOT COPY!
205
+ if (!show)
206
+ return;
207
+ return React__default["default"].createElement(Icon.Icon, { name: "checkmark" });
208
+ }
207
209
  }
208
210
 
209
- var css$1 = ".UICoKaZcJNyJZu_jLSFe0 {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-sizing: border-box;\n border: var(--border-base) solid transparent;\n border-radius: var(--radius-base);\n transition: all var(--timing-base);\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.iYpu9Vckapbgfo7nKby6- {\n -ms-flex: 1;\n flex: 1;\n min-width: 120px;\n padding: var(--space-small) 0;\n border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-size: var(--typography--fontSize-base);\n line-height: var(--typography--lineHeight-base);\n background: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.iYpu9Vckapbgfo7nKby6-:focus {\n outline: none;\n}\n\n._3Y-bhobfNvAAUslopzbOoq {\n position: relative;\n z-index: var(--elevation-menu);\n width: 100%;\n}\n\n._3pV83Z-mpuL-nlud9deXib {\n max-height: 320px;\n box-shadow: var(--shadow-base);\n padding: var(--space-small) 0;\n border-radius: var(--radius-base);\n overflow-y: scroll;\n background-color: var(--color-surface);\n}\n\n.yZlvrckyLt2bbuJSDc3s_,\n._1JS35aIdiRtVwq3RLMJLlj {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: var(--space-small);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus {\n box-shadow: var(--shadow-focus);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus,\n._1P6NA2S4eCq-AiLRgspXJX {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._1JS35aIdiRtVwq3RLMJLlj {\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
210
- var styles$1 = {"wrapper":"UICoKaZcJNyJZu_jLSFe0","input":"iYpu9Vckapbgfo7nKby6-","menu":"_3Y-bhobfNvAAUslopzbOoq","menuList":"_3pV83Z-mpuL-nlud9deXib","menuListOption":"yZlvrckyLt2bbuJSDc3s_","loadingIndicator":"_1JS35aIdiRtVwq3RLMJLlj","activeOption":"_1P6NA2S4eCq-AiLRgspXJX"};
211
- __chunk_2.styleInject(css$1);
211
+ var css = ".UICoKaZcJNyJZu_jLSFe0 {\n display: -ms-flexbox;\n display: flex;\n position: relative;\n box-sizing: border-box;\n border: var(--border-base) solid transparent;\n border-radius: var(--radius-base);\n transition: all var(--timing-base);\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n -ms-flex-align: center;\n align-items: center;\n}\n\n.iYpu9Vckapbgfo7nKby6- {\n -ms-flex: 1;\n flex: 1;\n min-width: 120px;\n padding: var(--space-small) 0;\n border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n font-size: var(--typography--fontSize-base);\n line-height: var(--typography--lineHeight-base);\n background: transparent;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n}\n\n.iYpu9Vckapbgfo7nKby6-:focus {\n outline: none;\n}\n\n._3Y-bhobfNvAAUslopzbOoq {\n position: relative;\n z-index: var(--elevation-menu);\n width: 100%;\n}\n\n._3pV83Z-mpuL-nlud9deXib {\n max-height: 320px;\n box-shadow: var(--shadow-base);\n padding: var(--space-small) 0;\n border-radius: var(--radius-base);\n overflow-y: scroll;\n background-color: var(--color-surface);\n}\n\n.yZlvrckyLt2bbuJSDc3s_,\n._1JS35aIdiRtVwq3RLMJLlj {\n display: -ms-flexbox;\n display: flex;\n width: 100%;\n padding: var(--space-small);\n border: none;\n background-color: transparent;\n cursor: pointer;\n -webkit-appearance: none;\n -moz-appearance: none;\n appearance: none;\n -ms-flex-align: center;\n align-items: center;\n grid-gap: var(--space-small);\n grid-gap: var(--space-small);\n gap: var(--space-small);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus {\n box-shadow: var(--shadow-focus);\n}\n\n.yZlvrckyLt2bbuJSDc3s_:focus,\n._1P6NA2S4eCq-AiLRgspXJX {\n outline: none;\n background-color: var(--color-surface--hover);\n}\n\n._1JS35aIdiRtVwq3RLMJLlj {\n -ms-flex-pack: center;\n justify-content: center;\n}\n";
212
+ var styles = {"wrapper":"UICoKaZcJNyJZu_jLSFe0","input":"iYpu9Vckapbgfo7nKby6-","menu":"_3Y-bhobfNvAAUslopzbOoq","menuList":"_3pV83Z-mpuL-nlud9deXib","menuListOption":"yZlvrckyLt2bbuJSDc3s_","loadingIndicator":"_1JS35aIdiRtVwq3RLMJLlj","activeOption":"_1P6NA2S4eCq-AiLRgspXJX"};
213
+ styleInject_es.styleInject(css);
212
214
 
213
- function useInternalChipDismissible(_a) {
214
- var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick, onCustomAdd = _a.onCustomAdd;
215
- var ref = React.useRef(null);
216
- var chipOptions = children.map(function (chip) { return chip.props; });
217
- var visibleChipOptions = chipOptions.filter(function (chip) {
218
- return selected.includes(chip.value);
219
- });
220
- var sortedVisibleChipOptions = lodash.sortBy(visibleChipOptions, function (chip) {
221
- return selected.indexOf(chip.value);
222
- });
223
- var availableChipOptions = chipOptions.filter(function (chip) { return !selected.includes(chip.value); });
224
- var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
225
- var actions = {
226
- handleChipRemove: function (value) {
227
- return function () {
228
- liveAnnounce(value + " Removed");
229
- onChange(selected.filter(function (val) { return val !== value; }));
230
- };
231
- },
232
- handleChipAdd: function (value) { return onChange(__chunk_1.__spread(selected, [value])); },
233
- handleCustomAdd: onCustomAdd,
234
- handleChipClick: function (value) {
235
- if (onClick === undefined)
236
- return;
237
- return function (event) { return onClick(event, value); };
238
- },
239
- handleWrapperKeyDown: function (event) {
240
- var target = event.target;
241
- var isInputAndHasValue = target instanceof HTMLInputElement && target.value;
242
- if (isInputAndHasValue)
243
- return;
244
- var nextElementToFocus = target.nextElementSibling;
245
- var prevElementToFocus = target.previousElementSibling;
246
- if (event.key === "ArrowLeft" &&
247
- prevElementToFocus instanceof HTMLElement) {
248
- prevElementToFocus.focus();
249
- }
250
- if (event.key === "ArrowRight" &&
251
- nextElementToFocus instanceof HTMLElement) {
252
- nextElementToFocus.focus();
253
- }
254
- },
255
- handleChipKeyDown: function (value) {
256
- return function (event) {
257
- if (event.key === "Backspace" || event.key === "Delete") {
258
- var target = event.target;
259
- if (target instanceof HTMLElement) {
260
- var prevElement = target.previousElementSibling;
261
- var nextElement = target.nextElementSibling;
262
- if (prevElement instanceof HTMLElement) {
263
- prevElement.focus();
264
- }
265
- else if (nextElement instanceof HTMLElement) {
266
- nextElement.focus();
267
- }
268
- }
269
- actions.handleChipRemove(value)();
270
- }
271
- };
272
- },
273
- };
274
- return __chunk_1.__assign(__chunk_1.__assign({}, actions), { ref: ref,
275
- sortedVisibleChipOptions: sortedVisibleChipOptions,
276
- availableChipOptions: availableChipOptions });
215
+ function useInternalChipDismissible(_a) {
216
+ var children = _a.children, selected = _a.selected, onChange = _a.onChange, onClick = _a.onClick, onCustomAdd = _a.onCustomAdd;
217
+ var ref = React.useRef(null);
218
+ var chipOptions = children.map(function (chip) { return chip.props; });
219
+ var visibleChipOptions = chipOptions.filter(function (chip) {
220
+ return selected.includes(chip.value);
221
+ });
222
+ var sortedVisibleChipOptions = lodash.sortBy(visibleChipOptions, function (chip) {
223
+ return selected.indexOf(chip.value);
224
+ });
225
+ var availableChipOptions = chipOptions.filter(function (chip) { return !selected.includes(chip.value); });
226
+ var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
227
+ var actions = {
228
+ handleChipRemove: function (value) {
229
+ return function () {
230
+ liveAnnounce(value + " Removed");
231
+ onChange(selected.filter(function (val) { return val !== value; }));
232
+ };
233
+ },
234
+ handleChipAdd: function (value) { return onChange(tslib_es6.__spread(selected, [value])); },
235
+ handleCustomAdd: onCustomAdd,
236
+ handleChipClick: function (value) {
237
+ if (onClick === undefined)
238
+ return;
239
+ return function (event) { return onClick(event, value); };
240
+ },
241
+ handleWrapperKeyDown: function (event) {
242
+ var target = event.target;
243
+ var isInputAndHasValue = target instanceof HTMLInputElement && target.value;
244
+ if (isInputAndHasValue)
245
+ return;
246
+ var nextElementToFocus = target.nextElementSibling;
247
+ var prevElementToFocus = target.previousElementSibling;
248
+ if (event.key === "ArrowLeft" &&
249
+ prevElementToFocus instanceof HTMLElement) {
250
+ prevElementToFocus.focus();
251
+ }
252
+ if (event.key === "ArrowRight" &&
253
+ nextElementToFocus instanceof HTMLElement) {
254
+ nextElementToFocus.focus();
255
+ }
256
+ },
257
+ handleChipKeyDown: function (value) {
258
+ return function (event) {
259
+ if (event.key === "Backspace" || event.key === "Delete") {
260
+ var target = event.target;
261
+ if (target instanceof HTMLElement) {
262
+ var prevElement = target.previousElementSibling;
263
+ var nextElement = target.nextElementSibling;
264
+ if (prevElement instanceof HTMLElement) {
265
+ prevElement.focus();
266
+ }
267
+ else if (nextElement instanceof HTMLElement) {
268
+ nextElement.focus();
269
+ }
270
+ }
271
+ actions.handleChipRemove(value)();
272
+ }
273
+ };
274
+ },
275
+ };
276
+ return tslib_es6.__assign(tslib_es6.__assign({}, actions), { ref: ref,
277
+ sortedVisibleChipOptions: sortedVisibleChipOptions,
278
+ availableChipOptions: availableChipOptions });
277
279
  }
278
280
 
279
- var menuId = uuid.v1();
280
- // eslint-disable-next-line max-statements
281
- function useInternalChipDismissibleInput(_a) {
282
- var options = _a.options, _b = _a.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onCustomOptionSelect = _a.onCustomOptionSelect, onOptionSelect = _a.onOptionSelect, onSearch = _a.onSearch;
283
- var _c = __chunk_1.__read(React.useState([]), 2), allOptions = _c[0], setAllOptions = _c[1];
284
- var _d = __chunk_1.__read(React.useState(""), 2), searchValue = _d[0], setSearchValue = _d[1];
285
- var _e = __chunk_1.__read(React.useState(false), 2), menuOpen = _e[0], setMenuOpen = _e[1];
286
- var _f = __chunk_1.__read(React.useState(0), 2), activeIndex = _f[0], setActiveIndex = _f[1];
287
- var _g = __chunk_1.__read(React.useState(false), 2), shouldCancelBlur = _g[0], setShouldCancelBlur = _g[1];
288
- var _h = __chunk_1.__read(React.useState(false), 2), shouldCancelEnter = _h[0], setShouldCancelEnter = _h[1];
289
- var canAddCustomOption = onCustomOptionSelect !== undefined && !isLoadingMore;
290
- var maxOptionIndex = allOptions.length - 1;
291
- var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
292
- React.useEffect(function () {
293
- setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
294
- }, [options]);
295
- var computed = {
296
- menuId: menuId,
297
- inputRef: React.useRef(null),
298
- activeOption: allOptions[activeIndex],
299
- hasAvailableOptions: allOptions.length > 0,
300
- nextOptionIndex: activeIndex < maxOptionIndex ? activeIndex + 1 : 0,
301
- previousOptionIndex: activeIndex > 0 ? activeIndex - 1 : maxOptionIndex,
302
- };
303
- var actions = {
304
- generateDescendantId: function (index) { return computed.menuId + "-" + index; },
305
- handleReset: function () {
306
- setActiveIndex(activeIndex === 0 ? activeIndex : activeIndex - 1);
307
- setSearchValue("");
308
- },
309
- handleOpenMenu: function () { return setMenuOpen(true); },
310
- handleCloseMenu: function () {
311
- setMenuOpen(false);
312
- setActiveIndex(0);
313
- },
314
- handleCancelBlur: function () { return setShouldCancelBlur(true); },
315
- handleEnableBlur: function () { return setShouldCancelBlur(false); },
316
- handleBlur: function () {
317
- if (shouldCancelBlur)
318
- return;
319
- actions.handleReset();
320
- actions.handleCloseMenu();
321
- },
322
- handleSearchChange: function (event) {
323
- setActiveIndex(0);
324
- setSearchValue(event.currentTarget.value);
325
- setShouldCancelEnter(true);
326
- },
327
- handleSetActiveOnMouseOver: function (index) {
328
- return function () { return setActiveIndex(index); };
329
- },
330
- handleSelectOption: function (selected) {
331
- var _a;
332
- if (allOptions.length === 0)
333
- return;
334
- var setValue = selected.custom ? onCustomOptionSelect : onOptionSelect;
335
- if (setValue) {
336
- setValue(selected.value);
337
- liveAnnounce(selected.label + " Added");
338
- actions.handleReset();
339
- (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
340
- }
341
- },
342
- handleKeyDown: function (event) {
343
- var callbacks = {
344
- Enter: function () {
345
- if (shouldCancelEnter)
346
- return;
347
- actions.handleSelectOption(computed.activeOption);
348
- },
349
- Tab: function () { return actions.handleSelectOption(computed.activeOption); },
350
- ",": function () {
351
- if (searchValue.length === 0)
352
- return;
353
- actions.handleSelectOption(generateCustomOptionObject(searchValue));
354
- },
355
- ArrowDown: function () {
356
- if (isLoadingMore && activeIndex === maxOptionIndex)
357
- return;
358
- setActiveIndex(computed.nextOptionIndex);
359
- },
360
- ArrowUp: function () { return setActiveIndex(computed.previousOptionIndex); },
361
- };
362
- if (searchValue.length === 0) {
363
- callbacks.Backspace = function () {
364
- var _a;
365
- // If there's no text left to delete,
366
- // and delete is pressed again, focus on a chip instead.
367
- var target = (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.previousElementSibling;
368
- if (target instanceof HTMLElement) {
369
- target.focus();
370
- }
371
- };
372
- }
373
- handleKeydownEvents(callbacks, event);
374
- },
375
- handleDebouncedSearch: lodash.debounce(function () {
376
- onSearch && onSearch(searchValue);
377
- setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
378
- setShouldCancelEnter(false);
379
- }, 300),
380
- };
381
- return __chunk_1.__assign(__chunk_1.__assign(__chunk_1.__assign(__chunk_1.__assign({}, actions), { activeIndex: activeIndex,
382
- allOptions: allOptions }), computed), { menuOpen: menuOpen,
383
- searchValue: searchValue,
384
- shouldCancelBlur: shouldCancelBlur });
385
- }
386
- function generateOptions(options, searchValue, canAddCustomOption) {
387
- var allOptions = options
388
- .filter(function (option) {
389
- return option.label.toLowerCase().match(searchValue.trim().toLowerCase());
390
- })
391
- .map(function (opt) { return (__chunk_1.__assign(__chunk_1.__assign({}, opt), { custom: false })); });
392
- var _a = generateCustomOption(allOptions, searchValue, canAddCustomOption), shouldAddCustomOption = _a.shouldAddCustomOption, customOption = _a.customOption;
393
- shouldAddCustomOption && allOptions.push(customOption);
394
- return allOptions;
395
- }
396
- function generateCustomOption(options, searchValue, canAddCustomOption) {
397
- function shouldAddCustomOption() {
398
- var isMatchingOption = options.some(function (option) { return option.label.toLowerCase() === searchValue.trim().toLowerCase(); });
399
- return !!searchValue && !isMatchingOption;
400
- }
401
- return {
402
- shouldAddCustomOption: canAddCustomOption && shouldAddCustomOption(),
403
- customOption: generateCustomOptionObject(searchValue),
404
- };
405
- }
406
- function generateCustomOptionObject(searchValue) {
407
- return {
408
- value: searchValue,
409
- label: searchValue,
410
- prefix: React__default.createElement(index$2.Icon, { name: "add" }),
411
- custom: true,
412
- };
413
- }
414
- function handleKeydownEvents(callbacks, event) {
415
- if (event.shiftKey)
416
- return;
417
- Object.entries(callbacks).forEach(function (_a) {
418
- var _b = __chunk_1.__read(_a, 2), key = _b[0], callback = _b[1];
419
- if (event.key === key) {
420
- event.preventDefault();
421
- callback(event);
422
- }
423
- });
281
+ var menuId = uuid.v1();
282
+ // eslint-disable-next-line max-statements
283
+ function useInternalChipDismissibleInput(_a) {
284
+ var options = _a.options, _b = _a.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onCustomOptionSelect = _a.onCustomOptionSelect, onOptionSelect = _a.onOptionSelect, onSearch = _a.onSearch;
285
+ var _c = tslib_es6.__read(React.useState([]), 2), allOptions = _c[0], setAllOptions = _c[1];
286
+ var _d = tslib_es6.__read(React.useState(""), 2), searchValue = _d[0], setSearchValue = _d[1];
287
+ var _e = tslib_es6.__read(React.useState(false), 2), menuOpen = _e[0], setMenuOpen = _e[1];
288
+ var _f = tslib_es6.__read(React.useState(0), 2), activeIndex = _f[0], setActiveIndex = _f[1];
289
+ var _g = tslib_es6.__read(React.useState(false), 2), shouldCancelBlur = _g[0], setShouldCancelBlur = _g[1];
290
+ var _h = tslib_es6.__read(React.useState(false), 2), shouldCancelEnter = _h[0], setShouldCancelEnter = _h[1];
291
+ var canAddCustomOption = onCustomOptionSelect !== undefined && !isLoadingMore;
292
+ var maxOptionIndex = allOptions.length - 1;
293
+ var liveAnnounce = hooks.useLiveAnnounce().liveAnnounce;
294
+ React.useEffect(function () {
295
+ setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
296
+ }, [options]);
297
+ var computed = {
298
+ menuId: menuId,
299
+ inputRef: React.useRef(null),
300
+ activeOption: allOptions[activeIndex],
301
+ hasAvailableOptions: allOptions.length > 0,
302
+ nextOptionIndex: activeIndex < maxOptionIndex ? activeIndex + 1 : 0,
303
+ previousOptionIndex: activeIndex > 0 ? activeIndex - 1 : maxOptionIndex,
304
+ };
305
+ var actions = {
306
+ generateDescendantId: function (index) { return computed.menuId + "-" + index; },
307
+ handleReset: function () {
308
+ setActiveIndex(activeIndex === 0 ? activeIndex : activeIndex - 1);
309
+ setSearchValue("");
310
+ },
311
+ handleOpenMenu: function () { return setMenuOpen(true); },
312
+ handleCloseMenu: function () {
313
+ setMenuOpen(false);
314
+ setActiveIndex(0);
315
+ },
316
+ handleCancelBlur: function () { return setShouldCancelBlur(true); },
317
+ handleEnableBlur: function () { return setShouldCancelBlur(false); },
318
+ handleBlur: function () {
319
+ if (shouldCancelBlur)
320
+ return;
321
+ actions.handleReset();
322
+ actions.handleCloseMenu();
323
+ },
324
+ handleSearchChange: function (event) {
325
+ setActiveIndex(0);
326
+ setSearchValue(event.currentTarget.value);
327
+ setShouldCancelEnter(true);
328
+ },
329
+ handleSetActiveOnMouseOver: function (index) {
330
+ return function () { return setActiveIndex(index); };
331
+ },
332
+ handleSelectOption: function (selected) {
333
+ var _a;
334
+ if (allOptions.length === 0)
335
+ return;
336
+ var setValue = selected.custom ? onCustomOptionSelect : onOptionSelect;
337
+ if (setValue) {
338
+ setValue(selected.value);
339
+ liveAnnounce(selected.label + " Added");
340
+ actions.handleReset();
341
+ (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
342
+ }
343
+ },
344
+ handleKeyDown: function (event) {
345
+ var callbacks = {
346
+ Enter: function () {
347
+ if (shouldCancelEnter)
348
+ return;
349
+ actions.handleSelectOption(computed.activeOption);
350
+ },
351
+ Tab: function () { return actions.handleSelectOption(computed.activeOption); },
352
+ ",": function () {
353
+ if (searchValue.length === 0)
354
+ return;
355
+ actions.handleSelectOption(generateCustomOptionObject(searchValue));
356
+ },
357
+ ArrowDown: function () {
358
+ if (isLoadingMore && activeIndex === maxOptionIndex)
359
+ return;
360
+ setActiveIndex(computed.nextOptionIndex);
361
+ },
362
+ ArrowUp: function () { return setActiveIndex(computed.previousOptionIndex); },
363
+ };
364
+ if (searchValue.length === 0) {
365
+ callbacks.Backspace = function () {
366
+ var _a;
367
+ // If there's no text left to delete,
368
+ // and delete is pressed again, focus on a chip instead.
369
+ var target = (_a = computed.inputRef.current) === null || _a === void 0 ? void 0 : _a.previousElementSibling;
370
+ if (target instanceof HTMLElement) {
371
+ target.focus();
372
+ }
373
+ };
374
+ }
375
+ handleKeydownEvents(callbacks, event);
376
+ },
377
+ handleDebouncedSearch: lodash.debounce(function () {
378
+ onSearch && onSearch(searchValue);
379
+ setAllOptions(generateOptions(options, searchValue, canAddCustomOption));
380
+ setShouldCancelEnter(false);
381
+ }, 300),
382
+ };
383
+ return tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign(tslib_es6.__assign({}, actions), { activeIndex: activeIndex,
384
+ allOptions: allOptions }), computed), { menuOpen: menuOpen,
385
+ searchValue: searchValue,
386
+ shouldCancelBlur: shouldCancelBlur });
387
+ }
388
+ function generateOptions(options, searchValue, canAddCustomOption) {
389
+ var allOptions = options
390
+ .filter(function (option) {
391
+ return option.label.toLowerCase().match(searchValue.trim().toLowerCase());
392
+ })
393
+ .map(function (opt) { return (tslib_es6.__assign(tslib_es6.__assign({}, opt), { custom: false })); });
394
+ var _a = generateCustomOption(allOptions, searchValue, canAddCustomOption), shouldAddCustomOption = _a.shouldAddCustomOption, customOption = _a.customOption;
395
+ shouldAddCustomOption && allOptions.push(customOption);
396
+ return allOptions;
397
+ }
398
+ function generateCustomOption(options, searchValue, canAddCustomOption) {
399
+ function shouldAddCustomOption() {
400
+ var isMatchingOption = options.some(function (option) { return option.label.toLowerCase() === searchValue.trim().toLowerCase(); });
401
+ return !!searchValue && !isMatchingOption;
402
+ }
403
+ return {
404
+ shouldAddCustomOption: canAddCustomOption && shouldAddCustomOption(),
405
+ customOption: generateCustomOptionObject(searchValue),
406
+ };
407
+ }
408
+ function generateCustomOptionObject(searchValue) {
409
+ return {
410
+ value: searchValue,
411
+ label: searchValue,
412
+ prefix: React__default["default"].createElement(Icon.Icon, { name: "add" }),
413
+ custom: true,
414
+ };
415
+ }
416
+ function handleKeydownEvents(callbacks, event) {
417
+ if (event.shiftKey)
418
+ return;
419
+ Object.entries(callbacks).forEach(function (_a) {
420
+ var _b = tslib_es6.__read(_a, 2), key = _b[0], callback = _b[1];
421
+ if (event.key === key) {
422
+ event.preventDefault();
423
+ callback(event);
424
+ }
425
+ });
424
426
  }
425
427
 
426
- function useInView() {
427
- var ref = React.useRef(null);
428
- var _a = __chunk_1.__read(React.useState(false), 2), isInView = _a[0], setIsInView = _a[1];
429
- if (window.IntersectionObserver) {
430
- var observer_1 = new IntersectionObserver(function (entries) {
431
- setIsInView(entries[0].isIntersecting);
432
- });
433
- React.useEffect(function () {
434
- ref.current && observer_1.observe(ref.current);
435
- return function () {
436
- if (!ref.current)
437
- return;
438
- observer_1.unobserve(ref.current);
439
- };
440
- });
441
- }
442
- return { ref: ref, isInView: isInView };
428
+ function useInView() {
429
+ var ref = React.useRef(null);
430
+ var _a = tslib_es6.__read(React.useState(false), 2), isInView = _a[0], setIsInView = _a[1];
431
+ if (window.IntersectionObserver) {
432
+ var observer_1 = new IntersectionObserver(function (entries) {
433
+ setIsInView(entries[0].isIntersecting);
434
+ });
435
+ React.useEffect(function () {
436
+ ref.current && observer_1.observe(ref.current);
437
+ return function () {
438
+ if (!ref.current)
439
+ return;
440
+ observer_1.unobserve(ref.current);
441
+ };
442
+ });
443
+ }
444
+ return { ref: ref, isInView: isInView };
443
445
  }
444
446
 
445
- function useRepositionMenu(attachTo) {
446
- var _a;
447
- var _b = __chunk_1.__read(React.useState(), 2), positionElement = _b[0], setPositionedElementRef = _b[1];
448
- var popper = reactPopper.usePopper(attachTo.current, positionElement, {
449
- modifiers: [
450
- { name: "offset", options: { offset: [0, 8] } },
451
- { name: "flip", options: { fallbackPlacements: ["top"] } },
452
- ],
453
- });
454
- var targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
455
- return __chunk_1.__assign(__chunk_1.__assign({}, popper), { setPositionedElementRef: setPositionedElementRef, targetWidth: targetWidth });
447
+ function useRepositionMenu(attachTo) {
448
+ var _a;
449
+ var _b = tslib_es6.__read(React.useState(), 2), positionElement = _b[0], setPositionedElementRef = _b[1];
450
+ var popper = reactPopper.usePopper(attachTo.current, positionElement, {
451
+ modifiers: [
452
+ { name: "offset", options: { offset: [0, 8] } },
453
+ { name: "flip", options: { fallbackPlacements: ["top"] } },
454
+ ],
455
+ });
456
+ var targetWidth = (_a = attachTo.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
457
+ return tslib_es6.__assign(tslib_es6.__assign({}, popper), { setPositionedElementRef: setPositionedElementRef, targetWidth: targetWidth });
456
458
  }
457
459
 
458
- function useScrollToActive(index) {
459
- var ref = React.useRef(null);
460
- React.useEffect(function () {
461
- var _a, _b;
462
- if (!window.HTMLElement.prototype.scrollIntoView)
463
- return;
464
- (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.children[index]) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
465
- behavior: "smooth",
466
- block: "nearest",
467
- inline: "start",
468
- });
469
- }, [index]);
470
- return ref;
460
+ function useScrollToActive(index) {
461
+ var ref = React.useRef(null);
462
+ React.useEffect(function () {
463
+ var _a, _b;
464
+ if (!window.HTMLElement.prototype.scrollIntoView)
465
+ return;
466
+ (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.children[index]) === null || _b === void 0 ? void 0 : _b.scrollIntoView({
467
+ behavior: "smooth",
468
+ block: "nearest",
469
+ inline: "start",
470
+ });
471
+ }, [index]);
472
+ return ref;
471
473
  }
472
474
 
473
- function InternalChipDismissibleInput(props) {
474
- var _a = props.activator, activator = _a === void 0 ? React__default.createElement(index$5.Button, { icon: "add", type: "secondary", ariaLabel: "Add" }) : _a, attachTo = props.attachTo, _b = props.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onLoadMore = props.onLoadMore;
475
- var _c = useInternalChipDismissibleInput(props), activeIndex = _c.activeIndex, allOptions = _c.allOptions, hasAvailableOptions = _c.hasAvailableOptions, inputRef = _c.inputRef, menuId = _c.menuId, menuOpen = _c.menuOpen, searchValue = _c.searchValue, generateDescendantId = _c.generateDescendantId, handleBlur = _c.handleBlur, handleOpenMenu = _c.handleOpenMenu, handleSearchChange = _c.handleSearchChange, handleCancelBlur = _c.handleCancelBlur, handleEnableBlur = _c.handleEnableBlur, handleSetActiveOnMouseOver = _c.handleSetActiveOnMouseOver, handleKeyDown = _c.handleKeyDown, handleSelectOption = _c.handleSelectOption, handleDebouncedSearch = _c.handleDebouncedSearch;
476
- var menuRef = useScrollToActive(activeIndex);
477
- var _d = useInView(), visibleChildRef = _d.ref, isInView = _d.isInView;
478
- var _e = useRepositionMenu(attachTo), popperStyles = _e.styles, attributes = _e.attributes, forceUpdate = _e.forceUpdate, setPositionedElementRef = _e.setPositionedElementRef;
479
- React.useEffect(function () { return forceUpdate === null || forceUpdate === void 0 ? void 0 : forceUpdate(); }, [allOptions]);
480
- React.useEffect(function () {
481
- handleDebouncedSearch();
482
- return handleDebouncedSearch.cancel;
483
- }, [searchValue]);
484
- React.useEffect(function () {
485
- isInView && onLoadMore && onLoadMore(searchValue);
486
- }, [isInView]);
487
- if (!menuOpen) {
488
- return React__default.cloneElement(activator, { onClick: handleOpenMenu });
489
- }
490
- return (React__default.createElement(React__default.Fragment, null,
491
- React__default.createElement("input", { ref: inputRef, className: styles$1.input, type: "text", role: "combobox", "aria-label": "Press up and down arrow to cycle through the options or type to narrow down the results", "aria-autocomplete": "list", "aria-owns": menuId, "aria-expanded": hasAvailableOptions, "aria-activedescendant": generateDescendantId(activeIndex), value: searchValue, onChange: handleSearchChange, onKeyDown: handleKeyDown, onBlur: lodash.debounce(handleBlur, 200), onFocus: handleOpenMenu, autoFocus: true }),
492
- (hasAvailableOptions || isLoadingMore) && (React__default.createElement("div", __chunk_1.__assign({ ref: setPositionedElementRef, className: styles$1.menu, style: popperStyles.popper }, attributes.popper),
493
- React__default.createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles$1.menuList, "data-testid": "chip-menu" },
494
- allOptions.map(function (option, i) {
495
- var _a;
496
- return (React__default.createElement("button", { key: option.value, role: "option", id: generateDescendantId(i), className: classnames(styles$1.menuListOption, (_a = {},
497
- _a[styles$1.activeOption] = activeIndex === i,
498
- _a)), onClick: function () { return handleSelectOption(option); }, onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
499
- React__default.createElement("span", { "aria-hidden": true }, option.prefix),
500
- React__default.createElement(index$1.Text, null, option.label)));
501
- }),
502
- React__default.createElement("div", { ref: visibleChildRef }),
503
- isLoadingMore && (React__default.createElement("div", { className: styles$1.loadingIndicator },
504
- React__default.createElement(index$7.Spinner, { size: "small", inline: true }))))))));
475
+ function InternalChipDismissibleInput(props) {
476
+ var _a = props.activator, activator = _a === void 0 ? React__default["default"].createElement(Button.Button, { icon: "add", type: "secondary", ariaLabel: "Add" }) : _a, attachTo = props.attachTo, _b = props.isLoadingMore, isLoadingMore = _b === void 0 ? false : _b, onLoadMore = props.onLoadMore;
477
+ var _c = useInternalChipDismissibleInput(props), activeIndex = _c.activeIndex, allOptions = _c.allOptions, hasAvailableOptions = _c.hasAvailableOptions, inputRef = _c.inputRef, menuId = _c.menuId, menuOpen = _c.menuOpen, searchValue = _c.searchValue, generateDescendantId = _c.generateDescendantId, handleBlur = _c.handleBlur, handleOpenMenu = _c.handleOpenMenu, handleSearchChange = _c.handleSearchChange, handleCancelBlur = _c.handleCancelBlur, handleEnableBlur = _c.handleEnableBlur, handleSetActiveOnMouseOver = _c.handleSetActiveOnMouseOver, handleKeyDown = _c.handleKeyDown, handleSelectOption = _c.handleSelectOption, handleDebouncedSearch = _c.handleDebouncedSearch;
478
+ var menuRef = useScrollToActive(activeIndex);
479
+ var _d = useInView(), visibleChildRef = _d.ref, isInView = _d.isInView;
480
+ var _e = useRepositionMenu(attachTo), popperStyles = _e.styles, attributes = _e.attributes, forceUpdate = _e.forceUpdate, setPositionedElementRef = _e.setPositionedElementRef;
481
+ React.useEffect(function () { return forceUpdate === null || forceUpdate === void 0 ? void 0 : forceUpdate(); }, [allOptions]);
482
+ React.useEffect(function () {
483
+ handleDebouncedSearch();
484
+ return handleDebouncedSearch.cancel;
485
+ }, [searchValue]);
486
+ React.useEffect(function () {
487
+ isInView && onLoadMore && onLoadMore(searchValue);
488
+ }, [isInView]);
489
+ if (!menuOpen) {
490
+ return React__default["default"].cloneElement(activator, { onClick: handleOpenMenu });
491
+ }
492
+ return (React__default["default"].createElement(React__default["default"].Fragment, null,
493
+ React__default["default"].createElement("input", { ref: inputRef, className: styles.input, type: "text", role: "combobox", "aria-label": "Press up and down arrow to cycle through the options or type to narrow down the results", "aria-autocomplete": "list", "aria-owns": menuId, "aria-expanded": hasAvailableOptions, "aria-activedescendant": generateDescendantId(activeIndex), value: searchValue, onChange: handleSearchChange, onKeyDown: handleKeyDown, onBlur: lodash.debounce(handleBlur, 200), onFocus: handleOpenMenu, autoFocus: true }),
494
+ (hasAvailableOptions || isLoadingMore) && (React__default["default"].createElement("div", tslib_es6.__assign({ ref: setPositionedElementRef, className: styles.menu, style: popperStyles.popper }, attributes.popper),
495
+ React__default["default"].createElement("div", { ref: menuRef, role: "listbox", id: menuId, className: styles.menuList, "data-testid": "chip-menu" },
496
+ allOptions.map(function (option, i) {
497
+ var _a;
498
+ return (React__default["default"].createElement("button", { key: option.value, role: "option", id: generateDescendantId(i), className: classnames__default["default"](styles.menuListOption, (_a = {},
499
+ _a[styles.activeOption] = activeIndex === i,
500
+ _a)), onClick: function () { return handleSelectOption(option); }, onMouseEnter: handleSetActiveOnMouseOver(i), onMouseDown: handleCancelBlur, onMouseUp: handleEnableBlur },
501
+ React__default["default"].createElement("span", { "aria-hidden": true }, option.prefix),
502
+ React__default["default"].createElement(Text.Text, null, option.label)));
503
+ }),
504
+ React__default["default"].createElement("div", { ref: visibleChildRef }),
505
+ isLoadingMore && (React__default["default"].createElement("div", { className: styles.loadingIndicator },
506
+ React__default["default"].createElement(Spinner.Spinner, { size: "small", inline: true }))))))));
505
507
  }
506
508
 
507
- function InternalChipDismissible(props) {
508
- var _a = useInternalChipDismissible(props), availableChipOptions = _a.availableChipOptions, wrapperRef = _a.ref, sortedVisibleChipOptions = _a.sortedVisibleChipOptions, handleChipAdd = _a.handleChipAdd, handleChipClick = _a.handleChipClick, handleChipKeyDown = _a.handleChipKeyDown, handleChipRemove = _a.handleChipRemove, handleCustomAdd = _a.handleCustomAdd, handleWrapperKeyDown = _a.handleWrapperKeyDown;
509
- return (React__default.createElement("div", { ref: wrapperRef, className: styles$1.wrapper, "data-testid": "dismissible-chips", onKeyDown: handleWrapperKeyDown, role: "listbox" },
510
- sortedVisibleChipOptions.map(function (chip) { return (React__default.createElement(InternalChip, __chunk_1.__assign({ key: chip.value }, chip, { onKeyDown: handleChipKeyDown(chip.value), onClick: handleChipClick(chip.value), ariaLabel: chip.value + ". Press delete or backspace to remove " + chip.value, tabIndex: 0, suffix: React__default.createElement(InternalChipButton, { icon: "remove", invalid: chip.invalid, disabled: chip.disabled, label: chip.label, onClick: handleChipRemove(chip.value) }) }))); }),
511
- React__default.createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore })));
509
+ function InternalChipDismissible(props) {
510
+ var _a = useInternalChipDismissible(props), availableChipOptions = _a.availableChipOptions, wrapperRef = _a.ref, sortedVisibleChipOptions = _a.sortedVisibleChipOptions, handleChipAdd = _a.handleChipAdd, handleChipClick = _a.handleChipClick, handleChipKeyDown = _a.handleChipKeyDown, handleChipRemove = _a.handleChipRemove, handleCustomAdd = _a.handleCustomAdd, handleWrapperKeyDown = _a.handleWrapperKeyDown;
511
+ return (React__default["default"].createElement("div", { ref: wrapperRef, className: styles.wrapper, "data-testid": "dismissible-chips", onKeyDown: handleWrapperKeyDown, role: "listbox" },
512
+ sortedVisibleChipOptions.map(function (chip) { return (React__default["default"].createElement(InternalChip, tslib_es6.__assign({ key: chip.value }, chip, { onKeyDown: handleChipKeyDown(chip.value), onClick: handleChipClick(chip.value), ariaLabel: chip.value + ". Press delete or backspace to remove " + chip.value, tabIndex: 0, suffix: React__default["default"].createElement(InternalChipButton, { icon: "remove", invalid: chip.invalid, disabled: chip.disabled, label: chip.label, onClick: handleChipRemove(chip.value) }) }))); }),
513
+ React__default["default"].createElement(InternalChipDismissibleInput, { activator: props.activator, attachTo: wrapperRef, isLoadingMore: props.isLoadingMore, options: availableChipOptions, onOptionSelect: handleChipAdd, onCustomOptionSelect: handleCustomAdd, onSearch: props.onSearch, onLoadMore: props.onLoadMore })));
512
514
  }
513
515
 
514
- function Chips(props) {
515
- switch (props.type) {
516
- case "dismissible":
517
- return React__default.createElement(InternalChipDismissible, __chunk_1.__assign({}, props));
518
- case "multiselect":
519
- return React__default.createElement(InternalChipMultiSelect, __chunk_1.__assign({}, props));
520
- default:
521
- return React__default.createElement(InternalChipSingleSelect, __chunk_1.__assign({}, props));
522
- }
516
+ function Chips(props) {
517
+ switch (props.type) {
518
+ case "dismissible":
519
+ return React__default["default"].createElement(InternalChipDismissible, tslib_es6.__assign({}, props));
520
+ case "multiselect":
521
+ return React__default["default"].createElement(InternalChipMultiSelect, tslib_es6.__assign({}, props));
522
+ default:
523
+ return React__default["default"].createElement(InternalChipSingleSelect, tslib_es6.__assign({}, props));
524
+ }
523
525
  }
524
526
 
525
- // Only need the component to pass in the data as a react children
526
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
527
- function Chip(props) {
528
- // Throw error when <Chip /> gets used outside of the <Chips />
529
- hooks.useAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
530
- return React__default.createElement(React__default.Fragment, null);
527
+ // Only need the component to pass in the data as a react children
528
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
529
+ function Chip(props) {
530
+ // Throw error when <Chip /> gets used outside of the <Chips />
531
+ hooks.useAssert(true, "`<Chip>` component can only be used inside `<Chips>`");
532
+ return React__default["default"].createElement(React__default["default"].Fragment, null);
531
533
  }
532
534
 
533
535
  exports.Chip = Chip;