@chayns-components/core 5.4.7 → 5.4.8-alpha.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (462) hide show
  1. package/AGENTS.md +12 -0
  2. package/lib/cjs/components/accordion/Accordion.js +107 -12
  3. package/lib/cjs/components/accordion/Accordion.js.map +1 -1
  4. package/lib/cjs/components/accordion/Accordion.styles.js +23 -3
  5. package/lib/cjs/components/accordion/Accordion.styles.js.map +1 -1
  6. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
  7. package/lib/cjs/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  8. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js +36 -19
  9. package/lib/cjs/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  10. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js +6 -3
  11. package/lib/cjs/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  12. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
  13. package/lib/cjs/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  14. package/lib/cjs/components/amount-control/AmountControl.js +31 -17
  15. package/lib/cjs/components/amount-control/AmountControl.js.map +1 -1
  16. package/lib/cjs/components/amount-control/AmountControl.styles.js +18 -2
  17. package/lib/cjs/components/amount-control/AmountControl.styles.js.map +1 -1
  18. package/lib/cjs/components/button/Button.js +5 -1
  19. package/lib/cjs/components/button/Button.js.map +1 -1
  20. package/lib/cjs/components/button/Button.styles.js +10 -0
  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 +5 -1
  24. package/lib/cjs/components/checkbox/Checkbox.js.map +1 -1
  25. package/lib/cjs/components/checkbox/Checkbox.styles.js +29 -2
  26. package/lib/cjs/components/checkbox/Checkbox.styles.js.map +1 -1
  27. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
  28. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  29. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
  30. package/lib/cjs/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  31. package/lib/cjs/components/combobox/ComboBox.js +68 -11
  32. package/lib/cjs/components/combobox/ComboBox.js.map +1 -1
  33. package/lib/cjs/components/combobox/ComboBox.styles.js +11 -0
  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 +146 -42
  37. package/lib/cjs/components/context-menu/ContextMenu.js.map +1 -1
  38. package/lib/cjs/components/context-menu/ContextMenu.styles.js +38 -0
  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 +27 -1
  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 +3 -8
  44. package/lib/cjs/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  45. package/lib/cjs/components/file-input/FileInput.js +4 -2
  46. package/lib/cjs/components/file-input/FileInput.js.map +1 -1
  47. package/lib/cjs/components/file-list/file-item/FileItem.js +48 -25
  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 +25 -1
  50. package/lib/cjs/components/file-list/file-item/FileItem.styles.js.map +1 -1
  51. package/lib/cjs/components/file-select/FileSelect.js +27 -4
  52. package/lib/cjs/components/file-select/FileSelect.js.map +1 -1
  53. package/lib/cjs/components/file-select/FileSelect.styles.js +10 -0
  54. package/lib/cjs/components/file-select/FileSelect.styles.js.map +1 -1
  55. package/lib/cjs/components/filter/Filter.js +51 -16
  56. package/lib/cjs/components/filter/Filter.js.map +1 -1
  57. package/lib/cjs/components/filter/Filter.styles.js +9 -0
  58. package/lib/cjs/components/filter/Filter.styles.js.map +1 -1
  59. package/lib/cjs/components/filter/filter-content/FilterContent.js +14 -5
  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 +69 -4
  63. package/lib/cjs/components/filter-buttons/FilterButtons.js.map +1 -1
  64. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.js +40 -2
  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 +11 -0
  67. package/lib/cjs/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  68. package/lib/cjs/components/grid-image/GridImage.js +20 -2
  69. package/lib/cjs/components/grid-image/GridImage.js.map +1 -1
  70. package/lib/cjs/components/grid-image/GridImage.styles.js +11 -2
  71. package/lib/cjs/components/grid-image/GridImage.styles.js.map +1 -1
  72. package/lib/cjs/components/grouped-image/GroupedImage.js +23 -4
  73. package/lib/cjs/components/grouped-image/GroupedImage.js.map +1 -1
  74. package/lib/cjs/components/grouped-image/GroupedImage.styles.js +9 -0
  75. package/lib/cjs/components/grouped-image/GroupedImage.styles.js.map +1 -1
  76. package/lib/cjs/components/highlight-slider/HighlightSlider.js +13 -3
  77. package/lib/cjs/components/highlight-slider/HighlightSlider.js.map +1 -1
  78. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +21 -4
  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 +11 -2
  81. package/lib/cjs/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  82. package/lib/cjs/components/icon/Icon.js +24 -5
  83. package/lib/cjs/components/icon/Icon.js.map +1 -1
  84. package/lib/cjs/components/icon/Icon.styles.js +23 -0
  85. package/lib/cjs/components/icon/Icon.styles.js.map +1 -1
  86. package/lib/cjs/components/input/Input.js +29 -8
  87. package/lib/cjs/components/input/Input.js.map +1 -1
  88. package/lib/cjs/components/input/Input.styles.js +38 -3
  89. package/lib/cjs/components/input/Input.styles.js.map +1 -1
  90. package/lib/cjs/components/list/List.js +124 -37
  91. package/lib/cjs/components/list/List.js.map +1 -1
  92. package/lib/cjs/components/list/List.utils.js +213 -1
  93. package/lib/cjs/components/list/List.utils.js.map +1 -1
  94. package/lib/cjs/components/list/list-item/ListItem.js +84 -3
  95. package/lib/cjs/components/list/list-item/ListItem.js.map +1 -1
  96. package/lib/cjs/components/list/list-item/ListItem.styles.js +7 -0
  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 +5 -1
  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 +5 -1
  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 +1 -0
  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 +3 -0
  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 +1 -0
  107. package/lib/cjs/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  108. package/lib/cjs/components/list/list-item/useListItemFocus.js +47 -0
  109. package/lib/cjs/components/list/list-item/useListItemFocus.js.map +1 -0
  110. package/lib/cjs/components/mention-finder/MentionFinder.js +43 -5
  111. package/lib/cjs/components/mention-finder/MentionFinder.js.map +1 -1
  112. package/lib/cjs/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  113. package/lib/cjs/components/multi-action-button/MultiActionButton.js +36 -3
  114. package/lib/cjs/components/multi-action-button/MultiActionButton.js.map +1 -1
  115. package/lib/cjs/components/multi-action-button/MultiActionButton.styles.js +6 -0
  116. package/lib/cjs/components/multi-action-button/MultiActionButton.styles.js.map +1 -1
  117. package/lib/cjs/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  118. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js +7 -1
  119. package/lib/cjs/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  120. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
  121. package/lib/cjs/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  122. package/lib/cjs/components/number-input/NumberInput.js +13 -10
  123. package/lib/cjs/components/number-input/NumberInput.js.map +1 -1
  124. package/lib/cjs/components/page-provider/PageProvider.js +4 -2
  125. package/lib/cjs/components/page-provider/PageProvider.js.map +1 -1
  126. package/lib/cjs/components/popup/Popup.js +8 -1
  127. package/lib/cjs/components/popup/Popup.js.map +1 -1
  128. package/lib/cjs/components/radio-button/RadioButton.js +29 -15
  129. package/lib/cjs/components/radio-button/RadioButton.js.map +1 -1
  130. package/lib/cjs/components/radio-button/RadioButton.styles.js +19 -8
  131. package/lib/cjs/components/radio-button/RadioButton.styles.js.map +1 -1
  132. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
  133. package/lib/cjs/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  134. package/lib/cjs/components/search-box/SearchBox.js +21 -6
  135. package/lib/cjs/components/search-box/SearchBox.js.map +1 -1
  136. package/lib/cjs/components/search-input/SearchInput.js +56 -43
  137. package/lib/cjs/components/search-input/SearchInput.js.map +1 -1
  138. package/lib/cjs/components/search-input/SearchInput.styles.js +26 -2
  139. package/lib/cjs/components/search-input/SearchInput.styles.js.map +1 -1
  140. package/lib/cjs/components/select-button/SelectButton.js +4 -2
  141. package/lib/cjs/components/select-button/SelectButton.js.map +1 -1
  142. package/lib/cjs/components/setup-wizard/SetupWizard.js +10 -4
  143. package/lib/cjs/components/setup-wizard/SetupWizard.js.map +1 -1
  144. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
  145. package/lib/cjs/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  146. package/lib/cjs/components/sharing-bar/SharingBar.js +31 -6
  147. package/lib/cjs/components/sharing-bar/SharingBar.js.map +1 -1
  148. package/lib/cjs/components/sharing-bar/SharingBar.styles.js +5 -0
  149. package/lib/cjs/components/sharing-bar/SharingBar.styles.js.map +1 -1
  150. package/lib/cjs/components/sharing-button/SharingButton.js +4 -2
  151. package/lib/cjs/components/sharing-button/SharingButton.js.map +1 -1
  152. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js +3 -1
  153. package/lib/cjs/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  154. package/lib/cjs/components/signature/Signature.js +6 -3
  155. package/lib/cjs/components/signature/Signature.js.map +1 -1
  156. package/lib/cjs/components/slider/Slider.js +30 -7
  157. package/lib/cjs/components/slider/Slider.js.map +1 -1
  158. package/lib/cjs/components/slider/Slider.styles.js +9 -2
  159. package/lib/cjs/components/slider/Slider.styles.js.map +1 -1
  160. package/lib/cjs/components/slider-button/SliderButton.js +63 -6
  161. package/lib/cjs/components/slider-button/SliderButton.js.map +1 -1
  162. package/lib/cjs/components/slider-button/SliderButton.styles.js +15 -2
  163. package/lib/cjs/components/slider-button/SliderButton.styles.js.map +1 -1
  164. package/lib/cjs/components/slider-button/SliderButton.types.js +6 -0
  165. package/lib/cjs/components/slider-button/SliderButton.types.js.map +1 -0
  166. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js +66 -0
  167. package/lib/cjs/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
  168. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js +47 -0
  169. package/lib/cjs/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
  170. package/lib/cjs/components/tag-input/TagInput.js +92 -36
  171. package/lib/cjs/components/tag-input/TagInput.js.map +1 -1
  172. package/lib/cjs/components/tag-input/TagInput.styles.js +29 -3
  173. package/lib/cjs/components/tag-input/TagInput.styles.js.map +1 -1
  174. package/lib/cjs/components/text-area/TextArea.js +17 -8
  175. package/lib/cjs/components/text-area/TextArea.js.map +1 -1
  176. package/lib/cjs/components/text-area/TextArea.styles.js +15 -1
  177. package/lib/cjs/components/text-area/TextArea.styles.js.map +1 -1
  178. package/lib/cjs/components/truncation/Truncation.js +17 -3
  179. package/lib/cjs/components/truncation/Truncation.js.map +1 -1
  180. package/lib/cjs/components/truncation/Truncation.styles.js +18 -1
  181. package/lib/cjs/components/truncation/Truncation.styles.js.map +1 -1
  182. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js +68 -0
  183. package/lib/cjs/hooks/useKeyboardFocusHighlighting.js.map +1 -0
  184. package/lib/cjs/utils/file.js.map +1 -1
  185. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js +29 -0
  186. package/lib/cjs/utils/keyboardFocusHighlighting.styles.js.map +1 -0
  187. package/lib/esm/components/accordion/Accordion.js +105 -12
  188. package/lib/esm/components/accordion/Accordion.js.map +1 -1
  189. package/lib/esm/components/accordion/Accordion.styles.js +23 -3
  190. package/lib/esm/components/accordion/Accordion.styles.js.map +1 -1
  191. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js +3 -1
  192. package/lib/esm/components/accordion/accordion-body/AccordionBody.styles.js.map +1 -1
  193. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js +33 -19
  194. package/lib/esm/components/accordion/accordion-group/AccordionGroup.js.map +1 -1
  195. package/lib/esm/components/accordion/accordion-head/AccordionHead.js +6 -3
  196. package/lib/esm/components/accordion/accordion-head/AccordionHead.js.map +1 -1
  197. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js +14 -0
  198. package/lib/esm/components/accordion/accordion-head/AccordionHead.styles.js.map +1 -1
  199. package/lib/esm/components/amount-control/AmountControl.js +30 -16
  200. package/lib/esm/components/amount-control/AmountControl.js.map +1 -1
  201. package/lib/esm/components/amount-control/AmountControl.styles.js +18 -2
  202. package/lib/esm/components/amount-control/AmountControl.styles.js.map +1 -1
  203. package/lib/esm/components/button/Button.js +5 -1
  204. package/lib/esm/components/button/Button.js.map +1 -1
  205. package/lib/esm/components/button/Button.styles.js +10 -0
  206. package/lib/esm/components/button/Button.styles.js.map +1 -1
  207. package/lib/esm/components/button/Button.types.js.map +1 -1
  208. package/lib/esm/components/checkbox/Checkbox.js +5 -1
  209. package/lib/esm/components/checkbox/Checkbox.js.map +1 -1
  210. package/lib/esm/components/checkbox/Checkbox.styles.js +29 -2
  211. package/lib/esm/components/checkbox/Checkbox.styles.js.map +1 -1
  212. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js +7 -2
  213. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.js.map +1 -1
  214. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js +8 -2
  215. package/lib/esm/components/color-scheme-provider/ColorSchemeProvider.styles.js.map +1 -1
  216. package/lib/esm/components/combobox/ComboBox.js +61 -7
  217. package/lib/esm/components/combobox/ComboBox.js.map +1 -1
  218. package/lib/esm/components/combobox/ComboBox.styles.js +11 -0
  219. package/lib/esm/components/combobox/ComboBox.styles.js.map +1 -1
  220. package/lib/esm/components/combobox/ComboBox.types.js.map +1 -1
  221. package/lib/esm/components/context-menu/ContextMenu.js +145 -42
  222. package/lib/esm/components/context-menu/ContextMenu.js.map +1 -1
  223. package/lib/esm/components/context-menu/ContextMenu.styles.js +38 -0
  224. package/lib/esm/components/context-menu/ContextMenu.styles.js.map +1 -1
  225. package/lib/esm/components/context-menu/ContextMenu.types.js.map +1 -1
  226. package/lib/esm/components/context-menu/ContextMenu.utils.js +24 -0
  227. package/lib/esm/components/context-menu/ContextMenu.utils.js.map +1 -1
  228. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js +3 -8
  229. package/lib/esm/components/context-menu/context-menu-content/ContextMenuContent.js.map +1 -1
  230. package/lib/esm/components/file-input/FileInput.js +4 -2
  231. package/lib/esm/components/file-input/FileInput.js.map +1 -1
  232. package/lib/esm/components/file-list/file-item/FileItem.js +49 -26
  233. package/lib/esm/components/file-list/file-item/FileItem.js.map +1 -1
  234. package/lib/esm/components/file-list/file-item/FileItem.styles.js +24 -0
  235. package/lib/esm/components/file-list/file-item/FileItem.styles.js.map +1 -1
  236. package/lib/esm/components/file-select/FileSelect.js +27 -4
  237. package/lib/esm/components/file-select/FileSelect.js.map +1 -1
  238. package/lib/esm/components/file-select/FileSelect.styles.js +10 -0
  239. package/lib/esm/components/file-select/FileSelect.styles.js.map +1 -1
  240. package/lib/esm/components/filter/Filter.js +52 -16
  241. package/lib/esm/components/filter/Filter.js.map +1 -1
  242. package/lib/esm/components/filter/Filter.styles.js +9 -0
  243. package/lib/esm/components/filter/Filter.styles.js.map +1 -1
  244. package/lib/esm/components/filter/filter-content/FilterContent.js +15 -5
  245. package/lib/esm/components/filter/filter-content/FilterContent.js.map +1 -1
  246. package/lib/esm/components/filter/filter-content/FilterContent.types.js.map +1 -1
  247. package/lib/esm/components/filter-buttons/FilterButtons.js +69 -5
  248. package/lib/esm/components/filter-buttons/FilterButtons.js.map +1 -1
  249. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js +40 -2
  250. package/lib/esm/components/filter-buttons/filter-button/FilterButton.js.map +1 -1
  251. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js +11 -0
  252. package/lib/esm/components/filter-buttons/filter-button/FilterButton.styles.js.map +1 -1
  253. package/lib/esm/components/grid-image/GridImage.js +20 -2
  254. package/lib/esm/components/grid-image/GridImage.js.map +1 -1
  255. package/lib/esm/components/grid-image/GridImage.styles.js +10 -1
  256. package/lib/esm/components/grid-image/GridImage.styles.js.map +1 -1
  257. package/lib/esm/components/grouped-image/GroupedImage.js +22 -4
  258. package/lib/esm/components/grouped-image/GroupedImage.js.map +1 -1
  259. package/lib/esm/components/grouped-image/GroupedImage.styles.js +9 -0
  260. package/lib/esm/components/grouped-image/GroupedImage.styles.js.map +1 -1
  261. package/lib/esm/components/highlight-slider/HighlightSlider.js +13 -3
  262. package/lib/esm/components/highlight-slider/HighlightSlider.js.map +1 -1
  263. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js +20 -3
  264. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.js.map +1 -1
  265. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js +10 -1
  266. package/lib/esm/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.js.map +1 -1
  267. package/lib/esm/components/icon/Icon.js +26 -7
  268. package/lib/esm/components/icon/Icon.js.map +1 -1
  269. package/lib/esm/components/icon/Icon.styles.js +23 -0
  270. package/lib/esm/components/icon/Icon.styles.js.map +1 -1
  271. package/lib/esm/components/input/Input.js +24 -4
  272. package/lib/esm/components/input/Input.js.map +1 -1
  273. package/lib/esm/components/input/Input.styles.js +38 -3
  274. package/lib/esm/components/input/Input.styles.js.map +1 -1
  275. package/lib/esm/components/list/List.js +123 -37
  276. package/lib/esm/components/list/List.js.map +1 -1
  277. package/lib/esm/components/list/List.utils.js +202 -0
  278. package/lib/esm/components/list/List.utils.js.map +1 -1
  279. package/lib/esm/components/list/list-item/ListItem.js +85 -4
  280. package/lib/esm/components/list/list-item/ListItem.js.map +1 -1
  281. package/lib/esm/components/list/list-item/ListItem.styles.js +7 -0
  282. package/lib/esm/components/list/list-item/ListItem.styles.js.map +1 -1
  283. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js +6 -2
  284. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.js.map +1 -1
  285. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js +4 -0
  286. package/lib/esm/components/list/list-item/list-item-head/ListItemHead.styles.js.map +1 -1
  287. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js +1 -0
  288. package/lib/esm/components/list/list-item/list-item-head/list-item-right-element/ListItemRightElement.js.map +1 -1
  289. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js +4 -1
  290. package/lib/esm/components/list/list-item/list-item-head/list-item-subtitle/ListItemSubtitle.js.map +1 -1
  291. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js +1 -0
  292. package/lib/esm/components/list/list-item/list-item-head/list-item-title/ListItemTitle.js.map +1 -1
  293. package/lib/esm/components/list/list-item/useListItemFocus.js +40 -0
  294. package/lib/esm/components/list/list-item/useListItemFocus.js.map +1 -0
  295. package/lib/esm/components/mention-finder/MentionFinder.js +39 -3
  296. package/lib/esm/components/mention-finder/MentionFinder.js.map +1 -1
  297. package/lib/esm/components/mention-finder/mention-finder-item/MentionFinderItem.styles.js.map +1 -1
  298. package/lib/esm/components/multi-action-button/MultiActionButton.js +36 -3
  299. package/lib/esm/components/multi-action-button/MultiActionButton.js.map +1 -1
  300. package/lib/esm/components/multi-action-button/MultiActionButton.styles.js +6 -0
  301. package/lib/esm/components/multi-action-button/MultiActionButton.styles.js.map +1 -1
  302. package/lib/esm/components/multi-action-button/MultiActionButton.types.js.map +1 -1
  303. package/lib/esm/components/multi-action-button/action-button/ActionButton.js +7 -1
  304. package/lib/esm/components/multi-action-button/action-button/ActionButton.js.map +1 -1
  305. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js +12 -0
  306. package/lib/esm/components/multi-action-button/action-button/ActionButton.styles.js.map +1 -1
  307. package/lib/esm/components/number-input/NumberInput.js +13 -10
  308. package/lib/esm/components/number-input/NumberInput.js.map +1 -1
  309. package/lib/esm/components/page-provider/PageProvider.js +4 -2
  310. package/lib/esm/components/page-provider/PageProvider.js.map +1 -1
  311. package/lib/esm/components/popup/Popup.js +8 -1
  312. package/lib/esm/components/popup/Popup.js.map +1 -1
  313. package/lib/esm/components/radio-button/RadioButton.js +29 -15
  314. package/lib/esm/components/radio-button/RadioButton.js.map +1 -1
  315. package/lib/esm/components/radio-button/RadioButton.styles.js +19 -8
  316. package/lib/esm/components/radio-button/RadioButton.styles.js.map +1 -1
  317. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js +7 -4
  318. package/lib/esm/components/radio-button/radio-button-group/RadioButtonGroup.js.map +1 -1
  319. package/lib/esm/components/search-box/SearchBox.js +18 -4
  320. package/lib/esm/components/search-box/SearchBox.js.map +1 -1
  321. package/lib/esm/components/search-input/SearchInput.js +56 -44
  322. package/lib/esm/components/search-input/SearchInput.js.map +1 -1
  323. package/lib/esm/components/search-input/SearchInput.styles.js +25 -1
  324. package/lib/esm/components/search-input/SearchInput.styles.js.map +1 -1
  325. package/lib/esm/components/select-button/SelectButton.js +4 -2
  326. package/lib/esm/components/select-button/SelectButton.js.map +1 -1
  327. package/lib/esm/components/setup-wizard/SetupWizard.js +10 -4
  328. package/lib/esm/components/setup-wizard/SetupWizard.js.map +1 -1
  329. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js +5 -3
  330. package/lib/esm/components/setup-wizard/setup-wizard-item/SetupWizardItem.js.map +1 -1
  331. package/lib/esm/components/sharing-bar/SharingBar.js +30 -5
  332. package/lib/esm/components/sharing-bar/SharingBar.js.map +1 -1
  333. package/lib/esm/components/sharing-bar/SharingBar.styles.js +5 -0
  334. package/lib/esm/components/sharing-bar/SharingBar.styles.js.map +1 -1
  335. package/lib/esm/components/sharing-button/SharingButton.js +4 -2
  336. package/lib/esm/components/sharing-button/SharingButton.js.map +1 -1
  337. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js +3 -1
  338. package/lib/esm/components/sharing-context-menu/SharingContextMenu.js.map +1 -1
  339. package/lib/esm/components/signature/Signature.js +6 -3
  340. package/lib/esm/components/signature/Signature.js.map +1 -1
  341. package/lib/esm/components/slider/Slider.js +30 -7
  342. package/lib/esm/components/slider/Slider.js.map +1 -1
  343. package/lib/esm/components/slider/Slider.styles.js +8 -1
  344. package/lib/esm/components/slider/Slider.styles.js.map +1 -1
  345. package/lib/esm/components/slider-button/SliderButton.js +62 -6
  346. package/lib/esm/components/slider-button/SliderButton.js.map +1 -1
  347. package/lib/esm/components/slider-button/SliderButton.styles.js +14 -1
  348. package/lib/esm/components/slider-button/SliderButton.styles.js.map +1 -1
  349. package/lib/esm/components/slider-button/SliderButton.types.js +2 -0
  350. package/lib/esm/components/slider-button/SliderButton.types.js.map +1 -0
  351. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js +56 -0
  352. package/lib/esm/components/slider-button/useSliderButtonPopupKeyboard.js.map +1 -0
  353. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js +38 -0
  354. package/lib/esm/components/slider-button/useSliderButtonThumbKeyboard.js.map +1 -0
  355. package/lib/esm/components/tag-input/TagInput.js +86 -35
  356. package/lib/esm/components/tag-input/TagInput.js.map +1 -1
  357. package/lib/esm/components/tag-input/TagInput.styles.js +27 -1
  358. package/lib/esm/components/tag-input/TagInput.styles.js.map +1 -1
  359. package/lib/esm/components/text-area/TextArea.js +18 -9
  360. package/lib/esm/components/text-area/TextArea.js.map +1 -1
  361. package/lib/esm/components/text-area/TextArea.styles.js +14 -0
  362. package/lib/esm/components/text-area/TextArea.styles.js.map +1 -1
  363. package/lib/esm/components/truncation/Truncation.js +18 -4
  364. package/lib/esm/components/truncation/Truncation.js.map +1 -1
  365. package/lib/esm/components/truncation/Truncation.styles.js +17 -0
  366. package/lib/esm/components/truncation/Truncation.styles.js.map +1 -1
  367. package/lib/esm/hooks/useKeyboardFocusHighlighting.js +61 -0
  368. package/lib/esm/hooks/useKeyboardFocusHighlighting.js.map +1 -0
  369. package/lib/esm/utils/file.js.map +1 -1
  370. package/lib/esm/utils/keyboardFocusHighlighting.styles.js +24 -0
  371. package/lib/esm/utils/keyboardFocusHighlighting.styles.js.map +1 -0
  372. package/lib/types/components/accordion/Accordion.d.ts +5 -0
  373. package/lib/types/components/accordion/Accordion.styles.d.ts +8 -4
  374. package/lib/types/components/accordion/accordion-body/AccordionBody.styles.d.ts +2 -2
  375. package/lib/types/components/accordion/accordion-group/AccordionGroup.d.ts +7 -2
  376. package/lib/types/components/accordion/accordion-head/AccordionHead.d.ts +1 -0
  377. package/lib/types/components/accordion/accordion-head/AccordionHead.styles.d.ts +18 -18
  378. package/lib/types/components/amount-control/AmountControl.d.ts +5 -0
  379. package/lib/types/components/amount-control/AmountControl.styles.d.ts +8 -4
  380. package/lib/types/components/button/Button.styles.d.ts +8 -6
  381. package/lib/types/components/button/Button.types.d.ts +8 -0
  382. package/lib/types/components/checkbox/Checkbox.d.ts +4 -0
  383. package/lib/types/components/checkbox/Checkbox.styles.d.ts +5 -1
  384. package/lib/types/components/color-scheme-provider/ColorSchemeProvider.d.ts +5 -0
  385. package/lib/types/components/combobox/ComboBox.styles.d.ts +4 -2
  386. package/lib/types/components/combobox/ComboBox.types.d.ts +5 -0
  387. package/lib/types/components/context-menu/ContextMenu.styles.d.ts +4 -2
  388. package/lib/types/components/context-menu/ContextMenu.types.d.ts +6 -0
  389. package/lib/types/components/context-menu/ContextMenu.utils.d.ts +10 -0
  390. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.d.ts +1 -1
  391. package/lib/types/components/context-menu/context-menu-content/ContextMenuContent.styles.d.ts +2 -2
  392. package/lib/types/components/dropdown-body-wrapper/delayed-dropdown-content/DelayedDropdownContent.styles.d.ts +2 -2
  393. package/lib/types/components/expandable-content/ExpandableContent.styles.d.ts +2 -2
  394. package/lib/types/components/file-input/FileInput.d.ts +4 -0
  395. package/lib/types/components/file-input/FileInput.styles.d.ts +2 -2
  396. package/lib/types/components/file-list/file-item/FileItem.styles.d.ts +3 -0
  397. package/lib/types/components/file-select/FileSelect.d.ts +4 -0
  398. package/lib/types/components/file-select/FileSelect.styles.d.ts +6 -4
  399. package/lib/types/components/filter/Filter.d.ts +1 -0
  400. package/lib/types/components/filter/Filter.styles.d.ts +6 -4
  401. package/lib/types/components/filter/filter-content/FilterContent.types.d.ts +4 -0
  402. package/lib/types/components/filter-buttons/FilterButtons.d.ts +4 -0
  403. package/lib/types/components/filter-buttons/filter-button/FilterButton.d.ts +5 -0
  404. package/lib/types/components/filter-buttons/filter-button/FilterButton.styles.d.ts +12 -8
  405. package/lib/types/components/grid-image/GridImage.d.ts +4 -0
  406. package/lib/types/components/grid-image/GridImage.styles.d.ts +4 -2
  407. package/lib/types/components/grouped-image/GroupedImage.d.ts +4 -0
  408. package/lib/types/components/grouped-image/GroupedImage.styles.d.ts +8 -6
  409. package/lib/types/components/highlight-slider/HighlightSlider.d.ts +4 -0
  410. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.d.ts +3 -0
  411. package/lib/types/components/highlight-slider/highlight-slider-item/HighlightSliderItem.styles.d.ts +9 -5
  412. package/lib/types/components/icon/Icon.d.ts +4 -0
  413. package/lib/types/components/icon/Icon.styles.d.ts +1 -0
  414. package/lib/types/components/input/Input.d.ts +4 -0
  415. package/lib/types/components/input/Input.styles.d.ts +17 -9
  416. package/lib/types/components/list/List.d.ts +11 -0
  417. package/lib/types/components/list/List.utils.d.ts +32 -1
  418. package/lib/types/components/list/list-item/ListItem.d.ts +4 -0
  419. package/lib/types/components/list/list-item/ListItem.styles.d.ts +64 -64
  420. package/lib/types/components/list/list-item/list-item-body/ListItemBody.styles.d.ts +2 -2
  421. package/lib/types/components/list/list-item/list-item-head/ListItemHead.styles.d.ts +195 -194
  422. package/lib/types/components/list/list-item/useListItemFocus.d.ts +13 -0
  423. package/lib/types/components/masonry/masonry-item/MasonryItem.styles.d.ts +2 -2
  424. package/lib/types/components/mention-finder/MentionFinder.styles.d.ts +4 -4
  425. package/lib/types/components/multi-action-button/MultiActionButton.styles.d.ts +2 -2
  426. package/lib/types/components/multi-action-button/MultiActionButton.types.d.ts +7 -0
  427. package/lib/types/components/multi-action-button/action-button/ActionButton.d.ts +4 -1
  428. package/lib/types/components/multi-action-button/action-button/ActionButton.styles.d.ts +4 -2
  429. package/lib/types/components/number-input/NumberInput.d.ts +4 -0
  430. package/lib/types/components/popup/popup-content-wrapper/PopupContentWrapper.styles.d.ts +2 -2
  431. package/lib/types/components/progress-bar/ProgressBar.styles.d.ts +6 -6
  432. package/lib/types/components/radio-button/RadioButton.d.ts +4 -0
  433. package/lib/types/components/radio-button/RadioButton.styles.d.ts +15 -9
  434. package/lib/types/components/radio-button/radio-button-group/RadioButtonGroup.d.ts +5 -0
  435. package/lib/types/components/search-box/SearchBox.d.ts +4 -0
  436. package/lib/types/components/search-box/SearchBox.styles.d.ts +2 -2
  437. package/lib/types/components/search-input/SearchInput.d.ts +4 -0
  438. package/lib/types/components/search-input/SearchInput.styles.d.ts +17 -9
  439. package/lib/types/components/select-button/SelectButton.d.ts +4 -0
  440. package/lib/types/components/setup-wizard/SetupWizard.d.ts +5 -0
  441. package/lib/types/components/sharing-bar/SharingBar.d.ts +4 -0
  442. package/lib/types/components/sharing-button/SharingButton.d.ts +1 -1
  443. package/lib/types/components/sharing-context-menu/SharingContextMenu.d.ts +10 -2
  444. package/lib/types/components/signature/Signature.d.ts +4 -0
  445. package/lib/types/components/skeleton/base-skeleton/BaseSkeleton.styles.d.ts +4 -4
  446. package/lib/types/components/slider/Slider.d.ts +8 -0
  447. package/lib/types/components/slider/Slider.styles.d.ts +18 -14
  448. package/lib/types/components/slider-button/SliderButton.d.ts +1 -28
  449. package/lib/types/components/slider-button/SliderButton.styles.d.ts +6 -4
  450. package/lib/types/components/slider-button/SliderButton.types.d.ts +32 -0
  451. package/lib/types/components/slider-button/useSliderButtonPopupKeyboard.d.ts +17 -0
  452. package/lib/types/components/slider-button/useSliderButtonThumbKeyboard.d.ts +13 -0
  453. package/lib/types/components/tag-input/TagInput.d.ts +4 -0
  454. package/lib/types/components/tag-input/TagInput.styles.d.ts +12 -2
  455. package/lib/types/components/text-area/TextArea.d.ts +4 -0
  456. package/lib/types/components/text-area/TextArea.styles.d.ts +1 -0
  457. package/lib/types/components/truncation/Truncation.d.ts +4 -0
  458. package/lib/types/components/truncation/Truncation.styles.d.ts +7 -2
  459. package/lib/types/hooks/useKeyboardFocusHighlighting.d.ts +5 -0
  460. package/lib/types/utils/file.d.ts +1 -1
  461. package/lib/types/utils/keyboardFocusHighlighting.styles.d.ts +9 -0
  462. package/package.json +3 -3
