@smwb/ui-react 2.7.0 → 2.8.0

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 (414) hide show
  1. package/README.md +27 -0
  2. package/dist/assets/styles/less/components/avatar/avatar.entry.css +1 -1
  3. package/dist/assets/styles/less/components/card/card.entry.css +1 -1
  4. package/dist/assets/styles/less/components/checkbox/checkbox.entry.css +1 -1
  5. package/dist/assets/styles/less/components/chip/chip.entry.css +1 -1
  6. package/dist/assets/styles/less/components/menu/menu.entry.css +1 -1
  7. package/dist/assets/styles/less/components/personChip/personChip.entry.css +1 -1
  8. package/dist/assets/styles/less/components/radioButton/radioButton.entry.css +1 -1
  9. package/dist/assets/styles/less/components/rating/rating.entry.css +1 -1
  10. package/dist/assets/styles/less/components/selectField/selectField.entry.css +1 -1
  11. package/dist/assets/styles/less/components/table/table.entry.css +1 -1
  12. package/dist/assets/styles/less/components/thumbCard/thumbCard.entry.css +1 -1
  13. package/dist/assets/styles/less/components/toggle/toggle.entry.css +1 -1
  14. package/dist/assets/styles/less/components/typography/typography.entry.css +1 -1
  15. package/dist/assets/styles/less/connects/rt/table.entry.css +1 -1
  16. package/dist/components/base/icon/icon.d.ts +6 -2
  17. package/dist/components/base/icon/icon.js +49 -37
  18. package/dist/components/base/icon/icon.js.map +1 -1
  19. package/dist/components/base/ripple/ripple.d.ts +3 -0
  20. package/dist/components/base/ripple/ripple.js +38 -23
  21. package/dist/components/base/ripple/ripple.js.map +1 -1
  22. package/dist/components/dataDisplay/avatar/avatar.d.ts +4 -0
  23. package/dist/components/dataDisplay/avatar/avatar.js +50 -37
  24. package/dist/components/dataDisplay/avatar/avatar.js.map +1 -1
  25. package/dist/components/dataDisplay/badge/badge.js +37 -28
  26. package/dist/components/dataDisplay/badge/badge.js.map +1 -1
  27. package/dist/components/dataDisplay/card/card.d.ts +30 -2
  28. package/dist/components/dataDisplay/card/card.js +50 -23
  29. package/dist/components/dataDisplay/card/card.js.map +1 -1
  30. package/dist/components/dataDisplay/carousel/carousel.js +70 -70
  31. package/dist/components/dataDisplay/carousel/carousel.js.map +1 -1
  32. package/dist/components/dataDisplay/chart/chart.d.ts +2 -0
  33. package/dist/components/dataDisplay/chart/chart.js +66 -53
  34. package/dist/components/dataDisplay/chart/chart.js.map +1 -1
  35. package/dist/components/dataDisplay/chat/chatIconButton.d.ts +1 -1
  36. package/dist/components/dataDisplay/chat/chatIconButton.js +30 -26
  37. package/dist/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  38. package/dist/components/dataDisplay/chat/chatLayout.d.ts +3 -1
  39. package/dist/components/dataDisplay/chat/chatLayout.js +56 -55
  40. package/dist/components/dataDisplay/chat/chatLayout.js.map +1 -1
  41. package/dist/components/dataDisplay/chat/chatOverlayLayout.d.ts +3 -1
  42. package/dist/components/dataDisplay/chip/chip.d.ts +31 -0
  43. package/dist/components/dataDisplay/chip/chip.js +110 -83
  44. package/dist/components/dataDisplay/chip/chip.js.map +1 -1
  45. package/dist/components/dataDisplay/chipGroup/chipGroup.js +34 -30
  46. package/dist/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  47. package/dist/components/dataDisplay/descriptionList/descriptionList.d.ts +11 -3
  48. package/dist/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  49. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  50. package/dist/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  51. package/dist/components/dataDisplay/kanban/kanban.d.ts +6 -0
  52. package/dist/components/dataDisplay/kanban/kanban.js +46 -35
  53. package/dist/components/dataDisplay/kanban/kanban.js.map +1 -1
  54. package/dist/components/dataDisplay/lazyImage/lazyImage.js +31 -30
  55. package/dist/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  56. package/dist/components/dataDisplay/list/list.d.ts +2 -0
  57. package/dist/components/dataDisplay/list/list.js +15 -14
  58. package/dist/components/dataDisplay/list/list.js.map +1 -1
  59. package/dist/components/dataDisplay/meter/meter.d.ts +2 -0
  60. package/dist/components/dataDisplay/meter/meter.js +24 -23
  61. package/dist/components/dataDisplay/meter/meter.js.map +1 -1
  62. package/dist/components/dataDisplay/personChip/personChip.d.ts +2 -0
  63. package/dist/components/dataDisplay/personChip/personChip.js +39 -27
  64. package/dist/components/dataDisplay/personChip/personChip.js.map +1 -1
  65. package/dist/components/dataDisplay/stat/stat.d.ts +2 -0
  66. package/dist/components/dataDisplay/stat/stat.js +25 -13
  67. package/dist/components/dataDisplay/stat/stat.js.map +1 -1
  68. package/dist/components/dataDisplay/table/table.d.ts +16 -1
  69. package/dist/components/dataDisplay/table/table.js +40 -36
  70. package/dist/components/dataDisplay/table/table.js.map +1 -1
  71. package/dist/components/dataDisplay/table/tableBody.js +10 -4
  72. package/dist/components/dataDisplay/table/tableBody.js.map +1 -1
  73. package/dist/components/dataDisplay/table/tableCell.d.ts +10 -2
  74. package/dist/components/dataDisplay/table/tableCell.js +20 -13
  75. package/dist/components/dataDisplay/table/tableCell.js.map +1 -1
  76. package/dist/components/dataDisplay/table/tableColumns.d.ts +83 -0
  77. package/dist/components/dataDisplay/table/tableColumns.js +112 -0
  78. package/dist/components/dataDisplay/table/tableColumns.js.map +1 -0
  79. package/dist/components/dataDisplay/table/tableHead.js +9 -3
  80. package/dist/components/dataDisplay/table/tableHead.js.map +1 -1
  81. package/dist/components/dataDisplay/table/tableHeadCell.d.ts +24 -3
  82. package/dist/components/dataDisplay/table/tableHeadCell.js +60 -65
  83. package/dist/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  84. package/dist/components/dataDisplay/table/tableRow.d.ts +3 -1
  85. package/dist/components/dataDisplay/table/tableRow.js +28 -16
  86. package/dist/components/dataDisplay/table/tableRow.js.map +1 -1
  87. package/dist/components/dataDisplay/thumbCard/thumbCard.d.ts +44 -3
  88. package/dist/components/dataDisplay/thumbCard/thumbCard.js +79 -59
  89. package/dist/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  90. package/dist/components/dataDisplay/treeView/treeView.d.ts +2 -0
  91. package/dist/components/dataDisplay/treeView/treeView.js +24 -23
  92. package/dist/components/dataDisplay/treeView/treeView.js.map +1 -1
  93. package/dist/components/feedBack/emptyState/emptyState.d.ts +2 -0
  94. package/dist/components/feedBack/emptyState/emptyState.js +22 -12
  95. package/dist/components/feedBack/emptyState/emptyState.js.map +1 -1
  96. package/dist/components/feedBack/message/message.d.ts +2 -0
  97. package/dist/components/feedBack/message/message.js +30 -19
  98. package/dist/components/feedBack/message/message.js.map +1 -1
  99. package/dist/components/feedBack/modal/modal.js +40 -40
  100. package/dist/components/feedBack/modal/modal.js.map +1 -1
  101. package/dist/components/feedBack/skeleton/skeleton.d.ts +10 -2
  102. package/dist/components/feedBack/skeleton/skeleton.js +37 -34
  103. package/dist/components/feedBack/skeleton/skeleton.js.map +1 -1
  104. package/dist/components/feedBack/snackbar/snackbar.js +104 -103
  105. package/dist/components/feedBack/snackbar/snackbar.js.map +1 -1
  106. package/dist/components/feedBack/tooltip/tooltip.d.ts +9 -1
  107. package/dist/components/feedBack/tooltip/tooltip.js +67 -47
  108. package/dist/components/feedBack/tooltip/tooltip.js.map +1 -1
  109. package/dist/components/inputs/button/button.d.ts +2 -0
  110. package/dist/components/inputs/button/button.js +62 -58
  111. package/dist/components/inputs/button/button.js.map +1 -1
  112. package/dist/components/inputs/buttonGroups/buttonGroup.d.ts +2 -0
  113. package/dist/components/inputs/buttonGroups/buttonGroup.js +40 -36
  114. package/dist/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  115. package/dist/components/inputs/checkbox/checkbox.d.ts +10 -0
  116. package/dist/components/inputs/checkbox/checkbox.js +84 -59
  117. package/dist/components/inputs/checkbox/checkbox.js.map +1 -1
  118. package/dist/components/inputs/datePicker/datePicker.js +170 -164
  119. package/dist/components/inputs/datePicker/datePicker.js.map +1 -1
  120. package/dist/components/inputs/datePicker/datePickerDay.d.ts +1 -1
  121. package/dist/components/inputs/datePicker/datePickerDay.js +52 -44
  122. package/dist/components/inputs/datePicker/datePickerDay.js.map +1 -1
  123. package/dist/components/inputs/datePicker/datePickerIconButton.d.ts +1 -1
  124. package/dist/components/inputs/datePicker/datePickerIconButton.js +32 -28
  125. package/dist/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  126. package/dist/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  127. package/dist/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  128. package/dist/components/inputs/floatingButton/floatingButton.js +32 -30
  129. package/dist/components/inputs/floatingButton/floatingButton.js.map +1 -1
  130. package/dist/components/inputs/radioButton/radioButton.d.ts +9 -0
  131. package/dist/components/inputs/radioButton/radioButton.js +77 -58
  132. package/dist/components/inputs/radioButton/radioButton.js.map +1 -1
  133. package/dist/components/inputs/rating/rating.d.ts +8 -0
  134. package/dist/components/inputs/rating/rating.js +85 -70
  135. package/dist/components/inputs/rating/rating.js.map +1 -1
  136. package/dist/components/inputs/selectField/dropdownMenu.d.ts +20 -1
  137. package/dist/components/inputs/selectField/dropdownMenu.js +266 -113
  138. package/dist/components/inputs/selectField/dropdownMenu.js.map +1 -1
  139. package/dist/components/inputs/selectField/optionNavigation.d.ts +17 -0
  140. package/dist/components/inputs/selectField/optionNavigation.js +38 -0
  141. package/dist/components/inputs/selectField/optionNavigation.js.map +1 -0
  142. package/dist/components/inputs/selectField/selectField.d.ts +31 -1
  143. package/dist/components/inputs/selectField/selectField.js +358 -218
  144. package/dist/components/inputs/selectField/selectField.js.map +1 -1
  145. package/dist/components/inputs/slider/slider.d.ts +22 -1
  146. package/dist/components/inputs/slider/slider.js +330 -261
  147. package/dist/components/inputs/slider/slider.js.map +1 -1
  148. package/dist/components/inputs/textField/textField.d.ts +7 -0
  149. package/dist/components/inputs/textField/textField.js +118 -100
  150. package/dist/components/inputs/textField/textField.js.map +1 -1
  151. package/dist/components/inputs/textField/textFieldWrapper.d.ts +15 -1
  152. package/dist/components/inputs/textField/textFieldWrapper.js +45 -34
  153. package/dist/components/inputs/textField/textFieldWrapper.js.map +1 -1
  154. package/dist/components/inputs/timePicker/timePicker.js +91 -85
  155. package/dist/components/inputs/timePicker/timePicker.js.map +1 -1
  156. package/dist/components/inputs/toggle/toggle.d.ts +4 -0
  157. package/dist/components/inputs/toggle/toggle.js +80 -61
  158. package/dist/components/inputs/toggle/toggle.js.map +1 -1
  159. package/dist/components/inputs/valueSlider/valueSlider.d.ts +12 -0
  160. package/dist/components/inputs/valueSlider/valueSlider.js +23 -22
  161. package/dist/components/inputs/valueSlider/valueSlider.js.map +1 -1
  162. package/dist/components/layout/appLayout/appLayout.d.ts +2 -0
  163. package/dist/components/layout/appLayout/appLayout.js +25 -24
  164. package/dist/components/layout/appLayout/appLayout.js.map +1 -1
  165. package/dist/components/layout/divider/divider.d.ts +2 -0
  166. package/dist/components/layout/divider/divider.js +23 -22
  167. package/dist/components/layout/divider/divider.js.map +1 -1
  168. package/dist/components/layout/floatingWindow/floatingWindow.d.ts +2 -0
  169. package/dist/components/layout/floatingWindow/floatingWindow.js +145 -139
  170. package/dist/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  171. package/dist/components/layout/grid/grid.d.ts +12 -1
  172. package/dist/components/layout/grid/grid.js +51 -36
  173. package/dist/components/layout/grid/grid.js.map +1 -1
  174. package/dist/components/layout/page/page.d.ts +2 -0
  175. package/dist/components/layout/page/page.js +16 -8
  176. package/dist/components/layout/page/page.js.map +1 -1
  177. package/dist/components/layout/pageHeader/pageHeader.d.ts +2 -0
  178. package/dist/components/layout/pageHeader/pageHeader.js +22 -13
  179. package/dist/components/layout/pageHeader/pageHeader.js.map +1 -1
  180. package/dist/components/layout/sectionHeader/sectionHeader.d.ts +2 -0
  181. package/dist/components/layout/sectionHeader/sectionHeader.js +37 -27
  182. package/dist/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  183. package/dist/components/layout/sheet/sheet.d.ts +2 -0
  184. package/dist/components/layout/sheet/sheet.js +80 -79
  185. package/dist/components/layout/sheet/sheet.js.map +1 -1
  186. package/dist/components/layout/stack/stack.d.ts +2 -0
  187. package/dist/components/layout/stack/stack.js +29 -17
  188. package/dist/components/layout/stack/stack.js.map +1 -1
  189. package/dist/components/navigation/appBar/appBar.d.ts +2 -0
  190. package/dist/components/navigation/appBar/appBar.js +24 -23
  191. package/dist/components/navigation/appBar/appBar.js.map +1 -1
  192. package/dist/components/navigation/bottomBar/bottomBar.js +81 -77
  193. package/dist/components/navigation/bottomBar/bottomBar.js.map +1 -1
  194. package/dist/components/navigation/breadcrumbs/breadcrumbs.d.ts +2 -0
  195. package/dist/components/navigation/breadcrumbs/breadcrumbs.js +29 -27
  196. package/dist/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  197. package/dist/components/navigation/menu/menu.d.ts +12 -0
  198. package/dist/components/navigation/menu/menu.js.map +1 -1
  199. package/dist/components/navigation/menu/menuContext.d.ts +2 -0
  200. package/dist/components/navigation/menu/menuContext.js.map +1 -1
  201. package/dist/components/navigation/menu/menuFloating.js +42 -30
  202. package/dist/components/navigation/menu/menuFloating.js.map +1 -1
  203. package/dist/components/navigation/menu/menuItem.d.ts +4 -0
  204. package/dist/components/navigation/menu/menuItem.js +60 -48
  205. package/dist/components/navigation/menu/menuItem.js.map +1 -1
  206. package/dist/components/navigation/menu/menuList.d.ts +5 -1
  207. package/dist/components/navigation/menu/menuList.js +30 -19
  208. package/dist/components/navigation/menu/menuList.js.map +1 -1
  209. package/dist/components/navigation/menu/menuSubmenu.js +53 -40
  210. package/dist/components/navigation/menu/menuSubmenu.js.map +1 -1
  211. package/dist/components/navigation/pagination/pagination.d.ts +2 -0
  212. package/dist/components/navigation/pagination/pagination.js +51 -49
  213. package/dist/components/navigation/pagination/pagination.js.map +1 -1
  214. package/dist/components/navigation/sidebar/sidebar.js +39 -38
  215. package/dist/components/navigation/sidebar/sidebar.js.map +1 -1
  216. package/dist/components/navigation/stepper/stepper.d.ts +2 -0
  217. package/dist/components/navigation/stepper/stepper.js +37 -28
  218. package/dist/components/navigation/stepper/stepper.js.map +1 -1
  219. package/dist/components/navigation/tabs/tab/tab.js +42 -40
  220. package/dist/components/navigation/tabs/tab/tab.js.map +1 -1
  221. package/dist/components/navigation/tabs/tabs.d.ts +6 -0
  222. package/dist/components/navigation/tabs/tabs.js +83 -86
  223. package/dist/components/navigation/tabs/tabs.js.map +1 -1
  224. package/dist/connects/rt/table/headerCellRenderer.d.ts +4 -1
  225. package/dist/connects/rt/table/headerCellRenderer.js +45 -15
  226. package/dist/connects/rt/table/headerCellRenderer.js.map +1 -1
  227. package/dist/connects/rt/table/table.d.ts +15 -1
  228. package/dist/connects/rt/table/table.js +125 -131
  229. package/dist/connects/rt/table/table.js.map +1 -1
  230. package/dist/headless/components/base/icon/icon.js +49 -37
  231. package/dist/headless/components/base/icon/icon.js.map +1 -1
  232. package/dist/headless/components/base/ripple/ripple.js +42 -27
  233. package/dist/headless/components/base/ripple/ripple.js.map +1 -1
  234. package/dist/headless/components/dataDisplay/avatar/avatar.js +51 -38
  235. package/dist/headless/components/dataDisplay/avatar/avatar.js.map +1 -1
  236. package/dist/headless/components/dataDisplay/badge/badge.js +37 -28
  237. package/dist/headless/components/dataDisplay/badge/badge.js.map +1 -1
  238. package/dist/headless/components/dataDisplay/card/card.js +50 -23
  239. package/dist/headless/components/dataDisplay/card/card.js.map +1 -1
  240. package/dist/headless/components/dataDisplay/carousel/carousel.js +55 -55
  241. package/dist/headless/components/dataDisplay/carousel/carousel.js.map +1 -1
  242. package/dist/headless/components/dataDisplay/chat/chatIconButton.js +30 -26
  243. package/dist/headless/components/dataDisplay/chat/chatIconButton.js.map +1 -1
  244. package/dist/headless/components/dataDisplay/chat/chatLayout.js +56 -55
  245. package/dist/headless/components/dataDisplay/chat/chatLayout.js.map +1 -1
  246. package/dist/headless/components/dataDisplay/chip/chip.js +108 -81
  247. package/dist/headless/components/dataDisplay/chip/chip.js.map +1 -1
  248. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js +35 -31
  249. package/dist/headless/components/dataDisplay/chipGroup/chipGroup.js.map +1 -1
  250. package/dist/headless/components/dataDisplay/descriptionList/descriptionList.js.map +1 -1
  251. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js +143 -98
  252. package/dist/headless/components/dataDisplay/expansionPanel/expansionPanel.js.map +1 -1
  253. package/dist/headless/components/dataDisplay/kanban/kanban.js +45 -34
  254. package/dist/headless/components/dataDisplay/kanban/kanban.js.map +1 -1
  255. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js +30 -29
  256. package/dist/headless/components/dataDisplay/lazyImage/lazyImage.js.map +1 -1
  257. package/dist/headless/components/dataDisplay/list/list.js +15 -14
  258. package/dist/headless/components/dataDisplay/list/list.js.map +1 -1
  259. package/dist/headless/components/dataDisplay/meter/meter.js +19 -18
  260. package/dist/headless/components/dataDisplay/meter/meter.js.map +1 -1
  261. package/dist/headless/components/dataDisplay/personChip/personChip.js +39 -27
  262. package/dist/headless/components/dataDisplay/personChip/personChip.js.map +1 -1
  263. package/dist/headless/components/dataDisplay/stat/stat.js +27 -15
  264. package/dist/headless/components/dataDisplay/stat/stat.js.map +1 -1
  265. package/dist/headless/components/dataDisplay/table/table.js +40 -36
  266. package/dist/headless/components/dataDisplay/table/table.js.map +1 -1
  267. package/dist/headless/components/dataDisplay/table/tableBody.js +10 -4
  268. package/dist/headless/components/dataDisplay/table/tableBody.js.map +1 -1
  269. package/dist/headless/components/dataDisplay/table/tableCell.js +20 -13
  270. package/dist/headless/components/dataDisplay/table/tableCell.js.map +1 -1
  271. package/dist/headless/components/dataDisplay/table/tableColumns.js +112 -0
  272. package/dist/headless/components/dataDisplay/table/tableColumns.js.map +1 -0
  273. package/dist/headless/components/dataDisplay/table/tableHead.js +9 -3
  274. package/dist/headless/components/dataDisplay/table/tableHead.js.map +1 -1
  275. package/dist/headless/components/dataDisplay/table/tableHeadCell.js +60 -65
  276. package/dist/headless/components/dataDisplay/table/tableHeadCell.js.map +1 -1
  277. package/dist/headless/components/dataDisplay/table/tableRow.js +28 -16
  278. package/dist/headless/components/dataDisplay/table/tableRow.js.map +1 -1
  279. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js +78 -58
  280. package/dist/headless/components/dataDisplay/thumbCard/thumbCard.js.map +1 -1
  281. package/dist/headless/components/dataDisplay/treeView/treeView.js +24 -23
  282. package/dist/headless/components/dataDisplay/treeView/treeView.js.map +1 -1
  283. package/dist/headless/components/feedBack/emptyState/emptyState.js +21 -11
  284. package/dist/headless/components/feedBack/emptyState/emptyState.js.map +1 -1
  285. package/dist/headless/components/feedBack/message/message.js +31 -20
  286. package/dist/headless/components/feedBack/message/message.js.map +1 -1
  287. package/dist/headless/components/feedBack/modal/modal.js +44 -44
  288. package/dist/headless/components/feedBack/modal/modal.js.map +1 -1
  289. package/dist/headless/components/feedBack/skeleton/skeleton.js +38 -35
  290. package/dist/headless/components/feedBack/skeleton/skeleton.js.map +1 -1
  291. package/dist/headless/components/feedBack/snackbar/snackbar.js +108 -107
  292. package/dist/headless/components/feedBack/snackbar/snackbar.js.map +1 -1
  293. package/dist/headless/components/feedBack/tooltip/tooltip.js +67 -47
  294. package/dist/headless/components/feedBack/tooltip/tooltip.js.map +1 -1
  295. package/dist/headless/components/inputs/button/button.js +62 -58
  296. package/dist/headless/components/inputs/button/button.js.map +1 -1
  297. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js +40 -36
  298. package/dist/headless/components/inputs/buttonGroups/buttonGroup.js.map +1 -1
  299. package/dist/headless/components/inputs/checkbox/checkbox.js +85 -60
  300. package/dist/headless/components/inputs/checkbox/checkbox.js.map +1 -1
  301. package/dist/headless/components/inputs/datePicker/datePicker.js +170 -164
  302. package/dist/headless/components/inputs/datePicker/datePicker.js.map +1 -1
  303. package/dist/headless/components/inputs/datePicker/datePickerDay.js +52 -44
  304. package/dist/headless/components/inputs/datePicker/datePickerDay.js.map +1 -1
  305. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js +32 -28
  306. package/dist/headless/components/inputs/datePicker/datePickerIconButton.js.map +1 -1
  307. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js +160 -154
  308. package/dist/headless/components/inputs/dateTimePicker/dateTimePicker.js.map +1 -1
  309. package/dist/headless/components/inputs/floatingButton/floatingButton.js +32 -30
  310. package/dist/headless/components/inputs/floatingButton/floatingButton.js.map +1 -1
  311. package/dist/headless/components/inputs/radioButton/radioButton.js +77 -58
  312. package/dist/headless/components/inputs/radioButton/radioButton.js.map +1 -1
  313. package/dist/headless/components/inputs/rating/rating.js +85 -70
  314. package/dist/headless/components/inputs/rating/rating.js.map +1 -1
  315. package/dist/headless/components/inputs/selectField/dropdownMenu.js +266 -113
  316. package/dist/headless/components/inputs/selectField/dropdownMenu.js.map +1 -1
  317. package/dist/headless/components/inputs/selectField/optionNavigation.js +38 -0
  318. package/dist/headless/components/inputs/selectField/optionNavigation.js.map +1 -0
  319. package/dist/headless/components/inputs/selectField/selectField.js +358 -218
  320. package/dist/headless/components/inputs/selectField/selectField.js.map +1 -1
  321. package/dist/headless/components/inputs/slider/slider.js +330 -261
  322. package/dist/headless/components/inputs/slider/slider.js.map +1 -1
  323. package/dist/headless/components/inputs/textField/textField.js +118 -100
  324. package/dist/headless/components/inputs/textField/textField.js.map +1 -1
  325. package/dist/headless/components/inputs/textField/textFieldWrapper.js +45 -34
  326. package/dist/headless/components/inputs/textField/textFieldWrapper.js.map +1 -1
  327. package/dist/headless/components/inputs/timePicker/timePicker.js +91 -85
  328. package/dist/headless/components/inputs/timePicker/timePicker.js.map +1 -1
  329. package/dist/headless/components/inputs/toggle/toggle.js +79 -60
  330. package/dist/headless/components/inputs/toggle/toggle.js.map +1 -1
  331. package/dist/headless/components/inputs/valueSlider/valueSlider.js +25 -24
  332. package/dist/headless/components/inputs/valueSlider/valueSlider.js.map +1 -1
  333. package/dist/headless/components/layout/appLayout/appLayout.js +27 -26
  334. package/dist/headless/components/layout/appLayout/appLayout.js.map +1 -1
  335. package/dist/headless/components/layout/divider/divider.js +18 -17
  336. package/dist/headless/components/layout/divider/divider.js.map +1 -1
  337. package/dist/headless/components/layout/floatingWindow/floatingWindow.js +145 -139
  338. package/dist/headless/components/layout/floatingWindow/floatingWindow.js.map +1 -1
  339. package/dist/headless/components/layout/grid/grid.js +48 -33
  340. package/dist/headless/components/layout/grid/grid.js.map +1 -1
  341. package/dist/headless/components/layout/page/page.js +15 -7
  342. package/dist/headless/components/layout/page/page.js.map +1 -1
  343. package/dist/headless/components/layout/pageHeader/pageHeader.js +20 -11
  344. package/dist/headless/components/layout/pageHeader/pageHeader.js.map +1 -1
  345. package/dist/headless/components/layout/sectionHeader/sectionHeader.js +36 -26
  346. package/dist/headless/components/layout/sectionHeader/sectionHeader.js.map +1 -1
  347. package/dist/headless/components/layout/sheet/sheet.js +80 -79
  348. package/dist/headless/components/layout/sheet/sheet.js.map +1 -1
  349. package/dist/headless/components/layout/stack/stack.js +29 -17
  350. package/dist/headless/components/layout/stack/stack.js.map +1 -1
  351. package/dist/headless/components/navigation/appBar/appBar.js +15 -14
  352. package/dist/headless/components/navigation/appBar/appBar.js.map +1 -1
  353. package/dist/headless/components/navigation/bottomBar/bottomBar.js +81 -77
  354. package/dist/headless/components/navigation/bottomBar/bottomBar.js.map +1 -1
  355. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js +32 -30
  356. package/dist/headless/components/navigation/breadcrumbs/breadcrumbs.js.map +1 -1
  357. package/dist/headless/components/navigation/menu/menu.js.map +1 -1
  358. package/dist/headless/components/navigation/menu/menuContext.js.map +1 -1
  359. package/dist/headless/components/navigation/menu/menuFloating.js +42 -30
  360. package/dist/headless/components/navigation/menu/menuFloating.js.map +1 -1
  361. package/dist/headless/components/navigation/menu/menuItem.js +60 -48
  362. package/dist/headless/components/navigation/menu/menuItem.js.map +1 -1
  363. package/dist/headless/components/navigation/menu/menuList.js +30 -19
  364. package/dist/headless/components/navigation/menu/menuList.js.map +1 -1
  365. package/dist/headless/components/navigation/menu/menuSubmenu.js +53 -40
  366. package/dist/headless/components/navigation/menu/menuSubmenu.js.map +1 -1
  367. package/dist/headless/components/navigation/pagination/pagination.js +51 -49
  368. package/dist/headless/components/navigation/pagination/pagination.js.map +1 -1
  369. package/dist/headless/components/navigation/sidebar/sidebar.js +29 -28
  370. package/dist/headless/components/navigation/sidebar/sidebar.js.map +1 -1
  371. package/dist/headless/components/navigation/stepper/stepper.js +42 -33
  372. package/dist/headless/components/navigation/stepper/stepper.js.map +1 -1
  373. package/dist/headless/components/navigation/tabs/tab/tab.js +41 -39
  374. package/dist/headless/components/navigation/tabs/tab/tab.js.map +1 -1
  375. package/dist/headless/components/navigation/tabs/tabs.js +95 -98
  376. package/dist/headless/components/navigation/tabs/tabs.js.map +1 -1
  377. package/dist/headless/hooks/useDismissOnEscape.js +16 -0
  378. package/dist/headless/hooks/useDismissOnEscape.js.map +1 -0
  379. package/dist/headless/hooks/useFocusTrap.js +1 -0
  380. package/dist/headless/hooks/useFocusTrap.js.map +1 -1
  381. package/dist/headless/hooks/useHelperText.js +13 -0
  382. package/dist/headless/hooks/useHelperText.js.map +1 -0
  383. package/dist/headless/utils/controlProps.js +14 -0
  384. package/dist/headless/utils/controlProps.js.map +1 -0
  385. package/dist/headless/utils/overlayLayer.js +14 -7
  386. package/dist/headless/utils/overlayLayer.js.map +1 -1
  387. package/dist/headless/utils/ownClick.js +40 -0
  388. package/dist/headless/utils/ownClick.js.map +1 -0
  389. package/dist/headless/utils/readOnlyToggle.js +14 -0
  390. package/dist/headless/utils/readOnlyToggle.js.map +1 -0
  391. package/dist/hooks/useDismissOnEscape.d.ts +11 -0
  392. package/dist/hooks/useDismissOnEscape.js +16 -0
  393. package/dist/hooks/useDismissOnEscape.js.map +1 -0
  394. package/dist/hooks/useFocusTrap.d.ts +2 -0
  395. package/dist/hooks/useFocusTrap.js +1 -0
  396. package/dist/hooks/useFocusTrap.js.map +1 -1
  397. package/dist/hooks/useHelperText.d.ts +21 -0
  398. package/dist/hooks/useHelperText.js +13 -0
  399. package/dist/hooks/useHelperText.js.map +1 -0
  400. package/dist/index.cjs +2 -2
  401. package/dist/index.cjs.map +1 -1
  402. package/dist/utils/controlProps.d.ts +16 -0
  403. package/dist/utils/controlProps.js +14 -0
  404. package/dist/utils/controlProps.js.map +1 -0
  405. package/dist/utils/overlayLayer.d.ts +15 -3
  406. package/dist/utils/overlayLayer.js +14 -7
  407. package/dist/utils/overlayLayer.js.map +1 -1
  408. package/dist/utils/ownClick.d.ts +16 -0
  409. package/dist/utils/ownClick.js +40 -0
  410. package/dist/utils/ownClick.js.map +1 -0
  411. package/dist/utils/readOnlyToggle.d.ts +15 -0
  412. package/dist/utils/readOnlyToggle.js +14 -0
  413. package/dist/utils/readOnlyToggle.js.map +1 -0
  414. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"selectField.js","sources":["../../../../../src/components/inputs/selectField/selectField.tsx"],"sourcesContent":["import type { HTMLAttributes, SyntheticEvent } from \"react\";\nimport React, { useState, useRef, useEffect, useMemo, forwardRef } from \"react\";\nimport cn from \"clsx\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { DropdownMenu, DropdownItem, DropdownItemProps } from \"./dropdownMenu\";\nimport Chip from \"../../dataDisplay/chip/chip\";\nimport { TextFieldWrapper } from \"../textField\";\nimport Icon from \"../../base/icon/icon\";\nimport { MenuItemProps } from \"../../navigation/menu\";\n\nconst SelectArrowIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"arrow_drop_down\" {...props} />;\n\nconst ClearIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"close\" size={20} {...props} />;\n\nfunction stopEvent(event: React.SyntheticEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\nexport type OnSelectChange = (e: SyntheticEvent, data: SelectFieldProps) => void;\n\nexport interface SelectFieldProps {\n className?: string;\n value?: null | string | number | (string | number | undefined | null)[];\n defaultValue?: null | string | number | (string | number)[];\n onChange?: OnSelectChange;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n multiple?: boolean;\n menuMaxHeight?: number;\n menuMiddleware?: DropdownItemProps[\"menuMiddleware\"];\n menuNoItemsMessage?: React.ReactNode;\n menuContainer?: HTMLElement;\n search?: true | false | \"menu\";\n chips?: boolean;\n isFocused?: boolean;\n error?: boolean;\n items: DropdownItem[];\n label?: string;\n variant?: \"outlined\" | \"filled\";\n /** Height of the field, as for TextField: `small` (40px, for toolbars), `medium` (default) or `large`. */\n size?: \"small\" | \"medium\" | \"large\";\n fullWidth?: boolean;\n helperText?: React.ReactNode;\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n isLoading?: boolean;\n resetSearch?: () => void;\n inline?: boolean;\n endAdornment?: React.ReactNode;\n hideSelectArrowIcon?: boolean;\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n /** Shows a clear button to reset the selection. */\n clearable?: boolean;\n /** Allows creating a new option from the current search text. */\n creatable?: boolean;\n /** Invoked with the typed text when the user creates a new option. */\n onCreate?: (inputValue: string, event: React.SyntheticEvent) => void;\n /** Windows long option lists for performance (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n /** Accessible label for the combobox control. */\n \"aria-label\"?: string;\n id?: string;\n}\n\nexport const SelectField = forwardRef<HTMLSpanElement, SelectFieldProps>(function SelectField(props, ref) {\n const {\n className,\n value: valueProp,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n name,\n multiple,\n menuMaxHeight,\n menuMiddleware,\n menuNoItemsMessage,\n menuContainer,\n search,\n chips,\n isFocused: isFocusedProp,\n error,\n items,\n label,\n variant = \"outlined\",\n size = \"medium\",\n fullWidth,\n helperText,\n onSearch,\n resetSearch,\n isLoading,\n inline,\n endAdornment,\n hideSelectArrowIcon,\n optionRenderer,\n clearable,\n creatable,\n onCreate,\n virtualized,\n itemHeight,\n \"aria-label\": ariaLabel,\n id,\n ...rest\n } = props;\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [valueState, setValueState] = useState<typeof valueProp>(defaultValue);\n const [selectedItems, setSelectedItems] = useState<typeof items>(() => {\n // Seed from the effective initial value so an uncontrolled `defaultValue`\n // shows its selection (and floats the label) before any interaction.\n const initialValue = valueProp != null ? valueProp : defaultValue;\n\n if (Array.isArray(initialValue)) {\n return items.filter((item) => initialValue.includes(item.value));\n }\n\n const item = initialValue == null ? undefined : items.find((i) => i.value === initialValue);\n\n return item ? [item] : [];\n });\n const [searchValue, setSearchValue] = useState(\"\");\n const { current: isControlled } = useRef(valueProp != null);\n const anchorElementRef = useRef<HTMLSpanElement>(null);\n const forkedAnchorRef = useForkRef<HTMLSpanElement>(ref, anchorElementRef);\n const searchWrapperRef = useRef<HTMLSpanElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const value = isControlled ? valueProp : valueState;\n\n const isFocused = useMemo(() => isFocusedProp || isOpen, [isFocusedProp, isOpen]);\n\n const onMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n // Только для левой клавиши мышки.\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n anchorElementRef.current?.focus();\n setIsOpen(!isOpen);\n };\n\n const onClose = () => {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n };\n\n const onFocus = () => {\n if (search === true) {\n searchInputRef.current?.focus();\n }\n };\n\n const onKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (!readOnly) {\n const validKeys = [\" \", \"ArrowUp\", \"ArrowDown\", \"Enter\"];\n\n if (validKeys.includes(event.key)) {\n event.preventDefault();\n setIsOpen(!isOpen);\n }\n }\n };\n\n useEffect(() => {\n if (!isFocused || (search === \"menu\" && !isOpen)) {\n setSearchValue(\"\");\n resetSearch?.();\n }\n }, [isFocused, search, isOpen, resetSearch]);\n\n // Keep the displayed selection in sync with the effective value (controlled\n // `value` or uncontrolled `defaultValue`/internal state), so the label floats\n // whenever there is a value — including the initial default, without focus.\n useEffect(() => {\n if (Array.isArray(value)) {\n setSelectedItems(items.filter((item) => value.includes(item.value)));\n } else if (value == null || value === \"\") {\n setSelectedItems([]);\n } else {\n const item = items.find((item) => item.value === value);\n setSelectedItems(item ? [item] : []);\n }\n }, [value, items]);\n\n useSafeLayoutEffect(() => {\n if (searchWrapperRef.current) {\n searchWrapperRef.current.scrollLeft = searchWrapperRef.current.scrollWidth;\n }\n }, [value]);\n\n const updateValue = (event: React.SyntheticEvent, value: typeof valueProp) => {\n onChange?.(event, { ...props, value, name: name || undefined });\n setValueState(value);\n };\n\n const onItemClick = (event: React.SyntheticEvent, item: DropdownItem) => {\n let newValue: typeof valueProp;\n let newSelectedItem: typeof selectedItems;\n if (multiple) {\n const valueArray = Array.isArray(value) ? value : [value].filter(Boolean);\n newValue = valueArray.slice();\n newSelectedItem = selectedItems.slice();\n const itemIndex = valueArray.findIndex((el) => el === item.value);\n\n if (itemIndex === -1) {\n newValue.push(item.value);\n newSelectedItem.push(item);\n } else {\n newValue.splice(itemIndex, 1);\n newSelectedItem.splice(itemIndex, 1);\n }\n } else {\n newValue = value === item.value ? \"\" : item.value;\n newSelectedItem = [item];\n }\n\n if (searchValue) {\n setSearchValue(\"\");\n }\n\n if (!multiple) {\n setIsOpen(false);\n anchorElementRef.current?.focus();\n }\n setSelectedItems(newSelectedItem);\n updateValue(event, newValue);\n };\n\n const onSearchInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n setSearchValue(event.target.value);\n onSearch?.(event);\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n const onDeleteChip = (currentValue: typeof valueProp) => (event: React.SyntheticEvent) => {\n if (Array.isArray(value)) {\n const newValue = value.filter((value) => currentValue !== value);\n updateValue(event, newValue);\n const newSelectedItems = selectedItems.filter((el) => el.value !== currentValue);\n setSelectedItems(newSelectedItems);\n }\n };\n\n const onResetSelected = (event: React.MouseEvent) => {\n updateValue(event, []);\n setSelectedItems([]);\n };\n\n let displayValues: string | React.ReactNode[];\n\n const classes = cn(\"smwb-select-field\", className, {\n \"smwb-select-field--filled\": variant === \"filled\" && label,\n \"smwb-select-field--disabled\": disabled,\n \"smwb-select-field--search\": search,\n \"smwb-select-field--inline\": inline,\n });\n\n if (chips) {\n displayValues = selectedItems.map(({ key, value, text }) => (\n <Chip\n key={key || value}\n label={text}\n size={size === \"small\" ? \"small\" : \"medium\"}\n onDelete={onDeleteChip(value)}\n onDeleteMouseDown={stopEvent}\n />\n ));\n } else {\n displayValues = selectedItems.map((el) => el.text).join(\", \");\n }\n\n return (\n <>\n <TextFieldWrapper\n label={label}\n helperText={helperText}\n variant={variant}\n disabled={disabled}\n className={cn(className, size !== \"medium\" && `smwb-text-field_size-${size}`)}\n error={error}\n fullWidth={fullWidth}\n isFilledState={!!selectedItems.length || !!searchValue}\n isFocused={isFocused}\n inline={inline}\n {...rest}\n >\n <span\n ref={forkedAnchorRef}\n id={id}\n className={classes}\n tabIndex={disabled ? undefined : 0}\n role=\"button\"\n aria-haspopup=\"listbox\"\n aria-expanded={isOpen}\n aria-disabled={disabled || undefined}\n aria-label={ariaLabel}\n onMouseDown={disabled || readOnly ? undefined : onMouseDown}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n data-testid=\"select-field\"\n >\n <span className=\"smwb-select-field__search-wrapper\" ref={searchWrapperRef}>\n {displayValues && <span className=\"smwb-select-field__values\">{displayValues}</span>}\n {search && typeof search === \"boolean\" && !readOnly && (\n <span className=\"smwb-select-field__search\">\n <span className=\"smwb-select-field__search-text\">{searchValue}</span>\n <input\n className=\"smwb-select-field__search-input\"\n ref={searchInputRef}\n type=\"text\"\n value={searchValue}\n onChange={onSearchInputChange}\n onMouseDown={(event: React.MouseEvent<HTMLInputElement>) => {\n event.stopPropagation();\n setIsOpen(true);\n }}\n onKeyDown={(event) => {\n event.stopPropagation();\n }}\n data-testid=\"search-input\"\n />\n </span>\n )}\n </span>\n <span className=\"smwb-select-field__actions\">\n {((Array.isArray(value) && value.length > 0) || (clearable && selectedItems.length > 0)) && !disabled && (\n <ClearIcon\n onClick={onResetSelected}\n onMouseDown={stopEvent}\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--close\")}\n aria-label=\"Clear selection\"\n role=\"button\"\n />\n )}\n {endAdornment}\n {!hideSelectArrowIcon && (\n <SelectArrowIcon\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--arrow\", {\n \"smwb-select-field__icon--opened\": isOpen,\n \"smwb-select-field__icon--focused\": isFocused,\n \"smwb-select-field__icon--error\": error,\n })}\n />\n )}\n </span>\n </span>\n </TextFieldWrapper>\n <DropdownMenu\n anchorElementRef={anchorElementRef}\n menuMaxHeight={menuMaxHeight}\n menuMiddleware={menuMiddleware}\n search={search === \"menu\"}\n onSearchInputChange={onSearchInputChange}\n optionRenderer={optionRenderer}\n items={\n onSearch\n ? items\n : searchValue\n ? items.filter((el) => el.text.search(new RegExp(searchValue, \"i\")) !== -1)\n : items\n }\n searchValue={searchValue}\n isOpen={isOpen}\n onClose={onClose}\n onItemClick={onItemClick}\n value={value}\n isLoading={isLoading}\n menuNoItemsMessage={menuNoItemsMessage}\n container={menuContainer}\n virtualized={virtualized}\n itemHeight={itemHeight}\n createOption={\n creatable && searchValue && !items.some((i) => i.text.toLowerCase() === String(searchValue).toLowerCase())\n ? {\n text: `Создать \"${searchValue}\"`,\n onCreate: (event: React.SyntheticEvent) => {\n onCreate?.(String(searchValue), event);\n setSearchValue(\"\");\n setIsOpen(false);\n },\n }\n : undefined\n }\n />\n </>\n );\n});\n\nexport default SelectField;\n"],"names":["SelectArrowIcon","props","jsx","Icon","ClearIcon","stopEvent","event","SelectField","forwardRef","ref","className","valueProp","defaultValue","onChange","disabled","readOnly","name","multiple","menuMaxHeight","menuMiddleware","menuNoItemsMessage","menuContainer","search","chips","isFocusedProp","error","items","label","variant","size","fullWidth","helperText","onSearch","resetSearch","isLoading","inline","endAdornment","hideSelectArrowIcon","optionRenderer","clearable","creatable","onCreate","virtualized","itemHeight","ariaLabel","id","rest","isOpen","setIsOpen","useState","valueState","setValueState","selectedItems","setSelectedItems","initialValue","item","i","searchValue","setSearchValue","isControlled","useRef","anchorElementRef","forkedAnchorRef","useForkRef","searchWrapperRef","searchInputRef","value","isFocused","useMemo","onMouseDown","_a","onClose","onFocus","onKeyDown","useEffect","useSafeLayoutEffect","updateValue","onItemClick","newValue","newSelectedItem","valueArray","itemIndex","el","onSearchInputChange","onDeleteChip","currentValue","newSelectedItems","onResetSelected","displayValues","classes","cn","key","text","Chip","jsxs","Fragment","TextFieldWrapper","DropdownMenu"],"mappings":"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"}
