@economic/taco 2.47.0-server.9 → 2.48.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (673) hide show
  1. package/dist/components/Alert/Alert.d.ts +1 -1
  2. package/dist/components/Calendar/Calendar.d.ts +0 -1
  3. package/dist/components/Icon/components/Experiment.d.ts +3 -0
  4. package/dist/components/Icon/components/index.d.ts +1 -1
  5. package/dist/components/Input/Input.d.ts +1 -1
  6. package/dist/components/Menu/components/Item.d.ts +1 -1
  7. package/dist/components/Menu/components/Link.d.ts +1 -1
  8. package/dist/components/Navigation2/components/Link.d.ts +1 -1
  9. package/dist/components/Report/Report.d.ts +1 -1
  10. package/dist/components/SearchInput2/SearchInput2.d.ts +0 -2
  11. package/dist/components/Select2/components/Option.d.ts +2 -2
  12. package/dist/components/Select2/components/Search.d.ts +1 -1
  13. package/dist/components/Table3/features/useEditingState.d.ts +11 -11
  14. package/dist/components/Table3/features/useTableEditing.d.ts +13 -13
  15. package/dist/components/Tag/Tag.d.ts +1 -1
  16. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js +17 -17
  17. package/dist/esm/node_modules/babel-plugin-transform-async-to-promises/helpers.mjs.js.map +1 -1
  18. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js +24 -32
  19. package/dist/esm/packages/taco/src/charts/components/Area/AreaChart.js.map +1 -1
  20. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js +61 -84
  21. package/dist/esm/packages/taco/src/charts/components/Bar/BarChart.js.map +1 -1
  22. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js +15 -16
  23. package/dist/esm/packages/taco/src/charts/components/Donut/ActiveShape.js.map +1 -1
  24. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js +13 -12
  25. package/dist/esm/packages/taco/src/charts/components/Donut/CenteredLabel.js.map +1 -1
  26. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js +68 -104
  27. package/dist/esm/packages/taco/src/charts/components/Donut/DonutChart.js.map +1 -1
  28. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js +29 -39
  29. package/dist/esm/packages/taco/src/charts/components/Donut/Legend.js.map +1 -1
  30. package/dist/esm/packages/taco/src/charts/components/Donut/util.js +2 -2
  31. package/dist/esm/packages/taco/src/charts/components/Donut/util.js.map +1 -1
  32. package/dist/esm/packages/taco/src/charts/components/Legend.js +37 -46
  33. package/dist/esm/packages/taco/src/charts/components/Legend.js.map +1 -1
  34. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js +24 -32
  35. package/dist/esm/packages/taco/src/charts/components/Line/LineChart.js.map +1 -1
  36. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js +3 -5
  37. package/dist/esm/packages/taco/src/charts/components/ResponsiveContainer.js.map +1 -1
  38. package/dist/esm/packages/taco/src/charts/components/Tooltip.js +25 -26
  39. package/dist/esm/packages/taco/src/charts/components/Tooltip.js.map +1 -1
  40. package/dist/esm/packages/taco/src/charts/utils/color.js +12 -13
  41. package/dist/esm/packages/taco/src/charts/utils/color.js.map +1 -1
  42. package/dist/esm/packages/taco/src/charts/utils/common.js +26 -39
  43. package/dist/esm/packages/taco/src/charts/utils/common.js.map +1 -1
  44. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js +31 -30
  45. package/dist/esm/packages/taco/src/components/Accordion/Accordion.js.map +1 -1
  46. package/dist/esm/packages/taco/src/components/Alert/Alert.js +11 -7
  47. package/dist/esm/packages/taco/src/components/Alert/Alert.js.map +1 -1
  48. package/dist/esm/packages/taco/src/components/AlertDialog/AlertDialog.js +13 -14
  49. package/dist/esm/packages/taco/src/components/AlertDialog/AlertDialog.js.map +1 -1
  50. package/dist/esm/packages/taco/src/components/AlertDialog/Context.js +2 -2
  51. package/dist/esm/packages/taco/src/components/AlertDialog/Context.js.map +1 -1
  52. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js +9 -10
  53. package/dist/esm/packages/taco/src/components/AlertDialog/components/Content.js.map +1 -1
  54. package/dist/esm/packages/taco/src/components/AlertDialog/components/Footer.js +4 -4
  55. package/dist/esm/packages/taco/src/components/AlertDialog/components/Footer.js.map +1 -1
  56. package/dist/esm/packages/taco/src/components/AlertDialog/components/Trigger.js +6 -5
  57. package/dist/esm/packages/taco/src/components/AlertDialog/components/Trigger.js.map +1 -1
  58. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js +2 -2
  59. package/dist/esm/packages/taco/src/components/Backdrop/Backdrop.js.map +1 -1
  60. package/dist/esm/packages/taco/src/components/Badge/Badge.js +25 -21
  61. package/dist/esm/packages/taco/src/components/Badge/Badge.js.map +1 -1
  62. package/dist/esm/packages/taco/src/components/BadgeIcon/BadgeIcon.js +14 -12
  63. package/dist/esm/packages/taco/src/components/BadgeIcon/BadgeIcon.js.map +1 -1
  64. package/dist/esm/packages/taco/src/components/Banner/Banner.js +10 -7
  65. package/dist/esm/packages/taco/src/components/Banner/Banner.js.map +1 -1
  66. package/dist/esm/packages/taco/src/components/Banner/util.js +8 -3
  67. package/dist/esm/packages/taco/src/components/Banner/util.js.map +1 -1
  68. package/dist/esm/packages/taco/src/components/Button/Button.js +28 -26
  69. package/dist/esm/packages/taco/src/components/Button/Button.js.map +1 -1
  70. package/dist/esm/packages/taco/src/components/Button/util.js +24 -25
  71. package/dist/esm/packages/taco/src/components/Button/util.js.map +1 -1
  72. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js +76 -81
  73. package/dist/esm/packages/taco/src/components/Calendar/Calendar.js.map +1 -1
  74. package/dist/esm/packages/taco/src/components/Card/Card.js +15 -14
  75. package/dist/esm/packages/taco/src/components/Card/Card.js.map +1 -1
  76. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js +22 -24
  77. package/dist/esm/packages/taco/src/components/Checkbox/Checkbox.js.map +1 -1
  78. package/dist/esm/packages/taco/src/components/Combobox/Combobox.js +23 -21
  79. package/dist/esm/packages/taco/src/components/Combobox/Combobox.js.map +1 -1
  80. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js +64 -76
  81. package/dist/esm/packages/taco/src/components/Combobox/useCombobox.js.map +1 -1
  82. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js +57 -60
  83. package/dist/esm/packages/taco/src/components/Datepicker/Datepicker.js.map +1 -1
  84. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js +33 -41
  85. package/dist/esm/packages/taco/src/components/Datepicker/useDatepicker.js.map +1 -1
  86. package/dist/esm/packages/taco/src/components/Dialog/Context.js +4 -4
  87. package/dist/esm/packages/taco/src/components/Dialog/Context.js.map +1 -1
  88. package/dist/esm/packages/taco/src/components/Dialog/Dialog.js +39 -54
  89. package/dist/esm/packages/taco/src/components/Dialog/Dialog.js.map +1 -1
  90. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js +38 -36
  91. package/dist/esm/packages/taco/src/components/Dialog/components/Content.js.map +1 -1
  92. package/dist/esm/packages/taco/src/components/Dialog/components/DialogDrawer.js +3 -3
  93. package/dist/esm/packages/taco/src/components/Dialog/components/DialogDrawer.js.map +1 -1
  94. package/dist/esm/packages/taco/src/components/Dialog/components/Extra.js +2 -2
  95. package/dist/esm/packages/taco/src/components/Dialog/components/Extra.js.map +1 -1
  96. package/dist/esm/packages/taco/src/components/Dialog/components/Trigger.js +6 -5
  97. package/dist/esm/packages/taco/src/components/Dialog/components/Trigger.js.map +1 -1
  98. package/dist/esm/packages/taco/src/components/Dialog/util.js +3 -7
  99. package/dist/esm/packages/taco/src/components/Dialog/util.js.map +1 -1
  100. package/dist/esm/packages/taco/src/components/Drawer/Context.js +5 -5
  101. package/dist/esm/packages/taco/src/components/Drawer/Context.js.map +1 -1
  102. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js +51 -61
  103. package/dist/esm/packages/taco/src/components/Drawer/Drawer.js.map +1 -1
  104. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js +145 -134
  105. package/dist/esm/packages/taco/src/components/Drawer/components/Content.js.map +1 -1
  106. package/dist/esm/packages/taco/src/components/Drawer/components/Trigger.js +1 -1
  107. package/dist/esm/packages/taco/src/components/Drawer/components/Trigger.js.map +1 -1
  108. package/dist/esm/packages/taco/src/components/Drawer/util.js +5 -5
  109. package/dist/esm/packages/taco/src/components/Drawer/util.js.map +1 -1
  110. package/dist/esm/packages/taco/src/components/Field/Field.js +12 -14
  111. package/dist/esm/packages/taco/src/components/Field/Field.js.map +1 -1
  112. package/dist/esm/packages/taco/src/components/Form/Form.js +6 -7
  113. package/dist/esm/packages/taco/src/components/Form/Form.js.map +1 -1
  114. package/dist/esm/packages/taco/src/components/Group/Group.js +7 -9
  115. package/dist/esm/packages/taco/src/components/Group/Group.js.map +1 -1
  116. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js +36 -37
  117. package/dist/esm/packages/taco/src/components/Hanger/Hanger.js.map +1 -1
  118. package/dist/esm/packages/taco/src/components/Header/Header.js +2 -2
  119. package/dist/esm/packages/taco/src/components/Header/Header.js.map +1 -1
  120. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Avatar.js +10 -14
  121. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Avatar.js.map +1 -1
  122. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Badge.js +4 -5
  123. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Badge.js.map +1 -1
  124. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Display.js +9 -7
  125. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Display.js.map +1 -1
  126. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Item.js +9 -9
  127. package/dist/esm/packages/taco/src/components/Header/components/Agreement/Item.js.map +1 -1
  128. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js +46 -66
  129. package/dist/esm/packages/taco/src/components/Header/components/AgreementSelector.js.map +1 -1
  130. package/dist/esm/packages/taco/src/components/Header/components/Button.js +8 -12
  131. package/dist/esm/packages/taco/src/components/Header/components/Button.js.map +1 -1
  132. package/dist/esm/packages/taco/src/components/Header/components/Link.js +18 -22
  133. package/dist/esm/packages/taco/src/components/Header/components/Link.js.map +1 -1
  134. package/dist/esm/packages/taco/src/components/Header/components/Logo.js +4 -4
  135. package/dist/esm/packages/taco/src/components/Header/components/Logo.js.map +1 -1
  136. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js +2 -2
  137. package/dist/esm/packages/taco/src/components/Header/components/MenuButton.js.map +1 -1
  138. package/dist/esm/packages/taco/src/components/Header/components/PrimaryNavigation.js +9 -10
  139. package/dist/esm/packages/taco/src/components/Header/components/PrimaryNavigation.js.map +1 -1
  140. package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js +2 -2
  141. package/dist/esm/packages/taco/src/components/Header/components/SecondaryNavigation.js.map +1 -1
  142. package/dist/esm/packages/taco/src/components/HoverCard/HoverCard.js +7 -5
  143. package/dist/esm/packages/taco/src/components/HoverCard/HoverCard.js.map +1 -1
  144. package/dist/esm/packages/taco/src/components/HoverCard/Primitives.js +1 -1
  145. package/dist/esm/packages/taco/src/components/HoverCard/Primitives.js.map +1 -1
  146. package/dist/esm/packages/taco/src/components/Icon/Icon.js +7 -7
  147. package/dist/esm/packages/taco/src/components/Icon/Icon.js.map +1 -1
  148. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js +20 -0
  149. package/dist/esm/packages/taco/src/components/Icon/components/Experiment.js.map +1 -0
  150. package/dist/esm/packages/taco/src/components/Icon/components/index.js +6 -4
  151. package/dist/esm/packages/taco/src/components/Icon/components/index.js.map +1 -1
  152. package/dist/esm/packages/taco/src/components/IconButton/IconButton.js +23 -22
  153. package/dist/esm/packages/taco/src/components/IconButton/IconButton.js.map +1 -1
  154. package/dist/esm/packages/taco/src/components/Input/Input.js +44 -45
  155. package/dist/esm/packages/taco/src/components/Input/Input.js.map +1 -1
  156. package/dist/esm/packages/taco/src/components/Input/util.js +5 -8
  157. package/dist/esm/packages/taco/src/components/Input/util.js.map +1 -1
  158. package/dist/esm/packages/taco/src/components/Layout/Layout.js +5 -7
  159. package/dist/esm/packages/taco/src/components/Layout/Layout.js.map +1 -1
  160. package/dist/esm/packages/taco/src/components/Layout/components/Content.js +2 -2
  161. package/dist/esm/packages/taco/src/components/Layout/components/Content.js.map +1 -1
  162. package/dist/esm/packages/taco/src/components/Layout/components/Context.js +2 -4
  163. package/dist/esm/packages/taco/src/components/Layout/components/Context.js.map +1 -1
  164. package/dist/esm/packages/taco/src/components/Layout/components/Page.js +2 -2
  165. package/dist/esm/packages/taco/src/components/Layout/components/Page.js.map +1 -1
  166. package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js +27 -34
  167. package/dist/esm/packages/taco/src/components/Layout/components/Sidebar.js.map +1 -1
  168. package/dist/esm/packages/taco/src/components/Layout/components/Top.js +6 -9
  169. package/dist/esm/packages/taco/src/components/Layout/components/Top.js.map +1 -1
  170. package/dist/esm/packages/taco/src/components/List/components/Button.js +1 -1
  171. package/dist/esm/packages/taco/src/components/List/components/Button.js.map +1 -1
  172. package/dist/esm/packages/taco/src/components/List/components/Collapsible.js +7 -10
  173. package/dist/esm/packages/taco/src/components/List/components/Collapsible.js.map +1 -1
  174. package/dist/esm/packages/taco/src/components/List/components/Group.js +1 -1
  175. package/dist/esm/packages/taco/src/components/List/components/Group.js.map +1 -1
  176. package/dist/esm/packages/taco/src/components/List/components/Item.js +13 -15
  177. package/dist/esm/packages/taco/src/components/List/components/Item.js.map +1 -1
  178. package/dist/esm/packages/taco/src/components/List/components/Link.js +3 -3
  179. package/dist/esm/packages/taco/src/components/List/components/Link.js.map +1 -1
  180. package/dist/esm/packages/taco/src/components/List/components/Toggle.js +27 -29
  181. package/dist/esm/packages/taco/src/components/List/components/Toggle.js.map +1 -1
  182. package/dist/esm/packages/taco/src/components/Listbox/Listbox.js +26 -21
  183. package/dist/esm/packages/taco/src/components/Listbox/Listbox.js.map +1 -1
  184. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js +70 -82
  185. package/dist/esm/packages/taco/src/components/Listbox/ScrollableList.js.map +1 -1
  186. package/dist/esm/packages/taco/src/components/Listbox/useListbox.js +51 -56
  187. package/dist/esm/packages/taco/src/components/Listbox/useListbox.js.map +1 -1
  188. package/dist/esm/packages/taco/src/components/Listbox/useMultiListbox.js +65 -83
  189. package/dist/esm/packages/taco/src/components/Listbox/useMultiListbox.js.map +1 -1
  190. package/dist/esm/packages/taco/src/components/Listbox/useTypeahead.js +10 -9
  191. package/dist/esm/packages/taco/src/components/Listbox/useTypeahead.js.map +1 -1
  192. package/dist/esm/packages/taco/src/components/Listbox/util.js +48 -78
  193. package/dist/esm/packages/taco/src/components/Listbox/util.js.map +1 -1
  194. package/dist/esm/packages/taco/src/components/Menu/Context.js +2 -2
  195. package/dist/esm/packages/taco/src/components/Menu/Context.js.map +1 -1
  196. package/dist/esm/packages/taco/src/components/Menu/Menu.js +26 -42
  197. package/dist/esm/packages/taco/src/components/Menu/Menu.js.map +1 -1
  198. package/dist/esm/packages/taco/src/components/Menu/components/Checkbox.js +8 -8
  199. package/dist/esm/packages/taco/src/components/Menu/components/Checkbox.js.map +1 -1
  200. package/dist/esm/packages/taco/src/components/Menu/components/Content.js +21 -27
  201. package/dist/esm/packages/taco/src/components/Menu/components/Content.js.map +1 -1
  202. package/dist/esm/packages/taco/src/components/Menu/components/Header.js +3 -3
  203. package/dist/esm/packages/taco/src/components/Menu/components/Header.js.map +1 -1
  204. package/dist/esm/packages/taco/src/components/Menu/components/Item.js +32 -32
  205. package/dist/esm/packages/taco/src/components/Menu/components/Item.js.map +1 -1
  206. package/dist/esm/packages/taco/src/components/Menu/components/Link.js +10 -10
  207. package/dist/esm/packages/taco/src/components/Menu/components/Link.js.map +1 -1
  208. package/dist/esm/packages/taco/src/components/Menu/components/RadioGroup.js +16 -15
  209. package/dist/esm/packages/taco/src/components/Menu/components/RadioGroup.js.map +1 -1
  210. package/dist/esm/packages/taco/src/components/Menu/components/Separator.js +1 -1
  211. package/dist/esm/packages/taco/src/components/Menu/components/Separator.js.map +1 -1
  212. package/dist/esm/packages/taco/src/components/Menu/components/SubMenu.js +7 -7
  213. package/dist/esm/packages/taco/src/components/Menu/components/SubMenu.js.map +1 -1
  214. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js +5 -5
  215. package/dist/esm/packages/taco/src/components/Menu/components/Trigger.js.map +1 -1
  216. package/dist/esm/packages/taco/src/components/ModeSwitch/ModeSwitch.js +6 -6
  217. package/dist/esm/packages/taco/src/components/ModeSwitch/ModeSwitch.js.map +1 -1
  218. package/dist/esm/packages/taco/src/components/Navigation/Navigation.js +36 -41
  219. package/dist/esm/packages/taco/src/components/Navigation/Navigation.js.map +1 -1
  220. package/dist/esm/packages/taco/src/components/Navigation2/Navigation2.js +6 -6
  221. package/dist/esm/packages/taco/src/components/Navigation2/Navigation2.js.map +1 -1
  222. package/dist/esm/packages/taco/src/components/Navigation2/components/Content.js +6 -6
  223. package/dist/esm/packages/taco/src/components/Navigation2/components/Content.js.map +1 -1
  224. package/dist/esm/packages/taco/src/components/Navigation2/components/Group.js +11 -14
  225. package/dist/esm/packages/taco/src/components/Navigation2/components/Group.js.map +1 -1
  226. package/dist/esm/packages/taco/src/components/Navigation2/components/Link.js +24 -31
  227. package/dist/esm/packages/taco/src/components/Navigation2/components/Link.js.map +1 -1
  228. package/dist/esm/packages/taco/src/components/Navigation2/components/Section.js +7 -7
  229. package/dist/esm/packages/taco/src/components/Navigation2/components/Section.js.map +1 -1
  230. package/dist/esm/packages/taco/src/components/Navigation2/components/util.js +7 -9
  231. package/dist/esm/packages/taco/src/components/Navigation2/components/util.js.map +1 -1
  232. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js +51 -48
  233. package/dist/esm/packages/taco/src/components/OverflowGroup/OverflowGroup.js.map +1 -1
  234. package/dist/esm/packages/taco/src/components/Pagination/PageNumbers.js +23 -26
  235. package/dist/esm/packages/taco/src/components/Pagination/PageNumbers.js.map +1 -1
  236. package/dist/esm/packages/taco/src/components/Pagination/Pagination.js +39 -53
  237. package/dist/esm/packages/taco/src/components/Pagination/Pagination.js.map +1 -1
  238. package/dist/esm/packages/taco/src/components/Pagination/usePagination.js +7 -17
  239. package/dist/esm/packages/taco/src/components/Pagination/usePagination.js.map +1 -1
  240. package/dist/esm/packages/taco/src/components/Pagination/usePaginationShortcuts.js +9 -8
  241. package/dist/esm/packages/taco/src/components/Pagination/usePaginationShortcuts.js.map +1 -1
  242. package/dist/esm/packages/taco/src/components/Popover/Popover.js +43 -45
  243. package/dist/esm/packages/taco/src/components/Popover/Popover.js.map +1 -1
  244. package/dist/esm/packages/taco/src/components/Popover/Primitives.js +1 -1
  245. package/dist/esm/packages/taco/src/components/Popover/Primitives.js.map +1 -1
  246. package/dist/esm/packages/taco/src/components/Popover/util.js +1 -3
  247. package/dist/esm/packages/taco/src/components/Popover/util.js.map +1 -1
  248. package/dist/esm/packages/taco/src/components/Progress/Progress.js +11 -13
  249. package/dist/esm/packages/taco/src/components/Progress/Progress.js.map +1 -1
  250. package/dist/esm/packages/taco/src/components/Provider/Localization.js +12 -13
  251. package/dist/esm/packages/taco/src/components/Provider/Localization.js.map +1 -1
  252. package/dist/esm/packages/taco/src/components/Provider/Provider.js +8 -8
  253. package/dist/esm/packages/taco/src/components/Provider/Provider.js.map +1 -1
  254. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js +47 -54
  255. package/dist/esm/packages/taco/src/components/RadioGroup/RadioGroup.js.map +1 -1
  256. package/dist/esm/packages/taco/src/components/RadioGroup/util.js +1 -7
  257. package/dist/esm/packages/taco/src/components/RadioGroup/util.js.map +1 -1
  258. package/dist/esm/packages/taco/src/components/Report/Report.js +5 -7
  259. package/dist/esm/packages/taco/src/components/Report/Report.js.map +1 -1
  260. package/dist/esm/packages/taco/src/components/Report/useReport.js +1 -1
  261. package/dist/esm/packages/taco/src/components/Report/useReport.js.map +1 -1
  262. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js +13 -17
  263. package/dist/esm/packages/taco/src/components/ScrollArea/ScrollArea.js.map +1 -1
  264. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js +11 -11
  265. package/dist/esm/packages/taco/src/components/SearchInput/SearchInput.js.map +1 -1
  266. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js +40 -48
  267. package/dist/esm/packages/taco/src/components/SearchInput2/SearchInput2.js.map +1 -1
  268. package/dist/esm/packages/taco/src/components/Select/Select.js +31 -28
  269. package/dist/esm/packages/taco/src/components/Select/Select.js.map +1 -1
  270. package/dist/esm/packages/taco/src/components/Select/useSelect.js +70 -79
  271. package/dist/esm/packages/taco/src/components/Select/useSelect.js.map +1 -1
  272. package/dist/esm/packages/taco/src/components/Select2/Select2.js +121 -154
  273. package/dist/esm/packages/taco/src/components/Select2/Select2.js.map +1 -1
  274. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js +4 -2
  275. package/dist/esm/packages/taco/src/components/Select2/components/Collection.js.map +1 -1
  276. package/dist/esm/packages/taco/src/components/Select2/components/Context.js +2 -4
  277. package/dist/esm/packages/taco/src/components/Select2/components/Context.js.map +1 -1
  278. package/dist/esm/packages/taco/src/components/Select2/components/Create.js +41 -45
  279. package/dist/esm/packages/taco/src/components/Select2/components/Create.js.map +1 -1
  280. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js +129 -145
  281. package/dist/esm/packages/taco/src/components/Select2/components/Edit.js.map +1 -1
  282. package/dist/esm/packages/taco/src/components/Select2/components/Group.js +8 -8
  283. package/dist/esm/packages/taco/src/components/Select2/components/Group.js.map +1 -1
  284. package/dist/esm/packages/taco/src/components/Select2/components/Option.js +30 -29
  285. package/dist/esm/packages/taco/src/components/Select2/components/Option.js.map +1 -1
  286. package/dist/esm/packages/taco/src/components/Select2/components/Search.js +10 -9
  287. package/dist/esm/packages/taco/src/components/Select2/components/Search.js.map +1 -1
  288. package/dist/esm/packages/taco/src/components/Select2/components/Title.js +2 -2
  289. package/dist/esm/packages/taco/src/components/Select2/components/Title.js.map +1 -1
  290. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js +128 -136
  291. package/dist/esm/packages/taco/src/components/Select2/components/Trigger.js.map +1 -1
  292. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js +23 -32
  293. package/dist/esm/packages/taco/src/components/Select2/hooks/useChildren.js.map +1 -1
  294. package/dist/esm/packages/taco/src/components/Select2/utilities.js +6 -13
  295. package/dist/esm/packages/taco/src/components/Select2/utilities.js.map +1 -1
  296. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js +13 -16
  297. package/dist/esm/packages/taco/src/components/Shortcut/Shortcut.js.map +1 -1
  298. package/dist/esm/packages/taco/src/components/Spinner/Spinner.js +12 -17
  299. package/dist/esm/packages/taco/src/components/Spinner/Spinner.js.map +1 -1
  300. package/dist/esm/packages/taco/src/components/Switch/Switch.js +14 -14
  301. package/dist/esm/packages/taco/src/components/Switch/Switch.js.map +1 -1
  302. package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js +23 -28
  303. package/dist/esm/packages/taco/src/components/Table/components/BaseTable.js.map +1 -1
  304. package/dist/esm/packages/taco/src/components/Table/components/PaginatedTable.js +3 -7
  305. package/dist/esm/packages/taco/src/components/Table/components/PaginatedTable.js.map +1 -1
  306. package/dist/esm/packages/taco/src/components/Table/components/Table.js +18 -22
  307. package/dist/esm/packages/taco/src/components/Table/components/Table.js.map +1 -1
  308. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js +92 -100
  309. package/dist/esm/packages/taco/src/components/Table/components/WindowedTable.js.map +1 -1
  310. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js +119 -137
  311. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowActions.js.map +1 -1
  312. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowDraggable.js +55 -55
  313. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowDraggable.js.map +1 -1
  314. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowEditing.js +41 -35
  315. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowEditing.js.map +1 -1
  316. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowSelect.js +71 -77
  317. package/dist/esm/packages/taco/src/components/Table/hooks/plugins/useRowSelect.js.map +1 -1
  318. package/dist/esm/packages/taco/src/components/Table/hooks/useRowCreation.js +30 -56
  319. package/dist/esm/packages/taco/src/components/Table/hooks/useRowCreation.js.map +1 -1
  320. package/dist/esm/packages/taco/src/components/Table/hooks/useTable.js +142 -151
  321. package/dist/esm/packages/taco/src/components/Table/hooks/useTable.js.map +1 -1
  322. package/dist/esm/packages/taco/src/components/Table/hooks/useTableKeyboardNavigation.js +20 -22
  323. package/dist/esm/packages/taco/src/components/Table/hooks/useTableKeyboardNavigation.js.map +1 -1
  324. package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js +12 -9
  325. package/dist/esm/packages/taco/src/components/Table/util/renderColumn.js.map +1 -1
  326. package/dist/esm/packages/taco/src/components/Table/util/renderRow.js +41 -41
  327. package/dist/esm/packages/taco/src/components/Table/util/renderRow.js.map +1 -1
  328. package/dist/esm/packages/taco/src/components/Table/util/rowIndexPath.js +14 -16
  329. package/dist/esm/packages/taco/src/components/Table/util/rowIndexPath.js.map +1 -1
  330. package/dist/esm/packages/taco/src/components/Table/util/sortTypes.js +26 -32
  331. package/dist/esm/packages/taco/src/components/Table/util/sortTypes.js.map +1 -1
  332. package/dist/esm/packages/taco/src/components/Table/util.js +30 -37
  333. package/dist/esm/packages/taco/src/components/Table/util.js.map +1 -1
  334. package/dist/esm/packages/taco/src/components/Table3/Table3.js +10 -12
  335. package/dist/esm/packages/taco/src/components/Table3/Table3.js.map +1 -1
  336. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Cell.js +14 -13
  337. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Cell.js.map +1 -1
  338. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js +23 -21
  339. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/RowMoveIndicator.js.map +1 -1
  340. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.js +17 -20
  341. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/Editing/TextareaWithAutosizing.js.map +1 -1
  342. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js +82 -70
  343. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingControlCell.js.map +1 -1
  344. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingDisplayCell.js +2 -2
  345. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/EditingDisplayCell.js.map +1 -1
  346. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js +20 -19
  347. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Cell/util.js.map +1 -1
  348. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js +25 -26
  349. package/dist/esm/packages/taco/src/components/Table3/components/Columns/Internal/EditingActionsMenu.js.map +1 -1
  350. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js +48 -60
  351. package/dist/esm/packages/taco/src/components/Table3/components/Editing/Alert.js.map +1 -1
  352. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js +8 -7
  353. package/dist/esm/packages/taco/src/components/Table3/components/Editing/DiscardChangesConfirmationDialog.js.map +1 -1
  354. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js +19 -18
  355. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/CreateNewRow.js.map +1 -1
  356. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js +10 -7
  357. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/SaveStatus.js.map +1 -1
  358. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js +35 -38
  359. package/dist/esm/packages/taco/src/components/Table3/components/Row/Editing/TemporaryRow.js.map +1 -1
  360. package/dist/esm/packages/taco/src/components/Table3/components/Row/Row.js +15 -15
  361. package/dist/esm/packages/taco/src/components/Table3/components/Row/Row.js.map +1 -1
  362. package/dist/esm/packages/taco/src/components/Table3/components/Toolbar/Editing/Editing.js +11 -8
  363. package/dist/esm/packages/taco/src/components/Table3/components/Toolbar/Editing/Editing.js.map +1 -1
  364. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js +244 -183
  365. package/dist/esm/packages/taco/src/components/Table3/features/useEditingState.js.map +1 -1
  366. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js +32 -48
  367. package/dist/esm/packages/taco/src/components/Table3/features/useTableEditing.js.map +1 -1
  368. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js +28 -33
  369. package/dist/esm/packages/taco/src/components/Table3/listeners/useTableEditingListener.js.map +1 -1
  370. package/dist/esm/packages/taco/src/components/Table3/useTable3.js +21 -28
  371. package/dist/esm/packages/taco/src/components/Table3/useTable3.js.map +1 -1
  372. package/dist/esm/packages/taco/src/components/Table3/util/editing.js +35 -29
  373. package/dist/esm/packages/taco/src/components/Table3/util/editing.js.map +1 -1
  374. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js +35 -34
  375. package/dist/esm/packages/taco/src/components/Tabs/Tabs.js.map +1 -1
  376. package/dist/esm/packages/taco/src/components/Tag/Tag.js +12 -12
  377. package/dist/esm/packages/taco/src/components/Tag/Tag.js.map +1 -1
  378. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js +11 -8
  379. package/dist/esm/packages/taco/src/components/Textarea/Textarea.js.map +1 -1
  380. package/dist/esm/packages/taco/src/components/Toast/Toast.js +20 -19
  381. package/dist/esm/packages/taco/src/components/Toast/Toast.js.map +1 -1
  382. package/dist/esm/packages/taco/src/components/Toast/Toaster.js +96 -117
  383. package/dist/esm/packages/taco/src/components/Toast/Toaster.js.map +1 -1
  384. package/dist/esm/packages/taco/src/components/Toast/util.js +4 -6
  385. package/dist/esm/packages/taco/src/components/Toast/util.js.map +1 -1
  386. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js +9 -10
  387. package/dist/esm/packages/taco/src/components/Tooltip/Tooltip.js.map +1 -1
  388. package/dist/esm/packages/taco/src/components/Tour/Tour.js +46 -49
  389. package/dist/esm/packages/taco/src/components/Tour/Tour.js.map +1 -1
  390. package/dist/esm/packages/taco/src/components/Treeview/Treeview.js +27 -33
  391. package/dist/esm/packages/taco/src/components/Treeview/Treeview.js.map +1 -1
  392. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js +13 -15
  393. package/dist/esm/packages/taco/src/components/Truncate/Truncate.js.map +1 -1
  394. package/dist/esm/packages/taco/src/components/VisuallyHidden/VisuallyHidden.js +1 -1
  395. package/dist/esm/packages/taco/src/components/VisuallyHidden/VisuallyHidden.js.map +1 -1
  396. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js +6 -11
  397. package/dist/esm/packages/taco/src/hooks/useBoundaryOverflowDetection.js.map +1 -1
  398. package/dist/esm/packages/taco/src/hooks/useBoundingClientRectListener.js +13 -19
  399. package/dist/esm/packages/taco/src/hooks/useBoundingClientRectListener.js.map +1 -1
  400. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js +4 -4
  401. package/dist/esm/packages/taco/src/hooks/useGlobalKeyDown.js.map +1 -1
  402. package/dist/esm/packages/taco/src/hooks/useId.js +2 -4
  403. package/dist/esm/packages/taco/src/hooks/useId.js.map +1 -1
  404. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js +18 -20
  405. package/dist/esm/packages/taco/src/hooks/useIntersectionObserver.js.map +1 -1
  406. package/dist/esm/packages/taco/src/hooks/useIsFormControl.js +5 -7
  407. package/dist/esm/packages/taco/src/hooks/useIsFormControl.js.map +1 -1
  408. package/dist/esm/packages/taco/src/hooks/useIsHoverStatePaused.js +5 -9
  409. package/dist/esm/packages/taco/src/hooks/useIsHoverStatePaused.js.map +1 -1
  410. package/dist/esm/packages/taco/src/hooks/useIsLargeScreen.js +1 -3
  411. package/dist/esm/packages/taco/src/hooks/useIsLargeScreen.js.map +1 -1
  412. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js +2 -2
  413. package/dist/esm/packages/taco/src/hooks/useLazyEffect.js.map +1 -1
  414. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js +22 -24
  415. package/dist/esm/packages/taco/src/hooks/useLocalStorage.js.map +1 -1
  416. package/dist/esm/packages/taco/src/hooks/useMatchMedia.js +6 -13
  417. package/dist/esm/packages/taco/src/hooks/useMatchMedia.js.map +1 -1
  418. package/dist/esm/packages/taco/src/hooks/useMergedRef.js +3 -3
  419. package/dist/esm/packages/taco/src/hooks/useMergedRef.js.map +1 -1
  420. package/dist/esm/packages/taco/src/hooks/usePrevious.js +2 -2
  421. package/dist/esm/packages/taco/src/hooks/usePrevious.js.map +1 -1
  422. package/dist/esm/packages/taco/src/index.js +0 -1
  423. package/dist/esm/packages/taco/src/index.js.map +1 -1
  424. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js +14 -14
  425. package/dist/esm/packages/taco/src/primitives/BubbleSelect.js.map +1 -1
  426. package/dist/esm/packages/taco/src/primitives/Button.js +12 -15
  427. package/dist/esm/packages/taco/src/primitives/Button.js.map +1 -1
  428. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js +44 -50
  429. package/dist/esm/packages/taco/src/primitives/Collection/components/Root.js.map +1 -1
  430. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Context.js +2 -4
  431. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Context.js.map +1 -1
  432. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Group.js +5 -9
  433. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Group.js.map +1 -1
  434. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js +18 -16
  435. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Option.js.map +1 -1
  436. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js +40 -47
  437. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Root.js.map +1 -1
  438. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Title.js +10 -9
  439. package/dist/esm/packages/taco/src/primitives/Listbox2/components/Title.js.map +1 -1
  440. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js +20 -22
  441. package/dist/esm/packages/taco/src/primitives/Sortable/components/Container.js.map +1 -1
  442. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js +27 -24
  443. package/dist/esm/packages/taco/src/primitives/Sortable/components/Item.js.map +1 -1
  444. package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js +10 -11
  445. package/dist/esm/packages/taco/src/primitives/Sortable/components/List.js.map +1 -1
  446. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js +19 -22
  447. package/dist/esm/packages/taco/src/primitives/Table/Core/Table.js.map +1 -1
  448. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js +22 -25
  449. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/Body.js.map +1 -1
  450. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js +7 -7
  451. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/EmptyStateBody.js.map +1 -1
  452. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/util.js +14 -30
  453. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Body/util.js.map +1 -1
  454. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js +19 -18
  455. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/DisplayCell.js.map +1 -1
  456. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js +34 -34
  457. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/BuiltIns/GroupedCell.js.map +1 -1
  458. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/Cell.js +12 -10
  459. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/Cell.js.map +1 -1
  460. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/util.js +18 -19
  461. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Cell/util.js.map +1 -1
  462. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js +40 -42
  463. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Actions.js.map +1 -1
  464. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js +7 -5
  465. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Drag.js.map +1 -1
  466. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js +24 -19
  467. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Expansion.js.map +1 -1
  468. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js +56 -60
  469. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Columns/Internal/Selection.js.map +1 -1
  470. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js +23 -27
  471. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Footer.js.map +1 -1
  472. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js +17 -16
  473. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Footer/Summary.js.map +1 -1
  474. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js +87 -86
  475. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/Header.js.map +1 -1
  476. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Goto.js +11 -14
  477. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Goto.js.map +1 -1
  478. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js +58 -85
  479. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Menu.js.map +1 -1
  480. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js +20 -18
  481. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/Resizer.js.map +1 -1
  482. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/SortIndicator.js +3 -3
  483. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/components/SortIndicator.js.map +1 -1
  484. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/util.js +6 -11
  485. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Header/util.js.map +1 -1
  486. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js +49 -58
  487. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/DisplayRow.js.map +1 -1
  488. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js +43 -41
  489. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.js.map +1 -1
  490. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js +19 -61
  491. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/Row.js.map +1 -1
  492. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js +1 -1
  493. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Row/RowContext.js.map +1 -1
  494. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/Toolbar.js +11 -11
  495. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/Toolbar.js.map +1 -1
  496. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js +1 -1
  497. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/FilterContext.js.map +1 -1
  498. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js +22 -23
  499. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/Filters.js.map +1 -1
  500. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js +39 -54
  501. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/ManageFiltersPopover.js.map +1 -1
  502. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js +37 -39
  503. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/Filter.js.map +1 -1
  504. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js +16 -20
  505. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterColumn.js.map +1 -1
  506. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js +15 -16
  507. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterComparator.js.map +1 -1
  508. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js +41 -50
  509. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/components/FilterValue.js.map +1 -1
  510. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/util.js +9 -13
  511. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Filters/util.js.map +1 -1
  512. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js +51 -59
  513. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/Print.js.map +1 -1
  514. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js +67 -71
  515. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Print/PrintDialog.js.map +1 -1
  516. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js +34 -60
  517. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Search/Search.js.map +1 -1
  518. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js +44 -64
  519. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Settings/HideOrOrderPopover.js.map +1 -1
  520. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js +51 -62
  521. package/dist/esm/packages/taco/src/primitives/Table/Core/components/Toolbar/components/Settings/Settings.js.map +1 -1
  522. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js +7 -7
  523. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableGlobalShortcuts.js.map +1 -1
  524. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRef.js +5 -13
  525. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRef.js.map +1 -1
  526. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js +79 -122
  527. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableRenderer.js.map +1 -1
  528. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyle.js +15 -15
  529. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyle.js.map +1 -1
  530. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleColumnFreezing.js +41 -31
  531. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleColumnFreezing.js.map +1 -1
  532. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js +30 -31
  533. package/dist/esm/packages/taco/src/primitives/Table/Core/features/useTableStyleGrid.js.map +1 -1
  534. package/dist/esm/packages/taco/src/primitives/Table/Core/listeners/useTableRowActiveListener.js +3 -3
  535. package/dist/esm/packages/taco/src/primitives/Table/Core/listeners/useTableRowActiveListener.js.map +1 -1
  536. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js +15 -14
  537. package/dist/esm/packages/taco/src/primitives/Table/Core/useTable.js.map +1 -1
  538. package/dist/esm/packages/taco/src/primitives/Table/Core/util/rows.js +2 -2
  539. package/dist/esm/packages/taco/src/primitives/Table/Core/util/rows.js.map +1 -1
  540. package/dist/esm/packages/taco/src/primitives/Table/types.js.map +1 -1
  541. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js +43 -47
  542. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader.js.map +1 -1
  543. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnFreezing.js +6 -11
  544. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnFreezing.js.map +1 -1
  545. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnOrdering.js +2 -5
  546. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableColumnOrdering.js.map +1 -1
  547. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFontSize.js +5 -15
  548. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFontSize.js.map +1 -1
  549. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFooter.js +2 -5
  550. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableFooter.js.map +1 -1
  551. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTablePrinting.js +16 -26
  552. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTablePrinting.js.map +1 -1
  553. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js +3 -9
  554. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActions.js.map +1 -1
  555. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js +24 -43
  556. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowActive.js.map +1 -1
  557. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowClick.js +6 -9
  558. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowClick.js.map +1 -1
  559. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowDrag.js +4 -9
  560. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowDrag.js.map +1 -1
  561. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowDrop.js +2 -5
  562. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowDrop.js.map +1 -1
  563. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js +3 -9
  564. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowExpansion.js.map +1 -1
  565. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGoto.js +2 -5
  566. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGoto.js.map +1 -1
  567. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGroups.js +1 -1
  568. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowGroups.js.map +1 -1
  569. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowHeight.js +5 -15
  570. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowHeight.js.map +1 -1
  571. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowSelection.js +9 -14
  572. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableRowSelection.js.map +1 -1
  573. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js +13 -26
  574. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSearch.js.map +1 -1
  575. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js +21 -43
  576. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableServerLoading.js.map +1 -1
  577. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSettings.js +24 -34
  578. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/features/useTableSettings.js.map +1 -1
  579. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js +4 -4
  580. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableDataListener.js.map +1 -1
  581. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js +3 -5
  582. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFilterListener.js.map +1 -1
  583. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js +16 -20
  584. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableFontSizeListener.js.map +1 -1
  585. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js +2 -2
  586. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowHeightListener.js.map +1 -1
  587. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js +6 -8
  588. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableRowSelectionListener.js.map +1 -1
  589. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js +16 -17
  590. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSearchListener.js.map +1 -1
  591. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js +4 -8
  592. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableServerLoadingListener.js.map +1 -1
  593. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSettingsListener.js +6 -8
  594. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSettingsListener.js.map +1 -1
  595. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js +17 -17
  596. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableShortcutsListener.js.map +1 -1
  597. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSortingListener.js +2 -2
  598. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/listeners/useTableSortingListener.js.map +1 -1
  599. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js +56 -56
  600. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/useTableManager.js.map +1 -1
  601. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js +29 -61
  602. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/columns.js.map +1 -1
  603. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js +8 -8
  604. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/dataTypes.js.map +1 -1
  605. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js +19 -33
  606. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/filtering.js.map +1 -1
  607. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js +11 -11
  608. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/presets.js.map +1 -1
  609. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js +20 -24
  610. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/search.js.map +1 -1
  611. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/settings.js +7 -6
  612. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/settings.js.map +1 -1
  613. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js +107 -145
  614. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/setup.js.map +1 -1
  615. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js +1 -3
  616. package/dist/esm/packages/taco/src/primitives/Table/useTableManager/util/sorting.js.map +1 -1
  617. package/dist/esm/packages/taco/src/types.js +1 -1
  618. package/dist/esm/packages/taco/src/types.js.map +1 -1
  619. package/dist/esm/packages/taco/src/utils/aria.js +2 -2
  620. package/dist/esm/packages/taco/src/utils/aria.js.map +1 -1
  621. package/dist/esm/packages/taco/src/utils/date.js +23 -47
  622. package/dist/esm/packages/taco/src/utils/date.js.map +1 -1
  623. package/dist/esm/packages/taco/src/utils/debounce.js +4 -10
  624. package/dist/esm/packages/taco/src/utils/debounce.js.map +1 -1
  625. package/dist/esm/packages/taco/src/utils/device.js +2 -4
  626. package/dist/esm/packages/taco/src/utils/device.js.map +1 -1
  627. package/dist/esm/packages/taco/src/utils/dom.js +26 -29
  628. package/dist/esm/packages/taco/src/utils/dom.js.map +1 -1
  629. package/dist/esm/packages/taco/src/utils/hooks/useDraggable.js +38 -40
  630. package/dist/esm/packages/taco/src/utils/hooks/useDraggable.js.map +1 -1
  631. package/dist/esm/packages/taco/src/utils/hooks/useDropTarget.js +7 -9
  632. package/dist/esm/packages/taco/src/utils/hooks/useDropTarget.js.map +1 -1
  633. package/dist/esm/packages/taco/src/utils/hooks/useListKeyboardNavigation.js +9 -20
  634. package/dist/esm/packages/taco/src/utils/hooks/useListKeyboardNavigation.js.map +1 -1
  635. package/dist/esm/packages/taco/src/utils/hooks/useListScrollTo.js +9 -9
  636. package/dist/esm/packages/taco/src/utils/hooks/useListScrollTo.js.map +1 -1
  637. package/dist/esm/packages/taco/src/utils/hooks/useOnClickOutside.js +6 -8
  638. package/dist/esm/packages/taco/src/utils/hooks/useOnClickOutside.js.map +1 -1
  639. package/dist/esm/packages/taco/src/utils/hooks/useTimer.js +11 -16
  640. package/dist/esm/packages/taco/src/utils/hooks/useTimer.js.map +1 -1
  641. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js +6 -11
  642. package/dist/esm/packages/taco/src/utils/hooks/useTruncated.js.map +1 -1
  643. package/dist/esm/packages/taco/src/utils/input.js +7 -10
  644. package/dist/esm/packages/taco/src/utils/input.js.map +1 -1
  645. package/dist/esm/packages/taco/src/utils/keyboard.js +7 -10
  646. package/dist/esm/packages/taco/src/utils/keyboard.js.map +1 -1
  647. package/dist/esm/packages/taco/src/utils/mergeRefs.js +2 -2
  648. package/dist/esm/packages/taco/src/utils/mergeRefs.js.map +1 -1
  649. package/dist/esm/packages/taco/src/utils/tailwind.js +7 -5
  650. package/dist/esm/packages/taco/src/utils/tailwind.js.map +1 -1
  651. package/dist/esm/packages/taco/tailwind.colors.js +1 -1
  652. package/dist/esm/packages/taco/tailwind.colors.js.map +1 -1
  653. package/dist/index.d.ts +0 -1
  654. package/dist/primitives/Table/Core/components/Row/BuiltIns/SkeletonRow.d.ts +2 -2
  655. package/dist/primitives/Table/Core/components/Row/Row.d.ts +0 -2
  656. package/dist/primitives/Table/Core/features/useTableRenderer.d.ts +1 -1
  657. package/dist/primitives/Table/types.d.ts +6 -10
  658. package/dist/primitives/Table/useTableManager/features/useTableSearch.d.ts +2 -4
  659. package/dist/primitives/Table/useTableManager/features/useTableServerLoading.d.ts +1 -4
  660. package/dist/primitives/Table/useTableManager/listeners/useTableSearchListener.d.ts +2 -1
  661. package/dist/primitives/Table/useTableManager/util/columns.d.ts +1 -2
  662. package/dist/taco.cjs.development.js +6978 -8219
  663. package/dist/taco.cjs.development.js.map +1 -1
  664. package/dist/taco.cjs.production.min.js +1 -1
  665. package/dist/taco.cjs.production.min.js.map +1 -1
  666. package/dist/types.d.ts +1 -1
  667. package/package.json +3 -2
  668. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js +0 -63
  669. package/dist/esm/_virtual/_rollupPluginBabelHelpers.js.map +0 -1
  670. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js +0 -231
  671. package/dist/esm/packages/taco/src/primitives/Table/useTableDataLoader2.js.map +0 -1
  672. package/dist/hooks/useLazyDebouncedEffect.d.ts +0 -2
  673. package/dist/primitives/Table/useTableDataLoader2.d.ts +0 -23
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollableList.js","sources":["../../../../../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { getNextIndexFromKey } from '../../utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\nimport './ScrollableList.css';\nimport { Spinner } from '../Spinner/Spinner';\nimport { useLocalization } from '../Provider/Localization';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { getInputClasses } from '../Input/util';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /* Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement;\n /* The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /* Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n } else if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted,\n id,\n invalid: _,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex !== undefined ? nextIndex : currentIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n } else if (!optionValue || !selectedIndexes) {\n return false;\n } else {\n return selectedIndexes.findIndex(i => i === index) !== -1;\n }\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex items-center px-3 w-full cursor-pointer bg-white flex-[0_0_2rem] focus:wcag-blue-500 focus:border-blue-500',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span className=\"flex-grow truncate text-left\">{children}</span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["getId","id","value","getNextEnabledItem","event","data","index","nextIndex","getNextIndexFromKey","key","length","disabled","ScrollableList","React","props","ref","loading","setCurrentIndex","onChange","onClick","onFocus","onKeyDown","readOnly","_props$scrollOnFocus","scrollOnFocus","currentIndex","multiselect","_props$selectedIndexe","selectedIndexes","_props$allOptionsSele","allOptionsSelected","otherProps","_objectWithoutPropertiesLoose","_excluded","listRef","useMergedRef","itemRefs","map","_useLocalization","useLocalization","texts","_useListScrollTo","useListScrollTo","scrollTo","_itemRefs$currentInde","current","_itemRefs$currentInde2","scrollIntoView","block","handleKeyDown","undefined","preventDefault","persist","stopPropagation","handleClick","handleFocus","getOptionCheckedState","optionValue","findIndex","i","options","option","depth","path","split","String","children","text","className","cn","hasChildren","icon","role","style","paddingLeft","list","_extends","getInputClasses","tabIndex","Spinner","delay","listbox","_ref","optionProps","_excluded2","Checkbox","checked","empty"],"mappings":"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"}
1
+ {"version":3,"file":"ScrollableList.js","sources":["../../../../../../../src/components/Listbox/ScrollableList.tsx"],"sourcesContent":["import * as React from 'react';\nimport cn from 'clsx';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { getNextIndexFromKey } from '../../utils/hooks/useListKeyboardNavigation';\nimport { useListScrollTo } from '../../utils/hooks/useListScrollTo';\nimport './ScrollableList.css';\nimport { Spinner } from '../Spinner/Spinner';\nimport { useLocalization } from '../Provider/Localization';\nimport { Checkbox } from '../Checkbox/Checkbox';\nimport { getInputClasses } from '../Input/util';\n\nexport type ScrollableListItemValue = string | number | boolean | null;\n\nexport type ScrollableListItem = {\n /**\n * Set whether the item is disabled.\n * This will both change the style and make the item unselectable\n */\n disabled?: boolean;\n /* Specifies whether the item has child items -- intended for internal use only */\n hasChildren?: boolean;\n /** Place an icon before the item's text */\n icon?: React.ReactElement;\n /* The index path to the item -- intended for internal use only */\n path?: string;\n /** Text describing the item */\n text: string | JSX.Element;\n /** Value of the item */\n value: ScrollableListItemValue;\n /** Child items to show hierarchical data */\n children?: ScrollableListItem[];\n};\n\n/** @internal */\nexport type ScrollableListProps = Omit<\n React.HTMLAttributes<HTMLUListElement>,\n 'defaultValue' | 'id' | 'onChange' | 'onClick' | 'onKeyDown'\n> & {\n /** Data indicating the options in scrollable list */\n data: ScrollableListItem[];\n /** Sets the list to be disabled */\n disabled?: boolean;\n /** Draws attention to the scrollable list by changing its style and making it visually prominent */\n highlighted?: boolean;\n /** Set an id for the scrollable list */\n id: string;\n /* Whether the input is in an invalid state */\n invalid?: boolean;\n /**\n * Shows a loading indicator with a text next to it.\n * Read more about how to provide the text in `Provider` component.\n */\n loading?: boolean;\n /**\n * Handler called when current active/selected option changes in a scrollable list.\n * @param index indicates the index of the current active option\n */\n onChange: (index: number) => void;\n /** Handler called when option is clicked */\n onClick?: (event: React.MouseEvent<HTMLLIElement>, index: number) => void;\n /**\n * Set whether the selected item should be scrolled into view when listbox is focused.\n * Default value is `false`\n */\n scrollOnFocus?: boolean;\n /** Handler called when a key is pressed */\n onKeyDown?: (event: React.KeyboardEvent<HTMLUListElement>, index: number | undefined) => void;\n /* Sets the list to read only mode */\n readOnly?: boolean;\n /**\n * Value of the scrollable list representing the selected item.\n * It needs to be an existing value from the provided data.\n */\n value: number | undefined;\n /**\n * Allows to select multiple items from the list\n */\n multiselect?: boolean;\n /**\n * Contains the currently selected values when multiselect mode is ON.\n */\n selectedIndexes?: number[];\n /**\n * True when all available (not disabled) options are selected\n */\n allOptionsSelected?: boolean;\n};\n\n/** @internal */\nexport type ScrollableListPropsWithRef = ScrollableListProps & React.RefAttributes<HTMLUListElement>;\n\nexport const getId = (id: string, value: ScrollableListItemValue): string => `${id}_${value}`;\n\nconst getNextEnabledItem = (\n event: React.KeyboardEvent<HTMLElement>,\n data: ScrollableListItem[],\n index: number | undefined\n): number | undefined => {\n const nextIndex = getNextIndexFromKey(event.key, data.length, index);\n\n if (nextIndex) {\n if (nextIndex === index) {\n return index;\n } else if (data[nextIndex] && data[nextIndex].disabled) {\n return getNextEnabledItem(event, data, nextIndex);\n }\n }\n\n return nextIndex;\n};\n\nexport const ScrollableList = React.forwardRef(function ScrollableList(\n props: ScrollableListProps,\n ref: React.Ref<HTMLUListElement>\n) {\n const {\n data,\n disabled,\n highlighted,\n id,\n invalid: _,\n loading,\n onChange: setCurrentIndex,\n onClick,\n onFocus,\n onKeyDown,\n readOnly,\n scrollOnFocus = false,\n value: currentIndex,\n multiselect,\n selectedIndexes = [],\n allOptionsSelected = false,\n ...otherProps\n } = props;\n const listRef = useMergedRef<HTMLUListElement>(ref);\n const itemRefs = React.useMemo(() => data.map(() => React.createRef<HTMLLIElement>()), [data]);\n const { texts } = useLocalization();\n const { scrollTo } = useListScrollTo(listRef, itemRefs);\n\n React.useEffect(() => {\n if (currentIndex && itemRefs[currentIndex]?.current) {\n itemRefs[currentIndex].current?.scrollIntoView({\n block: 'center',\n });\n }\n }, []);\n\n React.useEffect(() => {\n scrollTo(currentIndex);\n }, [currentIndex]);\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLUListElement>): void => {\n const nextIndex = getNextEnabledItem(event, data, currentIndex);\n\n if (nextIndex !== undefined && nextIndex !== currentIndex) {\n event.preventDefault();\n scrollTo(nextIndex);\n setCurrentIndex(nextIndex);\n }\n\n if (onKeyDown) {\n event.persist();\n const index = nextIndex !== undefined ? nextIndex : currentIndex;\n onKeyDown(event, index);\n }\n\n // Stops the keyboard event from propagating so that keyboard event on other components outside the scrollable\n // list are not executed.\n event.stopPropagation();\n };\n\n const handleClick = (index: number) => (event: React.MouseEvent<HTMLLIElement>) => {\n setCurrentIndex(index);\n\n if (onClick) {\n event.persist();\n onClick(event, index);\n }\n };\n\n const handleFocus = (event: React.FocusEvent<HTMLUListElement>): void => {\n if (scrollOnFocus) {\n scrollTo(currentIndex);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const getOptionCheckedState = (optionValue: string, index: number): boolean => {\n if (optionValue === '#ALL-OPTIONS#') {\n return allOptionsSelected;\n } else if (!optionValue || !selectedIndexes) {\n return false;\n } else {\n return selectedIndexes.findIndex(i => i === index) !== -1;\n }\n };\n\n const options = data.map((option, index) => {\n const depth = option.path ? option.path.split('.').length - 1 : 0;\n\n return {\n 'aria-selected': multiselect ? getOptionCheckedState(String(option.value), index) : currentIndex === index,\n 'data-focused': currentIndex === index,\n children: option.text,\n className: cn(\n 'flex items-center px-3 w-full cursor-pointer bg-white flex-[0_0_2rem] focus:wcag-blue-500 focus:border-blue-500',\n {\n 'sticky top-0 font-bold': depth === 0 && !!option.hasChildren,\n }\n ),\n disabled: option.disabled,\n icon: option.icon,\n id: getId(id, option.value),\n key: getId(id, option.value),\n onClick: !disabled && !readOnly ? handleClick(index) : undefined,\n ref: itemRefs[index],\n role: 'option',\n style:\n depth > 0\n ? {\n paddingLeft: `${depth + 1}rem`,\n }\n : undefined,\n };\n });\n\n const list: React.HTMLAttributes<HTMLUListElement> &\n React.RefAttributes<HTMLUListElement> & { disabled?: boolean; readOnly?: boolean } = {\n ...otherProps,\n className: cn(\n 'inline-flex flex-col list-none !p-0 m-0 overflow-y-auto h-auto',\n getInputClasses(props),\n {\n 'yt-list--multiselect': multiselect,\n 'pointer-events-none': disabled,\n 'cursor-not-allowed': disabled || readOnly,\n },\n otherProps.className\n ),\n disabled,\n id,\n onFocus: !disabled && !readOnly ? handleFocus : undefined,\n onKeyDown: !disabled && !readOnly ? handleKeyDown : undefined,\n readOnly,\n ref: listRef,\n role: options.length <= 0 || loading ? 'presentation' : 'listbox',\n tabIndex: otherProps.tabIndex || 0,\n };\n\n return (\n <ul {...list} data-taco=\"scrollable-list\">\n {loading ? (\n <li className=\"yt-list__empty\">\n <span>\n <Spinner delay={0} />\n </span>\n <span>{texts.listbox.loading}</span>\n </li>\n ) : options.length ? (\n options.map(({ children, icon, ...optionProps }) => (\n <li {...optionProps}>\n {icon}\n <span className=\"flex-grow truncate text-left\">{children}</span>\n {multiselect && (\n <Checkbox\n // In multiselect variant, this checkbox only acts as visual representation of item being selected,\n // so need to be taken out of screen reader scope.\n aria-hidden\n tabIndex={-1}\n checked={optionProps['aria-selected']}\n onChange={() => null}\n className=\"pointer-events-none ml-2 self-center p-px\"\n />\n )}\n </li>\n ))\n ) : (\n <li className=\"yt-list__empty\">\n <span>{texts.listbox.empty}</span>\n </li>\n )}\n </ul>\n );\n});\n"],"names":["getId","id","value","getNextEnabledItem","event","data","index","nextIndex","getNextIndexFromKey","key","length","disabled","ScrollableList","React","props","ref","highlighted","invalid","_","loading","onChange","setCurrentIndex","onClick","onFocus","onKeyDown","readOnly","scrollOnFocus","currentIndex","multiselect","selectedIndexes","allOptionsSelected","otherProps","listRef","useMergedRef","itemRefs","map","texts","useLocalization","scrollTo","useListScrollTo","_itemRefs$currentInde","current","_itemRefs$currentInde2","scrollIntoView","block","handleKeyDown","undefined","preventDefault","persist","stopPropagation","handleClick","handleFocus","getOptionCheckedState","optionValue","findIndex","i","options","option","depth","path","split","String","children","text","className","cn","hasChildren","icon","role","style","paddingLeft","list","getInputClasses","tabIndex","Spinner","delay","listbox","optionProps","Checkbox","checked","empty"],"mappings":"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"}
@@ -1,55 +1,51 @@
1
1
  import { useMemo, useEffect } from 'react';