@@ -5,6 +5,13 @@ import { MentionFinderPopupAlignment } from '../../constants/mentionFinder';
5
5
  import MentionFinderItem from './mention-finder-item/MentionFinderItem';
6
6
  import { StyledMentionFinder, StyledMentionFinderDragHandle, StyledMentionFinderDragHandleInner, StyledMentionFinderItemList, StyledMentionFinderOverlay, StyledMotionMentionFinderPopup } from './MentionFinder.styles';
7
7
  const DRAG_CLOSE_THRESHOLD_IN_PX = 60;
8
+ const isTextInputElement = element => {
9
+ if (!element) {
10
+ return false;
11
+ }
12
+ const tagName = element.tagName.toLowerCase();
13
+ return tagName === 'input' && element.type !== 'button' || tagName === 'textarea' || element.isContentEditable;
14
+ };
8
15
  const findTouchByIdentifier = (touchList, identifier) => {
9
16
  if (identifier === null) {
10
17
  return null;
@@ -31,6 +38,7 @@ const MentionFinder = ({
31
38
  const [shouldShowPopup, setShouldShowPopup] = useState(true);
32
39
  const popupRef = useRef(null);
33
40
  const listRef = useRef(null);
41
+ const inputElementRef = useRef(null);
34
42
  const dragStartYRef = useRef(null);
35
43
  const hasTriggeredDragCloseRef = useRef(false);
36
44
  const activePointerIdRef = useRef(null);
@@ -49,7 +57,19 @@ const MentionFinder = ({
49
57
  info,
50
58
  name
51
59
  }) => id.toLowerCase().includes(searchString) || info?.replace('chayns', '').toLowerCase().includes(searchString) || name.toLowerCase().includes(searchString)) : members, [members, searchString]);
60
+ const shouldRenderPopup = shouldShowPopup && !!fullMatch && filteredMembers.length > 0;
61
+ const handleContainerBlur = useCallback(event => {
62
+ const nextFocusedElement = event.relatedTarget;
63
+ const currentContainer = event.currentTarget;
64
+ if (!nextFocusedElement || !currentContainer.contains(nextFocusedElement) && !popupRef.current?.contains(nextFocusedElement)) {
65
+ setShouldShowPopup(false);
66
+ }
67
+ }, []);
52
68
  const handleKeyDown = useCallback(event => {
69
+ const targetElement = event.target;
70
+ if (isTextInputElement(targetElement)) {
71
+ inputElementRef.current = targetElement;
72
+ }
53
73
  if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {
54
74
  event.preventDefault();
55
75
  const children = listRef.current?.children;
@@ -75,8 +95,15 @@ const MentionFinder = ({
75
95
  member: activeMember
76
96
  });
77
97
  }
98
+ } else if (event.key === 'Escape' && shouldRenderPopup) {
99
+ event.preventDefault();
100
+ event.stopPropagation();
101
+ setShouldShowPopup(false);
102
+ window.requestAnimationFrame(() => {
103
+ inputElementRef.current?.focus();
104
+ });
78
105
  }
79
- }, [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect]);
106
+ }, [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect, shouldRenderPopup]);
80
107
  const handleMemberClick = useCallback(member => {
81
108
  if (fullMatch) {
82
109
  onSelect({
@@ -111,6 +138,15 @@ const MentionFinder = ({
111
138
  hasTriggeredDragCloseRef.current = false;
112
139
  setShouldShowPopup(true);
113
140
  }, [inputValue]);
141
+ useEffect(() => {
142
+ if (!shouldRenderPopup) {
143
+ return;
144
+ }
145
+ const activeElement = document.activeElement;
146
+ if (isTextInputElement(activeElement)) {
147
+ inputElementRef.current = activeElement;
148
+ }
149
+ }, [shouldRenderPopup]);
114
150
  useEffect(() => {
115
151
  if (shouldShowPopup) {
116
152
  window.addEventListener('keydown', handleKeyDown, true);
@@ -281,7 +317,6 @@ const MentionFinder = ({
281
317
  onTouchCancel: handleDragTouchCancel
282
318
  }));
283
319
  }, [enableDragHandle, popupAlignment, dragOffset, dragProgress, isDraggingHandle, handleDragPointerDown, handleDragPointerMove, handleDragPointerUp, handleDragPointerCancel, handleDragTouchStart, handleDragTouchMove, handleDragTouchEnd, handleDragTouchCancel]);
284
- const shouldRenderPopup = shouldShowPopup && fullMatch && items.length > 0;
285
320
  useEffect(() => {
286
321
  if (!enableDragHandle || !shouldRenderPopup) {
287
322
  setOverlayContainer(null);
@@ -312,7 +347,8 @@ const MentionFinder = ({
312
347
  onClick: handleOverlayClick
313
348
  })), overlayContainer) : null;
314
349
  return /*#__PURE__*/React.createElement(React.Fragment, null, overlayPortal, /*#__PURE__*/React.createElement(StyledMentionFinder, {
315
- className: "beta-chayns-mention-finder"
350
+ className: "beta-chayns-mention-finder",
351
+ onBlur: handleContainerBlur
316
352
  }, /*#__PURE__*/React.createElement(AnimatePresence, {
317
353
  initial: false
318
354
  }, shouldRenderPopup && /*#__PURE__*/React.createElement(StyledMotionMentionFinderPopup, {
@@ -1 +1 @@
1
- {"version":3,"file":"MentionFinder.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","MentionFinderPopupAlignment","MentionFinderItem","StyledMentionFinder","StyledMentionFinderDragHandle","StyledMentionFinderDragHandleInner","StyledMentionFinderItemList","StyledMentionFinderOverlay","StyledMotionMentionFinderPopup","DRAG_CLOSE_THRESHOLD_IN_PX","findTouchByIdentifier","touchList","identifier","i","length","touch","item","MentionFinder","inputValue","members","onSelect","popupAlignment","enableDragHandle","dragCloseThresholdInPx","overlayContainerSelector","activeMember","setActiveMember","focusedIndex","setFocusedIndex","shouldShowPopup","setShouldShowPopup","popupRef","listRef","dragStartYRef","hasTriggeredDragCloseRef","activePointerIdRef","activeTouchIdRef","isDraggingHandle","setIsDraggingHandle","dragOffset","setDragOffset","dragProgress","setDragProgress","overlayContainer","setOverlayContainer","fullMatch","searchString","regExpMatchArray","match","toLowerCase","filteredMembers","filter","id","info","name","includes","replace","handleKeyDown","event","key","shouldRenderPopup","preventDefault","children","current","newIndex","prevElement","tabIndex","member","newElement","focus","stopPropagation","handleMemberClick","handleMemberHover","isActiveMemberShown","some","items","map","createElement","isActive","onClick","onHover","window","addEventListener","removeEventListener","closePopupViaDrag","handleOverlayClick","updateDragByClientY","clientY","closingDirectionMultiplier","Bottom","rawDelta","normalizedDelta","positiveDelta","Math","max","limitedDelta","min","handleDragPointerDown","pointerType","button","pointerId","currentTarget","setPointerCapture","handleDragPointerMove","hasClosed","releasePointerCapture","resetDragState","shouldClose","handleDragPointerUp","handleDragPointerCancel","handleDragTouchStart","touches","handleDragTouchMove","changedTouches","handleDragTouchEnd","handleDragTouchCancel","dragHandle","$alignment","$dragOffset","$dragProgress","$isDragging","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","container","closest","document","body","overlayPortal","initial","animate","opacity","exit","Fragment","className","ref","height","y","$popupAlignment","transition","duration","Top","displayName"],"sources":["../../../../src/components/mention-finder/MentionFinder.tsx"],"sourcesContent":["import { AnimatePresence } from 'motion/react';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n PointerEvent,\n TouchList,\n TouchEvent,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { MentionFinderPopupAlignment } from '../../constants/mentionFinder';\nimport MentionFinderItem from './mention-finder-item/MentionFinderItem';\nimport {\n StyledMentionFinder,\n StyledMentionFinderDragHandle,\n StyledMentionFinderDragHandleInner,\n StyledMentionFinderItemList,\n StyledMentionFinderOverlay,\n StyledMotionMentionFinderPopup,\n} from './MentionFinder.styles';\n\nexport type MentionMember = {\n id: string;\n info?: string;\n imageUrl: string;\n name: string;\n shouldShowRoundImage?: boolean;\n};\n\nexport type MentionFinderProps = {\n /**\n * The text from the input field\n */\n inputValue: string;\n /**\n * Members that can be selected\n */\n members: MentionMember[];\n /**\n * Function to be executed when a member is selected\n */\n onSelect: ({ fullMatch, member }: { fullMatch: string; member: MentionMember }) => void;\n /**\n * Alignment of the popup\n */\n popupAlignment: MentionFinderPopupAlignment;\n /**\n * Enables the optional drag handle inside the popup\n */\n enableDragHandle?: boolean;\n /**\n * Threshold in pixels to drag to close the popup\n */\n dragCloseThresholdInPx?: number;\n /**\n * Selector for the container to render the overlay into (defaults to closest dialog, thread, page provider or tapp)\n */\n overlayContainerSelector?: string;\n};\n\nconst DRAG_CLOSE_THRESHOLD_IN_PX = 60;\n\nconst findTouchByIdentifier = (touchList: TouchList, identifier: number | null) => {\n if (identifier === null) {\n return null;\n }\n\n for (let i = 0; i < touchList.length; i += 1) {\n const touch = touchList.item(i);\n if (touch && touch.identifier === identifier) {\n return touch;\n }\n }\n\n return null;\n};\n\nconst MentionFinder: FC<MentionFinderProps> = ({\n inputValue,\n members,\n onSelect,\n popupAlignment,\n enableDragHandle = false,\n dragCloseThresholdInPx = DRAG_CLOSE_THRESHOLD_IN_PX,\n overlayContainerSelector,\n}) => {\n const [activeMember, setActiveMember] = useState(members[0]);\n const [focusedIndex, setFocusedIndex] = useState(0);\n const [shouldShowPopup, setShouldShowPopup] = useState(true);\n\n const popupRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const dragStartYRef = useRef<number | null>(null);\n const hasTriggeredDragCloseRef = useRef(false);\n const activePointerIdRef = useRef<number | null>(null);\n const activeTouchIdRef = useRef<number | null>(null);\n\n const [isDraggingHandle, setIsDraggingHandle] = useState(false);\n const [dragOffset, setDragOffset] = useState(0);\n const [dragProgress, setDragProgress] = useState(0);\n const [overlayContainer, setOverlayContainer] = useState<Element | null>(null);\n\n const [fullMatch, searchString] = useMemo(() => {\n // eslint-disable-next-line no-irregular-whitespace\n const regExpMatchArray = inputValue.match(/@(?!\\s)([^\\s​]*)/);\n\n return [regExpMatchArray?.[0], regExpMatchArray?.[1]?.toLowerCase() ?? ''];\n }, [inputValue]);\n\n const filteredMembers = useMemo(\n () =>\n searchString !== ''\n ? members.filter(\n ({ id, info, name }) =>\n id.toLowerCase().includes(searchString) ||\n info?.replace('chayns', '').toLowerCase().includes(searchString) ||\n name.toLowerCase().includes(searchString),\n )\n : members,\n [members, searchString],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {\n event.preventDefault();\n\n const children = listRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (event.key === 'ArrowUp' ? -1 : 1) +\n children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const member = filteredMembers[newIndex];\n\n setActiveMember(member);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (event.key === 'Enter' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n\n if (fullMatch && activeMember) {\n onSelect({ fullMatch, member: activeMember });\n }\n }\n },\n [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect],\n );\n\n const handleMemberClick = useCallback(\n (member: MentionMember) => {\n if (fullMatch) {\n onSelect({ fullMatch, member });\n }\n },\n [fullMatch, onSelect],\n );\n\n const handleMemberHover = useCallback((member: MentionMember) => {\n setActiveMember(member);\n }, []);\n\n useEffect(() => {\n if (filteredMembers.length > 0) {\n const isActiveMemberShown = filteredMembers.some(({ id }) => id === activeMember?.id);\n\n if (!isActiveMemberShown) {\n setActiveMember(filteredMembers[0]);\n }\n }\n }, [activeMember?.id, filteredMembers]);\n\n const items = useMemo(\n () =>\n filteredMembers.map((member) => (\n <MentionFinderItem\n isActive={member.id === activeMember?.id}\n key={member.id}\n member={member}\n onClick={handleMemberClick}\n onHover={handleMemberHover}\n />\n )),\n [activeMember, filteredMembers, handleMemberClick, handleMemberHover],\n );\n\n useEffect(() => {\n setDragOffset(0);\n setDragProgress(0);\n hasTriggeredDragCloseRef.current = false;\n setShouldShowPopup(true);\n }, [inputValue]);\n\n useEffect(() => {\n if (shouldShowPopup) {\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [handleKeyDown, shouldShowPopup]);\n\n const closePopupViaDrag = useCallback(() => {\n if (hasTriggeredDragCloseRef.current) {\n return;\n }\n hasTriggeredDragCloseRef.current = true;\n setDragOffset(0);\n setDragProgress(0);\n setShouldShowPopup(false);\n }, []);\n\n const handleOverlayClick = useCallback(() => {\n closePopupViaDrag();\n }, [closePopupViaDrag]);\n\n const updateDragByClientY = useCallback(\n (clientY: number) => {\n if (dragStartYRef.current === null) {\n return false;\n }\n\n const closingDirectionMultiplier =\n popupAlignment === MentionFinderPopupAlignment.Bottom ? -1 : 1;\n const rawDelta = clientY - dragStartYRef.current;\n const normalizedDelta = rawDelta * closingDirectionMultiplier;\n const positiveDelta = Math.max(0, normalizedDelta);\n const limitedDelta = Math.min(positiveDelta, dragCloseThresholdInPx);\n\n setDragOffset(limitedDelta * closingDirectionMultiplier);\n setDragProgress(Math.min(positiveDelta / dragCloseThresholdInPx, 1));\n\n if (positiveDelta >= dragCloseThresholdInPx) {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n closePopupViaDrag();\n return true;\n }\n\n return false;\n },\n [closePopupViaDrag, dragCloseThresholdInPx, popupAlignment],\n );\n\n const handleDragPointerDown = useCallback((event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch') {\n return;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n if (dragStartYRef.current !== null) {\n return;\n }\n activePointerIdRef.current = event.pointerId;\n dragStartYRef.current = event.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n event.stopPropagation();\n }, []);\n\n const handleDragPointerMove = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n if (dragStartYRef.current === null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const hasClosed = updateDragByClientY(event.clientY);\n\n if (hasClosed) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const resetDragState = useCallback(\n (shouldClose = false) => {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n if (shouldClose) {\n closePopupViaDrag();\n } else {\n setDragOffset(0);\n setDragProgress(0);\n }\n },\n [closePopupViaDrag],\n );\n\n const handleDragPointerUp = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragPointerCancel = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n resetDragState();\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [resetDragState],\n );\n\n const handleDragTouchStart = useCallback((event: TouchEvent<HTMLDivElement>) => {\n if (event.touches.length === 0 || dragStartYRef.current !== null) {\n return;\n }\n\n const touch = event.touches[0];\n\n if (!touch) return;\n\n activeTouchIdRef.current = touch.identifier;\n dragStartYRef.current = touch.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDragTouchMove = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (dragStartYRef.current === null || activeTouchIdRef.current === null) {\n return;\n }\n const touch =\n findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current) ??\n findTouchByIdentifier(event.touches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n const hasClosed = updateDragByClientY(touch.clientY);\n if (hasClosed) {\n activeTouchIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const handleDragTouchEnd = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragTouchCancel = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n resetDragState();\n },\n [resetDragState],\n );\n\n const dragHandle = useMemo(() => {\n if (!enableDragHandle) {\n return null;\n }\n\n return (\n <StyledMentionFinderDragHandle $alignment={popupAlignment}>\n <StyledMentionFinderDragHandleInner\n $alignment={popupAlignment}\n $dragOffset={dragOffset}\n $dragProgress={dragProgress}\n $isDragging={isDraggingHandle}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n onTouchStart={handleDragTouchStart}\n onTouchMove={handleDragTouchMove}\n onTouchEnd={handleDragTouchEnd}\n onTouchCancel={handleDragTouchCancel}\n />\n </StyledMentionFinderDragHandle>\n );\n }, [\n enableDragHandle,\n popupAlignment,\n dragOffset,\n dragProgress,\n isDraggingHandle,\n handleDragPointerDown,\n handleDragPointerMove,\n handleDragPointerUp,\n handleDragPointerCancel,\n handleDragTouchStart,\n handleDragTouchMove,\n handleDragTouchEnd,\n handleDragTouchCancel,\n ]);\n\n const shouldRenderPopup = shouldShowPopup && fullMatch && items.length > 0;\n\n useEffect(() => {\n if (!enableDragHandle || !shouldRenderPopup) {\n setOverlayContainer(null);\n return;\n }\n\n const container = popupRef.current?.closest(\n overlayContainerSelector ?? '.dialog-inner, .chayns-threads, .page-provider, .tapp',\n );\n\n if (container) {\n setOverlayContainer(container);\n return;\n }\n\n if (typeof document !== 'undefined') {\n setOverlayContainer(document.body);\n }\n }, [enableDragHandle, overlayContainerSelector, shouldRenderPopup]);\n\n const overlayPortal =\n overlayContainer && enableDragHandle\n ? createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMentionFinderOverlay\n key=\"mention-finder-overlay\"\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n onClick={handleOverlayClick}\n />\n )}\n </AnimatePresence>,\n overlayContainer,\n )\n : null;\n\n return (\n <>\n {overlayPortal}\n <StyledMentionFinder className=\"beta-chayns-mention-finder\">\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMotionMentionFinderPopup\n ref={popupRef}\n animate={{\n height: 'auto',\n opacity: 1,\n y: dragOffset,\n }}\n className=\"prevent-lose-focus\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n $popupAlignment={popupAlignment}\n $isDragging={enableDragHandle}\n transition={{ duration: 0.15 }}\n tabIndex={0}\n >\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Top &&\n dragHandle}\n <StyledMentionFinderItemList ref={listRef}>\n {items}\n </StyledMentionFinderItemList>\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Bottom &&\n dragHandle}\n </StyledMotionMentionFinderPopup>\n )}\n </AnimatePresence>\n </StyledMentionFinder>\n </>\n );\n};\n\nMentionFinder.displayName = 'MentionFinder';\n\nexport default MentionFinder;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MentionFinder.js","names":["AnimatePresence","React","useCallback","useEffect","useMemo","useRef","useState","createPortal","MentionFinderPopupAlignment","MentionFinderItem","StyledMentionFinder","StyledMentionFinderDragHandle","StyledMentionFinderDragHandleInner","StyledMentionFinderItemList","StyledMentionFinderOverlay","StyledMotionMentionFinderPopup","DRAG_CLOSE_THRESHOLD_IN_PX","isTextInputElement","element","tagName","toLowerCase","type","isContentEditable","findTouchByIdentifier","touchList","identifier","i","length","touch","item","MentionFinder","inputValue","members","onSelect","popupAlignment","enableDragHandle","dragCloseThresholdInPx","overlayContainerSelector","activeMember","setActiveMember","focusedIndex","setFocusedIndex","shouldShowPopup","setShouldShowPopup","popupRef","listRef","inputElementRef","dragStartYRef","hasTriggeredDragCloseRef","activePointerIdRef","activeTouchIdRef","isDraggingHandle","setIsDraggingHandle","dragOffset","setDragOffset","dragProgress","setDragProgress","overlayContainer","setOverlayContainer","fullMatch","searchString","regExpMatchArray","match","filteredMembers","filter","id","info","name","includes","replace","shouldRenderPopup","handleContainerBlur","event","nextFocusedElement","relatedTarget","currentContainer","currentTarget","contains","current","handleKeyDown","targetElement","target","key","preventDefault","children","newIndex","prevElement","tabIndex","member","newElement","focus","stopPropagation","window","requestAnimationFrame","handleMemberClick","handleMemberHover","isActiveMemberShown","some","items","map","createElement","isActive","onClick","onHover","activeElement","document","addEventListener","removeEventListener","closePopupViaDrag","handleOverlayClick","updateDragByClientY","clientY","closingDirectionMultiplier","Bottom","rawDelta","normalizedDelta","positiveDelta","Math","max","limitedDelta","min","handleDragPointerDown","pointerType","button","pointerId","setPointerCapture","handleDragPointerMove","hasClosed","releasePointerCapture","resetDragState","shouldClose","handleDragPointerUp","handleDragPointerCancel","handleDragTouchStart","touches","handleDragTouchMove","changedTouches","handleDragTouchEnd","handleDragTouchCancel","dragHandle","$alignment","$dragOffset","$dragProgress","$isDragging","onPointerDown","onPointerMove","onPointerUp","onPointerCancel","onTouchStart","onTouchMove","onTouchEnd","onTouchCancel","container","closest","body","overlayPortal","initial","animate","opacity","exit","Fragment","className","onBlur","ref","height","y","$popupAlignment","transition","duration","Top","displayName"],"sources":["../../../../src/components/mention-finder/MentionFinder.tsx"],"sourcesContent":["import { AnimatePresence } from 'motion/react';\nimport React, {\n FC,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n PointerEvent,\n TouchList,\n TouchEvent,\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { MentionFinderPopupAlignment } from '../../constants/mentionFinder';\nimport MentionFinderItem from './mention-finder-item/MentionFinderItem';\nimport {\n StyledMentionFinder,\n StyledMentionFinderDragHandle,\n StyledMentionFinderDragHandleInner,\n StyledMentionFinderItemList,\n StyledMentionFinderOverlay,\n StyledMotionMentionFinderPopup,\n} from './MentionFinder.styles';\n\nexport type MentionMember = {\n id: string;\n info?: string;\n imageUrl: string;\n name: string;\n shouldShowRoundImage?: boolean;\n};\n\nexport type MentionFinderProps = {\n /**\n * The text from the input field\n */\n inputValue: string;\n /**\n * Members that can be selected\n */\n members: MentionMember[];\n /**\n * Function to be executed when a member is selected\n */\n onSelect: ({ fullMatch, member }: { fullMatch: string; member: MentionMember }) => void;\n /**\n * Alignment of the popup\n */\n popupAlignment: MentionFinderPopupAlignment;\n /**\n * Enables the optional drag handle inside the popup\n */\n enableDragHandle?: boolean;\n /**\n * Threshold in pixels to drag to close the popup\n */\n dragCloseThresholdInPx?: number;\n /**\n * Selector for the container to render the overlay into (defaults to closest dialog, thread, page provider or tapp)\n */\n overlayContainerSelector?: string;\n};\n\nconst DRAG_CLOSE_THRESHOLD_IN_PX = 60;\n\nconst isTextInputElement = (\n element: HTMLElement | null,\n): element is HTMLInputElement | HTMLTextAreaElement => {\n if (!element) {\n return false;\n }\n\n const tagName = element.tagName.toLowerCase();\n\n return (\n (tagName === 'input' && (element as HTMLInputElement).type !== 'button') ||\n tagName === 'textarea' ||\n element.isContentEditable\n );\n};\n\nconst findTouchByIdentifier = (touchList: TouchList, identifier: number | null) => {\n if (identifier === null) {\n return null;\n }\n\n for (let i = 0; i < touchList.length; i += 1) {\n const touch = touchList.item(i);\n if (touch && touch.identifier === identifier) {\n return touch;\n }\n }\n\n return null;\n};\n\nconst MentionFinder: FC<MentionFinderProps> = ({\n inputValue,\n members,\n onSelect,\n popupAlignment,\n enableDragHandle = false,\n dragCloseThresholdInPx = DRAG_CLOSE_THRESHOLD_IN_PX,\n overlayContainerSelector,\n}) => {\n const [activeMember, setActiveMember] = useState(members[0]);\n const [focusedIndex, setFocusedIndex] = useState(0);\n const [shouldShowPopup, setShouldShowPopup] = useState(true);\n\n const popupRef = useRef<HTMLDivElement>(null);\n const listRef = useRef<HTMLDivElement>(null);\n const inputElementRef = useRef<HTMLElement | null>(null);\n const dragStartYRef = useRef<number | null>(null);\n const hasTriggeredDragCloseRef = useRef(false);\n const activePointerIdRef = useRef<number | null>(null);\n const activeTouchIdRef = useRef<number | null>(null);\n\n const [isDraggingHandle, setIsDraggingHandle] = useState(false);\n const [dragOffset, setDragOffset] = useState(0);\n const [dragProgress, setDragProgress] = useState(0);\n const [overlayContainer, setOverlayContainer] = useState<Element | null>(null);\n\n const [fullMatch, searchString] = useMemo(() => {\n // eslint-disable-next-line no-irregular-whitespace\n const regExpMatchArray = inputValue.match(/@(?!\\s)([^\\s​]*)/);\n\n return [regExpMatchArray?.[0], regExpMatchArray?.[1]?.toLowerCase() ?? ''];\n }, [inputValue]);\n\n const filteredMembers = useMemo(\n () =>\n searchString !== ''\n ? members.filter(\n ({ id, info, name }) =>\n id.toLowerCase().includes(searchString) ||\n info?.replace('chayns', '').toLowerCase().includes(searchString) ||\n name.toLowerCase().includes(searchString),\n )\n : members,\n [members, searchString],\n );\n\n const shouldRenderPopup = shouldShowPopup && !!fullMatch && filteredMembers.length > 0;\n\n const handleContainerBlur = useCallback((event: React.FocusEvent<HTMLDivElement>) => {\n const nextFocusedElement = event.relatedTarget as Node | null;\n const currentContainer = event.currentTarget as HTMLElement;\n\n if (\n !nextFocusedElement ||\n (!currentContainer.contains(nextFocusedElement) &&\n !popupRef.current?.contains(nextFocusedElement))\n ) {\n setShouldShowPopup(false);\n }\n }, []);\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n const targetElement = event.target as HTMLElement | null;\n\n if (isTextInputElement(targetElement)) {\n inputElementRef.current = targetElement;\n }\n\n if ((event.key === 'ArrowUp' || event.key === 'ArrowDown') && shouldRenderPopup) {\n event.preventDefault();\n\n const children = listRef.current?.children;\n\n if (children && children.length > 0) {\n const newIndex =\n focusedIndex !== null\n ? (focusedIndex +\n (event.key === 'ArrowUp' ? -1 : 1) +\n children.length) %\n children.length\n : 0;\n\n if (focusedIndex !== null) {\n const prevElement = children[focusedIndex] as HTMLDivElement;\n prevElement.tabIndex = -1;\n }\n\n setFocusedIndex(newIndex);\n\n const member = filteredMembers[newIndex];\n\n setActiveMember(member);\n\n const newElement = children[newIndex] as HTMLDivElement;\n newElement.tabIndex = 0;\n newElement.focus();\n }\n } else if (event.key === 'Enter' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n\n if (fullMatch && activeMember) {\n onSelect({ fullMatch, member: activeMember });\n }\n } else if (event.key === 'Escape' && shouldRenderPopup) {\n event.preventDefault();\n event.stopPropagation();\n setShouldShowPopup(false);\n\n window.requestAnimationFrame(() => {\n inputElementRef.current?.focus();\n });\n }\n },\n [activeMember, filteredMembers, focusedIndex, fullMatch, onSelect, shouldRenderPopup],\n );\n\n const handleMemberClick = useCallback(\n (member: MentionMember) => {\n if (fullMatch) {\n onSelect({ fullMatch, member });\n }\n },\n [fullMatch, onSelect],\n );\n\n const handleMemberHover = useCallback((member: MentionMember) => {\n setActiveMember(member);\n }, []);\n\n useEffect(() => {\n if (filteredMembers.length > 0) {\n const isActiveMemberShown = filteredMembers.some(({ id }) => id === activeMember?.id);\n\n if (!isActiveMemberShown) {\n setActiveMember(filteredMembers[0]);\n }\n }\n }, [activeMember?.id, filteredMembers]);\n\n const items = useMemo(\n () =>\n filteredMembers.map((member) => (\n <MentionFinderItem\n isActive={member.id === activeMember?.id}\n key={member.id}\n member={member}\n onClick={handleMemberClick}\n onHover={handleMemberHover}\n />\n )),\n [activeMember, filteredMembers, handleMemberClick, handleMemberHover],\n );\n\n useEffect(() => {\n setDragOffset(0);\n setDragProgress(0);\n hasTriggeredDragCloseRef.current = false;\n setShouldShowPopup(true);\n }, [inputValue]);\n\n useEffect(() => {\n if (!shouldRenderPopup) {\n return;\n }\n\n const activeElement = document.activeElement as HTMLElement | null;\n\n if (isTextInputElement(activeElement)) {\n inputElementRef.current = activeElement;\n }\n }, [shouldRenderPopup]);\n\n useEffect(() => {\n if (shouldShowPopup) {\n window.addEventListener('keydown', handleKeyDown, true);\n }\n\n return () => {\n window.removeEventListener('keydown', handleKeyDown, true);\n };\n }, [handleKeyDown, shouldShowPopup]);\n\n const closePopupViaDrag = useCallback(() => {\n if (hasTriggeredDragCloseRef.current) {\n return;\n }\n hasTriggeredDragCloseRef.current = true;\n setDragOffset(0);\n setDragProgress(0);\n setShouldShowPopup(false);\n }, []);\n\n const handleOverlayClick = useCallback(() => {\n closePopupViaDrag();\n }, [closePopupViaDrag]);\n\n const updateDragByClientY = useCallback(\n (clientY: number) => {\n if (dragStartYRef.current === null) {\n return false;\n }\n\n const closingDirectionMultiplier =\n popupAlignment === MentionFinderPopupAlignment.Bottom ? -1 : 1;\n const rawDelta = clientY - dragStartYRef.current;\n const normalizedDelta = rawDelta * closingDirectionMultiplier;\n const positiveDelta = Math.max(0, normalizedDelta);\n const limitedDelta = Math.min(positiveDelta, dragCloseThresholdInPx);\n\n setDragOffset(limitedDelta * closingDirectionMultiplier);\n setDragProgress(Math.min(positiveDelta / dragCloseThresholdInPx, 1));\n\n if (positiveDelta >= dragCloseThresholdInPx) {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n closePopupViaDrag();\n return true;\n }\n\n return false;\n },\n [closePopupViaDrag, dragCloseThresholdInPx, popupAlignment],\n );\n\n const handleDragPointerDown = useCallback((event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch') {\n return;\n }\n if (event.pointerType === 'mouse' && event.button !== 0) {\n return;\n }\n if (dragStartYRef.current !== null) {\n return;\n }\n activePointerIdRef.current = event.pointerId;\n dragStartYRef.current = event.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.currentTarget.setPointerCapture(event.pointerId);\n event.stopPropagation();\n }, []);\n\n const handleDragPointerMove = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n if (dragStartYRef.current === null) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n\n const hasClosed = updateDragByClientY(event.clientY);\n\n if (hasClosed) {\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const resetDragState = useCallback(\n (shouldClose = false) => {\n dragStartYRef.current = null;\n setIsDraggingHandle(false);\n if (shouldClose) {\n closePopupViaDrag();\n } else {\n setDragOffset(0);\n setDragProgress(0);\n }\n },\n [closePopupViaDrag],\n );\n\n const handleDragPointerUp = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragPointerCancel = useCallback(\n (event: PointerEvent<HTMLDivElement>) => {\n if (event.pointerType === 'touch' || activePointerIdRef.current !== event.pointerId) {\n return;\n }\n event.stopPropagation();\n resetDragState();\n event.currentTarget.releasePointerCapture(event.pointerId);\n activePointerIdRef.current = null;\n },\n [resetDragState],\n );\n\n const handleDragTouchStart = useCallback((event: TouchEvent<HTMLDivElement>) => {\n if (event.touches.length === 0 || dragStartYRef.current !== null) {\n return;\n }\n\n const touch = event.touches[0];\n\n if (!touch) return;\n\n activeTouchIdRef.current = touch.identifier;\n dragStartYRef.current = touch.clientY;\n hasTriggeredDragCloseRef.current = false;\n setDragOffset(0);\n setDragProgress(0);\n setIsDraggingHandle(true);\n event.preventDefault();\n event.stopPropagation();\n }, []);\n\n const handleDragTouchMove = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (dragStartYRef.current === null || activeTouchIdRef.current === null) {\n return;\n }\n const touch =\n findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current) ??\n findTouchByIdentifier(event.touches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n const hasClosed = updateDragByClientY(touch.clientY);\n if (hasClosed) {\n activeTouchIdRef.current = null;\n }\n },\n [updateDragByClientY],\n );\n\n const handleDragTouchEnd = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n const shouldClose = dragProgress >= 1;\n resetDragState(shouldClose);\n },\n [dragProgress, resetDragState],\n );\n\n const handleDragTouchCancel = useCallback(\n (event: TouchEvent<HTMLDivElement>) => {\n if (activeTouchIdRef.current === null) return;\n\n const touch = findTouchByIdentifier(event.changedTouches, activeTouchIdRef.current);\n\n if (!touch) return;\n\n event.preventDefault();\n event.stopPropagation();\n activeTouchIdRef.current = null;\n resetDragState();\n },\n [resetDragState],\n );\n\n const dragHandle = useMemo(() => {\n if (!enableDragHandle) {\n return null;\n }\n\n return (\n <StyledMentionFinderDragHandle $alignment={popupAlignment}>\n <StyledMentionFinderDragHandleInner\n $alignment={popupAlignment}\n $dragOffset={dragOffset}\n $dragProgress={dragProgress}\n $isDragging={isDraggingHandle}\n onPointerDown={handleDragPointerDown}\n onPointerMove={handleDragPointerMove}\n onPointerUp={handleDragPointerUp}\n onPointerCancel={handleDragPointerCancel}\n onTouchStart={handleDragTouchStart}\n onTouchMove={handleDragTouchMove}\n onTouchEnd={handleDragTouchEnd}\n onTouchCancel={handleDragTouchCancel}\n />\n </StyledMentionFinderDragHandle>\n );\n }, [\n enableDragHandle,\n popupAlignment,\n dragOffset,\n dragProgress,\n isDraggingHandle,\n handleDragPointerDown,\n handleDragPointerMove,\n handleDragPointerUp,\n handleDragPointerCancel,\n handleDragTouchStart,\n handleDragTouchMove,\n handleDragTouchEnd,\n handleDragTouchCancel,\n ]);\n\n useEffect(() => {\n if (!enableDragHandle || !shouldRenderPopup) {\n setOverlayContainer(null);\n return;\n }\n\n const container = popupRef.current?.closest(\n overlayContainerSelector ?? '.dialog-inner, .chayns-threads, .page-provider, .tapp',\n );\n\n if (container) {\n setOverlayContainer(container);\n return;\n }\n\n if (typeof document !== 'undefined') {\n setOverlayContainer(document.body);\n }\n }, [enableDragHandle, overlayContainerSelector, shouldRenderPopup]);\n\n const overlayPortal =\n overlayContainer && enableDragHandle\n ? createPortal(\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMentionFinderOverlay\n key=\"mention-finder-overlay\"\n animate={{ opacity: 1 }}\n exit={{ opacity: 0 }}\n initial={{ opacity: 0 }}\n onClick={handleOverlayClick}\n />\n )}\n </AnimatePresence>,\n overlayContainer,\n )\n : null;\n\n return (\n <>\n {overlayPortal}\n <StyledMentionFinder\n className=\"beta-chayns-mention-finder\"\n onBlur={handleContainerBlur}\n >\n <AnimatePresence initial={false}>\n {shouldRenderPopup && (\n <StyledMotionMentionFinderPopup\n ref={popupRef}\n animate={{\n height: 'auto',\n opacity: 1,\n y: dragOffset,\n }}\n className=\"prevent-lose-focus\"\n exit={{ height: 0, opacity: 0 }}\n initial={{ height: 0, opacity: 0 }}\n $popupAlignment={popupAlignment}\n $isDragging={enableDragHandle}\n transition={{ duration: 0.15 }}\n tabIndex={0}\n >\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Top &&\n dragHandle}\n <StyledMentionFinderItemList ref={listRef}>\n {items}\n </StyledMentionFinderItemList>\n {enableDragHandle &&\n popupAlignment === MentionFinderPopupAlignment.Bottom &&\n dragHandle}\n </StyledMotionMentionFinderPopup>\n )}\n </AnimatePresence>\n </StyledMentionFinder>\n </>\n );\n};\n\nMentionFinder.displayName = 'MentionFinder';\n\nexport default MentionFinder;\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MentionFinderItem.styles.js","names":["styled","css","StyledMentionFinderItem","div","theme","$isActive","StyledMentionFinderItemImage","img","$shouldShowRoundImage","StyledMentionFinderItemContent","text","StyledMentionFinderItemContentName","StyledMentionFinderItemContentInfo"],"sources":["../../../../../src/components/mention-finder/mention-finder-item/MentionFinderItem.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMentionFinderItemProps = WithTheme<{ $isActive: boolean }>;\n\nexport const StyledMentionFinderItem = styled.div<StyledMentionFinderItemProps>`\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: 10px 8px;\n\n &:not(:last-child) {\n border-bottom: 1px solid\n rgba(${({ theme }: StyledMentionFinderItemProps) => theme['text-rgb']}, 0.15);\n }\n\n ${({ $isActive, theme }) =>\n $isActive &&\n css`\n background-color: ${theme['102']} !important;\n `}\n`;\n\ntype StyledMentionFinderItemImageProps = WithTheme<{\n $shouldShowRoundImage?: boolean;\n}>;\n\nexport const StyledMentionFinderItemImage = styled.img<StyledMentionFinderItemImageProps>`\n background-color: rgba(\n ${({ theme }: StyledMentionFinderItemImageProps) => theme['text-rgb']},\n 0.1\n );\n border-radius: ${({ $shouldShowRoundImage }) => ($shouldShowRoundImage ? '50%' : 'initial')};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledMentionFinderItemImageProps) => theme['009-rgb']}, 0.08) inset;\n flex: 0 0 auto;\n height: 40px;\n object-fit: cover;\n overflow: hidden;\n transition: border-radius 0.3s ease;\n width: 40px;\n`;\n\ntype StyledMentionFinderItemContentProps = WithTheme<unknown>;\n\nexport const StyledMentionFinderItemContent = styled.div`\n color: ${({ theme }: StyledMentionFinderItemContentProps) => theme.text};\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n justify-content: center;\n line-height: normal;\n margin-left: 10px;\n min-width: 0;\n`;\n\nexport const StyledMentionFinderItemContentName = styled.div``;\n\nexport const StyledMentionFinderItemContentInfo = styled.div`\n font-size: 85%;\n margin-top: 2px;\n opacity: 0.75;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAK/C,OAAO,MAAMC,uBAAuB,GAAGF,MAAM,CAACG,GAAiC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,CAAC;EAAEC;AAAoC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AACjF;AACA;AACA,MAAM,CAAC;EAAEC,SAAS;EAAED;AAAM,CAAC,KACnBC,SAAS,IACTJ,GAAG;AACX,gCAAgCG,KAAK,CAAC,KAAK,CAAC;AAC5C,SAAS;AACT,CAAC;AAMD,OAAO,MAAME,4BAA4B,GAAGN,MAAM,CAACO,GAAsC;AACzF;AACA,UAAU,CAAC;EAAEH;AAAyC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AAC7E;AACA;AACA,qBAAqB,CAAC;EAAEI;AAAsB,CAAC,KAAMA,qBAAqB,GAAG,KAAK,GAAG,SAAU;AAC/F;AACA,eAAe,CAAC;EAAEJ;AAAyC,CAAC,KAAKA,KAAK,CAAC,SAAS,CAAC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMK,8BAA8B,GAAGT,MAAM,CAACG,GAAG;AACxD,aAAa,CAAC;EAAEC;AAA2C,CAAC,KAAKA,KAAK,CAACM,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,kCAAkC,GAAGX,MAAM,CAACG,GAAG,EAAE;AAE9D,OAAO,MAAMS,kCAAkC,GAAGZ,MAAM,CAACG,GAAG;AAC5D;AACA;AACA;AACA,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"MentionFinderItem.styles.js","names":["styled","css","StyledMentionFinderItem","div","theme","$isActive","StyledMentionFinderItemImage","img","$shouldShowRoundImage","StyledMentionFinderItemContent","text","StyledMentionFinderItemContentName","StyledMentionFinderItemContentInfo"],"sources":["../../../../../src/components/mention-finder/mention-finder-item/MentionFinderItem.styles.ts"],"sourcesContent":["import styled, { css } from 'styled-components';\nimport type { WithTheme } from '../../color-scheme-provider/ColorSchemeProvider';\n\ntype StyledMentionFinderItemProps = WithTheme<{\n $isActive: boolean;\n}>;\n\nexport const StyledMentionFinderItem = styled.div<StyledMentionFinderItemProps>`\n align-items: center;\n cursor: pointer;\n display: flex;\n padding: 10px 8px;\n\n &:not(:last-child) {\n border-bottom: 1px solid\n rgba(${({ theme }: StyledMentionFinderItemProps) => theme['text-rgb']}, 0.15);\n }\n\n ${({ $isActive, theme }) =>\n $isActive &&\n css`\n background-color: ${theme['102']} !important;\n `}\n`;\n\ntype StyledMentionFinderItemImageProps = WithTheme<{\n $shouldShowRoundImage?: boolean;\n}>;\n\nexport const StyledMentionFinderItemImage = styled.img<StyledMentionFinderItemImageProps>`\n background-color: rgba(\n ${({ theme }: StyledMentionFinderItemImageProps) => theme['text-rgb']},\n 0.1\n );\n border-radius: ${({ $shouldShowRoundImage }) => ($shouldShowRoundImage ? '50%' : 'initial')};\n box-shadow: 0 0 0 1px\n rgba(${({ theme }: StyledMentionFinderItemImageProps) => theme['009-rgb']}, 0.08) inset;\n flex: 0 0 auto;\n height: 40px;\n object-fit: cover;\n overflow: hidden;\n transition: border-radius 0.3s ease;\n width: 40px;\n`;\n\ntype StyledMentionFinderItemContentProps = WithTheme<unknown>;\n\nexport const StyledMentionFinderItemContent = styled.div`\n color: ${({ theme }: StyledMentionFinderItemContentProps) => theme.text};\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n justify-content: center;\n line-height: normal;\n margin-left: 10px;\n min-width: 0;\n`;\n\nexport const StyledMentionFinderItemContentName = styled.div``;\n\nexport const StyledMentionFinderItemContentInfo = styled.div`\n font-size: 85%;\n margin-top: 2px;\n opacity: 0.75;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,IAAIC,GAAG,QAAQ,mBAAmB;AAO/C,OAAO,MAAMC,uBAAuB,GAAGF,MAAM,CAACG,GAAiC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,CAAC;EAAEC;AAAoC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AACjF;AACA;AACA,MAAM,CAAC;EAAEC,SAAS;EAAED;AAAM,CAAC,KACnBC,SAAS,IACTJ,GAAG;AACX,gCAAgCG,KAAK,CAAC,KAAK,CAAC;AAC5C,SAAS;AACT,CAAC;AAMD,OAAO,MAAME,4BAA4B,GAAGN,MAAM,CAACO,GAAsC;AACzF;AACA,UAAU,CAAC;EAAEH;AAAyC,CAAC,KAAKA,KAAK,CAAC,UAAU,CAAC;AAC7E;AACA;AACA,qBAAqB,CAAC;EAAEI;AAAsB,CAAC,KAAMA,qBAAqB,GAAG,KAAK,GAAG,SAAU;AAC/F;AACA,eAAe,CAAC;EAAEJ;AAAyC,CAAC,KAAKA,KAAK,CAAC,SAAS,CAAC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAID,OAAO,MAAMK,8BAA8B,GAAGT,MAAM,CAACG,GAAG;AACxD,aAAa,CAAC;EAAEC;AAA2C,CAAC,KAAKA,KAAK,CAACM,IAAI;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAED,OAAO,MAAMC,kCAAkC,GAAGX,MAAM,CAACG,GAAG,EAAE;AAE9D,OAAO,MAAMS,kCAAkC,GAAGZ,MAAM,CAACG,GAAG;AAC5D;AACA;AACA;AACA,CAAC","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  import clsx from 'clsx';
2
2
  import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
3
3
  import { useElementSize, useMeasuredClone } from '../../hooks/element';
4
+ import { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';
4
5
  import { useIsTouch } from '../../utils/environment';
5
6
  import ContextMenu from '../context-menu/ContextMenu';
6
7
  import ActionButton from './action-button/ActionButton';
@@ -64,11 +65,13 @@ const MultiActionButton = ({
64
65
  secondaryContextMenu,
65
66
  shouldAutoCollapse = false,
66
67
  shouldUseFullWidth,
68
+ shouldEnableKeyboardHighlighting,
67
69
  width
68
70
  }) => {
69
71
  const [isExtendedByClick, setIsExtendedByClick] = useState(false);
70
72
  const [isSecondaryExpanded, setIsSecondaryExpanded] = useState(false);
71
73
  const [isSecondaryHovered, setIsSecondaryHovered] = useState(false);
74
+ const [isSecondaryFocused, setIsSecondaryFocused] = useState(false);
72
75
  const autoCollapseTimeoutRef = useRef(null);
73
76
  const multiActionButtonRef = useRef(null);
74
77
  const secondaryContextMenuRef = useRef(null);
@@ -82,6 +85,7 @@ const MultiActionButton = ({
82
85
  const hasExpandableSecondaryAction = Boolean(secondaryAction) && !hasSecondaryContextMenu;
83
86
  const hasSecondaryAction = Boolean(secondaryTriggerAction);
84
87
  const shouldUseContentWidth = !width && !shouldUseFullWidth;
88
+ const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(shouldEnableKeyboardHighlighting && !isDisabled);
85
89
  const expandedMeasuredContent = useMemo(() => createMeasuredMultiActionButtonContent({
86
90
  backgroundColor,
87
91
  gapColor,
@@ -132,7 +136,15 @@ const MultiActionButton = ({
132
136
  height
133
137
  });
134
138
  const shouldHidePrimaryLabelForMinimumWidth = shouldKeepPrimaryLabelVisible && typeof availableWidth === 'number' && availableWidth <= minimumPrimaryLabelVisibleWidth;
135
- const resolvedWidth = shouldKeepFullWidth ? '100%' : effectiveIsCollapsed ? height : width ?? 'fit-content';
139
+ const resolvedWidth = useMemo(() => {
140
+ if (shouldKeepFullWidth) {
141
+ return '100%';
142
+ }
143
+ if (effectiveIsCollapsed) {
144
+ return height;
145
+ }
146
+ return width ?? 'fit-content';
147
+ }, [effectiveIsCollapsed, height, shouldKeepFullWidth, width]);
136
148
  const secondaryContextMenuTriggerStyle = getSecondaryContextMenuTriggerStyle({
137
149
  height,
138
150
  isCollapsed: isSecondaryHidden,
@@ -189,6 +201,7 @@ const MultiActionButton = ({
189
201
  setIsSecondaryExpanded(false);
190
202
  setIsExtendedByClick(false);
191
203
  setIsSecondaryHovered(false);
204
+ setIsSecondaryFocused(false);
192
205
  }
193
206
  }, [clearAutoCollapseTimeout, effectiveIsCollapsed, shouldPreventSecondaryExpansion]);
194
207
 
@@ -252,11 +265,26 @@ const MultiActionButton = ({
252
265
  setIsSecondaryExpanded(false);
253
266
  }
254
267
  }, [effectiveIsCollapsed, isExtendedByClick, isTouch]);
268
+ const handleSecondaryFocus = useCallback(() => {
269
+ if (!secondaryAction || isSecondaryHidden || isDisabled || shouldPreventSecondaryExpansion || secondaryAction.isDisabled) {
270
+ return;
271
+ }
272
+ setIsSecondaryFocused(true);
273
+ if (!isExtendedByClick) {
274
+ setIsSecondaryExpanded(true);
275
+ }
276
+ }, [isDisabled, isExtendedByClick, isSecondaryHidden, secondaryAction, shouldPreventSecondaryExpansion]);
277
+ const handleSecondaryBlur = useCallback(() => {
278
+ setIsSecondaryFocused(false);
279
+ if (!isExtendedByClick && !effectiveIsCollapsed) {
280
+ setIsSecondaryExpanded(false);
281
+ }
282
+ }, [effectiveIsCollapsed, isExtendedByClick]);
255
283
 
256
284
  /**
257
- * Secondary label is visible when expanded or when hovered (desktop only).
285
+ * Secondary label is visible when expanded or when hovered/focused.
258
286
  */
259
- const isSecondaryLabelVisible = isSecondaryExpanded || !isTouch && isSecondaryHovered;
287
+ const isSecondaryLabelVisible = isSecondaryExpanded || !isTouch && isSecondaryHovered || isSecondaryFocused;
260
288
  return /*#__PURE__*/React.createElement(React.Fragment, null, measuredElement, /*#__PURE__*/React.createElement(StyledMultiActionButton, {
261
289
  className: clsx('beta-chayns-multi-action', className),
262
290
  ref: multiActionButtonRef,
@@ -274,6 +302,7 @@ const MultiActionButton = ({
274
302
  isSolo: !hasSecondaryAction || isSecondaryHidden || effectiveIsCollapsed,
275
303
  onClick: handlePrimaryClick,
276
304
  showLabel: !effectiveIsCollapsed && !shouldHidePrimaryLabelForMinimumWidth && (shouldKeepPrimaryLabelVisible || !isAutoIconsOnly) && (shouldKeepPrimaryLabelVisible || !shouldHideSecondaryForAutoCollapse) && (!hasExpandableSecondaryAction || !isSecondaryExpanded),
305
+ shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting,
277
306
  shouldUseContentWidth: shouldUseContentWidth,
278
307
  height: height
279
308
  }), hasSecondaryAction && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(StyledSeparator, {
@@ -298,6 +327,7 @@ const MultiActionButton = ({
298
327
  key: "multi-action-secondary-context-menu",
299
328
  onClick: handleSecondaryClick,
300
329
  showLabel: false,
330
+ shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting,
301
331
  shouldUseContentWidth: shouldUseContentWidth,
302
332
  height: height
303
333
  })) : /*#__PURE__*/React.createElement(ActionButton, {
@@ -312,7 +342,10 @@ const MultiActionButton = ({
312
342
  onClick: handleSecondaryClick,
313
343
  onMouseEnter: handleSecondaryMouseEnter,
314
344
  onMouseLeave: handleSecondaryMouseLeave,
345
+ onFocus: handleSecondaryFocus,
346
+ onBlur: handleSecondaryBlur,
315
347
  showLabel: !isSecondaryHidden && !isAutoIconsOnly && isSecondaryLabelVisible,
348
+ shouldShowKeyboardHighlighting: shouldShowKeyboardHighlighting,
316
349
  shouldUseContentWidth: shouldUseContentWidth,
317
350
  height: height
318
351
  }))));
@@ -1 +1 @@
1
- {"version":3,"file":"MultiActionButton.js","names":["clsx","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","useMeasuredClone","useIsTouch","ContextMenu","ActionButton","StyledMultiActionButton","StyledSeparator","getMinimumPrimaryLabelVisibleWidth","getMultiActionButtonAutoCollapseMode","getSecondaryContextMenuTriggerStyle","MultiActionButtonAutoCollapseMode","MultiActionButtonHeight","SECONDARY_CONTEXT_MENU_ACTION","icon","label","undefined","createMeasuredMultiActionButtonContent","backgroundColor","gapColor","height","primaryAction","secondaryAction","createElement","style","width","action","actionType","isCollapsed","isDisabled","isShrunk","isSolo","showLabel","shouldUseContentWidth","Fragment","$gapColor","$isHidden","isExpanded","isHidden","MultiActionButton","className","extendedTimeoutMs","Medium","secondaryContextMenu","shouldAutoCollapse","shouldUseFullWidth","isExtendedByClick","setIsExtendedByClick","isSecondaryExpanded","setIsSecondaryExpanded","isSecondaryHovered","setIsSecondaryHovered","autoCollapseTimeoutRef","multiActionButtonRef","secondaryContextMenuRef","autoCollapseMode","setAutoCollapseMode","Expanded","isTouch","parentSize","shouldUseParentElement","hasSecondaryContextMenu","Boolean","length","secondaryTriggerAction","hasExpandableSecondaryAction","hasSecondaryAction","expandedMeasuredContent","measuredElement","expandedMeasuredWidth","content","availableWidth","parentWidth","Math","min","previousMode","expandedWidth","isAutoIconsOnly","IconsOnly","isAutoPrimaryOnly","PrimaryOnly","shouldKeepFullWidth","shouldHideSecondaryForAutoCollapse","effectiveIsCollapsed","resolvedSecondaryAction","isSecondaryHidden","shouldPreventSecondaryExpansion","shouldKeepPrimaryLabelVisible","minimumPrimaryLabelVisibleWidth","hasVisibleSecondaryAction","shouldHidePrimaryLabelForMinimumWidth","resolvedWidth","secondaryContextMenuTriggerStyle","clearAutoCollapseTimeout","current","window","clearTimeout","resetAutoCollapseTimeout","setTimeout","expandSecondaryByClick","handlePrimaryClick","event","payload","isExtended","onClick","handleSecondaryClick","show","handleSecondaryMouseEnter","handleSecondaryMouseLeave","isSecondaryLabelVisible","ref","maxWidth","items","shouldDisableClick","shouldUseDefaultTriggerStyles","shouldHidePopupArrow","yOffset","key","onMouseEnter","onMouseLeave","displayName"],"sources":["../../../../src/components/multi-action-button/MultiActionButton.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport React, {\n FC,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useElementSize, useMeasuredClone } from '../../hooks/element';\nimport { useIsTouch } from '../../utils/environment';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport type { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport ActionButton from './action-button/ActionButton';\nimport { StyledMultiActionButton, StyledSeparator } from './MultiActionButton.styles';\nimport {\n getMinimumPrimaryLabelVisibleWidth,\n getMultiActionButtonAutoCollapseMode,\n getSecondaryContextMenuTriggerStyle,\n MultiActionButtonAutoCollapseMode,\n} from './MultiActionButton.utils';\nimport { MultiActionButtonHeight } from './MultiActionButton.types';\nimport type {\n MultiActionButtonAction,\n MultiActionButtonActionEvent,\n MultiActionButtonProps,\n} from './MultiActionButton.types';\n\nconst SECONDARY_CONTEXT_MENU_ACTION: MultiActionButtonAction = {\n icon: 'fa fa-chevron-down',\n label: undefined,\n};\n\ninterface CreateMeasuredMultiActionButtonContentOptions {\n backgroundColor?: string;\n gapColor?: string;\n height: number;\n primaryAction: MultiActionButtonAction;\n secondaryAction?: MultiActionButtonAction;\n}\n\nconst createMeasuredMultiActionButtonContent = ({\n backgroundColor,\n gapColor,\n height,\n primaryAction,\n secondaryAction,\n}: CreateMeasuredMultiActionButtonContentOptions): ReactNode => (\n <StyledMultiActionButton style={{ width: 'fit-content' }}>\n <ActionButton\n action={primaryAction}\n actionType=\"primary\"\n backgroundColor={primaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={false}\n isDisabled={false}\n isShrunk={false}\n isSolo={!secondaryAction}\n showLabel\n shouldUseContentWidth\n height={height}\n />\n {secondaryAction && (\n <>\n <StyledSeparator $gapColor={gapColor} $isHidden={false} />\n <ActionButton\n action={secondaryAction}\n actionType=\"secondary\"\n backgroundColor={secondaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={false}\n isDisabled={false}\n isExpanded={false}\n isHidden={false}\n showLabel={false}\n shouldUseContentWidth\n height={height}\n />\n </>\n )}\n </StyledMultiActionButton>\n);\n\n/**\n * Multi-action button with optional secondary action that can expand on hover/click.\n */\nconst MultiActionButton: FC<MultiActionButtonProps> = ({\n backgroundColor,\n className,\n extendedTimeoutMs = 3000,\n gapColor,\n height = MultiActionButtonHeight.Medium,\n isCollapsed = false,\n isDisabled = false,\n primaryAction,\n secondaryAction,\n secondaryContextMenu,\n shouldAutoCollapse = false,\n shouldUseFullWidth,\n width,\n}) => {\n const [isExtendedByClick, setIsExtendedByClick] = useState(false);\n const [isSecondaryExpanded, setIsSecondaryExpanded] = useState(false);\n const [isSecondaryHovered, setIsSecondaryHovered] = useState(false);\n\n const autoCollapseTimeoutRef = useRef<number | null>(null);\n const multiActionButtonRef = useRef<HTMLDivElement | null>(null);\n const secondaryContextMenuRef = useRef<ContextMenuRef>(null);\n const [autoCollapseMode, setAutoCollapseMode] = useState<MultiActionButtonAutoCollapseMode>(\n MultiActionButtonAutoCollapseMode.Expanded,\n );\n\n const isTouch = useIsTouch();\n const parentSize = useElementSize(multiActionButtonRef, { shouldUseParentElement: true });\n\n const hasSecondaryContextMenu = Boolean(secondaryContextMenu?.length);\n const secondaryTriggerAction = hasSecondaryContextMenu\n ? SECONDARY_CONTEXT_MENU_ACTION\n : secondaryAction;\n const hasExpandableSecondaryAction = Boolean(secondaryAction) && !hasSecondaryContextMenu;\n const hasSecondaryAction = Boolean(secondaryTriggerAction);\n const shouldUseContentWidth = !width && !shouldUseFullWidth;\n\n const expandedMeasuredContent = useMemo(\n () =>\n createMeasuredMultiActionButtonContent({\n backgroundColor,\n gapColor,\n height,\n primaryAction,\n secondaryAction: secondaryTriggerAction,\n }),\n [backgroundColor, gapColor, height, primaryAction, secondaryTriggerAction],\n );\n\n const { measuredElement, width: expandedMeasuredWidth } = useMeasuredClone({\n content: expandedMeasuredContent,\n });\n\n const availableWidth = useMemo(() => {\n const parentWidth = parentSize?.width;\n\n if (typeof width === 'number') {\n return typeof parentWidth === 'number' ? Math.min(parentWidth, width) : width;\n }\n\n return parentWidth;\n }, [parentSize?.width, width]);\n\n useEffect(() => {\n if (!shouldAutoCollapse || isCollapsed) {\n setAutoCollapseMode(MultiActionButtonAutoCollapseMode.Expanded);\n return;\n }\n\n if (expandedMeasuredWidth <= 0) {\n return;\n }\n\n setAutoCollapseMode((previousMode) =>\n getMultiActionButtonAutoCollapseMode({\n availableWidth,\n expandedWidth: expandedMeasuredWidth,\n hasSecondaryAction,\n height,\n previousMode,\n }),\n );\n }, [\n availableWidth,\n expandedMeasuredWidth,\n hasSecondaryAction,\n height,\n isCollapsed,\n shouldAutoCollapse,\n ]);\n\n const isAutoIconsOnly =\n shouldAutoCollapse && autoCollapseMode === MultiActionButtonAutoCollapseMode.IconsOnly;\n const isAutoPrimaryOnly =\n shouldAutoCollapse && autoCollapseMode === MultiActionButtonAutoCollapseMode.PrimaryOnly;\n const shouldKeepFullWidth = Boolean(shouldUseFullWidth);\n const shouldHideSecondaryForAutoCollapse = hasSecondaryAction && isAutoPrimaryOnly;\n const effectiveIsCollapsed = isCollapsed || (!shouldKeepFullWidth && isAutoPrimaryOnly);\n const resolvedSecondaryAction = hasSecondaryAction ? secondaryTriggerAction : undefined;\n const isSecondaryHidden = effectiveIsCollapsed || shouldHideSecondaryForAutoCollapse;\n const shouldPreventSecondaryExpansion = isAutoIconsOnly || isSecondaryHidden;\n const shouldKeepPrimaryLabelVisible = shouldKeepFullWidth && shouldAutoCollapse;\n const minimumPrimaryLabelVisibleWidth = getMinimumPrimaryLabelVisibleWidth({\n hasVisibleSecondaryAction: hasSecondaryAction,\n height,\n });\n const shouldHidePrimaryLabelForMinimumWidth =\n shouldKeepPrimaryLabelVisible &&\n typeof availableWidth === 'number' &&\n availableWidth <= minimumPrimaryLabelVisibleWidth;\n\n const resolvedWidth = shouldKeepFullWidth\n ? '100%'\n : effectiveIsCollapsed\n ? height\n : (width ?? 'fit-content');\n\n const secondaryContextMenuTriggerStyle = getSecondaryContextMenuTriggerStyle({\n height,\n isCollapsed: isSecondaryHidden,\n isExpanded: false,\n shouldUseContentWidth,\n });\n\n /**\n * Clears the current auto-collapse timer without changing visual state.\n */\n const clearAutoCollapseTimeout = useCallback(() => {\n if (autoCollapseTimeoutRef.current) {\n window.clearTimeout(autoCollapseTimeoutRef.current);\n autoCollapseTimeoutRef.current = null;\n }\n }, []);\n\n /**\n * Clears and restarts the auto-collapse timer used after click-triggered expansion.\n */\n const resetAutoCollapseTimeout = useCallback(() => {\n clearAutoCollapseTimeout();\n\n if (extendedTimeoutMs <= 0) {\n return;\n }\n\n autoCollapseTimeoutRef.current = window.setTimeout(() => {\n setIsSecondaryExpanded(false);\n setIsExtendedByClick(false);\n }, extendedTimeoutMs);\n }, [clearAutoCollapseTimeout, extendedTimeoutMs]);\n\n /**\n * Expands the secondary action and remembers that it originated from a click.\n */\n const expandSecondaryByClick = useCallback(() => {\n setIsSecondaryExpanded(true);\n setIsExtendedByClick(true);\n resetAutoCollapseTimeout();\n }, [resetAutoCollapseTimeout]);\n\n /**\n * Cleanup timers on unmount.\n */\n useEffect(\n () => () => {\n clearAutoCollapseTimeout();\n },\n [clearAutoCollapseTimeout],\n );\n\n /**\n * Collapsing the control should also reset any temporary expansion state.\n */\n useEffect(() => {\n if (effectiveIsCollapsed || shouldPreventSecondaryExpansion) {\n clearAutoCollapseTimeout();\n setIsSecondaryExpanded(false);\n setIsExtendedByClick(false);\n setIsSecondaryHovered(false);\n }\n }, [clearAutoCollapseTimeout, effectiveIsCollapsed, shouldPreventSecondaryExpansion]);\n\n /**\n * Handler for the primary action button.\n */\n const handlePrimaryClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled || primaryAction.isDisabled) {\n return;\n }\n\n const payload: MultiActionButtonActionEvent = {\n action: 'primary',\n event,\n isExtended: isSecondaryExpanded,\n isTouch,\n };\n\n primaryAction.onClick?.(payload);\n },\n [isDisabled, isSecondaryExpanded, isTouch, primaryAction],\n );\n\n /**\n * Handler for the secondary action button.\n */\n const handleSecondaryClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n if (\n !resolvedSecondaryAction ||\n isSecondaryHidden ||\n isDisabled ||\n resolvedSecondaryAction.isDisabled\n ) {\n return;\n }\n\n if (hasSecondaryContextMenu) {\n secondaryContextMenuRef.current?.show();\n return;\n }\n\n const payload: MultiActionButtonActionEvent = {\n action: 'secondary',\n event,\n isExtended: isSecondaryExpanded,\n isTouch,\n };\n\n resolvedSecondaryAction.onClick?.(payload);\n if (!shouldPreventSecondaryExpansion) {\n expandSecondaryByClick();\n }\n },\n [\n expandSecondaryByClick,\n hasSecondaryContextMenu,\n isSecondaryHidden,\n isDisabled,\n isSecondaryExpanded,\n isTouch,\n resolvedSecondaryAction,\n shouldPreventSecondaryExpansion,\n ],\n );\n\n /**\n * Desktop hover behavior keeps the secondary action expanded while hovered.\n */\n const handleSecondaryMouseEnter = useCallback(() => {\n if (\n !secondaryAction ||\n isSecondaryHidden ||\n isTouch ||\n isDisabled ||\n shouldPreventSecondaryExpansion ||\n secondaryAction.isDisabled\n ) {\n return;\n }\n\n setIsSecondaryHovered(true);\n if (!isExtendedByClick) {\n setIsSecondaryExpanded(true);\n }\n }, [\n isSecondaryHidden,\n isDisabled,\n isExtendedByClick,\n isTouch,\n secondaryAction,\n shouldPreventSecondaryExpansion,\n ]);\n\n const handleSecondaryMouseLeave = useCallback(() => {\n if (isTouch) {\n return;\n }\n\n setIsSecondaryHovered(false);\n if (!isExtendedByClick && !effectiveIsCollapsed) {\n setIsSecondaryExpanded(false);\n }\n }, [effectiveIsCollapsed, isExtendedByClick, isTouch]);\n\n /**\n * Secondary label is visible when expanded or when hovered (desktop only).\n */\n const isSecondaryLabelVisible = isSecondaryExpanded || (!isTouch && isSecondaryHovered);\n\n return (\n <>\n {measuredElement}\n <StyledMultiActionButton\n className={clsx('beta-chayns-multi-action', className)}\n ref={multiActionButtonRef}\n style={{ maxWidth: '100%', width: resolvedWidth }}\n >\n <ActionButton\n action={primaryAction}\n actionType=\"primary\"\n backgroundColor={primaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={effectiveIsCollapsed}\n isDisabled={isDisabled}\n isShrunk={\n hasSecondaryAction &&\n ((!shouldKeepFullWidth && isAutoIconsOnly) || isSecondaryExpanded)\n }\n isSolo={!hasSecondaryAction || isSecondaryHidden || effectiveIsCollapsed}\n onClick={handlePrimaryClick}\n showLabel={\n !effectiveIsCollapsed &&\n !shouldHidePrimaryLabelForMinimumWidth &&\n (shouldKeepPrimaryLabelVisible || !isAutoIconsOnly) &&\n (shouldKeepPrimaryLabelVisible || !shouldHideSecondaryForAutoCollapse) &&\n (!hasExpandableSecondaryAction || !isSecondaryExpanded)\n }\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n {hasSecondaryAction && (\n <>\n <StyledSeparator $gapColor={gapColor} $isHidden={isSecondaryHidden} />\n {hasSecondaryContextMenu ? (\n <ContextMenu\n items={secondaryContextMenu ?? []}\n ref={secondaryContextMenuRef}\n shouldDisableClick\n shouldUseDefaultTriggerStyles={false}\n shouldHidePopupArrow\n yOffset={-6}\n style={secondaryContextMenuTriggerStyle}\n >\n <ActionButton\n action={\n resolvedSecondaryAction ?? SECONDARY_CONTEXT_MENU_ACTION\n }\n actionType=\"secondary\"\n backgroundColor={\n resolvedSecondaryAction?.backgroundColor ?? backgroundColor\n }\n isCollapsed={false}\n isDisabled={isDisabled}\n isExpanded={false}\n isHidden={isSecondaryHidden}\n key=\"multi-action-secondary-context-menu\"\n onClick={handleSecondaryClick}\n showLabel={false}\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n </ContextMenu>\n ) : (\n <ActionButton\n action={\n resolvedSecondaryAction ??\n secondaryAction ??\n SECONDARY_CONTEXT_MENU_ACTION\n }\n actionType=\"secondary\"\n backgroundColor={\n resolvedSecondaryAction?.backgroundColor ?? backgroundColor\n }\n isCollapsed={false}\n isDisabled={isDisabled}\n isExpanded={!isAutoIconsOnly && isSecondaryExpanded}\n isHidden={isSecondaryHidden}\n key=\"multi-action-secondary-button\"\n onClick={handleSecondaryClick}\n onMouseEnter={handleSecondaryMouseEnter}\n onMouseLeave={handleSecondaryMouseLeave}\n showLabel={\n !isSecondaryHidden &&\n !isAutoIconsOnly &&\n isSecondaryLabelVisible\n }\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n )}\n </>\n )}\n </StyledMultiActionButton>\n </>\n );\n};\n\nMultiActionButton.displayName = 'MultiActionButton';\n\nexport default MultiActionButton;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MultiActionButton.js","names":["clsx","React","useCallback","useEffect","useMemo","useRef","useState","useElementSize","useMeasuredClone","useKeyboardFocusHighlighting","useIsTouch","ContextMenu","ActionButton","StyledMultiActionButton","StyledSeparator","getMinimumPrimaryLabelVisibleWidth","getMultiActionButtonAutoCollapseMode","getSecondaryContextMenuTriggerStyle","MultiActionButtonAutoCollapseMode","MultiActionButtonHeight","SECONDARY_CONTEXT_MENU_ACTION","icon","label","undefined","createMeasuredMultiActionButtonContent","backgroundColor","gapColor","height","primaryAction","secondaryAction","createElement","style","width","action","actionType","isCollapsed","isDisabled","isShrunk","isSolo","showLabel","shouldUseContentWidth","Fragment","$gapColor","$isHidden","isExpanded","isHidden","MultiActionButton","className","extendedTimeoutMs","Medium","secondaryContextMenu","shouldAutoCollapse","shouldUseFullWidth","shouldEnableKeyboardHighlighting","isExtendedByClick","setIsExtendedByClick","isSecondaryExpanded","setIsSecondaryExpanded","isSecondaryHovered","setIsSecondaryHovered","isSecondaryFocused","setIsSecondaryFocused","autoCollapseTimeoutRef","multiActionButtonRef","secondaryContextMenuRef","autoCollapseMode","setAutoCollapseMode","Expanded","isTouch","parentSize","shouldUseParentElement","hasSecondaryContextMenu","Boolean","length","secondaryTriggerAction","hasExpandableSecondaryAction","hasSecondaryAction","shouldShowKeyboardHighlighting","expandedMeasuredContent","measuredElement","expandedMeasuredWidth","content","availableWidth","parentWidth","Math","min","previousMode","expandedWidth","isAutoIconsOnly","IconsOnly","isAutoPrimaryOnly","PrimaryOnly","shouldKeepFullWidth","shouldHideSecondaryForAutoCollapse","effectiveIsCollapsed","resolvedSecondaryAction","isSecondaryHidden","shouldPreventSecondaryExpansion","shouldKeepPrimaryLabelVisible","minimumPrimaryLabelVisibleWidth","hasVisibleSecondaryAction","shouldHidePrimaryLabelForMinimumWidth","resolvedWidth","secondaryContextMenuTriggerStyle","clearAutoCollapseTimeout","current","window","clearTimeout","resetAutoCollapseTimeout","setTimeout","expandSecondaryByClick","handlePrimaryClick","event","payload","isExtended","onClick","handleSecondaryClick","show","handleSecondaryMouseEnter","handleSecondaryMouseLeave","handleSecondaryFocus","handleSecondaryBlur","isSecondaryLabelVisible","ref","maxWidth","items","shouldDisableClick","shouldUseDefaultTriggerStyles","shouldHidePopupArrow","yOffset","key","onMouseEnter","onMouseLeave","onFocus","onBlur","displayName"],"sources":["../../../../src/components/multi-action-button/MultiActionButton.tsx"],"sourcesContent":["import clsx from 'clsx';\nimport React, {\n FC,\n MouseEvent,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { useElementSize, useMeasuredClone } from '../../hooks/element';\nimport { useKeyboardFocusHighlighting } from '../../hooks/useKeyboardFocusHighlighting';\nimport { useIsTouch } from '../../utils/environment';\nimport ContextMenu from '../context-menu/ContextMenu';\nimport type { ContextMenuRef } from '../context-menu/ContextMenu.types';\nimport ActionButton from './action-button/ActionButton';\nimport { StyledMultiActionButton, StyledSeparator } from './MultiActionButton.styles';\nimport {\n getMinimumPrimaryLabelVisibleWidth,\n getMultiActionButtonAutoCollapseMode,\n getSecondaryContextMenuTriggerStyle,\n MultiActionButtonAutoCollapseMode,\n} from './MultiActionButton.utils';\nimport { MultiActionButtonHeight } from './MultiActionButton.types';\nimport type {\n MultiActionButtonAction,\n MultiActionButtonActionEvent,\n MultiActionButtonProps,\n} from './MultiActionButton.types';\n\nconst SECONDARY_CONTEXT_MENU_ACTION: MultiActionButtonAction = {\n icon: 'fa fa-chevron-down',\n label: undefined,\n};\n\ninterface CreateMeasuredMultiActionButtonContentOptions {\n backgroundColor?: string;\n gapColor?: string;\n height: number;\n primaryAction: MultiActionButtonAction;\n secondaryAction?: MultiActionButtonAction;\n}\n\nconst createMeasuredMultiActionButtonContent = ({\n backgroundColor,\n gapColor,\n height,\n primaryAction,\n secondaryAction,\n}: CreateMeasuredMultiActionButtonContentOptions): ReactNode => (\n <StyledMultiActionButton style={{ width: 'fit-content' }}>\n <ActionButton\n action={primaryAction}\n actionType=\"primary\"\n backgroundColor={primaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={false}\n isDisabled={false}\n isShrunk={false}\n isSolo={!secondaryAction}\n showLabel\n shouldUseContentWidth\n height={height}\n />\n {secondaryAction && (\n <>\n <StyledSeparator $gapColor={gapColor} $isHidden={false} />\n <ActionButton\n action={secondaryAction}\n actionType=\"secondary\"\n backgroundColor={secondaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={false}\n isDisabled={false}\n isExpanded={false}\n isHidden={false}\n showLabel={false}\n shouldUseContentWidth\n height={height}\n />\n </>\n )}\n </StyledMultiActionButton>\n);\n\n/**\n * Multi-action button with optional secondary action that can expand on hover/click.\n */\nconst MultiActionButton: FC<MultiActionButtonProps> = ({\n backgroundColor,\n className,\n extendedTimeoutMs = 3000,\n gapColor,\n height = MultiActionButtonHeight.Medium,\n isCollapsed = false,\n isDisabled = false,\n primaryAction,\n secondaryAction,\n secondaryContextMenu,\n shouldAutoCollapse = false,\n shouldUseFullWidth,\n shouldEnableKeyboardHighlighting,\n width,\n}) => {\n const [isExtendedByClick, setIsExtendedByClick] = useState(false);\n const [isSecondaryExpanded, setIsSecondaryExpanded] = useState(false);\n const [isSecondaryHovered, setIsSecondaryHovered] = useState(false);\n const [isSecondaryFocused, setIsSecondaryFocused] = useState(false);\n\n const autoCollapseTimeoutRef = useRef<number | null>(null);\n const multiActionButtonRef = useRef<HTMLDivElement | null>(null);\n const secondaryContextMenuRef = useRef<ContextMenuRef>(null);\n const [autoCollapseMode, setAutoCollapseMode] = useState<MultiActionButtonAutoCollapseMode>(\n MultiActionButtonAutoCollapseMode.Expanded,\n );\n\n const isTouch = useIsTouch();\n const parentSize = useElementSize(multiActionButtonRef, { shouldUseParentElement: true });\n\n const hasSecondaryContextMenu = Boolean(secondaryContextMenu?.length);\n const secondaryTriggerAction = hasSecondaryContextMenu\n ? SECONDARY_CONTEXT_MENU_ACTION\n : secondaryAction;\n const hasExpandableSecondaryAction = Boolean(secondaryAction) && !hasSecondaryContextMenu;\n const hasSecondaryAction = Boolean(secondaryTriggerAction);\n const shouldUseContentWidth = !width && !shouldUseFullWidth;\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n shouldEnableKeyboardHighlighting && !isDisabled,\n );\n\n const expandedMeasuredContent = useMemo(\n () =>\n createMeasuredMultiActionButtonContent({\n backgroundColor,\n gapColor,\n height,\n primaryAction,\n secondaryAction: secondaryTriggerAction,\n }),\n [backgroundColor, gapColor, height, primaryAction, secondaryTriggerAction],\n );\n\n const { measuredElement, width: expandedMeasuredWidth } = useMeasuredClone({\n content: expandedMeasuredContent,\n });\n\n const availableWidth = useMemo(() => {\n const parentWidth = parentSize?.width;\n\n if (typeof width === 'number') {\n return typeof parentWidth === 'number' ? Math.min(parentWidth, width) : width;\n }\n\n return parentWidth;\n }, [parentSize?.width, width]);\n\n useEffect(() => {\n if (!shouldAutoCollapse || isCollapsed) {\n setAutoCollapseMode(MultiActionButtonAutoCollapseMode.Expanded);\n return;\n }\n\n if (expandedMeasuredWidth <= 0) {\n return;\n }\n\n setAutoCollapseMode((previousMode) =>\n getMultiActionButtonAutoCollapseMode({\n availableWidth,\n expandedWidth: expandedMeasuredWidth,\n hasSecondaryAction,\n height,\n previousMode,\n }),\n );\n }, [\n availableWidth,\n expandedMeasuredWidth,\n hasSecondaryAction,\n height,\n isCollapsed,\n shouldAutoCollapse,\n ]);\n\n const isAutoIconsOnly =\n shouldAutoCollapse && autoCollapseMode === MultiActionButtonAutoCollapseMode.IconsOnly;\n const isAutoPrimaryOnly =\n shouldAutoCollapse && autoCollapseMode === MultiActionButtonAutoCollapseMode.PrimaryOnly;\n const shouldKeepFullWidth = Boolean(shouldUseFullWidth);\n const shouldHideSecondaryForAutoCollapse = hasSecondaryAction && isAutoPrimaryOnly;\n const effectiveIsCollapsed = isCollapsed || (!shouldKeepFullWidth && isAutoPrimaryOnly);\n const resolvedSecondaryAction = hasSecondaryAction ? secondaryTriggerAction : undefined;\n const isSecondaryHidden = effectiveIsCollapsed || shouldHideSecondaryForAutoCollapse;\n const shouldPreventSecondaryExpansion = isAutoIconsOnly || isSecondaryHidden;\n const shouldKeepPrimaryLabelVisible = shouldKeepFullWidth && shouldAutoCollapse;\n const minimumPrimaryLabelVisibleWidth = getMinimumPrimaryLabelVisibleWidth({\n hasVisibleSecondaryAction: hasSecondaryAction,\n height,\n });\n const shouldHidePrimaryLabelForMinimumWidth =\n shouldKeepPrimaryLabelVisible &&\n typeof availableWidth === 'number' &&\n availableWidth <= minimumPrimaryLabelVisibleWidth;\n\n const resolvedWidth = useMemo(() => {\n if (shouldKeepFullWidth) {\n return '100%';\n }\n\n if (effectiveIsCollapsed) {\n return height;\n }\n\n return width ?? 'fit-content';\n }, [effectiveIsCollapsed, height, shouldKeepFullWidth, width]);\n\n const secondaryContextMenuTriggerStyle = getSecondaryContextMenuTriggerStyle({\n height,\n isCollapsed: isSecondaryHidden,\n isExpanded: false,\n shouldUseContentWidth,\n });\n\n /**\n * Clears the current auto-collapse timer without changing visual state.\n */\n const clearAutoCollapseTimeout = useCallback(() => {\n if (autoCollapseTimeoutRef.current) {\n window.clearTimeout(autoCollapseTimeoutRef.current);\n autoCollapseTimeoutRef.current = null;\n }\n }, []);\n\n /**\n * Clears and restarts the auto-collapse timer used after click-triggered expansion.\n */\n const resetAutoCollapseTimeout = useCallback(() => {\n clearAutoCollapseTimeout();\n\n if (extendedTimeoutMs <= 0) {\n return;\n }\n\n autoCollapseTimeoutRef.current = window.setTimeout(() => {\n setIsSecondaryExpanded(false);\n setIsExtendedByClick(false);\n }, extendedTimeoutMs);\n }, [clearAutoCollapseTimeout, extendedTimeoutMs]);\n\n /**\n * Expands the secondary action and remembers that it originated from a click.\n */\n const expandSecondaryByClick = useCallback(() => {\n setIsSecondaryExpanded(true);\n setIsExtendedByClick(true);\n resetAutoCollapseTimeout();\n }, [resetAutoCollapseTimeout]);\n\n /**\n * Cleanup timers on unmount.\n */\n useEffect(\n () => () => {\n clearAutoCollapseTimeout();\n },\n [clearAutoCollapseTimeout],\n );\n\n /**\n * Collapsing the control should also reset any temporary expansion state.\n */\n useEffect(() => {\n if (effectiveIsCollapsed || shouldPreventSecondaryExpansion) {\n clearAutoCollapseTimeout();\n setIsSecondaryExpanded(false);\n setIsExtendedByClick(false);\n setIsSecondaryHovered(false);\n setIsSecondaryFocused(false);\n }\n }, [clearAutoCollapseTimeout, effectiveIsCollapsed, shouldPreventSecondaryExpansion]);\n\n /**\n * Handler for the primary action button.\n */\n const handlePrimaryClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n if (isDisabled || primaryAction.isDisabled) {\n return;\n }\n\n const payload: MultiActionButtonActionEvent = {\n action: 'primary',\n event,\n isExtended: isSecondaryExpanded,\n isTouch,\n };\n\n primaryAction.onClick?.(payload);\n },\n [isDisabled, isSecondaryExpanded, isTouch, primaryAction],\n );\n\n /**\n * Handler for the secondary action button.\n */\n const handleSecondaryClick = useCallback(\n (event: MouseEvent<HTMLButtonElement>) => {\n if (\n !resolvedSecondaryAction ||\n isSecondaryHidden ||\n isDisabled ||\n resolvedSecondaryAction.isDisabled\n ) {\n return;\n }\n\n if (hasSecondaryContextMenu) {\n secondaryContextMenuRef.current?.show();\n return;\n }\n\n const payload: MultiActionButtonActionEvent = {\n action: 'secondary',\n event,\n isExtended: isSecondaryExpanded,\n isTouch,\n };\n\n resolvedSecondaryAction.onClick?.(payload);\n if (!shouldPreventSecondaryExpansion) {\n expandSecondaryByClick();\n }\n },\n [\n expandSecondaryByClick,\n hasSecondaryContextMenu,\n isSecondaryHidden,\n isDisabled,\n isSecondaryExpanded,\n isTouch,\n resolvedSecondaryAction,\n shouldPreventSecondaryExpansion,\n ],\n );\n\n /**\n * Desktop hover behavior keeps the secondary action expanded while hovered.\n */\n const handleSecondaryMouseEnter = useCallback(() => {\n if (\n !secondaryAction ||\n isSecondaryHidden ||\n isTouch ||\n isDisabled ||\n shouldPreventSecondaryExpansion ||\n secondaryAction.isDisabled\n ) {\n return;\n }\n\n setIsSecondaryHovered(true);\n if (!isExtendedByClick) {\n setIsSecondaryExpanded(true);\n }\n }, [\n isSecondaryHidden,\n isDisabled,\n isExtendedByClick,\n isTouch,\n secondaryAction,\n shouldPreventSecondaryExpansion,\n ]);\n\n const handleSecondaryMouseLeave = useCallback(() => {\n if (isTouch) {\n return;\n }\n\n setIsSecondaryHovered(false);\n if (!isExtendedByClick && !effectiveIsCollapsed) {\n setIsSecondaryExpanded(false);\n }\n }, [effectiveIsCollapsed, isExtendedByClick, isTouch]);\n\n const handleSecondaryFocus = useCallback(() => {\n if (\n !secondaryAction ||\n isSecondaryHidden ||\n isDisabled ||\n shouldPreventSecondaryExpansion ||\n secondaryAction.isDisabled\n ) {\n return;\n }\n\n setIsSecondaryFocused(true);\n if (!isExtendedByClick) {\n setIsSecondaryExpanded(true);\n }\n }, [\n isDisabled,\n isExtendedByClick,\n isSecondaryHidden,\n secondaryAction,\n shouldPreventSecondaryExpansion,\n ]);\n\n const handleSecondaryBlur = useCallback(() => {\n setIsSecondaryFocused(false);\n if (!isExtendedByClick && !effectiveIsCollapsed) {\n setIsSecondaryExpanded(false);\n }\n }, [effectiveIsCollapsed, isExtendedByClick]);\n\n /**\n * Secondary label is visible when expanded or when hovered/focused.\n */\n const isSecondaryLabelVisible =\n isSecondaryExpanded || (!isTouch && isSecondaryHovered) || isSecondaryFocused;\n\n return (\n <>\n {measuredElement}\n <StyledMultiActionButton\n className={clsx('beta-chayns-multi-action', className)}\n ref={multiActionButtonRef}\n style={{ maxWidth: '100%', width: resolvedWidth }}\n >\n <ActionButton\n action={primaryAction}\n actionType=\"primary\"\n backgroundColor={primaryAction.backgroundColor ?? backgroundColor}\n isCollapsed={effectiveIsCollapsed}\n isDisabled={isDisabled}\n isShrunk={\n hasSecondaryAction &&\n ((!shouldKeepFullWidth && isAutoIconsOnly) || isSecondaryExpanded)\n }\n isSolo={!hasSecondaryAction || isSecondaryHidden || effectiveIsCollapsed}\n onClick={handlePrimaryClick}\n showLabel={\n !effectiveIsCollapsed &&\n !shouldHidePrimaryLabelForMinimumWidth &&\n (shouldKeepPrimaryLabelVisible || !isAutoIconsOnly) &&\n (shouldKeepPrimaryLabelVisible || !shouldHideSecondaryForAutoCollapse) &&\n (!hasExpandableSecondaryAction || !isSecondaryExpanded)\n }\n shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n {hasSecondaryAction && (\n <>\n <StyledSeparator $gapColor={gapColor} $isHidden={isSecondaryHidden} />\n {hasSecondaryContextMenu ? (\n <ContextMenu\n items={secondaryContextMenu ?? []}\n ref={secondaryContextMenuRef}\n shouldDisableClick\n shouldUseDefaultTriggerStyles={false}\n shouldHidePopupArrow\n yOffset={-6}\n style={secondaryContextMenuTriggerStyle}\n >\n <ActionButton\n action={\n resolvedSecondaryAction ?? SECONDARY_CONTEXT_MENU_ACTION\n }\n actionType=\"secondary\"\n backgroundColor={\n resolvedSecondaryAction?.backgroundColor ?? backgroundColor\n }\n isCollapsed={false}\n isDisabled={isDisabled}\n isExpanded={false}\n isHidden={isSecondaryHidden}\n key=\"multi-action-secondary-context-menu\"\n onClick={handleSecondaryClick}\n showLabel={false}\n shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n </ContextMenu>\n ) : (\n <ActionButton\n action={\n resolvedSecondaryAction ??\n secondaryAction ??\n SECONDARY_CONTEXT_MENU_ACTION\n }\n actionType=\"secondary\"\n backgroundColor={\n resolvedSecondaryAction?.backgroundColor ?? backgroundColor\n }\n isCollapsed={false}\n isDisabled={isDisabled}\n isExpanded={!isAutoIconsOnly && isSecondaryExpanded}\n isHidden={isSecondaryHidden}\n key=\"multi-action-secondary-button\"\n onClick={handleSecondaryClick}\n onMouseEnter={handleSecondaryMouseEnter}\n onMouseLeave={handleSecondaryMouseLeave}\n onFocus={handleSecondaryFocus}\n onBlur={handleSecondaryBlur}\n showLabel={\n !isSecondaryHidden &&\n !isAutoIconsOnly &&\n isSecondaryLabelVisible\n }\n shouldShowKeyboardHighlighting={shouldShowKeyboardHighlighting}\n shouldUseContentWidth={shouldUseContentWidth}\n height={height}\n />\n )}\n </>\n )}\n </StyledMultiActionButton>\n </>\n );\n};\n\nMultiActionButton.displayName = 'MultiActionButton';\n\nexport default MultiActionButton;\n"],"mappings":"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","ignoreList":[]}
@@ -9,6 +9,12 @@ export const StyledMultiActionButton = styled(motion.div)`
9
9
  position: relative;
10
10
  transition: width 0.2s ease;
11
11
  width: fit-content;
12
+
13
+ /* Keep normal clipping, but let focus-ring paint outside while focused. */
14
+ &:focus-within {
15
+ overflow: visible;
16
+ z-index: 1;
17
+ }
12
18
  `;
13
19
  export const StyledSeparator = styled.span`
14
20
  align-self: stretch;
@@ -1 +1 @@
1
- {"version":3,"file":"MultiActionButton.styles.js","names":["motion","styled","StyledMultiActionButton","div","StyledSeparator","span","$gapColor","theme","$isHidden"],"sources":["../../../../src/components/multi-action-button/MultiActionButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledMultiActionButton = styled(motion.div)`\n align-items: stretch;\n display: inline-flex;\n max-width: 100%;\n min-width: 0;\n overflow: hidden;\n position: relative;\n transition: width 0.2s ease;\n width: fit-content;\n`;\n\ntype StyledSeparatorProps = WithTheme<{\n $gapColor?: string;\n $isHidden?: boolean;\n}>;\n\nexport const StyledSeparator = styled.span<StyledSeparatorProps>`\n align-self: stretch;\n background: ${({ $gapColor, theme }) => $gapColor || theme?.['cw-body-background'] || '#fff'};\n flex: 0 0 ${({ $isHidden }) => ($isHidden ? 0 : 1)}px;\n opacity: ${({ $isHidden }) => ($isHidden ? 0 : 1)};\n overflow: hidden;\n transition:\n flex-basis 0.2s ease,\n opacity 0.2s ease,\n width 0.2s ease;\n width: ${({ $isHidden }) => ($isHidden ? 0 : 1)}px;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,MAAM,mBAAmB;AAGtC,OAAO,MAAMC,uBAAuB,GAAGD,MAAM,CAACD,MAAM,CAACG,GAAG,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOD,OAAO,MAAMC,eAAe,GAAGH,MAAM,CAACI,IAA0B;AAChE;AACA,kBAAkB,CAAC;EAAEC,SAAS;EAAEC;AAAM,CAAC,KAAKD,SAAS,IAAIC,KAAK,GAAG,oBAAoB,CAAC,IAAI,MAAM;AAChG,gBAAgB,CAAC;EAAEC;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACtD,eAAe,CAAC;EAAEA;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACrD;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEA;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACnD,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"MultiActionButton.styles.js","names":["motion","styled","StyledMultiActionButton","div","StyledSeparator","span","$gapColor","theme","$isHidden"],"sources":["../../../../src/components/multi-action-button/MultiActionButton.styles.ts"],"sourcesContent":["import { motion } from 'motion/react';\nimport styled from 'styled-components';\nimport type { WithTheme } from '../color-scheme-provider/ColorSchemeProvider';\n\nexport const StyledMultiActionButton = styled(motion.div)`\n align-items: stretch;\n display: inline-flex;\n max-width: 100%;\n min-width: 0;\n overflow: hidden;\n position: relative;\n transition: width 0.2s ease;\n width: fit-content;\n\n /* Keep normal clipping, but let focus-ring paint outside while focused. */\n &:focus-within {\n overflow: visible;\n z-index: 1;\n }\n`;\n\ntype StyledSeparatorProps = WithTheme<{\n $gapColor?: string;\n $isHidden?: boolean;\n}>;\n\nexport const StyledSeparator = styled.span<StyledSeparatorProps>`\n align-self: stretch;\n background: ${({ $gapColor, theme }) => $gapColor || theme?.['cw-body-background'] || '#fff'};\n flex: 0 0 ${({ $isHidden }) => ($isHidden ? 0 : 1)}px;\n opacity: ${({ $isHidden }) => ($isHidden ? 0 : 1)};\n overflow: hidden;\n transition:\n flex-basis 0.2s ease,\n opacity 0.2s ease,\n width 0.2s ease;\n width: ${({ $isHidden }) => ($isHidden ? 0 : 1)}px;\n`;\n"],"mappings":"AAAA,SAASA,MAAM,QAAQ,cAAc;AACrC,OAAOC,MAAM,MAAM,mBAAmB;AAGtC,OAAO,MAAMC,uBAAuB,GAAGD,MAAM,CAACD,MAAM,CAACG,GAAG,CAAC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAOD,OAAO,MAAMC,eAAe,GAAGH,MAAM,CAACI,IAA0B;AAChE;AACA,kBAAkB,CAAC;EAAEC,SAAS;EAAEC;AAAM,CAAC,KAAKD,SAAS,IAAIC,KAAK,GAAG,oBAAoB,CAAC,IAAI,MAAM;AAChG,gBAAgB,CAAC;EAAEC;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACtD,eAAe,CAAC;EAAEA;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACrD;AACA;AACA;AACA;AACA;AACA,aAAa,CAAC;EAAEA;AAAU,CAAC,KAAMA,SAAS,GAAG,CAAC,GAAG,CAAE;AACnD,CAAC","ignoreList":[]}