@adobe/react-spectrum 3.47.1 → 3.47.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (567) hide show
  1. package/dist/private/accordion_vars.css +66 -48
  2. package/dist/private/accordion_vars.css.map +1 -1
  3. package/dist/private/actionbar/ActionBar.cjs +2 -3
  4. package/dist/private/actionbar/ActionBar.cjs.map +1 -1
  5. package/dist/private/actionbar/ActionBar.js +2 -3
  6. package/dist/private/actionbar/ActionBar.js.map +1 -1
  7. package/dist/private/actionbar/ActionBar.mjs +2 -3
  8. package/dist/private/actionbar/ActionBar.mjs.map +1 -1
  9. package/dist/private/actionbar/actionbar.css +59 -57
  10. package/dist/private/actionbar/actionbar.css.map +1 -1
  11. package/dist/private/actiongroup/ActionGroup.cjs +6 -2
  12. package/dist/private/actiongroup/ActionGroup.cjs.map +1 -1
  13. package/dist/private/actiongroup/ActionGroup.js +6 -2
  14. package/dist/private/actiongroup/ActionGroup.js.map +1 -1
  15. package/dist/private/actiongroup/ActionGroup.mjs +6 -2
  16. package/dist/private/actiongroup/ActionGroup.mjs.map +1 -1
  17. package/dist/private/actiongroup_vars.css +124 -114
  18. package/dist/private/actiongroup_vars.css.map +1 -1
  19. package/dist/private/autocomplete/MobileSearchAutocomplete.cjs +6 -0
  20. package/dist/private/autocomplete/MobileSearchAutocomplete.cjs.map +1 -1
  21. package/dist/private/autocomplete/MobileSearchAutocomplete.js +6 -0
  22. package/dist/private/autocomplete/MobileSearchAutocomplete.js.map +1 -1
  23. package/dist/private/autocomplete/MobileSearchAutocomplete.mjs +6 -0
  24. package/dist/private/autocomplete/MobileSearchAutocomplete.mjs.map +1 -1
  25. package/dist/private/autocomplete/SearchAutocomplete.cjs +1 -0
  26. package/dist/private/autocomplete/SearchAutocomplete.cjs.map +1 -1
  27. package/dist/private/autocomplete/SearchAutocomplete.js +1 -0
  28. package/dist/private/autocomplete/SearchAutocomplete.js.map +1 -1
  29. package/dist/private/autocomplete/SearchAutocomplete.mjs +1 -0
  30. package/dist/private/autocomplete/SearchAutocomplete.mjs.map +1 -1
  31. package/dist/private/autocomplete/searchautocomplete.css +6 -6
  32. package/dist/private/autocomplete/searchautocomplete.css.map +1 -1
  33. package/dist/private/avatar_vars.css +12 -7
  34. package/dist/private/avatar_vars.css.map +1 -1
  35. package/dist/private/badge_vars.css +76 -68
  36. package/dist/private/badge_vars.css.map +1 -1
  37. package/dist/private/barloader_vars.css +132 -112
  38. package/dist/private/barloader_vars.css.map +1 -1
  39. package/dist/private/breadcrumb_vars.css +182 -148
  40. package/dist/private/breadcrumb_vars.css.map +1 -1
  41. package/dist/private/button/Button.cjs +2 -1
  42. package/dist/private/button/Button.cjs.map +1 -1
  43. package/dist/private/button/Button.js +3 -2
  44. package/dist/private/button/Button.js.map +1 -1
  45. package/dist/private/button/Button.mjs +3 -2
  46. package/dist/private/button/Button.mjs.map +1 -1
  47. package/dist/private/button/ClearButton.cjs +2 -1
  48. package/dist/private/button/ClearButton.cjs.map +1 -1
  49. package/dist/private/button/ClearButton.js +2 -1
  50. package/dist/private/button/ClearButton.js.map +1 -1
  51. package/dist/private/button/ClearButton.mjs +2 -1
  52. package/dist/private/button/ClearButton.mjs.map +1 -1
  53. package/dist/private/button_vars.css +822 -785
  54. package/dist/private/button_vars.css.map +1 -1
  55. package/dist/private/buttongroup/ButtonGroup.cjs +4 -2
  56. package/dist/private/buttongroup/ButtonGroup.cjs.map +1 -1
  57. package/dist/private/buttongroup/ButtonGroup.js +4 -2
  58. package/dist/private/buttongroup/ButtonGroup.js.map +1 -1
  59. package/dist/private/buttongroup/ButtonGroup.mjs +4 -2
  60. package/dist/private/buttongroup/ButtonGroup.mjs.map +1 -1
  61. package/dist/private/buttongroup_vars.css +25 -24
  62. package/dist/private/buttongroup_vars.css.map +1 -1
  63. package/dist/private/buttongroup_vars_css.cjs +5 -5
  64. package/dist/private/buttongroup_vars_css.mjs +5 -5
  65. package/dist/private/calendar/CalendarBase.cjs.map +1 -1
  66. package/dist/private/calendar/CalendarBase.js.map +1 -1
  67. package/dist/private/calendar/CalendarBase.mjs.map +1 -1
  68. package/dist/private/calendar_vars.css +280 -256
  69. package/dist/private/calendar_vars.css.map +1 -1
  70. package/dist/private/card/BaseLayout.cjs +2 -2
  71. package/dist/private/card/BaseLayout.cjs.map +1 -1
  72. package/dist/private/card/BaseLayout.js +2 -2
  73. package/dist/private/card/BaseLayout.js.map +1 -1
  74. package/dist/private/card/BaseLayout.mjs +2 -2
  75. package/dist/private/card/BaseLayout.mjs.map +1 -1
  76. package/dist/private/card/CardBase.cjs +1 -0
  77. package/dist/private/card/CardBase.cjs.map +1 -1
  78. package/dist/private/card/CardBase.js +1 -0
  79. package/dist/private/card/CardBase.js.map +1 -1
  80. package/dist/private/card/CardBase.mjs +1 -0
  81. package/dist/private/card/CardBase.mjs.map +1 -1
  82. package/dist/private/card/CardView.cjs +3 -0
  83. package/dist/private/card/CardView.cjs.map +1 -1
  84. package/dist/private/card/CardView.js +3 -0
  85. package/dist/private/card/CardView.js.map +1 -1
  86. package/dist/private/card/CardView.mjs +3 -0
  87. package/dist/private/card/CardView.mjs.map +1 -1
  88. package/dist/private/card_vars.css +995 -907
  89. package/dist/private/card_vars.css.map +1 -1
  90. package/dist/private/checkbox/Checkbox.cjs.map +1 -1
  91. package/dist/private/checkbox/Checkbox.js.map +1 -1
  92. package/dist/private/checkbox/Checkbox.mjs.map +1 -1
  93. package/dist/private/checkbox_vars.css +318 -219
  94. package/dist/private/checkbox_vars.css.map +1 -1
  95. package/dist/private/circleloader_vars.css +99 -85
  96. package/dist/private/circleloader_vars.css.map +1 -1
  97. package/dist/private/color/ColorEditor.cjs.map +1 -1
  98. package/dist/private/color/ColorEditor.js.map +1 -1
  99. package/dist/private/color/ColorEditor.mjs.map +1 -1
  100. package/dist/private/color/ColorField.cjs +1 -0
  101. package/dist/private/color/ColorField.cjs.map +1 -1
  102. package/dist/private/color/ColorField.js +1 -0
  103. package/dist/private/color/ColorField.js.map +1 -1
  104. package/dist/private/color/ColorField.mjs +1 -0
  105. package/dist/private/color/ColorField.mjs.map +1 -1
  106. package/dist/private/color/ColorPicker.cjs.map +1 -1
  107. package/dist/private/color/ColorPicker.css +28 -14
  108. package/dist/private/color/ColorPicker.css.map +1 -1
  109. package/dist/private/color/ColorPicker.js.map +1 -1
  110. package/dist/private/color/ColorPicker.mjs.map +1 -1
  111. package/dist/private/color/ColorSwatch.cjs +2 -1
  112. package/dist/private/color/ColorSwatch.cjs.map +1 -1
  113. package/dist/private/color/ColorSwatch.js +2 -1
  114. package/dist/private/color/ColorSwatch.js.map +1 -1
  115. package/dist/private/color/ColorSwatch.mjs +2 -1
  116. package/dist/private/color/ColorSwatch.mjs.map +1 -1
  117. package/dist/private/color/ColorSwatchPicker.cjs.map +1 -1
  118. package/dist/private/color/ColorSwatchPicker.js.map +1 -1
  119. package/dist/private/color/ColorSwatchPicker.mjs.map +1 -1
  120. package/dist/private/color/ColorWheel.cjs +1 -0
  121. package/dist/private/color/ColorWheel.cjs.map +1 -1
  122. package/dist/private/color/ColorWheel.js +1 -0
  123. package/dist/private/color/ColorWheel.js.map +1 -1
  124. package/dist/private/color/ColorWheel.mjs +1 -0
  125. package/dist/private/color/ColorWheel.mjs.map +1 -1
  126. package/dist/private/color/colorfield.css +3 -3
  127. package/dist/private/color/colorfield.css.map +1 -1
  128. package/dist/private/colorarea_vars.css +36 -29
  129. package/dist/private/colorarea_vars.css.map +1 -1
  130. package/dist/private/colorhandle_vars.css +23 -23
  131. package/dist/private/colorloupe_vars.css +5 -5
  132. package/dist/private/colorloupe_vars.css.map +1 -1
  133. package/dist/private/colorslider_vars.css +34 -34
  134. package/dist/private/colorslider_vars.css.map +1 -1
  135. package/dist/private/colorwheel_vars.css +44 -38
  136. package/dist/private/colorwheel_vars.css.map +1 -1
  137. package/dist/private/combobox/ComboBox.cjs +1 -0
  138. package/dist/private/combobox/ComboBox.cjs.map +1 -1
  139. package/dist/private/combobox/ComboBox.js +1 -0
  140. package/dist/private/combobox/ComboBox.js.map +1 -1
  141. package/dist/private/combobox/ComboBox.mjs +1 -0
  142. package/dist/private/combobox/ComboBox.mjs.map +1 -1
  143. package/dist/private/combobox/MobileComboBox.cjs +8 -0
  144. package/dist/private/combobox/MobileComboBox.cjs.map +1 -1
  145. package/dist/private/combobox/MobileComboBox.js +8 -0
  146. package/dist/private/combobox/MobileComboBox.js.map +1 -1
  147. package/dist/private/combobox/MobileComboBox.mjs +8 -0
  148. package/dist/private/combobox/MobileComboBox.mjs.map +1 -1
  149. package/dist/private/combobox/combobox.css +6 -6
  150. package/dist/private/combobox/combobox.css.map +1 -1
  151. package/dist/private/contextualhelp/ContextualHelp.cjs.map +1 -1
  152. package/dist/private/contextualhelp/ContextualHelp.js.map +1 -1
  153. package/dist/private/contextualhelp/ContextualHelp.mjs.map +1 -1
  154. package/dist/private/contextualhelp_vars.css +13 -13
  155. package/dist/private/contextualhelp_vars.css.map +1 -1
  156. package/dist/private/datepicker/DateField.cjs +2 -1
  157. package/dist/private/datepicker/DateField.cjs.map +1 -1
  158. package/dist/private/datepicker/DateField.js +2 -1
  159. package/dist/private/datepicker/DateField.js.map +1 -1
  160. package/dist/private/datepicker/DateField.mjs +2 -1
  161. package/dist/private/datepicker/DateField.mjs.map +1 -1
  162. package/dist/private/datepicker/DatePicker.cjs +2 -1
  163. package/dist/private/datepicker/DatePicker.cjs.map +1 -1
  164. package/dist/private/datepicker/DatePicker.js +2 -1
  165. package/dist/private/datepicker/DatePicker.js.map +1 -1
  166. package/dist/private/datepicker/DatePicker.mjs +2 -1
  167. package/dist/private/datepicker/DatePicker.mjs.map +1 -1
  168. package/dist/private/datepicker/DateRangePicker.cjs +2 -1
  169. package/dist/private/datepicker/DateRangePicker.cjs.map +1 -1
  170. package/dist/private/datepicker/DateRangePicker.js +2 -1
  171. package/dist/private/datepicker/DateRangePicker.js.map +1 -1
  172. package/dist/private/datepicker/DateRangePicker.mjs +2 -1
  173. package/dist/private/datepicker/DateRangePicker.mjs.map +1 -1
  174. package/dist/private/datepicker/styles.css +33 -31
  175. package/dist/private/datepicker/styles.css.map +1 -1
  176. package/dist/private/dialog/AlertDialog.cjs +3 -1
  177. package/dist/private/dialog/AlertDialog.cjs.map +1 -1
  178. package/dist/private/dialog/AlertDialog.js +3 -1
  179. package/dist/private/dialog/AlertDialog.js.map +1 -1
  180. package/dist/private/dialog/AlertDialog.mjs +3 -1
  181. package/dist/private/dialog/AlertDialog.mjs.map +1 -1
  182. package/dist/private/dialog/Dialog.cjs +10 -3
  183. package/dist/private/dialog/Dialog.cjs.map +1 -1
  184. package/dist/private/dialog/Dialog.js +10 -3
  185. package/dist/private/dialog/Dialog.js.map +1 -1
  186. package/dist/private/dialog/Dialog.mjs +10 -3
  187. package/dist/private/dialog/Dialog.mjs.map +1 -1
  188. package/dist/private/dialog_vars.css +216 -180
  189. package/dist/private/dialog_vars.css.map +1 -1
  190. package/dist/private/dnd/useDragAndDrop.cjs +7 -0
  191. package/dist/private/dnd/useDragAndDrop.cjs.map +1 -1
  192. package/dist/private/dnd/useDragAndDrop.js +7 -0
  193. package/dist/private/dnd/useDragAndDrop.js.map +1 -1
  194. package/dist/private/dnd/useDragAndDrop.mjs +7 -0
  195. package/dist/private/dnd/useDragAndDrop.mjs.map +1 -1
  196. package/dist/private/dropdown_vars.css +150 -114
  197. package/dist/private/dropdown_vars.css.map +1 -1
  198. package/dist/private/dropzone/DropZone.cjs.map +1 -1
  199. package/dist/private/dropzone/DropZone.js.map +1 -1
  200. package/dist/private/dropzone/DropZone.mjs.map +1 -1
  201. package/dist/private/dropzone_vars.css +114 -85
  202. package/dist/private/dropzone_vars.css.map +1 -1
  203. package/dist/private/fieldgroup_vars.css +54 -46
  204. package/dist/private/fieldgroup_vars.css.map +1 -1
  205. package/dist/private/fieldlabel_vars.css +183 -169
  206. package/dist/private/fieldlabel_vars.css.map +1 -1
  207. package/dist/private/helptext_vars.css +83 -69
  208. package/dist/private/helptext_vars.css.map +1 -1
  209. package/dist/private/icon/Icon.cjs +1 -1
  210. package/dist/private/icon/Icon.cjs.map +1 -1
  211. package/dist/private/icon/Icon.js +1 -1
  212. package/dist/private/icon/Icon.js.map +1 -1
  213. package/dist/private/icon/Icon.mjs +1 -1
  214. package/dist/private/icon/Icon.mjs.map +1 -1
  215. package/dist/private/icon/UIIcon.cjs +1 -1
  216. package/dist/private/icon/UIIcon.cjs.map +1 -1
  217. package/dist/private/icon/UIIcon.js +1 -1
  218. package/dist/private/icon/UIIcon.js.map +1 -1
  219. package/dist/private/icon/UIIcon.mjs +1 -1
  220. package/dist/private/icon/UIIcon.mjs.map +1 -1
  221. package/dist/private/icon_vars.css +52 -36
  222. package/dist/private/icon_vars.css.map +1 -1
  223. package/dist/private/illustratedmessage_vars.css +33 -31
  224. package/dist/private/illustratedmessage_vars.css.map +1 -1
  225. package/dist/private/inlinealert/InlineAlert.cjs.map +1 -1
  226. package/dist/private/inlinealert/InlineAlert.js.map +1 -1
  227. package/dist/private/inlinealert/InlineAlert.mjs.map +1 -1
  228. package/dist/private/inlinealert_vars.css +54 -46
  229. package/dist/private/inlinealert_vars.css.map +1 -1
  230. package/dist/private/inputgroup_vars.css +499 -319
  231. package/dist/private/inputgroup_vars.css.map +1 -1
  232. package/dist/private/intl/label/zh-CN.cjs +1 -1
  233. package/dist/private/intl/label/zh-CN.cjs.map +1 -1
  234. package/dist/private/intl/label/zh-CN.js +1 -1
  235. package/dist/private/intl/label/zh-CN.js.map +1 -1
  236. package/dist/private/intl/label/zh-CN.mjs +1 -1
  237. package/dist/private/intl/label/zh-CN.mjs.map +1 -1
  238. package/dist/private/intl/menu/es-ES.cjs +1 -1
  239. package/dist/private/intl/menu/es-ES.cjs.map +1 -1
  240. package/dist/private/intl/menu/es-ES.js +1 -1
  241. package/dist/private/intl/menu/es-ES.js.map +1 -1
  242. package/dist/private/intl/menu/es-ES.mjs +1 -1
  243. package/dist/private/intl/menu/es-ES.mjs.map +1 -1
  244. package/dist/private/intl/picker/zh-CN.cjs +1 -1
  245. package/dist/private/intl/picker/zh-CN.cjs.map +1 -1
  246. package/dist/private/intl/picker/zh-CN.js +1 -1
  247. package/dist/private/intl/picker/zh-CN.js.map +1 -1
  248. package/dist/private/intl/picker/zh-CN.mjs +1 -1
  249. package/dist/private/intl/picker/zh-CN.mjs.map +1 -1
  250. package/dist/private/intl/table/es-ES.cjs +1 -1
  251. package/dist/private/intl/table/es-ES.cjs.map +1 -1
  252. package/dist/private/intl/table/es-ES.js +1 -1
  253. package/dist/private/intl/table/es-ES.js.map +1 -1
  254. package/dist/private/intl/table/es-ES.mjs +1 -1
  255. package/dist/private/intl/table/es-ES.mjs.map +1 -1
  256. package/dist/private/intl/table/zh-TW.cjs +2 -2
  257. package/dist/private/intl/table/zh-TW.cjs.map +1 -1
  258. package/dist/private/intl/table/zh-TW.js +2 -2
  259. package/dist/private/intl/table/zh-TW.js.map +1 -1
  260. package/dist/private/intl/table/zh-TW.mjs +2 -2
  261. package/dist/private/intl/table/zh-TW.mjs.map +1 -1
  262. package/dist/private/label/Field.cjs +2 -1
  263. package/dist/private/label/Field.cjs.map +1 -1
  264. package/dist/private/label/Field.js +2 -1
  265. package/dist/private/label/Field.js.map +1 -1
  266. package/dist/private/label/Field.mjs +2 -1
  267. package/dist/private/label/Field.mjs.map +1 -1
  268. package/dist/private/label/Label.cjs.map +1 -1
  269. package/dist/private/label/Label.js.map +1 -1
  270. package/dist/private/label/Label.mjs.map +1 -1
  271. package/dist/private/layout/Grid.cjs +2 -1
  272. package/dist/private/layout/Grid.cjs.map +1 -1
  273. package/dist/private/layout/Grid.js +2 -1
  274. package/dist/private/layout/Grid.js.map +1 -1
  275. package/dist/private/layout/Grid.mjs +2 -1
  276. package/dist/private/layout/Grid.mjs.map +1 -1
  277. package/dist/private/link/Link.cjs +3 -0
  278. package/dist/private/link/Link.cjs.map +1 -1
  279. package/dist/private/link/Link.js +3 -0
  280. package/dist/private/link/Link.js.map +1 -1
  281. package/dist/private/link/Link.mjs +3 -0
  282. package/dist/private/link/Link.mjs.map +1 -1
  283. package/dist/private/link_vars.css +101 -85
  284. package/dist/private/link_vars.css.map +1 -1
  285. package/dist/private/list/InsertionIndicator.cjs +1 -0
  286. package/dist/private/list/InsertionIndicator.cjs.map +1 -1
  287. package/dist/private/list/InsertionIndicator.js +1 -0
  288. package/dist/private/list/InsertionIndicator.js.map +1 -1
  289. package/dist/private/list/InsertionIndicator.mjs +1 -0
  290. package/dist/private/list/InsertionIndicator.mjs.map +1 -1
  291. package/dist/private/list/ListView.cjs +5 -0
  292. package/dist/private/list/ListView.cjs.map +1 -1
  293. package/dist/private/list/ListView.js +5 -0
  294. package/dist/private/list/ListView.js.map +1 -1
  295. package/dist/private/list/ListView.mjs +5 -0
  296. package/dist/private/list/ListView.mjs.map +1 -1
  297. package/dist/private/list/ListViewItem.cjs +2 -0
  298. package/dist/private/list/ListViewItem.cjs.map +1 -1
  299. package/dist/private/list/ListViewItem.js +2 -0
  300. package/dist/private/list/ListViewItem.js.map +1 -1
  301. package/dist/private/list/ListViewItem.mjs +2 -0
  302. package/dist/private/list/ListViewItem.mjs.map +1 -1
  303. package/dist/private/list/RootDropIndicator.cjs +1 -0
  304. package/dist/private/list/RootDropIndicator.cjs.map +1 -1
  305. package/dist/private/list/RootDropIndicator.js +1 -0
  306. package/dist/private/list/RootDropIndicator.js.map +1 -1
  307. package/dist/private/list/RootDropIndicator.mjs +1 -0
  308. package/dist/private/list/RootDropIndicator.mjs.map +1 -1
  309. package/dist/private/list/styles.css +425 -333
  310. package/dist/private/list/styles.css.map +1 -1
  311. package/dist/private/listbox/ListBoxBase.cjs.map +1 -1
  312. package/dist/private/listbox/ListBoxBase.js.map +1 -1
  313. package/dist/private/listbox/ListBoxBase.mjs.map +1 -1
  314. package/dist/private/menu/ActionMenu.cjs.map +1 -1
  315. package/dist/private/menu/ActionMenu.js.map +1 -1
  316. package/dist/private/menu/ActionMenu.mjs.map +1 -1
  317. package/dist/private/menu/ContextualHelpTrigger.cjs +7 -1
  318. package/dist/private/menu/ContextualHelpTrigger.cjs.map +1 -1
  319. package/dist/private/menu/ContextualHelpTrigger.js +7 -1
  320. package/dist/private/menu/ContextualHelpTrigger.js.map +1 -1
  321. package/dist/private/menu/ContextualHelpTrigger.mjs +7 -1
  322. package/dist/private/menu/ContextualHelpTrigger.mjs.map +1 -1
  323. package/dist/private/menu/Menu.cjs.map +1 -1
  324. package/dist/private/menu/Menu.js.map +1 -1
  325. package/dist/private/menu/Menu.mjs.map +1 -1
  326. package/dist/private/menu/MenuItem.cjs +2 -0
  327. package/dist/private/menu/MenuItem.cjs.map +1 -1
  328. package/dist/private/menu/MenuItem.js +2 -0
  329. package/dist/private/menu/MenuItem.js.map +1 -1
  330. package/dist/private/menu/MenuItem.mjs +2 -0
  331. package/dist/private/menu/MenuItem.mjs.map +1 -1
  332. package/dist/private/menu/MenuTrigger.cjs +1 -0
  333. package/dist/private/menu/MenuTrigger.cjs.map +1 -1
  334. package/dist/private/menu/MenuTrigger.js +1 -0
  335. package/dist/private/menu/MenuTrigger.js.map +1 -1
  336. package/dist/private/menu/MenuTrigger.mjs +1 -0
  337. package/dist/private/menu/MenuTrigger.mjs.map +1 -1
  338. package/dist/private/menu/SubmenuTrigger.cjs +6 -1
  339. package/dist/private/menu/SubmenuTrigger.cjs.map +1 -1
  340. package/dist/private/menu/SubmenuTrigger.js +6 -1
  341. package/dist/private/menu/SubmenuTrigger.js.map +1 -1
  342. package/dist/private/menu/SubmenuTrigger.mjs +6 -1
  343. package/dist/private/menu/SubmenuTrigger.mjs.map +1 -1
  344. package/dist/private/menu_vars.css +178 -160
  345. package/dist/private/menu_vars.css.map +1 -1
  346. package/dist/private/modal_vars.css +64 -54
  347. package/dist/private/modal_vars.css.map +1 -1
  348. package/dist/private/overlays/overlays.css +7 -5
  349. package/dist/private/overlays/overlays.css.map +1 -1
  350. package/dist/private/package.cjs +1 -1
  351. package/dist/private/package.cjs.map +1 -1
  352. package/dist/private/package.js +1 -1
  353. package/dist/private/package.js.map +1 -1
  354. package/dist/private/package.mjs +1 -1
  355. package/dist/private/package.mjs.map +1 -1
  356. package/dist/private/page_vars.css +54 -46
  357. package/dist/private/page_vars.css.map +1 -1
  358. package/dist/private/picker/Picker.cjs.map +1 -1
  359. package/dist/private/picker/Picker.js.map +1 -1
  360. package/dist/private/picker/Picker.mjs.map +1 -1
  361. package/dist/private/popover_vars.css +105 -83
  362. package/dist/private/popover_vars.css.map +1 -1
  363. package/dist/private/progress/ProgressBarBase.cjs +2 -1
  364. package/dist/private/progress/ProgressBarBase.cjs.map +1 -1
  365. package/dist/private/progress/ProgressBarBase.js +2 -1
  366. package/dist/private/progress/ProgressBarBase.js.map +1 -1
  367. package/dist/private/progress/ProgressBarBase.mjs +2 -1
  368. package/dist/private/progress/ProgressBarBase.mjs.map +1 -1
  369. package/dist/private/progress/ProgressCircle.cjs +2 -1
  370. package/dist/private/progress/ProgressCircle.cjs.map +1 -1
  371. package/dist/private/progress/ProgressCircle.js +2 -1
  372. package/dist/private/progress/ProgressCircle.js.map +1 -1
  373. package/dist/private/progress/ProgressCircle.mjs +2 -1
  374. package/dist/private/progress/ProgressCircle.mjs.map +1 -1
  375. package/dist/private/radio_vars.css +257 -163
  376. package/dist/private/radio_vars.css.map +1 -1
  377. package/dist/private/rule_vars.css +73 -63
  378. package/dist/private/rule_vars.css.map +1 -1
  379. package/dist/private/search_vars.css +95 -87
  380. package/dist/private/search_vars.css.map +1 -1
  381. package/dist/private/slider/RangeSlider.cjs.map +1 -1
  382. package/dist/private/slider/RangeSlider.js.map +1 -1
  383. package/dist/private/slider/RangeSlider.mjs.map +1 -1
  384. package/dist/private/slider/Slider.cjs +1 -0
  385. package/dist/private/slider/Slider.cjs.map +1 -1
  386. package/dist/private/slider/Slider.js +1 -0
  387. package/dist/private/slider/Slider.js.map +1 -1
  388. package/dist/private/slider/Slider.mjs +1 -0
  389. package/dist/private/slider/Slider.mjs.map +1 -1
  390. package/dist/private/slider_vars.css +516 -402
  391. package/dist/private/slider_vars.css.map +1 -1
  392. package/dist/private/statuslight_vars.css +76 -68
  393. package/dist/private/statuslight_vars.css.map +1 -1
  394. package/dist/private/steplist/StepListItem.cjs.map +1 -1
  395. package/dist/private/steplist/StepListItem.js.map +1 -1
  396. package/dist/private/steplist/StepListItem.mjs.map +1 -1
  397. package/dist/private/steplist_vars.css +371 -297
  398. package/dist/private/steplist_vars.css.map +1 -1
  399. package/dist/private/stepper_vars.css +557 -438
  400. package/dist/private/stepper_vars.css.map +1 -1
  401. package/dist/private/table/InsertionIndicator.cjs +1 -0
  402. package/dist/private/table/InsertionIndicator.cjs.map +1 -1
  403. package/dist/private/table/InsertionIndicator.js +1 -0
  404. package/dist/private/table/InsertionIndicator.js.map +1 -1
  405. package/dist/private/table/InsertionIndicator.mjs +1 -0
  406. package/dist/private/table/InsertionIndicator.mjs.map +1 -1
  407. package/dist/private/table/Resizer.cjs +2 -25
  408. package/dist/private/table/Resizer.cjs.map +1 -1
  409. package/dist/private/table/Resizer.js +3 -26
  410. package/dist/private/table/Resizer.js.map +1 -1
  411. package/dist/private/table/Resizer.mjs +3 -26
  412. package/dist/private/table/Resizer.mjs.map +1 -1
  413. package/dist/private/table/RootDropIndicator.cjs +1 -0
  414. package/dist/private/table/RootDropIndicator.cjs.map +1 -1
  415. package/dist/private/table/RootDropIndicator.js +1 -0
  416. package/dist/private/table/RootDropIndicator.js.map +1 -1
  417. package/dist/private/table/RootDropIndicator.mjs +1 -0
  418. package/dist/private/table/RootDropIndicator.mjs.map +1 -1
  419. package/dist/private/table/TableViewBase.cjs +8 -0
  420. package/dist/private/table/TableViewBase.cjs.map +1 -1
  421. package/dist/private/table/TableViewBase.js +8 -0
  422. package/dist/private/table/TableViewBase.js.map +1 -1
  423. package/dist/private/table/TableViewBase.mjs +8 -0
  424. package/dist/private/table/TableViewBase.mjs.map +1 -1
  425. package/dist/private/table/TreeGridTableView.cjs +1 -0
  426. package/dist/private/table/TreeGridTableView.cjs.map +1 -1
  427. package/dist/private/table/TreeGridTableView.js +1 -0
  428. package/dist/private/table/TreeGridTableView.js.map +1 -1
  429. package/dist/private/table/TreeGridTableView.mjs +1 -0
  430. package/dist/private/table/TreeGridTableView.mjs.map +1 -1
  431. package/dist/private/table/table.css +103 -95
  432. package/dist/private/table/table.css.map +1 -1
  433. package/dist/private/table_vars.css +458 -350
  434. package/dist/private/table_vars.css.map +1 -1
  435. package/dist/private/tabs/Tabs.cjs +4 -2
  436. package/dist/private/tabs/Tabs.cjs.map +1 -1
  437. package/dist/private/tabs/Tabs.js +4 -2
  438. package/dist/private/tabs/Tabs.js.map +1 -1
  439. package/dist/private/tabs/Tabs.mjs +4 -2
  440. package/dist/private/tabs/Tabs.mjs.map +1 -1
  441. package/dist/private/tabs_vars.css +319 -281
  442. package/dist/private/tabs_vars.css.map +1 -1
  443. package/dist/private/tag/TagGroup.cjs +2 -0
  444. package/dist/private/tag/TagGroup.cjs.map +1 -1
  445. package/dist/private/tag/TagGroup.js +2 -0
  446. package/dist/private/tag/TagGroup.js.map +1 -1
  447. package/dist/private/tag/TagGroup.mjs +2 -0
  448. package/dist/private/tag/TagGroup.mjs.map +1 -1
  449. package/dist/private/tags_vars.css +167 -149
  450. package/dist/private/tags_vars.css.map +1 -1
  451. package/dist/private/textfield/TextArea.cjs +2 -0
  452. package/dist/private/textfield/TextArea.cjs.map +1 -1
  453. package/dist/private/textfield/TextArea.js +2 -0
  454. package/dist/private/textfield/TextArea.js.map +1 -1
  455. package/dist/private/textfield/TextArea.mjs +2 -0
  456. package/dist/private/textfield/TextArea.mjs.map +1 -1
  457. package/dist/private/textfield/TextField.cjs +1 -0
  458. package/dist/private/textfield/TextField.cjs.map +1 -1
  459. package/dist/private/textfield/TextField.js +1 -0
  460. package/dist/private/textfield/TextField.js.map +1 -1
  461. package/dist/private/textfield/TextField.mjs +1 -0
  462. package/dist/private/textfield/TextField.mjs.map +1 -1
  463. package/dist/private/textfield/TextFieldBase.cjs +2 -1
  464. package/dist/private/textfield/TextFieldBase.cjs.map +1 -1
  465. package/dist/private/textfield/TextFieldBase.js +2 -1
  466. package/dist/private/textfield/TextFieldBase.js.map +1 -1
  467. package/dist/private/textfield/TextFieldBase.mjs +2 -1
  468. package/dist/private/textfield/TextFieldBase.mjs.map +1 -1
  469. package/dist/private/textfield_vars.css +278 -250
  470. package/dist/private/textfield_vars.css.map +1 -1
  471. package/dist/private/toast/Toast.cjs.map +1 -1
  472. package/dist/private/toast/Toast.js.map +1 -1
  473. package/dist/private/toast/Toast.mjs.map +1 -1
  474. package/dist/private/toast/toastContainer.css +64 -56
  475. package/dist/private/toast/toastContainer.css.map +1 -1
  476. package/dist/private/toast_vars.css +5 -3
  477. package/dist/private/toast_vars.css.map +1 -1
  478. package/dist/private/toggle_vars.css +287 -211
  479. package/dist/private/toggle_vars.css.map +1 -1
  480. package/dist/private/tooltip_vars.css +150 -127
  481. package/dist/private/tooltip_vars.css.map +1 -1
  482. package/dist/private/tray_vars.css +54 -46
  483. package/dist/private/tray_vars.css.map +1 -1
  484. package/dist/private/typography_index.css +54 -46
  485. package/dist/private/typography_index.css.map +1 -1
  486. package/dist/private/underlay_vars.css +58 -50
  487. package/dist/private/underlay_vars.css.map +1 -1
  488. package/dist/private/utils/Slots.cjs +1 -0
  489. package/dist/private/utils/Slots.cjs.map +1 -1
  490. package/dist/private/utils/Slots.js +1 -0
  491. package/dist/private/utils/Slots.js.map +1 -1
  492. package/dist/private/utils/Slots.mjs +1 -0
  493. package/dist/private/utils/Slots.mjs.map +1 -1
  494. package/dist/private/well_vars.css +54 -46
  495. package/dist/private/well_vars.css.map +1 -1
  496. package/dist/types/src/dialog/AlertDialog.d.ts +2 -2
  497. package/i18n/ar-AE.js +1 -1
  498. package/i18n/ar-AE.mjs +1 -1
  499. package/i18n/bg-BG.js +1 -1
  500. package/i18n/bg-BG.mjs +1 -1
  501. package/i18n/cs-CZ.js +1 -1
  502. package/i18n/cs-CZ.mjs +1 -1
  503. package/i18n/da-DK.js +1 -1
  504. package/i18n/da-DK.mjs +1 -1
  505. package/i18n/de-DE.js +1 -1
  506. package/i18n/de-DE.mjs +1 -1
  507. package/i18n/el-GR.js +1 -1
  508. package/i18n/el-GR.mjs +1 -1
  509. package/i18n/en-US.js +1 -1
  510. package/i18n/en-US.mjs +1 -1
  511. package/i18n/es-ES.js +1 -1
  512. package/i18n/es-ES.mjs +1 -1
  513. package/i18n/et-EE.js +1 -1
  514. package/i18n/et-EE.mjs +1 -1
  515. package/i18n/fi-FI.js +1 -1
  516. package/i18n/fi-FI.mjs +1 -1
  517. package/i18n/fr-FR.js +1 -1
  518. package/i18n/fr-FR.mjs +1 -1
  519. package/i18n/he-IL.js +1 -1
  520. package/i18n/he-IL.mjs +1 -1
  521. package/i18n/hr-HR.js +1 -1
  522. package/i18n/hr-HR.mjs +1 -1
  523. package/i18n/hu-HU.js +1 -1
  524. package/i18n/hu-HU.mjs +1 -1
  525. package/i18n/index.js +1 -1
  526. package/i18n/index.mjs +1 -1
  527. package/i18n/it-IT.js +1 -1
  528. package/i18n/it-IT.mjs +1 -1
  529. package/i18n/ja-JP.js +1 -1
  530. package/i18n/ja-JP.mjs +1 -1
  531. package/i18n/ko-KR.js +1 -1
  532. package/i18n/ko-KR.mjs +1 -1
  533. package/i18n/lt-LT.js +1 -1
  534. package/i18n/lt-LT.mjs +1 -1
  535. package/i18n/lv-LV.js +1 -1
  536. package/i18n/lv-LV.mjs +1 -1
  537. package/i18n/nb-NO.js +1 -1
  538. package/i18n/nb-NO.mjs +1 -1
  539. package/i18n/nl-NL.js +1 -1
  540. package/i18n/nl-NL.mjs +1 -1
  541. package/i18n/pl-PL.js +1 -1
  542. package/i18n/pl-PL.mjs +1 -1
  543. package/i18n/pt-BR.js +1 -1
  544. package/i18n/pt-BR.mjs +1 -1
  545. package/i18n/pt-PT.js +1 -1
  546. package/i18n/pt-PT.mjs +1 -1
  547. package/i18n/ro-RO.js +1 -1
  548. package/i18n/ro-RO.mjs +1 -1
  549. package/i18n/ru-RU.js +1 -1
  550. package/i18n/ru-RU.mjs +1 -1
  551. package/i18n/sk-SK.js +1 -1
  552. package/i18n/sk-SK.mjs +1 -1
  553. package/i18n/sl-SI.js +1 -1
  554. package/i18n/sl-SI.mjs +1 -1
  555. package/i18n/sr-SP.js +1 -1
  556. package/i18n/sr-SP.mjs +1 -1
  557. package/i18n/sv-SE.js +1 -1
  558. package/i18n/sv-SE.mjs +1 -1
  559. package/i18n/tr-TR.js +1 -1
  560. package/i18n/tr-TR.mjs +1 -1
  561. package/i18n/uk-UA.js +1 -1
  562. package/i18n/uk-UA.mjs +1 -1
  563. package/i18n/zh-CN.js +1 -1
  564. package/i18n/zh-CN.mjs +1 -1
  565. package/i18n/zh-TW.js +1 -1
  566. package/i18n/zh-TW.mjs +1 -1
  567. package/package.json +7 -7
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/MobileSearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport {AriaButtonProps, useButton} from 'react-aria/useButton';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {ComboBoxState, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {DismissButton} from 'react-aria/Overlay';\nimport {Field} from '../label/Field';\nimport {FocusableRef, ValidationState} from '@react-types/shared';\nimport {focusSafely} from 'react-aria/private/interactions/focusSafely';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {getActiveElement} from 'react-aria/private/utils/shadowdom/DOMFunctions';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n HTMLAttributes,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\n// @ts-ignore\nimport {setInteractionModality} from 'react-aria/private/interactions/useFocusVisible';\nimport {SpectrumSearchAutocompleteProps} from './SearchAutocomplete';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {Tray} from '../overlays/Tray';\nimport {useDialog} from 'react-aria/useDialog';\nimport {useField} from 'react-aria/useField';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useFormReset} from 'react-aria/private/utils/useFormReset';\nimport {useFormValidation} from 'react-aria/private/form/useFormValidation';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useOverlayTrigger} from 'react-aria/useOverlayTrigger';\nimport {useProviderProps} from '../provider/Provider';\nimport {useSearchAutocomplete} from 'react-aria/private/autocomplete/useSearchAutocomplete';\n\nfunction ForwardMobileSearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n isQuiet,\n isDisabled,\n isRequired,\n validationBehavior,\n validate,\n name,\n isReadOnly,\n onSubmit = () => {}\n } = props;\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: true,\n // Needs to be false here otherwise we double up on commitSelection/commitCustomValue calls when\n // user taps on underlay (i.e. initial tap will call setFocused(false) -> commitSelection/commitCustomValue via onBlur,\n // then the closing of the tray will call setFocused(false) again due to cleanup effect)\n shouldCloseOnBlur: false,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n\n let buttonRef = useRef<HTMLDivElement>(null);\n let domRef = useFocusableRef(ref, buttonRef);\n let {triggerProps, overlayProps} = useOverlayTrigger({type: 'listbox'}, state, buttonRef);\n\n let inputRef = useRef<HTMLInputElement>(null);\n useFormValidation(\n {\n ...props,\n focus: () => buttonRef.current?.focus()\n },\n state,\n inputRef\n );\n let {isInvalid, validationErrors, validationDetails} = state.displayValidation;\n let validationState = props.validationState || (isInvalid ? 'invalid' : undefined);\n let errorMessage = props.errorMessage ?? validationErrors.join(' ');\n\n let {labelProps, fieldProps, descriptionProps, errorMessageProps} = useField({\n ...props,\n labelElementType: 'span',\n isInvalid,\n errorMessage\n });\n\n // Focus the button and show focus ring when clicking on the label\n labelProps.onClick = () => {\n if (!props.isDisabled && buttonRef.current) {\n buttonRef.current.focus();\n setInteractionModality('keyboard');\n }\n };\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = {\n type: 'hidden',\n name,\n value: state.inputValue\n };\n\n if (validationBehavior === 'native') {\n // Use a hidden <input type=\"text\"> rather than <input type=\"hidden\">\n // so that an empty value blocks HTML form submission when the field is required.\n inputProps.type = 'text';\n inputProps.hidden = true;\n inputProps.required = isRequired;\n // Ignore react warning.\n inputProps.onChange = () => {};\n }\n\n useFormReset(inputRef, state.defaultInputValue, state.setInputValue);\n\n return (\n <>\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n elementType=\"span\"\n ref={domRef}\n includeNecessityIndicatorInAccessibilityName>\n <SearchAutocompleteButton\n {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus, icon: props.icon})}\n ref={buttonRef}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isPlaceholder={!state.inputValue}\n validationState={validationState}\n inputValue={state.inputValue}\n clearInput={() => state.setInputValue('')}\n onPress={() => !isReadOnly && state.open(null, 'manual')}>\n {state.inputValue || props.placeholder || ''}\n </SearchAutocompleteButton>\n </Field>\n <input {...inputProps} ref={inputRef} />\n <Tray state={state} isFixedHeight {...overlayProps}>\n <SearchAutocompleteTray\n {...props}\n onClose={state.close}\n overlayProps={overlayProps}\n state={state}\n />\n </Tray>\n </>\n );\n}\n\nexport let MobileSearchAutocomplete = React.forwardRef(ForwardMobileSearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteButtonProps extends AriaButtonProps {\n icon?: ReactElement | null;\n isQuiet?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isPlaceholder?: boolean;\n validationState?: ValidationState;\n inputValue?: string;\n clearInput?: () => void;\n children?: ReactNode;\n style?: React.CSSProperties;\n className?: string;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nconst SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteButton(\n props: SearchAutocompleteButtonProps,\n ref: any\n) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n isPlaceholder,\n validationState,\n inputValue,\n clearInput,\n children,\n style,\n className\n } = props;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let valueId = useId();\n let invalidId = useId();\n let validationIcon =\n validationState === 'invalid' ? (\n <AlertMedium id={invalidId} aria-label={stringFormatter.format('invalid')} />\n ) : (\n <CheckmarkMedium />\n );\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n let clearButton = (\n <ClearButton\n onPress={e => {\n clearInput?.();\n props?.onPress?.(e);\n }}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let validation = React.cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n textfieldStyles,\n 'spectrum-Textfield-validationIcon',\n classNames(styles, 'spectrum-InputGroup-input-validationIcon'),\n classNames(searchStyles, 'spectrum-Search-validationIcon')\n )\n });\n\n let {hoverProps, isHovered} = useHover({});\n let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n let {buttonProps} = useButton(\n {\n ...props,\n 'aria-labelledby': [\n props['aria-labelledby'],\n props['aria-label'] && !props['aria-labelledby'] ? props.id : null,\n valueId,\n validationState === 'invalid' ? invalidId : null\n ]\n .filter(Boolean)\n .join(' '),\n elementType: 'div'\n },\n ref\n );\n\n return (\n <div\n {...mergeProps(hoverProps, focusProps, buttonProps)}\n aria-haspopup=\"dialog\"\n ref={ref}\n style={{...style, outline: 'none'}}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'focus-ring': isFocusVisible\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete', 'mobile-searchautocomplete'),\n className\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Textfield--valid': validationState === 'valid' && !isDisabled,\n 'spectrum-Textfield--quiet': isQuiet\n },\n classNames(searchStyles, 'spectrum-Search', 'spectrum-Search--loadable', {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n }),\n classNames(styles, 'spectrum-InputGroup-field')\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': !!icon,\n 'is-hovered': isHovered,\n 'is-placeholder': isPlaceholder,\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'is-focused': isFocused\n },\n classNames(searchStyles, 'spectrum-Search-input'),\n classNames(searchAutocompleteStyles, 'mobile-input')\n )}>\n {icon}\n <span id={valueId} className={classNames(searchAutocompleteStyles, 'mobile-value')}>\n {children}\n </span>\n </div>\n {validationState && !isDisabled ? validation : null}\n {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}\n </div>\n </div>\n );\n});\n\ninterface SearchAutocompleteTrayProps<T> extends SpectrumSearchAutocompleteProps<T> {\n state: ComboBoxState<T>;\n overlayProps: HTMLAttributes<HTMLElement>;\n loadingIndicator?: ReactElement;\n onClose: () => void;\n}\n\nfunction SearchAutocompleteTray<T>(props: SearchAutocompleteTrayProps<T>) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n // completionMode = 'suggest',\n state,\n icon = searchIcon,\n isDisabled,\n validationState,\n label,\n overlayProps,\n loadingState,\n onLoadMore,\n onClose,\n onSubmit\n } = props;\n\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n let inputRef = useRef<HTMLInputElement>(null);\n let popoverRef = useRef<HTMLDivElement>(null);\n let listBoxRef = useRef<HTMLDivElement>(null);\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let layout = useListBoxLayout();\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n\n let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete<T>(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: popoverRef,\n listBoxRef,\n inputRef,\n // Handled outside the tray.\n name: undefined\n },\n state\n );\n\n React.useEffect(() => {\n if (inputRef.current) {\n focusSafely(inputRef.current);\n }\n }, []);\n\n React.useEffect(() => {\n // When the tray closes, set state.isFocused (i.e. the tray input's focus tracker) to false.\n // This is to prevent state.isFocused from being set to true when the tray closes via tapping on the underlay\n // (FocusScope attempts to restore focus to the tray input when tapping outside the tray due to \"contain\")\n // Have to do this manually since React doesn't call onBlur when a component is unmounted: https://github.com/facebook/react/issues/12363\n if (!state.isOpen && state.isFocused) {\n state.setFocused(false);\n }\n });\n\n let {dialogProps} = useDialog(\n {\n 'aria-labelledby': useId(labelProps.id)\n },\n popoverRef\n );\n\n // Override the role of the input to \"searchbox\" instead of \"combobox\".\n // Since the listbox is always visible, the combobox role doesn't really give us anything.\n // VoiceOver on iOS reads \"double tap to collapse\" when focused on the input rather than\n // \"double tap to edit text\", as with a textbox or searchbox. We'd like double tapping to\n // open the virtual keyboard rather than closing the tray.\n inputProps.role = 'searchbox';\n inputProps['aria-haspopup'] = 'listbox';\n delete inputProps.onTouchEnd;\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search-circleLoader',\n classNames(textfieldStyles, 'spectrum-Textfield-circleLoader')\n )}\n />\n );\n\n // Close the software keyboard on scroll to give the user a bigger area to scroll.\n // But only do this if scrolling with touch, otherwise it can cause issues with touch\n // screen readers.\n let isTouchDown = useRef(false);\n let onTouchStart = () => {\n isTouchDown.current = true;\n };\n\n let onTouchEnd = () => {\n isTouchDown.current = false;\n };\n\n let onScroll = useCallback(() => {\n if (!inputRef.current || getActiveElement() !== inputRef.current || !isTouchDown.current) {\n return;\n }\n\n if (popoverRef.current) {\n popoverRef.current.focus();\n }\n }, [inputRef, popoverRef, isTouchDown]);\n\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (loadingState === 'filtering' && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (loadingState !== 'filtering') {\n // If loading is no longer happening, clear any timers and hide the loading circle\n setShowLoading(false);\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [loadingState, inputValue, showLoading]);\n\n let onKeyDown = e => {\n // Close virtual keyboard, close tray, and fire onSubmit if user hits Enter w/o any focused options\n if (e.key === 'Enter' && state.selectionManager.focusedKey == null) {\n popoverRef.current?.focus();\n if (onClose) {\n onClose();\n }\n if (onSubmit) {\n onSubmit(inputValue == null ? null : inputValue.toString(), null);\n }\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(e);\n }\n }\n };\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n return (\n <FocusScope restoreFocus contain>\n <div\n {...mergeProps(overlayProps, dialogProps)}\n ref={popoverRef}\n className={classNames(searchAutocompleteStyles, 'tray-dialog')}>\n <DismissButton onDismiss={onClose} />\n <TextFieldBase\n label={label}\n labelProps={labelProps}\n inputProps={{...inputProps, onKeyDown}}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isLoading={showLoading && loadingState === 'filtering'}\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n validationState={validationState}\n wrapperChildren={\n (state.inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !props.isReadOnly\n ? clearButton\n : undefined\n }\n icon={icon}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Textfield',\n 'spectrum-Search--loadable',\n {\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(searchAutocompleteStyles, 'tray-textfield', {\n 'has-label': !!props.label\n })\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n />\n <ListBoxBase\n {...listBoxProps}\n domProps={{onTouchStart, onTouchEnd}}\n disallowEmptySelection\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n renderEmptyState={() =>\n loadingState !== 'loading' && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n UNSAFE_className={classNames(searchAutocompleteStyles, 'tray-listbox')}\n ref={listBoxRef}\n onScroll={onScroll}\n onLoadMore={onLoadMore}\n isLoading={isLoading}\n />\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n );\n}\n"],"names":[],"version":3,"file":"MobileSearchAutocomplete.js.map"}
1
+ {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/MobileSearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport {AriaButtonProps, useButton} from 'react-aria/useButton';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {ComboBoxState, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {DismissButton} from 'react-aria/Overlay';\nimport {Field} from '../label/Field';\nimport {FocusableRef, ValidationState} from '@react-types/shared';\nimport {focusSafely} from 'react-aria/private/interactions/focusSafely';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {getActiveElement} from 'react-aria/private/utils/shadowdom/DOMFunctions';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n HTMLAttributes,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport {setInteractionModality} from 'react-aria/private/interactions/useFocusVisible';\nimport {SpectrumSearchAutocompleteProps} from './SearchAutocomplete';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {Tray} from '../overlays/Tray';\nimport {useDialog} from 'react-aria/useDialog';\nimport {useField} from 'react-aria/useField';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useFormReset} from 'react-aria/private/utils/useFormReset';\nimport {useFormValidation} from 'react-aria/private/form/useFormValidation';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useOverlayTrigger} from 'react-aria/useOverlayTrigger';\nimport {useProviderProps} from '../provider/Provider';\nimport {useSearchAutocomplete} from 'react-aria/private/autocomplete/useSearchAutocomplete';\n\nfunction ForwardMobileSearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n // oxlint-disable-next-line react/react-compiler\n props = useProviderProps(props);\n\n let {\n isQuiet,\n isDisabled,\n isRequired,\n validationBehavior,\n validate,\n name,\n isReadOnly,\n onSubmit = () => {}\n } = props;\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: true,\n // Needs to be false here otherwise we double up on commitSelection/commitCustomValue calls when\n // user taps on underlay (i.e. initial tap will call setFocused(false) -> commitSelection/commitCustomValue via onBlur,\n // then the closing of the tray will call setFocused(false) again due to cleanup effect)\n shouldCloseOnBlur: false,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n\n let buttonRef = useRef<HTMLDivElement>(null);\n let domRef = useFocusableRef(ref, buttonRef);\n let {triggerProps, overlayProps} = useOverlayTrigger({type: 'listbox'}, state, buttonRef);\n\n let inputRef = useRef<HTMLInputElement>(null);\n useFormValidation(\n {\n ...props,\n focus: () => buttonRef.current?.focus()\n },\n state,\n inputRef\n );\n let {isInvalid, validationErrors, validationDetails} = state.displayValidation;\n let validationState = props.validationState || (isInvalid ? 'invalid' : undefined);\n let errorMessage = props.errorMessage ?? validationErrors.join(' ');\n\n let {labelProps, fieldProps, descriptionProps, errorMessageProps} = useField({\n ...props,\n labelElementType: 'span',\n isInvalid,\n errorMessage\n });\n\n // Focus the button and show focus ring when clicking on the label\n // oxlint-disable-next-line react/react-compiler\n labelProps.onClick = () => {\n if (!props.isDisabled && buttonRef.current) {\n buttonRef.current.focus();\n setInteractionModality('keyboard');\n }\n };\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = {\n type: 'hidden',\n name,\n value: state.inputValue\n };\n\n if (validationBehavior === 'native') {\n // Use a hidden <input type=\"text\"> rather than <input type=\"hidden\">\n // so that an empty value blocks HTML form submission when the field is required.\n inputProps.type = 'text';\n inputProps.hidden = true;\n inputProps.required = isRequired;\n // Ignore react warning.\n inputProps.onChange = () => {};\n }\n\n useFormReset(inputRef, state.defaultInputValue, state.setInputValue);\n\n return (\n <>\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n elementType=\"span\"\n ref={domRef}\n includeNecessityIndicatorInAccessibilityName>\n <SearchAutocompleteButton\n {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus, icon: props.icon})}\n ref={buttonRef}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isPlaceholder={!state.inputValue}\n validationState={validationState}\n inputValue={state.inputValue}\n clearInput={() => state.setInputValue('')}\n onPress={() => !isReadOnly && state.open(null, 'manual')}>\n {state.inputValue || props.placeholder || ''}\n </SearchAutocompleteButton>\n </Field>\n <input {...inputProps} ref={inputRef} />\n <Tray state={state} isFixedHeight {...overlayProps}>\n <SearchAutocompleteTray\n {...props}\n onClose={state.close}\n overlayProps={overlayProps}\n state={state}\n />\n </Tray>\n </>\n );\n}\n\nexport let MobileSearchAutocomplete = React.forwardRef(ForwardMobileSearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteButtonProps extends AriaButtonProps {\n icon?: ReactElement | null;\n isQuiet?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isPlaceholder?: boolean;\n validationState?: ValidationState;\n inputValue?: string;\n clearInput?: () => void;\n children?: ReactNode;\n style?: React.CSSProperties;\n className?: string;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nconst SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteButton(\n props: SearchAutocompleteButtonProps,\n ref: any\n) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n isPlaceholder,\n validationState,\n inputValue,\n clearInput,\n children,\n style,\n className\n } = props;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let valueId = useId();\n let invalidId = useId();\n let validationIcon =\n validationState === 'invalid' ? (\n <AlertMedium id={invalidId} aria-label={stringFormatter.format('invalid')} />\n ) : (\n <CheckmarkMedium />\n );\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n let clearButton = (\n <ClearButton\n onPress={e => {\n clearInput?.();\n props?.onPress?.(e);\n }}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let validation = React.cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n textfieldStyles,\n 'spectrum-Textfield-validationIcon',\n classNames(styles, 'spectrum-InputGroup-input-validationIcon'),\n classNames(searchStyles, 'spectrum-Search-validationIcon')\n )\n });\n\n let {hoverProps, isHovered} = useHover({});\n let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n let {buttonProps} = useButton(\n {\n ...props,\n 'aria-labelledby': [\n props['aria-labelledby'],\n props['aria-label'] && !props['aria-labelledby'] ? props.id : null,\n valueId,\n validationState === 'invalid' ? invalidId : null\n ]\n .filter(Boolean)\n .join(' '),\n elementType: 'div'\n },\n ref\n );\n\n return (\n <div\n {...mergeProps(hoverProps, focusProps, buttonProps)}\n aria-haspopup=\"dialog\"\n ref={ref}\n style={{...style, outline: 'none'}}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'focus-ring': isFocusVisible\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete', 'mobile-searchautocomplete'),\n className\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Textfield--valid': validationState === 'valid' && !isDisabled,\n 'spectrum-Textfield--quiet': isQuiet\n },\n classNames(searchStyles, 'spectrum-Search', 'spectrum-Search--loadable', {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n }),\n classNames(styles, 'spectrum-InputGroup-field')\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': !!icon,\n 'is-hovered': isHovered,\n 'is-placeholder': isPlaceholder,\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'is-focused': isFocused\n },\n classNames(searchStyles, 'spectrum-Search-input'),\n classNames(searchAutocompleteStyles, 'mobile-input')\n )}>\n {icon}\n <span id={valueId} className={classNames(searchAutocompleteStyles, 'mobile-value')}>\n {children}\n </span>\n </div>\n {validationState && !isDisabled ? validation : null}\n {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}\n </div>\n </div>\n );\n});\n\ninterface SearchAutocompleteTrayProps<T> extends SpectrumSearchAutocompleteProps<T> {\n state: ComboBoxState<T>;\n overlayProps: HTMLAttributes<HTMLElement>;\n loadingIndicator?: ReactElement;\n onClose: () => void;\n}\n\nfunction SearchAutocompleteTray<T>(props: SearchAutocompleteTrayProps<T>) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n // completionMode = 'suggest',\n state,\n icon = searchIcon,\n isDisabled,\n validationState,\n label,\n overlayProps,\n loadingState,\n onLoadMore,\n onClose,\n onSubmit\n } = props;\n\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n let inputRef = useRef<HTMLInputElement>(null);\n let popoverRef = useRef<HTMLDivElement>(null);\n let listBoxRef = useRef<HTMLDivElement>(null);\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let layout = useListBoxLayout();\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n\n let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete<T>(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: popoverRef,\n listBoxRef,\n inputRef,\n // Handled outside the tray.\n name: undefined\n },\n state\n );\n\n React.useEffect(() => {\n if (inputRef.current) {\n focusSafely(inputRef.current);\n }\n }, []);\n\n React.useEffect(() => {\n // When the tray closes, set state.isFocused (i.e. the tray input's focus tracker) to false.\n // This is to prevent state.isFocused from being set to true when the tray closes via tapping on the underlay\n // (FocusScope attempts to restore focus to the tray input when tapping outside the tray due to \"contain\")\n // Have to do this manually since React doesn't call onBlur when a component is unmounted: https://github.com/facebook/react/issues/12363\n if (!state.isOpen && state.isFocused) {\n state.setFocused(false);\n }\n });\n\n let {dialogProps} = useDialog(\n {\n 'aria-labelledby': useId(labelProps.id)\n },\n popoverRef\n );\n\n // Override the role of the input to \"searchbox\" instead of \"combobox\".\n // Since the listbox is always visible, the combobox role doesn't really give us anything.\n // VoiceOver on iOS reads \"double tap to collapse\" when focused on the input rather than\n // \"double tap to edit text\", as with a textbox or searchbox. We'd like double tapping to\n // open the virtual keyboard rather than closing the tray.\n // oxlint-disable-next-line react/react-compiler\n inputProps.role = 'searchbox';\n // oxlint-disable-next-line react/react-compiler\n inputProps['aria-haspopup'] = 'listbox';\n // oxlint-disable-next-line react/react-compiler\n delete inputProps.onTouchEnd;\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search-circleLoader',\n classNames(textfieldStyles, 'spectrum-Textfield-circleLoader')\n )}\n />\n );\n\n // Close the software keyboard on scroll to give the user a bigger area to scroll.\n // But only do this if scrolling with touch, otherwise it can cause issues with touch\n // screen readers.\n let isTouchDown = useRef(false);\n let onTouchStart = () => {\n isTouchDown.current = true;\n };\n\n let onTouchEnd = () => {\n isTouchDown.current = false;\n };\n\n let onScroll = useCallback(() => {\n if (!inputRef.current || getActiveElement() !== inputRef.current || !isTouchDown.current) {\n return;\n }\n\n if (popoverRef.current) {\n popoverRef.current.focus();\n }\n }, [inputRef, popoverRef, isTouchDown]);\n\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (loadingState === 'filtering' && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (loadingState !== 'filtering') {\n // If loading is no longer happening, clear any timers and hide the loading circle\n // oxlint-disable-next-line react/react-compiler\n setShowLoading(false);\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [loadingState, inputValue, showLoading]);\n\n let onKeyDown = e => {\n // Close virtual keyboard, close tray, and fire onSubmit if user hits Enter w/o any focused options\n if (e.key === 'Enter' && state.selectionManager.focusedKey == null) {\n popoverRef.current?.focus();\n if (onClose) {\n onClose();\n }\n if (onSubmit) {\n onSubmit(inputValue == null ? null : inputValue.toString(), null);\n }\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(e);\n }\n }\n };\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n return (\n <FocusScope restoreFocus contain>\n <div\n {...mergeProps(overlayProps, dialogProps)}\n ref={popoverRef}\n className={classNames(searchAutocompleteStyles, 'tray-dialog')}>\n <DismissButton onDismiss={onClose} />\n <TextFieldBase\n label={label}\n labelProps={labelProps}\n inputProps={{...inputProps, onKeyDown}}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isLoading={showLoading && loadingState === 'filtering'}\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n validationState={validationState}\n wrapperChildren={\n (state.inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !props.isReadOnly\n ? clearButton\n : undefined\n }\n icon={icon}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Textfield',\n 'spectrum-Search--loadable',\n {\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(searchAutocompleteStyles, 'tray-textfield', {\n 'has-label': !!props.label\n })\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n />\n <ListBoxBase\n {...listBoxProps}\n domProps={{onTouchStart, onTouchEnd}}\n disallowEmptySelection\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n renderEmptyState={() =>\n loadingState !== 'loading' && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n UNSAFE_className={classNames(searchAutocompleteStyles, 'tray-listbox')}\n ref={listBoxRef}\n onScroll={onScroll}\n onLoadMore={onLoadMore}\n isLoading={isLoading}\n />\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n );\n}\n"],"names":[],"version":3,"file":"MobileSearchAutocomplete.js.map"}
@@ -92,6 +92,7 @@ function $parcel$interopDefault(a) {
92
92
 
93
93
 
94
94
  function $d9f9f86122f1f89b$var$ForwardMobileSearchAutocomplete(props, ref) {
95
+ // oxlint-disable-next-line react/react-compiler
95
96
  props = (0, $71dfb0e0358a12de$export$521c373ccc32c300)(props);
96
97
  let { isQuiet: isQuiet, isDisabled: isDisabled, isRequired: isRequired, validationBehavior: validationBehavior, validate: validate, name: name, isReadOnly: isReadOnly, onSubmit: onSubmit = ()=>{} } = props;
97
98
  let { contains: contains } = (0, $gWiNP$useFilter)({
@@ -133,6 +134,7 @@ function $d9f9f86122f1f89b$var$ForwardMobileSearchAutocomplete(props, ref) {
133
134
  errorMessage: errorMessage
134
135
  });
135
136
  // Focus the button and show focus ring when clicking on the label
137
+ // oxlint-disable-next-line react/react-compiler
136
138
  labelProps.onClick = ()=>{
137
139
  if (!props.isDisabled && buttonRef.current) {
138
140
  buttonRef.current.focus();
@@ -320,8 +322,11 @@ function $d9f9f86122f1f89b$var$SearchAutocompleteTray(props) {
320
322
  // VoiceOver on iOS reads "double tap to collapse" when focused on the input rather than
321
323
  // "double tap to edit text", as with a textbox or searchbox. We'd like double tapping to
322
324
  // open the virtual keyboard rather than closing the tray.
325
+ // oxlint-disable-next-line react/react-compiler
323
326
  inputProps.role = 'searchbox';
327
+ // oxlint-disable-next-line react/react-compiler
324
328
  inputProps['aria-haspopup'] = 'listbox';
329
+ // oxlint-disable-next-line react/react-compiler
325
330
  delete inputProps.onTouchEnd;
326
331
  let clearButton = /*#__PURE__*/ (0, $gWiNP$react).createElement((0, $ab14010a528467be$export$13ec83e50bf04290), {
327
332
  ...clearButtonProps,
@@ -371,6 +376,7 @@ function $d9f9f86122f1f89b$var$SearchAutocompleteTray(props) {
371
376
  }
372
377
  } else if (loadingState !== 'filtering') {
373
378
  // If loading is no longer happening, clear any timers and hide the loading circle
379
+ // oxlint-disable-next-line react/react-compiler
374
380
  setShowLoading(false);
375
381
  if (timeout.current !== null) {
376
382
  clearTimeout(timeout.current);
@@ -1 +1 @@
1
- {"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;CAUC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDD,SAAS,sDACP,KAAyC,EACzC,GAA8B;IAE9B,QAAQ,CAAA,GAAA,yCAAe,EAAE;IAEzB,IAAI,WACF,OAAO,cACP,UAAU,cACV,UAAU,sBACV,kBAAkB,YAClB,QAAQ,QACR,IAAI,cACJ,UAAU,YACV,WAAW,KAAO,GACnB,GAAG;IAEJ,IAAI,YAAC,QAAQ,EAAC,GAAG,CAAA,GAAA,gBAAQ,EAAE;QAAC,aAAa;IAAM;IAC/C,IAAI,QAAQ,CAAA,GAAA,uBAAe,EAAE;QAC3B,GAAG,KAAK;QACR,eAAe;QACf,uBAAuB;QACvB,gGAAgG;QAChG,uHAAuH;QACvH,wFAAwF;QACxF,mBAAmB;QACnB,mBAAmB;QACnB,mBAAmB,CAAA,MAAO,QAAQ,QAAQ,SAAS,MAAM;QACzD,aAAa;QACb,oBAAoB;QACpB,UAAU,CAAA,GAAA,kBAAU,EAAE,CAAA,IAAK,WAAW,EAAE,UAAU,GAAG;YAAC;SAAS;IACjE;IAEA,IAAI,YAAY,CAAA,GAAA,aAAK,EAAkB;IACvC,IAAI,SAAS,CAAA,GAAA,yCAAc,EAAE,KAAK;IAClC,IAAI,gBAAC,YAAY,gBAAE,YAAY,EAAC,GAAG,CAAA,GAAA,wBAAgB,EAAE;QAAC,MAAM;IAAS,GAAG,OAAO;IAE/E,IAAI,WAAW,CAAA,GAAA,aAAK,EAAoB;IACxC,CAAA,GAAA,wBAAgB,EACd;QACE,GAAG,KAAK;QACR,OAAO,IAAM,UAAU,OAAO,EAAE;IAClC,GACA,OACA;IAEF,IAAI,aAAC,SAAS,oBAAE,gBAAgB,qBAAE,iBAAiB,EAAC,GAAG,MAAM,iBAAiB;IAC9E,IAAI,kBAAkB,MAAM,eAAe,IAAK,CAAA,YAAY,YAAY,SAAQ;IAChF,IAAI,eAAe,MAAM,YAAY,IAAI,iBAAiB,IAAI,CAAC;IAE/D,IAAI,cAAC,UAAU,cAAE,UAAU,oBAAE,gBAAgB,qBAAE,iBAAiB,EAAC,GAAG,CAAA,GAAA,eAAO,EAAE;QAC3E,GAAG,KAAK;QACR,kBAAkB;mBAClB;sBACA;IACF;IAEA,kEAAkE;IAClE,WAAW,OAAO,GAAG;QACnB,IAAI,CAAC,MAAM,UAAU,IAAI,UAAU,OAAO,EAAE;YAC1C,UAAU,OAAO,CAAC,KAAK;YACvB,CAAA,GAAA,6BAAqB,EAAE;QACzB;IACF;IAEA,IAAI,aAAoD;QACtD,MAAM;cACN;QACA,OAAO,MAAM,UAAU;IACzB;IAEA,IAAI,uBAAuB,UAAU;QACnC,qEAAqE;QACrE,iFAAiF;QACjF,WAAW,IAAI,GAAG;QAClB,WAAW,MAAM,GAAG;QACpB,WAAW,QAAQ,GAAG;QACtB,wBAAwB;QACxB,WAAW,QAAQ,GAAG,KAAO;IAC/B;IAEA,CAAA,GAAA,mBAAW,EAAE,UAAU,MAAM,iBAAiB,EAAE,MAAM,aAAa;IAEnE,qBACE,gFACE,gCAAC,CAAA,GAAA,yCAAI;QACF,GAAG,KAAK;QACT,YAAY;QACZ,kBAAkB;QAClB,mBAAmB;QACnB,WAAW;QACX,kBAAkB;QAClB,mBAAmB;QACnB,aAAY;QACZ,KAAK;QACL,8CAAA;qBACA,gCAAC;QACE,GAAG,CAAA,GAAA,iBAAS,EAAE,cAAc,YAAY;YAAC,WAAW,MAAM,SAAS;YAAE,MAAM,MAAM,IAAI;QAAA,EAAE;QACxF,KAAK;QACL,SAAS;QACT,YAAY;QACZ,YAAY;QACZ,eAAe,CAAC,MAAM,UAAU;QAChC,iBAAiB;QACjB,YAAY,MAAM,UAAU;QAC5B,YAAY,IAAM,MAAM,aAAa,CAAC;QACtC,SAAS,IAAM,CAAC,cAAc,MAAM,IAAI,CAAC,MAAM;OAC9C,MAAM,UAAU,IAAI,MAAM,WAAW,IAAI,oBAG9C,gCAAC;QAAO,GAAG,UAAU;QAAE,KAAK;sBAC5B,gCAAC,CAAA,GAAA,yCAAG;QAAE,OAAO;QAAO,eAAA;QAAe,GAAG,YAAY;qBAChD,gCAAC;QACE,GAAG,KAAK;QACT,SAAS,MAAM,KAAK;QACpB,cAAc;QACd,OAAO;;AAKjB;AAEO,IAAI,0DAA2B,CAAA,GAAA,YAAI,EAAE,UAAU,CAAC;AAkBvD,2GAA2G;AAC3G,sCAAsC;AACtC,MAAM,+DAA2B,CAAA,GAAA,YAAI,EAAE,UAAU,CAAC,SAAS,yBACzD,KAAoC,EACpC,GAAQ;IAER,IAAI,2BAAa,gCAAC,CAAA,GAAA,+BAAQ;QAAE,eAAY;;IAExC,IAAI,QACF,OAAO,qBACP,OAAO,cACP,UAAU,cACV,UAAU,iBACV,aAAa,mBACb,eAAe,cACf,UAAU,cACV,UAAU,YACV,QAAQ,SACR,KAAK,aACL,SAAS,EACV,GAAG;IACJ,IAAI,kBAAkB,CAAA,GAAA,kCAA0B,EAAE,CAAA,GAAA,+CAAW,GAAG;IAChE,IAAI,UAAU,CAAA,GAAA,YAAI;IAClB,IAAI,YAAY,CAAA,GAAA,YAAI;IACpB,IAAI,iBACF,oBAAoB,0BAClB,gCAAC,CAAA,GAAA,iCAAU;QAAE,IAAI;QAAW,cAAY,gBAAgB,MAAM,CAAC;uBAE/D,gCAAC,CAAA,GAAA,qCAAc;IAGnB,IAAI,MACF,qBAAO,CAAA,GAAA,YAAI,EAAE,YAAY,CAAC,MAAM;QAC9B,kBAAkB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,sDAAc,GAAG;QAC9C,MAAM;IACR;IAGF,IAAI,4BACF,gCAAC,CAAA,GAAA,yCAAU;QACT,SAAS,CAAA;YACP;YACA,OAAO,UAAU;QACnB;QACA,cAAA;QACA,cAAY,gBAAgB,MAAM,CAAC;QACnC,qBAAA;QACA,kBAAkB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG;QAC3C,YAAY;;IAIhB,IAAI,2BAAa,CAAA,GAAA,YAAI,EAAE,YAAY,CAAC,gBAAgB;QAClD,kBAAkB,CAAA,GAAA,yCAAS,EACzB,CAAA,GAAA,sDAAc,GACd,qCACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,uDAAK,GAAG,6CACnB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG;IAE7B;IAEA,IAAI,cAAC,UAAU,aAAE,SAAS,EAAC,GAAG,CAAA,GAAA,eAAO,EAAE,CAAC;IACxC,IAAI,aAAC,SAAS,kBAAE,cAAc,cAAE,UAAU,EAAC,GAAG,CAAA,GAAA,mBAAW;IACzD,IAAI,eAAC,WAAW,EAAC,GAAG,CAAA,GAAA,gBAAQ,EAC1B;QACE,GAAG,KAAK;QACR,mBAAmB;YACjB,KAAK,CAAC,kBAAkB;YACxB,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,MAAM,EAAE,GAAG;YAC9D;YACA,oBAAoB,YAAY,YAAY;SAC7C,CACE,MAAM,CAAC,SACP,IAAI,CAAC;QACR,aAAa;IACf,GACA;IAGF,qBACE,gCAAC;QACE,GAAG,CAAA,GAAA,iBAAS,EAAE,YAAY,YAAY,YAAY;QACnD,iBAAc;QACd,KAAK;QACL,OAAO;YAAC,GAAG,KAAK;YAAE,SAAS;QAAM;QACjC,WAAW,CAAA,GAAA,yCAAS,EAClB,CAAA,GAAA,uDAAK,GACL,uBACA;YACE,8BAA8B;YAC9B,eAAe;YACf,gCAAgC,oBAAoB,aAAa,CAAC;YAClE,cAAc;YACd,cAAc;YACd,cAAc;QAChB,GACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG,sBAAsB,8BAC3D;qBAEF,gCAAC;QACC,WAAW,CAAA,GAAA,yCAAS,EAClB,CAAA,GAAA,sDAAc,GACd,sBACA;YACE,+BAA+B,oBAAoB,aAAa,CAAC;YACjE,6BAA6B,oBAAoB,WAAW,CAAC;YAC7D,6BAA6B;QAC/B,GACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG,mBAAmB,6BAA6B;YACvE,eAAe;YACf,YAAY;YACZ,4BAA4B,oBAAoB,aAAa,CAAC;YAC9D,0BAA0B,oBAAoB,WAAW,CAAC;QAC5D,IACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,uDAAK,GAAG;qBAErB,gCAAC;QACC,WAAW,CAAA,GAAA,yCAAS,EAClB,CAAA,GAAA,sDAAc,GACd,4BACA;YACE,gCAAgC,CAAC,CAAC;YAClC,cAAc;YACd,kBAAkB;YAClB,eAAe;YACf,YAAY;YACZ,cAAc;QAChB,GACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG,0BACzB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG;OAEtC,oBACD,gCAAC;QAAK,IAAI;QAAS,WAAW,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG;OAChE,YAGJ,mBAAmB,CAAC,aAAa,aAAa,MAC9C,AAAC,CAAA,eAAe,MAAM,mBAAmB,IAAG,KAAM,CAAC,cAAc;AAI1E;AASA,SAAS,6CAA0B,KAAqC;IACtE,IAAI,2BAAa,gCAAC,CAAA,GAAA,+BAAQ;QAAE,eAAY;;IAExC,IAAI,SACF,8BAA8B;IAC9B,KAAK,QACL,OAAO,wBACP,UAAU,mBACV,eAAe,SACf,KAAK,gBACL,YAAY,gBACZ,YAAY,cACZ,UAAU,WACV,OAAO,YACP,QAAQ,EACT,GAAG;IAEJ,IAAI,UAAU,CAAA,GAAA,aAAK,EAAwC;IAC3D,IAAI,CAAC,aAAa,eAAe,GAAG,CAAA,GAAA,eAAO,EAAE;IAC7C,IAAI,WAAW,CAAA,GAAA,aAAK,EAAoB;IACxC,IAAI,aAAa,CAAA,GAAA,aAAK,EAAkB;IACxC,IAAI,aAAa,CAAA,GAAA,aAAK,EAAkB;IACxC,IAAI,YAAY,iBAAiB,aAAa,iBAAiB;IAC/D,IAAI,SAAS,CAAA,GAAA,yCAAe;IAC5B,IAAI,kBAAkB,CAAA,GAAA,kCAA0B,EAAE,CAAA,GAAA,+CAAW,GAAG;IAEhE,IAAI,cAAC,UAAU,gBAAE,YAAY,cAAE,UAAU,oBAAE,gBAAgB,EAAC,GAAG,CAAA,GAAA,4BAAoB,EACjF;QACE,GAAG,KAAK;QACR,gBAAgB;QAChB,YAAY;oBACZ;kBACA;QACA,4BAA4B;QAC5B,MAAM;IACR,GACA;IAGF,CAAA,GAAA,YAAI,EAAE,SAAS,CAAC;QACd,IAAI,SAAS,OAAO,EAClB,CAAA,GAAA,kBAAU,EAAE,SAAS,OAAO;IAEhC,GAAG,EAAE;IAEL,CAAA,GAAA,YAAI,EAAE,SAAS,CAAC;QACd,4FAA4F;QAC5F,6GAA6G;QAC7G,0GAA0G;QAC1G,yIAAyI;QACzI,IAAI,CAAC,MAAM,MAAM,IAAI,MAAM,SAAS,EAClC,MAAM,UAAU,CAAC;IAErB;IAEA,IAAI,eAAC,WAAW,EAAC,GAAG,CAAA,GAAA,gBAAQ,EAC1B;QACE,mBAAmB,CAAA,GAAA,YAAI,EAAE,WAAW,EAAE;IACxC,GACA;IAGF,uEAAuE;IACvE,0FAA0F;IAC1F,wFAAwF;IACxF,yFAAyF;IACzF,0DAA0D;IAC1D,WAAW,IAAI,GAAG;IAClB,UAAU,CAAC,gBAAgB,GAAG;IAC9B,OAAO,WAAW,UAAU;IAE5B,IAAI,4BACF,gCAAC,CAAA,GAAA,yCAAU;QACR,GAAG,gBAAgB;QACpB,cAAA;QACA,cAAY,gBAAgB,MAAM,CAAC;QACnC,qBAAA;QACA,kBAAkB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG;QAC3C,YAAY;;IAIhB,IAAI,8BACF,gCAAC,CAAA,GAAA,yCAAa;QACZ,cAAY,gBAAgB,MAAM,CAAC;QACnC,MAAK;QACL,iBAAA;QACA,kBAAkB,CAAA,GAAA,yCAAS,EACzB,CAAA,GAAA,mDAAW,GACX,gCACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,sDAAc,GAAG;;IAKlC,kFAAkF;IAClF,qFAAqF;IACrF,kBAAkB;IAClB,IAAI,cAAc,CAAA,GAAA,aAAK,EAAE;IACzB,IAAI,eAAe;QACjB,YAAY,OAAO,GAAG;IACxB;IAEA,IAAI,aAAa;QACf,YAAY,OAAO,GAAG;IACxB;IAEA,IAAI,WAAW,CAAA,GAAA,kBAAU,EAAE;QACzB,IAAI,CAAC,SAAS,OAAO,IAAI,CAAA,GAAA,uBAAe,QAAQ,SAAS,OAAO,IAAI,CAAC,YAAY,OAAO,EACtF;QAGF,IAAI,WAAW,OAAO,EACpB,WAAW,OAAO,CAAC,KAAK;IAE5B,GAAG;QAAC;QAAU;QAAY;KAAY;IAEtC,IAAI,aAAa,WAAW,KAAK;IACjC,IAAI,iBAAiB,CAAA,GAAA,aAAK,EAAE;IAC5B,CAAA,GAAA,gBAAQ,EAAE;QACR,IAAI,iBAAiB,eAAe,CAAC,aAAa;YAChD,IAAI,QAAQ,OAAO,KAAK,MACtB,QAAQ,OAAO,GAAG,WAAW;gBAC3B,eAAe;YACjB,GAAG;YAGL,2EAA2E;YAC3E,IAAI,eAAe,eAAe,OAAO,EAAE;gBACzC,aAAa,QAAQ,OAAO;gBAC5B,QAAQ,OAAO,GAAG,WAAW;oBAC3B,eAAe;gBACjB,GAAG;YACL;QACF,OAAO,IAAI,iBAAiB,aAAa;YACvC,kFAAkF;YAClF,eAAe;YACf,IAAI,QAAQ,OAAO,KAAK,MAAM;gBAC5B,aAAa,QAAQ,OAAO;gBAC5B,QAAQ,OAAO,GAAG;YACpB;QACF;QAEA,eAAe,OAAO,GAAG;IAC3B,GAAG;QAAC;QAAc;QAAY;KAAY;IAE1C,IAAI,YAAY,CAAA;QACd,mGAAmG;QACnG,IAAI,EAAE,GAAG,KAAK,WAAW,MAAM,gBAAgB,CAAC,UAAU,IAAI,MAAM;YAClE,WAAW,OAAO,EAAE;YACpB,IAAI,SACF;YAEF,IAAI,UACF,SAAS,cAAc,OAAO,OAAO,WAAW,QAAQ,IAAI;QAEhE,OACE,IAAI,WAAW,SAAS,EACtB,WAAW,SAAS,CAAC;IAG3B;IAEA,IAAI,MACF,qBAAO,CAAA,GAAA,YAAI,EAAE,YAAY,CAAC,MAAM;QAC9B,kBAAkB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,sDAAc,GAAG;QAC9C,MAAM;IACR;IAGF,qBACE,gCAAC,CAAA,GAAA,iBAAS;QAAE,cAAA;QAAa,SAAA;qBACvB,gCAAC;QACE,GAAG,CAAA,GAAA,iBAAS,EAAE,cAAc,YAAY;QACzC,KAAK;QACL,WAAW,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG;qBAChD,gCAAC,CAAA,GAAA,oBAAY;QAAE,WAAW;sBAC1B,gCAAC,CAAA,GAAA,yCAAY;QACX,OAAO;QACP,YAAY;QACZ,YAAY;YAAC,GAAG,UAAU;uBAAE;QAAS;QACrC,UAAU;QACV,YAAY;QACZ,WAAW,eAAe,iBAAiB;QAC3C,kBAAkB,gBAAgB,OAAO,gBAAgB;QACzD,iBAAiB;QACjB,iBACE,AAAC,CAAA,MAAM,UAAU,KAAK,MAAM,iBAAiB,eAAe,mBAAmB,IAAG,KAClF,CAAC,MAAM,UAAU,GACb,cACA;QAEN,MAAM;QACN,kBAAkB,CAAA,GAAA,yCAAS,EACzB,CAAA,GAAA,mDAAW,GACX,mBACA,sBACA,6BACA;YACE,4BAA4B,oBAAoB,aAAa,CAAC;YAC9D,0BAA0B,oBAAoB,WAAW,CAAC;QAC5D,GACA,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG,kBAAkB;YACrD,aAAa,CAAC,CAAC,MAAM,KAAK;QAC5B;QAEF,gBAAgB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG;QACzC,yBAAyB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,mDAAW,GAAG;sBAEpD,gCAAC,CAAA,GAAA,yCAAU;QACR,GAAG,YAAY;QAChB,UAAU;0BAAC;wBAAc;QAAU;QACnC,wBAAA;QACA,uBAAA;QACA,qBAAA;QACA,QAAQ;QACR,OAAO;QACP,uBAAA;QACA,kBAAkB,IAChB,iBAAiB,2BACf,gCAAC;gBAAK,WAAW,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG;eACnD,gBAAgB,MAAM,CAAC;QAI9B,kBAAkB,CAAA,GAAA,yCAAS,EAAE,CAAA,GAAA,0DAAuB,GAAG;QACvD,KAAK;QACL,UAAU;QACV,YAAY;QACZ,WAAW;sBAEb,gCAAC,CAAA,GAAA,oBAAY;QAAE,WAAW;;AAIlC","sources":["packages/@adobe/react-spectrum/src/autocomplete/MobileSearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport {AriaButtonProps, useButton} from 'react-aria/useButton';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {ComboBoxState, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {DismissButton} from 'react-aria/Overlay';\nimport {Field} from '../label/Field';\nimport {FocusableRef, ValidationState} from '@react-types/shared';\nimport {focusSafely} from 'react-aria/private/interactions/focusSafely';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {getActiveElement} from 'react-aria/private/utils/shadowdom/DOMFunctions';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n HTMLAttributes,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\n// @ts-ignore\nimport {setInteractionModality} from 'react-aria/private/interactions/useFocusVisible';\nimport {SpectrumSearchAutocompleteProps} from './SearchAutocomplete';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {Tray} from '../overlays/Tray';\nimport {useDialog} from 'react-aria/useDialog';\nimport {useField} from 'react-aria/useField';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useFormReset} from 'react-aria/private/utils/useFormReset';\nimport {useFormValidation} from 'react-aria/private/form/useFormValidation';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useOverlayTrigger} from 'react-aria/useOverlayTrigger';\nimport {useProviderProps} from '../provider/Provider';\nimport {useSearchAutocomplete} from 'react-aria/private/autocomplete/useSearchAutocomplete';\n\nfunction ForwardMobileSearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n isQuiet,\n isDisabled,\n isRequired,\n validationBehavior,\n validate,\n name,\n isReadOnly,\n onSubmit = () => {}\n } = props;\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: true,\n // Needs to be false here otherwise we double up on commitSelection/commitCustomValue calls when\n // user taps on underlay (i.e. initial tap will call setFocused(false) -> commitSelection/commitCustomValue via onBlur,\n // then the closing of the tray will call setFocused(false) again due to cleanup effect)\n shouldCloseOnBlur: false,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n\n let buttonRef = useRef<HTMLDivElement>(null);\n let domRef = useFocusableRef(ref, buttonRef);\n let {triggerProps, overlayProps} = useOverlayTrigger({type: 'listbox'}, state, buttonRef);\n\n let inputRef = useRef<HTMLInputElement>(null);\n useFormValidation(\n {\n ...props,\n focus: () => buttonRef.current?.focus()\n },\n state,\n inputRef\n );\n let {isInvalid, validationErrors, validationDetails} = state.displayValidation;\n let validationState = props.validationState || (isInvalid ? 'invalid' : undefined);\n let errorMessage = props.errorMessage ?? validationErrors.join(' ');\n\n let {labelProps, fieldProps, descriptionProps, errorMessageProps} = useField({\n ...props,\n labelElementType: 'span',\n isInvalid,\n errorMessage\n });\n\n // Focus the button and show focus ring when clicking on the label\n labelProps.onClick = () => {\n if (!props.isDisabled && buttonRef.current) {\n buttonRef.current.focus();\n setInteractionModality('keyboard');\n }\n };\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = {\n type: 'hidden',\n name,\n value: state.inputValue\n };\n\n if (validationBehavior === 'native') {\n // Use a hidden <input type=\"text\"> rather than <input type=\"hidden\">\n // so that an empty value blocks HTML form submission when the field is required.\n inputProps.type = 'text';\n inputProps.hidden = true;\n inputProps.required = isRequired;\n // Ignore react warning.\n inputProps.onChange = () => {};\n }\n\n useFormReset(inputRef, state.defaultInputValue, state.setInputValue);\n\n return (\n <>\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n elementType=\"span\"\n ref={domRef}\n includeNecessityIndicatorInAccessibilityName>\n <SearchAutocompleteButton\n {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus, icon: props.icon})}\n ref={buttonRef}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isPlaceholder={!state.inputValue}\n validationState={validationState}\n inputValue={state.inputValue}\n clearInput={() => state.setInputValue('')}\n onPress={() => !isReadOnly && state.open(null, 'manual')}>\n {state.inputValue || props.placeholder || ''}\n </SearchAutocompleteButton>\n </Field>\n <input {...inputProps} ref={inputRef} />\n <Tray state={state} isFixedHeight {...overlayProps}>\n <SearchAutocompleteTray\n {...props}\n onClose={state.close}\n overlayProps={overlayProps}\n state={state}\n />\n </Tray>\n </>\n );\n}\n\nexport let MobileSearchAutocomplete = React.forwardRef(ForwardMobileSearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteButtonProps extends AriaButtonProps {\n icon?: ReactElement | null;\n isQuiet?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isPlaceholder?: boolean;\n validationState?: ValidationState;\n inputValue?: string;\n clearInput?: () => void;\n children?: ReactNode;\n style?: React.CSSProperties;\n className?: string;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nconst SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteButton(\n props: SearchAutocompleteButtonProps,\n ref: any\n) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n isPlaceholder,\n validationState,\n inputValue,\n clearInput,\n children,\n style,\n className\n } = props;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let valueId = useId();\n let invalidId = useId();\n let validationIcon =\n validationState === 'invalid' ? (\n <AlertMedium id={invalidId} aria-label={stringFormatter.format('invalid')} />\n ) : (\n <CheckmarkMedium />\n );\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n let clearButton = (\n <ClearButton\n onPress={e => {\n clearInput?.();\n props?.onPress?.(e);\n }}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let validation = React.cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n textfieldStyles,\n 'spectrum-Textfield-validationIcon',\n classNames(styles, 'spectrum-InputGroup-input-validationIcon'),\n classNames(searchStyles, 'spectrum-Search-validationIcon')\n )\n });\n\n let {hoverProps, isHovered} = useHover({});\n let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n let {buttonProps} = useButton(\n {\n ...props,\n 'aria-labelledby': [\n props['aria-labelledby'],\n props['aria-label'] && !props['aria-labelledby'] ? props.id : null,\n valueId,\n validationState === 'invalid' ? invalidId : null\n ]\n .filter(Boolean)\n .join(' '),\n elementType: 'div'\n },\n ref\n );\n\n return (\n <div\n {...mergeProps(hoverProps, focusProps, buttonProps)}\n aria-haspopup=\"dialog\"\n ref={ref}\n style={{...style, outline: 'none'}}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'focus-ring': isFocusVisible\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete', 'mobile-searchautocomplete'),\n className\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Textfield--valid': validationState === 'valid' && !isDisabled,\n 'spectrum-Textfield--quiet': isQuiet\n },\n classNames(searchStyles, 'spectrum-Search', 'spectrum-Search--loadable', {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n }),\n classNames(styles, 'spectrum-InputGroup-field')\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': !!icon,\n 'is-hovered': isHovered,\n 'is-placeholder': isPlaceholder,\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'is-focused': isFocused\n },\n classNames(searchStyles, 'spectrum-Search-input'),\n classNames(searchAutocompleteStyles, 'mobile-input')\n )}>\n {icon}\n <span id={valueId} className={classNames(searchAutocompleteStyles, 'mobile-value')}>\n {children}\n </span>\n </div>\n {validationState && !isDisabled ? validation : null}\n {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}\n </div>\n </div>\n );\n});\n\ninterface SearchAutocompleteTrayProps<T> extends SpectrumSearchAutocompleteProps<T> {\n state: ComboBoxState<T>;\n overlayProps: HTMLAttributes<HTMLElement>;\n loadingIndicator?: ReactElement;\n onClose: () => void;\n}\n\nfunction SearchAutocompleteTray<T>(props: SearchAutocompleteTrayProps<T>) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n // completionMode = 'suggest',\n state,\n icon = searchIcon,\n isDisabled,\n validationState,\n label,\n overlayProps,\n loadingState,\n onLoadMore,\n onClose,\n onSubmit\n } = props;\n\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n let inputRef = useRef<HTMLInputElement>(null);\n let popoverRef = useRef<HTMLDivElement>(null);\n let listBoxRef = useRef<HTMLDivElement>(null);\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let layout = useListBoxLayout();\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n\n let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete<T>(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: popoverRef,\n listBoxRef,\n inputRef,\n // Handled outside the tray.\n name: undefined\n },\n state\n );\n\n React.useEffect(() => {\n if (inputRef.current) {\n focusSafely(inputRef.current);\n }\n }, []);\n\n React.useEffect(() => {\n // When the tray closes, set state.isFocused (i.e. the tray input's focus tracker) to false.\n // This is to prevent state.isFocused from being set to true when the tray closes via tapping on the underlay\n // (FocusScope attempts to restore focus to the tray input when tapping outside the tray due to \"contain\")\n // Have to do this manually since React doesn't call onBlur when a component is unmounted: https://github.com/facebook/react/issues/12363\n if (!state.isOpen && state.isFocused) {\n state.setFocused(false);\n }\n });\n\n let {dialogProps} = useDialog(\n {\n 'aria-labelledby': useId(labelProps.id)\n },\n popoverRef\n );\n\n // Override the role of the input to \"searchbox\" instead of \"combobox\".\n // Since the listbox is always visible, the combobox role doesn't really give us anything.\n // VoiceOver on iOS reads \"double tap to collapse\" when focused on the input rather than\n // \"double tap to edit text\", as with a textbox or searchbox. We'd like double tapping to\n // open the virtual keyboard rather than closing the tray.\n inputProps.role = 'searchbox';\n inputProps['aria-haspopup'] = 'listbox';\n delete inputProps.onTouchEnd;\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search-circleLoader',\n classNames(textfieldStyles, 'spectrum-Textfield-circleLoader')\n )}\n />\n );\n\n // Close the software keyboard on scroll to give the user a bigger area to scroll.\n // But only do this if scrolling with touch, otherwise it can cause issues with touch\n // screen readers.\n let isTouchDown = useRef(false);\n let onTouchStart = () => {\n isTouchDown.current = true;\n };\n\n let onTouchEnd = () => {\n isTouchDown.current = false;\n };\n\n let onScroll = useCallback(() => {\n if (!inputRef.current || getActiveElement() !== inputRef.current || !isTouchDown.current) {\n return;\n }\n\n if (popoverRef.current) {\n popoverRef.current.focus();\n }\n }, [inputRef, popoverRef, isTouchDown]);\n\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (loadingState === 'filtering' && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (loadingState !== 'filtering') {\n // If loading is no longer happening, clear any timers and hide the loading circle\n setShowLoading(false);\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [loadingState, inputValue, showLoading]);\n\n let onKeyDown = e => {\n // Close virtual keyboard, close tray, and fire onSubmit if user hits Enter w/o any focused options\n if (e.key === 'Enter' && state.selectionManager.focusedKey == null) {\n popoverRef.current?.focus();\n if (onClose) {\n onClose();\n }\n if (onSubmit) {\n onSubmit(inputValue == null ? null : inputValue.toString(), null);\n }\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(e);\n }\n }\n };\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n return (\n <FocusScope restoreFocus contain>\n <div\n {...mergeProps(overlayProps, dialogProps)}\n ref={popoverRef}\n className={classNames(searchAutocompleteStyles, 'tray-dialog')}>\n <DismissButton onDismiss={onClose} />\n <TextFieldBase\n label={label}\n labelProps={labelProps}\n inputProps={{...inputProps, onKeyDown}}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isLoading={showLoading && loadingState === 'filtering'}\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n validationState={validationState}\n wrapperChildren={\n (state.inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !props.isReadOnly\n ? clearButton\n : undefined\n }\n icon={icon}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Textfield',\n 'spectrum-Search--loadable',\n {\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(searchAutocompleteStyles, 'tray-textfield', {\n 'has-label': !!props.label\n })\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n />\n <ListBoxBase\n {...listBoxProps}\n domProps={{onTouchStart, onTouchEnd}}\n disallowEmptySelection\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n renderEmptyState={() =>\n loadingState !== 'loading' && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n UNSAFE_className={classNames(searchAutocompleteStyles, 'tray-listbox')}\n ref={listBoxRef}\n onScroll={onScroll}\n onLoadMore={onLoadMore}\n isLoading={isLoading}\n />\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n );\n}\n"],"names":[],"version":3,"file":"MobileSearchAutocomplete.mjs.map"}
1
+ {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/MobileSearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport AlertMedium from '@spectrum-icons/ui/AlertMedium';\nimport {AriaButtonProps, useButton} from 'react-aria/useButton';\nimport CheckmarkMedium from '@spectrum-icons/ui/CheckmarkMedium';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {ComboBoxState, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {DismissButton} from 'react-aria/Overlay';\nimport {Field} from '../label/Field';\nimport {FocusableRef, ValidationState} from '@react-types/shared';\nimport {focusSafely} from 'react-aria/private/interactions/focusSafely';\nimport {FocusScope} from 'react-aria/FocusScope';\nimport {getActiveElement} from 'react-aria/private/utils/shadowdom/DOMFunctions';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {mergeProps} from 'react-aria/mergeProps';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n HTMLAttributes,\n InputHTMLAttributes,\n ReactElement,\n ReactNode,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport {setInteractionModality} from 'react-aria/private/interactions/useFocusVisible';\nimport {SpectrumSearchAutocompleteProps} from './SearchAutocomplete';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {Tray} from '../overlays/Tray';\nimport {useDialog} from 'react-aria/useDialog';\nimport {useField} from 'react-aria/useField';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef} from '../utils/useDOMRef';\nimport {useFocusRing} from 'react-aria/useFocusRing';\nimport {useFormReset} from 'react-aria/private/utils/useFormReset';\nimport {useFormValidation} from 'react-aria/private/form/useFormValidation';\nimport {useHover} from 'react-aria/useHover';\nimport {useId} from 'react-aria/useId';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useOverlayTrigger} from 'react-aria/useOverlayTrigger';\nimport {useProviderProps} from '../provider/Provider';\nimport {useSearchAutocomplete} from 'react-aria/private/autocomplete/useSearchAutocomplete';\n\nfunction ForwardMobileSearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n // oxlint-disable-next-line react/react-compiler\n props = useProviderProps(props);\n\n let {\n isQuiet,\n isDisabled,\n isRequired,\n validationBehavior,\n validate,\n name,\n isReadOnly,\n onSubmit = () => {}\n } = props;\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: true,\n // Needs to be false here otherwise we double up on commitSelection/commitCustomValue calls when\n // user taps on underlay (i.e. initial tap will call setFocused(false) -> commitSelection/commitCustomValue via onBlur,\n // then the closing of the tray will call setFocused(false) again due to cleanup effect)\n shouldCloseOnBlur: false,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n\n let buttonRef = useRef<HTMLDivElement>(null);\n let domRef = useFocusableRef(ref, buttonRef);\n let {triggerProps, overlayProps} = useOverlayTrigger({type: 'listbox'}, state, buttonRef);\n\n let inputRef = useRef<HTMLInputElement>(null);\n useFormValidation(\n {\n ...props,\n focus: () => buttonRef.current?.focus()\n },\n state,\n inputRef\n );\n let {isInvalid, validationErrors, validationDetails} = state.displayValidation;\n let validationState = props.validationState || (isInvalid ? 'invalid' : undefined);\n let errorMessage = props.errorMessage ?? validationErrors.join(' ');\n\n let {labelProps, fieldProps, descriptionProps, errorMessageProps} = useField({\n ...props,\n labelElementType: 'span',\n isInvalid,\n errorMessage\n });\n\n // Focus the button and show focus ring when clicking on the label\n // oxlint-disable-next-line react/react-compiler\n labelProps.onClick = () => {\n if (!props.isDisabled && buttonRef.current) {\n buttonRef.current.focus();\n setInteractionModality('keyboard');\n }\n };\n\n let inputProps: InputHTMLAttributes<HTMLInputElement> = {\n type: 'hidden',\n name,\n value: state.inputValue\n };\n\n if (validationBehavior === 'native') {\n // Use a hidden <input type=\"text\"> rather than <input type=\"hidden\">\n // so that an empty value blocks HTML form submission when the field is required.\n inputProps.type = 'text';\n inputProps.hidden = true;\n inputProps.required = isRequired;\n // Ignore react warning.\n inputProps.onChange = () => {};\n }\n\n useFormReset(inputRef, state.defaultInputValue, state.setInputValue);\n\n return (\n <>\n <Field\n {...props}\n labelProps={labelProps}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n elementType=\"span\"\n ref={domRef}\n includeNecessityIndicatorInAccessibilityName>\n <SearchAutocompleteButton\n {...mergeProps(triggerProps, fieldProps, {autoFocus: props.autoFocus, icon: props.icon})}\n ref={buttonRef}\n isQuiet={isQuiet}\n isDisabled={isDisabled}\n isReadOnly={isReadOnly}\n isPlaceholder={!state.inputValue}\n validationState={validationState}\n inputValue={state.inputValue}\n clearInput={() => state.setInputValue('')}\n onPress={() => !isReadOnly && state.open(null, 'manual')}>\n {state.inputValue || props.placeholder || ''}\n </SearchAutocompleteButton>\n </Field>\n <input {...inputProps} ref={inputRef} />\n <Tray state={state} isFixedHeight {...overlayProps}>\n <SearchAutocompleteTray\n {...props}\n onClose={state.close}\n overlayProps={overlayProps}\n state={state}\n />\n </Tray>\n </>\n );\n}\n\nexport let MobileSearchAutocomplete = React.forwardRef(ForwardMobileSearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteButtonProps extends AriaButtonProps {\n icon?: ReactElement | null;\n isQuiet?: boolean;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isPlaceholder?: boolean;\n validationState?: ValidationState;\n inputValue?: string;\n clearInput?: () => void;\n children?: ReactNode;\n style?: React.CSSProperties;\n className?: string;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nconst SearchAutocompleteButton = React.forwardRef(function SearchAutocompleteButton(\n props: SearchAutocompleteButtonProps,\n ref: any\n) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n isPlaceholder,\n validationState,\n inputValue,\n clearInput,\n children,\n style,\n className\n } = props;\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let valueId = useId();\n let invalidId = useId();\n let validationIcon =\n validationState === 'invalid' ? (\n <AlertMedium id={invalidId} aria-label={stringFormatter.format('invalid')} />\n ) : (\n <CheckmarkMedium />\n );\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n let clearButton = (\n <ClearButton\n onPress={e => {\n clearInput?.();\n props?.onPress?.(e);\n }}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let validation = React.cloneElement(validationIcon, {\n UNSAFE_className: classNames(\n textfieldStyles,\n 'spectrum-Textfield-validationIcon',\n classNames(styles, 'spectrum-InputGroup-input-validationIcon'),\n classNames(searchStyles, 'spectrum-Search-validationIcon')\n )\n });\n\n let {hoverProps, isHovered} = useHover({});\n let {isFocused, isFocusVisible, focusProps} = useFocusRing();\n let {buttonProps} = useButton(\n {\n ...props,\n 'aria-labelledby': [\n props['aria-labelledby'],\n props['aria-label'] && !props['aria-labelledby'] ? props.id : null,\n valueId,\n validationState === 'invalid' ? invalidId : null\n ]\n .filter(Boolean)\n .join(' '),\n elementType: 'div'\n },\n ref\n );\n\n return (\n <div\n {...mergeProps(hoverProps, focusProps, buttonProps)}\n aria-haspopup=\"dialog\"\n ref={ref}\n style={{...style, outline: 'none'}}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered,\n 'is-focused': isFocused,\n 'focus-ring': isFocusVisible\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete', 'mobile-searchautocomplete'),\n className\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield',\n {\n 'spectrum-Textfield--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Textfield--valid': validationState === 'valid' && !isDisabled,\n 'spectrum-Textfield--quiet': isQuiet\n },\n classNames(searchStyles, 'spectrum-Search', 'spectrum-Search--loadable', {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n }),\n classNames(styles, 'spectrum-InputGroup-field')\n )}>\n <div\n className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-input',\n {\n 'spectrum-Textfield-inputIcon': !!icon,\n 'is-hovered': isHovered,\n 'is-placeholder': isPlaceholder,\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'is-focused': isFocused\n },\n classNames(searchStyles, 'spectrum-Search-input'),\n classNames(searchAutocompleteStyles, 'mobile-input')\n )}>\n {icon}\n <span id={valueId} className={classNames(searchAutocompleteStyles, 'mobile-value')}>\n {children}\n </span>\n </div>\n {validationState && !isDisabled ? validation : null}\n {(inputValue !== '' || validationState != null) && !isReadOnly && clearButton}\n </div>\n </div>\n );\n});\n\ninterface SearchAutocompleteTrayProps<T> extends SpectrumSearchAutocompleteProps<T> {\n state: ComboBoxState<T>;\n overlayProps: HTMLAttributes<HTMLElement>;\n loadingIndicator?: ReactElement;\n onClose: () => void;\n}\n\nfunction SearchAutocompleteTray<T>(props: SearchAutocompleteTrayProps<T>) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n // completionMode = 'suggest',\n state,\n icon = searchIcon,\n isDisabled,\n validationState,\n label,\n overlayProps,\n loadingState,\n onLoadMore,\n onClose,\n onSubmit\n } = props;\n\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n let inputRef = useRef<HTMLInputElement>(null);\n let popoverRef = useRef<HTMLDivElement>(null);\n let listBoxRef = useRef<HTMLDivElement>(null);\n let isLoading = loadingState === 'loading' || loadingState === 'loadingMore';\n let layout = useListBoxLayout();\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n\n let {inputProps, listBoxProps, labelProps, clearButtonProps} = useSearchAutocomplete<T>(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: popoverRef,\n listBoxRef,\n inputRef,\n // Handled outside the tray.\n name: undefined\n },\n state\n );\n\n React.useEffect(() => {\n if (inputRef.current) {\n focusSafely(inputRef.current);\n }\n }, []);\n\n React.useEffect(() => {\n // When the tray closes, set state.isFocused (i.e. the tray input's focus tracker) to false.\n // This is to prevent state.isFocused from being set to true when the tray closes via tapping on the underlay\n // (FocusScope attempts to restore focus to the tray input when tapping outside the tray due to \"contain\")\n // Have to do this manually since React doesn't call onBlur when a component is unmounted: https://github.com/facebook/react/issues/12363\n if (!state.isOpen && state.isFocused) {\n state.setFocused(false);\n }\n });\n\n let {dialogProps} = useDialog(\n {\n 'aria-labelledby': useId(labelProps.id)\n },\n popoverRef\n );\n\n // Override the role of the input to \"searchbox\" instead of \"combobox\".\n // Since the listbox is always visible, the combobox role doesn't really give us anything.\n // VoiceOver on iOS reads \"double tap to collapse\" when focused on the input rather than\n // \"double tap to edit text\", as with a textbox or searchbox. We'd like double tapping to\n // open the virtual keyboard rather than closing the tray.\n // oxlint-disable-next-line react/react-compiler\n inputProps.role = 'searchbox';\n // oxlint-disable-next-line react/react-compiler\n inputProps['aria-haspopup'] = 'listbox';\n // oxlint-disable-next-line react/react-compiler\n delete inputProps.onTouchEnd;\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n aria-label={stringFormatter.format('clear')}\n excludeFromTabOrder\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search-circleLoader',\n classNames(textfieldStyles, 'spectrum-Textfield-circleLoader')\n )}\n />\n );\n\n // Close the software keyboard on scroll to give the user a bigger area to scroll.\n // But only do this if scrolling with touch, otherwise it can cause issues with touch\n // screen readers.\n let isTouchDown = useRef(false);\n let onTouchStart = () => {\n isTouchDown.current = true;\n };\n\n let onTouchEnd = () => {\n isTouchDown.current = false;\n };\n\n let onScroll = useCallback(() => {\n if (!inputRef.current || getActiveElement() !== inputRef.current || !isTouchDown.current) {\n return;\n }\n\n if (popoverRef.current) {\n popoverRef.current.focus();\n }\n }, [inputRef, popoverRef, isTouchDown]);\n\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (loadingState === 'filtering' && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (loadingState !== 'filtering') {\n // If loading is no longer happening, clear any timers and hide the loading circle\n // oxlint-disable-next-line react/react-compiler\n setShowLoading(false);\n if (timeout.current !== null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [loadingState, inputValue, showLoading]);\n\n let onKeyDown = e => {\n // Close virtual keyboard, close tray, and fire onSubmit if user hits Enter w/o any focused options\n if (e.key === 'Enter' && state.selectionManager.focusedKey == null) {\n popoverRef.current?.focus();\n if (onClose) {\n onClose();\n }\n if (onSubmit) {\n onSubmit(inputValue == null ? null : inputValue.toString(), null);\n }\n } else {\n if (inputProps.onKeyDown) {\n inputProps.onKeyDown(e);\n }\n }\n };\n\n if (icon) {\n icon = React.cloneElement(icon, {\n UNSAFE_className: classNames(textfieldStyles, 'spectrum-Textfield-icon'),\n size: 'S'\n });\n }\n\n return (\n <FocusScope restoreFocus contain>\n <div\n {...mergeProps(overlayProps, dialogProps)}\n ref={popoverRef}\n className={classNames(searchAutocompleteStyles, 'tray-dialog')}>\n <DismissButton onDismiss={onClose} />\n <TextFieldBase\n label={label}\n labelProps={labelProps}\n inputProps={{...inputProps, onKeyDown}}\n inputRef={inputRef}\n isDisabled={isDisabled}\n isLoading={showLoading && loadingState === 'filtering'}\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n validationState={validationState}\n wrapperChildren={\n (state.inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !props.isReadOnly\n ? clearButton\n : undefined\n }\n icon={icon}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Textfield',\n 'spectrum-Search--loadable',\n {\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(searchAutocompleteStyles, 'tray-textfield', {\n 'has-label': !!props.label\n })\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n />\n <ListBoxBase\n {...listBoxProps}\n domProps={{onTouchStart, onTouchEnd}}\n disallowEmptySelection\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n renderEmptyState={() =>\n loadingState !== 'loading' && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n UNSAFE_className={classNames(searchAutocompleteStyles, 'tray-listbox')}\n ref={listBoxRef}\n onScroll={onScroll}\n onLoadMore={onLoadMore}\n isLoading={isLoading}\n />\n <DismissButton onDismiss={onClose} />\n </div>\n </FocusScope>\n );\n}\n"],"names":[],"version":3,"file":"MobileSearchAutocomplete.mjs.map"}
@@ -82,6 +82,7 @@ $parcel$export(module.exports, "SearchAutocomplete", function () { return $02024
82
82
 
83
83
 
84
84
  function $02024e29736a20cf$var$SearchAutocomplete(props, ref) {
85
+ // oxlint-disable-next-line react/react-compiler
85
86
  props = (0, $544fc82701fc93e9$exports.useProviderProps)(props);
86
87
  props = (0, $1af2ca8553741739$exports.useFormProps)(props);
87
88
  let hasWarned = (0, $6SuLA$react.useRef)(false);
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/SearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {AriaButtonProps} from 'react-aria/useButton';\n\nimport {\n AriaSearchAutocompleteProps,\n useSearchAutocomplete\n} from 'react-aria/private/autocomplete/useSearchAutocomplete';\nimport {\n AsyncLoadable,\n DimensionValue,\n DOMRefValue,\n FocusableRef,\n LoadingState,\n SpectrumFieldValidation,\n SpectrumLabelableProps,\n SpectrumTextInputBase,\n StyleProps\n} from '@react-types/shared';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {dimensionValue} from '../utils/styleProps';\nimport {Field} from '../label/Field';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {MenuTriggerAction, useComboBoxState} from 'react-stately/useComboBoxState';\n// @ts-ignore\nimport {MobileSearchAutocomplete} from './MobileSearchAutocomplete';\nimport {Popover} from '../overlays/Popover';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n forwardRef,\n InputHTMLAttributes,\n ReactElement,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef, useUnwrapDOMRef} from '../utils/useDOMRef';\nimport {useFormProps} from '../form/Form';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsMobileDevice} from '../utils/useIsMobileDevice';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useProvider, useProviderProps} from '../provider/Provider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport interface SpectrumSearchAutocompleteProps<T>\n extends\n SpectrumTextInputBase,\n Omit<\n AriaSearchAutocompleteProps<T>,\n 'menuTrigger' | 'isInvalid' | 'validationState' | 'validate'\n >,\n SpectrumFieldValidation<string>,\n SpectrumLabelableProps,\n StyleProps,\n Omit<AsyncLoadable, 'isLoading'> {\n /**\n * The interaction required to display the SearchAutocomplete menu. Note that this prop has no\n * effect on the mobile SearchAutocomplete experience.\n *\n * @default 'input'\n */\n menuTrigger?: MenuTriggerAction;\n /** Whether the SearchAutocomplete should be displayed with a quiet style. */\n isQuiet?: boolean;\n /**\n * Alignment of the menu relative to the input target.\n *\n * @default 'start'\n */\n align?: 'start' | 'end';\n /**\n * Direction the menu will render relative to the SearchAutocomplete.\n *\n * @default 'bottom'\n */\n direction?: 'bottom' | 'top';\n /**\n * The current loading state of the SearchAutocomplete. Determines whether or not the progress\n * circle should be shown.\n */\n loadingState?: LoadingState;\n /**\n * Whether the menu should automatically flip direction when space is limited.\n *\n * @default true\n */\n shouldFlip?: boolean;\n /**\n * Width of the menu. By default, matches width of the trigger. Note that the minimum width of the\n * dropdown is always equal to the trigger's width.\n */\n menuWidth?: DimensionValue;\n onLoadMore?: () => void;\n /** An icon to display at the start of the input. */\n icon?: ReactElement | null;\n}\n\nfunction SearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n props = useFormProps(props);\n\n let hasWarned = useRef(false);\n useEffect(() => {\n if (props.placeholder && !hasWarned.current && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Placeholders are deprecated due to accessibility issues. Please use help text instead.'\n );\n hasWarned.current = true;\n }\n }, [props.placeholder]);\n\n let isMobile = useIsMobileDevice();\n if (isMobile) {\n // menuTrigger=focus/manual don't apply to mobile searchwithin\n return <MobileSearchAutocomplete {...props} menuTrigger=\"input\" ref={ref} />;\n } else {\n return <SearchAutocompleteBase {...props} ref={ref} />;\n }\n}\n\nfunction ForwardSearchAutocompleteBase<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n menuTrigger = 'input',\n shouldFlip = true,\n direction = 'bottom',\n align = 'start',\n isQuiet,\n menuWidth: customMenuWidth,\n loadingState,\n onLoadMore,\n onSubmit = () => {},\n validate\n } = props;\n\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let isAsync = loadingState != null;\n let popoverRef = useRef<DOMRefValue<HTMLDivElement>>(null);\n let unwrappedPopoverRef = useUnwrapDOMRef(popoverRef);\n let listBoxRef = useRef(null);\n let inputRef = useRef<HTMLInputElement>(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: isAsync,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n let layout = useListBoxLayout();\n\n let {\n inputProps,\n listBoxProps,\n labelProps,\n clearButtonProps,\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails\n } = useSearchAutocomplete(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: unwrappedPopoverRef,\n listBoxRef,\n inputRef,\n menuTrigger\n },\n state\n );\n\n // Measure the width of the inputfield to inform the width of the menu (below).\n let [menuWidth, setMenuWidth] = useState<number>(0);\n let {scale} = useProvider();\n\n let onResize = useCallback(() => {\n if (inputRef.current) {\n let inputWidth = inputRef.current.offsetWidth;\n setMenuWidth(inputWidth);\n }\n }, [inputRef, setMenuWidth]);\n\n useResizeObserver({\n ref: domRef,\n onResize: onResize\n });\n\n useLayoutEffect(onResize, [scale, onResize]);\n\n let width = isQuiet ? undefined : menuWidth;\n let style = {\n width: customMenuWidth ? dimensionValue(customMenuWidth) : width,\n minWidth: isQuiet\n ? `calc(${menuWidth}px + calc(2 * var(--spectrum-dropdown-quiet-offset)))`\n : menuWidth\n };\n\n return (\n <>\n <Field\n {...props}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n labelProps={labelProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n ref={domRef}>\n <SearchAutocompleteInput\n {...props}\n isOpen={state.isOpen}\n loadingState={loadingState}\n inputProps={inputProps}\n inputRef={inputRef}\n clearButtonProps={clearButtonProps}\n validationState={props.validationState || (isInvalid ? 'invalid' : undefined)}\n />\n </Field>\n <Popover\n state={state}\n UNSAFE_style={style}\n UNSAFE_className={classNames(styles, 'spectrum-InputGroup-popover', {\n 'spectrum-InputGroup-popover--quiet': isQuiet\n })}\n ref={popoverRef}\n triggerRef={inputRef}\n placement={`${direction} ${align}`}\n hideArrow\n isNonModal\n shouldFlip={shouldFlip}>\n <ListBoxBase\n {...listBoxProps}\n ref={listBoxRef}\n disallowEmptySelection\n autoFocus={state.focusStrategy ?? undefined}\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n isLoading={loadingState === 'loading' || loadingState === 'loadingMore'}\n showLoadingSpinner={loadingState === 'loadingMore'}\n onLoadMore={onLoadMore}\n renderEmptyState={() =>\n isAsync && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n />\n </Popover>\n </>\n );\n}\n\nlet SearchAutocompleteBase = React.forwardRef(ForwardSearchAutocompleteBase) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteInputProps<T> extends SpectrumSearchAutocompleteProps<T> {\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n inputRef: RefObject<HTMLInputElement | null>;\n style?: React.CSSProperties;\n className?: string;\n isOpen?: boolean;\n clearButtonProps: AriaButtonProps;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nfunction ForwardSearchAutocompleteInput<T>(props: SearchAutocompleteInputProps<T>, ref: any) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n validationState,\n inputProps,\n inputRef,\n autoFocus,\n style,\n className,\n loadingState,\n isOpen,\n menuTrigger,\n clearButtonProps\n } = props;\n let {hoverProps, isHovered} = useHover({});\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let domProps = filterDOMProps(props);\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-circleLoader',\n classNames(styles, 'spectrum-InputGroup-input-circleLoader'),\n classNames(searchStyles, 'spectrum-Search-circleLoader')\n )}\n />\n );\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let isLoading = loadingState === 'loading' || loadingState === 'filtering';\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (isLoading && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (!isLoading) {\n // If loading is no longer happening, clear any timers and hide the loading circle\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [isLoading, showLoading, inputValue]);\n let [prevIsLoading, setPrevIsLoading] = useState(isLoading);\n if (prevIsLoading !== isLoading && !isLoading) {\n setShowLoading(false);\n setPrevIsLoading(isLoading);\n }\n\n return (\n <FocusRing\n within\n isTextInput\n focusClass={classNames(styles, 'is-focused')}\n focusRingClass={classNames(styles, 'focus-ring')}\n autoFocus={autoFocus}>\n <div\n {...hoverProps}\n ref={ref as RefObject<HTMLDivElement | null>}\n style={style}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete'),\n className\n )}>\n <TextFieldBase\n {...domProps}\n inputProps={inputProps}\n inputRef={inputRef}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Search--loadable',\n 'spectrum-Textfield',\n {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(styles, 'spectrum-InputGroup-field')\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n validationState={validationState}\n isLoading={\n showLoading && (isOpen || menuTrigger === 'manual' || loadingState === 'loading')\n }\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n icon={icon}\n wrapperChildren={\n (inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !isReadOnly\n ? clearButton\n : undefined\n }\n disableFocusRing\n />\n </div>\n </FocusRing>\n );\n}\n\nlet SearchAutocompleteInput = React.forwardRef(ForwardSearchAutocompleteInput) as <T>(\n props: SearchAutocompleteInputProps<T> & {ref?: any}\n) => ReactElement;\n\n/**\n * A SearchAutocomplete is a searchfield that supports a dynamic list of suggestions.\n */\nlet ForwardSearchAutocomplete = forwardRef(SearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\nexport {ForwardSearchAutocomplete as SearchAutocomplete};\n"],"names":[],"version":3,"file":"SearchAutocomplete.cjs.map"}
1
+ {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/SearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {AriaButtonProps} from 'react-aria/useButton';\nimport {\n AriaSearchAutocompleteProps,\n useSearchAutocomplete\n} from 'react-aria/private/autocomplete/useSearchAutocomplete';\nimport {\n AsyncLoadable,\n DimensionValue,\n DOMRefValue,\n FocusableRef,\n LoadingState,\n SpectrumFieldValidation,\n SpectrumLabelableProps,\n SpectrumTextInputBase,\n StyleProps\n} from '@react-types/shared';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {dimensionValue} from '../utils/styleProps';\nimport {Field} from '../label/Field';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {MenuTriggerAction, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {MobileSearchAutocomplete} from './MobileSearchAutocomplete';\nimport {Popover} from '../overlays/Popover';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n forwardRef,\n InputHTMLAttributes,\n ReactElement,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef, useUnwrapDOMRef} from '../utils/useDOMRef';\nimport {useFormProps} from '../form/Form';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsMobileDevice} from '../utils/useIsMobileDevice';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useProvider, useProviderProps} from '../provider/Provider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport interface SpectrumSearchAutocompleteProps<T>\n extends\n SpectrumTextInputBase,\n Omit<\n AriaSearchAutocompleteProps<T>,\n 'menuTrigger' | 'isInvalid' | 'validationState' | 'validate'\n >,\n SpectrumFieldValidation<string>,\n SpectrumLabelableProps,\n StyleProps,\n Omit<AsyncLoadable, 'isLoading'> {\n /**\n * The interaction required to display the SearchAutocomplete menu. Note that this prop has no\n * effect on the mobile SearchAutocomplete experience.\n *\n * @default 'input'\n */\n menuTrigger?: MenuTriggerAction;\n /** Whether the SearchAutocomplete should be displayed with a quiet style. */\n isQuiet?: boolean;\n /**\n * Alignment of the menu relative to the input target.\n *\n * @default 'start'\n */\n align?: 'start' | 'end';\n /**\n * Direction the menu will render relative to the SearchAutocomplete.\n *\n * @default 'bottom'\n */\n direction?: 'bottom' | 'top';\n /**\n * The current loading state of the SearchAutocomplete. Determines whether or not the progress\n * circle should be shown.\n */\n loadingState?: LoadingState;\n /**\n * Whether the menu should automatically flip direction when space is limited.\n *\n * @default true\n */\n shouldFlip?: boolean;\n /**\n * Width of the menu. By default, matches width of the trigger. Note that the minimum width of the\n * dropdown is always equal to the trigger's width.\n */\n menuWidth?: DimensionValue;\n onLoadMore?: () => void;\n /** An icon to display at the start of the input. */\n icon?: ReactElement | null;\n}\n\nfunction SearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n // oxlint-disable-next-line react/react-compiler\n props = useProviderProps(props);\n props = useFormProps(props);\n\n let hasWarned = useRef(false);\n useEffect(() => {\n if (props.placeholder && !hasWarned.current && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Placeholders are deprecated due to accessibility issues. Please use help text instead.'\n );\n hasWarned.current = true;\n }\n }, [props.placeholder]);\n\n let isMobile = useIsMobileDevice();\n if (isMobile) {\n // menuTrigger=focus/manual don't apply to mobile searchwithin\n return <MobileSearchAutocomplete {...props} menuTrigger=\"input\" ref={ref} />;\n } else {\n return <SearchAutocompleteBase {...props} ref={ref} />;\n }\n}\n\nfunction ForwardSearchAutocompleteBase<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n menuTrigger = 'input',\n shouldFlip = true,\n direction = 'bottom',\n align = 'start',\n isQuiet,\n menuWidth: customMenuWidth,\n loadingState,\n onLoadMore,\n onSubmit = () => {},\n validate\n } = props;\n\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let isAsync = loadingState != null;\n let popoverRef = useRef<DOMRefValue<HTMLDivElement>>(null);\n let unwrappedPopoverRef = useUnwrapDOMRef(popoverRef);\n let listBoxRef = useRef(null);\n let inputRef = useRef<HTMLInputElement>(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: isAsync,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n let layout = useListBoxLayout();\n\n let {\n inputProps,\n listBoxProps,\n labelProps,\n clearButtonProps,\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails\n } = useSearchAutocomplete(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: unwrappedPopoverRef,\n listBoxRef,\n inputRef,\n menuTrigger\n },\n state\n );\n\n // Measure the width of the inputfield to inform the width of the menu (below).\n let [menuWidth, setMenuWidth] = useState<number>(0);\n let {scale} = useProvider();\n\n let onResize = useCallback(() => {\n if (inputRef.current) {\n let inputWidth = inputRef.current.offsetWidth;\n setMenuWidth(inputWidth);\n }\n }, [inputRef, setMenuWidth]);\n\n useResizeObserver({\n ref: domRef,\n onResize: onResize\n });\n\n useLayoutEffect(onResize, [scale, onResize]);\n\n let width = isQuiet ? undefined : menuWidth;\n let style = {\n width: customMenuWidth ? dimensionValue(customMenuWidth) : width,\n minWidth: isQuiet\n ? `calc(${menuWidth}px + calc(2 * var(--spectrum-dropdown-quiet-offset)))`\n : menuWidth\n };\n\n return (\n <>\n <Field\n {...props}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n labelProps={labelProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n ref={domRef}>\n <SearchAutocompleteInput\n {...props}\n isOpen={state.isOpen}\n loadingState={loadingState}\n inputProps={inputProps}\n inputRef={inputRef}\n clearButtonProps={clearButtonProps}\n validationState={props.validationState || (isInvalid ? 'invalid' : undefined)}\n />\n </Field>\n <Popover\n state={state}\n UNSAFE_style={style}\n UNSAFE_className={classNames(styles, 'spectrum-InputGroup-popover', {\n 'spectrum-InputGroup-popover--quiet': isQuiet\n })}\n ref={popoverRef}\n triggerRef={inputRef}\n placement={`${direction} ${align}`}\n hideArrow\n isNonModal\n shouldFlip={shouldFlip}>\n <ListBoxBase\n {...listBoxProps}\n ref={listBoxRef}\n disallowEmptySelection\n autoFocus={state.focusStrategy ?? undefined}\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n isLoading={loadingState === 'loading' || loadingState === 'loadingMore'}\n showLoadingSpinner={loadingState === 'loadingMore'}\n onLoadMore={onLoadMore}\n renderEmptyState={() =>\n isAsync && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n />\n </Popover>\n </>\n );\n}\n\nlet SearchAutocompleteBase = React.forwardRef(ForwardSearchAutocompleteBase) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteInputProps<T> extends SpectrumSearchAutocompleteProps<T> {\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n inputRef: RefObject<HTMLInputElement | null>;\n style?: React.CSSProperties;\n className?: string;\n isOpen?: boolean;\n clearButtonProps: AriaButtonProps;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nfunction ForwardSearchAutocompleteInput<T>(props: SearchAutocompleteInputProps<T>, ref: any) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n validationState,\n inputProps,\n inputRef,\n autoFocus,\n style,\n className,\n loadingState,\n isOpen,\n menuTrigger,\n clearButtonProps\n } = props;\n let {hoverProps, isHovered} = useHover({});\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let domProps = filterDOMProps(props);\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-circleLoader',\n classNames(styles, 'spectrum-InputGroup-input-circleLoader'),\n classNames(searchStyles, 'spectrum-Search-circleLoader')\n )}\n />\n );\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let isLoading = loadingState === 'loading' || loadingState === 'filtering';\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (isLoading && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (!isLoading) {\n // If loading is no longer happening, clear any timers and hide the loading circle\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [isLoading, showLoading, inputValue]);\n let [prevIsLoading, setPrevIsLoading] = useState(isLoading);\n if (prevIsLoading !== isLoading && !isLoading) {\n setShowLoading(false);\n setPrevIsLoading(isLoading);\n }\n\n return (\n <FocusRing\n within\n isTextInput\n focusClass={classNames(styles, 'is-focused')}\n focusRingClass={classNames(styles, 'focus-ring')}\n autoFocus={autoFocus}>\n <div\n {...hoverProps}\n ref={ref as RefObject<HTMLDivElement | null>}\n style={style}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete'),\n className\n )}>\n <TextFieldBase\n {...domProps}\n inputProps={inputProps}\n inputRef={inputRef}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Search--loadable',\n 'spectrum-Textfield',\n {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(styles, 'spectrum-InputGroup-field')\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n validationState={validationState}\n isLoading={\n showLoading && (isOpen || menuTrigger === 'manual' || loadingState === 'loading')\n }\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n icon={icon}\n wrapperChildren={\n (inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !isReadOnly\n ? clearButton\n : undefined\n }\n disableFocusRing\n />\n </div>\n </FocusRing>\n );\n}\n\nlet SearchAutocompleteInput = React.forwardRef(ForwardSearchAutocompleteInput) as <T>(\n props: SearchAutocompleteInputProps<T> & {ref?: any}\n) => ReactElement;\n\n/**\n * A SearchAutocomplete is a searchfield that supports a dynamic list of suggestions.\n */\nlet ForwardSearchAutocomplete = forwardRef(SearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\nexport {ForwardSearchAutocomplete as SearchAutocomplete};\n"],"names":[],"version":3,"file":"SearchAutocomplete.cjs.map"}
@@ -76,6 +76,7 @@ function $parcel$interopDefault(a) {
76
76
 
77
77
 
78
78
  function $226f68890f9089c3$var$SearchAutocomplete(props, ref) {
79
+ // oxlint-disable-next-line react/react-compiler
79
80
  props = (0, $089943c7a219141c$export$521c373ccc32c300)(props);
80
81
  props = (0, $d23ca6800ac02cf1$export$a6b5be5c6b451665)(props);
81
82
  let hasWarned = (0, $1wKAs$useRef)(false);
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/SearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {AriaButtonProps} from 'react-aria/useButton';\n\nimport {\n AriaSearchAutocompleteProps,\n useSearchAutocomplete\n} from 'react-aria/private/autocomplete/useSearchAutocomplete';\nimport {\n AsyncLoadable,\n DimensionValue,\n DOMRefValue,\n FocusableRef,\n LoadingState,\n SpectrumFieldValidation,\n SpectrumLabelableProps,\n SpectrumTextInputBase,\n StyleProps\n} from '@react-types/shared';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {dimensionValue} from '../utils/styleProps';\nimport {Field} from '../label/Field';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {MenuTriggerAction, useComboBoxState} from 'react-stately/useComboBoxState';\n// @ts-ignore\nimport {MobileSearchAutocomplete} from './MobileSearchAutocomplete';\nimport {Popover} from '../overlays/Popover';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n forwardRef,\n InputHTMLAttributes,\n ReactElement,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef, useUnwrapDOMRef} from '../utils/useDOMRef';\nimport {useFormProps} from '../form/Form';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsMobileDevice} from '../utils/useIsMobileDevice';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useProvider, useProviderProps} from '../provider/Provider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport interface SpectrumSearchAutocompleteProps<T>\n extends\n SpectrumTextInputBase,\n Omit<\n AriaSearchAutocompleteProps<T>,\n 'menuTrigger' | 'isInvalid' | 'validationState' | 'validate'\n >,\n SpectrumFieldValidation<string>,\n SpectrumLabelableProps,\n StyleProps,\n Omit<AsyncLoadable, 'isLoading'> {\n /**\n * The interaction required to display the SearchAutocomplete menu. Note that this prop has no\n * effect on the mobile SearchAutocomplete experience.\n *\n * @default 'input'\n */\n menuTrigger?: MenuTriggerAction;\n /** Whether the SearchAutocomplete should be displayed with a quiet style. */\n isQuiet?: boolean;\n /**\n * Alignment of the menu relative to the input target.\n *\n * @default 'start'\n */\n align?: 'start' | 'end';\n /**\n * Direction the menu will render relative to the SearchAutocomplete.\n *\n * @default 'bottom'\n */\n direction?: 'bottom' | 'top';\n /**\n * The current loading state of the SearchAutocomplete. Determines whether or not the progress\n * circle should be shown.\n */\n loadingState?: LoadingState;\n /**\n * Whether the menu should automatically flip direction when space is limited.\n *\n * @default true\n */\n shouldFlip?: boolean;\n /**\n * Width of the menu. By default, matches width of the trigger. Note that the minimum width of the\n * dropdown is always equal to the trigger's width.\n */\n menuWidth?: DimensionValue;\n onLoadMore?: () => void;\n /** An icon to display at the start of the input. */\n icon?: ReactElement | null;\n}\n\nfunction SearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n props = useFormProps(props);\n\n let hasWarned = useRef(false);\n useEffect(() => {\n if (props.placeholder && !hasWarned.current && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Placeholders are deprecated due to accessibility issues. Please use help text instead.'\n );\n hasWarned.current = true;\n }\n }, [props.placeholder]);\n\n let isMobile = useIsMobileDevice();\n if (isMobile) {\n // menuTrigger=focus/manual don't apply to mobile searchwithin\n return <MobileSearchAutocomplete {...props} menuTrigger=\"input\" ref={ref} />;\n } else {\n return <SearchAutocompleteBase {...props} ref={ref} />;\n }\n}\n\nfunction ForwardSearchAutocompleteBase<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n menuTrigger = 'input',\n shouldFlip = true,\n direction = 'bottom',\n align = 'start',\n isQuiet,\n menuWidth: customMenuWidth,\n loadingState,\n onLoadMore,\n onSubmit = () => {},\n validate\n } = props;\n\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let isAsync = loadingState != null;\n let popoverRef = useRef<DOMRefValue<HTMLDivElement>>(null);\n let unwrappedPopoverRef = useUnwrapDOMRef(popoverRef);\n let listBoxRef = useRef(null);\n let inputRef = useRef<HTMLInputElement>(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: isAsync,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n let layout = useListBoxLayout();\n\n let {\n inputProps,\n listBoxProps,\n labelProps,\n clearButtonProps,\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails\n } = useSearchAutocomplete(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: unwrappedPopoverRef,\n listBoxRef,\n inputRef,\n menuTrigger\n },\n state\n );\n\n // Measure the width of the inputfield to inform the width of the menu (below).\n let [menuWidth, setMenuWidth] = useState<number>(0);\n let {scale} = useProvider();\n\n let onResize = useCallback(() => {\n if (inputRef.current) {\n let inputWidth = inputRef.current.offsetWidth;\n setMenuWidth(inputWidth);\n }\n }, [inputRef, setMenuWidth]);\n\n useResizeObserver({\n ref: domRef,\n onResize: onResize\n });\n\n useLayoutEffect(onResize, [scale, onResize]);\n\n let width = isQuiet ? undefined : menuWidth;\n let style = {\n width: customMenuWidth ? dimensionValue(customMenuWidth) : width,\n minWidth: isQuiet\n ? `calc(${menuWidth}px + calc(2 * var(--spectrum-dropdown-quiet-offset)))`\n : menuWidth\n };\n\n return (\n <>\n <Field\n {...props}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n labelProps={labelProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n ref={domRef}>\n <SearchAutocompleteInput\n {...props}\n isOpen={state.isOpen}\n loadingState={loadingState}\n inputProps={inputProps}\n inputRef={inputRef}\n clearButtonProps={clearButtonProps}\n validationState={props.validationState || (isInvalid ? 'invalid' : undefined)}\n />\n </Field>\n <Popover\n state={state}\n UNSAFE_style={style}\n UNSAFE_className={classNames(styles, 'spectrum-InputGroup-popover', {\n 'spectrum-InputGroup-popover--quiet': isQuiet\n })}\n ref={popoverRef}\n triggerRef={inputRef}\n placement={`${direction} ${align}`}\n hideArrow\n isNonModal\n shouldFlip={shouldFlip}>\n <ListBoxBase\n {...listBoxProps}\n ref={listBoxRef}\n disallowEmptySelection\n autoFocus={state.focusStrategy ?? undefined}\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n isLoading={loadingState === 'loading' || loadingState === 'loadingMore'}\n showLoadingSpinner={loadingState === 'loadingMore'}\n onLoadMore={onLoadMore}\n renderEmptyState={() =>\n isAsync && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n />\n </Popover>\n </>\n );\n}\n\nlet SearchAutocompleteBase = React.forwardRef(ForwardSearchAutocompleteBase) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteInputProps<T> extends SpectrumSearchAutocompleteProps<T> {\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n inputRef: RefObject<HTMLInputElement | null>;\n style?: React.CSSProperties;\n className?: string;\n isOpen?: boolean;\n clearButtonProps: AriaButtonProps;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nfunction ForwardSearchAutocompleteInput<T>(props: SearchAutocompleteInputProps<T>, ref: any) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n validationState,\n inputProps,\n inputRef,\n autoFocus,\n style,\n className,\n loadingState,\n isOpen,\n menuTrigger,\n clearButtonProps\n } = props;\n let {hoverProps, isHovered} = useHover({});\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let domProps = filterDOMProps(props);\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-circleLoader',\n classNames(styles, 'spectrum-InputGroup-input-circleLoader'),\n classNames(searchStyles, 'spectrum-Search-circleLoader')\n )}\n />\n );\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let isLoading = loadingState === 'loading' || loadingState === 'filtering';\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (isLoading && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (!isLoading) {\n // If loading is no longer happening, clear any timers and hide the loading circle\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [isLoading, showLoading, inputValue]);\n let [prevIsLoading, setPrevIsLoading] = useState(isLoading);\n if (prevIsLoading !== isLoading && !isLoading) {\n setShowLoading(false);\n setPrevIsLoading(isLoading);\n }\n\n return (\n <FocusRing\n within\n isTextInput\n focusClass={classNames(styles, 'is-focused')}\n focusRingClass={classNames(styles, 'focus-ring')}\n autoFocus={autoFocus}>\n <div\n {...hoverProps}\n ref={ref as RefObject<HTMLDivElement | null>}\n style={style}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete'),\n className\n )}>\n <TextFieldBase\n {...domProps}\n inputProps={inputProps}\n inputRef={inputRef}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Search--loadable',\n 'spectrum-Textfield',\n {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(styles, 'spectrum-InputGroup-field')\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n validationState={validationState}\n isLoading={\n showLoading && (isOpen || menuTrigger === 'manual' || loadingState === 'loading')\n }\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n icon={icon}\n wrapperChildren={\n (inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !isReadOnly\n ? clearButton\n : undefined\n }\n disableFocusRing\n />\n </div>\n </FocusRing>\n );\n}\n\nlet SearchAutocompleteInput = React.forwardRef(ForwardSearchAutocompleteInput) as <T>(\n props: SearchAutocompleteInputProps<T> & {ref?: any}\n) => ReactElement;\n\n/**\n * A SearchAutocomplete is a searchfield that supports a dynamic list of suggestions.\n */\nlet ForwardSearchAutocomplete = forwardRef(SearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\nexport {ForwardSearchAutocomplete as SearchAutocomplete};\n"],"names":[],"version":3,"file":"SearchAutocomplete.js.map"}
1
+ {"mappings":"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","sources":["packages/@adobe/react-spectrum/src/autocomplete/SearchAutocomplete.tsx"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {AriaButtonProps} from 'react-aria/useButton';\nimport {\n AriaSearchAutocompleteProps,\n useSearchAutocomplete\n} from 'react-aria/private/autocomplete/useSearchAutocomplete';\nimport {\n AsyncLoadable,\n DimensionValue,\n DOMRefValue,\n FocusableRef,\n LoadingState,\n SpectrumFieldValidation,\n SpectrumLabelableProps,\n SpectrumTextInputBase,\n StyleProps\n} from '@react-types/shared';\nimport {classNames} from '../utils/classNames';\nimport {ClearButton} from '../button/ClearButton';\nimport {dimensionValue} from '../utils/styleProps';\nimport {Field} from '../label/Field';\nimport {filterDOMProps} from 'react-aria/filterDOMProps';\nimport {FocusRing} from 'react-aria/FocusRing';\nimport intlMessages from '../../intl/autocomplete/*.json';\nimport {ListBoxBase, useListBoxLayout} from '../listbox/ListBoxBase';\nimport Magnifier from '@spectrum-icons/ui/Magnifier';\nimport {MenuTriggerAction, useComboBoxState} from 'react-stately/useComboBoxState';\nimport {MobileSearchAutocomplete} from './MobileSearchAutocomplete';\nimport {Popover} from '../overlays/Popover';\nimport {ProgressCircle} from '../progress/ProgressCircle';\nimport React, {\n forwardRef,\n InputHTMLAttributes,\n ReactElement,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState\n} from 'react';\nimport searchAutocompleteStyles from './searchautocomplete.css';\nimport searchStyles from '@adobe/spectrum-css-temp/components/search/vars.css';\nimport styles from '@adobe/spectrum-css-temp/components/inputgroup/vars.css';\nimport {TextFieldBase} from '../textfield/TextFieldBase';\nimport textfieldStyles from '@adobe/spectrum-css-temp/components/textfield/vars.css';\nimport {useFilter} from 'react-aria/useFilter';\nimport {useFocusableRef, useUnwrapDOMRef} from '../utils/useDOMRef';\nimport {useFormProps} from '../form/Form';\nimport {useHover} from 'react-aria/useHover';\nimport {useIsMobileDevice} from '../utils/useIsMobileDevice';\nimport {useLayoutEffect} from 'react-aria/private/utils/useLayoutEffect';\nimport {useLocalizedStringFormatter} from 'react-aria/useLocalizedStringFormatter';\nimport {useProvider, useProviderProps} from '../provider/Provider';\nimport {useResizeObserver} from 'react-aria/private/utils/useResizeObserver';\n\nexport interface SpectrumSearchAutocompleteProps<T>\n extends\n SpectrumTextInputBase,\n Omit<\n AriaSearchAutocompleteProps<T>,\n 'menuTrigger' | 'isInvalid' | 'validationState' | 'validate'\n >,\n SpectrumFieldValidation<string>,\n SpectrumLabelableProps,\n StyleProps,\n Omit<AsyncLoadable, 'isLoading'> {\n /**\n * The interaction required to display the SearchAutocomplete menu. Note that this prop has no\n * effect on the mobile SearchAutocomplete experience.\n *\n * @default 'input'\n */\n menuTrigger?: MenuTriggerAction;\n /** Whether the SearchAutocomplete should be displayed with a quiet style. */\n isQuiet?: boolean;\n /**\n * Alignment of the menu relative to the input target.\n *\n * @default 'start'\n */\n align?: 'start' | 'end';\n /**\n * Direction the menu will render relative to the SearchAutocomplete.\n *\n * @default 'bottom'\n */\n direction?: 'bottom' | 'top';\n /**\n * The current loading state of the SearchAutocomplete. Determines whether or not the progress\n * circle should be shown.\n */\n loadingState?: LoadingState;\n /**\n * Whether the menu should automatically flip direction when space is limited.\n *\n * @default true\n */\n shouldFlip?: boolean;\n /**\n * Width of the menu. By default, matches width of the trigger. Note that the minimum width of the\n * dropdown is always equal to the trigger's width.\n */\n menuWidth?: DimensionValue;\n onLoadMore?: () => void;\n /** An icon to display at the start of the input. */\n icon?: ReactElement | null;\n}\n\nfunction SearchAutocomplete<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n // oxlint-disable-next-line react/react-compiler\n props = useProviderProps(props);\n props = useFormProps(props);\n\n let hasWarned = useRef(false);\n useEffect(() => {\n if (props.placeholder && !hasWarned.current && process.env.NODE_ENV !== 'production') {\n console.warn(\n 'Placeholders are deprecated due to accessibility issues. Please use help text instead.'\n );\n hasWarned.current = true;\n }\n }, [props.placeholder]);\n\n let isMobile = useIsMobileDevice();\n if (isMobile) {\n // menuTrigger=focus/manual don't apply to mobile searchwithin\n return <MobileSearchAutocomplete {...props} menuTrigger=\"input\" ref={ref} />;\n } else {\n return <SearchAutocompleteBase {...props} ref={ref} />;\n }\n}\n\nfunction ForwardSearchAutocompleteBase<T extends object>(\n props: SpectrumSearchAutocompleteProps<T>,\n ref: FocusableRef<HTMLElement>\n) {\n props = useProviderProps(props);\n\n let {\n menuTrigger = 'input',\n shouldFlip = true,\n direction = 'bottom',\n align = 'start',\n isQuiet,\n menuWidth: customMenuWidth,\n loadingState,\n onLoadMore,\n onSubmit = () => {},\n validate\n } = props;\n\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let isAsync = loadingState != null;\n let popoverRef = useRef<DOMRefValue<HTMLDivElement>>(null);\n let unwrappedPopoverRef = useUnwrapDOMRef(popoverRef);\n let listBoxRef = useRef(null);\n let inputRef = useRef<HTMLInputElement>(null);\n let domRef = useFocusableRef(ref, inputRef);\n\n let {contains} = useFilter({sensitivity: 'base'});\n let state = useComboBoxState({\n ...props,\n defaultFilter: contains,\n allowsEmptyCollection: isAsync,\n allowsCustomValue: true,\n onSelectionChange: key => key !== null && onSubmit(null, key),\n selectedKey: undefined,\n defaultSelectedKey: undefined,\n validate: useCallback(v => validate?.(v.inputValue), [validate])\n });\n let layout = useListBoxLayout();\n\n let {\n inputProps,\n listBoxProps,\n labelProps,\n clearButtonProps,\n descriptionProps,\n errorMessageProps,\n isInvalid,\n validationErrors,\n validationDetails\n } = useSearchAutocomplete(\n {\n ...props,\n layoutDelegate: layout,\n popoverRef: unwrappedPopoverRef,\n listBoxRef,\n inputRef,\n menuTrigger\n },\n state\n );\n\n // Measure the width of the inputfield to inform the width of the menu (below).\n let [menuWidth, setMenuWidth] = useState<number>(0);\n let {scale} = useProvider();\n\n let onResize = useCallback(() => {\n if (inputRef.current) {\n let inputWidth = inputRef.current.offsetWidth;\n setMenuWidth(inputWidth);\n }\n }, [inputRef, setMenuWidth]);\n\n useResizeObserver({\n ref: domRef,\n onResize: onResize\n });\n\n useLayoutEffect(onResize, [scale, onResize]);\n\n let width = isQuiet ? undefined : menuWidth;\n let style = {\n width: customMenuWidth ? dimensionValue(customMenuWidth) : width,\n minWidth: isQuiet\n ? `calc(${menuWidth}px + calc(2 * var(--spectrum-dropdown-quiet-offset)))`\n : menuWidth\n };\n\n return (\n <>\n <Field\n {...props}\n descriptionProps={descriptionProps}\n errorMessageProps={errorMessageProps}\n labelProps={labelProps}\n isInvalid={isInvalid}\n validationErrors={validationErrors}\n validationDetails={validationDetails}\n ref={domRef}>\n <SearchAutocompleteInput\n {...props}\n isOpen={state.isOpen}\n loadingState={loadingState}\n inputProps={inputProps}\n inputRef={inputRef}\n clearButtonProps={clearButtonProps}\n validationState={props.validationState || (isInvalid ? 'invalid' : undefined)}\n />\n </Field>\n <Popover\n state={state}\n UNSAFE_style={style}\n UNSAFE_className={classNames(styles, 'spectrum-InputGroup-popover', {\n 'spectrum-InputGroup-popover--quiet': isQuiet\n })}\n ref={popoverRef}\n triggerRef={inputRef}\n placement={`${direction} ${align}`}\n hideArrow\n isNonModal\n shouldFlip={shouldFlip}>\n <ListBoxBase\n {...listBoxProps}\n ref={listBoxRef}\n disallowEmptySelection\n autoFocus={state.focusStrategy ?? undefined}\n shouldSelectOnPressUp\n focusOnPointerEnter\n layout={layout}\n state={state}\n shouldUseVirtualFocus\n isLoading={loadingState === 'loading' || loadingState === 'loadingMore'}\n showLoadingSpinner={loadingState === 'loadingMore'}\n onLoadMore={onLoadMore}\n renderEmptyState={() =>\n isAsync && (\n <span className={classNames(searchAutocompleteStyles, 'no-results')}>\n {stringFormatter.format('noResults')}\n </span>\n )\n }\n />\n </Popover>\n </>\n );\n}\n\nlet SearchAutocompleteBase = React.forwardRef(ForwardSearchAutocompleteBase) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\n\ninterface SearchAutocompleteInputProps<T> extends SpectrumSearchAutocompleteProps<T> {\n inputProps: InputHTMLAttributes<HTMLInputElement>;\n inputRef: RefObject<HTMLInputElement | null>;\n style?: React.CSSProperties;\n className?: string;\n isOpen?: boolean;\n clearButtonProps: AriaButtonProps;\n}\n\n// any type is because we don't want to call useObjectRef because this is an internal component and we know\n// we are always passing an object ref\nfunction ForwardSearchAutocompleteInput<T>(props: SearchAutocompleteInputProps<T>, ref: any) {\n let searchIcon = <Magnifier data-testid=\"searchicon\" />;\n\n let {\n icon = searchIcon,\n isQuiet,\n isDisabled,\n isReadOnly,\n validationState,\n inputProps,\n inputRef,\n autoFocus,\n style,\n className,\n loadingState,\n isOpen,\n menuTrigger,\n clearButtonProps\n } = props;\n let {hoverProps, isHovered} = useHover({});\n let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-spectrum/autocomplete');\n let domProps = filterDOMProps(props);\n let timeout = useRef<ReturnType<typeof setTimeout> | null>(null);\n let [showLoading, setShowLoading] = useState(false);\n\n let loadingCircle = (\n <ProgressCircle\n aria-label={stringFormatter.format('loading')}\n size=\"S\"\n isIndeterminate\n UNSAFE_className={classNames(\n textfieldStyles,\n 'spectrum-Textfield-circleLoader',\n classNames(styles, 'spectrum-InputGroup-input-circleLoader'),\n classNames(searchStyles, 'spectrum-Search-circleLoader')\n )}\n />\n );\n\n let clearButton = (\n <ClearButton\n {...clearButtonProps}\n preventFocus\n UNSAFE_className={classNames(searchStyles, 'spectrum-ClearButton')}\n isDisabled={isDisabled}\n />\n );\n\n let isLoading = loadingState === 'loading' || loadingState === 'filtering';\n let inputValue = inputProps.value;\n let lastInputValue = useRef(inputValue);\n useEffect(() => {\n if (isLoading && !showLoading) {\n if (timeout.current === null) {\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n\n // If user is typing, clear the timer and restart since it is a new request\n if (inputValue !== lastInputValue.current) {\n clearTimeout(timeout.current);\n timeout.current = setTimeout(() => {\n setShowLoading(true);\n }, 500);\n }\n } else if (!isLoading) {\n // If loading is no longer happening, clear any timers and hide the loading circle\n if (timeout.current != null) {\n clearTimeout(timeout.current);\n timeout.current = null;\n }\n }\n\n lastInputValue.current = inputValue;\n }, [isLoading, showLoading, inputValue]);\n let [prevIsLoading, setPrevIsLoading] = useState(isLoading);\n if (prevIsLoading !== isLoading && !isLoading) {\n setShowLoading(false);\n setPrevIsLoading(isLoading);\n }\n\n return (\n <FocusRing\n within\n isTextInput\n focusClass={classNames(styles, 'is-focused')}\n focusRingClass={classNames(styles, 'focus-ring')}\n autoFocus={autoFocus}>\n <div\n {...hoverProps}\n ref={ref as RefObject<HTMLDivElement | null>}\n style={style}\n className={classNames(\n styles,\n 'spectrum-InputGroup',\n {\n 'spectrum-InputGroup--quiet': isQuiet,\n 'is-disabled': isDisabled,\n 'spectrum-InputGroup--invalid': validationState === 'invalid' && !isDisabled,\n 'is-hovered': isHovered\n },\n classNames(searchAutocompleteStyles, 'searchautocomplete'),\n className\n )}>\n <TextFieldBase\n {...domProps}\n inputProps={inputProps}\n inputRef={inputRef}\n UNSAFE_className={classNames(\n searchStyles,\n 'spectrum-Search',\n 'spectrum-Search--loadable',\n 'spectrum-Textfield',\n {\n 'is-disabled': isDisabled,\n 'is-quiet': isQuiet,\n 'spectrum-Search--invalid': validationState === 'invalid' && !isDisabled,\n 'spectrum-Search--valid': validationState === 'valid' && !isDisabled\n },\n classNames(styles, 'spectrum-InputGroup-field')\n )}\n inputClassName={classNames(searchStyles, 'spectrum-Search-input')}\n validationIconClassName={classNames(searchStyles, 'spectrum-Search-validationIcon')}\n isDisabled={isDisabled}\n isQuiet={isQuiet}\n validationState={validationState}\n isLoading={\n showLoading && (isOpen || menuTrigger === 'manual' || loadingState === 'loading')\n }\n loadingIndicator={loadingState != null ? loadingCircle : undefined}\n icon={icon}\n wrapperChildren={\n (inputValue !== '' || loadingState === 'filtering' || validationState != null) &&\n !isReadOnly\n ? clearButton\n : undefined\n }\n disableFocusRing\n />\n </div>\n </FocusRing>\n );\n}\n\nlet SearchAutocompleteInput = React.forwardRef(ForwardSearchAutocompleteInput) as <T>(\n props: SearchAutocompleteInputProps<T> & {ref?: any}\n) => ReactElement;\n\n/**\n * A SearchAutocomplete is a searchfield that supports a dynamic list of suggestions.\n */\nlet ForwardSearchAutocomplete = forwardRef(SearchAutocomplete) as <T>(\n props: SpectrumSearchAutocompleteProps<T> & {ref?: FocusableRef<HTMLElement>}\n) => ReactElement;\nexport {ForwardSearchAutocomplete as SearchAutocomplete};\n"],"names":[],"version":3,"file":"SearchAutocomplete.js.map"}
@@ -76,6 +76,7 @@ function $parcel$interopDefault(a) {
76
76
 
77
77
 
78
78
  function $c6c497b46ad7f794$var$SearchAutocomplete(props, ref) {
79
+ // oxlint-disable-next-line react/react-compiler
79
80
  props = (0, $71dfb0e0358a12de$export$521c373ccc32c300)(props);
80
81
  props = (0, $c29c48d4ef19ffc4$export$a6b5be5c6b451665)(props);
81
82
  let hasWarned = (0, $3RnBb$useRef)(false);