@chayns-components/core 5.4.13-alpha.0 → 5.4.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/AGENTS.md +0 -12
  2. package/lib/cjs/components/accordion/Accordion.js +12 -107
  3. package/lib/cjs/components/accordion/Accordion.js.map +1 -1
  4. package/lib/cjs/components/accordion/Accordion.styles.js +3 -23
  5. package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
  6. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js +1 -3
  7. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  8. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js +19 -36
  9. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  10. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +3 -6
  11. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  12. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +0 -14
  13. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  14. package/lib/cjs/components/amount-control/AmountControl.js +17 -31
  15. package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
  16. package/lib/cjs/components/amount-control/AmountControl.styles.js +2 -18
  17. package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
  18. package/lib/cjs/components/button/Button.js +1 -5
  19. package/lib/cjs/components/button/Button.js.map +1 -1
  20. package/lib/cjs/components/button/Button.styles.js +0 -10
  21. package/lib/cjs/components/button/Button.styles.js.map +1 -1
  22. package/lib/cjs/components/button/Button.types.js.map +1 -1
  23. package/lib/cjs/components/checkbox/Checkbox.js +1 -5
  24. package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
  25. package/lib/cjs/components/checkbox/Checkbox.styles.js +2 -29
  26. package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
  27. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +2 -7
  28. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  29. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +2 -8
  30. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  31. package/lib/cjs/components/combobox/ComboBox.js +11 -68
  32. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  33. package/lib/cjs/components/combobox/ComboBox.styles.js +0 -11
  34. package/lib/cjs/components/combobox/ComboBox.styles.js.map +1 -1
  35. package/lib/cjs/components/combobox/ComboBox.types.js.map +1 -1
  36. package/lib/cjs/components/context-menu/ContextMenu.js +42 -146
  37. package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
  38. package/lib/cjs/components/context-menu/ContextMenu.styles.js +0 -38
  39. package/lib/cjs/components/context-menu/ContextMenu.styles.js.map +1 -1
  40. package/lib/cjs/components/context-menu/ContextMenu.types.js.map +1 -1
  41. package/lib/cjs/components/context-menu/ContextMenu.utils.js +1 -27
  42. package/lib/cjs/components/context-menu/ContextMenu.utils.js.map +1 -1
  43. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js +8 -3
  44. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  45. package/lib/cjs/components/file-input/FileInput.js +2 -4
  46. package/lib/cjs/components/file-input/FileInput.js.map +1 -1
  47. package/lib/cjs/components/file-list/file-item/FileItem.js +25 -48
  48. package/lib/cjs/components/file-list/file-item/FileItem.js.map +1 -1
  49. package/lib/cjs/components/file-list/file-item/FileItem.styles.js +1 -25
  50. package/lib/cjs/components/file-list/file-item/FileItem.styles.js.map +1 -1
  51. package/lib/cjs/components/file-select/FileSelect.js +4 -27
  52. package/lib/cjs/components/file-select/FileSelect.js.map +1 -1
  53. package/lib/cjs/components/file-select/FileSelect.styles.js +0 -10
  54. package/lib/cjs/components/file-select/FileSelect.styles.js.map +1 -1
  55. package/lib/cjs/components/filter/Filter.js +16 -51
  56. package/lib/cjs/components/filter/Filter.js.map +1 -1
  57. package/lib/cjs/components/filter/Filter.styles.js +0 -9
  58. package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
  59. package/lib/cjs/components/filter/filter-content/FilterContent.js +5 -14
  60. package/lib/cjs/components/filter/filter-content/FilterContent.js.map +1 -1
  61. package/lib/cjs/components/filter/filter-content/FilterContent.types.js.map +1 -1
  62. package/lib/cjs/components/filter-buttons/FilterButtons.js +4 -69
  63. package/lib/cjs/components/filter-buttons/FilterButtons.js.map +1 -1
  64. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js +2 -40
  65. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  66. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js +0 -11
  67. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  68. package/lib/cjs/components/grid-image/GridImage.js +2 -20
  69. package/lib/cjs/components/grid-image/GridImage.js.map +1 -1
  70. package/lib/cjs/components/grid-image/GridImage.styles.js +2 -11
  71. package/lib/cjs/components/grid-image/GridImage.styles.js.map +1 -1
  72. package/lib/cjs/components/grouped-image/GroupedImage.js +4 -23
  73. package/lib/cjs/components/grouped-image/GroupedImage.js.map +1 -1
  74. package/lib/cjs/components/grouped-image/GroupedImage.styles.js +0 -9
  75. package/lib/cjs/components/grouped-image/GroupedImage.styles.js.map +1 -1
  76. package/lib/cjs/components/highlight-slider/HighlightSlider.js +3 -13
  77. package/lib/cjs/components/highlight-slider/HighlightSlider.js.map +1 -1
  78. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +4 -21
  79. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  80. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +2 -11
  81. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  82. package/lib/cjs/components/icon/Icon.js +5 -24
  83. package/lib/cjs/components/icon/Icon.js.map +1 -1
  84. package/lib/cjs/components/icon/Icon.styles.js +0 -23
  85. package/lib/cjs/components/icon/Icon.styles.js.map +1 -1
  86. package/lib/cjs/components/input/Input.js +8 -29
  87. package/lib/cjs/components/input/Input.js.map +1 -1
  88. package/lib/cjs/components/input/Input.styles.js +3 -38
  89. package/lib/cjs/components/input/Input.styles.js.map +1 -1
  90. package/lib/cjs/components/list/List.js +37 -124
  91. package/lib/cjs/components/list/List.js.map +1 -1
  92. package/lib/cjs/components/list/List.utils.js +1 -213
  93. package/lib/cjs/components/list/List.utils.js.map +1 -1
  94. package/lib/cjs/components/list/list-item/ListItem.js +3 -84
  95. package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
  96. package/lib/cjs/components/list/list-item/ListItem.styles.js +0 -7
  97. package/lib/cjs/components/list/list-item/ListItem.styles.js.map +1 -1
  98. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js +1 -5
  99. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  100. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js +1 -5
  101. package/lib/cjs/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
  102. package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +0 -1
  103. package/lib/cjs/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
  104. package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +0 -3
  105. package/lib/cjs/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
  106. package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +0 -1
  107. package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  108. package/lib/cjs/components/mention-finder/MentionFinder.js +5 -43
  109. package/lib/cjs/components/mention-finder/MentionFinder.js.map +1 -1
  110. package/lib/cjs/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  111. package/lib/cjs/components/multi-action-button/MultiActionButton.js +3 -36
  112. package/lib/cjs/components/multi-action-button/MultiActionButton.js.map +1 -1
  113. package/lib/cjs/components/multi-action-button/MultiActionButton.styles.js +0 -6
  114. package/lib/cjs/components/multi-action-button/MultiActionButton.styles.js.map +1 -1
  115. package/lib/cjs/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  116. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js +1 -7
  117. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  118. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js +0 -12
  119. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  120. package/lib/cjs/components/number-input/NumberInput.js +10 -13
  121. package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
  122. package/lib/cjs/components/page-provider/PageProvider.js +3 -5
  123. package/lib/cjs/components/page-provider/PageProvider.js.map +1 -1
  124. package/lib/cjs/components/popup/Popup.js +1 -8
  125. package/lib/cjs/components/popup/Popup.js.map +1 -1
  126. package/lib/cjs/components/radio-button/RadioButton.js +15 -29
  127. package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
  128. package/lib/cjs/components/radio-button/RadioButton.styles.js +8 -19
  129. package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
  130. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js +4 -7
  131. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  132. package/lib/cjs/components/search-box/SearchBox.js +6 -21
  133. package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
  134. package/lib/cjs/components/search-input/SearchInput.js +43 -56
  135. package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
  136. package/lib/cjs/components/search-input/SearchInput.styles.js +2 -26
  137. package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
  138. package/lib/cjs/components/select-button/SelectButton.js +2 -4
  139. package/lib/cjs/components/select-button/SelectButton.js.map +1 -1
  140. package/lib/cjs/components/setup-wizard/SetupWizard.js +4 -10
  141. package/lib/cjs/components/setup-wizard/SetupWizard.js.map +1 -1
  142. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +3 -5
  143. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  144. package/lib/cjs/components/sharing-bar/SharingBar.js +6 -31
  145. package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
  146. package/lib/cjs/components/sharing-bar/SharingBar.styles.js +0 -5
  147. package/lib/cjs/components/sharing-bar/SharingBar.styles.js.map +1 -1
  148. package/lib/cjs/components/sharing-button/SharingButton.js +2 -4
  149. package/lib/cjs/components/sharing-button/SharingButton.js.map +1 -1
  150. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js +1 -3
  151. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  152. package/lib/cjs/components/signature/Signature.js +3 -6
  153. package/lib/cjs/components/signature/Signature.js.map +1 -1
  154. package/lib/cjs/components/slider/Slider.js +7 -30
  155. package/lib/cjs/components/slider/Slider.js.map +1 -1
  156. package/lib/cjs/components/slider/Slider.styles.js +2 -9
  157. package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
  158. package/lib/cjs/components/slider-button/SliderButton.js +6 -63
  159. package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
  160. package/lib/cjs/components/slider-button/SliderButton.styles.js +2 -15
  161. package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
  162. package/lib/cjs/components/tag-input/TagInput.js +36 -92
  163. package/lib/cjs/components/tag-input/TagInput.js.map +1 -1
  164. package/lib/cjs/components/tag-input/TagInput.styles.js +3 -29
  165. package/lib/cjs/components/tag-input/TagInput.styles.js.map +1 -1
  166. package/lib/cjs/components/text-area/TextArea.js +8 -17
  167. package/lib/cjs/components/text-area/TextArea.js.map +1 -1
  168. package/lib/cjs/components/text-area/TextArea.styles.js +1 -15
  169. package/lib/cjs/components/text-area/TextArea.styles.js.map +1 -1
  170. package/lib/cjs/components/truncation/Truncation.js +3 -17
  171. package/lib/cjs/components/truncation/Truncation.js.map +1 -1
  172. package/lib/cjs/components/truncation/Truncation.styles.js +1 -18
  173. package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
  174. package/lib/cjs/utils/file.js.map +1 -1
  175. package/lib/esm/components/accordion/Accordion.js +12 -105
  176. package/lib/esm/components/accordion/Accordion.js.map +1 -1
  177. package/lib/esm/components/accordion/Accordion.styles.js +3 -23
  178. package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
  179. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js +1 -3
  180. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  181. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js +19 -33
  182. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  183. package/lib/esm/components/accordion/accordion-head/AccordionHead.js +3 -6
  184. package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  185. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +0 -14
  186. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  187. package/lib/esm/components/amount-control/AmountControl.js +16 -30
  188. package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
  189. package/lib/esm/components/amount-control/AmountControl.styles.js +2 -18
  190. package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
  191. package/lib/esm/components/button/Button.js +1 -5
  192. package/lib/esm/components/button/Button.js.map +1 -1
  193. package/lib/esm/components/button/Button.styles.js +0 -10
  194. package/lib/esm/components/button/Button.styles.js.map +1 -1
  195. package/lib/esm/components/button/Button.types.js.map +1 -1
  196. package/lib/esm/components/checkbox/Checkbox.js +1 -5
  197. package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
  198. package/lib/esm/components/checkbox/Checkbox.styles.js +2 -29
  199. package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
  200. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +2 -7
  201. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  202. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +2 -8
  203. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  204. package/lib/esm/components/combobox/ComboBox.js +7 -61
  205. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  206. package/lib/esm/components/combobox/ComboBox.styles.js +0 -11
  207. package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
  208. package/lib/esm/components/combobox/ComboBox.types.js.map +1 -1
  209. package/lib/esm/components/context-menu/ContextMenu.js +42 -145
  210. package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
  211. package/lib/esm/components/context-menu/ContextMenu.styles.js +0 -38
  212. package/lib/esm/components/context-menu/ContextMenu.styles.js.map +1 -1
  213. package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
  214. package/lib/esm/components/context-menu/ContextMenu.utils.js +0 -24
  215. package/lib/esm/components/context-menu/ContextMenu.utils.js.map +1 -1
  216. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js +8 -3
  217. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  218. package/lib/esm/components/file-input/FileInput.js +2 -4
  219. package/lib/esm/components/file-input/FileInput.js.map +1 -1
  220. package/lib/esm/components/file-list/file-item/FileItem.js +26 -49
  221. package/lib/esm/components/file-list/file-item/FileItem.js.map +1 -1
  222. package/lib/esm/components/file-list/file-item/FileItem.styles.js +0 -24
  223. package/lib/esm/components/file-list/file-item/FileItem.styles.js.map +1 -1
  224. package/lib/esm/components/file-select/FileSelect.js +4 -27
  225. package/lib/esm/components/file-select/FileSelect.js.map +1 -1
  226. package/lib/esm/components/file-select/FileSelect.styles.js +0 -10
  227. package/lib/esm/components/file-select/FileSelect.styles.js.map +1 -1
  228. package/lib/esm/components/filter/Filter.js +16 -52
  229. package/lib/esm/components/filter/Filter.js.map +1 -1
  230. package/lib/esm/components/filter/Filter.styles.js +0 -9
  231. package/lib/esm/components/filter/Filter.styles.js.map +1 -1
  232. package/lib/esm/components/filter/filter-content/FilterContent.js +5 -15
  233. package/lib/esm/components/filter/filter-content/FilterContent.js.map +1 -1
  234. package/lib/esm/components/filter/filter-content/FilterContent.types.js.map +1 -1
  235. package/lib/esm/components/filter-buttons/FilterButtons.js +5 -69
  236. package/lib/esm/components/filter-buttons/FilterButtons.js.map +1 -1
  237. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js +2 -40
  238. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  239. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +0 -11
  240. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  241. package/lib/esm/components/grid-image/GridImage.js +2 -20
  242. package/lib/esm/components/grid-image/GridImage.js.map +1 -1
  243. package/lib/esm/components/grid-image/GridImage.styles.js +1 -10
  244. package/lib/esm/components/grid-image/GridImage.styles.js.map +1 -1
  245. package/lib/esm/components/grouped-image/GroupedImage.js +4 -22
  246. package/lib/esm/components/grouped-image/GroupedImage.js.map +1 -1
  247. package/lib/esm/components/grouped-image/GroupedImage.styles.js +0 -9
  248. package/lib/esm/components/grouped-image/GroupedImage.styles.js.map +1 -1
  249. package/lib/esm/components/highlight-slider/HighlightSlider.js +3 -13
  250. package/lib/esm/components/highlight-slider/HighlightSlider.js.map +1 -1
  251. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +3 -20
  252. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  253. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +1 -10
  254. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  255. package/lib/esm/components/icon/Icon.js +7 -26
  256. package/lib/esm/components/icon/Icon.js.map +1 -1
  257. package/lib/esm/components/icon/Icon.styles.js +0 -23
  258. package/lib/esm/components/icon/Icon.styles.js.map +1 -1
  259. package/lib/esm/components/input/Input.js +4 -24
  260. package/lib/esm/components/input/Input.js.map +1 -1
  261. package/lib/esm/components/input/Input.styles.js +3 -38
  262. package/lib/esm/components/input/Input.styles.js.map +1 -1
  263. package/lib/esm/components/list/List.js +37 -123
  264. package/lib/esm/components/list/List.js.map +1 -1
  265. package/lib/esm/components/list/List.utils.js +0 -202
  266. package/lib/esm/components/list/List.utils.js.map +1 -1
  267. package/lib/esm/components/list/list-item/ListItem.js +4 -85
  268. package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
  269. package/lib/esm/components/list/list-item/ListItem.styles.js +0 -7
  270. package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
  271. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +2 -6
  272. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  273. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js +0 -4
  274. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
  275. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +0 -1
  276. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
  277. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +1 -4
  278. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
  279. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +0 -1
  280. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  281. package/lib/esm/components/mention-finder/MentionFinder.js +3 -39
  282. package/lib/esm/components/mention-finder/MentionFinder.js.map +1 -1
  283. package/lib/esm/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  284. package/lib/esm/components/multi-action-button/MultiActionButton.js +3 -36
  285. package/lib/esm/components/multi-action-button/MultiActionButton.js.map +1 -1
  286. package/lib/esm/components/multi-action-button/MultiActionButton.styles.js +0 -6
  287. package/lib/esm/components/multi-action-button/MultiActionButton.styles.js.map +1 -1
  288. package/lib/esm/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  289. package/lib/esm/components/multi-action-button/action-button/ActionButton.js +1 -7
  290. package/lib/esm/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  291. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js +0 -12
  292. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  293. package/lib/esm/components/number-input/NumberInput.js +10 -13
  294. package/lib/esm/components/number-input/NumberInput.js.map +1 -1
  295. package/lib/esm/components/page-provider/PageProvider.js +3 -5
  296. package/lib/esm/components/page-provider/PageProvider.js.map +1 -1
  297. package/lib/esm/components/popup/Popup.js +1 -8
  298. package/lib/esm/components/popup/Popup.js.map +1 -1
  299. package/lib/esm/components/radio-button/RadioButton.js +15 -29
  300. package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
  301. package/lib/esm/components/radio-button/RadioButton.styles.js +8 -19
  302. package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
  303. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js +4 -7
  304. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  305. package/lib/esm/components/search-box/SearchBox.js +4 -18
  306. package/lib/esm/components/search-box/SearchBox.js.map +1 -1
  307. package/lib/esm/components/search-input/SearchInput.js +44 -56
  308. package/lib/esm/components/search-input/SearchInput.js.map +1 -1
  309. package/lib/esm/components/search-input/SearchInput.styles.js +1 -25
  310. package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
  311. package/lib/esm/components/select-button/SelectButton.js +2 -4
  312. package/lib/esm/components/select-button/SelectButton.js.map +1 -1
  313. package/lib/esm/components/setup-wizard/SetupWizard.js +4 -10
  314. package/lib/esm/components/setup-wizard/SetupWizard.js.map +1 -1
  315. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +3 -5
  316. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  317. package/lib/esm/components/sharing-bar/SharingBar.js +5 -30
  318. package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
  319. package/lib/esm/components/sharing-bar/SharingBar.styles.js +0 -5
  320. package/lib/esm/components/sharing-bar/SharingBar.styles.js.map +1 -1
  321. package/lib/esm/components/sharing-button/SharingButton.js +2 -4
  322. package/lib/esm/components/sharing-button/SharingButton.js.map +1 -1
  323. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js +1 -3
  324. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  325. package/lib/esm/components/signature/Signature.js +3 -6
  326. package/lib/esm/components/signature/Signature.js.map +1 -1
  327. package/lib/esm/components/slider/Slider.js +7 -30
  328. package/lib/esm/components/slider/Slider.js.map +1 -1
  329. package/lib/esm/components/slider/Slider.styles.js +1 -8
  330. package/lib/esm/components/slider/Slider.styles.js.map +1 -1
  331. package/lib/esm/components/slider-button/SliderButton.js +6 -62
  332. package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
  333. package/lib/esm/components/slider-button/SliderButton.styles.js +1 -14
  334. package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
  335. package/lib/esm/components/tag-input/TagInput.js +35 -86
  336. package/lib/esm/components/tag-input/TagInput.js.map +1 -1
  337. package/lib/esm/components/tag-input/TagInput.styles.js +1 -27
  338. package/lib/esm/components/tag-input/TagInput.styles.js.map +1 -1
  339. package/lib/esm/components/text-area/TextArea.js +9 -18
  340. package/lib/esm/components/text-area/TextArea.js.map +1 -1
  341. package/lib/esm/components/text-area/TextArea.styles.js +0 -14
  342. package/lib/esm/components/text-area/TextArea.styles.js.map +1 -1
  343. package/lib/esm/components/truncation/Truncation.js +4 -18
  344. package/lib/esm/components/truncation/Truncation.js.map +1 -1
  345. package/lib/esm/components/truncation/Truncation.styles.js +0 -17
  346. package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
  347. package/lib/esm/utils/file.js.map +1 -1
  348. package/lib/types/components/accordion/Accordion.d.ts +0 -5
  349. package/lib/types/components/accordion/Accordion.styles.d.ts +4 -8
  350. package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -2
  351. package/lib/types/components/accordion/accordion-group/AccordionGroup.d.ts +2 -7
  352. package/lib/types/components/accordion/accordion-head/AccordionHead.d.ts +0 -1
  353. package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +18 -18
  354. package/lib/types/components/amount-control/AmountControl.d.ts +0 -5
  355. package/lib/types/components/amount-control/AmountControl.styles.d.ts +4 -8
  356. package/lib/types/components/button/Button.styles.d.ts +6 -8
  357. package/lib/types/components/button/Button.types.d.ts +0 -8
  358. package/lib/types/components/checkbox/Checkbox.d.ts +0 -4
  359. package/lib/types/components/checkbox/Checkbox.styles.d.ts +1 -5
  360. package/lib/types/components/color-scheme-provider/ColorSchemeProvider.d.ts +0 -5
  361. package/lib/types/components/combobox/ComboBox.styles.d.ts +2 -4
  362. package/lib/types/components/combobox/ComboBox.types.d.ts +0 -5
  363. package/lib/types/components/context-menu/ContextMenu.styles.d.ts +2 -4
  364. package/lib/types/components/context-menu/ContextMenu.types.d.ts +0 -6
  365. package/lib/types/components/context-menu/ContextMenu.utils.d.ts +0 -10
  366. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.d.ts +1 -1
  367. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +2 -2
  368. package/lib/types/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.d.ts +2 -2
  369. package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +2 -2
  370. package/lib/types/components/file-input/FileInput.d.ts +0 -4
  371. package/lib/types/components/file-input/FileInput.styles.d.ts +2 -2
  372. package/lib/types/components/file-list/file-item/FileItem.styles.d.ts +0 -3
  373. package/lib/types/components/file-select/FileSelect.d.ts +0 -4
  374. package/lib/types/components/file-select/FileSelect.styles.d.ts +4 -6
  375. package/lib/types/components/filter/Filter.d.ts +0 -1
  376. package/lib/types/components/filter/Filter.styles.d.ts +4 -6
  377. package/lib/types/components/filter/filter-content/FilterContent.types.d.ts +0 -4
  378. package/lib/types/components/filter-buttons/FilterButtons.d.ts +0 -4
  379. package/lib/types/components/filter-buttons/filter-button/FilterButton.d.ts +0 -5
  380. package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +8 -12
  381. package/lib/types/components/grid-image/GridImage.d.ts +0 -4
  382. package/lib/types/components/grid-image/GridImage.styles.d.ts +2 -4
  383. package/lib/types/components/grouped-image/GroupedImage.d.ts +0 -4
  384. package/lib/types/components/grouped-image/GroupedImage.styles.d.ts +6 -8
  385. package/lib/types/components/highlight-slider/HighlightSlider.d.ts +0 -4
  386. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.d.ts +0 -3
  387. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.d.ts +5 -9
  388. package/lib/types/components/icon/Icon.d.ts +0 -4
  389. package/lib/types/components/icon/Icon.styles.d.ts +0 -1
  390. package/lib/types/components/input/Input.d.ts +0 -4
  391. package/lib/types/components/input/Input.styles.d.ts +9 -17
  392. package/lib/types/components/list/List.d.ts +0 -11
  393. package/lib/types/components/list/List.utils.d.ts +1 -32
  394. package/lib/types/components/list/list-item/ListItem.d.ts +0 -4
  395. package/lib/types/components/list/list-item/ListItem.styles.d.ts +64 -64
  396. package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -2
  397. package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +194 -195
  398. package/lib/types/components/masonry/masonry-item/MasonryItem.styles.d.ts +2 -2
  399. package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +4 -4
  400. package/lib/types/components/multi-action-button/MultiActionButton.styles.d.ts +2 -2
  401. package/lib/types/components/multi-action-button/MultiActionButton.types.d.ts +0 -7
  402. package/lib/types/components/multi-action-button/action-button/ActionButton.d.ts +1 -4
  403. package/lib/types/components/multi-action-button/action-button/ActionButton.styles.d.ts +2 -4
  404. package/lib/types/components/number-input/NumberInput.d.ts +0 -4
  405. package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -2
  406. package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +6 -6
  407. package/lib/types/components/radio-button/RadioButton.d.ts +0 -4
  408. package/lib/types/components/radio-button/RadioButton.styles.d.ts +9 -15
  409. package/lib/types/components/radio-button/radio-button-group/RadioButtonGroup.d.ts +0 -5
  410. package/lib/types/components/search-box/SearchBox.d.ts +0 -4
  411. package/lib/types/components/search-box/SearchBox.styles.d.ts +2 -2
  412. package/lib/types/components/search-input/SearchInput.d.ts +0 -4
  413. package/lib/types/components/search-input/SearchInput.styles.d.ts +9 -17
  414. package/lib/types/components/select-button/SelectButton.d.ts +0 -4
  415. package/lib/types/components/setup-wizard/SetupWizard.d.ts +0 -5
  416. package/lib/types/components/sharing-bar/SharingBar.d.ts +0 -4
  417. package/lib/types/components/sharing-button/SharingButton.d.ts +1 -1
  418. package/lib/types/components/sharing-context-menu/SharingContextMenu.d.ts +2 -10
  419. package/lib/types/components/signature/Signature.d.ts +0 -4
  420. package/lib/types/components/skeleton/base-skeleton/BaseSkeleton.styles.d.ts +4 -4
  421. package/lib/types/components/slider/Slider.d.ts +0 -8
  422. package/lib/types/components/slider/Slider.styles.d.ts +14 -18
  423. package/lib/types/components/slider-button/SliderButton.d.ts +28 -1
  424. package/lib/types/components/slider-button/SliderButton.styles.d.ts +4 -6
  425. package/lib/types/components/tag-input/TagInput.d.ts +0 -4
  426. package/lib/types/components/tag-input/TagInput.styles.d.ts +2 -12
  427. package/lib/types/components/text-area/TextArea.d.ts +0 -4
  428. package/lib/types/components/text-area/TextArea.styles.d.ts +0 -1
  429. package/lib/types/components/truncation/Truncation.d.ts +0 -4
  430. package/lib/types/components/truncation/Truncation.styles.d.ts +2 -7
  431. package/lib/types/utils/file.d.ts +1 -1
  432. package/package.json +3 -3
  433. package/lib/cjs/components/list/list-item/useListItemFocus.js +0 -47
  434. package/lib/cjs/components/list/list-item/useListItemFocus.js.map +0 -1
  435. package/lib/cjs/components/slider-button/SliderButton.types.js +0 -6
  436. package/lib/cjs/components/slider-button/SliderButton.types.js.map +0 -1
  437. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js +0 -66
  438. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js.map +0 -1
  439. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js +0 -47
  440. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js.map +0 -1
  441. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js +0 -68
  442. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js.map +0 -1
  443. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js +0 -29
  444. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js.map +0 -1
  445. package/lib/esm/components/list/list-item/useListItemFocus.js +0 -40
  446. package/lib/esm/components/list/list-item/useListItemFocus.js.map +0 -1
  447. package/lib/esm/components/slider-button/SliderButton.types.js +0 -2
  448. package/lib/esm/components/slider-button/SliderButton.types.js.map +0 -1
  449. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js +0 -56
  450. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js.map +0 -1
  451. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js +0 -38
  452. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js.map +0 -1
  453. package/lib/esm/hooks/useKeyboardFocusHighlighting.js +0 -61
  454. package/lib/esm/hooks/useKeyboardFocusHighlighting.js.map +0 -1
  455. package/lib/esm/utils/keyboardFocusHighlighting.styles.js +0 -24
  456. package/lib/esm/utils/keyboardFocusHighlighting.styles.js.map +0 -1
  457. package/lib/types/components/list/list-item/useListItemFocus.d.ts +0 -13
  458. package/lib/types/components/slider-button/SliderButton.types.d.ts +0 -32
  459. package/lib/types/components/slider-button/useSliderButtonPopupKeyboard.d.ts +0 -17
  460. package/lib/types/components/slider-button/useSliderButtonThumbKeyboard.d.ts +0 -13
  461. package/lib/types/hooks/useKeyboardFocusHighlighting.d.ts +0 -5
  462. package/lib/types/utils/keyboardFocusHighlighting.styles.d.ts +0 -9