1
+ {"version":3,"file":"selectField.js","sources":["../../../../../src/components/inputs/selectField/selectField.tsx"],"sourcesContent":["import type { HTMLAttributes, SyntheticEvent } from \"react\";\nimport React, { useState, useRef, useEffect, useMemo, forwardRef } from \"react\";\nimport cn from \"clsx\";\nimport { useSafeLayoutEffect } from \"../../../hooks/useSafeLayoutEffect\";\nimport { useForkRef } from \"../../../hooks/useForkRef\";\nimport { useId } from \"../../../hooks/useId\";\nimport { DropdownMenu, DropdownItem, DropdownItemProps, dropdownOptionId } from \"./dropdownMenu\";\nimport { firstOption, lastOption, matchOption, moveOption } from \"./optionNavigation\";\nimport Chip from \"../../dataDisplay/chip/chip\";\nimport { TextFieldWrapper } from \"../textField\";\nimport { useHelperText } from \"../../../hooks/useHelperText\";\nimport Icon from \"../../base/icon/icon\";\nimport { MenuItemProps } from \"../../navigation/menu\";\n\nconst SelectArrowIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"arrow_drop_down\" {...props} />;\n\nconst ClearIcon = (props: HTMLAttributes<HTMLSpanElement>) => <Icon name=\"close\" size={20} {...props} />;\n\nfunction stopEvent(event: React.SyntheticEvent) {\n event.preventDefault();\n event.stopPropagation();\n}\n\n// The items a value selects, in the order of `items`.\nfunction findSelectedItems(items: DropdownItem[], value: SelectFieldProps[\"value\"]): DropdownItem[] {\n if (Array.isArray(value)) {\n return items.filter((item) => value.includes(item.value));\n }\n if (value == null || value === \"\") {\n return [];\n }\n const item = items.find((item) => item.value === value);\n return item ? [item] : [];\n}\n\n// The items whose text holds the search text, in any case. The text is taken\n// literally: \"C++\" or \"(\" searches for those characters.\nfunction filterItems(items: DropdownItem[], searchText: string): DropdownItem[] {\n if (!searchText) {\n return items;\n }\n const pattern = new RegExp(searchText.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"), \"i\");\n return items.filter((el) => el.text.search(pattern) !== -1);\n}\n\n// A key that types a character: type-ahead in the options.\nfunction isPrintableKey(event: React.KeyboardEvent) {\n return event.key.length === 1 && event.key !== \" \" && !event.altKey && !event.ctrlKey && !event.metaKey;\n}\n\n// Keys come to the combobox: the control, the search box in the field, or the\n// search box in the menu. The two search boxes keep the keys that edit text.\ntype ComboboxKind = \"control\" | \"search\" | \"menuSearch\";\n\nexport type OnSelectChange = (e: SyntheticEvent, data: SelectFieldProps) => void;\n\nexport interface SelectFieldProps {\n className?: string;\n /**\n * The selected value, or the values of a `multiple` field. Any value but\n * `undefined` makes the field controlled: it shows this value and nothing\n * else, and a pick, a chip delete or a clear only asks for a change through\n * `onChange`. `null` means nothing is selected. While `value` is `undefined`,\n * the field keeps its own value, starting from `defaultValue`.\n */\n value?: null | string | number | (string | number | undefined | null)[];\n defaultValue?: null | string | number | (string | number)[];\n onChange?: OnSelectChange;\n disabled?: boolean;\n readOnly?: boolean;\n name?: string;\n multiple?: boolean;\n menuMaxHeight?: number;\n menuMiddleware?: DropdownItemProps[\"menuMiddleware\"];\n menuNoItemsMessage?: React.ReactNode;\n menuContainer?: HTMLElement;\n /**\n * A search box for the options: `true` puts it in the field, where it takes\n * the focus and is the combobox; `\"menu\"` puts it at the top of the menu,\n * which moves the focus into it when it opens.\n */\n search?: true | false | \"menu\";\n chips?: boolean;\n isFocused?: boolean;\n error?: boolean;\n items: DropdownItem[];\n /**\n * Visible label, drawn above the field (an `inline` field draws none). It\n * names the combobox, whose value is the selected text: \"Country\", \"Russia\".\n * With `chips` the chips' texts follow it in the name: \"Labels Backend Docs\".\n */\n label?: string;\n variant?: \"outlined\" | \"filled\";\n /** Height of the field, as for TextField: `small` (40px, for toolbars), `medium` (default) or `large`. */\n size?: \"small\" | \"medium\" | \"large\";\n fullWidth?: boolean;\n helperText?: React.ReactNode;\n onSearch?: (e: React.ChangeEvent<HTMLInputElement>) => void;\n isLoading?: boolean;\n resetSearch?: () => void;\n inline?: boolean;\n endAdornment?: React.ReactNode;\n hideSelectArrowIcon?: boolean;\n /**\n * Draws an option in place of the default one. It gets the option's props\n * and returns its `<li>`: pass `id`, `role`, `aria-selected`, `aria-disabled`,\n * `className` and `onClick` on to it, so the option can be reached from the\n * keyboard, read out and picked.\n */\n optionRenderer?: (args: MenuItemProps) => React.ReactNode;\n /** Shows a clear button to reset the selection. */\n clearable?: boolean;\n /** Allows creating a new option from the current search text. */\n creatable?: boolean;\n /** Invoked with the typed text when the user creates a new option. */\n onCreate?: (inputValue: string, event: React.SyntheticEvent) => void;\n /** Windows long option lists for performance (fixed row height). */\n virtualized?: boolean;\n /** Row height (px) used when `virtualized`. */\n itemHeight?: number;\n /**\n * Accessible name of the combobox. Replaces the name the visible `label`\n * gives it; a field without a drawn label needs it.\n */\n \"aria-label\"?: string;\n /**\n * Id of the control, the part of the field that holds the selected text. It is\n * the combobox, unless `search` puts a search box in it: then the box is.\n */\n id?: string;\n}\n\nexport const SelectField = forwardRef<HTMLSpanElement, SelectFieldProps>(function SelectField(props, ref) {\n const {\n className,\n value: valueProp,\n defaultValue,\n onChange,\n disabled,\n readOnly,\n name,\n multiple,\n menuMaxHeight,\n menuMiddleware,\n menuNoItemsMessage,\n menuContainer,\n search,\n chips,\n isFocused: isFocusedProp,\n error,\n items,\n label,\n variant = \"outlined\",\n size = \"medium\",\n fullWidth,\n helperText,\n onSearch,\n resetSearch,\n isLoading,\n inline,\n endAdornment,\n hideSelectArrowIcon,\n optionRenderer,\n clearable,\n creatable,\n onCreate,\n virtualized,\n itemHeight,\n \"aria-label\": ariaLabel,\n id,\n ...rest\n } = props;\n const helper = useHelperText(helperText, { inline });\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [valueState, setValueState] = useState<typeof valueProp>(defaultValue);\n // Seeded from `defaultValue`, like `valueState`, so an uncontrolled field\n // shows its selection (and floats the label) before any interaction.\n const [ownSelectedItems, setOwnSelectedItems] = useState<typeof items>(() => findSelectedItems(items, defaultValue));\n const [searchValue, setSearchValue] = useState(\"\");\n // The option the keyboard is on (aria-activedescendant), by index in the\n // options drawn; it shows once a key moves it, not on a pointer's open.\n const [activeIndex, setActiveIndex] = useState(-1);\n const [showActive, setShowActive] = useState(false);\n const typeaheadRef = useRef<{ text: string; timer?: ReturnType<typeof setTimeout> }>({ text: \"\" });\n // Controlled while the parent passes a `value` other than `undefined` (`null`\n // is \"nothing selected\"), checked on every render as in `useControllableState`.\n const isControlled = valueProp !== undefined;\n const anchorElementRef = useRef<HTMLSpanElement>(null);\n const controlRef = useRef<HTMLSpanElement>(null);\n const forkedControlRef = useForkRef<HTMLSpanElement>(ref, controlRef);\n const searchWrapperRef = useRef<HTMLSpanElement>(null);\n const searchInputRef = useRef<HTMLInputElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n const menuSearchInputRef = useRef<HTMLInputElement>(null);\n const value = isControlled ? valueProp : valueState;\n // A controlled field shows the items of its `value` and nothing else, in the\n // same render as the value. A pick, a chip delete or a clear only asks the\n // parent through `onChange`: it shows once the parent passes the new value\n // back, and never when the parent keeps the old one. An uncontrolled field\n // shows the items its handlers and the effect below set.\n const selectedItems = useMemo(\n () => (isControlled ? findSelectedItems(items, value) : ownSelectedItems),\n [isControlled, items, value, ownSelectedItems]\n );\n\n const isFocused = useMemo(() => isFocusedProp || isOpen, [isFocusedProp, isOpen]);\n\n // The combobox is named by the label, and its value is the selected text it\n // holds. Chips sit beside the control with their delete buttons, so their\n // labels follow the label in the name (\"Labels Backend Docs\"). With neither a\n // drawn label nor chips, the selected text names it, as before it was a\n // combobox. A caller's aria-label replaces all of these: on one element\n // aria-labelledby would win over it.\n const baseId = useId();\n const labelId = `${baseId}-label`;\n const valueId = `${baseId}-value`;\n const listboxId = `${baseId}-listbox`;\n const valueIds = chips ? selectedItems.map((_, index) => `${valueId}-${index}`) : [valueId];\n const chipIds = chips ? valueIds : [];\n const controlLabelledBy = ariaLabel\n ? undefined\n : label && !inline\n ? [labelId, ...chipIds].join(\" \")\n : chipIds.length > 0\n ? chipIds.join(\" \")\n : !chips && selectedItems.length > 0\n ? valueId\n : undefined;\n // A search box in the field is a combobox whose value is the typed text, so\n // the selected text follows the label in its name.\n const labelledBy = ariaLabel\n ? undefined\n : label && !inline\n ? [labelId, ...valueIds].join(\" \")\n : chips && valueIds.length > 0\n ? valueIds.join(\" \")\n : undefined;\n\n // The search input takes the keyboard focus, so it is the field's only tab\n // stop. A focusable span before it would take Shift+Tab from the input and\n // hand the focus straight back to the input.\n const hasSearchInput = search === true && !readOnly;\n\n // The options as drawn: the items the search text keeps (all of them when\n // the caller searches itself), then the create option.\n const displayedItems = onSearch ? items : filterItems(items, searchValue);\n const createOption =\n creatable && searchValue && !items.some((i) => i.text.toLowerCase() === String(searchValue).toLowerCase())\n ? {\n text: `Создать \"${searchValue}\"`,\n onCreate: (event: React.SyntheticEvent) => {\n onCreate?.(String(searchValue), event);\n setSearchValue(\"\");\n closeMenu();\n },\n }\n : undefined;\n const createIndex = createOption ? displayedItems.length : -1;\n const optionCount = displayedItems.length + (createOption ? 1 : 0);\n // A loading menu shows no items, only the create option.\n const isOptionEnabled = (index: number) =>\n index >= 0 &&\n (index === createIndex || (!isLoading && index < displayedItems.length && !displayedItems[index].disabled));\n const currentActive = isOpen && isOptionEnabled(activeIndex) ? activeIndex : -1;\n const activeDescendant = showActive && currentActive >= 0 ? dropdownOptionId(listboxId, currentActive) : undefined;\n\n const isItemSelected = (item: DropdownItem) =>\n Array.isArray(value) ? value.includes(item.value) : value != null && value !== \"\" && value === item.value;\n\n // The keyboard starts on the selected option (the first one of several), or\n // on the first option.\n const initialActive = () => {\n const selected = displayedItems.findIndex(isItemSelected);\n return isOptionEnabled(selected) ? selected : firstOption(optionCount, isOptionEnabled);\n };\n\n // A pointer's open marks no option: the keyboard's active option starts on\n // the selected one, unshown, or with nothing selected on none, so the first\n // ArrowDown reaches the first option.\n const pointerActive = () => {\n const selected = displayedItems.findIndex(isItemSelected);\n return isOptionEnabled(selected) ? selected : -1;\n };\n\n const openMenu = (active: number, byKeyboard: boolean) => {\n setActiveIndex(active);\n setShowActive(byKeyboard);\n setIsOpen(true);\n };\n\n // A menu that had the focus (its search box) hands it back to the control;\n // one closed by a press elsewhere leaves the focus where the press put it.\n const closeMenu = () => {\n if (menuRef.current?.contains(menuRef.current.ownerDocument.activeElement)) {\n controlRef.current?.focus();\n }\n setIsOpen(false);\n setActiveIndex(-1);\n setShowActive(false);\n };\n\n const onMouseDown = (event: React.MouseEvent<HTMLDivElement>) => {\n // Только для левой клавиши мышки.\n if (event.button !== 0) {\n return;\n }\n event.preventDefault();\n controlRef.current?.focus();\n if (isOpen) {\n closeMenu();\n } else {\n openMenu(pointerActive(), false);\n }\n };\n\n const onFocus = (event: React.FocusEvent<HTMLSpanElement>) => {\n // React's onFocus bubbles: only the span's own focus (a press on it, a\n // closed menu) moves on to the input, not the focus of a chip's button.\n if (hasSearchInput && event.target === event.currentTarget) {\n searchInputRef.current?.focus();\n }\n };\n\n // The field's own items and value change only while it is uncontrolled, as\n // in `useControllableState`: a parent that stops passing `value` gets back\n // the field's `defaultValue`, or the picks made before it passed one.\n const setSelectedItems = (next: typeof items) => {\n if (!isControlled) {\n setOwnSelectedItems(next);\n }\n };\n\n const updateValue = (event: React.SyntheticEvent, value: typeof valueProp) => {\n onChange?.(event, { ...props, value, name: name || undefined });\n if (!isControlled) {\n setValueState(value);\n }\n };\n\n // Picks an item: `multiple` toggles it; a single select takes it, and a click\n // on the selected item clears the value (`toggleOff`), where a key keeps it.\n const chooseItem = (event: React.SyntheticEvent, item: DropdownItem, toggleOff: boolean) => {\n let newValue: typeof valueProp;\n let newSelectedItem: typeof selectedItems;\n if (multiple) {\n const valueArray = Array.isArray(value) ? value : [value].filter(Boolean);\n newValue = valueArray.slice();\n newSelectedItem = selectedItems.slice();\n const itemIndex = valueArray.findIndex((el) => el === item.value);\n\n if (itemIndex === -1) {\n newValue.push(item.value);\n newSelectedItem.push(item);\n } else {\n newValue.splice(itemIndex, 1);\n newSelectedItem.splice(itemIndex, 1);\n }\n } else {\n if (value === item.value && !toggleOff) {\n return;\n }\n newValue = value === item.value ? \"\" : item.value;\n newSelectedItem = [item];\n }\n\n if (searchValue) {\n setSearchValue(\"\");\n }\n\n setSelectedItems(newSelectedItem);\n updateValue(event, newValue);\n };\n\n const onItemClick = (event: React.SyntheticEvent, item: DropdownItem) => {\n chooseItem(event, item, true);\n\n if (multiple) {\n // The search text goes with the pick, so the item's place is in all items.\n setActiveIndex(items.indexOf(item));\n } else {\n closeMenu();\n controlRef.current?.focus();\n }\n };\n\n // Enter, Space, Tab or Alt+ArrowUp on the active option, once it shows: an\n // option a key has not marked yet (after a pointer's open) is not picked.\n const chooseActive = (event: React.SyntheticEvent) => {\n if (!showActive) {\n return;\n }\n if (currentActive === createIndex) {\n createOption?.onCreate(event);\n } else if (currentActive >= 0) {\n chooseItem(event, displayedItems[currentActive], false);\n if (multiple) {\n setActiveIndex(searchValue ? items.indexOf(displayedItems[currentActive]) : currentActive);\n } else {\n closeMenu();\n }\n }\n };\n\n const moveActive = (event: React.KeyboardEvent, index: number) => {\n event.preventDefault();\n if (index >= 0) {\n setActiveIndex(index);\n }\n setShowActive(true);\n };\n\n // Type-ahead: letters typed in quick succession make a prefix to look for.\n const typeahead = (key: string) => {\n const state = typeaheadRef.current;\n clearTimeout(state.timer);\n state.text += key;\n state.timer = setTimeout(() => {\n state.text = \"\";\n }, 500);\n const texts = displayedItems.map((item) => item.text);\n return matchOption(texts, isOptionEnabled, state.text, currentActive);\n };\n\n useEffect(() => {\n const state = typeaheadRef.current;\n return () => clearTimeout(state.timer);\n }, []);\n\n // The combobox's keys (WAI-ARIA combobox pattern): arrows, Home, End and the\n // page keys move the active option and open a closed menu; Enter and Space\n // pick it; Tab picks it in a single select and moves on; Escape closes.\n // The search boxes leave Space, Home, End and typing to the text.\n const onComboboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, kind: ComboboxKind) => {\n const { key } = event;\n if (disabled || readOnly || event.ctrlKey || event.metaKey) {\n return;\n }\n const isControl = kind === \"control\";\n\n if (!isOpen) {\n if (key === \"ArrowDown\" || key === \"ArrowUp\" || key === \"Enter\" || (isControl && key === \" \")) {\n event.preventDefault();\n openMenu(initialActive(), true);\n } else if (isControl && (key === \"Home\" || key === \"End\")) {\n event.preventDefault();\n openMenu(\n key === \"Home\" ? firstOption(optionCount, isOptionEnabled) : lastOption(optionCount, isOptionEnabled),\n true\n );\n } else if (isControl && !search && isPrintableKey(event)) {\n event.preventDefault();\n const match = typeahead(key);\n openMenu(match >= 0 ? match : initialActive(), true);\n }\n return;\n }\n\n if (key === \"ArrowDown\") {\n moveActive(event, event.altKey ? currentActive : moveOption(optionCount, isOptionEnabled, currentActive, 1));\n } else if (key === \"ArrowUp\" && event.altKey) {\n event.preventDefault();\n if (!multiple) {\n chooseActive(event);\n }\n closeMenu();\n } else if (key === \"ArrowUp\") {\n moveActive(event, moveOption(optionCount, isOptionEnabled, currentActive, -1));\n } else if (key === \"PageDown\" || key === \"PageUp\") {\n moveActive(event, moveOption(optionCount, isOptionEnabled, currentActive, key === \"PageDown\" ? 10 : -10));\n } else if (isControl && (key === \"Home\" || key === \"End\")) {\n moveActive(\n event,\n key === \"Home\" ? firstOption(optionCount, isOptionEnabled) : lastOption(optionCount, isOptionEnabled)\n );\n } else if (key === \"Enter\" || (isControl && key === \" \")) {\n event.preventDefault();\n // After a pointer's open the first press shows the active option, the\n // next one picks it.\n chooseActive(event);\n setShowActive(true);\n if (!multiple && currentActive < 0 && isControl) {\n closeMenu();\n }\n } else if (key === \"Escape\") {\n // Handled: the overlays around the field leave this press alone.\n event.preventDefault();\n closeMenu();\n } else if (key === \"Tab\") {\n if (kind === \"menuSearch\") {\n // The search box in the menu goes with it: the focus goes back to the\n // control, which Tab then leaves as usual.\n event.preventDefault();\n } else if (isControl && !multiple) {\n chooseActive(event);\n }\n closeMenu();\n } else if (isControl && !search && isPrintableKey(event)) {\n const match = typeahead(key);\n moveActive(event, match);\n }\n };\n\n // Keys pressed on a button inside (a chip's delete button) bubble up here\n // too. Only the control's own keys work the menu: preventing the default\n // of theirs would cancel the button's activation.\n const onKeyDown = (event: React.KeyboardEvent<HTMLSpanElement>) => {\n if (event.target !== event.currentTarget || hasSearchInput) {\n return;\n }\n onComboboxKeyDown(event, \"control\");\n };\n\n // A read-only field opens no menu: one that was open when the field became\n // read-only closes, so none of its options can be picked.\n useEffect(() => {\n if (readOnly && isOpen) {\n setIsOpen(false);\n }\n }, [readOnly, isOpen]);\n\n useEffect(() => {\n if (!isFocused || (search === \"menu\" && !isOpen)) {\n setSearchValue(\"\");\n resetSearch?.();\n }\n }, [isFocused, search, isOpen, resetSearch]);\n\n // A disabled field has no menu: one that was open when the field got\n // disabled closes, so none of its options can be picked.\n useEffect(() => {\n if (disabled && isOpen) {\n setIsOpen(false);\n }\n }, [disabled, isOpen]);\n\n // The search box in the menu takes the focus when the menu opens.\n useSafeLayoutEffect(() => {\n if (isOpen && search === \"menu\") {\n menuSearchInputRef.current?.focus();\n }\n }, [isOpen, search]);\n\n // Keep the displayed selection in sync with the effective value (controlled\n // fields derive theirs above), so the label floats whenever there is a\n // value — including the initial default, without focus.\n useEffect(() => {\n if (!isControlled) {\n setOwnSelectedItems(findSelectedItems(items, value));\n }\n }, [isControlled, value, items]);\n\n useSafeLayoutEffect(() => {\n if (searchWrapperRef.current) {\n searchWrapperRef.current.scrollLeft = searchWrapperRef.current.scrollWidth;\n }\n }, [value]);\n\n const onSearchInputChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const text = event.target.value;\n setSearchValue(text);\n onSearch?.(event);\n // The keyboard moves on to the first option the text keeps, so Enter picks\n // it; items the caller searches for itself are not here yet.\n const kept = filterItems(items, text);\n const canCreate = creatable && text && !items.some((i) => i.text.toLowerCase() === text.toLowerCase());\n const count = onSearch ? 0 : kept.length + (canCreate ? 1 : 0);\n setActiveIndex(firstOption(count, (index) => index >= kept.length || !kept[index].disabled));\n setShowActive(true);\n if (!isOpen) {\n setIsOpen(true);\n }\n };\n\n // A delete or clear button goes away with what it removes. When it had the\n // focus (a key press: a click leaves the focus where it was), the control\n // takes the focus over, so it does not drop to the page.\n const hasFocus = (event: React.SyntheticEvent) =>\n event.currentTarget.contains(event.currentTarget.ownerDocument.activeElement);\n\n const onDeleteChip = (currentValue: typeof valueProp) => (event: React.SyntheticEvent) => {\n if (Array.isArray(value)) {\n const refocus = hasFocus(event);\n const newValue = value.filter((value) => currentValue !== value);\n updateValue(event, newValue);\n const newSelectedItems = selectedItems.filter((el) => el.value !== currentValue);\n setSelectedItems(newSelectedItems);\n if (refocus) controlRef.current?.focus();\n }\n };\n\n const onResetSelected = (event: React.MouseEvent) => {\n const refocus = hasFocus(event);\n updateValue(event, []);\n setSelectedItems([]);\n if (refocus) controlRef.current?.focus();\n };\n\n let displayValues: string | React.ReactNode[];\n\n const classes = cn(\"smwb-select-field\", className, {\n \"smwb-select-field--filled\": variant === \"filled\" && label,\n \"smwb-select-field--disabled\": disabled,\n \"smwb-select-field--search\": search,\n \"smwb-select-field--inline\": inline,\n });\n\n if (chips) {\n displayValues = selectedItems.map(({ key, value, text }, index) => (\n <Chip\n key={key || value}\n label={text}\n labelId={valueIds[index]}\n deleteAriaLabel={`Remove ${text}`}\n size={size === \"small\" ? \"small\" : \"medium\"}\n // A read-only field shows its chips without delete buttons.\n onDelete={readOnly ? undefined : onDeleteChip(value)}\n onDeleteMouseDown={stopEvent}\n disabled={disabled}\n />\n ));\n } else {\n displayValues = selectedItems.map((el) => el.text).join(\", \");\n }\n\n // Neither a disabled nor a read-only field offers to clear its value.\n const canClear =\n ((Array.isArray(value) && value.length > 0) || (clearable && selectedItems.length > 0)) && !disabled && !readOnly;\n\n // What makes an element the combobox; the search box in the field takes it\n // from the control.\n const comboboxProps = {\n role: \"combobox\",\n \"aria-haspopup\": \"listbox\" as const,\n \"aria-expanded\": isOpen,\n \"aria-controls\": isOpen ? listboxId : undefined,\n };\n\n return (\n <>\n <TextFieldWrapper\n labelId={labelId}\n label={label}\n helperText={helperText}\n helperTextId={helper.id}\n variant={variant}\n disabled={disabled}\n className={cn(className, size !== \"medium\" && `smwb-text-field_size-${size}`)}\n error={error}\n fullWidth={fullWidth}\n isFilledState={!!selectedItems.length || !!searchValue}\n isFocused={isFocused}\n inline={inline}\n {...rest}\n >\n {/* The field: a press anywhere in it opens the menu, which lines up\n under it. The control, the part that is the combobox, sits inside,\n with the chips and the clear button beside it: nested in it, they\n would be read into its name. */}\n <span ref={anchorElementRef} className={classes} onMouseDown={disabled || readOnly ? undefined : onMouseDown}>\n <span className=\"smwb-select-field__search-wrapper\" ref={searchWrapperRef}>\n {chips && <span className=\"smwb-select-field__values\">{displayValues}</span>}\n <span\n ref={forkedControlRef}\n id={id}\n className=\"smwb-select-field__control\"\n tabIndex={disabled ? undefined : hasSearchInput ? -1 : 0}\n {...(hasSearchInput\n ? undefined\n : {\n ...comboboxProps,\n \"aria-labelledby\": controlLabelledBy,\n \"aria-label\": ariaLabel,\n \"aria-activedescendant\": search === \"menu\" ? undefined : activeDescendant,\n \"aria-disabled\": disabled || undefined,\n \"aria-readonly\": readOnly || undefined,\n \"aria-describedby\": helper.describedBy,\n })}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n data-testid=\"select-field\"\n >\n {!chips && displayValues && (\n <span id={valueId} className=\"smwb-select-field__values\">\n {displayValues}\n </span>\n )}\n {search && typeof search === \"boolean\" && !readOnly && (\n <span className=\"smwb-select-field__search\">\n <span className=\"smwb-select-field__search-text\">{searchValue}</span>\n <input\n className=\"smwb-select-field__search-input\"\n ref={searchInputRef}\n type=\"text\"\n disabled={disabled}\n value={searchValue}\n {...comboboxProps}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n autoComplete=\"off\"\n aria-label={ariaLabel}\n aria-labelledby={labelledBy}\n aria-describedby={helper.describedBy}\n onChange={onSearchInputChange}\n onMouseDown={(event: React.MouseEvent<HTMLInputElement>) => {\n event.stopPropagation();\n if (!isOpen) {\n openMenu(pointerActive(), false);\n }\n }}\n onKeyDown={(event) => {\n onComboboxKeyDown(event, \"search\");\n // Typed keys must not reach the span. Escape goes on: the\n // overlays around the field listen for it on the document,\n // and React's stopPropagation would stop it before the document.\n if (event.key !== \"Escape\") {\n event.stopPropagation();\n }\n }}\n data-testid=\"search-input\"\n />\n </span>\n )}\n </span>\n </span>\n <span className=\"smwb-select-field__actions\">\n {canClear && (\n <button\n type=\"button\"\n className=\"smwb-select-field__clear\"\n aria-label=\"Clear selection\"\n onClick={onResetSelected}\n onMouseDown={stopEvent}\n >\n <ClearIcon className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--close\")} />\n </button>\n )}\n {endAdornment}\n {!hideSelectArrowIcon && (\n <SelectArrowIcon\n className={cn(\"smwb-select-field__icon\", \"smwb-select-field__icon--arrow\", {\n \"smwb-select-field__icon--opened\": isOpen,\n \"smwb-select-field__icon--focused\": isFocused,\n \"smwb-select-field__icon--error\": error,\n })}\n />\n )}\n </span>\n </span>\n </TextFieldWrapper>\n <DropdownMenu\n anchorElementRef={anchorElementRef}\n menuRef={menuRef}\n menuMaxHeight={menuMaxHeight}\n menuMiddleware={menuMiddleware}\n search={search === \"menu\"}\n onSearchInputChange={onSearchInputChange}\n searchInputRef={menuSearchInputRef}\n searchInputProps={{\n ...comboboxProps,\n \"aria-autocomplete\": \"list\",\n \"aria-activedescendant\": activeDescendant,\n \"aria-labelledby\": controlLabelledBy,\n \"aria-label\": ariaLabel,\n onKeyDown: (event) => onComboboxKeyDown(event, \"menuSearch\"),\n }}\n optionRenderer={optionRenderer}\n items={displayedItems}\n searchValue={searchValue}\n isOpen={isOpen}\n onClose={closeMenu}\n onItemClick={onItemClick}\n value={value}\n isLoading={isLoading}\n menuNoItemsMessage={menuNoItemsMessage}\n container={menuContainer}\n virtualized={virtualized}\n itemHeight={itemHeight}\n createOption={createOption}\n listboxId={listboxId}\n labelledBy={ariaLabel ? undefined : label && !inline ? labelId : controlLabelledBy}\n label={ariaLabel}\n multiple={multiple}\n activeIndex={currentActive}\n showActive={showActive}\n />\n </>\n );\n});\n\nexport default SelectField;\n"],"names":["SelectArrowIcon","props","jsx","Icon","ClearIcon","stopEvent","event","findSelectedItems","items","value","item","filterItems","searchText","pattern","el","isPrintableKey","SelectField","forwardRef","ref","className","valueProp","defaultValue","onChange","disabled","readOnly","name","multiple","menuMaxHeight","menuMiddleware","menuNoItemsMessage","menuContainer","search","chips","isFocusedProp","error","label","variant","size","fullWidth","helperText","onSearch","resetSearch","isLoading","inline","endAdornment","hideSelectArrowIcon","optionRenderer","clearable","creatable","onCreate","virtualized","itemHeight","ariaLabel","id","rest","helper","useHelperText","isOpen","setIsOpen","useState","valueState","setValueState","ownSelectedItems","setOwnSelectedItems","searchValue","setSearchValue","activeIndex","setActiveIndex","showActive","setShowActive","typeaheadRef","useRef","isControlled","anchorElementRef","controlRef","forkedControlRef","useForkRef","searchWrapperRef","searchInputRef","menuRef","menuSearchInputRef","selectedItems","useMemo","isFocused","baseId","useId","labelId","valueId","listboxId","valueIds","_","index","chipIds","controlLabelledBy","labelledBy","hasSearchInput","displayedItems","createOption","i","closeMenu","createIndex","optionCount","isOptionEnabled","currentActive","activeDescendant","dropdownOptionId","isItemSelected","initialActive","selected","firstOption","pointerActive","openMenu","active","byKeyboard","_a","_b","onMouseDown","onFocus","setSelectedItems","next","updateValue","chooseItem","toggleOff","newValue","newSelectedItem","valueArray","itemIndex","onItemClick","chooseActive","moveActive","typeahead","key","state","texts","matchOption","useEffect","onComboboxKeyDown","kind","isControl","lastOption","match","moveOption","onKeyDown","useSafeLayoutEffect","onSearchInputChange","text","kept","canCreate","count","hasFocus","onDeleteChip","currentValue","refocus","newSelectedItems","onResetSelected","displayValues","classes","cn","Chip","canClear","comboboxProps","jsxs","Fragment","TextFieldWrapper","DropdownMenu"],"mappings":"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"}