2
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
2
  import { useMergedRef } from '../../hooks/useMergedRef.js';
4
3
  import { v4 } from 'uuid';
5
4
  import { useFlattenedData, getIndexFromValue, getActiveDescendant, setInputValueByRef, findByValue, sanitizeItem } from './util.js';
6
5
  import { useTypeahead } from './useTypeahead.js';
7
6
 
8
- var _excluded = ["data", "defaultValue", "disabled", "emptyValue", "id", "invalid", "name", "onChange", "onFocus", "onKeyDown", "value"];
9
- var useListbox = function useListbox(_ref, ref) {
10
- var _ref$data = _ref.data,
11
- externalData = _ref$data === void 0 ? [] : _ref$data,
12
- defaultValue = _ref.defaultValue,
13
- disabled = _ref.disabled,
14
- emptyValue = _ref.emptyValue,
15
- nativeId = _ref.id,
16
- invalid = _ref.invalid,
17
- name = _ref.name,
18
- onChange = _ref.onChange,
19
- onFocus = _ref.onFocus,
20
- onKeyDown = _ref.onKeyDown,
21
- _ref$value = _ref.value,
22
- value = _ref$value === void 0 ? emptyValue : _ref$value,
23
- otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
24
- var data = useFlattenedData(emptyValue !== undefined ? [{
7
+ const useListbox = ({
8
+ data: externalData = [],
9
+ defaultValue,
10
+ disabled,
11
+ emptyValue,
12
+ id: nativeId,
13
+ invalid,
14
+ name,
15
+ onChange,
16
+ onFocus,
17
+ onKeyDown,
18
+ value = emptyValue,
19
+ ...otherProps
20
+ }, ref) => {
21
+ const data = useFlattenedData(emptyValue !== undefined ? [{
25
22
  text: '',
26
23
  value: emptyValue
27
- }].concat(externalData) : externalData);
28
- var id = useMemo(function () {
29
- return nativeId || v4();
30
- }, [nativeId]);
31
- var inputRef = useMergedRef(ref);
32
- var currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
33
- var _useTypeahead = useTypeahead({
34
- data: data,
35
- currentIndex: currentIndex
36
- }),
37
- getNextIndex = _useTypeahead.getNextIndex;
38
- var setInputValueByIndex = function setInputValueByIndex(index) {
24
+ }, ...externalData] : externalData);
25
+ const id = useMemo(() => nativeId || v4(), [nativeId]);
26
+ const inputRef = useMergedRef(ref);
27
+ const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;
28
+ const {
29
+ getNextIndex
30
+ } = useTypeahead({
31
+ data,
32
+ currentIndex
33
+ });
34
+ const setInputValueByIndex = index => {
39
35
  if (index !== undefined) {
40
- var option = data[index];
36
+ const option = data[index];
41
37
  if (option && !option.disabled) {
42
38
  setInputValueByRef(inputRef.current, option.value);
43
39
  }
44
40
  }
45
41
  };
46
- var handleListboxChange = function handleListboxChange(index) {
42
+ const handleListboxChange = index => {
47
43
  setInputValueByIndex(index);
48
44
  };
49
- useEffect(function () {
45
+ useEffect(() => {
50
46
  if (data.length && currentIndex === undefined) {
51
47
  if (defaultValue !== undefined) {
52
- var defaultValueIndex = getIndexFromValue(data, defaultValue);
48
+ const defaultValueIndex = getIndexFromValue(data, defaultValue);
53
49
  if (defaultValueIndex !== undefined) {
54
50
  setInputValueByIndex(defaultValueIndex);
55
51
  }
@@ -58,12 +54,12 @@ var useListbox = function useListbox(_ref, ref) {
58
54
  }
59
55
  }
60
56
  }, [data]);
61
- var handleListboxKeyDown = function handleListboxKeyDown(event) {
62
- var charKey = event.key;
57
+ const handleListboxKeyDown = event => {
58
+ const charKey = event.key;
63
59
  // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)
64
60
  // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed
65
61
  if (charKey.length === 1 && /(\w)/g.test(charKey)) {
66
- var nextIndex = getNextIndex(charKey);
62
+ const nextIndex = getNextIndex(charKey);
67
63
  if (nextIndex > -1 && nextIndex !== currentIndex) {
68
64
  setInputValueByIndex(nextIndex);
69
65
  }
@@ -74,7 +70,7 @@ var useListbox = function useListbox(_ref, ref) {
74
70
  onKeyDown(event);
75
71
  }
76
72
  };
77
- var handleListboxFocus = function handleListboxFocus(event) {
73
+ const handleListboxFocus = event => {
78
74
  if (currentIndex === undefined && data.length) {
79
75
  setInputValueByIndex(0);
80
76
  }
@@ -83,51 +79,50 @@ var useListbox = function useListbox(_ref, ref) {
83
79
  onFocus(event);
84
80
  }
85
81
  };
86
- var handleInputChange = function handleInputChange(event) {
82
+ const handleInputChange = event => {
87
83
  event.persist();
88
84
  if (onChange) {
89
85
  var _item$path$split, _item$path;
90
- var item = findByValue(data, event.target.value);
86
+ const item = findByValue(data, event.target.value);
91
87
  event.detail = sanitizeItem(item);
92
- var indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
88
+ const indexes = (_item$path$split = item === null || item === void 0 ? void 0 : (_item$path = item.path) === null || _item$path === void 0 ? void 0 : _item$path.split('.')) !== null && _item$path$split !== void 0 ? _item$path$split : [];
93
89
  if (indexes.length > 1) {
94
90
  // we don't want to map the current item
95
91
  indexes.pop();
96
92
  // we need to rebuild the path as we map
97
- var lastPath;
98
- event.detail.parents = indexes.map(function (i) {
93
+ let lastPath;
94
+ event.detail.parents = indexes.map(i => {
99
95
  lastPath = lastPath ? [lastPath, i].join('.') : i;
100
- return sanitizeItem(data.find(function (i) {
101
- return i.path === lastPath;
102
- }));
96
+ return sanitizeItem(data.find(i => i.path === lastPath));
103
97
  });
104
98
  }
105
99
  onChange(event);
106
100
  }
107
101
  };
108
- var list = _extends({}, otherProps, {
102
+ const list = {
103
+ ...otherProps,
109
104
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
110
- data: data,
111
- disabled: disabled,
112
- id: id,
113
- invalid: invalid,
105
+ data,
106
+ disabled,
107
+ id,
108
+ invalid,
114
109
  onChange: handleListboxChange,
115
110
  onFocus: handleListboxFocus,
116
111
  onKeyDown: handleListboxKeyDown,
117
112
  scrollOnFocus: true,
118
113
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
119
114
  value: currentIndex
120
- });
121
- var input = {
122
- name: name,
115
+ };
116
+ const input = {
117
+ name,
123
118
  onChange: handleInputChange,
124
119
  ref: inputRef,
125
120
  tabIndex: -1,
126
121
  value: value !== null && value !== void 0 ? value : ''
127
122
  };
128
123
  return {
129
- list: list,
130
- input: input
124
+ list,
125
+ input
131
126
  };
132
127
  };
133
128
 
@@ -1 +1 @@
1
- {"version":3,"file":"useListbox.js","sources":["../../../../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ListboxProps } from './Listbox';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\nimport { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n invalid,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue !== undefined) {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n } else {\n setInputValueByIndex(0);\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n invalid,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useListbox","_ref","ref","data","externalData","_ref$data","defaultValue","disabled","emptyValue","nativeId","id","invalid","name","onChange","onFocus","onKeyDown","_ref$value","value","otherProps","_objectWithoutPropertiesLoose","_excluded","useFlattenedData","undefined","text","concat","React","uuid","inputRef","useMergedRef","currentIndex","getIndexFromValue","_useTypeahead","useTypeahead","getNextIndex","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","key","test","nextIndex","persist","handleListboxFocus","handleInputChange","_item$path$split","_item$path","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","_extends","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":"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"}
1
+ {"version":3,"file":"useListbox.js","sources":["../../../../../../../src/components/Listbox/useListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { ListboxProps } from './Listbox';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { setInputValueByRef, getIndexFromValue, findByValue, getActiveDescendant, useFlattenedData, sanitizeItem } from './util';\nimport { ScrollableListProps } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue,\n id: nativeId,\n invalid,\n name,\n onChange,\n onFocus,\n onKeyDown,\n value = emptyValue,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const data = useFlattenedData(emptyValue !== undefined ? [{ text: '', value: emptyValue }, ...externalData] : externalData);\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const currentIndex = value !== undefined ? getIndexFromValue(data, value) : undefined;\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n setInputValueByRef(inputRef.current, option.value);\n }\n }\n };\n\n const handleListboxChange = (index: number): void => {\n setInputValueByIndex(index);\n };\n\n React.useEffect(() => {\n if (data.length && currentIndex === undefined) {\n if (defaultValue !== undefined) {\n const defaultValueIndex = getIndexFromValue(data, defaultValue);\n\n if (defaultValueIndex !== undefined) {\n setInputValueByIndex(defaultValueIndex);\n }\n } else {\n setInputValueByIndex(0);\n }\n }\n }, [data]);\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setInputValueByIndex(nextIndex);\n }\n return;\n }\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (currentIndex === undefined && data.length) {\n setInputValueByIndex(0);\n }\n\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n if (onChange) {\n const item = findByValue(data, event.target.value);\n (event as any).detail = sanitizeItem(item);\n\n const indexes = item?.path?.split('.') ?? [];\n\n if (indexes.length > 1) {\n // we don't want to map the current item\n indexes.pop();\n // we need to rebuild the path as we map\n let lastPath: string;\n\n (event as any).detail.parents = indexes.map(i => {\n lastPath = lastPath ? [lastPath, i].join('.') : i;\n return sanitizeItem(data.find(i => i.path === lastPath));\n });\n }\n\n onChange(event);\n }\n };\n\n const list: ScrollableListProps = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n data,\n disabled,\n id,\n invalid,\n onChange: handleListboxChange,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: true,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useListbox","data","externalData","defaultValue","disabled","emptyValue","id","nativeId","invalid","name","onChange","onFocus","onKeyDown","value","otherProps","ref","useFlattenedData","undefined","text","React","uuid","inputRef","useMergedRef","currentIndex","getIndexFromValue","getNextIndex","useTypeahead","setInputValueByIndex","index","option","setInputValueByRef","current","handleListboxChange","length","defaultValueIndex","handleListboxKeyDown","event","charKey","key","test","nextIndex","persist","handleListboxFocus","handleInputChange","_item$path$split","_item$path","item","findByValue","target","detail","sanitizeItem","indexes","path","split","pop","lastPath","parents","map","i","join","find","list","getActiveDescendant","scrollOnFocus","tabIndex","input"],"mappings":";;;;;;MAaaA,UAAU,GAAGA,CACtB;EACIC,IAAI,EAAEC,YAAY,GAAG,EAAE;EACvBC,YAAY;EACZC,QAAQ;EACRC,UAAU;EACVC,EAAE,EAAEC,QAAQ;EACZC,OAAO;EACPC,IAAI;EACJC,QAAQ;EACRC,OAAO;EACPC,SAAS;EACTC,KAAK,GAAGR,UAAU;EAClB,GAAGS;CACQ,EACfC,GAAgC;EAEhC,MAAMd,IAAI,GAAGe,gBAAgB,CAACX,UAAU,KAAKY,SAAS,GAAG,CAAC;IAAEC,IAAI,EAAE,EAAE;IAAEL,KAAK,EAAER;GAAY,EAAE,GAAGH,YAAY,CAAC,GAAGA,YAAY,CAAC;EAC3H,MAAMI,EAAE,GAAGa,OAAa,CAAC,MAAMZ,QAAQ,IAAIa,EAAI,EAAE,EAAE,CAACb,QAAQ,CAAC,CAAC;EAC9D,MAAMc,QAAQ,GAAGC,YAAY,CAAmBP,GAAG,CAAC;EACpD,MAAMQ,YAAY,GAAGV,KAAK,KAAKI,SAAS,GAAGO,iBAAiB,CAACvB,IAAI,EAAEY,KAAK,CAAC,GAAGI,SAAS;EACrF,MAAM;IAAEQ;GAAc,GAAGC,YAAY,CAAC;IAAEzB,IAAI;IAAEsB;GAAc,CAAC;EAE7D,MAAMI,oBAAoB,GAAIC,KAAyB;IACnD,IAAIA,KAAK,KAAKX,SAAS,EAAE;MACrB,MAAMY,MAAM,GAAG5B,IAAI,CAAC2B,KAAK,CAAC;MAE1B,IAAIC,MAAM,IAAI,CAACA,MAAM,CAACzB,QAAQ,EAAE;QAC5B0B,kBAAkB,CAACT,QAAQ,CAACU,OAAO,EAAEF,MAAM,CAAChB,KAAK,CAAC;;;GAG7D;EAED,MAAMmB,mBAAmB,GAAIJ,KAAa;IACtCD,oBAAoB,CAACC,KAAK,CAAC;GAC9B;EAEDT,SAAe,CAAC;IACZ,IAAIlB,IAAI,CAACgC,MAAM,IAAIV,YAAY,KAAKN,SAAS,EAAE;MAC3C,IAAId,YAAY,KAAKc,SAAS,EAAE;QAC5B,MAAMiB,iBAAiB,GAAGV,iBAAiB,CAACvB,IAAI,EAAEE,YAAY,CAAC;QAE/D,IAAI+B,iBAAiB,KAAKjB,SAAS,EAAE;UACjCU,oBAAoB,CAACO,iBAAiB,CAAC;;OAE9C,MAAM;QACHP,oBAAoB,CAAC,CAAC,CAAC;;;GAGlC,EAAE,CAAC1B,IAAI,CAAC,CAAC;EAEV,MAAMkC,oBAAoB,GAAIC,KAAuC;IACjE,MAAMC,OAAO,GAAGD,KAAK,CAACE,GAAG;;;IAIzB,IAAID,OAAO,CAACJ,MAAM,KAAK,CAAC,IAAI,OAAO,CAACM,IAAI,CAACF,OAAO,CAAC,EAAE;MAC/C,MAAMG,SAAS,GAAGf,YAAY,CAACY,OAAO,CAAC;MAEvC,IAAIG,SAAS,GAAG,CAAC,CAAC,IAAIA,SAAS,KAAKjB,YAAY,EAAE;QAC9CI,oBAAoB,CAACa,SAAS,CAAC;;MAEnC;;IAGJ,IAAI5B,SAAS,EAAE;MACXwB,KAAK,CAACK,OAAO,EAAE;MACf7B,SAAS,CAACwB,KAAK,CAAC;;GAEvB;EAED,MAAMM,kBAAkB,GAAIN,KAAoC;IAC5D,IAAIb,YAAY,KAAKN,SAAS,IAAIhB,IAAI,CAACgC,MAAM,EAAE;MAC3CN,oBAAoB,CAAC,CAAC,CAAC;;IAG3B,IAAIhB,OAAO,EAAE;MACTyB,KAAK,CAACK,OAAO,EAAE;MACf9B,OAAO,CAACyB,KAAK,CAAC;;GAErB;EAED,MAAMO,iBAAiB,GAAIP,KAA0C;IACjEA,KAAK,CAACK,OAAO,EAAE;IAEf,IAAI/B,QAAQ,EAAE;MAAA,IAAAkC,gBAAA,EAAAC,UAAA;MACV,MAAMC,IAAI,GAAGC,WAAW,CAAC9C,IAAI,EAAEmC,KAAK,CAACY,MAAM,CAACnC,KAAK,CAAC;MACjDuB,KAAa,CAACa,MAAM,GAAGC,YAAY,CAACJ,IAAI,CAAC;MAE1C,MAAMK,OAAO,IAAAP,gBAAA,GAAGE,IAAI,aAAJA,IAAI,wBAAAD,UAAA,GAAJC,IAAI,CAAEM,IAAI,cAAAP,UAAA,uBAAVA,UAAA,CAAYQ,KAAK,CAAC,GAAG,CAAC,cAAAT,gBAAA,cAAAA,gBAAA,GAAI,EAAE;MAE5C,IAAIO,OAAO,CAAClB,MAAM,GAAG,CAAC,EAAE;;QAEpBkB,OAAO,CAACG,GAAG,EAAE;;QAEb,IAAIC,QAAgB;QAEnBnB,KAAa,CAACa,MAAM,CAACO,OAAO,GAAGL,OAAO,CAACM,GAAG,CAACC,CAAC;UACzCH,QAAQ,GAAGA,QAAQ,GAAG,CAACA,QAAQ,EAAEG,CAAC,CAAC,CAACC,IAAI,CAAC,GAAG,CAAC,GAAGD,CAAC;UACjD,OAAOR,YAAY,CAACjD,IAAI,CAAC2D,IAAI,CAACF,CAAC,IAAIA,CAAC,CAACN,IAAI,KAAKG,QAAQ,CAAC,CAAC;SAC3D,CAAC;;MAGN7C,QAAQ,CAAC0B,KAAK,CAAC;;GAEtB;EAED,MAAMyB,IAAI,GAAwB;IAC9B,GAAG/C,UAAU;IACb,uBAAuB,EAAEgD,mBAAmB,CAAC7D,IAAI,EAAEsB,YAAY,EAAEjB,EAAE,CAAC;IACpEL,IAAI;IACJG,QAAQ;IACRE,EAAE;IACFE,OAAO;IACPE,QAAQ,EAAEsB,mBAAmB;IAC7BrB,OAAO,EAAE+B,kBAAkB;IAC3B9B,SAAS,EAAEuB,oBAAoB;IAC/B4B,aAAa,EAAE,IAAI;IACnBC,QAAQ,EAAE5D,QAAQ,GAAG,CAAC,CAAC,GAAGU,UAAU,CAACkD,QAAQ,GAAGlD,UAAU,CAACkD,QAAQ,GAAG,CAAC;IACvEnD,KAAK,EAAEU;GACV;EAED,MAAM0C,KAAK,GAAG;IACVxD,IAAI;IACJC,QAAQ,EAAEiC,iBAAiB;IAC3B5B,GAAG,EAAEM,QAAQ;IACb2C,QAAQ,EAAE,CAAC,CAAC;IACZnD,KAAK,EAAEA,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI;GACnB;EAED,OAAO;IAAEgD,IAAI;IAAEI;GAAO;AAC1B;;;;"}
@@ -1,103 +1,86 @@
1
1
  import { useMemo, useState, useEffect } from 'react';
2
- import { objectWithoutPropertiesLoose as _objectWithoutPropertiesLoose, extends as _extends } from '../../../../../_virtual/_rollupPluginBabelHelpers.js';
3
2
  import { useMergedRef } from '../../hooks/useMergedRef.js';
4
3
  import { useLocalization } from '../Provider/Localization.js';
5
4
  import { v4 } from 'uuid';
6
5
  import { getIndexFromValue, getSelectedIndexesFromValue, setInputValueByRef, getActiveDescendant, findByValue } from './util.js';
7
6
  import { useTypeahead } from './useTypeahead.js';
8
7
 
9
- var _excluded = ["data", "defaultValue", "disabled", "emptyValue", "id", "name", "onClick", "onChange", "onFocus", "onKeyDown", "value"];
10
- var useMultiListbox = function useMultiListbox(_ref, ref) {
11
- var _ref$data = _ref.data,
12
- externalData = _ref$data === void 0 ? [] : _ref$data,
13
- defaultValue = _ref.defaultValue,
14
- disabled = _ref.disabled,
15
- nativeId = _ref.id,
16
- name = _ref.name,
17
- onClick = _ref.onClick,
18
- onChange = _ref.onChange,
19
- onFocus = _ref.onFocus,
20
- onKeyDown = _ref.onKeyDown,
21
- value = _ref.value,
22
- otherProps = _objectWithoutPropertiesLoose(_ref, _excluded);
23
- var _useLocalization = useLocalization(),
24
- texts = _useLocalization.texts;
25
- var id = useMemo(function () {
26
- return nativeId || v4();
27
- }, [nativeId]);
28
- var inputRef = useMergedRef(ref);
29
- var data = useMemo(function () {
8
+ const useMultiListbox = ({
9
+ data: externalData = [],
10
+ defaultValue,
11
+ disabled,
12
+ emptyValue: _,
13
+ id: nativeId,
14
+ name,
15
+ onClick,
16
+ onChange,
17
+ onFocus,
18
+ onKeyDown,
19
+ value,
20
+ ...otherProps
21
+ }, ref) => {
22
+ const {
23
+ texts
24
+ } = useLocalization();
25
+ const id = useMemo(() => nativeId || v4(), [nativeId]);
26
+ const inputRef = useMergedRef(ref);
27
+ const data = useMemo(() => {
30
28
  return [{
31
29
  text: texts.listbox.allOption,
32
30
  value: '#ALL-OPTIONS#'
33
- }].concat(externalData);
31
+ }, ...externalData];
34
32
  }, [externalData]);
35
- var _React$useState = useState(getIndexFromValue(data, value) || 0),
36
- currentIndex = _React$useState[0],
37
- setCurrentIndex = _React$useState[1];
38
- var _React$useState2 = useState(false),
39
- allOptionsSelected = _React$useState2[0],
40
- setAllOptionsSelected = _React$useState2[1];
41
- var _useTypeahead = useTypeahead({
42
- data: data,
43
- currentIndex: currentIndex
44
- }),
45
- getNextIndex = _useTypeahead.getNextIndex;
46
- var _React$useState3 = useState(getSelectedIndexesFromValue(data, value)),
47
- selectedIndexes = _React$useState3[0],
48
- setSelectedIndexes = _React$useState3[1];
49
- useEffect(function () {
33
+ const [currentIndex, setCurrentIndex] = useState(getIndexFromValue(data, value) || 0);
34
+ const [allOptionsSelected, setAllOptionsSelected] = useState(false);
35
+ const {
36
+ getNextIndex
37
+ } = useTypeahead({
38
+ data,
39
+ currentIndex
40
+ });
41
+ const [selectedIndexes, setSelectedIndexes] = useState(getSelectedIndexesFromValue(data, value));
42
+ useEffect(() => {
50
43
  if (defaultValue && !value) {
51
44
  setInputValueByRef(inputRef.current, defaultValue.toString());
52
45
  }
53
46
  }, []);
54
- useEffect(function () {
55
- var selectableItemsCount = data.filter(function (item) {
56
- return !item.disabled;
57
- }).length - 1;
47
+ useEffect(() => {
48
+ const selectableItemsCount = data.filter(item => !item.disabled).length - 1;
58
49
  if (selectableItemsCount === selectedIndexes.length) {
59
50
  setAllOptionsSelected(true);
60
51
  } else {
61
52
  setAllOptionsSelected(false);
62
53
  }
63
54
  }, [selectedIndexes, data]);
64
- var setInputValueByIndex = function setInputValueByIndex(index) {
55
+ const setInputValueByIndex = index => {
65
56
  if (index !== undefined) {
66
- var option = data[index];
57
+ const option = data[index];
67
58
  if (option && !option.disabled) {
68
59
  var _inputRef$current;
69
- var newInputValue = '';
70
- var currentInputValue = (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value;
71
- var currentValuesArray = (currentInputValue === null || currentInputValue === void 0 ? void 0 : currentInputValue.split(',')) || [];
72
- var optionAlreadySelected = currentValuesArray.findIndex(function (val) {
73
- return val === String(option.value);
74
- }) !== -1;
60
+ let newInputValue = '';
61
+ const currentInputValue = (_inputRef$current = inputRef.current) === null || _inputRef$current === void 0 ? void 0 : _inputRef$current.value;
62
+ const currentValuesArray = (currentInputValue === null || currentInputValue === void 0 ? void 0 : currentInputValue.split(',')) || [];
63
+ const optionAlreadySelected = currentValuesArray.findIndex(val => val === String(option.value)) !== -1;
75
64
  // Handling the select_all option
76
65
  if (option.value === '#ALL-OPTIONS#') {
77
66
  if (!allOptionsSelected) {
78
- newInputValue = data.filter(function (option, index) {
79
- return index !== 0 && !option.disabled;
80
- }).map(function (option) {
81
- return option.value;
82
- }).join(',');
67
+ newInputValue = data.filter((option, index) => index !== 0 && !option.disabled).map(option => option.value).join(',');
83
68
  } else {
84
69
  newInputValue = '';
85
70
  }
86
71
  } else {
87
72
  // Handling rest options
88
73
  if (optionAlreadySelected) {
89
- newInputValue = currentValuesArray.filter(function (val) {
90
- return val !== String(option.value);
91
- }).join(',');
74
+ newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');
92
75
  } else {
93
- newInputValue = currentInputValue ? currentInputValue + "," + option.value : option.value;
76
+ newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;
94
77
  }
95
78
  }
96
79
  setInputValueByRef(inputRef.current, newInputValue);
97
80
  }
98
81
  }
99
82
  };
100
- var handleListboxClick = function handleListboxClick(event, index) {
83
+ const handleListboxClick = (event, index) => {
101
84
  event.preventDefault();
102
85
  if (!data[index].disabled) {
103
86
  setCurrentIndex(index);
@@ -107,12 +90,12 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
107
90
  onClick(event);
108
91
  }
109
92
  };
110
- var handleListboxKeyDown = function handleListboxKeyDown(event, index) {
111
- var charKey = event.key;
93
+ const handleListboxKeyDown = (event, index) => {
94
+ const charKey = event.key;
112
95
  // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)
113
96
  // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed
114
97
  if (charKey.length === 1 && /(\w)/g.test(charKey)) {
115
- var nextIndex = getNextIndex(charKey);
98
+ const nextIndex = getNextIndex(charKey);
116
99
  if (nextIndex > -1 && nextIndex !== currentIndex) {
117
100
  setCurrentIndex(nextIndex);
118
101
  }
@@ -137,20 +120,20 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
137
120
  onKeyDown(event);
138
121
  }
139
122
  };
140
- var handleListboxFocus = function handleListboxFocus(event) {
123
+ const handleListboxFocus = event => {
141
124
  if (onFocus) {
142
125
  event.persist();
143
126
  onFocus(event);
144
127
  }
145
128
  };
146
- var handleInputChange = function handleInputChange(event) {
129
+ const handleInputChange = event => {
147
130
  event.persist();
148
131
  setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));
149
132
  if (onChange) {
150
- var detail = [];
151
- var valuesArray = event.target.value.split(',');
152
- valuesArray.forEach(function (val) {
153
- var item = findByValue(data, val);
133
+ const detail = [];
134
+ const valuesArray = event.target.value.split(',');
135
+ valuesArray.forEach(val => {
136
+ const item = findByValue(data, val);
154
137
  if (item) {
155
138
  detail.push(item);
156
139
  }
@@ -159,35 +142,34 @@ var useMultiListbox = function useMultiListbox(_ref, ref) {
159
142
  onChange(event);
160
143
  }
161
144
  };
162
- var list = _extends({}, otherProps, {
145
+ const list = {
146
+ ...otherProps,
163
147
  'aria-activedescendant': getActiveDescendant(data, currentIndex, id),
164
148
  'aria-multiselectable': true,
165
- data: data,
166
- disabled: disabled,
167
- id: id,
168
- onChange: function onChange() {
169
- return null;
170
- },
149
+ data,
150
+ disabled,
151
+ id,
152
+ onChange: () => null,
171
153
  onClick: handleListboxClick,
172
154
  onFocus: handleListboxFocus,
173
155
  onKeyDown: handleListboxKeyDown,
174
156
  scrollOnFocus: false,
175
157
  tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,
176
158
  value: currentIndex,
177
- selectedIndexes: selectedIndexes,
159
+ selectedIndexes,
178
160
  multiselect: true,
179
- allOptionsSelected: allOptionsSelected
180
- });
181
- var input = {
182
- name: name,
161
+ allOptionsSelected
162
+ };
163
+ const input = {
164
+ name,
183
165
  onChange: handleInputChange,
184
166
  ref: inputRef,
185
167
  tabIndex: -1,
186
168
  value: value !== null && value !== void 0 ? value : ''
187
169
  };
188
170
  return {
189
- list: list,
190
- input: input
171
+ list,
172
+ input
191
173
  };
192
174
  };
193
175
 
@@ -1 +1 @@
1
- {"version":3,"file":"useMultiListbox.js","sources":["../../../../../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { useLocalization } from '../Provider/Localization';\nimport { ListboxProps } from './Listbox';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\nimport { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.findIndex(val => val === String(option.value)) !== -1;\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (!allOptionsSelected) {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n } else {\n newInputValue = '';\n }\n } else {\n // Handling rest options\n if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (!data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index !== undefined ? index : 0);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useMultiListbox","_ref","ref","data","externalData","_ref$data","defaultValue","disabled","nativeId","id","name","onClick","onChange","onFocus","onKeyDown","value","otherProps","_objectWithoutPropertiesLoose","_excluded","_useLocalization","useLocalization","texts","React","uuid","inputRef","useMergedRef","text","listbox","allOption","concat","_React$useState","getIndexFromValue","currentIndex","setCurrentIndex","_React$useState2","allOptionsSelected","setAllOptionsSelected","_useTypeahead","useTypeahead","getNextIndex","_React$useState3","getSelectedIndexesFromValue","selectedIndexes","setSelectedIndexes","setInputValueByRef","current","toString","selectableItemsCount","filter","item","length","setInputValueByIndex","index","undefined","option","_inputRef$current","newInputValue","currentInputValue","currentValuesArray","split","optionAlreadySelected","findIndex","val","String","map","join","handleListboxClick","event","preventDefault","handleListboxKeyDown","charKey","key","test","nextIndex","persist","handleListboxFocus","handleInputChange","target","detail","valuesArray","forEach","findByValue","push","list","_extends","getActiveDescendant","scrollOnFocus","tabIndex","multiselect","input"],"mappings":"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"}
1
+ {"version":3,"file":"useMultiListbox.js","sources":["../../../../../../../src/components/Listbox/useMultiListbox.tsx"],"sourcesContent":["import * as React from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { useLocalization } from '../Provider/Localization';\nimport { ListboxProps } from './Listbox';\nimport { useMergedRef } from '../../hooks/useMergedRef';\nimport { setInputValueByRef, getIndexFromValue, getSelectedIndexesFromValue, findByValue, getActiveDescendant } from './util';\nimport { ScrollableListProps, ScrollableListItem, ScrollableListItemValue } from './ScrollableList';\nimport { useTypeahead } from './useTypeahead';\n\ntype useListbox = {\n list: ScrollableListProps;\n input: Omit<React.HTMLAttributes<HTMLInputElement>, 'defaultValue'>;\n};\n\nexport const useMultiListbox = (\n {\n data: externalData = [],\n defaultValue,\n disabled,\n emptyValue: _,\n id: nativeId,\n name,\n onClick,\n onChange,\n onFocus,\n onKeyDown,\n value,\n ...otherProps\n }: ListboxProps,\n ref: React.Ref<HTMLInputElement>\n): useListbox => {\n const { texts } = useLocalization();\n const id = React.useMemo(() => nativeId || uuid(), [nativeId]);\n const inputRef = useMergedRef<HTMLInputElement>(ref);\n const data = React.useMemo(() => {\n return [{ text: texts.listbox.allOption, value: '#ALL-OPTIONS#' }, ...externalData];\n }, [externalData]);\n const [currentIndex, setCurrentIndex] = React.useState(getIndexFromValue(data, value) || 0);\n const [allOptionsSelected, setAllOptionsSelected] = React.useState(false);\n const { getNextIndex } = useTypeahead({ data, currentIndex });\n const [selectedIndexes, setSelectedIndexes] = React.useState(getSelectedIndexesFromValue(data, value));\n\n React.useEffect(() => {\n if (defaultValue && !value) {\n setInputValueByRef(inputRef.current, defaultValue.toString());\n }\n }, []);\n\n React.useEffect(() => {\n const selectableItemsCount = data.filter(item => !item.disabled).length - 1;\n\n if (selectableItemsCount === selectedIndexes.length) {\n setAllOptionsSelected(true);\n } else {\n setAllOptionsSelected(false);\n }\n }, [selectedIndexes, data]);\n\n const setInputValueByIndex = (index: number | undefined): void => {\n if (index !== undefined) {\n const option = data[index];\n\n if (option && !option.disabled) {\n let newInputValue: ScrollableListItemValue = '';\n const currentInputValue = inputRef.current?.value;\n const currentValuesArray = currentInputValue?.split(',') || [];\n const optionAlreadySelected = currentValuesArray.findIndex(val => val === String(option.value)) !== -1;\n\n // Handling the select_all option\n if (option.value === '#ALL-OPTIONS#') {\n if (!allOptionsSelected) {\n newInputValue = data\n .filter((option, index) => index !== 0 && !option.disabled)\n .map(option => option.value)\n .join(',');\n } else {\n newInputValue = '';\n }\n } else {\n // Handling rest options\n if (optionAlreadySelected) {\n newInputValue = currentValuesArray.filter(val => val !== String(option.value)).join(',');\n } else {\n newInputValue = currentInputValue ? `${currentInputValue},${option.value}` : option.value;\n }\n }\n\n setInputValueByRef(inputRef.current, newInputValue);\n }\n }\n };\n\n const handleListboxClick = (event: React.MouseEvent<HTMLLIElement>, index: number): void => {\n event.preventDefault();\n\n if (!data[index].disabled) {\n setCurrentIndex(index);\n setInputValueByIndex(index);\n }\n\n if (onClick) {\n onClick(event);\n }\n };\n\n const handleListboxKeyDown = (event: React.KeyboardEvent<HTMLElement>, index?: number): void => {\n const charKey = event.key;\n\n // event.key always returns the whole string (String.fromCharCode(event.keyCode) does not)\n // We need to filter out only alphabetical or numeric letters, that's why that condition has been changed\n if (charKey.length === 1 && /(\\w)/g.test(charKey)) {\n const nextIndex = getNextIndex(charKey);\n\n if (nextIndex > -1 && nextIndex !== currentIndex) {\n setCurrentIndex(nextIndex);\n }\n return;\n }\n\n switch (event.key) {\n case ' ': {\n event.preventDefault();\n setInputValueByIndex(index);\n break;\n }\n\n case 'Enter': {\n setInputValueByIndex(index);\n break;\n }\n\n default:\n }\n setCurrentIndex(index !== undefined ? index : 0);\n\n if (onKeyDown) {\n event.persist();\n onKeyDown(event);\n }\n };\n\n const handleListboxFocus = (event: React.FocusEvent<HTMLElement>): void => {\n if (onFocus) {\n event.persist();\n onFocus(event);\n }\n };\n\n const handleInputChange = (event: React.ChangeEvent<HTMLInputElement>): void => {\n event.persist();\n\n setSelectedIndexes(getSelectedIndexesFromValue(data, event.target.value));\n\n if (onChange) {\n const detail: ScrollableListItem[] = [];\n const valuesArray = event.target.value.split(',');\n\n valuesArray.forEach(val => {\n const item = findByValue(data, val);\n if (item) {\n detail.push(item);\n }\n });\n (event as any).detail = detail;\n\n onChange(event);\n }\n };\n\n const list = {\n ...otherProps,\n 'aria-activedescendant': getActiveDescendant(data, currentIndex, id),\n 'aria-multiselectable': true,\n data,\n disabled,\n id,\n onChange: () => null,\n onClick: handleListboxClick,\n onFocus: handleListboxFocus,\n onKeyDown: handleListboxKeyDown,\n scrollOnFocus: false,\n tabIndex: disabled ? -1 : otherProps.tabIndex ? otherProps.tabIndex : 0,\n value: currentIndex,\n selectedIndexes,\n multiselect: true,\n allOptionsSelected,\n };\n\n const input = {\n name,\n onChange: handleInputChange,\n ref: inputRef,\n tabIndex: -1,\n value: value ?? '',\n };\n\n return { list, input };\n};\n"],"names":["useMultiListbox","data","externalData","defaultValue","disabled","emptyValue","_","id","nativeId","name","onClick","onChange","onFocus","onKeyDown","value","otherProps","ref","texts","useLocalization","React","uuid","inputRef","useMergedRef","text","listbox","allOption","currentIndex","setCurrentIndex","getIndexFromValue","allOptionsSelected","setAllOptionsSelected","getNextIndex","useTypeahead","selectedIndexes","setSelectedIndexes","getSelectedIndexesFromValue","setInputValueByRef","current","toString","selectableItemsCount","filter","item","length","setInputValueByIndex","index","undefined","option","_inputRef$current","newInputValue","currentInputValue","currentValuesArray","split","optionAlreadySelected","findIndex","val","String","map","join","handleListboxClick","event","preventDefault","handleListboxKeyDown","charKey","key","test","nextIndex","persist","handleListboxFocus","handleInputChange","target","detail","valuesArray","forEach","findByValue","push","list","getActiveDescendant","scrollOnFocus","tabIndex","multiselect","input"],"mappings":"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"}