@@ -2,24 +2,19 @@ import { setRefreshScrollEnabled } from 'chayns-api';
2
2
  import { AnimatePresence, useAnimate } from 'motion/react';
3
3
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
4
4
  import { useElementSize } from '../../hooks/element';
5
- import { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';
6
- import { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';
7
5
  import { calculateBiggestWidth } from '../../utils/calculate';
8
6
  import { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';
9
7
  import Icon from '../icon/Icon';
10
8
  import Popup from '../popup/Popup';
11
9
  import { StyledMotionSliderButtonThumb, StyledSliderButton, StyledSliderButtonButtonsWrapper, StyledSliderButtonItem, StyledSliderButtonPopupContent, StyledSliderButtonPopupContentItem, StyledSliderButtonWrapper } from './SliderButton.styles';
12
10
  import { useTheme } from 'styled-components';
13
- import { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';
14
- import { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';
15
11
  const SliderButton = ({
16
12
  isDisabled,
17
13
  isSecondary,
18
14
  items,
19
15
  onChange,
20
16
  selectedButtonId,
21
- isRounded = false,
22
- shouldEnableKeyboardHighlighting
17
+ isRounded = false
23
18
  }) => {
24
19
  const [dragRange, setDragRange] = useState({
25
20
  left: 0,
@@ -32,16 +27,11 @@ const SliderButton = ({
32
27
  const [currentId, setCurrentId] = useState('');
33
28
  const [currentPopupId, setCurrentPopupId] = useState('');
34
29
  const [currentIndex, setCurrentIndex] = useState(0);
35
- const [isPopupOpen, setIsPopupOpen] = useState(false);
36
30
  const sliderButtonRef = useRef(null);
37
31
  const sliderButtonWrapperRef = useRef(null);
38
32
  const popupRef = useRef(null);
39
- const popupItemRefs = useRef([]);
40
33
  const [scope, animate] = useAnimate();
41
34
  const theme = useTheme();
42
- const colorScheme = useColorScheme();
43
- const shouldEnableKeyboardHighlightingEffective = shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;
44
- const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(shouldEnableKeyboardHighlightingEffective && !isDisabled);
45
35
  const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);
46
36
  const elementSize = useElementSize(sliderButtonRef);
47
37
  useEffect(() => {
@@ -164,32 +154,6 @@ const SliderButton = ({
164
154
  }
165
155
  return color;
166
156
  }, [isSecondary, theme]);
167
- const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);
168
- const focusThumb = useCallback(() => {
169
- const thumb = sliderButtonRef.current?.querySelector('[data-slider-button-thumb="true"]');
170
- thumb?.focus();
171
- }, []);
172
- const {
173
- handlePopupKeyDown
174
- } = useSliderButtonPopupKeyboard({
175
- isPopupOpen,
176
- popupItems,
177
- currentPopupId,
178
- shownItemsCount,
179
- popupItemRefs,
180
- popupRef,
181
- focusThumb,
182
- onSelectPopupItem: handleClick
183
- });
184
- const {
185
- handleThumbKeyDown
186
- } = useSliderButtonThumbKeyboard({
187
- currentId,
188
- currentIndex,
189
- shownItemsCount,
190
- items,
191
- onSelectThumbItem: handleClick
192
- });
193
157
  const buttons = useMemo(() => {
194
158
  if (items.length > shownItemsCount) {
195
159
  const newItems = items.slice(0, shownItemsCount - 1);
@@ -206,15 +170,9 @@ const SliderButton = ({
206
170
  const popupContent = otherItems.map(({
207
171
  id,
208
172
  text
209
- }, popupIndex) => /*#__PURE__*/React.createElement(StyledSliderButtonPopupContentItem, {
173
+ }) => /*#__PURE__*/React.createElement(StyledSliderButtonPopupContentItem, {
210
174
  key: `slider-button-${id}`,
211
175
  onClick: () => handleClick(id, newItems.length),
212
- onKeyDown: handlePopupKeyDown,
213
- ref: element => {
214
- popupItemRefs.current[popupIndex] = element;
215
- },
216
- tabIndex: -1,
217
- role: "button",
218
176
  $isSelected: id === currentPopupId
219
177
  }, text));
220
178
  const id = 'more';
@@ -224,16 +182,7 @@ const SliderButton = ({
224
182
  key: `slider-button-${id}`
225
183
  }, /*#__PURE__*/React.createElement(Popup, {
226
184
  ref: popupRef,
227
- onShow: () => {
228
- setIsPopupOpen(true);
229
- },
230
- onHide: () => {
231
- setIsPopupOpen(false);
232
- popupItemRefs.current = [];
233
- },
234
- content: /*#__PURE__*/React.createElement(StyledSliderButtonPopupContent, {
235
- onKeyDown: handlePopupKeyDown
236
- }, popupContent)
185
+ content: /*#__PURE__*/React.createElement(StyledSliderButtonPopupContent, null, popupContent)
237
186
  }, /*#__PURE__*/React.createElement(Icon, {
238
187
  icons: ['fa fa-ellipsis'],
239
188
  color: "white"
@@ -248,7 +197,7 @@ const SliderButton = ({
248
197
  $width: itemWidth,
249
198
  key: `slider-button-${id}`
250
199
  }, text));
251
- }, [currentPopupId, handleClick, handlePopupKeyDown, isSecondary, itemWidth, items, shownItemsCount]);
200
+ }, [currentPopupId, handleClick, isSecondary, itemWidth, items, shownItemsCount]);
252
201
  const pseudoButtons = useMemo(() => {
253
202
  if (items.length > shownItemsCount) {
254
203
  const newItems = items.slice(0, shownItemsCount - 1);
@@ -377,12 +326,7 @@ const SliderButton = ({
377
326
  onClick: () => handleClick(currentId, currentIndex),
378
327
  style: {
379
328
  backgroundColor: thumbBackgroundColor
380
- },
381
- "data-slider-button-thumb": "true",
382
- tabIndex: shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined,
383
- role: shouldEnableKeyboardHighlightingEffective && !isDisabled ? 'button' : undefined,
384
- onKeyDown: shouldEnableKeyboardHighlightingEffective && !isDisabled ? handleThumbKeyDown : undefined,
385
- $shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting
329
+ }
386
330
  }), /*#__PURE__*/React.createElement(StyledSliderButtonWrapper, {
387
331
  $isRounded: isRounded,
388
332
  $isDisabled: isDisabled,
@@ -391,7 +335,7 @@ const SliderButton = ({
391
335
  style: {
392
336
  backgroundColor
393
337
  }
394
- }, /*#__PURE__*/React.createElement(AnimatePresence, null, /*#__PURE__*/React.createElement(StyledSliderButtonButtonsWrapper, null, buttons)))), [backgroundColor, buttons, currentId, currentIndex, dragRange, handleClick, handleDragEnd, handleDragStart, handleThumbKeyDown, isDisabled, isRounded, isSliderBigger, itemWidth, pseudoButtons, scope, shouldEnableKeyboardHighlightingEffective, shouldShowKeyboardHighlighting, thumbBackgroundColor]);
338
+ }, /*#__PURE__*/React.createElement(AnimatePresence, null, /*#__PURE__*/React.createElement(StyledSliderButtonButtonsWrapper, null, buttons)))), [backgroundColor, buttons, currentId, currentIndex, dragRange, handleClick, handleDragEnd, handleDragStart, isDisabled, isRounded, isSliderBigger, itemWidth, pseudoButtons, scope, thumbBackgroundColor]);
395
339
  };
396
340
  SliderButton.displayName = 'SliderButton';
397
341
  export default SliderButton;
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","useKeyboardFocusHighlighting","useColorScheme","calculateBiggestWidth","getNearestPoint","getThumbPosition","Icon","Popup","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonWrapper","useTheme","useSliderButtonPopupKeyboard","useSliderButtonThumbKeyboard","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","shouldEnableKeyboardHighlighting","dragRange","setDragRange","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","isPopupOpen","setIsPopupOpen","sliderButtonRef","sliderButtonWrapperRef","popupRef","popupItemRefs","scope","animate","theme","colorScheme","shouldEnableKeyboardHighlightingEffective","shouldShowKeyboardHighlighting","initialItemWidth","elementSize","setPopupId","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","popupItems","focusThumb","thumb","querySelector","focus","handlePopupKeyDown","onSelectPopupItem","handleThumbKeyDown","onSelectThumbItem","buttons","newItems","otherItems","elements","text","createElement","$isSecondary","$width","key","onClick","popupContent","popupIndex","onKeyDown","ref","element","tabIndex","role","$isSelected","push","onShow","onHide","content","icons","pseudoButtons","snapPoints","points","i","handleDragStart","handleDragEnd","position","middle","scrollLeft","nearestPoint","nearestIndex","hasMoreItems","$isDisabled","$isInvisible","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","undefined","$shouldShowKeyboardHighlighting","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useColorScheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { PopupRef } from '../../types/popup';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { SliderButtonProps } from './SliderButton.types';\nimport { useSliderButtonPopupKeyboard } from './useSliderButtonPopupKeyboard';\nimport { useSliderButtonThumbKeyboard } from './useSliderButtonThumbKeyboard';\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n shouldEnableKeyboardHighlighting,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n const [isPopupOpen, setIsPopupOpen] = useState(false);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n const popupItemRefs = useRef<Array<HTMLDivElement | null>>([]);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n const colorScheme = useColorScheme();\n const shouldEnableKeyboardHighlightingEffective =\n shouldEnableKeyboardHighlighting ?? colorScheme?.shouldEnableKeyboardHighlighting ?? false;\n\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlightingEffective && !isDisabled,\n );\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const popupItems = useMemo(() => items.slice(shownItemsCount - 1), [items, shownItemsCount]);\n\n const focusThumb = useCallback(() => {\n const thumb = sliderButtonRef.current?.querySelector(\n '[data-slider-button-thumb=\"true\"]',\n ) as HTMLDivElement | null;\n\n thumb?.focus();\n }, []);\n\n const { handlePopupKeyDown } = useSliderButtonPopupKeyboard({\n isPopupOpen,\n popupItems,\n currentPopupId,\n shownItemsCount,\n popupItemRefs,\n popupRef,\n focusThumb,\n onSelectPopupItem: handleClick,\n });\n\n const { handleThumbKeyDown } = useSliderButtonThumbKeyboard({\n currentId,\n currentIndex,\n shownItemsCount,\n items,\n onSelectThumbItem: handleClick,\n });\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }, popupIndex) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n onKeyDown={handlePopupKeyDown}\n ref={(element: HTMLDivElement | null) => {\n popupItemRefs.current[popupIndex] = element;\n }}\n tabIndex={-1}\n role=\"button\"\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n onShow={() => {\n setIsPopupOpen(true);\n }}\n onHide={() => {\n setIsPopupOpen(false);\n popupItemRefs.current = [];\n }}\n content={\n <StyledSliderButtonPopupContent onKeyDown={handlePopupKeyDown}>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [\n currentPopupId,\n handleClick,\n handlePopupKeyDown,\n isSecondary,\n itemWidth,\n items,\n shownItemsCount,\n ]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n data-slider-button-thumb=\"true\"\n tabIndex={\n shouldEnableKeyboardHighlightingEffective && !isDisabled ? 0 : undefined\n }\n role={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? 'button'\n : undefined\n }\n onKeyDown={\n shouldEnableKeyboardHighlightingEffective && !isDisabled\n ? handleThumbKeyDown\n : undefined\n }\n $shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n handleThumbKeyDown,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n shouldEnableKeyboardHighlightingEffective,\n shouldShowKeyboardHighlighting,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"SliderButton.js","names":["setRefreshScrollEnabled","AnimatePresence","useAnimate","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","calculateBiggestWidth","getNearestPoint","getThumbPosition","Icon","Popup","StyledMotionSliderButtonThumb","StyledSliderButton","StyledSliderButtonButtonsWrapper","StyledSliderButtonItem","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","StyledSliderButtonWrapper","useTheme","SliderButton","isDisabled","isSecondary","items","onChange","selectedButtonId","isRounded","dragRange","setDragRange","left","right","shownItemsCount","setShownItemsCount","length","sliderSize","setSliderSize","width","currentId","setCurrentId","currentPopupId","setCurrentPopupId","currentIndex","setCurrentIndex","sliderButtonRef","sliderButtonWrapperRef","popupRef","scope","animate","theme","initialItemWidth","elementSize","setPopupId","selectedId","ids","slice","map","id","newId","find","isSliderBigger","Math","floor","maxShownItemsCount","totalWidth","count","visibleItems","currentMaxWidth","itemWidth","sliderWidth","itemCount","animation","x","current","type","duration","setItemPosition","index","findIndex","handleClick","otherItem","_","indexOf","show","hide","backgroundColor","color","buttonBackgroundColor","buttonDesign","thumbBackgroundColor","buttons","newItems","otherItems","elements","text","createElement","$isSecondary","$width","key","onClick","popupContent","$isSelected","push","ref","content","icons","pseudoButtons","snapPoints","points","i","handleDragStart","handleDragEnd","position","middle","scrollLeft","nearestPoint","nearestIndex","hasMoreItems","$isDisabled","$isInvisible","$isRounded","drag","dragElastic","dragConstraints","onDragEnd","onDragStart","style","displayName"],"sources":["../../../../src/components/slider-button/SliderButton.tsx"],"sourcesContent":["import { setRefreshScrollEnabled } from 'chayns-api';\nimport { AnimatePresence, useAnimate } from 'motion/react';\nimport React, { FC, useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useElementSize } from '../../hooks/element';\nimport { PopupRef } from '../../types/popup';\nimport type { SliderButtonItem } from '../../types/slider-button';\nimport { calculateBiggestWidth } from '../../utils/calculate';\nimport { getNearestPoint, getThumbPosition } from '../../utils/sliderButton';\nimport Icon from '../icon/Icon';\nimport Popup from '../popup/Popup';\nimport {\n StyledMotionSliderButtonThumb,\n StyledSliderButton,\n StyledSliderButtonButtonsWrapper,\n StyledSliderButtonItem,\n StyledSliderButtonPopupContent,\n StyledSliderButtonPopupContentItem,\n StyledSliderButtonWrapper,\n} from './SliderButton.styles';\nimport { useTheme } from 'styled-components';\nimport type { Theme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport type SliderButtonProps = {\n /**\n * Whether the button is disabled and cannot be clicked anymore.\n */\n isDisabled?: boolean;\n /**\n * Displays the button in the secondary style.\n */\n isSecondary?: boolean;\n /**\n * The items that should be displayed in the slider button.\n */\n items: SliderButtonItem[];\n /**\n * Function to be executed when a button is selected. The id of the selected button is passed as an argument.\n * @param id\n */\n onChange?: (id: string) => void;\n /**\n * The id of the button that should be selected.\n */\n selectedButtonId?: string;\n /**\n *\n */\n isRounded?: boolean;\n};\n\nconst SliderButton: FC<SliderButtonProps> = ({\n isDisabled,\n isSecondary,\n items,\n onChange,\n selectedButtonId,\n isRounded = false,\n}) => {\n const [dragRange, setDragRange] = useState({ left: 0, right: 0 });\n const [shownItemsCount, setShownItemsCount] = useState(items.length);\n const [sliderSize, setSliderSize] = useState({ width: 0 });\n const [currentId, setCurrentId] = useState('');\n const [currentPopupId, setCurrentPopupId] = useState('');\n const [currentIndex, setCurrentIndex] = useState(0);\n\n const sliderButtonRef = useRef<HTMLDivElement>(null);\n const sliderButtonWrapperRef = useRef<HTMLDivElement>(null);\n const popupRef = useRef<PopupRef>(null);\n\n const [scope, animate] = useAnimate();\n\n const theme = useTheme() as Theme;\n\n const initialItemWidth = useMemo(() => calculateBiggestWidth(items), [items]);\n const elementSize = useElementSize(sliderButtonRef);\n\n useEffect(() => {\n if (elementSize) setSliderSize(elementSize);\n }, [elementSize]);\n\n const setPopupId = useCallback(\n (selectedId: string) => {\n const ids = items.slice(shownItemsCount - 1).map(({ id }) => id);\n\n const newId = ids.find((id) => id === selectedId);\n\n if (newId) {\n setCurrentId('more');\n setCurrentPopupId(newId);\n\n return;\n }\n\n setCurrentId(selectedId);\n },\n [items, shownItemsCount],\n );\n\n const isSliderBigger = useMemo(\n () => sliderSize && Math.floor(sliderSize.width / initialItemWidth) < items.length - 1,\n [initialItemWidth, items.length, sliderSize],\n );\n\n const maxShownItemsCount = useMemo(() => {\n let totalWidth = 0;\n let count = 0;\n\n while (count < items.length) {\n const visibleItems = items.slice(0, count + 1);\n const currentMaxWidth = calculateBiggestWidth(visibleItems) + 8;\n\n if (totalWidth + currentMaxWidth > sliderSize.width) break;\n\n totalWidth += currentMaxWidth;\n count++;\n }\n\n return count;\n }, [items, sliderSize.width]);\n\n const itemWidth = useMemo(() => {\n const sliderWidth = sliderSize?.width || 0;\n const itemCount = items.length || 1;\n\n setShownItemsCount(isSliderBigger ? maxShownItemsCount : itemCount);\n\n return sliderWidth / (isSliderBigger ? maxShownItemsCount : itemCount);\n }, [isSliderBigger, items.length, maxShownItemsCount, sliderSize?.width]);\n\n useEffect(() => {\n if (sliderSize) {\n const sliderWidth = itemWidth * (items.length - 1);\n\n const count = Math.floor(sliderSize.width / itemWidth);\n\n setDragRange({ left: 0, right: isSliderBigger ? itemWidth * count : sliderWidth });\n }\n }, [isSliderBigger, itemWidth, items.length, sliderSize]);\n\n const animation = useCallback(\n async (x: number) => {\n await animate(\n scope.current,\n { x },\n {\n type: 'tween',\n duration: 0.2,\n },\n );\n },\n [animate, scope],\n );\n\n const setItemPosition = useCallback(\n (index: number) => {\n setCurrentIndex(index);\n\n void animation(itemWidth * index);\n },\n [animation, itemWidth],\n );\n\n useEffect(() => {\n if (typeof selectedButtonId === 'string') {\n let index = items.findIndex(({ id }) => id === selectedButtonId);\n\n setCurrentId(selectedButtonId);\n\n setPopupId(selectedButtonId);\n\n if (items.length > shownItemsCount && index > shownItemsCount - 1) {\n index = shownItemsCount - 1;\n }\n\n if (index >= 0) {\n setItemPosition(index);\n }\n }\n }, [\n animation,\n dragRange.right,\n isSliderBigger,\n itemWidth,\n items,\n selectedButtonId,\n setItemPosition,\n setPopupId,\n shownItemsCount,\n ]);\n\n const handleClick = useCallback(\n (id: string, index: number) => {\n if (isDisabled) {\n return;\n }\n\n if (currentIndex === index && items.length === 2) {\n const otherItem = items.find((_, findIndex) => index !== findIndex);\n if (!otherItem) return;\n\n setPopupId(otherItem.id);\n setItemPosition(items.indexOf(otherItem));\n onChange?.(otherItem.id);\n return;\n }\n\n setPopupId(id);\n\n if (typeof onChange === 'function' && id !== 'more') {\n onChange(id);\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n setItemPosition(index);\n },\n [currentIndex, isDisabled, items, onChange, setItemPosition, setPopupId],\n );\n\n const backgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['202'];\n } else {\n color = theme.buttonBackgroundColor ?? theme['408'];\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const thumbBackgroundColor = useMemo(() => {\n let color;\n\n if (isSecondary) {\n color = theme['207'];\n } else {\n color = `rgba(${theme['405-rgb'] ?? ''}, 0.75)`;\n }\n\n if (theme.buttonDesign === '2') {\n color = `rgba(${theme['102-rgb'] ?? ''}, 0)`;\n }\n\n return color;\n }, [isSecondary, theme]);\n\n const buttons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n const otherItems = items.slice(shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const popupContent = otherItems.map(({ id, text }) => (\n <StyledSliderButtonPopupContentItem\n key={`slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n $isSelected={id === currentPopupId}\n >\n {text}\n </StyledSliderButtonPopupContentItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n <Popup\n ref={popupRef}\n content={\n <StyledSliderButtonPopupContent>\n {popupContent}\n </StyledSliderButtonPopupContent>\n }\n >\n <Icon icons={['fa fa-ellipsis']} color=\"white\" />\n </Popup>\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`slider-button-${id}`}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [currentPopupId, handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n const pseudoButtons = useMemo(() => {\n if (items.length > shownItemsCount) {\n const newItems = items.slice(0, shownItemsCount - 1);\n\n const elements = newItems.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n\n const id = 'more';\n\n elements.push(\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, newItems.length)}\n >\n <Icon icons={['fa fa-ellipsis']} />\n </StyledSliderButtonItem>,\n );\n\n return elements;\n }\n return items.map(({ id, text }, index) => (\n <StyledSliderButtonItem\n $isSecondary={isSecondary}\n $width={itemWidth}\n key={`pseudo-slider-button-${id}`}\n onClick={() => handleClick(id, index)}\n >\n {text}\n </StyledSliderButtonItem>\n ));\n }, [handleClick, isSecondary, itemWidth, items, shownItemsCount]);\n\n /**\n * Creates an array with the snap points relative to the width of the items\n */\n const snapPoints = useMemo(() => {\n const points = [0];\n\n for (let i = 1; i < items.length; i++) {\n points.push(itemWidth * i);\n }\n\n return points;\n }, [itemWidth, items.length]);\n\n const handleDragStart = useCallback(() => {\n void setRefreshScrollEnabled(false);\n }, []);\n\n const handleDragEnd = useCallback(() => {\n void setRefreshScrollEnabled(true);\n\n const position = getThumbPosition({ scope, itemWidth });\n\n if (!position) {\n return;\n }\n\n const { middle, left } = position;\n\n let scrollLeft = 0;\n\n if (sliderButtonWrapperRef.current) {\n scrollLeft = sliderButtonWrapperRef.current.scrollLeft;\n\n sliderButtonWrapperRef.current.scrollLeft = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: scrollLeft - left,\n }).nearestPoint;\n }\n\n const { nearestIndex } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft,\n });\n\n const { nearestPoint } = getNearestPoint({\n snapPoints,\n position: middle,\n scrollLeft: 0,\n });\n const hasMoreItems = items.length > shownItemsCount;\n\n if (nearestPoint >= 0 && nearestIndex >= 0) {\n void animation(nearestPoint);\n\n let id;\n\n if (hasMoreItems && nearestIndex === shownItemsCount - 1) {\n id = 'more';\n } else {\n id = items[nearestIndex]?.id;\n }\n\n if (popupRef.current) {\n if (id === 'more') {\n popupRef.current.show();\n } else {\n popupRef.current.hide();\n }\n }\n\n if (typeof onChange === 'function' && id) {\n setPopupId(id);\n setCurrentIndex(nearestIndex);\n if (id !== 'more') onChange(id);\n }\n }\n }, [animation, itemWidth, items, onChange, scope, setPopupId, shownItemsCount, snapPoints]);\n\n return useMemo(\n () => (\n <StyledSliderButton $isDisabled={isDisabled} ref={sliderButtonRef}>\n <StyledSliderButtonButtonsWrapper $isInvisible>\n {pseudoButtons}\n </StyledSliderButtonButtonsWrapper>\n <StyledMotionSliderButtonThumb\n $isRounded={isRounded}\n ref={scope}\n drag={isDisabled ? false : 'x'}\n dragElastic={0}\n dragConstraints={\n isSliderBigger\n ? { ...dragRange, right: dragRange.right - itemWidth }\n : { ...dragRange }\n }\n $width={itemWidth}\n onDragEnd={handleDragEnd}\n onDragStart={handleDragStart}\n onClick={() => handleClick(currentId, currentIndex)}\n style={{ backgroundColor: thumbBackgroundColor }}\n />\n <StyledSliderButtonWrapper\n $isRounded={isRounded}\n $isDisabled={isDisabled}\n $width={!isSliderBigger ? dragRange.right + itemWidth : dragRange.right}\n ref={sliderButtonWrapperRef}\n style={{ backgroundColor }}\n >\n <AnimatePresence>\n <StyledSliderButtonButtonsWrapper>\n {buttons}\n </StyledSliderButtonButtonsWrapper>\n </AnimatePresence>\n </StyledSliderButtonWrapper>\n </StyledSliderButton>\n ),\n [\n backgroundColor,\n buttons,\n currentId,\n currentIndex,\n dragRange,\n handleClick,\n handleDragEnd,\n handleDragStart,\n isDisabled,\n isRounded,\n isSliderBigger,\n itemWidth,\n pseudoButtons,\n scope,\n thumbBackgroundColor,\n ],\n );\n};\n\nSliderButton.displayName = 'SliderButton';\n\nexport default SliderButton;\n"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,5 @@
1
1
  import { motion } from 'motion/react';
2
- import styled, { css } from 'styled-components';
3
- import { keyboardFocusHighlightingRingCss } from '../../utils/keyboardFocusHighlighting.styles';
2
+ import styled from 'styled-components';
4
3
  export const StyledSliderButton = styled.div`
5
4
  opacity: ${({
6
5
  $isDisabled
@@ -76,10 +75,6 @@ export const StyledSliderButtonPopupContentItem = styled.div`
76
75
  theme
77
76
  }) => $isSelected ? theme['secondary-102'] : undefined};
78
77
  padding: 4px 12px;
79
-
80
- &:focus-visible {
81
- ${keyboardFocusHighlightingRingCss};
82
- }
83
78
  `;
84
79
  export const StyledSliderButtonButtonsWrapper = styled.div`
85
80
  position: absolute;
@@ -118,13 +113,5 @@ export const StyledMotionSliderButtonThumb = styled(motion.div)`
118
113
  justify-content: center;
119
114
  align-items: center;
120
115
  cursor: pointer;
121
-
122
- ${({
123
- $shouldShowKeyboardHighlighting
124
- }) => $shouldShowKeyboardHighlighting && css`
125
- &:focus-visible {
126
- ${keyboardFocusHighlightingRingCss}
127
- }
128
- `}
129
116
  `;
130
117
  //# sourceMappingURL=SliderButton.styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SliderButton.styles.js","names":["motion","styled","css","keyboardFocusHighlightingRingCss","StyledSliderButton","div","$isDisabled","StyledSliderButtonWrapper","$isRounded","$width","StyledSliderButtonItem","$isSecondary","theme","text","buttonColor","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","$isSelected","undefined","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb","$shouldShowKeyboardHighlighting"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled, { css } from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\nimport { keyboardFocusHighlightingRingCss } from '../../utils/keyboardFocusHighlighting.styles';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n position: relative;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{\n $width: number;\n $isDisabled?: boolean;\n $isRounded: boolean;\n}>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n border-radius: ${({ $isRounded }) => ($isRounded ? 32 : 3)}px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: ${({ $isDisabled }) => ($isDisabled ? 'hidden' : 'scroll')};\n overflow-y: hidden;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{\n $isSecondary?: boolean;\n $width: number;\n}>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n white-space: nowrap;\n justify-content: center;\n color: ${({ $isSecondary, theme }: StyledSliderButtonItemProps) =>\n $isSecondary ? theme.text : (theme.buttonColor ?? 'white')};\n`;\n\nexport const StyledSliderButtonPopupContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ntype StyledSliderButtonPopupContentItemProps = WithTheme<{\n $isSelected?: boolean;\n}>;\n\nexport const StyledSliderButtonPopupContentItem = styled.div<StyledSliderButtonPopupContentItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n cursor: pointer;\n background-color: ${({ $isSelected, theme }: StyledSliderButtonPopupContentItemProps) =>\n $isSelected ? theme['secondary-102'] : undefined};\n padding: 4px 12px;\n\n &:focus-visible {\n ${keyboardFocusHighlightingRingCss};\n }\n`;\n\ntype StyledSliderButtonButtonsWrapperProps = WithTheme<{ $isInvisible?: boolean }>;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div<StyledSliderButtonButtonsWrapperProps>`\n position: absolute;\n z-index: ${({ $isInvisible }) => ($isInvisible ? '2' : '4')};\n opacity: ${({ $isInvisible }) => ($isInvisible ? 0 : 1)};\n display: flex;\n cursor: pointer;\n align-items: center;\n pointer-events: ${({ $isInvisible }) => ($isInvisible ? 'auto' : 'none')};\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{\n $width: number;\n $isRounded: boolean;\n $shouldShowKeyboardHighlighting?: boolean;\n}>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n opacity: 1;\n width: ${({ $width }) => $width - 8}px;\n position: absolute;\n border-radius: ${({ $isRounded }) => ($isRounded ? 24 : 3)}px;\n top: 4px;\n left: 4px;\n white-space: nowrap;\n z-index: 3;\n height: 24px;\n padding: 7px 12px;\n display: flex;\n color: white;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n\n ${({ $shouldShowKeyboardHighlighting }) =>\n $shouldShowKeyboardHighlighting &&\n css`\n &:focus-visible {\n ${keyboardFocusHighlightingRingCss}\n }\n `}\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAE/C,SAASC,gCAAgC,QAAQ,8CAA8C;AAI/F,OAAO,MAAMC,kBAAkB,GAAGH,MAAM,CAACI,GAA4B;AACrE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA;AACA;AACA,CAAC;AAQD,OAAO,MAAMC,yBAAyB,GAAGN,MAAM,CAACI,GAAmC;AACnF;AACA,qBAAqB,CAAC;EAAEG;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAM;AACnC;AACA;AACA,kBAAkB,CAAC;EAAEH;AAAY,CAAC,KAAMA,WAAW,GAAG,QAAQ,GAAG,QAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOD,OAAO,MAAMI,sBAAsB,GAAGT,MAAM,CAACI,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM;AACvC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAM;AACvC;AACA;AACA;AACA,aAAa,CAAC;EAAEE,YAAY;EAAEC;AAAmC,CAAC,KAC1DD,YAAY,GAAGC,KAAK,CAACC,IAAI,GAAID,KAAK,CAACE,WAAW,IAAI,OAAQ;AAClE,CAAC;AAED,OAAO,MAAMC,8BAA8B,GAAGd,MAAM,CAACI,GAAG;AACxD;AACA;AACA,CAAC;AAMD,OAAO,MAAMW,kCAAkC,GAAGf,MAAM,CAACI,GAA4C;AACrG;AACA;AACA;AACA,wBAAwB,CAAC;EAAEY,WAAW;EAAEL;AAA+C,CAAC,KAChFK,WAAW,GAAGL,KAAK,CAAC,eAAe,CAAC,GAAGM,SAAS;AACxD;AACA;AACA;AACA,UAAUf,gCAAgC;AAC1C;AACA,CAAC;AAID,OAAO,MAAMgB,gCAAgC,GAAGlB,MAAM,CAACI,GAA0C;AACjG;AACA,eAAe,CAAC;EAAEe;AAAa,CAAC,KAAMA,YAAY,GAAG,GAAG,GAAG,GAAI;AAC/D,eAAe,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,CAAC,GAAG,CAAE;AAC3D;AACA;AACA;AACA,sBAAsB,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,MAAM,GAAG,MAAO;AAC5E,CAAC;AAQD,OAAO,MAAMC,6BAA6B,GAAGpB,MAAM,CAACD,MAAM,CAACK,GAAG,CAAqC;AACnG;AACA;AACA;AACA,aAAa,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM,GAAG,CAAC;AACvC;AACA,qBAAqB,CAAC;EAAED;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,CAAC;EAAEc;AAAgC,CAAC,KAClCA,+BAA+B,IAC/BpB,GAAG;AACX;AACA,kBAAkBC,gCAAgC;AAClD;AACA,SAAS;AACT,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"SliderButton.styles.js","names":["motion","styled","StyledSliderButton","div","$isDisabled","StyledSliderButtonWrapper","$isRounded","$width","StyledSliderButtonItem","$isSecondary","theme","text","buttonColor","StyledSliderButtonPopupContent","StyledSliderButtonPopupContentItem","$isSelected","undefined","StyledSliderButtonButtonsWrapper","$isInvisible","StyledMotionSliderButtonThumb"],"sources":["../../../../src/components/slider-button/SliderButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledSliderButtonProps = WithTheme<{ $isDisabled?: boolean }>;\n\nexport const StyledSliderButton = styled.div<StyledSliderButtonProps>`\n opacity: ${({ $isDisabled }) => ($isDisabled ? 0.5 : 1)};\n width: 100%;\n touch-action: none;\n position: relative;\n`;\n\ntype StyledSliderButtonWrapperProps = WithTheme<{\n $width: number;\n $isDisabled?: boolean;\n $isRounded: boolean;\n}>;\n\nexport const StyledSliderButtonWrapper = styled.div<StyledSliderButtonWrapperProps>`\n align-items: center;\n border-radius: ${({ $isRounded }) => ($isRounded ? 32 : 3)}px;\n border: none;\n color: white;\n cursor: pointer;\n display: inline-flex;\n line-height: 1.15;\n height: 32px;\n position: relative;\n user-select: none;\n transition: opacity 0.3s ease;\n\n width: ${({ $width }) => $width}px;\n\n max-width: 100%;\n overflow-x: ${({ $isDisabled }) => ($isDisabled ? 'hidden' : 'scroll')};\n overflow-y: hidden;\n\n // Chrome\n &::-webkit-scrollbar {\n display: none;\n }\n\n // IE and Edge\n -ms-overflow-style: none;\n\n // Firefox\n scrollbar-width: none;\n`;\n\ntype StyledSliderButtonItemProps = WithTheme<{\n $isSecondary?: boolean;\n $width: number;\n}>;\n\nexport const StyledSliderButtonItem = styled.div<StyledSliderButtonItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n padding: 7px 12px;\n min-width: ${({ $width }) => $width}px;\n max-width: ${({ $width }) => $width}px;\n display: flex;\n white-space: nowrap;\n justify-content: center;\n color: ${({ $isSecondary, theme }: StyledSliderButtonItemProps) =>\n $isSecondary ? theme.text : (theme.buttonColor ?? 'white')};\n`;\n\nexport const StyledSliderButtonPopupContent = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\ntype StyledSliderButtonPopupContentItemProps = WithTheme<{ $isSelected?: boolean }>;\n\nexport const StyledSliderButtonPopupContentItem = styled.div<StyledSliderButtonPopupContentItemProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n cursor: pointer;\n background-color: ${({ $isSelected, theme }: StyledSliderButtonPopupContentItemProps) =>\n $isSelected ? theme['secondary-102'] : undefined};\n padding: 4px 12px;\n`;\n\ntype StyledSliderButtonButtonsWrapperProps = WithTheme<{ $isInvisible?: boolean }>;\n\nexport const StyledSliderButtonButtonsWrapper = styled.div<StyledSliderButtonButtonsWrapperProps>`\n position: absolute;\n z-index: ${({ $isInvisible }) => ($isInvisible ? '2' : '4')};\n opacity: ${({ $isInvisible }) => ($isInvisible ? 0 : 1)};\n display: flex;\n cursor: pointer;\n align-items: center;\n pointer-events: ${({ $isInvisible }) => ($isInvisible ? 'auto' : 'none')};\n`;\n\ntype StyledMotionSliderButtonThumbProps = WithTheme<{ $width: number; $isRounded: boolean }>;\n\nexport const StyledMotionSliderButtonThumb = styled(motion.div)<StyledMotionSliderButtonThumbProps>`\n font-size: 110%;\n font-family: 'Roboto Medium', serif;\n opacity: 1;\n width: ${({ $width }) => $width - 8}px;\n position: absolute;\n border-radius: ${({ $isRounded }) => ($isRounded ? 24 : 3)}px;\n top: 4px;\n left: 4px;\n white-space: nowrap;\n z-index: 3;\n height: 24px;\n padding: 7px 12px;\n display: flex;\n color: white;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,MAAM,mBAAmB;AAKtC,OAAO,MAAMC,kBAAkB,GAAGD,MAAM,CAACE,GAA4B;AACrE,eAAe,CAAC;EAAEC;AAAY,CAAC,KAAMA,WAAW,GAAG,GAAG,GAAG,CAAE;AAC3D;AACA;AACA;AACA,CAAC;AAQD,OAAO,MAAMC,yBAAyB,GAAGJ,MAAM,CAACE,GAAmC;AACnF;AACA,qBAAqB,CAAC;EAAEG;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEC;AAAO,CAAC,KAAKA,MAAM;AACnC;AACA;AACA,kBAAkB,CAAC;EAAEH;AAAY,CAAC,KAAMA,WAAW,GAAG,QAAQ,GAAG,QAAS;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOD,OAAO,MAAMI,sBAAsB,GAAGP,MAAM,CAACE,GAAgC;AAC7E;AACA;AACA;AACA,iBAAiB,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM;AACvC,iBAAiB,CAAC;EAAEA;AAAO,CAAC,KAAKA,MAAM;AACvC;AACA;AACA;AACA,aAAa,CAAC;EAAEE,YAAY;EAAEC;AAAmC,CAAC,KAC1DD,YAAY,GAAGC,KAAK,CAACC,IAAI,GAAID,KAAK,CAACE,WAAW,IAAI,OAAQ;AAClE,CAAC;AAED,OAAO,MAAMC,8BAA8B,GAAGZ,MAAM,CAACE,GAAG;AACxD;AACA;AACA,CAAC;AAID,OAAO,MAAMW,kCAAkC,GAAGb,MAAM,CAACE,GAA4C;AACrG;AACA;AACA;AACA,wBAAwB,CAAC;EAAEY,WAAW;EAAEL;AAA+C,CAAC,KAChFK,WAAW,GAAGL,KAAK,CAAC,eAAe,CAAC,GAAGM,SAAS;AACxD;AACA,CAAC;AAID,OAAO,MAAMC,gCAAgC,GAAGhB,MAAM,CAACE,GAA0C;AACjG;AACA,eAAe,CAAC;EAAEe;AAAa,CAAC,KAAMA,YAAY,GAAG,GAAG,GAAG,GAAI;AAC/D,eAAe,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,CAAC,GAAG,CAAE;AAC3D;AACA;AACA;AACA,sBAAsB,CAAC;EAAEA;AAAa,CAAC,KAAMA,YAAY,GAAG,MAAM,GAAG,MAAO;AAC5E,CAAC;AAID,OAAO,MAAMC,6BAA6B,GAAGlB,MAAM,CAACD,MAAM,CAACG,GAAG,CAAqC;AACnG;AACA;AACA;AACA,aAAa,CAAC;EAAEI;AAAO,CAAC,KAAKA,MAAM,GAAG,CAAC;AACvC;AACA,qBAAqB,CAAC;EAAED;AAAW,CAAC,KAAMA,UAAU,GAAG,EAAE,GAAG,CAAE;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -3,10 +3,9 @@ import { useTheme } from 'styled-components';
3
3
  import { v4 as uuidv4 } from 'uuid';
4
4
  import Badge from '../badge/Badge';
5
5
  import Icon from '../icon/Icon';
6
- import { StyledTagInput, StyledTagInputTagFocusWrapper, StyledTagInputIconWrapper, StyledTagInputTagInput, StyledTagInputTagWrapper, StyledTagInputTagWrapperText } from './TagInput.styles';
6
+ import { StyledTagInput, StyledTagInputIconWrapper, StyledTagInputTagInput, StyledTagInputTagWrapper, StyledTagInputTagWrapperText } from './TagInput.styles';
7
7
  import { AreaContext } from '../area-provider/AreaContextProvider';
8
8
  import { useCursorRepaint } from '../../hooks/resize';
9
- import { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';
10
9
  const TagInput = /*#__PURE__*/forwardRef(({
11
10
  leftElement,
12
11
  onAdd,
@@ -16,7 +15,6 @@ const TagInput = /*#__PURE__*/forwardRef(({
16
15
  onRemove,
17
16
  placeholder,
18
17
  shouldAllowMultiple = true,
19
- shouldEnableKeyboardHighlighting,
20
18
  shouldPreventEnter,
21
19
  tags
22
20
  }, ref) => {
@@ -30,78 +28,13 @@ const TagInput = /*#__PURE__*/forwardRef(({
30
28
  setCurrentValue('');
31
29
  };
32
30
  const shouldChangeColor = useMemo(() => areaProvider.shouldChangeColor ?? false, [areaProvider.shouldChangeColor]);
33
- const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(shouldEnableKeyboardHighlighting);
34
- const shouldShowTagHighlighting = shouldShowKeyboardHighlighting && typeof selectedId === 'string';
35
31
  useImperativeHandle(ref, () => ({
36
32
  blur: () => inputRef.current?.blur(),
37
33
  getUnsavedTagText: currentValue !== '' ? currentValue : undefined,
38
34
  resetValue: handleResetValue
39
35
  }), [currentValue]);
40
- const handleRemoveTag = useCallback((id, currentTags) => {
41
- const removedTagIndex = currentTags.findIndex(tag => tag.id === id);
42
- if (typeof onRemove === 'function') {
43
- onRemove(id);
44
- }
45
- if (removedTagIndex < 0) {
46
- setSelectedId(undefined);
47
- return;
48
- }
49
- setSelectedId(currentTags[removedTagIndex + 1]?.id ?? currentTags[removedTagIndex - 1]?.id);
50
- }, [onRemove]);
51
36
  const handleKeyDown = useCallback(event => {
52
- const visibleTags = shouldAllowMultiple ? tags ?? [] : (tags ?? []).slice(0, 1);
53
- const selectedTagIndex = visibleTags.findIndex(tag => tag.id === selectedId);
54
- const selectedTag = selectedTagIndex >= 0 ? visibleTags[selectedTagIndex] : undefined;
55
- const isSpaceKey = event.key === ' ';
56
- const isEnterKey = event.key === 'Enter';
57
- const isDeleteKey = event.key === 'Delete';
58
- if (currentValue === '' && visibleTags.length > 0) {
59
- if (event.key === 'ArrowLeft') {
60
- event.preventDefault();
61
- if (!selectedId) {
62
- setSelectedId(visibleTags[visibleTags.length - 1]?.id);
63
- return;
64
- }
65
- if (selectedTagIndex <= 0) {
66
- setSelectedId(undefined);
67
- return;
68
- }
69
- setSelectedId(visibleTags[selectedTagIndex - 1]?.id);
70
- return;
71
- }
72
- if (event.key === 'ArrowRight') {
73
- event.preventDefault();
74
- if (!selectedId || selectedTagIndex < 0) {
75
- return;
76
- }
77
- if (selectedTagIndex >= visibleTags.length - 1) {
78
- setSelectedId(undefined);
79
- return;
80
- }
81
- setSelectedId(visibleTags[selectedTagIndex + 1]?.id);
82
- return;
83
- }
84
- if (event.key === 'Home') {
85
- event.preventDefault();
86
- setSelectedId(visibleTags[0]?.id);
87
- return;
88
- }
89
- if (event.key === 'End') {
90
- event.preventDefault();
91
- setSelectedId(visibleTags[visibleTags.length - 1]?.id);
92
- return;
93
- }
94
- if (isEnterKey || isSpaceKey || event.key === 'Backspace' || isDeleteKey) {
95
- event.preventDefault();
96
- if (!selectedTag) {
97
- setSelectedId(visibleTags[visibleTags.length - 1]?.id);
98
- return;
99
- }
100
- handleRemoveTag(selectedTag.id, visibleTags);
101
- return;
102
- }
103
- }
104
- if (isEnterKey && !shouldPreventEnter) {
37
+ if (event.key === 'Enter' && !shouldPreventEnter) {
105
38
  setCurrentValue(prevValue => {
106
39
  if (!prevValue) {
107
40
  return '';
@@ -128,7 +61,28 @@ const TagInput = /*#__PURE__*/forwardRef(({
128
61
  return '';
129
62
  });
130
63
  }
131
- }, [currentValue, onAdd, handleRemoveTag, selectedId, shouldAllowMultiple, shouldPreventEnter, tags]);
64
+ if (event.key === 'Backspace' && currentValue === '') {
65
+ if (!selectedId) {
66
+ if (!tags) {
67
+ return;
68
+ }
69
+ const newSelectedId = tags[tags.length - 1]?.id;
70
+ setSelectedId(newSelectedId);
71
+ return;
72
+ }
73
+ if (!tags) {
74
+ return;
75
+ }
76
+ const removedId = tags[tags.length - 1]?.id;
77
+ if (!removedId) {
78
+ return;
79
+ }
80
+ if (typeof onRemove === 'function') {
81
+ onRemove(removedId);
82
+ }
83
+ setSelectedId(undefined);
84
+ }
85
+ }, [currentValue, onAdd, onRemove, selectedId, shouldAllowMultiple, shouldPreventEnter, tags]);
132
86
  const handleChange = useCallback(event => {
133
87
  setCurrentValue(event.target.value);
134
88
  if (typeof onChange === 'function') {
@@ -139,8 +93,10 @@ const TagInput = /*#__PURE__*/forwardRef(({
139
93
  }
140
94
  }, [onChange]);
141
95
  const handleIconClick = useCallback(id => {
142
- handleRemoveTag(id, shouldAllowMultiple ? tags ?? [] : (tags ?? []).slice(0, 1));
143
- }, [handleRemoveTag, shouldAllowMultiple, tags]);
96
+ if (typeof onRemove === 'function') {
97
+ onRemove(id);
98
+ }
99
+ }, [onRemove]);
144
100
  const content = useMemo(() => {
145
101
  const items = [];
146
102
  if (!tags) {
@@ -151,30 +107,23 @@ const TagInput = /*#__PURE__*/forwardRef(({
151
107
  id,
152
108
  rightElement
153
109
  }) => {
154
- const isSelected = id === selectedId;
155
- items.push(/*#__PURE__*/React.createElement(StyledTagInputTagFocusWrapper, {
156
- $isSelected: isSelected,
157
- $shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting,
158
- key: `tag-input-${id}`
159
- }, /*#__PURE__*/React.createElement(Badge, {
160
- backgroundColor: isSelected ? theme['206'] ?? undefined : undefined
110
+ items.push(/*#__PURE__*/React.createElement(Badge, {
111
+ key: `tag-input-${id}`,
112
+ backgroundColor: id === selectedId ? theme['206'] ?? undefined : undefined
161
113
  }, /*#__PURE__*/React.createElement(StyledTagInputTagWrapper, null, /*#__PURE__*/React.createElement(StyledTagInputTagWrapperText, null, text), rightElement, /*#__PURE__*/React.createElement(Icon, {
162
114
  icons: ['ts-wrong'],
163
- shouldEnableKeyboardHighlighting: false,
164
115
  onClick: event => {
165
116
  event.preventDefault();
166
117
  event.stopPropagation();
167
118
  handleIconClick(id);
168
119
  }
169
- })))));
120
+ }))));
170
121
  });
171
122
  return items;
172
- }, [tags, shouldAllowMultiple, selectedId, shouldShowKeyboardHighlighting, theme, handleIconClick]);
123
+ }, [tags, shouldAllowMultiple, selectedId, theme, handleIconClick]);
173
124
  const shouldShowInput = useMemo(() => shouldAllowMultiple || (tags?.length ?? 0) < 1, [tags?.length, shouldAllowMultiple]);
174
125
  return useMemo(() => /*#__PURE__*/React.createElement(StyledTagInput, {
175
- $shouldChangeColor: shouldChangeColor,
176
- $shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting,
177
- $shouldShowTagHighlighting: shouldShowTagHighlighting
126
+ $shouldChangeColor: shouldChangeColor
178
127
  }, leftElement && /*#__PURE__*/React.createElement(StyledTagInputIconWrapper, null, leftElement), content, shouldShowInput && /*#__PURE__*/React.createElement(StyledTagInputTagInput, {
179
128
  onBlur: onBlur,
180
129
  onChange: handleChange,
@@ -183,7 +132,7 @@ const TagInput = /*#__PURE__*/forwardRef(({
183
132
  placeholder: tags && tags.length > 0 ? undefined : placeholder,
184
133
  ref: inputRef,
185
134
  value: currentValue
186
- })), [content, currentValue, handleChange, handleKeyDown, leftElement, onBlur, onFocus, placeholder, shouldChangeColor, shouldShowInput, shouldShowKeyboardHighlighting, shouldShowTagHighlighting, tags]);
135
+ })), [content, currentValue, handleChange, handleKeyDown, leftElement, onBlur, onFocus, placeholder, shouldChangeColor, shouldShowInput, tags]);
187
136
  });
188
137
  export default TagInput;
189
138
  //# sourceMappingURL=TagInput.js.map