@foxford/ui 2.102.0 → 2.103.0-beta-bdca95a-20260331

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 (1002) hide show
  1. package/components/Accordion/Accordion.js +1 -1
  2. package/components/Accordion/Accordion.js.map +1 -1
  3. package/components/Accordion/Accordion.mjs +1 -1
  4. package/components/Accordion/Accordion.mjs.map +1 -1
  5. package/components/Accordion/hooks.js +1 -1
  6. package/components/Accordion/hooks.js.map +1 -1
  7. package/components/Accordion/hooks.mjs +1 -1
  8. package/components/Accordion/hooks.mjs.map +1 -1
  9. package/components/Accordion/style.js +1 -1
  10. package/components/Accordion/style.js.map +1 -1
  11. package/components/Accordion/style.mjs +1 -1
  12. package/components/Accordion/style.mjs.map +1 -1
  13. package/components/AccordionItem/AccordionItem.js +1 -1
  14. package/components/AccordionItem/AccordionItem.js.map +1 -1
  15. package/components/AccordionItem/AccordionItem.mjs +1 -1
  16. package/components/AccordionItem/AccordionItem.mjs.map +1 -1
  17. package/components/AccordionItem/style.js +1 -1
  18. package/components/AccordionItem/style.js.map +1 -1
  19. package/components/AccordionItem/style.mjs +1 -1
  20. package/components/AccordionItem/style.mjs.map +1 -1
  21. package/components/AccordionItem/useAccordionPanel.js +1 -1
  22. package/components/AccordionItem/useAccordionPanel.js.map +1 -1
  23. package/components/AccordionItem/useAccordionPanel.mjs +1 -1
  24. package/components/AccordionItem/useAccordionPanel.mjs.map +1 -1
  25. package/components/AccordionItem/useAccordionPanelProps.js.map +1 -1
  26. package/components/AccordionItem/useAccordionPanelProps.mjs.map +1 -1
  27. package/components/ActionBtn/style.js +1 -1
  28. package/components/ActionBtn/style.js.map +1 -1
  29. package/components/ActionBtn/style.mjs +1 -1
  30. package/components/ActionBtn/style.mjs.map +1 -1
  31. package/components/AddElement/AddElement.js +1 -1
  32. package/components/AddElement/AddElement.js.map +1 -1
  33. package/components/AddElement/AddElement.mjs +1 -1
  34. package/components/AddElement/AddElement.mjs.map +1 -1
  35. package/components/AddElement/style.js +1 -1
  36. package/components/AddElement/style.js.map +1 -1
  37. package/components/AddElement/style.mjs +1 -1
  38. package/components/AddElement/style.mjs.map +1 -1
  39. package/components/Alert/Alert.js +1 -1
  40. package/components/Alert/Alert.js.map +1 -1
  41. package/components/Alert/Alert.mjs +1 -1
  42. package/components/Alert/Alert.mjs.map +1 -1
  43. package/components/Alert/CountdownCircle.js +1 -1
  44. package/components/Alert/CountdownCircle.js.map +1 -1
  45. package/components/Alert/CountdownCircle.mjs +1 -1
  46. package/components/Alert/CountdownCircle.mjs.map +1 -1
  47. package/components/Alert/style.js +1 -1
  48. package/components/Alert/style.js.map +1 -1
  49. package/components/Alert/style.mjs +1 -1
  50. package/components/Alert/style.mjs.map +1 -1
  51. package/components/Alert/utils.js.map +1 -1
  52. package/components/Alert/utils.mjs.map +1 -1
  53. package/components/Amount/Amount.js.map +1 -1
  54. package/components/Amount/Amount.mjs.map +1 -1
  55. package/components/Amount/style.js +1 -1
  56. package/components/Amount/style.js.map +1 -1
  57. package/components/Amount/style.mjs +1 -1
  58. package/components/Amount/style.mjs.map +1 -1
  59. package/components/Anchor/Anchor.js +1 -1
  60. package/components/Anchor/Anchor.js.map +1 -1
  61. package/components/Anchor/Anchor.mjs +1 -1
  62. package/components/Anchor/Anchor.mjs.map +1 -1
  63. package/components/Anchor/style.js +1 -1
  64. package/components/Anchor/style.js.map +1 -1
  65. package/components/Anchor/style.mjs +1 -1
  66. package/components/Anchor/style.mjs.map +1 -1
  67. package/components/Arrow/Arrow.js +1 -1
  68. package/components/Arrow/Arrow.js.map +1 -1
  69. package/components/Arrow/Arrow.mjs +1 -1
  70. package/components/Arrow/Arrow.mjs.map +1 -1
  71. package/components/Arrow/images/chevronUpDefault.svg.js +1 -1
  72. package/components/Arrow/images/chevronUpDefault.svg.js.map +1 -1
  73. package/components/Arrow/style.js +1 -1
  74. package/components/Arrow/style.js.map +1 -1
  75. package/components/Arrow/style.mjs +1 -1
  76. package/components/Arrow/style.mjs.map +1 -1
  77. package/components/ArrowBadge/ArrowBadge.js +1 -1
  78. package/components/ArrowBadge/ArrowBadge.js.map +1 -1
  79. package/components/ArrowBadge/ArrowBadge.mjs +1 -1
  80. package/components/ArrowBadge/ArrowBadge.mjs.map +1 -1
  81. package/components/ArrowBadge/images/arrow.svg.js +1 -1
  82. package/components/ArrowBadge/images/arrow.svg.js.map +1 -1
  83. package/components/ArrowBadge/images/fancy.svg.js +1 -1
  84. package/components/ArrowBadge/images/fancy.svg.js.map +1 -1
  85. package/components/ArrowBadge/images/rectangle.svg.js +1 -1
  86. package/components/ArrowBadge/images/rectangle.svg.js.map +1 -1
  87. package/components/ArrowBadge/style.js +1 -1
  88. package/components/ArrowBadge/style.js.map +1 -1
  89. package/components/ArrowBadge/style.mjs +1 -1
  90. package/components/ArrowBadge/style.mjs.map +1 -1
  91. package/components/AspectRatio/AspectRatio.js +1 -1
  92. package/components/AspectRatio/AspectRatio.js.map +1 -1
  93. package/components/AspectRatio/AspectRatio.mjs +1 -1
  94. package/components/AspectRatio/AspectRatio.mjs.map +1 -1
  95. package/components/AspectRatio/style.js +1 -1
  96. package/components/AspectRatio/style.js.map +1 -1
  97. package/components/AspectRatio/style.mjs +1 -1
  98. package/components/AspectRatio/style.mjs.map +1 -1
  99. package/components/Avatar/Avatar.js +1 -1
  100. package/components/Avatar/Avatar.js.map +1 -1
  101. package/components/Avatar/Avatar.mjs +1 -1
  102. package/components/Avatar/Avatar.mjs.map +1 -1
  103. package/components/Avatar/sizes.js +1 -1
  104. package/components/Avatar/sizes.js.map +1 -1
  105. package/components/Avatar/sizes.mjs +1 -1
  106. package/components/Avatar/sizes.mjs.map +1 -1
  107. package/components/Avatar/style.js +1 -1
  108. package/components/Avatar/style.js.map +1 -1
  109. package/components/Avatar/style.mjs +1 -1
  110. package/components/Avatar/style.mjs.map +1 -1
  111. package/components/Avatar/utils.js +1 -1
  112. package/components/Avatar/utils.js.map +1 -1
  113. package/components/Avatar/utils.mjs +1 -1
  114. package/components/Avatar/utils.mjs.map +1 -1
  115. package/components/Badge/Badge.js +1 -1
  116. package/components/Badge/Badge.js.map +1 -1
  117. package/components/Badge/Badge.mjs +1 -1
  118. package/components/Badge/Badge.mjs.map +1 -1
  119. package/components/Badge/style.js +1 -1
  120. package/components/Badge/style.js.map +1 -1
  121. package/components/Badge/style.mjs +1 -1
  122. package/components/Badge/style.mjs.map +1 -1
  123. package/components/Button/Button.js +1 -1
  124. package/components/Button/Button.js.map +1 -1
  125. package/components/Button/Button.mjs +1 -1
  126. package/components/Button/Button.mjs.map +1 -1
  127. package/components/Button/style.js +1 -1
  128. package/components/Button/style.js.map +1 -1
  129. package/components/Button/style.mjs +1 -1
  130. package/components/Button/style.mjs.map +1 -1
  131. package/components/Checkbox/Checkbox.js +1 -1
  132. package/components/Checkbox/Checkbox.js.map +1 -1
  133. package/components/Checkbox/Checkbox.mjs +1 -1
  134. package/components/Checkbox/Checkbox.mjs.map +1 -1
  135. package/components/Checkbox/images/checkDefault.svg.js +1 -1
  136. package/components/Checkbox/images/checkDefault.svg.js.map +1 -1
  137. package/components/Checkbox/style.js +2 -2
  138. package/components/Checkbox/style.js.map +1 -1
  139. package/components/Checkbox/style.mjs +2 -2
  140. package/components/Checkbox/style.mjs.map +1 -1
  141. package/components/Chip/Chip.js +1 -1
  142. package/components/Chip/Chip.js.map +1 -1
  143. package/components/Chip/Chip.mjs +1 -1
  144. package/components/Chip/Chip.mjs.map +1 -1
  145. package/components/Chip/sizes.js +2 -0
  146. package/components/Chip/sizes.js.map +1 -0
  147. package/components/Chip/sizes.mjs +2 -0
  148. package/components/Chip/sizes.mjs.map +1 -0
  149. package/components/Chip/style.js +1 -1
  150. package/components/Chip/style.js.map +1 -1
  151. package/components/Chip/style.mjs +1 -1
  152. package/components/Chip/style.mjs.map +1 -1
  153. package/components/Container/style.js +1 -1
  154. package/components/Container/style.js.map +1 -1
  155. package/components/Container/style.mjs +1 -1
  156. package/components/Container/style.mjs.map +1 -1
  157. package/components/ContextMenu/ContextMenu.js +1 -1
  158. package/components/ContextMenu/ContextMenu.js.map +1 -1
  159. package/components/ContextMenu/ContextMenu.mjs +1 -1
  160. package/components/ContextMenu/ContextMenu.mjs.map +1 -1
  161. package/components/ContextMenu/style.js +1 -1
  162. package/components/ContextMenu/style.js.map +1 -1
  163. package/components/ContextMenu/style.mjs +1 -1
  164. package/components/ContextMenu/style.mjs.map +1 -1
  165. package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.js +1 -1
  166. package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.js.map +1 -1
  167. package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.mjs +1 -1
  168. package/components/ContextMenu.Multilevel/ContextMenu.Multilevel.mjs.map +1 -1
  169. package/components/ContextMenu.Multilevel/style.js +1 -1
  170. package/components/ContextMenu.Multilevel/style.js.map +1 -1
  171. package/components/ContextMenu.Multilevel/style.mjs +1 -1
  172. package/components/ContextMenu.Multilevel/style.mjs.map +1 -1
  173. package/components/Dialog/Dialog.js +1 -1
  174. package/components/Dialog/Dialog.js.map +1 -1
  175. package/components/Dialog/Dialog.mjs +1 -1
  176. package/components/Dialog/Dialog.mjs.map +1 -1
  177. package/components/Dialog/style.js +1 -1
  178. package/components/Dialog/style.js.map +1 -1
  179. package/components/Dialog/style.mjs +1 -1
  180. package/components/Dialog/style.mjs.map +1 -1
  181. package/components/DialogComponent/DialogComponent.js +1 -1
  182. package/components/DialogComponent/DialogComponent.js.map +1 -1
  183. package/components/DialogComponent/DialogComponent.mjs +1 -1
  184. package/components/DialogComponent/DialogComponent.mjs.map +1 -1
  185. package/components/DialogComponent/Header.js +1 -1
  186. package/components/DialogComponent/Header.js.map +1 -1
  187. package/components/DialogComponent/Header.mjs +1 -1
  188. package/components/DialogComponent/Header.mjs.map +1 -1
  189. package/components/DialogComponent/images/dragging.svg.js +1 -1
  190. package/components/DialogComponent/images/dragging.svg.js.map +1 -1
  191. package/components/DialogComponent/style.js +1 -1
  192. package/components/DialogComponent/style.js.map +1 -1
  193. package/components/DialogComponent/style.mjs +1 -1
  194. package/components/DialogComponent/style.mjs.map +1 -1
  195. package/components/Divider/Divider.js +1 -1
  196. package/components/Divider/Divider.js.map +1 -1
  197. package/components/Divider/Divider.mjs +1 -1
  198. package/components/Divider/Divider.mjs.map +1 -1
  199. package/components/Divider/style.js +1 -1
  200. package/components/Divider/style.js.map +1 -1
  201. package/components/Divider/style.mjs +1 -1
  202. package/components/Divider/style.mjs.map +1 -1
  203. package/components/Dropdown/Dropdown.js +1 -1
  204. package/components/Dropdown/Dropdown.js.map +1 -1
  205. package/components/Dropdown/Dropdown.mjs +1 -1
  206. package/components/Dropdown/Dropdown.mjs.map +1 -1
  207. package/components/Dropdown/DropdownListItem.js +1 -1
  208. package/components/Dropdown/DropdownListItem.js.map +1 -1
  209. package/components/Dropdown/DropdownListItem.mjs +1 -1
  210. package/components/Dropdown/DropdownListItem.mjs.map +1 -1
  211. package/components/Dropdown/DropdownMenu.js +1 -1
  212. package/components/Dropdown/DropdownMenu.js.map +1 -1
  213. package/components/Dropdown/DropdownMenu.mjs +1 -1
  214. package/components/Dropdown/DropdownMenu.mjs.map +1 -1
  215. package/components/Dropdown/DropdownMenuMultiple.js +1 -1
  216. package/components/Dropdown/DropdownMenuMultiple.js.map +1 -1
  217. package/components/Dropdown/DropdownMenuMultiple.mjs +1 -1
  218. package/components/Dropdown/DropdownMenuMultiple.mjs.map +1 -1
  219. package/components/Dropdown/DropdownMenuNoOptions.js.map +1 -1
  220. package/components/Dropdown/DropdownMenuNoOptions.mjs.map +1 -1
  221. package/components/Dropdown/DropdownMenuSingle.js +1 -1
  222. package/components/Dropdown/DropdownMenuSingle.js.map +1 -1
  223. package/components/Dropdown/DropdownMenuSingle.mjs +1 -1
  224. package/components/Dropdown/DropdownMenuSingle.mjs.map +1 -1
  225. package/components/Dropdown/hooks.js +1 -1
  226. package/components/Dropdown/hooks.js.map +1 -1
  227. package/components/Dropdown/hooks.mjs +1 -1
  228. package/components/Dropdown/hooks.mjs.map +1 -1
  229. package/components/Dropdown/renderDropdownOptionsList.js +1 -1
  230. package/components/Dropdown/renderDropdownOptionsList.js.map +1 -1
  231. package/components/Dropdown/renderDropdownOptionsList.mjs +1 -1
  232. package/components/Dropdown/renderDropdownOptionsList.mjs.map +1 -1
  233. package/components/Dropdown/style.js +1 -1
  234. package/components/Dropdown/style.js.map +1 -1
  235. package/components/Dropdown/style.mjs +1 -1
  236. package/components/Dropdown/style.mjs.map +1 -1
  237. package/components/Dropdown/utils.js +1 -1
  238. package/components/Dropdown/utils.js.map +1 -1
  239. package/components/Dropdown/utils.mjs +1 -1
  240. package/components/Dropdown/utils.mjs.map +1 -1
  241. package/components/FormInput/FormInput.js +1 -1
  242. package/components/FormInput/FormInput.js.map +1 -1
  243. package/components/FormInput/FormInput.mjs +1 -1
  244. package/components/FormInput/FormInput.mjs.map +1 -1
  245. package/components/FormInput/style.js +1 -1
  246. package/components/FormInput/style.js.map +1 -1
  247. package/components/FormInput/style.mjs +1 -1
  248. package/components/FormInput/style.mjs.map +1 -1
  249. package/components/FormInputLabel/FormInputLabel.js +1 -1
  250. package/components/FormInputLabel/FormInputLabel.js.map +1 -1
  251. package/components/FormInputLabel/FormInputLabel.mjs +1 -1
  252. package/components/FormInputLabel/FormInputLabel.mjs.map +1 -1
  253. package/components/FormInputLabel/style.js +1 -1
  254. package/components/FormInputLabel/style.js.map +1 -1
  255. package/components/FormInputLabel/style.mjs +1 -1
  256. package/components/FormInputLabel/style.mjs.map +1 -1
  257. package/components/FormLabel/FormLabel.js +1 -1
  258. package/components/FormLabel/FormLabel.js.map +1 -1
  259. package/components/FormLabel/FormLabel.mjs +1 -1
  260. package/components/FormLabel/FormLabel.mjs.map +1 -1
  261. package/components/FormLabel/constants.js +1 -1
  262. package/components/FormLabel/constants.js.map +1 -1
  263. package/components/FormLabel/constants.mjs +1 -1
  264. package/components/FormLabel/constants.mjs.map +1 -1
  265. package/components/FormLabel/style.js +1 -1
  266. package/components/FormLabel/style.js.map +1 -1
  267. package/components/FormLabel/style.mjs +1 -1
  268. package/components/FormLabel/style.mjs.map +1 -1
  269. package/components/Icon/Icon.js +1 -1
  270. package/components/Icon/Icon.js.map +1 -1
  271. package/components/Icon/Icon.mjs +1 -1
  272. package/components/Icon/Icon.mjs.map +1 -1
  273. package/components/Icon/iconPack.js +1 -1
  274. package/components/Icon/iconPack.js.map +1 -1
  275. package/components/Icon/iconPack.mjs +1 -1
  276. package/components/Icon/iconPack.mjs.map +1 -1
  277. package/components/Icon/images/blackBoard_default.svg.js +1 -1
  278. package/components/Icon/images/blackBoard_default.svg.js.map +1 -1
  279. package/components/Icon/images/book_default.svg.js +1 -1
  280. package/components/Icon/images/book_default.svg.js.map +1 -1
  281. package/components/Icon/images/burger_default.svg.js +1 -1
  282. package/components/Icon/images/burger_default.svg.js.map +1 -1
  283. package/components/Icon/images/calendar_default.svg.js +1 -1
  284. package/components/Icon/images/calendar_default.svg.js.map +1 -1
  285. package/components/Icon/images/calendar_simple_default.svg.js +1 -1
  286. package/components/Icon/images/calendar_simple_default.svg.js.map +1 -1
  287. package/components/Icon/images/camps_default.svg.js +1 -1
  288. package/components/Icon/images/camps_default.svg.js.map +1 -1
  289. package/components/Icon/images/cancel_default.svg.js +1 -1
  290. package/components/Icon/images/cancel_default.svg.js.map +1 -1
  291. package/components/Icon/images/cart_default.svg.js +1 -1
  292. package/components/Icon/images/cart_default.svg.js.map +1 -1
  293. package/components/Icon/images/checkCircle_default.svg.js +1 -1
  294. package/components/Icon/images/checkCircle_default.svg.js.map +1 -1
  295. package/components/Icon/images/check_default.svg.js +1 -1
  296. package/components/Icon/images/check_default.svg.js.map +1 -1
  297. package/components/Icon/images/chevronDown_default.svg.js +1 -1
  298. package/components/Icon/images/chevronDown_default.svg.js.map +1 -1
  299. package/components/Icon/images/chevronLeft_default.svg.js +1 -1
  300. package/components/Icon/images/chevronLeft_default.svg.js.map +1 -1
  301. package/components/Icon/images/chevronRight_default.svg.js +1 -1
  302. package/components/Icon/images/chevronRight_default.svg.js.map +1 -1
  303. package/components/Icon/images/chevronUp_default.svg.js +1 -1
  304. package/components/Icon/images/chevronUp_default.svg.js.map +1 -1
  305. package/components/Icon/images/clockFilled_default.svg.js +1 -1
  306. package/components/Icon/images/clockFilled_default.svg.js.map +1 -1
  307. package/components/Icon/images/clock_default.svg.js +1 -1
  308. package/components/Icon/images/clock_default.svg.js.map +1 -1
  309. package/components/Icon/images/coins_default.svg.js +1 -1
  310. package/components/Icon/images/coins_default.svg.js.map +1 -1
  311. package/components/Icon/images/copy_default.svg.js +1 -1
  312. package/components/Icon/images/copy_default.svg.js.map +1 -1
  313. package/components/Icon/images/courses_default.svg.js +1 -1
  314. package/components/Icon/images/courses_default.svg.js.map +1 -1
  315. package/components/Icon/images/cross_default.svg.js +1 -1
  316. package/components/Icon/images/cross_default.svg.js.map +1 -1
  317. package/components/Icon/images/dialog_default.svg.js +1 -1
  318. package/components/Icon/images/dialog_default.svg.js.map +1 -1
  319. package/components/Icon/images/diamondFilled_default.svg.js +1 -1
  320. package/components/Icon/images/diamondFilled_default.svg.js.map +1 -1
  321. package/components/Icon/images/diamond_default.svg.js +1 -1
  322. package/components/Icon/images/diamond_default.svg.js.map +1 -1
  323. package/components/Icon/images/discount_default.svg.js +1 -1
  324. package/components/Icon/images/discount_default.svg.js.map +1 -1
  325. package/components/Icon/images/document_default.svg.js +1 -1
  326. package/components/Icon/images/document_default.svg.js.map +1 -1
  327. package/components/Icon/images/dropDownArrow_default.svg.js +1 -1
  328. package/components/Icon/images/dropDownArrow_default.svg.js.map +1 -1
  329. package/components/Icon/images/edit_default.svg.js +1 -1
  330. package/components/Icon/images/edit_default.svg.js.map +1 -1
  331. package/components/Icon/images/email_default.svg.js +1 -1
  332. package/components/Icon/images/email_default.svg.js.map +1 -1
  333. package/components/Icon/images/externalLink_default.svg.js +1 -1
  334. package/components/Icon/images/externalLink_default.svg.js.map +1 -1
  335. package/components/Icon/images/externat_default.svg.js +1 -1
  336. package/components/Icon/images/externat_default.svg.js.map +1 -1
  337. package/components/Icon/images/eye_default.svg.js +1 -1
  338. package/components/Icon/images/eye_default.svg.js.map +1 -1
  339. package/components/Icon/images/fileBordered_default.svg.js +1 -1
  340. package/components/Icon/images/fileBordered_default.svg.js.map +1 -1
  341. package/components/Icon/images/file_default.svg.js +1 -1
  342. package/components/Icon/images/file_default.svg.js.map +1 -1
  343. package/components/Icon/images/fire_default.svg.js +1 -1
  344. package/components/Icon/images/fire_default.svg.js.map +1 -1
  345. package/components/Icon/images/headphones_default.svg.js +1 -1
  346. package/components/Icon/images/headphones_default.svg.js.map +1 -1
  347. package/components/Icon/images/home_default.svg.js +1 -1
  348. package/components/Icon/images/home_default.svg.js.map +1 -1
  349. package/components/Icon/images/infoInverse_default.svg.js +1 -1
  350. package/components/Icon/images/infoInverse_default.svg.js.map +1 -1
  351. package/components/Icon/images/info_default.svg.js +1 -1
  352. package/components/Icon/images/info_default.svg.js.map +1 -1
  353. package/components/Icon/images/lessons_default.svg.js +1 -1
  354. package/components/Icon/images/lessons_default.svg.js.map +1 -1
  355. package/components/Icon/images/list_default.svg.js +1 -1
  356. package/components/Icon/images/list_default.svg.js.map +1 -1
  357. package/components/Icon/images/login_default.svg.js +1 -1
  358. package/components/Icon/images/login_default.svg.js.map +1 -1
  359. package/components/Icon/images/logout_default.svg.js +1 -1
  360. package/components/Icon/images/logout_default.svg.js.map +1 -1
  361. package/components/Icon/images/message_default.svg.js +1 -1
  362. package/components/Icon/images/message_default.svg.js.map +1 -1
  363. package/components/Icon/images/objective_default.svg.js +1 -1
  364. package/components/Icon/images/objective_default.svg.js.map +1 -1
  365. package/components/Icon/images/page_default.svg.js +1 -1
  366. package/components/Icon/images/page_default.svg.js.map +1 -1
  367. package/components/Icon/images/pencil_default.svg.js +1 -1
  368. package/components/Icon/images/pencil_default.svg.js.map +1 -1
  369. package/components/Icon/images/person_default.svg.js +1 -1
  370. package/components/Icon/images/person_default.svg.js.map +1 -1
  371. package/components/Icon/images/phoneNoFill_default.svg.js +1 -1
  372. package/components/Icon/images/phoneNoFill_default.svg.js.map +1 -1
  373. package/components/Icon/images/phone_default.svg.js +1 -1
  374. package/components/Icon/images/phone_default.svg.js.map +1 -1
  375. package/components/Icon/images/playPause_default.svg.js +1 -1
  376. package/components/Icon/images/playPause_default.svg.js.map +1 -1
  377. package/components/Icon/images/play_default.svg.js +1 -1
  378. package/components/Icon/images/play_default.svg.js.map +1 -1
  379. package/components/Icon/images/plusThin_default.svg.js +1 -1
  380. package/components/Icon/images/plusThin_default.svg.js.map +1 -1
  381. package/components/Icon/images/plus_default.svg.js +1 -1
  382. package/components/Icon/images/plus_default.svg.js.map +1 -1
  383. package/components/Icon/images/present_default.svg.js +1 -1
  384. package/components/Icon/images/present_default.svg.js.map +1 -1
  385. package/components/Icon/images/priceTag_default.svg.js +1 -1
  386. package/components/Icon/images/priceTag_default.svg.js.map +1 -1
  387. package/components/Icon/images/print_default.svg.js +1 -1
  388. package/components/Icon/images/print_default.svg.js.map +1 -1
  389. package/components/Icon/images/prof_default.svg.js +1 -1
  390. package/components/Icon/images/prof_default.svg.js.map +1 -1
  391. package/components/Icon/images/questionFilled_default.svg.js +1 -1
  392. package/components/Icon/images/questionFilled_default.svg.js.map +1 -1
  393. package/components/Icon/images/radioChecked_default.svg.js +1 -1
  394. package/components/Icon/images/radioChecked_default.svg.js.map +1 -1
  395. package/components/Icon/images/radioNotChecked_default.svg.js +1 -1
  396. package/components/Icon/images/radioNotChecked_default.svg.js.map +1 -1
  397. package/components/Icon/images/reload_default.svg.js +1 -1
  398. package/components/Icon/images/reload_default.svg.js.map +1 -1
  399. package/components/Icon/images/search_default.svg.js +1 -1
  400. package/components/Icon/images/search_default.svg.js.map +1 -1
  401. package/components/Icon/images/settings_default.svg.js +1 -1
  402. package/components/Icon/images/settings_default.svg.js.map +1 -1
  403. package/components/Icon/images/sharpCross_default.svg.js +1 -1
  404. package/components/Icon/images/sharpCross_default.svg.js.map +1 -1
  405. package/components/Icon/images/sort_default.svg.js +1 -1
  406. package/components/Icon/images/sort_default.svg.js.map +1 -1
  407. package/components/Icon/images/star_default.svg.js +1 -1
  408. package/components/Icon/images/star_default.svg.js.map +1 -1
  409. package/components/Icon/images/student_default.svg.js +1 -1
  410. package/components/Icon/images/student_default.svg.js.map +1 -1
  411. package/components/Icon/images/target_default.svg.js +1 -1
  412. package/components/Icon/images/target_default.svg.js.map +1 -1
  413. package/components/Icon/images/tasks_default.svg.js +1 -1
  414. package/components/Icon/images/tasks_default.svg.js.map +1 -1
  415. package/components/Icon/images/textbook_default.svg.js +1 -1
  416. package/components/Icon/images/textbook_default.svg.js.map +1 -1
  417. package/components/Icon/images/tinyCross_default.svg.js +1 -1
  418. package/components/Icon/images/tinyCross_default.svg.js.map +1 -1
  419. package/components/Icon/images/trophy_default.svg.js +1 -1
  420. package/components/Icon/images/trophy_default.svg.js.map +1 -1
  421. package/components/Icon/images/unsort_default.svg.js +1 -1
  422. package/components/Icon/images/unsort_default.svg.js.map +1 -1
  423. package/components/Icon/images/video_default.svg.js +1 -1
  424. package/components/Icon/images/video_default.svg.js.map +1 -1
  425. package/components/Icon/images/wallet_default.svg.js +1 -1
  426. package/components/Icon/images/wallet_default.svg.js.map +1 -1
  427. package/components/Icon/style.js +1 -1
  428. package/components/Icon/style.js.map +1 -1
  429. package/components/Icon/style.mjs +1 -1
  430. package/components/Icon/style.mjs.map +1 -1
  431. package/components/IconButton/IconButton.js +1 -1
  432. package/components/IconButton/IconButton.js.map +1 -1
  433. package/components/IconButton/IconButton.mjs +1 -1
  434. package/components/IconButton/IconButton.mjs.map +1 -1
  435. package/components/IconButton/sizes.js +1 -1
  436. package/components/IconButton/sizes.js.map +1 -1
  437. package/components/IconButton/sizes.mjs +1 -1
  438. package/components/IconButton/sizes.mjs.map +1 -1
  439. package/components/IconButton/style.js +1 -1
  440. package/components/IconButton/style.js.map +1 -1
  441. package/components/IconButton/style.mjs +1 -1
  442. package/components/IconButton/style.mjs.map +1 -1
  443. package/components/Indicator/Indicator.js +1 -1
  444. package/components/Indicator/Indicator.js.map +1 -1
  445. package/components/Indicator/Indicator.mjs +1 -1
  446. package/components/Indicator/Indicator.mjs.map +1 -1
  447. package/components/Indicator/constants.js +1 -1
  448. package/components/Indicator/constants.js.map +1 -1
  449. package/components/Indicator/constants.mjs +1 -1
  450. package/components/Indicator/constants.mjs.map +1 -1
  451. package/components/Indicator/style.js +1 -1
  452. package/components/Indicator/style.js.map +1 -1
  453. package/components/Indicator/style.mjs +1 -1
  454. package/components/Indicator/style.mjs.map +1 -1
  455. package/components/Input/Input.js +1 -1
  456. package/components/Input/Input.js.map +1 -1
  457. package/components/Input/Input.mjs +1 -1
  458. package/components/Input/Input.mjs.map +1 -1
  459. package/components/Input/style.js +1 -1
  460. package/components/Input/style.js.map +1 -1
  461. package/components/Input/style.mjs +1 -1
  462. package/components/Input/style.mjs.map +1 -1
  463. package/components/Input.Phone/Input.Phone.js.map +1 -1
  464. package/components/Input.Phone/Input.Phone.mjs.map +1 -1
  465. package/components/InputCheckbox/InputCheckbox.js +1 -1
  466. package/components/InputCheckbox/InputCheckbox.js.map +1 -1
  467. package/components/InputCheckbox/InputCheckbox.mjs +1 -1
  468. package/components/InputCheckbox/InputCheckbox.mjs.map +1 -1
  469. package/components/InputCheckbox/style.js +1 -1
  470. package/components/InputCheckbox/style.js.map +1 -1
  471. package/components/InputCheckbox/style.mjs +1 -1
  472. package/components/InputCheckbox/style.mjs.map +1 -1
  473. package/components/InputLabel/InputLabel.js +1 -1
  474. package/components/InputLabel/InputLabel.js.map +1 -1
  475. package/components/InputLabel/InputLabel.mjs +1 -1
  476. package/components/InputLabel/InputLabel.mjs.map +1 -1
  477. package/components/InputLabel/style.js +1 -1
  478. package/components/InputLabel/style.js.map +1 -1
  479. package/components/InputLabel/style.mjs +1 -1
  480. package/components/InputLabel/style.mjs.map +1 -1
  481. package/components/InputRadio/InputRadio.js +1 -1
  482. package/components/InputRadio/InputRadio.js.map +1 -1
  483. package/components/InputRadio/InputRadio.mjs +1 -1
  484. package/components/InputRadio/InputRadio.mjs.map +1 -1
  485. package/components/InputRadio/style.js +1 -1
  486. package/components/InputRadio/style.js.map +1 -1
  487. package/components/InputRadio/style.mjs +1 -1
  488. package/components/InputRadio/style.mjs.map +1 -1
  489. package/components/ListItem/ListItem.js +1 -1
  490. package/components/ListItem/ListItem.js.map +1 -1
  491. package/components/ListItem/ListItem.mjs +1 -1
  492. package/components/ListItem/ListItem.mjs.map +1 -1
  493. package/components/ListItem/sizes.js +2 -0
  494. package/components/ListItem/sizes.js.map +1 -0
  495. package/components/ListItem/sizes.mjs +2 -0
  496. package/components/ListItem/sizes.mjs.map +1 -0
  497. package/components/ListItem/style.js +1 -1
  498. package/components/ListItem/style.js.map +1 -1
  499. package/components/ListItem/style.mjs +1 -1
  500. package/components/ListItem/style.mjs.map +1 -1
  501. package/components/Media/Media.js +1 -1
  502. package/components/Media/Media.js.map +1 -1
  503. package/components/Media/Media.mjs +1 -1
  504. package/components/Media/Media.mjs.map +1 -1
  505. package/components/Media/MediaMatcher.js +1 -1
  506. package/components/Media/MediaMatcher.js.map +1 -1
  507. package/components/Media/MediaMatcher.mjs +1 -1
  508. package/components/Media/MediaMatcher.mjs.map +1 -1
  509. package/components/Media/MediaMatchers.js.map +1 -1
  510. package/components/Media/MediaMatchers.mjs.map +1 -1
  511. package/components/Media/context.js.map +1 -1
  512. package/components/Media/context.mjs.map +1 -1
  513. package/components/Media/useMediaConnector.js +1 -1
  514. package/components/Media/useMediaConnector.js.map +1 -1
  515. package/components/Media/useMediaConnector.mjs +1 -1
  516. package/components/Media/useMediaConnector.mjs.map +1 -1
  517. package/components/Menu/Menu.js +1 -1
  518. package/components/Menu/Menu.js.map +1 -1
  519. package/components/Menu/Menu.mjs +1 -1
  520. package/components/Menu/Menu.mjs.map +1 -1
  521. package/components/MenuComponent/MenuComponent.js +1 -1
  522. package/components/MenuComponent/MenuComponent.js.map +1 -1
  523. package/components/MenuComponent/MenuComponent.mjs +1 -1
  524. package/components/MenuComponent/MenuComponent.mjs.map +1 -1
  525. package/components/MenuComponent/style.js +1 -1
  526. package/components/MenuComponent/style.js.map +1 -1
  527. package/components/MenuComponent/style.mjs +1 -1
  528. package/components/MenuComponent/style.mjs.map +1 -1
  529. package/components/MenuContainer/MenuContainer.js +1 -1
  530. package/components/MenuContainer/MenuContainer.js.map +1 -1
  531. package/components/MenuContainer/MenuContainer.mjs +1 -1
  532. package/components/MenuContainer/MenuContainer.mjs.map +1 -1
  533. package/components/MenuDivider/MenuDivider.js +1 -1
  534. package/components/MenuDivider/MenuDivider.js.map +1 -1
  535. package/components/MenuDivider/MenuDivider.mjs +1 -1
  536. package/components/MenuDivider/MenuDivider.mjs.map +1 -1
  537. package/components/MenuDivider/style.js +1 -1
  538. package/components/MenuDivider/style.js.map +1 -1
  539. package/components/MenuDivider/style.mjs +1 -1
  540. package/components/MenuDivider/style.mjs.map +1 -1
  541. package/components/MenuList/MenuList.js +1 -1
  542. package/components/MenuList/MenuList.js.map +1 -1
  543. package/components/MenuList/MenuList.mjs +1 -1
  544. package/components/MenuList/MenuList.mjs.map +1 -1
  545. package/components/MenuList/style.js +1 -1
  546. package/components/MenuList/style.js.map +1 -1
  547. package/components/MenuList/style.mjs +1 -1
  548. package/components/MenuList/style.mjs.map +1 -1
  549. package/components/Modal/adapter.js.map +1 -1
  550. package/components/Modal/adapter.mjs.map +1 -1
  551. package/components/Modal/images/tinyCrossDefault.svg.js +1 -1
  552. package/components/Modal/images/tinyCrossDefault.svg.js.map +1 -1
  553. package/components/Modal/style.js +1 -1
  554. package/components/Modal/style.js.map +1 -1
  555. package/components/Modal/style.mjs +1 -1
  556. package/components/Modal/style.mjs.map +1 -1
  557. package/components/Notification/Notification.js +1 -1
  558. package/components/Notification/Notification.js.map +1 -1
  559. package/components/Notification/Notification.mjs +1 -1
  560. package/components/Notification/Notification.mjs.map +1 -1
  561. package/components/Notification/style.js +1 -1
  562. package/components/Notification/style.js.map +1 -1
  563. package/components/Notification/style.mjs +1 -1
  564. package/components/Notification/style.mjs.map +1 -1
  565. package/components/Paper/style.js +1 -1
  566. package/components/Paper/style.js.map +1 -1
  567. package/components/Paper/style.mjs +1 -1
  568. package/components/Paper/style.mjs.map +1 -1
  569. package/components/Popover/Popover.js +1 -1
  570. package/components/Popover/Popover.js.map +1 -1
  571. package/components/Popover/Popover.mjs +1 -1
  572. package/components/Popover/Popover.mjs.map +1 -1
  573. package/components/PopoverComponent/PopoverComponent.js +1 -1
  574. package/components/PopoverComponent/PopoverComponent.js.map +1 -1
  575. package/components/PopoverComponent/PopoverComponent.mjs +1 -1
  576. package/components/PopoverComponent/PopoverComponent.mjs.map +1 -1
  577. package/components/PopoverComponent/style.js +1 -1
  578. package/components/PopoverComponent/style.js.map +1 -1
  579. package/components/PopoverComponent/style.mjs +1 -1
  580. package/components/PopoverComponent/style.mjs.map +1 -1
  581. package/components/Progress/style.js +1 -1
  582. package/components/Progress/style.js.map +1 -1
  583. package/components/Progress/style.mjs +1 -1
  584. package/components/Progress/style.mjs.map +1 -1
  585. package/components/Progress.Circle/Progress.Circle.js.map +1 -1
  586. package/components/Progress.Circle/Progress.Circle.mjs.map +1 -1
  587. package/components/Progress.Circle/style.js +1 -1
  588. package/components/Progress.Circle/style.js.map +1 -1
  589. package/components/Progress.Circle/style.mjs +1 -1
  590. package/components/Progress.Circle/style.mjs.map +1 -1
  591. package/components/Progress.Segmented/Progress.Segmented.js +1 -1
  592. package/components/Progress.Segmented/Progress.Segmented.js.map +1 -1
  593. package/components/Progress.Segmented/Progress.Segmented.mjs +1 -1
  594. package/components/Progress.Segmented/Progress.Segmented.mjs.map +1 -1
  595. package/components/Progress.Segmented/style.js +1 -1
  596. package/components/Progress.Segmented/style.js.map +1 -1
  597. package/components/Progress.Segmented/style.mjs +1 -1
  598. package/components/Progress.Segmented/style.mjs.map +1 -1
  599. package/components/ProgressCircle/ProgressCircle.js +1 -1
  600. package/components/ProgressCircle/ProgressCircle.js.map +1 -1
  601. package/components/ProgressCircle/ProgressCircle.mjs +1 -1
  602. package/components/ProgressCircle/ProgressCircle.mjs.map +1 -1
  603. package/components/ProgressCircle/style.js +1 -1
  604. package/components/ProgressCircle/style.js.map +1 -1
  605. package/components/ProgressCircle/style.mjs +1 -1
  606. package/components/ProgressCircle/style.mjs.map +1 -1
  607. package/components/ProgressLine/ProgressLine.js +1 -1
  608. package/components/ProgressLine/ProgressLine.js.map +1 -1
  609. package/components/ProgressLine/ProgressLine.mjs +1 -1
  610. package/components/ProgressLine/ProgressLine.mjs.map +1 -1
  611. package/components/ProgressLine/style.js +1 -1
  612. package/components/ProgressLine/style.js.map +1 -1
  613. package/components/ProgressLine/style.mjs +1 -1
  614. package/components/ProgressLine/style.mjs.map +1 -1
  615. package/components/Radio/style.js +2 -2
  616. package/components/Radio/style.js.map +1 -1
  617. package/components/Radio/style.mjs +2 -2
  618. package/components/Radio/style.mjs.map +1 -1
  619. package/components/Scrollable/Scrollable.js.map +1 -1
  620. package/components/Scrollable/Scrollable.mjs.map +1 -1
  621. package/components/Section/style.js +1 -1
  622. package/components/Section/style.js.map +1 -1
  623. package/components/Section/style.mjs +1 -1
  624. package/components/Section/style.mjs.map +1 -1
  625. package/components/Select/style.js +1 -1
  626. package/components/Select/style.js.map +1 -1
  627. package/components/Select/style.mjs +1 -1
  628. package/components/Select/style.mjs.map +1 -1
  629. package/components/Separator/style.js +1 -1
  630. package/components/Separator/style.js.map +1 -1
  631. package/components/Separator/style.mjs +1 -1
  632. package/components/Separator/style.mjs.map +1 -1
  633. package/components/Skeleton/Skeleton.js +1 -1
  634. package/components/Skeleton/Skeleton.js.map +1 -1
  635. package/components/Skeleton/Skeleton.mjs +1 -1
  636. package/components/Skeleton/Skeleton.mjs.map +1 -1
  637. package/components/Skeleton/style.js +1 -1
  638. package/components/Skeleton/style.js.map +1 -1
  639. package/components/Skeleton/style.mjs +1 -1
  640. package/components/Skeleton/style.mjs.map +1 -1
  641. package/components/Slot/Slot.js +1 -1
  642. package/components/Slot/Slot.js.map +1 -1
  643. package/components/Slot/Slot.mjs +1 -1
  644. package/components/Slot/Slot.mjs.map +1 -1
  645. package/components/Spacer/style.js +1 -1
  646. package/components/Spacer/style.js.map +1 -1
  647. package/components/Spacer/style.mjs +1 -1
  648. package/components/Spacer/style.mjs.map +1 -1
  649. package/components/Spinner/style.js +1 -1
  650. package/components/Spinner/style.js.map +1 -1
  651. package/components/Spinner/style.mjs +1 -1
  652. package/components/Spinner/style.mjs.map +1 -1
  653. package/components/Switch/Knob.js +1 -1
  654. package/components/Switch/Knob.js.map +1 -1
  655. package/components/Switch/Knob.mjs +1 -1
  656. package/components/Switch/Knob.mjs.map +1 -1
  657. package/components/Switch/Switch.js +1 -1
  658. package/components/Switch/Switch.js.map +1 -1
  659. package/components/Switch/Switch.mjs +1 -1
  660. package/components/Switch/Switch.mjs.map +1 -1
  661. package/components/Switch/style.js +1 -1
  662. package/components/Switch/style.js.map +1 -1
  663. package/components/Switch/style.mjs +1 -1
  664. package/components/Switch/style.mjs.map +1 -1
  665. package/components/Switcher/Switcher.js +1 -1
  666. package/components/Switcher/Switcher.js.map +1 -1
  667. package/components/Switcher/Switcher.mjs +1 -1
  668. package/components/Switcher/Switcher.mjs.map +1 -1
  669. package/components/Switcher/style.js +1 -1
  670. package/components/Switcher/style.js.map +1 -1
  671. package/components/Switcher/style.mjs +1 -1
  672. package/components/Switcher/style.mjs.map +1 -1
  673. package/components/Tab/Tab.js +1 -1
  674. package/components/Tab/Tab.js.map +1 -1
  675. package/components/Tab/Tab.mjs +1 -1
  676. package/components/Tab/Tab.mjs.map +1 -1
  677. package/components/Tab/images/arrow.svg.js +1 -1
  678. package/components/Tab/images/arrow.svg.js.map +1 -1
  679. package/components/Tab/style.js +1 -1
  680. package/components/Tab/style.js.map +1 -1
  681. package/components/Tab/style.mjs +1 -1
  682. package/components/Tab/style.mjs.map +1 -1
  683. package/components/TabList/TabList.js +1 -1
  684. package/components/TabList/TabList.js.map +1 -1
  685. package/components/TabList/TabList.mjs +1 -1
  686. package/components/TabList/TabList.mjs.map +1 -1
  687. package/components/TabList/TabListMenuTab.js +1 -1
  688. package/components/TabList/TabListMenuTab.js.map +1 -1
  689. package/components/TabList/TabListMenuTab.mjs +1 -1
  690. package/components/TabList/TabListMenuTab.mjs.map +1 -1
  691. package/components/TabList/TabListPanel.js +1 -1
  692. package/components/TabList/TabListPanel.js.map +1 -1
  693. package/components/TabList/TabListPanel.mjs +1 -1
  694. package/components/TabList/TabListPanel.mjs.map +1 -1
  695. package/components/TabList/hooks.js +1 -1
  696. package/components/TabList/hooks.js.map +1 -1
  697. package/components/TabList/hooks.mjs +1 -1
  698. package/components/TabList/hooks.mjs.map +1 -1
  699. package/components/TabList/style.js +1 -1
  700. package/components/TabList/style.js.map +1 -1
  701. package/components/TabList/style.mjs +1 -1
  702. package/components/TabList/style.mjs.map +1 -1
  703. package/components/TabListTab/TabListTab.js +1 -1
  704. package/components/TabListTab/TabListTab.js.map +1 -1
  705. package/components/TabListTab/TabListTab.mjs +1 -1
  706. package/components/TabListTab/TabListTab.mjs.map +1 -1
  707. package/components/TabListTab/hooks.js.map +1 -1
  708. package/components/TabListTab/hooks.mjs.map +1 -1
  709. package/components/TabListTab/style.js +1 -1
  710. package/components/TabListTab/style.js.map +1 -1
  711. package/components/TabListTab/style.mjs +1 -1
  712. package/components/TabListTab/style.mjs.map +1 -1
  713. package/components/Tabs/style.js +1 -1
  714. package/components/Tabs/style.js.map +1 -1
  715. package/components/Tabs/style.mjs +1 -1
  716. package/components/Tabs/style.mjs.map +1 -1
  717. package/components/Tag/style.js +1 -1
  718. package/components/Tag/style.js.map +1 -1
  719. package/components/Tag/style.mjs +1 -1
  720. package/components/Tag/style.mjs.map +1 -1
  721. package/components/Text/Ellipsis.js +1 -1
  722. package/components/Text/Ellipsis.js.map +1 -1
  723. package/components/Text/Ellipsis.mjs +1 -1
  724. package/components/Text/Ellipsis.mjs.map +1 -1
  725. package/components/Text/Text.js +1 -1
  726. package/components/Text/Text.js.map +1 -1
  727. package/components/Text/Text.mjs +1 -1
  728. package/components/Text/Text.mjs.map +1 -1
  729. package/components/Text/style.js +1 -1
  730. package/components/Text/style.js.map +1 -1
  731. package/components/Text/style.mjs +1 -1
  732. package/components/Text/style.mjs.map +1 -1
  733. package/components/Text.Ellipse/Text.Ellipse.js +1 -1
  734. package/components/Text.Ellipse/Text.Ellipse.js.map +1 -1
  735. package/components/Text.Ellipse/Text.Ellipse.mjs +1 -1
  736. package/components/Text.Ellipse/Text.Ellipse.mjs.map +1 -1
  737. package/components/Text.Heading/Text.Heading.js.map +1 -1
  738. package/components/Text.Heading/Text.Heading.mjs.map +1 -1
  739. package/components/Textarea/Textarea.js +1 -1
  740. package/components/Textarea/Textarea.js.map +1 -1
  741. package/components/Textarea/Textarea.mjs +1 -1
  742. package/components/Textarea/Textarea.mjs.map +1 -1
  743. package/components/Textarea/style.js +1 -1
  744. package/components/Textarea/style.js.map +1 -1
  745. package/components/Textarea/style.mjs +1 -1
  746. package/components/Textarea/style.mjs.map +1 -1
  747. package/components/Tooltip/Tooltip.js +1 -1
  748. package/components/Tooltip/Tooltip.js.map +1 -1
  749. package/components/Tooltip/Tooltip.mjs +1 -1
  750. package/components/Tooltip/Tooltip.mjs.map +1 -1
  751. package/components/Tooltip/TooltipWrapper.js +1 -1
  752. package/components/Tooltip/TooltipWrapper.js.map +1 -1
  753. package/components/Tooltip/TooltipWrapper.mjs +1 -1
  754. package/components/Tooltip/TooltipWrapper.mjs.map +1 -1
  755. package/components/TooltipComponent/TooltipComponent.js +1 -1
  756. package/components/TooltipComponent/TooltipComponent.js.map +1 -1
  757. package/components/TooltipComponent/TooltipComponent.mjs +1 -1
  758. package/components/TooltipComponent/TooltipComponent.mjs.map +1 -1
  759. package/components/TooltipComponent/sizes.js +2 -0
  760. package/components/TooltipComponent/sizes.js.map +1 -0
  761. package/components/TooltipComponent/sizes.mjs +2 -0
  762. package/components/TooltipComponent/sizes.mjs.map +1 -0
  763. package/components/TooltipComponent/style.js +1 -1
  764. package/components/TooltipComponent/style.js.map +1 -1
  765. package/components/TooltipComponent/style.mjs +1 -1
  766. package/components/TooltipComponent/style.mjs.map +1 -1
  767. package/dts/index.d.ts +833 -460
  768. package/hocs/withMergedProps.js +1 -1
  769. package/hocs/withMergedProps.js.map +1 -1
  770. package/hocs/withMergedProps.mjs +1 -1
  771. package/hocs/withMergedProps.mjs.map +1 -1
  772. package/hocs/withTranslation.js +1 -1
  773. package/hocs/withTranslation.js.map +1 -1
  774. package/hocs/withTranslation.mjs +1 -1
  775. package/hocs/withTranslation.mjs.map +1 -1
  776. package/hooks/use-config-priority.js +1 -1
  777. package/hooks/use-config-priority.js.map +1 -1
  778. package/hooks/use-config-priority.mjs +1 -1
  779. package/hooks/use-config-priority.mjs.map +1 -1
  780. package/hooks/useClickOutside.js +1 -1
  781. package/hooks/useClickOutside.js.map +1 -1
  782. package/hooks/useClickOutside.mjs +1 -1
  783. package/hooks/useClickOutside.mjs.map +1 -1
  784. package/hooks/useFloaterPortal.js +1 -1
  785. package/hooks/useFloaterPortal.js.map +1 -1
  786. package/hooks/useFloaterPortal.mjs +1 -1
  787. package/hooks/useFloaterPortal.mjs.map +1 -1
  788. package/hooks/useKeyboardListener.js +1 -1
  789. package/hooks/useKeyboardListener.js.map +1 -1
  790. package/hooks/useKeyboardListener.mjs +1 -1
  791. package/hooks/useKeyboardListener.mjs.map +1 -1
  792. package/hooks/useMergedPalette.js +1 -1
  793. package/hooks/useMergedPalette.js.map +1 -1
  794. package/hooks/useMergedPalette.mjs +1 -1
  795. package/hooks/useMergedPalette.mjs.map +1 -1
  796. package/hooks/useMergedProps.js +1 -1
  797. package/hooks/useMergedProps.js.map +1 -1
  798. package/hooks/useMergedProps.mjs +1 -1
  799. package/hooks/useMergedProps.mjs.map +1 -1
  800. package/hooks/useMountedStatus.js +1 -1
  801. package/hooks/useMountedStatus.js.map +1 -1
  802. package/hooks/useMountedStatus.mjs +1 -1
  803. package/hooks/useMountedStatus.mjs.map +1 -1
  804. package/hooks/useResizable.js +1 -1
  805. package/hooks/useResizable.js.map +1 -1
  806. package/hooks/useResizable.mjs +1 -1
  807. package/hooks/useResizable.mjs.map +1 -1
  808. package/hooks/useResizeObserver.js +1 -1
  809. package/hooks/useResizeObserver.js.map +1 -1
  810. package/hooks/useResizeObserver.mjs +1 -1
  811. package/hooks/useResizeObserver.mjs.map +1 -1
  812. package/hooks/useScrollLock.js +1 -1
  813. package/hooks/useScrollLock.js.map +1 -1
  814. package/hooks/useScrollLock.mjs +1 -1
  815. package/hooks/useScrollLock.mjs.map +1 -1
  816. package/hooks/useScrollMonitor.js +1 -1
  817. package/hooks/useScrollMonitor.js.map +1 -1
  818. package/hooks/useScrollMonitor.mjs +1 -1
  819. package/hooks/useScrollMonitor.mjs.map +1 -1
  820. package/hooks/useScrollThresholds.js +1 -1
  821. package/hooks/useScrollThresholds.js.map +1 -1
  822. package/hooks/useScrollThresholds.mjs +1 -1
  823. package/hooks/useScrollThresholds.mjs.map +1 -1
  824. package/icon-pack/src/icons/ArrowUp/index.js +1 -1
  825. package/icon-pack/src/icons/ArrowUp/index.js.map +1 -1
  826. package/icon-pack/src/icons/ArrowUp/index.mjs +1 -1
  827. package/icon-pack/src/icons/ArrowUp/index.mjs.map +1 -1
  828. package/icon-pack/src/icons/CheckCircleFill/index.js +1 -1
  829. package/icon-pack/src/icons/CheckCircleFill/index.js.map +1 -1
  830. package/icon-pack/src/icons/CheckCircleFill/index.mjs +1 -1
  831. package/icon-pack/src/icons/CheckCircleFill/index.mjs.map +1 -1
  832. package/icon-pack/src/icons/CheckFill/index.js +1 -1
  833. package/icon-pack/src/icons/CheckFill/index.js.map +1 -1
  834. package/icon-pack/src/icons/CheckFill/index.mjs +1 -1
  835. package/icon-pack/src/icons/CheckFill/index.mjs.map +1 -1
  836. package/icon-pack/src/icons/ChevronDown/index.js +1 -1
  837. package/icon-pack/src/icons/ChevronDown/index.js.map +1 -1
  838. package/icon-pack/src/icons/ChevronDown/index.mjs +1 -1
  839. package/icon-pack/src/icons/ChevronDown/index.mjs.map +1 -1
  840. package/icon-pack/src/icons/ChevronLeft/index.js +1 -1
  841. package/icon-pack/src/icons/ChevronLeft/index.js.map +1 -1
  842. package/icon-pack/src/icons/ChevronLeft/index.mjs +1 -1
  843. package/icon-pack/src/icons/ChevronLeft/index.mjs.map +1 -1
  844. package/icon-pack/src/icons/ChevronRight/index.js +1 -1
  845. package/icon-pack/src/icons/ChevronRight/index.js.map +1 -1
  846. package/icon-pack/src/icons/ChevronRight/index.mjs +1 -1
  847. package/icon-pack/src/icons/ChevronRight/index.mjs.map +1 -1
  848. package/icon-pack/src/icons/Close/index.js +1 -1
  849. package/icon-pack/src/icons/Close/index.js.map +1 -1
  850. package/icon-pack/src/icons/Close/index.mjs +1 -1
  851. package/icon-pack/src/icons/Close/index.mjs.map +1 -1
  852. package/icon-pack/src/icons/CloseCirlceFill/index.js +1 -1
  853. package/icon-pack/src/icons/CloseCirlceFill/index.js.map +1 -1
  854. package/icon-pack/src/icons/CloseCirlceFill/index.mjs +1 -1
  855. package/icon-pack/src/icons/CloseCirlceFill/index.mjs.map +1 -1
  856. package/icon-pack/src/icons/HelpCircle/index.js +1 -1
  857. package/icon-pack/src/icons/HelpCircle/index.js.map +1 -1
  858. package/icon-pack/src/icons/HelpCircle/index.mjs +1 -1
  859. package/icon-pack/src/icons/HelpCircle/index.mjs.map +1 -1
  860. package/icon-pack/src/icons/InfoCircle/index.js +1 -1
  861. package/icon-pack/src/icons/InfoCircle/index.js.map +1 -1
  862. package/icon-pack/src/icons/InfoCircle/index.mjs +1 -1
  863. package/icon-pack/src/icons/InfoCircle/index.mjs.map +1 -1
  864. package/icon-pack/src/icons/LoaderFill/index.js +1 -1
  865. package/icon-pack/src/icons/LoaderFill/index.js.map +1 -1
  866. package/icon-pack/src/icons/LoaderFill/index.mjs +1 -1
  867. package/icon-pack/src/icons/LoaderFill/index.mjs.map +1 -1
  868. package/icon-pack/src/icons/Minus/index.js +1 -1
  869. package/icon-pack/src/icons/Minus/index.js.map +1 -1
  870. package/icon-pack/src/icons/Minus/index.mjs +1 -1
  871. package/icon-pack/src/icons/Minus/index.mjs.map +1 -1
  872. package/icon-pack/src/icons/MinusFill/index.js +1 -1
  873. package/icon-pack/src/icons/MinusFill/index.js.map +1 -1
  874. package/icon-pack/src/icons/MinusFill/index.mjs +1 -1
  875. package/icon-pack/src/icons/MinusFill/index.mjs.map +1 -1
  876. package/icon-pack/src/icons/NotifFill/index.js +1 -1
  877. package/icon-pack/src/icons/NotifFill/index.js.map +1 -1
  878. package/icon-pack/src/icons/NotifFill/index.mjs +1 -1
  879. package/icon-pack/src/icons/NotifFill/index.mjs.map +1 -1
  880. package/icon-pack/src/icons/Plus/index.js +1 -1
  881. package/icon-pack/src/icons/Plus/index.js.map +1 -1
  882. package/icon-pack/src/icons/Plus/index.mjs +1 -1
  883. package/icon-pack/src/icons/Plus/index.mjs.map +1 -1
  884. package/icon-pack/src/icons/PlusLarge/index.js +1 -1
  885. package/icon-pack/src/icons/PlusLarge/index.js.map +1 -1
  886. package/icon-pack/src/icons/PlusLarge/index.mjs +1 -1
  887. package/icon-pack/src/icons/PlusLarge/index.mjs.map +1 -1
  888. package/icon-pack/src/icons/Redo/index.js +1 -1
  889. package/icon-pack/src/icons/Redo/index.js.map +1 -1
  890. package/icon-pack/src/icons/Redo/index.mjs +1 -1
  891. package/icon-pack/src/icons/Redo/index.mjs.map +1 -1
  892. package/icon-pack/src/icons/ResizeHandle/index.js +1 -1
  893. package/icon-pack/src/icons/ResizeHandle/index.js.map +1 -1
  894. package/icon-pack/src/icons/ResizeHandle/index.mjs +1 -1
  895. package/icon-pack/src/icons/ResizeHandle/index.mjs.map +1 -1
  896. package/icon-pack/src/icons/StarFill/index.js +1 -1
  897. package/icon-pack/src/icons/StarFill/index.js.map +1 -1
  898. package/icon-pack/src/icons/StarFill/index.mjs +1 -1
  899. package/icon-pack/src/icons/StarFill/index.mjs.map +1 -1
  900. package/icon-pack/src/icons/WarningTriangleFill/index.js +1 -1
  901. package/icon-pack/src/icons/WarningTriangleFill/index.js.map +1 -1
  902. package/icon-pack/src/icons/WarningTriangleFill/index.mjs +1 -1
  903. package/icon-pack/src/icons/WarningTriangleFill/index.mjs.map +1 -1
  904. package/mixins/color.js.map +1 -1
  905. package/mixins/color.mjs.map +1 -1
  906. package/mixins/create-responsive-props.js +1 -1
  907. package/mixins/create-responsive-props.js.map +1 -1
  908. package/mixins/create-responsive-props.mjs +1 -1
  909. package/mixins/create-responsive-props.mjs.map +1 -1
  910. package/mixins/focus.js +1 -1
  911. package/mixins/focus.js.map +1 -1
  912. package/mixins/focus.mjs +1 -1
  913. package/mixins/focus.mjs.map +1 -1
  914. package/mixins/responsive-layout.js +1 -1
  915. package/mixins/responsive-layout.js.map +1 -1
  916. package/mixins/responsive-layout.mjs +1 -1
  917. package/mixins/responsive-layout.mjs.map +1 -1
  918. package/mixins/responsive-margin.js +1 -1
  919. package/mixins/responsive-margin.js.map +1 -1
  920. package/mixins/responsive-margin.mjs +1 -1
  921. package/mixins/responsive-margin.mjs.map +1 -1
  922. package/mixins/responsive-position.js +1 -1
  923. package/mixins/responsive-position.js.map +1 -1
  924. package/mixins/responsive-position.mjs +1 -1
  925. package/mixins/responsive-position.mjs.map +1 -1
  926. package/mixins/responsive-property.js +1 -1
  927. package/mixins/responsive-property.js.map +1 -1
  928. package/mixins/responsive-property.mjs +1 -1
  929. package/mixins/responsive-property.mjs.map +1 -1
  930. package/mixins/responsive-size.js +1 -1
  931. package/mixins/responsive-size.js.map +1 -1
  932. package/mixins/responsive-size.mjs +1 -1
  933. package/mixins/responsive-size.mjs.map +1 -1
  934. package/mixins/screen.js.map +1 -1
  935. package/mixins/screen.mjs.map +1 -1
  936. package/mixins/shared.js +1 -1
  937. package/mixins/shared.js.map +1 -1
  938. package/mixins/shared.mjs +1 -1
  939. package/mixins/shared.mjs.map +1 -1
  940. package/package.json +2 -2
  941. package/shared/resize-observer.js +1 -1
  942. package/shared/resize-observer.js.map +1 -1
  943. package/shared/resize-observer.mjs +1 -1
  944. package/shared/resize-observer.mjs.map +1 -1
  945. package/shared/utils/Observable.js +1 -1
  946. package/shared/utils/Observable.js.map +1 -1
  947. package/shared/utils/Observable.mjs +1 -1
  948. package/shared/utils/Observable.mjs.map +1 -1
  949. package/shared/utils/colors.js +1 -1
  950. package/shared/utils/colors.js.map +1 -1
  951. package/shared/utils/colors.mjs +1 -1
  952. package/shared/utils/colors.mjs.map +1 -1
  953. package/shared/utils/createPolymorphicComponentWithRef.js +2 -0
  954. package/shared/utils/createPolymorphicComponentWithRef.js.map +1 -0
  955. package/shared/utils/createPolymorphicComponentWithRef.mjs +2 -0
  956. package/shared/utils/createPolymorphicComponentWithRef.mjs.map +1 -0
  957. package/shared/utils/dom.js +1 -1
  958. package/shared/utils/dom.js.map +1 -1
  959. package/shared/utils/dom.mjs +1 -1
  960. package/shared/utils/dom.mjs.map +1 -1
  961. package/shared/utils/getDomTargets.js +1 -1
  962. package/shared/utils/getDomTargets.js.map +1 -1
  963. package/shared/utils/getDomTargets.mjs +1 -1
  964. package/shared/utils/getDomTargets.mjs.map +1 -1
  965. package/shared/utils/getProgressPercent.js.map +1 -1
  966. package/shared/utils/getProgressPercent.mjs.map +1 -1
  967. package/shared/utils/misc.js +1 -1
  968. package/shared/utils/misc.js.map +1 -1
  969. package/shared/utils/misc.mjs +1 -1
  970. package/shared/utils/misc.mjs.map +1 -1
  971. package/shared/utils/react.js +1 -1
  972. package/shared/utils/react.js.map +1 -1
  973. package/shared/utils/react.mjs +1 -1
  974. package/shared/utils/react.mjs.map +1 -1
  975. package/shared/utils/style.js +1 -1
  976. package/shared/utils/style.js.map +1 -1
  977. package/shared/utils/style.mjs +1 -1
  978. package/shared/utils/style.mjs.map +1 -1
  979. package/theme/global-styled.js +1 -1
  980. package/theme/global-styled.js.map +1 -1
  981. package/theme/global-styled.mjs +1 -1
  982. package/theme/global-styled.mjs.map +1 -1
  983. package/theme/theme-provider.js +1 -1
  984. package/theme/theme-provider.js.map +1 -1
  985. package/theme/theme-provider.mjs +1 -1
  986. package/theme/theme-provider.mjs.map +1 -1
  987. package/components/Chip/constants.js +0 -2
  988. package/components/Chip/constants.js.map +0 -1
  989. package/components/Chip/constants.mjs +0 -2
  990. package/components/Chip/constants.mjs.map +0 -1
  991. package/components/ListItem/constants.js +0 -2
  992. package/components/ListItem/constants.js.map +0 -1
  993. package/components/ListItem/constants.mjs +0 -2
  994. package/components/ListItem/constants.mjs.map +0 -1
  995. package/components/TooltipComponent/constants.js +0 -2
  996. package/components/TooltipComponent/constants.js.map +0 -1
  997. package/components/TooltipComponent/constants.mjs +0 -2
  998. package/components/TooltipComponent/constants.mjs.map +0 -1
  999. package/shared/utils/polymorphic.js +0 -2
  1000. package/shared/utils/polymorphic.js.map +0 -1
  1001. package/shared/utils/polymorphic.mjs +0 -2
  1002. package/shared/utils/polymorphic.mjs.map +0 -1
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var nanoid=require('nanoid');var withMergedProps=require('../../hocs/withMergedProps.js');var useScrollMonitor=require('../../hooks/useScrollMonitor.js');var dom=require('../../shared/utils/dom.js');var misc=require('../../shared/utils/misc.js');var constants=require('../../shared/constants.js');var DropdownMenu=require('./DropdownMenu.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var utils=require('./utils.js');var style=require('./style.js');var DropdownMenuMultiple=require('./DropdownMenuMultiple.js');var DropdownMenuSingle=require('./DropdownMenuSingle.js');var jsxRuntime=require('react/jsx-runtime');var FormInputLabel=require('../FormInputLabel/FormInputLabel.js');var Chip=require('../Chip/Chip.js');var IconButton=require('../IconButton/IconButton.js');var index=require('../../icon-pack/src/icons/Close/index.js');var index$1=require('../../icon-pack/src/icons/ChevronDown/index.js');var Icon=require('../Icon/Icon.js');var Slot=require('../Slot/Slot.js');var FormInput=require('../FormInput/FormInput.js');const Dropdown=withMergedProps.withMergedProps(React.forwardRef(((e,o)=>{const{size:n="m",name:t="fox-dropdown",labelPosition:r="dynamic",searchable:s=!0,primary:a=!0,optionsMultiToggle:i=!0,iconProps:l={},menuProps:c={},loadingIconProps:u={},optionsEmptyIconProps:d={},loading:p,autoFocus:b,disableAutoScrollToSelectedOption:g,closeMenuOnScroll:m,scrollMonitorTarget:f,contrast:v,selectedOption:x,defaultSelectedOption:y,icon:D,addonLeft:j,inputMode:w,loadingMessage:C,loadingIcon:M,maxLength:I,multiple:R,clearable:h,onChangeInput:k,onCloseMenu:S,onOpenMenu:O,onSelectOption:T,options:q,loadOptions:F,renderOption:P,groupSelectedOptions:z,optionsMultiToggleCaption:L,optionsEmptyMessage:E,optionsEmptyIcon:B,palette:K,placeholder:X,readOnly:N,required:A,status:H,sizeXXS:$,sizeXS:Z,sizeS:_,sizeM:U,sizeL:G,sizeXL:J,form:Q,label:V,...W}=e;const Y={size:n,sizeXXS:$,sizeXS:Z,sizeS:_,sizeM:U,sizeL:G,sizeXL:J};const ee={...Y,...l,sizes:sizes.SIZES_ICON,color:W.disabled?'content-disabled':'content-onmain-tertiary'};const oe=React.useMemo((()=>W.id??`${t}-${nanoid.nanoid()}`),[t,W.id]);const ne=React.useMemo((()=>nanoid.nanoid()),[]);const te=React.useMemo((()=>nanoid.nanoid()),[]);const[re,se]=hooks.useFilteredOptions({options:q});const[ae,ie,le]=hooks.useLoadedOptions({loadOptions:F,options:q});const[ce,ue]=React.useState((()=>utils.getDropdownSelectedOption(x!==void 0?x:y,R)));const[de,pe]=React.useState((()=>utils.getDropdownInputText(ce,R)));const[be,ge]=React.useState(!1);const[me,fe]=React.useState(!1);const ve=F?ae:re;const xe=F?p??ie:p;const ye=me&&!W.disabled;const De=A&&ce.length===0;const je=Boolean(ye||de||be);const we=React.useRef(null);const[Ce,Me]=React.useState(null);const Ie=React.useRef(null);const Re=React.useRef(null);const he=React.useRef(ye);const ke=React.useCallback((e=>{pe(e),k&&k(e)}),[k]);const Se=React.useCallback((e=>{F?le(e):se(e)}),[F,le,se]);const Oe=React.useMemo((()=>misc.createDebouncedCallback(Se,150)),[Se]);const preventBlur=e=>{e.target!==we.current&&e.target instanceof Node&&(e.currentTarget.contains(e.target)||c.renderInPortal&&ye&&Ce&&Ce.contains(e.target))&&e.preventDefault()};return useScrollMonitor.useScrollMonitor({target:f,onScrollStart:()=>{m&&ye&&(we.current?.focus(),fe(!1))}}),React.useLayoutEffect((()=>{x!==void 0&&(R||ye||ke(utils.getDropdownInputText(x)),ue(utils.getDropdownSelectedOption(x,R)))}),[R,x,ye,ke]),React.useEffect((()=>{ye!==he.current&&(ye&&O&&O(),!ye&&S&&S(),he.current=ye)}),[ye,S,O]),React.useEffect((()=>{if(!R&&!g&&ye&&!xe&&de.length===0&&Ce&&Re.current){const e=Ce.getBoundingClientRect();const o=Re.current.getBoundingClientRect();(o.top<e.top||o.bottom>e.bottom)&&setTimeout((()=>{Ce&&Re.current&&Ce.scrollTo(0,Re.current.offsetTop)}),0)}}),[R,g,ye,xe,de,Ce]),React.useEffect((()=>{W.disabled&&ge(!1)}),[W.disabled]),jsxRuntime.jsx(FormInputLabel.FormInputLabel,{...W,...Y,ref:o,id:oe,onColored:v,primary:a,error:H==='error',success:H==='success',focus:be,palette:{color:W.disabled?K.labelColorDisabled:K.labelColor,backgroundColor:W.disabled?K.backgroundColorDisabled:K.backgroundColor,backgroundColorHover:W.disabled?K.backgroundColorDisabled:K.backgroundColorHover,borderColor:W.disabled?K.borderColorDisabled:K.borderColor},onClick:e=>{W.onClick&&W.onClick(e),W.disabled||(we.current?.focus(),ye?Ce&&e.target instanceof Node&&!Ce.contains(e.target)&&(fe(!1),ke(utils.getDropdownInputText(ce,R))):(fe(!0),Se(''),s&&ke('')))},onPointerDown:e=>{W.onPointerDown&&W.onPointerDown(e),preventBlur(e)},onMouseDown:e=>{W.onMouseDown&&W.onMouseDown(e),window.PointerEvent||preventBlur(e)},onFocus:e=>{W.onFocus&&W.onFocus(e),ge(!0),we.current&&e.target===we.current&&s&&!R&&!ye&&ke('')},onBlur:e=>{W.onBlur&&W.onBlur(e),e.currentTarget.contains(e.relatedTarget)||c.renderInPortal&&ye&&Ce&&Ce.contains(e.relatedTarget)||(ge(!1),ke(utils.getDropdownInputText(ce,R)),fe(!1))},input:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!De||s||N?null:jsxRuntime.jsx(style.InputMimic,{required:!0,type:"text",inputMode:"none",form:Q,tabIndex:-1,onFocus:()=>{we.current?.focus()}}),jsxRuntime.jsx(FormInput.FormInput,{...Y,ref:we,role:"combobox","aria-controls":te,"aria-expanded":ye,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",active:je,label:V,labelId:ne,labelPosition:r,form:Q,autoFocus:b,inputMode:s?w:'none',maxLength:I,placeholder:X,readOnly:N||!s,required:De,disabled:W.disabled,value:de,palette:{color:K.color,colorDisabled:K.colorDisabled,placeholderColor:K.placeholderColor,placeholderColorDisabled:K.placeholderColorDisabled},onClick:e=>{ye&&e.currentTarget.selectionStart!==e.currentTarget.selectionEnd&&e.stopPropagation()},onChange:e=>{const o=e.currentTarget.value;ke(o),Oe(o),fe(!0)},onKeyDown:e=>{if(constants.keyboardKeys.Enter.validate(e.key)&&(ke(utils.getDropdownInputText(ce,R)),fe(!1)),!constants.keyboardKeys.Space.validate(e.key)||ye&&e.currentTarget.selectionStart!==0||(e.preventDefault(),ye||(Se(''),s&&ke('')),fe((e=>!e))),constants.keyboardKeys.Esc.validate(e.key)&&fe(!1),constants.keyboardKeys.Tab.validate(e.key)&&ye&&(e.preventDefault(),fe(!1)),constants.keyboardKeys.ArrowDown.validate(e.key)&&ye&&Ie.current)if(e.preventDefault(),!R&&Re.current){const e=[...Ie.current.children];const o=e.findIndex((e=>e.contains(Re.current)));const n=e[o+1]??e[0];n instanceof HTMLElement&&dom.focusFirstFocusable(n)}else dom.focusFirstFocusable(Ie.current);if(constants.keyboardKeys.ArrowUp.validate(e.key)&&ye&&Ie.current)if(e.preventDefault(),!R&&Re.current){const e=[...Ie.current.children];const o=e.findIndex((e=>e.contains(Re.current)));const n=e[o-1]??e[e.length-1];n instanceof HTMLElement&&dom.focusFirstFocusable(n)}else dom.focusLastFocusable(Ie.current)}}),ce.map((e=>jsxRuntime.jsx("input",{type:"hidden",name:t,value:e.value,form:Q,disabled:W.disabled||e.disabled},e.value)))]}),addonLeft:D?jsxRuntime.jsx(Icon.Icon,{name:typeof D=='string'?D:void 0,icon:typeof D!='string'?D:void 0,...ee}):j?jsxRuntime.jsx(Slot.Slot,{props:{iconProps:ee},children:j}):null,addonRight:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[R&&ce.length>0?jsxRuntime.jsx(Chip.Chip,{size:"xs",active:!0,black:!0,disabled:W.disabled,cursor:W.disabled?'not-allowed':void 0,text:ce.length,textProps:{appearance:'caption',size:'xs'},palette:W.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:e=>{e.preventDefault()},onMouseDown:e=>{window.PointerEvent||e.preventDefault()},discardButtonProps:{square:!0,contrast:!W.disabled,onClick:e=>{e.stopPropagation(),N||(x===void 0&&ue([]),T&&T([]),we.current?.focus(),ke(''),Se(''),fe(!0))}}}):null,!R&&h&&ce.length>0?jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.Close,{}),size:"l",square:!0,disabled:W.disabled,onClick:e=>{e.stopPropagation(),N||(x===void 0&&ue([]),T&&T(null),we.current?.focus(),ke(''),Se(''),fe(!0))}}):null,jsxRuntime.jsx(style.IconAnimated,{icon:jsxRuntime.jsx(index$1.ChevronDown,{}),up:ye,...ee})]}),dropdown:jsxRuntime.jsx(DropdownMenu.DropdownMenu,{...c,setRef:Me,open:ye,popperReferenceId:oe,secondary:!v,elevated:v,disableAutoFocus:!0,palette:{backgroundColor:K.menuBackgroundColor,borderColor:K.menuBorderColor},empty:ve.length===0,loading:xe,loadingMessage:C,loadingIcon:M,loadingIconProps:{...ee,...u},emptyMessage:E,emptyIcon:B,emptyIconProps:{...ee,...d},onKeyDown:e=>{constants.keyboardKeys.Tab.validate(e.key)&&(e.preventDefault(),we.current?.focus(),fe(!1)),constants.keyboardKeys.Enter.validate(e.key)&&(we.current?.focus(),ke(utils.getDropdownInputText(ce,R)),fe(!1)),constants.keyboardKeys.Esc.validate(e.key)&&(we.current?.focus(),fe(!1)),constants.keyboardKeys.Backspace.validate(e.key)&&!N&&(R||!R&&h)&&(x===void 0&&ue([]),T&&T(R?[]:null),ke(''),Se(''))},children:R?jsxRuntime.jsx(DropdownMenuMultiple.DropdownMenuMultiple,{...Y,ref:Ie,inputRef:we,label:V,name:t,disabled:W.disabled,readOnly:N,menuListId:te,inputLabelId:ne,menuOptions:ve,dropdownSelectedOption:ce,inputText:de,optionsMultiToggle:i,groupSelectedOptions:z,optionsMultiToggleCaption:L,renderOption:P,onChange:e=>{x===void 0&&ue(e),T&&T(e)}}):jsxRuntime.jsx(DropdownMenuSingle.DropdownMenuSingle,{...Y,ref:Ie,label:V,readOnly:N,multiple:R,disabled:W.disabled,status:H,menuListId:te,inputLabelId:ne,menuOptions:ve,dropdownSelectedOption:ce,selectedOptionRef:Re,renderOption:P,onChange:e=>{const o={...e};x===void 0&&(ke(utils.getDropdownInputText(o)),ue(utils.getDropdownSelectedOption(o))),T&&T(o),we.current?.focus(),fe(!1)}})})})})),{sizes:sizes.SIZES,displayName:"Dropdown"});exports.COMPONENT_NAME="Dropdown",exports.Dropdown=Dropdown;
1
+ 'use strict';var React=require('react');var nanoid=require('nanoid');var withMergedProps=require('../../hocs/withMergedProps.js');var useScrollMonitor=require('../../hooks/useScrollMonitor.js');var dom=require('../../shared/utils/dom.js');var misc=require('../../shared/utils/misc.js');var constants=require('../../shared/constants.js');var DropdownMenu=require('./DropdownMenu.js');var hooks=require('./hooks.js');var sizes=require('./sizes.js');var utils=require('./utils.js');var style=require('./style.js');var DropdownMenuMultiple=require('./DropdownMenuMultiple.js');var DropdownMenuSingle=require('./DropdownMenuSingle.js');var jsxRuntime=require('react/jsx-runtime');var FormInputLabel=require('../FormInputLabel/FormInputLabel.js');var Chip=require('../Chip/Chip.js');var IconButton=require('../IconButton/IconButton.js');var index=require('../../icon-pack/src/icons/Close/index.js');var index$1=require('../../icon-pack/src/icons/ChevronDown/index.js');var Icon=require('../Icon/Icon.js');var Slot=require('../Slot/Slot.js');var FormInput=require('../FormInput/FormInput.js');const Dropdown=withMergedProps.withMergedProps(React.forwardRef((e,o)=>{const{size:n="m",name:t="fox-dropdown",labelPosition:r="dynamic",searchable:s=!0,primary:a=!0,optionsMultiToggle:i=!0,iconProps:l={},menuProps:c={},loadingIconProps:u={},optionsEmptyIconProps:d={},loading:p,autoFocus:b,disableAutoScrollToSelectedOption:g,closeMenuOnScroll:m,scrollMonitorTarget:f,contrast:v,selectedOption:x,defaultSelectedOption:y,icon:j,addonLeft:D,inputMode:w,loadingMessage:C,loadingIcon:I,maxLength:M,multiple:R,clearable:h,onChangeInput:k,onCloseMenu:S,onOpenMenu:O,onSelectOption:T,options:q,loadOptions:F,renderOption:P,groupSelectedOptions:z,optionsMultiToggleCaption:L,optionsEmptyMessage:E,optionsEmptyIcon:B,palette:K,placeholder:X,readOnly:N,required:A,status:H,sizeXXS:$,sizeXS:Z,sizeS:_,sizeM:U,sizeL:G,sizeXL:J,form:Q,label:V,...W}=e;const Y={size:n,sizeXXS:$,sizeXS:Z,sizeS:_,sizeM:U,sizeL:G,sizeXL:J};const ee={...Y,...l,sizes:sizes.SIZES_ICON,color:W.disabled?'content-disabled':'content-onmain-tertiary'};const oe=React.useMemo(()=>W.id??`${t}-${nanoid.nanoid()}`,[t,W.id]);const ne=React.useMemo(()=>nanoid.nanoid(),[]);const te=React.useMemo(()=>nanoid.nanoid(),[]);const[re,se]=hooks.useFilteredOptions({options:q});const[ae,ie,le]=hooks.useLoadedOptions({loadOptions:F,options:q});const[ce,ue]=React.useState(()=>utils.getDropdownSelectedOption(x!==void 0?x:y,R));const[de,pe]=React.useState(()=>utils.getDropdownInputText(ce,R));const[be,ge]=React.useState(!1);const[me,fe]=React.useState(!1);const ve=F?ae:re;const xe=F?p??ie:p;const ye=me&&!W.disabled;const je=A&&ce.length===0;const De=Boolean(ye||de||be);const we=React.useRef(null);const[Ce,Ie]=React.useState(null);const Me=React.useRef(null);const Re=React.useRef(null);const he=React.useRef(ye);const ke=React.useCallback(e=>{pe(e),k&&k(e)},[k]);const Se=React.useCallback(e=>{F?le(e):se(e)},[F,le,se]);const Oe=React.useMemo(()=>misc.createDebouncedCallback(Se,150),[Se]);const preventBlur=e=>{e.target!==we.current&&e.target instanceof Node&&(e.currentTarget.contains(e.target)||c.renderInPortal&&ye&&Ce&&Ce.contains(e.target))&&e.preventDefault()};return useScrollMonitor.useScrollMonitor({target:f,onScrollStart:()=>{m&&ye&&(we.current?.focus(),fe(!1))}}),React.useLayoutEffect(()=>{x!==void 0&&(R||ye||ke(utils.getDropdownInputText(x)),ue(utils.getDropdownSelectedOption(x,R)))},[R,x,ye,ke]),React.useEffect(()=>{ye!==he.current&&(ye&&O&&O(),!ye&&S&&S(),he.current=ye)},[ye,S,O]),React.useEffect(()=>{if(!R&&!g&&ye&&!xe&&de.length===0&&Ce&&Re.current){const e=Ce.getBoundingClientRect();const o=Re.current.getBoundingClientRect();(o.top<e.top||o.bottom>e.bottom)&&setTimeout(()=>{Ce&&Re.current&&Ce.scrollTo(0,Re.current.offsetTop)},0)}},[R,g,ye,xe,de,Ce]),React.useEffect(()=>{W.disabled&&ge(!1)},[W.disabled]),jsxRuntime.jsx(FormInputLabel.FormInputLabel,{...W,...Y,ref:o,id:oe,onColored:v,primary:a,error:H==='error',success:H==='success',focus:be,palette:{color:W.disabled?K.labelColorDisabled:K.labelColor,backgroundColor:W.disabled?K.backgroundColorDisabled:K.backgroundColor,backgroundColorHover:W.disabled?K.backgroundColorDisabled:K.backgroundColorHover,borderColor:W.disabled?K.borderColorDisabled:K.borderColor},onClick:e=>{W.onClick&&W.onClick(e),W.disabled||(we.current?.focus(),ye?Ce&&e.target instanceof Node&&!Ce.contains(e.target)&&(fe(!1),ke(utils.getDropdownInputText(ce,R))):(fe(!0),Se(''),s&&ke('')))},onPointerDown:e=>{W.onPointerDown&&W.onPointerDown(e),preventBlur(e)},onMouseDown:e=>{W.onMouseDown&&W.onMouseDown(e),window.PointerEvent||preventBlur(e)},onFocus:e=>{W.onFocus&&W.onFocus(e),ge(!0),we.current&&e.target===we.current&&s&&!R&&!ye&&ke('')},onBlur:e=>{W.onBlur&&W.onBlur(e),e.currentTarget.contains(e.relatedTarget)||c.renderInPortal&&ye&&Ce&&Ce.contains(e.relatedTarget)||(ge(!1),ke(utils.getDropdownInputText(ce,R)),fe(!1))},input:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[!je||s||N?null:jsxRuntime.jsx(style.InputMimic,{required:!0,type:"text",inputMode:"none",form:Q,tabIndex:-1,onFocus:()=>{we.current?.focus()}}),jsxRuntime.jsx(FormInput.FormInput,{...Y,ref:we,role:"combobox","aria-controls":te,"aria-expanded":ye,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",active:De,label:V,labelId:ne,labelPosition:r,form:Q,autoFocus:b,inputMode:s?w:'none',maxLength:M,placeholder:X,readOnly:N||!s,required:je,disabled:W.disabled,value:de,palette:{color:K.color,colorDisabled:K.colorDisabled,placeholderColor:K.placeholderColor,placeholderColorDisabled:K.placeholderColorDisabled},onClick:e=>{ye&&e.currentTarget.selectionStart!==e.currentTarget.selectionEnd&&e.stopPropagation()},onChange:e=>{const o=e.currentTarget.value;ke(o),Oe(o),fe(!0)},onKeyDown:e=>{if(constants.keyboardKeys.Enter.validate(e.key)&&(ke(utils.getDropdownInputText(ce,R)),fe(!1)),!constants.keyboardKeys.Space.validate(e.key)||ye&&e.currentTarget.selectionStart!==0||(e.preventDefault(),ye||(Se(''),s&&ke('')),fe(e=>!e)),constants.keyboardKeys.Esc.validate(e.key)&&fe(!1),constants.keyboardKeys.Tab.validate(e.key)&&ye&&(e.preventDefault(),fe(!1)),constants.keyboardKeys.ArrowDown.validate(e.key)&&ye&&Me.current)if(e.preventDefault(),!R&&Re.current){const e=[...Me.current.children];const o=e.findIndex(e=>e.contains(Re.current));const n=e[o+1]??e[0];n instanceof HTMLElement&&dom.focusFirstFocusable(n)}else dom.focusFirstFocusable(Me.current);if(constants.keyboardKeys.ArrowUp.validate(e.key)&&ye&&Me.current)if(e.preventDefault(),!R&&Re.current){const e=[...Me.current.children];const o=e.findIndex(e=>e.contains(Re.current));const n=e[o-1]??e[e.length-1];n instanceof HTMLElement&&dom.focusFirstFocusable(n)}else dom.focusLastFocusable(Me.current)}}),ce.map(e=>jsxRuntime.jsx("input",{type:"hidden",name:t,value:e.value,form:Q,disabled:W.disabled||e.disabled},e.value))]}),addonLeft:j?jsxRuntime.jsx(Icon.Icon,{name:typeof j=='string'?j:void 0,icon:typeof j!='string'?j:void 0,...ee}):D?jsxRuntime.jsx(Slot.Slot,{render:D,props:{iconProps:ee}}):null,addonRight:jsxRuntime.jsxs(jsxRuntime.Fragment,{children:[R&&ce.length>0?jsxRuntime.jsx(Chip.Chip,{size:"xs",active:!0,black:!0,disabled:W.disabled,cursor:W.disabled?'not-allowed':void 0,text:ce.length,addonRight:({iconButtonProps:e})=>jsxRuntime.jsx(IconButton.IconButton,{...e,contrast:!W.disabled,onClick:e=>{e.stopPropagation(),N||(x===void 0&&ue([]),T&&T([]),we.current?.focus(),ke(''),Se(''),fe(!0))}}),palette:W.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:e=>{e.preventDefault()},onMouseDown:e=>{window.PointerEvent||e.preventDefault()}}):null,!R&&h&&ce.length>0?jsxRuntime.jsx(IconButton.IconButton,{icon:jsxRuntime.jsx(index.Close,{}),size:"l",square:!0,disabled:W.disabled,onClick:e=>{e.stopPropagation(),N||(x===void 0&&ue([]),T&&T(null),we.current?.focus(),ke(''),Se(''),fe(!0))}}):null,jsxRuntime.jsx(style.IconAnimated,{icon:jsxRuntime.jsx(index$1.ChevronDown,{}),up:ye,...ee})]}),dropdown:jsxRuntime.jsx(DropdownMenu.DropdownMenu,{...c,setRef:Ie,open:ye,popperReferenceId:oe,secondary:!v,elevated:v,disableAutoFocus:!0,palette:{backgroundColor:K.menuBackgroundColor,borderColor:K.menuBorderColor},empty:ve.length===0,loading:xe,loadingMessage:C,loadingIcon:I,loadingIconProps:{...ee,...u},emptyMessage:E,emptyIcon:B,emptyIconProps:{...ee,...d},onKeyDown:e=>{constants.keyboardKeys.Tab.validate(e.key)&&(e.preventDefault(),we.current?.focus(),fe(!1)),constants.keyboardKeys.Enter.validate(e.key)&&(we.current?.focus(),ke(utils.getDropdownInputText(ce,R)),fe(!1)),constants.keyboardKeys.Esc.validate(e.key)&&(we.current?.focus(),fe(!1)),constants.keyboardKeys.Backspace.validate(e.key)&&!N&&(R||!R&&h)&&(x===void 0&&ue([]),T&&T(R?[]:null),ke(''),Se(''))},children:R?jsxRuntime.jsx(DropdownMenuMultiple.DropdownMenuMultiple,{...Y,ref:Me,inputRef:we,label:V,name:t,disabled:W.disabled,readOnly:N,menuListId:te,inputLabelId:ne,menuOptions:ve,dropdownSelectedOption:ce,inputText:de,optionsMultiToggle:i,groupSelectedOptions:z,optionsMultiToggleCaption:L,renderOption:P,onChange:e=>{x===void 0&&ue(e),T&&T(e)}}):jsxRuntime.jsx(DropdownMenuSingle.DropdownMenuSingle,{...Y,ref:Me,label:V,readOnly:N,multiple:R,disabled:W.disabled,status:H,menuListId:te,inputLabelId:ne,menuOptions:ve,dropdownSelectedOption:ce,selectedOptionRef:Re,renderOption:P,onChange:e=>{const o={...e};x===void 0&&(ke(utils.getDropdownInputText(o)),ue(utils.getDropdownSelectedOption(o))),T&&T(o),we.current?.focus(),fe(!1)}})})})}),{sizes:sizes.SIZES,displayName:"Dropdown"});exports.COMPONENT_NAME="Dropdown",exports.Dropdown=Dropdown;
2
2
  //# sourceMappingURL=Dropdown.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot props={{ iconProps: iconBaseProps }}>{addonLeft}</Slot>\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n discardButtonProps={{\n square: true,\n contrast: !rootProps.disabled,\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","addonRight","Chip","black","cursor","text","textProps","appearance","colorHover","discardButtonProps","square","IconButton","Close","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.js","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot render={addonLeft} props={{ iconProps: iconBaseProps }} />\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n addonRight={({ iconButtonProps }) => (\n <IconButton\n {...iconButtonProps}\n contrast={!rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n )}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","render","addonRight","Chip","black","cursor","text","iconButtonProps","IconButton","colorHover","Close","square","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{forwardRef,useMemo,useState,useRef,useCallback,useLayoutEffect,useEffect}from'react';import{nanoid}from'nanoid';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useScrollMonitor}from'../../hooks/useScrollMonitor.mjs';import{focusFirstFocusable,focusLastFocusable}from'../../shared/utils/dom.mjs';import{createDebouncedCallback}from'../../shared/utils/misc.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{DropdownMenu}from'./DropdownMenu.mjs';import{useFilteredOptions,useLoadedOptions}from'./hooks.mjs';import{SIZES,SIZES_ICON}from'./sizes.mjs';import{getDropdownSelectedOption,getDropdownInputText}from'./utils.mjs';import{IconAnimated,InputMimic}from'./style.mjs';import{DropdownMenuMultiple}from'./DropdownMenuMultiple.mjs';import{DropdownMenuSingle}from'./DropdownMenuSingle.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{FormInputLabel}from'../FormInputLabel/FormInputLabel.mjs';import{Chip}from'../Chip/Chip.mjs';import{IconButton}from'../IconButton/IconButton.mjs';import{Close}from'../../icon-pack/src/icons/Close/index.mjs';import{ChevronDown}from'../../icon-pack/src/icons/ChevronDown/index.mjs';import{Icon}from'../Icon/Icon.mjs';import{Slot}from'../Slot/Slot.mjs';import{FormInput}from'../FormInput/FormInput.mjs';const COMPONENT_NAME='Dropdown';const Dropdown=withMergedProps(forwardRef(((e,o)=>{const{size:t="m",name:n="fox-dropdown",labelPosition:r="dynamic",searchable:s=!0,primary:l=!0,optionsMultiToggle:a=!0,iconProps:i={},menuProps:d={},loadingIconProps:c={},optionsEmptyIconProps:u={},loading:p,autoFocus:m,disableAutoScrollToSelectedOption:f,closeMenuOnScroll:b,scrollMonitorTarget:g,contrast:C,selectedOption:y,defaultSelectedOption:D,icon:w,addonLeft:I,inputMode:M,loadingMessage:k,loadingIcon:S,maxLength:v,multiple:h,clearable:x,onChangeInput:j,onCloseMenu:O,onOpenMenu:T,onSelectOption:F,options:P,loadOptions:E,renderOption:L,groupSelectedOptions:z,optionsMultiToggleCaption:B,optionsEmptyMessage:R,optionsEmptyIcon:K,palette:N,placeholder:A,readOnly:X,required:H,status:q,sizeXXS:Z,sizeXS:_,sizeS:$,sizeM:U,sizeL:G,sizeXL:J,form:Q,label:V,...W}=e;const Y={size:t,sizeXXS:Z,sizeXS:_,sizeS:$,sizeM:U,sizeL:G,sizeXL:J};const ee={...Y,...i,sizes:SIZES_ICON,color:W.disabled?'content-disabled':'content-onmain-tertiary'};const oe=useMemo((()=>W.id??`${n}-${nanoid()}`),[n,W.id]);const te=useMemo((()=>nanoid()),[]);const ne=useMemo((()=>nanoid()),[]);const[re,se]=useFilteredOptions({options:P});const[le,ae,ie]=useLoadedOptions({loadOptions:E,options:P});const[de,ce]=useState((()=>getDropdownSelectedOption(y!==void 0?y:D,h)));const[ue,pe]=useState((()=>getDropdownInputText(de,h)));const[me,fe]=useState(!1);const[be,ge]=useState(!1);const Ce=E?le:re;const ye=E?p??ae:p;const De=be&&!W.disabled;const we=H&&de.length===0;const Ie=Boolean(De||ue||me);const Me=useRef(null);const[ke,Se]=useState(null);const ve=useRef(null);const he=useRef(null);const xe=useRef(De);const je=useCallback((e=>{pe(e),j&&j(e)}),[j]);const Oe=useCallback((e=>{E?ie(e):se(e)}),[E,ie,se]);const Te=useMemo((()=>createDebouncedCallback(Oe,150)),[Oe]);const preventBlur=e=>{e.target!==Me.current&&e.target instanceof Node&&(e.currentTarget.contains(e.target)||d.renderInPortal&&De&&ke&&ke.contains(e.target))&&e.preventDefault()};return useScrollMonitor({target:g,onScrollStart:()=>{b&&De&&(Me.current?.focus(),ge(!1))}}),useLayoutEffect((()=>{y!==void 0&&(h||De||je(getDropdownInputText(y)),ce(getDropdownSelectedOption(y,h)))}),[h,y,De,je]),useEffect((()=>{De!==xe.current&&(De&&T&&T(),!De&&O&&O(),xe.current=De)}),[De,O,T]),useEffect((()=>{if(!h&&!f&&De&&!ye&&ue.length===0&&ke&&he.current){const e=ke.getBoundingClientRect();const o=he.current.getBoundingClientRect();(o.top<e.top||o.bottom>e.bottom)&&setTimeout((()=>{ke&&he.current&&ke.scrollTo(0,he.current.offsetTop)}),0)}}),[h,f,De,ye,ue,ke]),useEffect((()=>{W.disabled&&fe(!1)}),[W.disabled]),jsx(FormInputLabel,{...W,...Y,ref:o,id:oe,onColored:C,primary:l,error:q==='error',success:q==='success',focus:me,palette:{color:W.disabled?N.labelColorDisabled:N.labelColor,backgroundColor:W.disabled?N.backgroundColorDisabled:N.backgroundColor,backgroundColorHover:W.disabled?N.backgroundColorDisabled:N.backgroundColorHover,borderColor:W.disabled?N.borderColorDisabled:N.borderColor},onClick:e=>{W.onClick&&W.onClick(e),W.disabled||(Me.current?.focus(),De?ke&&e.target instanceof Node&&!ke.contains(e.target)&&(ge(!1),je(getDropdownInputText(de,h))):(ge(!0),Oe(''),s&&je('')))},onPointerDown:e=>{W.onPointerDown&&W.onPointerDown(e),preventBlur(e)},onMouseDown:e=>{W.onMouseDown&&W.onMouseDown(e),window.PointerEvent||preventBlur(e)},onFocus:e=>{W.onFocus&&W.onFocus(e),fe(!0),Me.current&&e.target===Me.current&&s&&!h&&!De&&je('')},onBlur:e=>{W.onBlur&&W.onBlur(e),e.currentTarget.contains(e.relatedTarget)||d.renderInPortal&&De&&ke&&ke.contains(e.relatedTarget)||(fe(!1),je(getDropdownInputText(de,h)),ge(!1))},input:jsxs(Fragment,{children:[!we||s||X?null:jsx(InputMimic,{required:!0,type:"text",inputMode:"none",form:Q,tabIndex:-1,onFocus:()=>{Me.current?.focus()}}),jsx(FormInput,{...Y,ref:Me,role:"combobox","aria-controls":ne,"aria-expanded":De,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",active:Ie,label:V,labelId:te,labelPosition:r,form:Q,autoFocus:m,inputMode:s?M:'none',maxLength:v,placeholder:A,readOnly:X||!s,required:we,disabled:W.disabled,value:ue,palette:{color:N.color,colorDisabled:N.colorDisabled,placeholderColor:N.placeholderColor,placeholderColorDisabled:N.placeholderColorDisabled},onClick:e=>{De&&e.currentTarget.selectionStart!==e.currentTarget.selectionEnd&&e.stopPropagation()},onChange:e=>{const o=e.currentTarget.value;je(o),Te(o),ge(!0)},onKeyDown:e=>{if(keyboardKeys.Enter.validate(e.key)&&(je(getDropdownInputText(de,h)),ge(!1)),!keyboardKeys.Space.validate(e.key)||De&&e.currentTarget.selectionStart!==0||(e.preventDefault(),De||(Oe(''),s&&je('')),ge((e=>!e))),keyboardKeys.Esc.validate(e.key)&&ge(!1),keyboardKeys.Tab.validate(e.key)&&De&&(e.preventDefault(),ge(!1)),keyboardKeys.ArrowDown.validate(e.key)&&De&&ve.current)if(e.preventDefault(),!h&&he.current){const e=[...ve.current.children];const o=e.findIndex((e=>e.contains(he.current)));const t=e[o+1]??e[0];t instanceof HTMLElement&&focusFirstFocusable(t)}else focusFirstFocusable(ve.current);if(keyboardKeys.ArrowUp.validate(e.key)&&De&&ve.current)if(e.preventDefault(),!h&&he.current){const e=[...ve.current.children];const o=e.findIndex((e=>e.contains(he.current)));const t=e[o-1]??e[e.length-1];t instanceof HTMLElement&&focusFirstFocusable(t)}else focusLastFocusable(ve.current)}}),de.map((e=>jsx("input",{type:"hidden",name:n,value:e.value,form:Q,disabled:W.disabled||e.disabled},e.value)))]}),addonLeft:w?jsx(Icon,{name:typeof w=='string'?w:void 0,icon:typeof w!='string'?w:void 0,...ee}):I?jsx(Slot,{props:{iconProps:ee},children:I}):null,addonRight:jsxs(Fragment,{children:[h&&de.length>0?jsx(Chip,{size:"xs",active:!0,black:!0,disabled:W.disabled,cursor:W.disabled?'not-allowed':void 0,text:de.length,textProps:{appearance:'caption',size:'xs'},palette:W.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:e=>{e.preventDefault()},onMouseDown:e=>{window.PointerEvent||e.preventDefault()},discardButtonProps:{square:!0,contrast:!W.disabled,onClick:e=>{e.stopPropagation(),X||(y===void 0&&ce([]),F&&F([]),Me.current?.focus(),je(''),Oe(''),ge(!0))}}}):null,!h&&x&&de.length>0?jsx(IconButton,{icon:jsx(Close,{}),size:"l",square:!0,disabled:W.disabled,onClick:e=>{e.stopPropagation(),X||(y===void 0&&ce([]),F&&F(null),Me.current?.focus(),je(''),Oe(''),ge(!0))}}):null,jsx(IconAnimated,{icon:jsx(ChevronDown,{}),up:De,...ee})]}),dropdown:jsx(DropdownMenu,{...d,setRef:Se,open:De,popperReferenceId:oe,secondary:!C,elevated:C,disableAutoFocus:!0,palette:{backgroundColor:N.menuBackgroundColor,borderColor:N.menuBorderColor},empty:Ce.length===0,loading:ye,loadingMessage:k,loadingIcon:S,loadingIconProps:{...ee,...c},emptyMessage:R,emptyIcon:K,emptyIconProps:{...ee,...u},onKeyDown:e=>{keyboardKeys.Tab.validate(e.key)&&(e.preventDefault(),Me.current?.focus(),ge(!1)),keyboardKeys.Enter.validate(e.key)&&(Me.current?.focus(),je(getDropdownInputText(de,h)),ge(!1)),keyboardKeys.Esc.validate(e.key)&&(Me.current?.focus(),ge(!1)),keyboardKeys.Backspace.validate(e.key)&&!X&&(h||!h&&x)&&(y===void 0&&ce([]),F&&F(h?[]:null),je(''),Oe(''))},children:h?jsx(DropdownMenuMultiple,{...Y,ref:ve,inputRef:Me,label:V,name:n,disabled:W.disabled,readOnly:X,menuListId:ne,inputLabelId:te,menuOptions:Ce,dropdownSelectedOption:de,inputText:ue,optionsMultiToggle:a,groupSelectedOptions:z,optionsMultiToggleCaption:B,renderOption:L,onChange:e=>{y===void 0&&ce(e),F&&F(e)}}):jsx(DropdownMenuSingle,{...Y,ref:ve,label:V,readOnly:X,multiple:h,disabled:W.disabled,status:q,menuListId:ne,inputLabelId:te,menuOptions:Ce,dropdownSelectedOption:de,selectedOptionRef:he,renderOption:L,onChange:e=>{const o={...e};y===void 0&&(je(getDropdownInputText(o)),ce(getDropdownSelectedOption(o))),F&&F(o),Me.current?.focus(),ge(!1)}})})})})),{sizes:SIZES,displayName:"Dropdown"});export{COMPONENT_NAME,Dropdown};
1
+ import{forwardRef,useMemo,useState,useRef,useCallback,useLayoutEffect,useEffect}from'react';import{nanoid}from'nanoid';import{withMergedProps}from'../../hocs/withMergedProps.mjs';import{useScrollMonitor}from'../../hooks/useScrollMonitor.mjs';import{focusFirstFocusable,focusLastFocusable}from'../../shared/utils/dom.mjs';import{createDebouncedCallback}from'../../shared/utils/misc.mjs';import{keyboardKeys}from'../../shared/constants.mjs';import{DropdownMenu}from'./DropdownMenu.mjs';import{useFilteredOptions,useLoadedOptions}from'./hooks.mjs';import{SIZES,SIZES_ICON}from'./sizes.mjs';import{getDropdownSelectedOption,getDropdownInputText}from'./utils.mjs';import{IconAnimated,InputMimic}from'./style.mjs';import{DropdownMenuMultiple}from'./DropdownMenuMultiple.mjs';import{DropdownMenuSingle}from'./DropdownMenuSingle.mjs';import{jsx,jsxs,Fragment}from'react/jsx-runtime';import{FormInputLabel}from'../FormInputLabel/FormInputLabel.mjs';import{Chip}from'../Chip/Chip.mjs';import{IconButton}from'../IconButton/IconButton.mjs';import{Close}from'../../icon-pack/src/icons/Close/index.mjs';import{ChevronDown}from'../../icon-pack/src/icons/ChevronDown/index.mjs';import{Icon}from'../Icon/Icon.mjs';import{Slot}from'../Slot/Slot.mjs';import{FormInput}from'../FormInput/FormInput.mjs';const COMPONENT_NAME='Dropdown';const Dropdown=withMergedProps(forwardRef((o,e)=>{const{size:t="m",name:n="fox-dropdown",labelPosition:r="dynamic",searchable:s=!0,primary:l=!0,optionsMultiToggle:a=!0,iconProps:i={},menuProps:d={},loadingIconProps:c={},optionsEmptyIconProps:u={},loading:p,autoFocus:m,disableAutoScrollToSelectedOption:f,closeMenuOnScroll:b,scrollMonitorTarget:g,contrast:C,selectedOption:y,defaultSelectedOption:D,icon:w,addonLeft:I,inputMode:M,loadingMessage:k,loadingIcon:S,maxLength:v,multiple:h,clearable:x,onChangeInput:j,onCloseMenu:O,onOpenMenu:T,onSelectOption:F,options:E,loadOptions:P,renderOption:L,groupSelectedOptions:z,optionsMultiToggleCaption:B,optionsEmptyMessage:R,optionsEmptyIcon:K,palette:N,placeholder:A,readOnly:X,required:H,status:q,sizeXXS:Z,sizeXS:_,sizeS:$,sizeM:U,sizeL:G,sizeXL:J,form:Q,label:V,...W}=o;const Y={size:t,sizeXXS:Z,sizeXS:_,sizeS:$,sizeM:U,sizeL:G,sizeXL:J};const oo={...Y,...i,sizes:SIZES_ICON,color:W.disabled?'content-disabled':'content-onmain-tertiary'};const eo=useMemo(()=>W.id??`${n}-${nanoid()}`,[n,W.id]);const to=useMemo(()=>nanoid(),[]);const no=useMemo(()=>nanoid(),[]);const[ro,so]=useFilteredOptions({options:E});const[lo,ao,io]=useLoadedOptions({loadOptions:P,options:E});const[co,uo]=useState(()=>getDropdownSelectedOption(y!==void 0?y:D,h));const[po,mo]=useState(()=>getDropdownInputText(co,h));const[fo,bo]=useState(!1);const[go,Co]=useState(!1);const yo=P?lo:ro;const Do=P?p??ao:p;const wo=go&&!W.disabled;const Io=H&&co.length===0;const Mo=Boolean(wo||po||fo);const ko=useRef(null);const[So,vo]=useState(null);const ho=useRef(null);const xo=useRef(null);const jo=useRef(wo);const Oo=useCallback(o=>{mo(o),j&&j(o)},[j]);const To=useCallback(o=>{P?io(o):so(o)},[P,io,so]);const Fo=useMemo(()=>createDebouncedCallback(To,150),[To]);const preventBlur=o=>{o.target!==ko.current&&o.target instanceof Node&&(o.currentTarget.contains(o.target)||d.renderInPortal&&wo&&So&&So.contains(o.target))&&o.preventDefault()};return useScrollMonitor({target:g,onScrollStart:()=>{b&&wo&&(ko.current?.focus(),Co(!1))}}),useLayoutEffect(()=>{y!==void 0&&(h||wo||Oo(getDropdownInputText(y)),uo(getDropdownSelectedOption(y,h)))},[h,y,wo,Oo]),useEffect(()=>{wo!==jo.current&&(wo&&T&&T(),!wo&&O&&O(),jo.current=wo)},[wo,O,T]),useEffect(()=>{if(!h&&!f&&wo&&!Do&&po.length===0&&So&&xo.current){const o=So.getBoundingClientRect();const e=xo.current.getBoundingClientRect();(e.top<o.top||e.bottom>o.bottom)&&setTimeout(()=>{So&&xo.current&&So.scrollTo(0,xo.current.offsetTop)},0)}},[h,f,wo,Do,po,So]),useEffect(()=>{W.disabled&&bo(!1)},[W.disabled]),jsx(FormInputLabel,{...W,...Y,ref:e,id:eo,onColored:C,primary:l,error:q==='error',success:q==='success',focus:fo,palette:{color:W.disabled?N.labelColorDisabled:N.labelColor,backgroundColor:W.disabled?N.backgroundColorDisabled:N.backgroundColor,backgroundColorHover:W.disabled?N.backgroundColorDisabled:N.backgroundColorHover,borderColor:W.disabled?N.borderColorDisabled:N.borderColor},onClick:o=>{W.onClick&&W.onClick(o),W.disabled||(ko.current?.focus(),wo?So&&o.target instanceof Node&&!So.contains(o.target)&&(Co(!1),Oo(getDropdownInputText(co,h))):(Co(!0),To(''),s&&Oo('')))},onPointerDown:o=>{W.onPointerDown&&W.onPointerDown(o),preventBlur(o)},onMouseDown:o=>{W.onMouseDown&&W.onMouseDown(o),window.PointerEvent||preventBlur(o)},onFocus:o=>{W.onFocus&&W.onFocus(o),bo(!0),ko.current&&o.target===ko.current&&s&&!h&&!wo&&Oo('')},onBlur:o=>{W.onBlur&&W.onBlur(o),o.currentTarget.contains(o.relatedTarget)||d.renderInPortal&&wo&&So&&So.contains(o.relatedTarget)||(bo(!1),Oo(getDropdownInputText(co,h)),Co(!1))},input:jsxs(Fragment,{children:[!Io||s||X?null:jsx(InputMimic,{required:!0,type:"text",inputMode:"none",form:Q,tabIndex:-1,onFocus:()=>{ko.current?.focus()}}),jsx(FormInput,{...Y,ref:ko,role:"combobox","aria-controls":no,"aria-expanded":wo,type:"text",autoComplete:"off",autoCapitalize:"off",autoCorrect:"off",spellCheck:"false",active:Mo,label:V,labelId:to,labelPosition:r,form:Q,autoFocus:m,inputMode:s?M:'none',maxLength:v,placeholder:A,readOnly:X||!s,required:Io,disabled:W.disabled,value:po,palette:{color:N.color,colorDisabled:N.colorDisabled,placeholderColor:N.placeholderColor,placeholderColorDisabled:N.placeholderColorDisabled},onClick:o=>{wo&&o.currentTarget.selectionStart!==o.currentTarget.selectionEnd&&o.stopPropagation()},onChange:o=>{const e=o.currentTarget.value;Oo(e),Fo(e),Co(!0)},onKeyDown:o=>{if(keyboardKeys.Enter.validate(o.key)&&(Oo(getDropdownInputText(co,h)),Co(!1)),!keyboardKeys.Space.validate(o.key)||wo&&o.currentTarget.selectionStart!==0||(o.preventDefault(),wo||(To(''),s&&Oo('')),Co(o=>!o)),keyboardKeys.Esc.validate(o.key)&&Co(!1),keyboardKeys.Tab.validate(o.key)&&wo&&(o.preventDefault(),Co(!1)),keyboardKeys.ArrowDown.validate(o.key)&&wo&&ho.current)if(o.preventDefault(),!h&&xo.current){const o=[...ho.current.children];const e=o.findIndex(o=>o.contains(xo.current));const t=o[e+1]??o[0];t instanceof HTMLElement&&focusFirstFocusable(t)}else focusFirstFocusable(ho.current);if(keyboardKeys.ArrowUp.validate(o.key)&&wo&&ho.current)if(o.preventDefault(),!h&&xo.current){const o=[...ho.current.children];const e=o.findIndex(o=>o.contains(xo.current));const t=o[e-1]??o[o.length-1];t instanceof HTMLElement&&focusFirstFocusable(t)}else focusLastFocusable(ho.current)}}),co.map(o=>jsx("input",{type:"hidden",name:n,value:o.value,form:Q,disabled:W.disabled||o.disabled},o.value))]}),addonLeft:w?jsx(Icon,{name:typeof w=='string'?w:void 0,icon:typeof w!='string'?w:void 0,...oo}):I?jsx(Slot,{render:I,props:{iconProps:oo}}):null,addonRight:jsxs(Fragment,{children:[h&&co.length>0?jsx(Chip,{size:"xs",active:!0,black:!0,disabled:W.disabled,cursor:W.disabled?'not-allowed':void 0,text:co.length,addonRight:({iconButtonProps:o})=>jsx(IconButton,{...o,contrast:!W.disabled,onClick:o=>{o.stopPropagation(),X||(y===void 0&&uo([]),F&&F([]),ko.current?.focus(),Oo(''),To(''),Co(!0))}}),palette:W.disabled?{color:'content-disabled',colorHover:'content-disabled',backgroundColor:'bg-disabled-small',backgroundColorHover:'bg-disabled-small'}:void 0,onPointerDown:o=>{o.preventDefault()},onMouseDown:o=>{window.PointerEvent||o.preventDefault()}}):null,!h&&x&&co.length>0?jsx(IconButton,{icon:jsx(Close,{}),size:"l",square:!0,disabled:W.disabled,onClick:o=>{o.stopPropagation(),X||(y===void 0&&uo([]),F&&F(null),ko.current?.focus(),Oo(''),To(''),Co(!0))}}):null,jsx(IconAnimated,{icon:jsx(ChevronDown,{}),up:wo,...oo})]}),dropdown:jsx(DropdownMenu,{...d,setRef:vo,open:wo,popperReferenceId:eo,secondary:!C,elevated:C,disableAutoFocus:!0,palette:{backgroundColor:N.menuBackgroundColor,borderColor:N.menuBorderColor},empty:yo.length===0,loading:Do,loadingMessage:k,loadingIcon:S,loadingIconProps:{...oo,...c},emptyMessage:R,emptyIcon:K,emptyIconProps:{...oo,...u},onKeyDown:o=>{keyboardKeys.Tab.validate(o.key)&&(o.preventDefault(),ko.current?.focus(),Co(!1)),keyboardKeys.Enter.validate(o.key)&&(ko.current?.focus(),Oo(getDropdownInputText(co,h)),Co(!1)),keyboardKeys.Esc.validate(o.key)&&(ko.current?.focus(),Co(!1)),keyboardKeys.Backspace.validate(o.key)&&!X&&(h||!h&&x)&&(y===void 0&&uo([]),F&&F(h?[]:null),Oo(''),To(''))},children:h?jsx(DropdownMenuMultiple,{...Y,ref:ho,inputRef:ko,label:V,name:n,disabled:W.disabled,readOnly:X,menuListId:no,inputLabelId:to,menuOptions:yo,dropdownSelectedOption:co,inputText:po,optionsMultiToggle:a,groupSelectedOptions:z,optionsMultiToggleCaption:B,renderOption:L,onChange:o=>{y===void 0&&uo(o),F&&F(o)}}):jsx(DropdownMenuSingle,{...Y,ref:ho,label:V,readOnly:X,multiple:h,disabled:W.disabled,status:q,menuListId:no,inputLabelId:to,menuOptions:yo,dropdownSelectedOption:co,selectedOptionRef:xo,renderOption:L,onChange:o=>{const e={...o};y===void 0&&(Oo(getDropdownInputText(e)),uo(getDropdownSelectedOption(e))),F&&F(e),ko.current?.focus(),Co(!1)}})})})}),{sizes:SIZES,displayName:"Dropdown"});export{COMPONENT_NAME,Dropdown};
2
2
  //# sourceMappingURL=Dropdown.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"Dropdown.mjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot props={{ iconProps: iconBaseProps }}>{addonLeft}</Slot>\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n textProps={{\n appearance: 'caption',\n size: 'xs',\n }}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n discardButtonProps={{\n square: true,\n contrast: !rootProps.disabled,\n onClick: (evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n },\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","addonRight","Chip","black","cursor","text","textProps","appearance","colorHover","discardButtonProps","square","IconButton","Close","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
1
+ {"version":3,"file":"Dropdown.mjs","sources":["../../../../src/components/Dropdown/Dropdown.tsx"],"sourcesContent":["import { forwardRef, useState, useRef, useEffect, useLayoutEffect, useMemo, useCallback } from 'react'\nimport { nanoid } from 'nanoid'\nimport { ChevronDown, Close } from '@foxford/icon-pack'\nimport { withMergedProps } from 'hocs/withMergedProps'\nimport type { MergedProps } from 'hocs/withMergedProps'\nimport { useScrollMonitor } from 'hooks/useScrollMonitor'\nimport { focusFirstFocusable, focusLastFocusable } from 'shared/utils/dom'\nimport { createDebouncedCallback } from 'shared/utils/misc'\nimport { keyboardKeys } from 'shared/constants'\nimport type { Nullable } from 'shared/types'\nimport { FormInput } from 'components/FormInput'\nimport { FormInputLabel } from 'components/FormInputLabel'\nimport { Chip } from 'components/Chip'\nimport { IconButton } from 'components/IconButton'\nimport { Icon } from 'components/Icon'\nimport type { IconProps } from 'components/Icon'\nimport { Slot } from 'components/Slot'\nimport { DropdownMenu } from './DropdownMenu'\nimport { useFilteredOptions, useLoadedOptions } from './hooks'\nimport { SIZES, SIZES_ICON } from './sizes'\nimport { getDropdownInputText, getDropdownSelectedOption } from './utils'\nimport * as Styled from './style'\nimport type { DropdownProps, DropdownOption, DropdownOptionGroup } from './types'\nimport { DropdownMenuMultiple } from './DropdownMenuMultiple'\nimport { DropdownMenuSingle } from './DropdownMenuSingle'\n\nconst COMPONENT_NAME = 'Dropdown'\n\n/**\n *\n * Компонент для выбора одной или нескольких опций из числа доступных.\n *\n * Поддерживается \"ref\" и все нативные атрибуты \\<div\\> элемента.\n */\nconst Dropdown: React.ForwardRefExoticComponent<DropdownProps> = withMergedProps<DropdownProps, HTMLDivElement>(\n forwardRef<HTMLDivElement, MergedProps<DropdownProps>>((props, ref) => {\n const {\n size = 'm',\n name = 'fox-dropdown',\n labelPosition = 'dynamic',\n searchable = true,\n primary = true,\n optionsMultiToggle = true,\n iconProps = {},\n menuProps = {},\n loadingIconProps = {},\n optionsEmptyIconProps = {},\n loading,\n autoFocus,\n disableAutoScrollToSelectedOption,\n closeMenuOnScroll,\n scrollMonitorTarget,\n contrast,\n selectedOption,\n defaultSelectedOption,\n icon,\n addonLeft,\n inputMode,\n loadingMessage,\n loadingIcon,\n maxLength,\n multiple,\n clearable,\n onChangeInput,\n onCloseMenu,\n onOpenMenu,\n onSelectOption,\n options,\n loadOptions,\n renderOption,\n groupSelectedOptions,\n optionsMultiToggleCaption,\n optionsEmptyMessage,\n optionsEmptyIcon,\n palette,\n placeholder,\n readOnly,\n required,\n status,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n form,\n label,\n ...rootProps\n } = props\n\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const iconBaseProps: IconProps = {\n ...sizeProps,\n ...iconProps,\n sizes: SIZES_ICON,\n color: rootProps.disabled ? 'content-disabled' : 'content-onmain-tertiary',\n }\n\n const formInputLabelId = useMemo(() => rootProps.id ?? `${name}-${nanoid()}`, [name, rootProps.id])\n const inputLabelId = useMemo(() => nanoid(), [])\n const menuListId = useMemo(() => nanoid(), [])\n\n const [filteredOptions, getFilteredOptions] = useFilteredOptions({\n options,\n })\n\n const [loadedOptions, optionsLoading, getLoadedOptions] = useLoadedOptions({\n loadOptions,\n options,\n })\n\n const [dropdownSelectedOption, setDropdownSelectedOption] = useState<DropdownOption[]>(() =>\n getDropdownSelectedOption(selectedOption !== undefined ? selectedOption : defaultSelectedOption, multiple)\n )\n\n const [inputText, setInputText] = useState<string>(() => getDropdownInputText(dropdownSelectedOption, multiple))\n\n const [focusWithin, setFocusWithin] = useState<boolean>(false)\n\n const [menuOpenRequest, setMenuOpenRequest] = useState<boolean>(false)\n\n const menuOptions: (DropdownOption | DropdownOptionGroup)[] = loadOptions ? loadedOptions : filteredOptions\n const menuOptionsLoading = loadOptions ? (loading ?? optionsLoading) : loading\n\n const menuOpen = menuOpenRequest && !rootProps.disabled\n\n const inputRequired = required && dropdownSelectedOption.length === 0\n const inputActive = Boolean(menuOpen || inputText || focusWithin)\n\n const inputRef = useRef<HTMLInputElement>(null)\n const [menuRef, setMenuRef] = useState<Nullable<HTMLElement>>(null)\n const menuListRef = useRef<HTMLUListElement>(null)\n const selectedOptionRef = useRef<HTMLElement>(null)\n const menuOpenPrevRef = useRef<boolean>(menuOpen)\n\n const updateInputText = useCallback(\n (inputTextValue: string) => {\n setInputText(inputTextValue)\n\n if (onChangeInput) {\n onChangeInput(inputTextValue)\n }\n },\n [onChangeInput]\n )\n\n const updateOptions = useCallback(\n (inputTextValue: string) => {\n if (loadOptions) {\n getLoadedOptions(inputTextValue)\n } else {\n getFilteredOptions(inputTextValue)\n }\n },\n [loadOptions, getLoadedOptions, getFilteredOptions]\n )\n\n const updateOptionsDebounced = useMemo(() => {\n return createDebouncedCallback(updateOptions, 150)\n }, [updateOptions])\n\n const preventBlur = (evt: React.PointerEvent<HTMLDivElement> | React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (\n evt.target !== inputRef.current &&\n evt.target instanceof Node &&\n (evt.currentTarget.contains(evt.target) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.target)))\n ) {\n evt.preventDefault()\n }\n }\n\n useScrollMonitor({\n target: scrollMonitorTarget,\n onScrollStart: () => {\n if (closeMenuOnScroll && menuOpen) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n },\n })\n\n useLayoutEffect(() => {\n if (selectedOption === undefined) return\n\n if (!multiple && !menuOpen) {\n updateInputText(getDropdownInputText(selectedOption))\n }\n setDropdownSelectedOption(getDropdownSelectedOption(selectedOption, multiple))\n }, [multiple, selectedOption, menuOpen, updateInputText])\n\n useEffect(() => {\n if (menuOpen === menuOpenPrevRef.current) return\n\n if (menuOpen && onOpenMenu) onOpenMenu()\n if (!menuOpen && onCloseMenu) onCloseMenu()\n\n menuOpenPrevRef.current = menuOpen\n }, [menuOpen, onCloseMenu, onOpenMenu])\n\n useEffect(() => {\n if (\n !multiple &&\n !disableAutoScrollToSelectedOption &&\n menuOpen &&\n !menuOptionsLoading &&\n inputText.length === 0 &&\n menuRef &&\n selectedOptionRef.current\n ) {\n const menuRect = menuRef.getBoundingClientRect()\n const selectedOptionRect = selectedOptionRef.current.getBoundingClientRect()\n\n if (selectedOptionRect.top < menuRect.top || selectedOptionRect.bottom > menuRect.bottom) {\n setTimeout(() => {\n if (menuRef && selectedOptionRef.current) {\n menuRef.scrollTo(0, selectedOptionRef.current.offsetTop)\n }\n }, 0)\n }\n }\n }, [multiple, disableAutoScrollToSelectedOption, menuOpen, menuOptionsLoading, inputText, menuRef])\n\n useEffect(() => {\n if (rootProps.disabled) {\n setFocusWithin(false)\n }\n }, [rootProps.disabled])\n\n return (\n <FormInputLabel\n {...rootProps}\n {...sizeProps}\n ref={ref}\n id={formInputLabelId}\n onColored={contrast}\n primary={primary}\n error={status === 'error'}\n success={status === 'success'}\n focus={focusWithin}\n palette={{\n color: rootProps.disabled ? palette.labelColorDisabled : palette.labelColor,\n backgroundColor: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColor,\n backgroundColorHover: rootProps.disabled ? palette.backgroundColorDisabled : palette.backgroundColorHover,\n borderColor: rootProps.disabled ? palette.borderColorDisabled : palette.borderColor,\n }}\n onClick={(evt) => {\n if (rootProps.onClick) rootProps.onClick(evt)\n\n if (rootProps.disabled) return\n\n inputRef.current?.focus()\n\n if (!menuOpen) {\n setMenuOpenRequest(true)\n\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n } else if (menuRef && evt.target instanceof Node && !menuRef.contains(evt.target)) {\n setMenuOpenRequest(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n }\n }}\n onPointerDown={(evt) => {\n if (rootProps.onPointerDown) rootProps.onPointerDown(evt)\n\n preventBlur(evt)\n }}\n onMouseDown={(evt) => {\n if (rootProps.onMouseDown) rootProps.onMouseDown(evt)\n\n if (!window.PointerEvent) preventBlur(evt)\n }}\n onFocus={(evt) => {\n if (rootProps.onFocus) rootProps.onFocus(evt)\n\n setFocusWithin(true)\n\n if (inputRef.current && evt.target === inputRef.current && searchable && !multiple && !menuOpen) {\n updateInputText('')\n }\n }}\n onBlur={(evt) => {\n if (rootProps.onBlur) rootProps.onBlur(evt)\n\n if (\n evt.currentTarget.contains(evt.relatedTarget) ||\n (menuProps.renderInPortal && menuOpen && menuRef && menuRef.contains(evt.relatedTarget))\n ) {\n return\n }\n\n setFocusWithin(false)\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }}\n input={\n <>\n {inputRequired && !searchable && !readOnly ? (\n <Styled.InputMimic\n required\n type='text'\n inputMode='none'\n form={form}\n tabIndex={-1}\n onFocus={() => {\n inputRef.current?.focus()\n }}\n />\n ) : null}\n <FormInput\n {...sizeProps}\n ref={inputRef}\n role='combobox'\n aria-controls={menuListId}\n aria-expanded={menuOpen}\n type='text'\n autoComplete='off'\n autoCapitalize='off'\n autoCorrect='off'\n spellCheck='false'\n active={inputActive}\n label={label}\n labelId={inputLabelId}\n labelPosition={labelPosition}\n form={form}\n autoFocus={autoFocus}\n inputMode={searchable ? inputMode : 'none'}\n maxLength={maxLength}\n placeholder={placeholder}\n readOnly={readOnly || !searchable}\n required={inputRequired}\n disabled={rootProps.disabled}\n value={inputText}\n palette={{\n color: palette.color,\n colorDisabled: palette.colorDisabled,\n placeholderColor: palette.placeholderColor,\n placeholderColorDisabled: palette.placeholderColorDisabled,\n }}\n onClick={(evt) => {\n if (menuOpen && evt.currentTarget.selectionStart !== evt.currentTarget.selectionEnd) {\n evt.stopPropagation()\n }\n }}\n onChange={(evt) => {\n const inputValue = evt.currentTarget.value\n\n updateInputText(inputValue)\n updateOptionsDebounced(inputValue)\n setMenuOpenRequest(true)\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Enter.validate(evt.key)) {\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Space.validate(evt.key) && (!menuOpen || evt.currentTarget.selectionStart === 0)) {\n evt.preventDefault()\n\n if (!menuOpen) {\n updateOptions('')\n if (searchable) {\n updateInputText('')\n }\n }\n\n setMenuOpenRequest((prev) => !prev)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Tab.validate(evt.key) && menuOpen) {\n evt.preventDefault()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.ArrowDown.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx + 1] ?? menuItems[0]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusFirstFocusable(menuListRef.current)\n }\n }\n\n if (keyboardKeys.ArrowUp.validate(evt.key) && menuOpen && menuListRef.current) {\n evt.preventDefault()\n\n if (!multiple && selectedOptionRef.current) {\n const menuItems = [...menuListRef.current.children]\n\n const idx = menuItems.findIndex((item) => item.contains(selectedOptionRef.current as Node))\n\n const focusTarget = menuItems[idx - 1] ?? menuItems[menuItems.length - 1]\n\n if (focusTarget instanceof HTMLElement) {\n focusFirstFocusable(focusTarget)\n }\n } else {\n focusLastFocusable(menuListRef.current)\n }\n }\n }}\n />\n {dropdownSelectedOption.map((option) => (\n <input\n key={option.value}\n type='hidden'\n name={name}\n value={option.value}\n form={form}\n disabled={rootProps.disabled || option.disabled}\n />\n ))}\n </>\n }\n addonLeft={\n icon ? (\n <Icon\n name={typeof icon === 'string' ? icon : undefined}\n icon={typeof icon !== 'string' ? icon : undefined}\n {...iconBaseProps}\n />\n ) : addonLeft ? (\n <Slot render={addonLeft} props={{ iconProps: iconBaseProps }} />\n ) : null\n }\n addonRight={\n <>\n {multiple && dropdownSelectedOption.length > 0 ? (\n <Chip\n size='xs'\n active\n black\n disabled={rootProps.disabled}\n cursor={rootProps.disabled ? 'not-allowed' : undefined}\n text={dropdownSelectedOption.length}\n addonRight={({ iconButtonProps }) => (\n <IconButton\n {...iconButtonProps}\n contrast={!rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption([])\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n )}\n palette={\n rootProps.disabled\n ? {\n color: 'content-disabled',\n colorHover: 'content-disabled',\n backgroundColor: 'bg-disabled-small',\n backgroundColorHover: 'bg-disabled-small',\n }\n : undefined\n }\n onPointerDown={(evt) => {\n evt.preventDefault()\n }}\n onMouseDown={(evt) => {\n if (!window.PointerEvent) evt.preventDefault()\n }}\n />\n ) : null}\n {!multiple && clearable && dropdownSelectedOption.length > 0 ? (\n <IconButton\n icon={<Close />}\n size='l'\n square\n disabled={rootProps.disabled}\n onClick={(evt) => {\n evt.stopPropagation()\n\n if (!readOnly) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(null)\n\n inputRef.current?.focus()\n updateInputText('')\n updateOptions('')\n setMenuOpenRequest(true)\n }\n }}\n />\n ) : null}\n <Styled.IconAnimated icon={<ChevronDown />} up={menuOpen} {...iconBaseProps} />\n </>\n }\n dropdown={\n <DropdownMenu\n {...menuProps}\n setRef={setMenuRef}\n open={menuOpen}\n popperReferenceId={formInputLabelId}\n secondary={!contrast}\n elevated={contrast}\n disableAutoFocus\n palette={{\n backgroundColor: palette.menuBackgroundColor,\n borderColor: palette.menuBorderColor,\n }}\n empty={menuOptions.length === 0}\n loading={menuOptionsLoading}\n loadingMessage={loadingMessage}\n loadingIcon={loadingIcon}\n loadingIconProps={{\n ...iconBaseProps,\n ...loadingIconProps,\n }}\n emptyMessage={optionsEmptyMessage}\n emptyIcon={optionsEmptyIcon}\n emptyIconProps={{\n ...iconBaseProps,\n ...optionsEmptyIconProps,\n }}\n onKeyDown={(evt) => {\n if (keyboardKeys.Tab.validate(evt.key)) {\n evt.preventDefault()\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Enter.validate(evt.key)) {\n inputRef.current?.focus()\n updateInputText(getDropdownInputText(dropdownSelectedOption, multiple))\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Esc.validate(evt.key)) {\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }\n\n if (keyboardKeys.Backspace.validate(evt.key) && !readOnly && (multiple || (!multiple && clearable))) {\n if (selectedOption === undefined) {\n setDropdownSelectedOption([])\n }\n\n if (onSelectOption) onSelectOption(multiple ? [] : null)\n\n updateInputText('')\n updateOptions('')\n }\n }}\n >\n {multiple ? (\n <DropdownMenuMultiple\n {...sizeProps}\n ref={menuListRef}\n inputRef={inputRef}\n label={label}\n name={name}\n disabled={rootProps.disabled}\n readOnly={readOnly}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n inputText={inputText}\n optionsMultiToggle={optionsMultiToggle}\n groupSelectedOptions={groupSelectedOptions}\n optionsMultiToggleCaption={optionsMultiToggleCaption}\n renderOption={renderOption}\n onChange={(update) => {\n if (selectedOption === undefined) {\n setDropdownSelectedOption(update)\n }\n\n if (onSelectOption) onSelectOption(update)\n }}\n />\n ) : (\n <DropdownMenuSingle\n {...sizeProps}\n ref={menuListRef}\n label={label}\n readOnly={readOnly}\n multiple={multiple}\n disabled={rootProps.disabled}\n status={status}\n menuListId={menuListId}\n inputLabelId={inputLabelId}\n menuOptions={menuOptions}\n dropdownSelectedOption={dropdownSelectedOption}\n selectedOptionRef={selectedOptionRef}\n renderOption={renderOption}\n onChange={(option) => {\n const update = { ...option }\n\n if (selectedOption === undefined) {\n updateInputText(getDropdownInputText(update))\n setDropdownSelectedOption(getDropdownSelectedOption(update))\n }\n\n if (onSelectOption) onSelectOption(update)\n\n inputRef.current?.focus()\n setMenuOpenRequest(false)\n }}\n />\n )}\n </DropdownMenu>\n }\n />\n )\n }),\n {\n sizes: SIZES,\n displayName: COMPONENT_NAME,\n }\n)\n\nexport { Dropdown, COMPONENT_NAME }\n"],"names":["COMPONENT_NAME","Dropdown","withMergedProps","forwardRef","props","ref","size","name","labelPosition","searchable","primary","optionsMultiToggle","iconProps","menuProps","loadingIconProps","optionsEmptyIconProps","loading","autoFocus","disableAutoScrollToSelectedOption","closeMenuOnScroll","scrollMonitorTarget","contrast","selectedOption","defaultSelectedOption","icon","addonLeft","inputMode","loadingMessage","loadingIcon","maxLength","multiple","clearable","onChangeInput","onCloseMenu","onOpenMenu","onSelectOption","options","loadOptions","renderOption","groupSelectedOptions","optionsMultiToggleCaption","optionsEmptyMessage","optionsEmptyIcon","palette","placeholder","readOnly","required","status","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","form","label","rootProps","sizeProps","iconBaseProps","sizes","SIZES_ICON","color","disabled","formInputLabelId","useMemo","id","nanoid","inputLabelId","menuListId","filteredOptions","getFilteredOptions","useFilteredOptions","loadedOptions","optionsLoading","getLoadedOptions","useLoadedOptions","dropdownSelectedOption","setDropdownSelectedOption","useState","getDropdownSelectedOption","undefined","inputText","setInputText","getDropdownInputText","focusWithin","setFocusWithin","menuOpenRequest","setMenuOpenRequest","menuOptions","menuOptionsLoading","menuOpen","inputRequired","length","inputActive","Boolean","inputRef","useRef","menuRef","setMenuRef","menuListRef","selectedOptionRef","menuOpenPrevRef","updateInputText","useCallback","inputTextValue","updateOptions","updateOptionsDebounced","createDebouncedCallback","preventBlur","evt","target","current","Node","currentTarget","contains","renderInPortal","preventDefault","useScrollMonitor","onScrollStart","focus","useLayoutEffect","useEffect","menuRect","getBoundingClientRect","selectedOptionRect","top","bottom","setTimeout","scrollTo","offsetTop","_jsx","FormInputLabel","onColored","error","success","labelColorDisabled","labelColor","backgroundColor","backgroundColorDisabled","backgroundColorHover","borderColor","borderColorDisabled","onClick","onPointerDown","onMouseDown","window","PointerEvent","onFocus","onBlur","relatedTarget","input","_jsxs","_Fragment","children","Styled","type","tabIndex","FormInput","role","autoComplete","autoCapitalize","autoCorrect","spellCheck","active","labelId","value","colorDisabled","placeholderColor","placeholderColorDisabled","selectionStart","selectionEnd","stopPropagation","onChange","inputValue","onKeyDown","keyboardKeys","Enter","validate","key","Space","prev","Esc","Tab","ArrowDown","menuItems","idx","findIndex","item","focusTarget","HTMLElement","focusFirstFocusable","ArrowUp","focusLastFocusable","map","option","Icon","Slot","render","addonRight","Chip","black","cursor","text","iconButtonProps","IconButton","colorHover","Close","square","ChevronDown","up","dropdown","DropdownMenu","setRef","open","popperReferenceId","secondary","elevated","disableAutoFocus","menuBackgroundColor","menuBorderColor","empty","emptyMessage","emptyIcon","emptyIconProps","Backspace","DropdownMenuMultiple","update","DropdownMenuSingle","SIZES","displayName"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- 'use strict';var React=require('react');var sizes=require('./sizes.js');var jsxRuntime=require('react/jsx-runtime');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var ListItem=require('../ListItem/ListItem.js');exports.DropdownListItem=React.forwardRef((({name:e,disabled:s,status:t,readOnly:r,multiple:i,option:o,selected:a,statusVisibility:n="selected",onClick:c,onChange:u,renderOption:d,...l},p)=>{const x=i?o.status??t:t;const m=n==='always'||n==='selected'&&a;const v=m&&x==='error';const I=m&&x==='success';const b={...l,ref:a?p:void 0,role:i?void 0:'option','aria-selected':i?void 0:a,active:a,text:o.text,danger:v,success:I,disabled:s||o.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),r||c?.(e,o)},control:i?jsxRuntime.jsx(InputCheckbox.InputCheckbox,{sizes:sizes.SIZES_CHECKBOX,form:"none",role:"option","aria-selected":a,name:e,value:o.value,checked:a,error:v,success:I,onChange:e=>{r||u?.(e,o,a)}}):void 0};return d?d(o,b):jsxRuntime.jsx(ListItem.ListItem,{...b})}));
1
+ 'use strict';var React=require('react');var sizes=require('./sizes.js');var jsxRuntime=require('react/jsx-runtime');var InputCheckbox=require('../InputCheckbox/InputCheckbox.js');var ListItem=require('../ListItem/ListItem.js');var Text=require('../Text/Text.js');exports.DropdownListItem=React.forwardRef(({name:e,disabled:s,status:t,readOnly:i,multiple:r,option:o,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:u,size:l,sizeXXS:x,sizeXS:z,sizeS:m,sizeM:p,sizeL:b,sizeXL:v},j)=>{const I={size:l,sizeXXS:x,sizeXS:z,sizeS:m,sizeM:p,sizeL:b,sizeXL:v};const C=r?o.status??t:t;const L=a==='always'||a==='selected'&&n;const k=L&&C==='error';const h=L&&C==='success';const X=s||o.disabled;const R={...I,ref:n?j:void 0,role:r?void 0:'option','aria-selected':r?void 0:n,active:n,text:e=>jsxRuntime.jsx(Text.Text,{...e,ellipsis:!1,wordBreak:"break-word",children:o.text}),danger:k,success:h,disabled:X,borderRadius:8,onClick:e=>{e.stopPropagation(),i||c?.(e,o)},component:r?'label':'button',addonLeft:r?jsxRuntime.jsx(InputCheckbox.InputCheckbox,{...I,sizes:sizes.SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:o.value,checked:n,error:k,success:h,disabled:X,onChange:e=>{i||d?.(e,o,n)}}):void 0};return u?u(o,R):jsxRuntime.jsx(ListItem.ListItem,{...R})});
2
2
  //# sourceMappingURL=DropdownListItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownListItem.js","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ListItemProps } from 'components/ListItem'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n ...restProps\n },\n ref\n ) => {\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n\n const listItemProps: ListItemProps = {\n ...restProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: option.text,\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: disabled || option.disabled,\n borderRadius: 8,\n ellipsis: false,\n textProps: { wordBreak: 'break-word' },\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n control: multiple ? (\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","restProps","ref","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","listItemProps","undefined","role","active","text","danger","success","borderRadius","ellipsis","textProps","wordBreak","evt","stopPropagation","control","_jsx","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"4PAOgCA,MAAAA,YAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,kBACGC,GAELC,KAEA,MAAMC,EAAeT,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMY,EAAaP,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMS,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAE3D,MAAMI,EAA+B,IAChCN,EACHC,IAAKN,EAAWM,OAAMM,EACtBC,KAAOf,OAAsBc,EAAX,SAClB,gBAAkBd,OAAsBc,EAAXZ,EAC7Bc,OAAQd,EACRe,KAAMhB,EAAOgB,KACbC,OAAQP,EACRQ,QAASP,EACTf,SAAUA,GAAYI,EAAOJ,SAC7BuB,aAAc,EACdC,UAAU,EACVC,UAAW,CAAEC,UAAW,cACxBnB,QAAUoB,IACRA,EAAIC,kBACC1B,GACHK,IAAUoB,EAAKvB,EACjB,EAEFyB,QAAS1B,EACP2B,WAAAA,IAACC,4BAAa,CACZC,MAAOC,MAAAA,eACPC,KAAK,OACLhB,KAAK,SACL,gBAAeb,EACfN,KAAMA,EACNoC,MAAO/B,EAAO+B,MACdC,QAAS/B,EACTgC,MAAOvB,EACPQ,QAASP,EACTP,SAAWmB,IACJzB,GACHM,IAAWmB,EAAKvB,EAAQC,EAC1B,SAGFY,GAGN,OAAIR,EACKA,EAAaL,EAAQY,GAGvBc,WAAAA,IAACQ,SAAAA,SAAQ,IAAKtB,GAAiB"}
1
+ {"version":3,"file":"DropdownListItem.js","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ListItem } from 'components/ListItem'\nimport { Text } from 'components/Text'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps, RenderOptionListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n const optionDisabled = disabled || option.disabled\n\n const listItemProps: RenderOptionListItemProps = {\n ...sizeProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: (textProps) => (\n <Text {...textProps} ellipsis={false} wordBreak='break-word'>\n {option.text}\n </Text>\n ),\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: optionDisabled,\n borderRadius: 8,\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n component: multiple ? 'label' : 'button',\n addonLeft: multiple ? (\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={optionDisabled}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","ref","sizeProps","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","optionDisabled","listItemProps","undefined","role","active","text","textProps","_jsx","Text","ellipsis","wordBreak","children","danger","success","borderRadius","evt","stopPropagation","component","addonLeft","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"gSAOgCA,MAAAA,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,eACAC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAEFC,KAEA,MAAMC,EAAY,CAChBR,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMG,EAAehB,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMmB,EAAad,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMgB,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAC3D,MAAMI,EAAiBvB,GAAYI,EAAOJ,SAE1C,MAAMwB,EAA2C,IAC5CN,EACHD,IAAKZ,EAAWY,OAAMQ,EACtBC,KAAOvB,OAAsBsB,EAAX,SAClB,gBAAkBtB,OAAsBsB,EAAXpB,EAC7BsB,OAAQtB,EACRuB,KAAOC,GACLC,WAAAA,IAACC,UAAI,IAAKF,EAAWG,UAAU,EAAOC,UAAU,aAAYC,SACzD9B,EAAOwB,OAGZO,OAAQd,EACRe,QAASd,EACTtB,SAAUuB,EACVc,aAAc,EACd9B,QAAU+B,IACRA,EAAIC,kBACCrC,GACHK,IAAU+B,EAAKlC,IAGnBoC,UAAWrC,EAAW,QAAU,SAChCsC,UAAWtC,EACT2B,WAAAA,IAACY,4BAAa,IACRxB,EACJyB,MAAOC,MAAAA,eACPC,KAAK,OACLnB,KAAK,SACL,gBAAerB,EACfN,KAAMA,EACN+C,MAAO1C,EAAO0C,MACdC,QAAS1C,EACT2C,MAAO3B,EACPe,QAASd,EACTtB,SAAUuB,EACVf,SAAW8B,IACJpC,GACHM,IAAW8B,EAAKlC,EAAQC,WAI5BoB,GAGN,OAAIhB,EACKA,EAAaL,EAAQoB,GAGvBM,WAAAA,IAACmB,SAAAA,SAAQ,IAAKzB"}
@@ -1,2 +1,2 @@
1
- import{forwardRef}from'react';import{SIZES_CHECKBOX}from'./sizes.mjs';import{jsx}from'react/jsx-runtime';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{ListItem}from'../ListItem/ListItem.mjs';const DropdownListItem=forwardRef((({name:e,disabled:t,status:o,readOnly:s,multiple:r,option:i,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:m,...l},p)=>{const u=r?i.status??o:o;const x=a==='always'||a==='selected'&&n;const C=x&&u==='error';const I=x&&u==='success';const f={...l,ref:n?p:void 0,role:r?void 0:'option','aria-selected':r?void 0:n,active:n,text:i.text,danger:C,success:I,disabled:t||i.disabled,borderRadius:8,ellipsis:!1,textProps:{wordBreak:'break-word'},onClick:e=>{e.stopPropagation(),s||c?.(e,i)},control:r?jsx(InputCheckbox,{sizes:SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:i.value,checked:n,error:C,success:I,onChange:e=>{s||d?.(e,i,n)}}):void 0};return m?m(i,f):jsx(ListItem,{...f})}));export{DropdownListItem};
1
+ import{forwardRef}from'react';import{SIZES_CHECKBOX}from'./sizes.mjs';import{jsx}from'react/jsx-runtime';import{InputCheckbox}from'../InputCheckbox/InputCheckbox.mjs';import{ListItem}from'../ListItem/ListItem.mjs';import{Text}from'../Text/Text.mjs';const DropdownListItem=forwardRef(({name:e,disabled:s,status:t,readOnly:o,multiple:i,option:r,selected:n,statusVisibility:a="selected",onClick:c,onChange:d,renderOption:m,size:l,sizeXXS:p,sizeXS:u,sizeS:x,sizeM:z,sizeL:b,sizeXL:f},C)=>{const I={size:l,sizeXXS:p,sizeXS:u,sizeS:x,sizeM:z,sizeL:b,sizeXL:f};const L=i?r.status??t:t;const S=a==='always'||a==='selected'&&n;const X=S&&L==='error';const j=S&&L==='success';const k=s||r.disabled;const h={...I,ref:n?C:void 0,role:i?void 0:'option','aria-selected':i?void 0:n,active:n,text:e=>jsx(Text,{...e,ellipsis:!1,wordBreak:"break-word",children:r.text}),danger:X,success:j,disabled:k,borderRadius:8,onClick:e=>{e.stopPropagation(),o||c?.(e,r)},component:i?'label':'button',addonLeft:i?jsx(InputCheckbox,{...I,sizes:SIZES_CHECKBOX,form:"none",role:"option","aria-selected":n,name:e,value:r.value,checked:n,error:X,success:j,disabled:k,onChange:e=>{o||d?.(e,r,n)}}):void 0};return m?m(r,h):jsx(ListItem,{...h})});export{DropdownListItem};
2
2
  //# sourceMappingURL=DropdownListItem.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownListItem.mjs","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport type { ListItemProps } from 'components/ListItem'\nimport { ListItem } from 'components/ListItem'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n ...restProps\n },\n ref\n ) => {\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n\n const listItemProps: ListItemProps = {\n ...restProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: option.text,\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: disabled || option.disabled,\n borderRadius: 8,\n ellipsis: false,\n textProps: { wordBreak: 'break-word' },\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n control: multiple ? (\n <InputCheckbox\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["DropdownListItem","forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","restProps","ref","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","listItemProps","undefined","role","active","text","danger","success","borderRadius","ellipsis","textProps","wordBreak","evt","stopPropagation","control","_jsx","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"sNAOO,MAAMA,iBAAmBC,YAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,kBACGC,GAELC,KAEA,MAAMC,EAAeT,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMY,EAAaP,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMS,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAE3D,MAAMI,EAA+B,IAChCN,EACHC,IAAKN,EAAWM,OAAMM,EACtBC,KAAOf,OAAsBc,EAAX,SAClB,gBAAkBd,OAAsBc,EAAXZ,EAC7Bc,OAAQd,EACRe,KAAMhB,EAAOgB,KACbC,OAAQP,EACRQ,QAASP,EACTf,SAAUA,GAAYI,EAAOJ,SAC7BuB,aAAc,EACdC,UAAU,EACVC,UAAW,CAAEC,UAAW,cACxBnB,QAAUoB,IACRA,EAAIC,kBACC1B,GACHK,IAAUoB,EAAKvB,EACjB,EAEFyB,QAAS1B,EACP2B,IAACC,cAAa,CACZC,MAAOC,eACPC,KAAK,OACLhB,KAAK,SACL,gBAAeb,EACfN,KAAMA,EACNoC,MAAO/B,EAAO+B,MACdC,QAAS/B,EACTgC,MAAOvB,EACPQ,QAASP,EACTP,SAAWmB,IACJzB,GACHM,IAAWmB,EAAKvB,EAAQC,EAC1B,SAGFY,GAGN,OAAIR,EACKA,EAAaL,EAAQY,GAGvBc,IAACQ,SAAQ,IAAKtB,GAAiB"}
1
+ {"version":3,"file":"DropdownListItem.mjs","sources":["../../../../src/components/Dropdown/DropdownListItem.tsx"],"sourcesContent":["import { forwardRef } from 'react'\nimport { ListItem } from 'components/ListItem'\nimport { Text } from 'components/Text'\nimport { InputCheckbox } from 'components/InputCheckbox'\nimport { SIZES_CHECKBOX } from './sizes'\nimport type { DropdownListItemProps, RenderOptionListItemProps } from './types'\n\nexport const DropdownListItem = forwardRef<HTMLElement, DropdownListItemProps>(\n (\n {\n name,\n disabled,\n status,\n readOnly,\n multiple,\n option,\n selected,\n statusVisibility = 'selected',\n onClick,\n onChange,\n renderOption,\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n },\n ref\n ) => {\n const sizeProps = {\n size,\n sizeXXS,\n sizeXS,\n sizeS,\n sizeM,\n sizeL,\n sizeXL,\n }\n\n const optionStatus = multiple ? (option.status ?? status) : status\n const showStatus = statusVisibility === 'always' || (statusVisibility === 'selected' && selected)\n const optionErrorStatus = showStatus && optionStatus === 'error'\n const optionSuccessStatus = showStatus && optionStatus === 'success'\n const optionDisabled = disabled || option.disabled\n\n const listItemProps: RenderOptionListItemProps = {\n ...sizeProps,\n ref: selected ? ref : undefined,\n role: !multiple ? 'option' : undefined,\n 'aria-selected': !multiple ? selected : undefined,\n active: selected,\n text: (textProps) => (\n <Text {...textProps} ellipsis={false} wordBreak='break-word'>\n {option.text}\n </Text>\n ),\n danger: optionErrorStatus,\n success: optionSuccessStatus,\n disabled: optionDisabled,\n borderRadius: 8,\n onClick: (evt: React.MouseEvent<HTMLElement>) => {\n evt.stopPropagation()\n if (!readOnly) {\n onClick?.(evt, option)\n }\n },\n component: multiple ? 'label' : 'button',\n addonLeft: multiple ? (\n <InputCheckbox\n {...sizeProps}\n sizes={SIZES_CHECKBOX}\n form='none'\n role='option'\n aria-selected={selected}\n name={name}\n value={option.value}\n checked={selected}\n error={optionErrorStatus}\n success={optionSuccessStatus}\n disabled={optionDisabled}\n onChange={(evt) => {\n if (!readOnly) {\n onChange?.(evt, option, selected)\n }\n }}\n />\n ) : undefined,\n }\n\n if (renderOption) {\n return renderOption(option, listItemProps)\n }\n\n return <ListItem {...listItemProps} />\n }\n)\n"],"names":["DropdownListItem","forwardRef","name","disabled","status","readOnly","multiple","option","selected","statusVisibility","onClick","onChange","renderOption","size","sizeXXS","sizeXS","sizeS","sizeM","sizeL","sizeXL","ref","sizeProps","optionStatus","showStatus","optionErrorStatus","optionSuccessStatus","optionDisabled","listItemProps","undefined","role","active","text","textProps","_jsx","Text","ellipsis","wordBreak","children","danger","success","borderRadius","evt","stopPropagation","component","addonLeft","InputCheckbox","sizes","SIZES_CHECKBOX","form","value","checked","error","ListItem"],"mappings":"yPAOO,MAAMA,iBAAmBC,WAC9B,EAEIC,OACAC,WACAC,SACAC,WACAC,WACAC,SACAC,WACAC,mBAAmB,WACnBC,UACAC,WACAC,eACAC,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAEFC,KAEA,MAAMC,EAAY,CAChBR,OACAC,UACAC,SACAC,QACAC,QACAC,QACAC,UAGF,MAAMG,EAAehB,EAAYC,EAAOH,QAAUA,EAAUA,EAC5D,MAAMmB,EAAad,IAAqB,UAAaA,IAAqB,YAAcD,EACxF,MAAMgB,EAAoBD,GAAcD,IAAiB,QACzD,MAAMG,EAAsBF,GAAcD,IAAiB,UAC3D,MAAMI,EAAiBvB,GAAYI,EAAOJ,SAE1C,MAAMwB,EAA2C,IAC5CN,EACHD,IAAKZ,EAAWY,OAAMQ,EACtBC,KAAOvB,OAAsBsB,EAAX,SAClB,gBAAkBtB,OAAsBsB,EAAXpB,EAC7BsB,OAAQtB,EACRuB,KAAOC,GACLC,IAACC,KAAI,IAAKF,EAAWG,UAAU,EAAOC,UAAU,aAAYC,SACzD9B,EAAOwB,OAGZO,OAAQd,EACRe,QAASd,EACTtB,SAAUuB,EACVc,aAAc,EACd9B,QAAU+B,IACRA,EAAIC,kBACCrC,GACHK,IAAU+B,EAAKlC,IAGnBoC,UAAWrC,EAAW,QAAU,SAChCsC,UAAWtC,EACT2B,IAACY,cAAa,IACRxB,EACJyB,MAAOC,eACPC,KAAK,OACLnB,KAAK,SACL,gBAAerB,EACfN,KAAMA,EACN+C,MAAO1C,EAAO0C,MACdC,QAAS1C,EACT2C,MAAO3B,EACPe,QAASd,EACTtB,SAAUuB,EACVf,SAAW8B,IACJpC,GACHM,IAAW8B,EAAKlC,EAAQC,WAI5BoB,GAGN,OAAIhB,EACKA,EAAaL,EAAQoB,GAGvBM,IAACmB,SAAQ,IAAKzB"}