@mattermost/compass-ui 0.1.0-alpha.10 → 0.1.0-alpha.12

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 (458) hide show
  1. package/README.md +5 -4
  2. package/dist/components/action-button/ActionButton.cjs +1 -1
  3. package/dist/components/action-button/ActionButton.cjs.map +1 -1
  4. package/dist/components/action-button/ActionButton.d.ts +2 -1
  5. package/dist/components/action-button/ActionButton.d.ts.map +1 -1
  6. package/dist/components/action-button/ActionButton.js +36 -31
  7. package/dist/components/action-button/ActionButton.js.map +1 -1
  8. package/dist/components/admin-console-header/AdminConsoleHeader.cjs.map +1 -1
  9. package/dist/components/admin-console-header/AdminConsoleHeader.d.ts.map +1 -1
  10. package/dist/components/admin-console-header/AdminConsoleHeader.js.map +1 -1
  11. package/dist/components/admin-panel/AdminPanel.cjs.map +1 -1
  12. package/dist/components/admin-panel/AdminPanel.d.ts.map +1 -1
  13. package/dist/components/admin-panel/AdminPanel.js.map +1 -1
  14. package/dist/components/admin-panel/index.d.ts +1 -1
  15. package/dist/components/admin-panel/index.d.ts.map +1 -1
  16. package/dist/components/admin-panel-footer/AdminPanelFooter.cjs.map +1 -1
  17. package/dist/components/admin-panel-footer/AdminPanelFooter.d.ts.map +1 -1
  18. package/dist/components/admin-panel-footer/AdminPanelFooter.js +1 -8
  19. package/dist/components/admin-panel-footer/AdminPanelFooter.js.map +1 -1
  20. package/dist/components/admin-panel-header/AdminPanelHeader.cjs.map +1 -1
  21. package/dist/components/admin-panel-header/AdminPanelHeader.d.ts.map +1 -1
  22. package/dist/components/admin-panel-header/AdminPanelHeader.js +2 -16
  23. package/dist/components/admin-panel-header/AdminPanelHeader.js.map +1 -1
  24. package/dist/components/attachment-card/AttachmentCard.cjs.map +1 -1
  25. package/dist/components/attachment-card/AttachmentCard.d.ts.map +1 -1
  26. package/dist/components/attachment-card/AttachmentCard.js.map +1 -1
  27. package/dist/components/button/Button.cjs +1 -1
  28. package/dist/components/button/Button.cjs.map +1 -1
  29. package/dist/components/button/Button.d.ts +4 -3
  30. package/dist/components/button/Button.d.ts.map +1 -1
  31. package/dist/components/button/Button.js +39 -23
  32. package/dist/components/button/Button.js.map +1 -1
  33. package/dist/components/card-button/CardButton.cjs +1 -1
  34. package/dist/components/card-button/CardButton.cjs.map +1 -1
  35. package/dist/components/card-button/CardButton.d.ts +2 -1
  36. package/dist/components/card-button/CardButton.d.ts.map +1 -1
  37. package/dist/components/card-button/CardButton.js +47 -42
  38. package/dist/components/card-button/CardButton.js.map +1 -1
  39. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.cjs.map +1 -1
  40. package/dist/components/channel-info-msg-header/ChannelInfoMsgHeader.js.map +1 -1
  41. package/dist/components/checkbox/Checkbox.cjs +1 -1
  42. package/dist/components/checkbox/Checkbox.cjs.map +1 -1
  43. package/dist/components/checkbox/Checkbox.d.ts +2 -1
  44. package/dist/components/checkbox/Checkbox.d.ts.map +1 -1
  45. package/dist/components/checkbox/Checkbox.js +39 -37
  46. package/dist/components/checkbox/Checkbox.js.map +1 -1
  47. package/dist/components/chip/Chip.cjs.map +1 -1
  48. package/dist/components/chip/Chip.d.ts.map +1 -1
  49. package/dist/components/chip/Chip.js.map +1 -1
  50. package/dist/components/chip/ChipGroup.cjs.map +1 -1
  51. package/dist/components/chip/ChipGroup.d.ts.map +1 -1
  52. package/dist/components/chip/ChipGroup.js.map +1 -1
  53. package/dist/components/combobox/Combobox.cjs +1 -1
  54. package/dist/components/combobox/Combobox.cjs.map +1 -1
  55. package/dist/components/combobox/Combobox.css +1 -1
  56. package/dist/components/combobox/Combobox.d.ts +30 -1
  57. package/dist/components/combobox/Combobox.d.ts.map +1 -1
  58. package/dist/components/combobox/Combobox.js +381 -276
  59. package/dist/components/combobox/Combobox.js.map +1 -1
  60. package/dist/components/combobox/Combobox.module.scss.cjs +1 -1
  61. package/dist/components/combobox/Combobox.module.scss.js +24 -22
  62. package/dist/components/combobox/Combobox.module.scss.js.map +1 -1
  63. package/dist/components/combobox/index.d.ts +1 -1
  64. package/dist/components/combobox/index.d.ts.map +1 -1
  65. package/dist/components/date-range-picker/DateRangePicker.cjs.map +1 -1
  66. package/dist/components/date-range-picker/DateRangePicker.css +1 -1
  67. package/dist/components/date-range-picker/DateRangePicker.d.ts.map +1 -1
  68. package/dist/components/date-range-picker/DateRangePicker.js +27 -10
  69. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  70. package/dist/components/date-range-picker/DateRangePicker.module.scss.cjs +1 -1
  71. package/dist/components/date-range-picker/DateRangePicker.module.scss.js +26 -26
  72. package/dist/components/emoji/Emoji.cjs.map +1 -1
  73. package/dist/components/emoji/Emoji.d.ts.map +1 -1
  74. package/dist/components/emoji/Emoji.js +1 -5
  75. package/dist/components/emoji/Emoji.js.map +1 -1
  76. package/dist/components/emoji-button/EmojiButton.cjs.map +1 -1
  77. package/dist/components/emoji-button/EmojiButton.d.ts.map +1 -1
  78. package/dist/components/emoji-button/EmojiButton.js +10 -1
  79. package/dist/components/emoji-button/EmojiButton.js.map +1 -1
  80. package/dist/components/emoji-popover/EmojiPopover.cjs.map +1 -1
  81. package/dist/components/emoji-popover/EmojiPopover.d.ts.map +1 -1
  82. package/dist/components/emoji-popover/EmojiPopover.js +34 -17
  83. package/dist/components/emoji-popover/EmojiPopover.js.map +1 -1
  84. package/dist/components/empty-state/EmptyState.cjs.map +1 -1
  85. package/dist/components/empty-state/EmptyState.d.ts +2 -2
  86. package/dist/components/empty-state/EmptyState.d.ts.map +1 -1
  87. package/dist/components/empty-state/EmptyState.js.map +1 -1
  88. package/dist/components/error-message/ErrorMessage.cjs.map +1 -1
  89. package/dist/components/error-message/ErrorMessage.d.ts +3 -2
  90. package/dist/components/error-message/ErrorMessage.d.ts.map +1 -1
  91. package/dist/components/error-message/ErrorMessage.js.map +1 -1
  92. package/dist/components/icon/Icon.js +2 -2
  93. package/dist/components/icon/index.d.ts +1 -1
  94. package/dist/components/icon/index.d.ts.map +1 -1
  95. package/dist/components/icon-button/IconButton.cjs +1 -1
  96. package/dist/components/icon-button/IconButton.cjs.map +1 -1
  97. package/dist/components/icon-button/IconButton.d.ts +2 -1
  98. package/dist/components/icon-button/IconButton.d.ts.map +1 -1
  99. package/dist/components/icon-button/IconButton.js +61 -57
  100. package/dist/components/icon-button/IconButton.js.map +1 -1
  101. package/dist/components/image-preview/ImagePreview.cjs.map +1 -1
  102. package/dist/components/image-preview/ImagePreview.d.ts.map +1 -1
  103. package/dist/components/image-preview/ImagePreview.js +8 -1
  104. package/dist/components/image-preview/ImagePreview.js.map +1 -1
  105. package/dist/components/link-preview/LinkPreview.cjs.map +1 -1
  106. package/dist/components/link-preview/LinkPreview.d.ts.map +1 -1
  107. package/dist/components/link-preview/LinkPreview.js +1 -7
  108. package/dist/components/link-preview/LinkPreview.js.map +1 -1
  109. package/dist/components/link-preview/index.d.ts +1 -1
  110. package/dist/components/link-preview/index.d.ts.map +1 -1
  111. package/dist/components/menu-item/MenuItem.cjs +1 -1
  112. package/dist/components/menu-item/MenuItem.cjs.map +1 -1
  113. package/dist/components/menu-item/MenuItem.d.ts +4 -3
  114. package/dist/components/menu-item/MenuItem.d.ts.map +1 -1
  115. package/dist/components/menu-item/MenuItem.js +55 -43
  116. package/dist/components/menu-item/MenuItem.js.map +1 -1
  117. package/dist/components/message-actions/index.d.ts +1 -1
  118. package/dist/components/message-actions/index.d.ts.map +1 -1
  119. package/dist/components/message-separator/MessageSeparator.cjs.map +1 -1
  120. package/dist/components/message-separator/MessageSeparator.css +1 -1
  121. package/dist/components/message-separator/MessageSeparator.d.ts.map +1 -1
  122. package/dist/components/message-separator/MessageSeparator.js +8 -1
  123. package/dist/components/message-separator/MessageSeparator.js.map +1 -1
  124. package/dist/components/message-separator/MessageSeparator.module.scss.cjs +1 -1
  125. package/dist/components/message-separator/MessageSeparator.module.scss.js +11 -11
  126. package/dist/components/new-message-banner/NewMessageBanner.cjs.map +1 -1
  127. package/dist/components/new-message-banner/NewMessageBanner.d.ts.map +1 -1
  128. package/dist/components/new-message-banner/NewMessageBanner.js +1 -5
  129. package/dist/components/new-message-banner/NewMessageBanner.js.map +1 -1
  130. package/dist/components/permalink-preview/PermalinkPreview.cjs +1 -1
  131. package/dist/components/permalink-preview/PermalinkPreview.cjs.map +1 -1
  132. package/dist/components/permalink-preview/PermalinkPreview.css +1 -1
  133. package/dist/components/permalink-preview/PermalinkPreview.d.ts +9 -2
  134. package/dist/components/permalink-preview/PermalinkPreview.d.ts.map +1 -1
  135. package/dist/components/permalink-preview/PermalinkPreview.js +66 -25
  136. package/dist/components/permalink-preview/PermalinkPreview.js.map +1 -1
  137. package/dist/components/permalink-preview/PermalinkPreview.module.scss.cjs +1 -1
  138. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js +13 -9
  139. package/dist/components/permalink-preview/PermalinkPreview.module.scss.js.map +1 -1
  140. package/dist/components/popover-menu/PopoverMenu.cjs.map +1 -1
  141. package/dist/components/popover-menu/PopoverMenu.d.ts +1 -2
  142. package/dist/components/popover-menu/PopoverMenu.d.ts.map +1 -1
  143. package/dist/components/popover-menu/PopoverMenu.js.map +1 -1
  144. package/dist/components/popover-notice/PopoverNotice.cjs.map +1 -1
  145. package/dist/components/popover-notice/PopoverNotice.d.ts +4 -3
  146. package/dist/components/popover-notice/PopoverNotice.d.ts.map +1 -1
  147. package/dist/components/popover-notice/PopoverNotice.js.map +1 -1
  148. package/dist/components/profile-popover/ProfilePopover.cjs.map +1 -1
  149. package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -1
  150. package/dist/components/profile-popover/ProfilePopover.js +14 -1
  151. package/dist/components/profile-popover/ProfilePopover.js.map +1 -1
  152. package/dist/components/progress-bar/ProgressBar.cjs +1 -1
  153. package/dist/components/progress-bar/ProgressBar.cjs.map +1 -1
  154. package/dist/components/progress-bar/ProgressBar.css +1 -1
  155. package/dist/components/progress-bar/ProgressBar.d.ts +6 -1
  156. package/dist/components/progress-bar/ProgressBar.d.ts.map +1 -1
  157. package/dist/components/progress-bar/ProgressBar.js +21 -15
  158. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  159. package/dist/components/progress-bar/ProgressBar.module.scss.cjs +1 -1
  160. package/dist/components/progress-bar/ProgressBar.module.scss.js +9 -8
  161. package/dist/components/progress-bar/ProgressBar.module.scss.js.map +1 -1
  162. package/dist/components/radio/Radio.cjs +1 -1
  163. package/dist/components/radio/Radio.cjs.map +1 -1
  164. package/dist/components/radio/Radio.d.ts +2 -1
  165. package/dist/components/radio/Radio.d.ts.map +1 -1
  166. package/dist/components/radio/Radio.js +15 -13
  167. package/dist/components/radio/Radio.js.map +1 -1
  168. package/dist/components/reactions-row/ReactionsRow.cjs.map +1 -1
  169. package/dist/components/reactions-row/ReactionsRow.d.ts.map +1 -1
  170. package/dist/components/reactions-row/ReactionsRow.js.map +1 -1
  171. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs +1 -1
  172. package/dist/components/right-sidebar-header/RightSidebarHeader.cjs.map +1 -1
  173. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts +4 -2
  174. package/dist/components/right-sidebar-header/RightSidebarHeader.d.ts.map +1 -1
  175. package/dist/components/right-sidebar-header/RightSidebarHeader.js +51 -43
  176. package/dist/components/right-sidebar-header/RightSidebarHeader.js.map +1 -1
  177. package/dist/components/search-input/SearchInput.cjs.map +1 -1
  178. package/dist/components/search-input/SearchInput.d.ts.map +1 -1
  179. package/dist/components/search-input/SearchInput.js.map +1 -1
  180. package/dist/components/section-notice/SectionNotice.cjs.map +1 -1
  181. package/dist/components/section-notice/SectionNotice.d.ts +4 -4
  182. package/dist/components/section-notice/SectionNotice.d.ts.map +1 -1
  183. package/dist/components/section-notice/SectionNotice.js.map +1 -1
  184. package/dist/components/select/Select.cjs.map +1 -1
  185. package/dist/components/select/Select.d.ts.map +1 -1
  186. package/dist/components/select/Select.js.map +1 -1
  187. package/dist/components/switch/Switch.cjs +1 -1
  188. package/dist/components/switch/Switch.cjs.map +1 -1
  189. package/dist/components/switch/Switch.d.ts +2 -1
  190. package/dist/components/switch/Switch.d.ts.map +1 -1
  191. package/dist/components/switch/Switch.js +31 -29
  192. package/dist/components/switch/Switch.js.map +1 -1
  193. package/dist/components/tabs/Tabs.cjs +1 -1
  194. package/dist/components/tabs/Tabs.cjs.map +1 -1
  195. package/dist/components/tabs/Tabs.css +1 -1
  196. package/dist/components/tabs/Tabs.d.ts +6 -2
  197. package/dist/components/tabs/Tabs.d.ts.map +1 -1
  198. package/dist/components/tabs/Tabs.js +47 -39
  199. package/dist/components/tabs/Tabs.js.map +1 -1
  200. package/dist/components/tabs/Tabs.module.scss.cjs +1 -1
  201. package/dist/components/tabs/Tabs.module.scss.js +13 -12
  202. package/dist/components/tabs/Tabs.module.scss.js.map +1 -1
  203. package/dist/components/tag/Tag.cjs.map +1 -1
  204. package/dist/components/tag/Tag.css +1 -1
  205. package/dist/components/tag/Tag.d.ts +2 -2
  206. package/dist/components/tag/Tag.d.ts.map +1 -1
  207. package/dist/components/tag/Tag.js.map +1 -1
  208. package/dist/components/tag/Tag.module.scss.cjs +1 -1
  209. package/dist/components/tag/Tag.module.scss.js +11 -11
  210. package/dist/components/thread-footer/ThreadFooter.cjs +1 -1
  211. package/dist/components/thread-footer/ThreadFooter.cjs.map +1 -1
  212. package/dist/components/thread-footer/ThreadFooter.css +1 -1
  213. package/dist/components/thread-footer/ThreadFooter.d.ts.map +1 -1
  214. package/dist/components/thread-footer/ThreadFooter.js +39 -43
  215. package/dist/components/thread-footer/ThreadFooter.js.map +1 -1
  216. package/dist/components/thread-footer/ThreadFooter.module.scss.cjs +1 -1
  217. package/dist/components/thread-footer/ThreadFooter.module.scss.js +18 -17
  218. package/dist/components/thread-footer/ThreadFooter.module.scss.js.map +1 -1
  219. package/dist/components/thread-list-item/ThreadListItem.cjs.map +1 -1
  220. package/dist/components/thread-list-item/ThreadListItem.d.ts.map +1 -1
  221. package/dist/components/thread-list-item/ThreadListItem.js +3 -1
  222. package/dist/components/thread-list-item/ThreadListItem.js.map +1 -1
  223. package/dist/components/toast/Toast.cjs.map +1 -1
  224. package/dist/components/toast/Toast.d.ts +3 -2
  225. package/dist/components/toast/Toast.d.ts.map +1 -1
  226. package/dist/components/toast/Toast.js.map +1 -1
  227. package/dist/components/tooltip/Tooltip.cjs +1 -1
  228. package/dist/components/tooltip/Tooltip.cjs.map +1 -1
  229. package/dist/components/tooltip/Tooltip.d.ts +3 -3
  230. package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
  231. package/dist/components/tooltip/Tooltip.js +9 -9
  232. package/dist/components/tooltip/Tooltip.js.map +1 -1
  233. package/dist/components/tour-point/TourPoint.cjs.map +1 -1
  234. package/dist/components/tour-point/TourPoint.d.ts.map +1 -1
  235. package/dist/components/tour-point/TourPoint.js +8 -6
  236. package/dist/components/tour-point/TourPoint.js.map +1 -1
  237. package/dist/components/user-avatar-group/UserAvatarGroup.cjs.map +1 -1
  238. package/dist/components/user-avatar-group/UserAvatarGroup.d.ts.map +1 -1
  239. package/dist/components/user-avatar-group/UserAvatarGroup.js +23 -30
  240. package/dist/components/user-avatar-group/UserAvatarGroup.js.map +1 -1
  241. package/dist/hooks/use-anchored-popup-portal.cjs.map +1 -1
  242. package/dist/hooks/use-anchored-popup-portal.d.ts.map +1 -1
  243. package/dist/hooks/use-anchored-popup-portal.js +1 -3
  244. package/dist/hooks/use-anchored-popup-portal.js.map +1 -1
  245. package/dist/illustrations/incoming-webhook.svg.cjs +1 -1
  246. package/dist/illustrations/incoming-webhook.svg.cjs.map +1 -1
  247. package/dist/illustrations/incoming-webhook.svg.js +1 -1
  248. package/dist/illustrations/incoming-webhook.svg.js.map +1 -1
  249. package/dist/index.cjs +1 -1
  250. package/dist/index.d.ts +0 -14
  251. package/dist/index.d.ts.map +1 -1
  252. package/dist/index.js +170 -204
  253. package/dist/index.js.map +1 -1
  254. package/dist/utils/anchoredPopupPlacement.cjs.map +1 -1
  255. package/dist/utils/anchoredPopupPlacement.d.ts.map +1 -1
  256. package/dist/utils/anchoredPopupPlacement.js +4 -1
  257. package/dist/utils/anchoredPopupPlacement.js.map +1 -1
  258. package/package.json +1 -44
  259. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs +0 -2
  260. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.cjs.map +0 -1
  261. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.css +0 -1
  262. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts +0 -12
  263. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.d.ts.map +0 -1
  264. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js +0 -122
  265. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.js.map +0 -1
  266. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs +0 -2
  267. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.cjs.map +0 -1
  268. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js +0 -20
  269. package/dist/components/admin-console-sidebar/AdminConsoleSidebar.module.scss.js.map +0 -1
  270. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts +0 -14
  271. package/dist/components/admin-console-sidebar/adminConsoleSidebarModel.d.ts.map +0 -1
  272. package/dist/components/admin-console-sidebar/index.cjs +0 -2
  273. package/dist/components/admin-console-sidebar/index.cjs.map +0 -1
  274. package/dist/components/admin-console-sidebar/index.d.ts +0 -4
  275. package/dist/components/admin-console-sidebar/index.d.ts.map +0 -1
  276. package/dist/components/admin-console-sidebar/index.js +0 -5
  277. package/dist/components/admin-console-sidebar/index.js.map +0 -1
  278. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs +0 -2
  279. package/dist/components/channel-category-menu/ChannelCategoryMenu.cjs.map +0 -1
  280. package/dist/components/channel-category-menu/ChannelCategoryMenu.css +0 -1
  281. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts +0 -10
  282. package/dist/components/channel-category-menu/ChannelCategoryMenu.d.ts.map +0 -1
  283. package/dist/components/channel-category-menu/ChannelCategoryMenu.js +0 -103
  284. package/dist/components/channel-category-menu/ChannelCategoryMenu.js.map +0 -1
  285. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs +0 -2
  286. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.cjs.map +0 -1
  287. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js +0 -8
  288. package/dist/components/channel-category-menu/ChannelCategoryMenu.module.scss.js.map +0 -1
  289. package/dist/components/channel-category-menu/index.cjs +0 -2
  290. package/dist/components/channel-category-menu/index.cjs.map +0 -1
  291. package/dist/components/channel-category-menu/index.d.ts +0 -3
  292. package/dist/components/channel-category-menu/index.d.ts.map +0 -1
  293. package/dist/components/channel-category-menu/index.js +0 -5
  294. package/dist/components/channel-category-menu/index.js.map +0 -1
  295. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs +0 -2
  296. package/dist/components/channel-header-menu/ChannelHeaderMenu.cjs.map +0 -1
  297. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts +0 -8
  298. package/dist/components/channel-header-menu/ChannelHeaderMenu.d.ts.map +0 -1
  299. package/dist/components/channel-header-menu/ChannelHeaderMenu.js +0 -115
  300. package/dist/components/channel-header-menu/ChannelHeaderMenu.js.map +0 -1
  301. package/dist/components/channel-header-menu/index.cjs +0 -2
  302. package/dist/components/channel-header-menu/index.cjs.map +0 -1
  303. package/dist/components/channel-header-menu/index.d.ts +0 -3
  304. package/dist/components/channel-header-menu/index.d.ts.map +0 -1
  305. package/dist/components/channel-header-menu/index.js +0 -5
  306. package/dist/components/channel-header-menu/index.js.map +0 -1
  307. package/dist/components/channel-menu/ChannelMenu.cjs +0 -2
  308. package/dist/components/channel-menu/ChannelMenu.cjs.map +0 -1
  309. package/dist/components/channel-menu/ChannelMenu.d.ts +0 -8
  310. package/dist/components/channel-menu/ChannelMenu.d.ts.map +0 -1
  311. package/dist/components/channel-menu/ChannelMenu.js +0 -91
  312. package/dist/components/channel-menu/ChannelMenu.js.map +0 -1
  313. package/dist/components/channel-menu/index.cjs +0 -2
  314. package/dist/components/channel-menu/index.cjs.map +0 -1
  315. package/dist/components/channel-menu/index.d.ts +0 -3
  316. package/dist/components/channel-menu/index.d.ts.map +0 -1
  317. package/dist/components/channel-menu/index.js +0 -5
  318. package/dist/components/channel-menu/index.js.map +0 -1
  319. package/dist/components/channels-sidebar/ChannelsSidebar.cjs +0 -2
  320. package/dist/components/channels-sidebar/ChannelsSidebar.cjs.map +0 -1
  321. package/dist/components/channels-sidebar/ChannelsSidebar.css +0 -1
  322. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts +0 -57
  323. package/dist/components/channels-sidebar/ChannelsSidebar.d.ts.map +0 -1
  324. package/dist/components/channels-sidebar/ChannelsSidebar.js +0 -177
  325. package/dist/components/channels-sidebar/ChannelsSidebar.js.map +0 -1
  326. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs +0 -2
  327. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.cjs.map +0 -1
  328. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js +0 -35
  329. package/dist/components/channels-sidebar/ChannelsSidebar.module.scss.js.map +0 -1
  330. package/dist/components/channels-sidebar/channelsSidebarModel.cjs +0 -2
  331. package/dist/components/channels-sidebar/channelsSidebarModel.cjs.map +0 -1
  332. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts +0 -22
  333. package/dist/components/channels-sidebar/channelsSidebarModel.d.ts.map +0 -1
  334. package/dist/components/channels-sidebar/channelsSidebarModel.js +0 -20
  335. package/dist/components/channels-sidebar/channelsSidebarModel.js.map +0 -1
  336. package/dist/components/channels-sidebar/index.cjs +0 -2
  337. package/dist/components/channels-sidebar/index.cjs.map +0 -1
  338. package/dist/components/channels-sidebar/index.d.ts +0 -6
  339. package/dist/components/channels-sidebar/index.d.ts.map +0 -1
  340. package/dist/components/channels-sidebar/index.js +0 -12
  341. package/dist/components/channels-sidebar/index.js.map +0 -1
  342. package/dist/components/global-header/GlobalHeader.cjs +0 -2
  343. package/dist/components/global-header/GlobalHeader.cjs.map +0 -1
  344. package/dist/components/global-header/GlobalHeader.css +0 -1
  345. package/dist/components/global-header/GlobalHeader.d.ts +0 -28
  346. package/dist/components/global-header/GlobalHeader.d.ts.map +0 -1
  347. package/dist/components/global-header/GlobalHeader.js +0 -157
  348. package/dist/components/global-header/GlobalHeader.js.map +0 -1
  349. package/dist/components/global-header/GlobalHeader.module.scss.cjs +0 -2
  350. package/dist/components/global-header/GlobalHeader.module.scss.cjs.map +0 -1
  351. package/dist/components/global-header/GlobalHeader.module.scss.js +0 -20
  352. package/dist/components/global-header/GlobalHeader.module.scss.js.map +0 -1
  353. package/dist/components/global-header/index.cjs +0 -2
  354. package/dist/components/global-header/index.cjs.map +0 -1
  355. package/dist/components/global-header/index.d.ts +0 -3
  356. package/dist/components/global-header/index.d.ts.map +0 -1
  357. package/dist/components/global-header/index.js +0 -5
  358. package/dist/components/global-header/index.js.map +0 -1
  359. package/dist/components/help-menu/HelpMenu.cjs +0 -2
  360. package/dist/components/help-menu/HelpMenu.cjs.map +0 -1
  361. package/dist/components/help-menu/HelpMenu.d.ts +0 -8
  362. package/dist/components/help-menu/HelpMenu.d.ts.map +0 -1
  363. package/dist/components/help-menu/HelpMenu.js +0 -64
  364. package/dist/components/help-menu/HelpMenu.js.map +0 -1
  365. package/dist/components/help-menu/index.cjs +0 -2
  366. package/dist/components/help-menu/index.cjs.map +0 -1
  367. package/dist/components/help-menu/index.d.ts +0 -3
  368. package/dist/components/help-menu/index.d.ts.map +0 -1
  369. package/dist/components/help-menu/index.js +0 -5
  370. package/dist/components/help-menu/index.js.map +0 -1
  371. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs +0 -2
  372. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.cjs.map +0 -1
  373. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts +0 -12
  374. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.d.ts.map +0 -1
  375. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js +0 -172
  376. package/dist/components/message-more-options-menu/MessageMoreOptionsMenu.js.map +0 -1
  377. package/dist/components/message-more-options-menu/index.cjs +0 -2
  378. package/dist/components/message-more-options-menu/index.cjs.map +0 -1
  379. package/dist/components/message-more-options-menu/index.d.ts +0 -3
  380. package/dist/components/message-more-options-menu/index.d.ts.map +0 -1
  381. package/dist/components/message-more-options-menu/index.js +0 -5
  382. package/dist/components/message-more-options-menu/index.js.map +0 -1
  383. package/dist/components/plus-menu/PlusMenu.cjs +0 -2
  384. package/dist/components/plus-menu/PlusMenu.cjs.map +0 -1
  385. package/dist/components/plus-menu/PlusMenu.d.ts +0 -8
  386. package/dist/components/plus-menu/PlusMenu.d.ts.map +0 -1
  387. package/dist/components/plus-menu/PlusMenu.js +0 -69
  388. package/dist/components/plus-menu/PlusMenu.js.map +0 -1
  389. package/dist/components/plus-menu/index.cjs +0 -2
  390. package/dist/components/plus-menu/index.cjs.map +0 -1
  391. package/dist/components/plus-menu/index.d.ts +0 -3
  392. package/dist/components/plus-menu/index.d.ts.map +0 -1
  393. package/dist/components/plus-menu/index.js +0 -5
  394. package/dist/components/plus-menu/index.js.map +0 -1
  395. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs +0 -2
  396. package/dist/components/product-switcher-menu/ProductSwitcherMenu.cjs.map +0 -1
  397. package/dist/components/product-switcher-menu/ProductSwitcherMenu.css +0 -1
  398. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts +0 -47
  399. package/dist/components/product-switcher-menu/ProductSwitcherMenu.d.ts.map +0 -1
  400. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js +0 -110
  401. package/dist/components/product-switcher-menu/ProductSwitcherMenu.js.map +0 -1
  402. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs +0 -2
  403. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.cjs.map +0 -1
  404. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js +0 -8
  405. package/dist/components/product-switcher-menu/ProductSwitcherMenu.module.scss.js.map +0 -1
  406. package/dist/components/product-switcher-menu/index.cjs +0 -2
  407. package/dist/components/product-switcher-menu/index.cjs.map +0 -1
  408. package/dist/components/product-switcher-menu/index.d.ts +0 -4
  409. package/dist/components/product-switcher-menu/index.d.ts.map +0 -1
  410. package/dist/components/product-switcher-menu/index.js +0 -6
  411. package/dist/components/product-switcher-menu/index.js.map +0 -1
  412. package/dist/components/team-menu/TeamMenu.cjs +0 -2
  413. package/dist/components/team-menu/TeamMenu.cjs.map +0 -1
  414. package/dist/components/team-menu/TeamMenu.css +0 -1
  415. package/dist/components/team-menu/TeamMenu.d.ts +0 -15
  416. package/dist/components/team-menu/TeamMenu.d.ts.map +0 -1
  417. package/dist/components/team-menu/TeamMenu.js +0 -107
  418. package/dist/components/team-menu/TeamMenu.js.map +0 -1
  419. package/dist/components/team-menu/TeamMenu.module.scss.cjs +0 -2
  420. package/dist/components/team-menu/TeamMenu.module.scss.cjs.map +0 -1
  421. package/dist/components/team-menu/TeamMenu.module.scss.js +0 -7
  422. package/dist/components/team-menu/TeamMenu.module.scss.js.map +0 -1
  423. package/dist/components/team-menu/index.cjs +0 -2
  424. package/dist/components/team-menu/index.cjs.map +0 -1
  425. package/dist/components/team-menu/index.d.ts +0 -3
  426. package/dist/components/team-menu/index.d.ts.map +0 -1
  427. package/dist/components/team-menu/index.js +0 -5
  428. package/dist/components/team-menu/index.js.map +0 -1
  429. package/dist/components/team-sidebar/TeamSidebar.cjs +0 -2
  430. package/dist/components/team-sidebar/TeamSidebar.cjs.map +0 -1
  431. package/dist/components/team-sidebar/TeamSidebar.css +0 -1
  432. package/dist/components/team-sidebar/TeamSidebar.d.ts +0 -21
  433. package/dist/components/team-sidebar/TeamSidebar.d.ts.map +0 -1
  434. package/dist/components/team-sidebar/TeamSidebar.js +0 -85
  435. package/dist/components/team-sidebar/TeamSidebar.js.map +0 -1
  436. package/dist/components/team-sidebar/TeamSidebar.module.scss.cjs +0 -2
  437. package/dist/components/team-sidebar/TeamSidebar.module.scss.cjs.map +0 -1
  438. package/dist/components/team-sidebar/TeamSidebar.module.scss.js +0 -13
  439. package/dist/components/team-sidebar/TeamSidebar.module.scss.js.map +0 -1
  440. package/dist/components/team-sidebar/index.cjs +0 -2
  441. package/dist/components/team-sidebar/index.cjs.map +0 -1
  442. package/dist/components/team-sidebar/index.d.ts +0 -3
  443. package/dist/components/team-sidebar/index.d.ts.map +0 -1
  444. package/dist/components/team-sidebar/index.js +0 -5
  445. package/dist/components/team-sidebar/index.js.map +0 -1
  446. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs +0 -2
  447. package/dist/components/thread-actions-menu/ThreadActionsMenu.cjs.map +0 -1
  448. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts +0 -8
  449. package/dist/components/thread-actions-menu/ThreadActionsMenu.d.ts.map +0 -1
  450. package/dist/components/thread-actions-menu/ThreadActionsMenu.js +0 -77
  451. package/dist/components/thread-actions-menu/ThreadActionsMenu.js.map +0 -1
  452. package/dist/components/thread-actions-menu/index.cjs +0 -2
  453. package/dist/components/thread-actions-menu/index.cjs.map +0 -1
  454. package/dist/components/thread-actions-menu/index.d.ts +0 -3
  455. package/dist/components/thread-actions-menu/index.d.ts.map +0 -1
  456. package/dist/components/thread-actions-menu/index.js +0 -5
  457. package/dist/components/thread-actions-menu/index.js.map +0 -1
  458. package/dist/index.css +0 -162
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.cjs","sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport Chip from '@/components/chip/Chip';\nimport ChipGroup from '@/components/chip/ChipGroup';\nimport type { ChipSize } from '@/components/chip/Chip';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport MenuItem from '@/components/menu-item/MenuItem';\nimport PopoverMenu, {\n PopoverMenuScroll,\n} from '@/components/popover-menu/PopoverMenu';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport { toKebab } from '@/utils/string';\nimport styles from './Combobox.module.scss';\n\nexport type ComboboxSize = 'small' | 'medium' | 'large';\n\nexport type ComboboxOption = {\n value: string;\n label: string;\n disabled?: boolean;\n /** Leading content for the list row (icon or avatar node). */\n leadingVisual?: ReactNode;\n /** Avatar for chips / list when a photo is preferred over `leadingVisual`. */\n leadingAvatar?: { src: string; alt: string };\n secondaryLabel?: string;\n};\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n /** When true, selected values render as removable chips. Default: false. */\n multiple?: boolean;\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n label?: ReactNode;\n placeholder?: string;\n leadingIcon?: ReactNode;\n size?: ComboboxSize;\n invalid?: boolean;\n disabled?: boolean;\n /**\n * Client-side filter. `true` (default) matches labels case-insensitively.\n * `false` shows all options (caller filters via `inputValue` / `onInputChange`).\n */\n filter?: boolean | ((option: ComboboxOption, query: string) => boolean);\n emptyMessage?: string;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n /** Portal mount node for the menu; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled menu. */\n zIndex?: number;\n}\n\nconst POPUP_MAX_HEIGHT = 280;\n\nconst CHIP_SIZE_BY_COMBOBOX: Record<ComboboxSize, ChipSize> = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n};\n\nfunction defaultFilter(option: ComboboxOption, query: string): boolean {\n if (!query) return true;\n return option.label.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction toSingleValue(\n value: string | string[] | null | undefined,\n): string | null {\n if (value == null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value === '' ? null : value;\n}\n\nfunction toMultiValue(\n value: string | string[] | null | undefined,\n): string[] {\n if (value == null) return [];\n if (Array.isArray(value)) return value;\n return value === '' ? [] : [value];\n}\n\nfunction optionLeadingVisual(option: ComboboxOption): ReactNode | undefined {\n if (option.leadingVisual != null) return option.leadingVisual;\n if (option.leadingAvatar != null) {\n return (\n <UserAvatar\n src={option.leadingAvatar.src}\n alt={option.leadingAvatar.alt}\n size=\"24\"\n />\n );\n }\n return undefined;\n}\n\n/**\n * { value: 'town-square', label: 'Town Square' }, { value: 'off-topic', label: 'Off-Topic'\n * }, { value: 'design', label: 'Design' }, { value: 'engineering', label: 'Engineering' }, {\n * value: 'releases', label: 'Releases' }, ];\n */\nconst Combobox = forwardRef<HTMLInputElement, ComboboxProps>(function Combobox(\n {\n options,\n multiple = false,\n value: valueProp,\n defaultValue,\n onChange,\n inputValue: inputValueProp,\n defaultInputValue = '',\n onInputChange,\n label,\n placeholder,\n leadingIcon,\n size = 'medium',\n invalid = false,\n disabled = false,\n filter = true,\n emptyMessage = 'No results',\n className = '',\n id: idProp,\n 'aria-label': ariaLabel,\n portalContainer = null,\n zIndex,\n },\n ref,\n) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const listboxId = `${id}-listbox`;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<\n string | string[] | null\n >(() => {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : null;\n });\n\n const rawValue = isValueControlled ? valueProp! : uncontrolledValue;\n const singleValue = multiple ? null : toSingleValue(rawValue);\n const multiValue = multiple ? toMultiValue(rawValue) : [];\n\n const isInputControlled = inputValueProp !== undefined;\n const [uncontrolledInput, setUncontrolledInput] = useState(defaultInputValue);\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const [queryOverride, setQueryOverride] = useState<string | null>(null);\n\n const selectedOption = useMemo(\n () =>\n singleValue == null\n ? undefined\n : options.find((o) => o.value === singleValue),\n [options, singleValue],\n );\n\n // Single-select: show the selected label until the user starts typing a filter.\n // `queryOverride !== null` means the field is in filter-edit mode.\n const displayInput = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return selectedOption?.label ?? uncontrolledInput;\n })();\n\n const filterQuery = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return '';\n })();\n\n const setInputDisplay = useCallback(\n (next: string) => {\n if (!isInputControlled) {\n setUncontrolledInput(next);\n if (!multiple) setQueryOverride(next);\n }\n onInputChange?.(next);\n },\n [isInputControlled, multiple, onInputChange],\n );\n\n const commitValue = useCallback(\n (next: string | string[] | null) => {\n if (!isValueControlled) setUncontrolledValue(next);\n onChange?.(next);\n },\n [isValueControlled, onChange],\n );\n\n const filteredOptions = useMemo(() => {\n if (filter === false) return options;\n const fn = typeof filter === 'function' ? filter : defaultFilter;\n return options.filter((o) => fn(o, filterQuery));\n }, [options, filter, filterQuery]);\n\n const { mounted: popupMounted, visible: popupVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n maxHeight,\n style: popupStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(anchorRef, popupMounted, {\n preferredHeight: POPUP_MAX_HEIGHT,\n maxHeightCap: POPUP_MAX_HEIGHT,\n portalContainer,\n zIndex,\n });\n\n const close = useCallback(() => {\n setIsOpen(false);\n setActiveIndex(-1);\n if (!multiple && !isInputControlled) {\n setQueryOverride(null);\n setUncontrolledInput('');\n }\n }, [multiple, isInputControlled]);\n\n const open = useCallback(() => {\n if (disabled) return;\n setIsOpen(true);\n }, [disabled]);\n\n useOutsideClose(rootRef, isOpen, close, portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n setActiveIndex((prev) => {\n if (filteredOptions.length === 0) return -1;\n if (prev >= 0 && prev < filteredOptions.length) return prev;\n const selectedIdx = multiple\n ? filteredOptions.findIndex((o) => multiValue.includes(o.value))\n : filteredOptions.findIndex((o) => o.value === singleValue);\n return selectedIdx >= 0 ? selectedIdx : 0;\n });\n }, [isOpen, filteredOptions, multiple, multiValue, singleValue]);\n\n const isSelected = useCallback(\n (optionValue: string) =>\n multiple\n ? multiValue.includes(optionValue)\n : singleValue === optionValue,\n [multiple, multiValue, singleValue],\n );\n\n const selectOption = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n\n if (multiple) {\n const next = multiValue.includes(option.value)\n ? multiValue.filter((v) => v !== option.value)\n : [...multiValue, option.value];\n commitValue(next);\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n\n commitValue(option.value);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(option.label);\n }\n close();\n },\n [\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const removeValue = useCallback(\n (optionValue: string) => {\n if (!multiple) return;\n commitValue(multiValue.filter((v) => v !== optionValue));\n },\n [multiple, multiValue, commitValue],\n );\n\n const moveActive = useCallback(\n (delta: number) => {\n const enabled = filteredOptions\n .map((o, i) => ({ o, i }))\n .filter(({ o }) => !o.disabled);\n if (enabled.length === 0) {\n setActiveIndex(-1);\n return;\n }\n setActiveIndex((prev) => {\n const currentPos = enabled.findIndex(({ i }) => i === prev);\n const nextPos =\n currentPos < 0\n ? delta > 0\n ? 0\n : enabled.length - 1\n : (currentPos + delta + enabled.length) % enabled.length;\n return enabled[nextPos].i;\n });\n },\n [filteredOptions],\n );\n\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const option = filteredOptions[activeIndex];\n if (!option) return;\n const el = document.getElementById(\n `${listboxId}-option-${option.value}`,\n );\n el?.scrollIntoView({ block: 'nearest' });\n }, [isOpen, activeIndex, filteredOptions, listboxId]);\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n setInputDisplay(next);\n if (!isOpen) open();\n setActiveIndex(0);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n open();\n // Select-all so the next keystroke replaces the selected label (filter mode).\n if (!multiple && !isInputControlled && selectedOption) {\n requestAnimationFrame(() => {\n inputRef.current?.select();\n });\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n // Delay so option mousedown can run first\n const related = e.relatedTarget as Node | null;\n if (related && rootRef.current?.contains(related)) return;\n setIsFocused(false);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(-1);\n break;\n case 'Home':\n if (isOpen && filteredOptions.length > 0) {\n e.preventDefault();\n setActiveIndex(\n filteredOptions.findIndex((o) => !o.disabled) >= 0\n ? filteredOptions.findIndex((o) => !o.disabled)\n : 0,\n );\n }\n break;\n case 'End':\n if (isOpen && filteredOptions.length > 0) {\n e.preventDefault();\n for (let i = filteredOptions.length - 1; i >= 0; i--) {\n if (!filteredOptions[i]?.disabled) {\n setActiveIndex(i);\n break;\n }\n }\n }\n break;\n case 'Enter':\n if (isOpen && activeIndex >= 0 && filteredOptions[activeIndex]) {\n e.preventDefault();\n selectOption(filteredOptions[activeIndex]);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close();\n }\n break;\n case 'Backspace':\n if (\n multiple &&\n displayInput === '' &&\n multiValue.length > 0\n ) {\n e.preventDefault();\n removeValue(multiValue[multiValue.length - 1]);\n }\n break;\n case 'Tab':\n close();\n break;\n default:\n break;\n }\n };\n\n const handleWrapperMouseDown = (e: MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n // Don't steal focus from chips or their remove buttons\n if ((e.target as HTMLElement).closest('[data-chip]')) return;\n if (e.target !== inputRef.current) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n if (!isOpen) open();\n };\n\n const hasSelection = multiple\n ? multiValue.length > 0\n : singleValue != null && singleValue !== '';\n const hasInputText = displayInput.length > 0;\n const labelFloated = isFocused || isOpen || hasSelection || hasInputText;\n\n const activeOption =\n activeIndex >= 0 ? filteredOptions[activeIndex] : undefined;\n const activeDescendant =\n activeOption != null ? `${listboxId}-option-${activeOption.value}` : undefined;\n\n const selectedOptions = useMemo(\n () => options.filter((o) => multiValue.includes(o.value)),\n [options, multiValue],\n );\n\n const sizeClass = styles[`combobox--size-${toKebab(size)}`];\n const hasChips = multiple && selectedOptions.length > 0;\n const rootClass = [\n styles.combobox,\n sizeClass,\n invalid ? styles['combobox--invalid'] : '',\n label != null && labelFloated ? styles['combobox--label-floated'] : '',\n leadingIcon != null ? styles['combobox--has-leading-icon'] : '',\n hasChips ? styles['combobox--has-chips'] : '',\n isOpen ? styles['combobox--open'] : '',\n disabled ? styles['combobox--disabled'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} ref={rootRef}>\n <div\n className={styles.combobox__wrapper}\n ref={anchorRef}\n >\n {label != null && (\n <label className={styles.combobox__label} htmlFor={id}>\n {label}\n </label>\n )}\n <div\n className={styles.combobox__inner}\n onMouseDown={handleWrapperMouseDown}\n >\n {leadingIcon != null && (\n <span className={styles['combobox__leading-icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n </span>\n )}\n <div className={styles.combobox__value}>\n {multiple && selectedOptions.length > 0 && (\n <ChipGroup\n aria-label={\n typeof label === 'string' ? `${label} selections` : 'Selected'\n }\n disabled={disabled}\n >\n {selectedOptions.map((option) => (\n <Chip\n key={option.value}\n size={CHIP_SIZE_BY_COMBOBOX[size]}\n leadingAvatar={option.leadingAvatar}\n leadingIcon={\n option.leadingAvatar == null\n ? option.leadingVisual\n : undefined\n }\n onRemove={\n disabled\n ? undefined\n : (ev) => {\n ev.stopPropagation();\n removeValue(option.value);\n }\n }\n >\n {option.label}\n </Chip>\n ))}\n </ChipGroup>\n )}\n <input\n ref={setInputRef}\n id={id}\n className={styles.combobox__control}\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n placeholder={\n multiple && selectedOptions.length > 0\n ? undefined\n : placeholder\n }\n value={displayInput}\n aria-label={ariaLabel}\n aria-invalid={invalid ? true : undefined}\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n </div>\n <span className={styles['combobox__trailing-icon']} aria-hidden>\n <Icon size=\"12\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n </div>\n\n {popupMounted &&\n renderPortal(\n <div\n ref={portalRef}\n className={[\n styles.combobox__popup,\n placement === 'above' ? styles['combobox__popup--above'] : '',\n popupVisible ? styles['combobox__popup--visible'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popupStyle}\n >\n <PopoverMenu className={styles.combobox__menu}>\n <PopoverMenuScroll maxHeight={maxHeight}>\n {filteredOptions.length === 0 ? (\n <p className={styles.combobox__empty}>{emptyMessage}</p>\n ) : (\n <ul\n id={listboxId}\n className={styles.combobox__list}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={\n typeof label === 'string'\n ? label\n : (ariaLabel ?? 'Options')\n }\n >\n {filteredOptions.map((option, index) => {\n const selected = isSelected(option.value);\n const active = index === activeIndex;\n const leading = optionLeadingVisual(option);\n return (\n <li\n key={option.value}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n id={`${listboxId}-option-${option.value}`}\n role=\"option\"\n label={option.label}\n secondaryLabel={option.secondaryLabel}\n leadingElement={leading != null}\n leadingVisual={leading}\n trailingElement={selected}\n active={active}\n disabled={option.disabled}\n aria-selected={selected}\n onMouseDown={(ev) => {\n // Prevent input blur before click handler\n ev.preventDefault();\n }}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n />\n </li>\n );\n })}\n </ul>\n )}\n </PopoverMenuScroll>\n </PopoverMenu>\n </div>,\n )}\n </div>\n );\n});\n\nexport default Combobox;\n"],"names":["POPUP_MAX_HEIGHT","CHIP_SIZE_BY_COMBOBOX","defaultFilter","option","query","toSingleValue","value","toMultiValue","optionLeadingVisual","jsx","UserAvatar","Combobox","forwardRef","options","multiple","valueProp","defaultValue","onChange","inputValueProp","defaultInputValue","onInputChange","label","placeholder","leadingIcon","size","invalid","disabled","filter","emptyMessage","className","idProp","ariaLabel","portalContainer","zIndex","ref","generatedId","useId","id","listboxId","rootRef","useRef","anchorRef","inputRef","setInputRef","useCallback","node","isValueControlled","uncontrolledValue","setUncontrolledValue","useState","rawValue","singleValue","multiValue","isInputControlled","uncontrolledInput","setUncontrolledInput","isOpen","setIsOpen","isFocused","setIsFocused","activeIndex","setActiveIndex","queryOverride","setQueryOverride","selectedOption","useMemo","o","displayInput","filterQuery","setInputDisplay","next","commitValue","filteredOptions","fn","popupMounted","popupVisible","usePopoverTransition","placement","maxHeight","popupStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","open","useOutsideClose","useEffect","prev","selectedIdx","isSelected","optionValue","selectOption","v","_a","removeValue","moveActive","delta","enabled","i","currentPos","nextPos","el","handleInputChange","handleFocus","handleBlur","related","handleKeyDown","handleWrapperMouseDown","hasSelection","hasInputText","labelFloated","activeOption","activeDescendant","selectedOptions","sizeClass","styles","toKebab","hasChips","rootClass","jsxs","IconSlotContext","ChipGroup","Chip","ev","Icon","ChevronDownIcon","PopoverMenu","PopoverMenuScroll","index","selected","active","leading","MenuItem"],"mappings":"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"}
1
+ {"version":3,"file":"Combobox.cjs","sources":["../../../src/components/combobox/Combobox.tsx"],"sourcesContent":["import type {\n ChangeEvent,\n FocusEvent,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n} from 'react';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport ChevronDownIcon from '@mattermost/compass-icons/components/chevron-down';\nimport PlusIcon from '@mattermost/compass-icons/components/plus';\nimport Chip from '@/components/chip/Chip';\nimport ChipGroup from '@/components/chip/ChipGroup';\nimport type { ChipSize } from '@/components/chip/Chip';\nimport Icon from '@/components/icon/Icon';\nimport { IconSlotContext } from '@/components/icon/Icon';\nimport MenuItem from '@/components/menu-item/MenuItem';\nimport PopoverMenu, {\n PopoverMenuScroll,\n} from '@/components/popover-menu/PopoverMenu';\nimport Spinner from '@/components/spinner/Spinner';\nimport UserAvatar from '@/components/user-avatar/UserAvatar';\nimport { useAnchoredPopupPortal } from '@/hooks/use-anchored-popup-portal';\nimport { useOutsideClose } from '@/hooks/use-outside-close';\nimport { usePopoverTransition } from '@/hooks/use-popover-transition';\nimport { toKebab } from '@/utils/string';\nimport styles from './Combobox.module.scss';\n\nexport type ComboboxSize = 'small' | 'medium' | 'large';\n\nexport type ComboboxOption = {\n value: string;\n label: string;\n disabled?: boolean;\n /** Leading content for the list row (icon or avatar node). */\n leadingVisual?: ReactNode;\n /** Avatar for chips / list when a photo is preferred over `leadingVisual`. */\n leadingAvatar?: { src: string; alt: string };\n secondaryLabel?: string;\n};\n\nexport interface ComboboxProps {\n options: ComboboxOption[];\n /** When true, selected values render as removable chips. Default: false. */\n multiple?: boolean;\n value?: string | string[] | null;\n defaultValue?: string | string[] | null;\n onChange?: (value: string | string[] | null) => void;\n inputValue?: string;\n defaultInputValue?: string;\n onInputChange?: (value: string) => void;\n label?: ReactNode;\n placeholder?: string;\n leadingIcon?: ReactNode;\n size?: ComboboxSize;\n invalid?: boolean;\n disabled?: boolean;\n /**\n * Client-side filter. `true` (default) matches labels case-insensitively.\n * `false` shows all options (caller filters via `inputValue` / `onInputChange`).\n */\n filter?: boolean | ((option: ComboboxOption, query: string) => boolean);\n /** Shown when there are no rows to pick from. Default: \"No results\". */\n emptyMessage?: ReactNode;\n /**\n * When true, the menu shows a loading row (with Spinner) in place of the\n * empty message. Set while async results are in flight.\n */\n loading?: boolean;\n /** Loading row text. Default: \"Loading…\". */\n loadingMessage?: ReactNode;\n /**\n * Option objects for the current value(s), used for chips and the\n * single-select label when a value is missing from `options` (e.g. an async\n * search that no longer returns it, or values preselected on load). Values\n * found in `options` resolve from there first.\n */\n selectedOptions?: ComboboxOption[];\n /**\n * When true, typed text that matches no option offers a create row. Created\n * values not found in `options` or `selectedOptions` display their raw value\n * as the label.\n */\n creatable?: boolean;\n /**\n * Called with the trimmed input when the create row is chosen. When set, the\n * host owns adding the value (`onChange` is not called). When omitted, the\n * input is committed as the value through `onChange`.\n */\n onCreateOption?: (inputValue: string) => void;\n /** Create row label. Default: `Create \"{inputValue}\"`. */\n formatCreateLabel?: (inputValue: string) => ReactNode;\n className?: string;\n id?: string;\n 'aria-label'?: string;\n /** Portal mount node for the menu; defaults to `document.body`. */\n portalContainer?: HTMLElement | null;\n /** Stacking order for the portaled menu. */\n zIndex?: number;\n}\n\nconst POPUP_MAX_HEIGHT = 280;\n\nconst CHIP_SIZE_BY_COMBOBOX: Record<ComboboxSize, ChipSize> = {\n small: 'small',\n medium: 'medium',\n large: 'large',\n};\n\ntype ComboboxRow =\n | { kind: 'option'; option: ComboboxOption }\n | { kind: 'create'; inputValue: string };\n\nfunction defaultFormatCreateLabel(inputValue: string): ReactNode {\n return `Create \"${inputValue}\"`;\n}\n\nfunction isRowDisabled(row: ComboboxRow): boolean {\n return row.kind === 'option' && row.option.disabled === true;\n}\n\nfunction defaultFilter(option: ComboboxOption, query: string): boolean {\n if (!query) return true;\n return option.label.toLowerCase().includes(query.toLowerCase());\n}\n\nfunction toSingleValue(\n value: string | string[] | null | undefined,\n): string | null {\n if (value == null) return null;\n if (Array.isArray(value)) return value[0] ?? null;\n return value === '' ? null : value;\n}\n\nfunction toMultiValue(value: string | string[] | null | undefined): string[] {\n if (value == null) return [];\n if (Array.isArray(value)) return value;\n return value === '' ? [] : [value];\n}\n\nfunction optionLeadingVisual(option: ComboboxOption): ReactNode | undefined {\n if (option.leadingVisual != null) return option.leadingVisual;\n if (option.leadingAvatar != null) {\n return (\n <UserAvatar\n src={option.leadingAvatar.src}\n alt={option.leadingAvatar.alt}\n size=\"24\"\n />\n );\n }\n return undefined;\n}\n\n/**\n * { value: 'town-square', label: 'Town Square' }, { value: 'off-topic', label: 'Off-Topic'\n * }, { value: 'design', label: 'Design' }, { value: 'engineering', label: 'Engineering' }, {\n * value: 'releases', label: 'Releases' }, ];\n */\nconst Combobox = forwardRef<HTMLInputElement, ComboboxProps>(function Combobox(\n {\n options,\n multiple = false,\n value: valueProp,\n defaultValue,\n onChange,\n inputValue: inputValueProp,\n defaultInputValue = '',\n onInputChange,\n label,\n placeholder,\n leadingIcon,\n size = 'medium',\n invalid = false,\n disabled = false,\n filter = true,\n emptyMessage = 'No results',\n loading = false,\n loadingMessage = 'Loading…',\n selectedOptions,\n creatable = false,\n onCreateOption,\n formatCreateLabel = defaultFormatCreateLabel,\n className = '',\n id: idProp,\n 'aria-label': ariaLabel,\n portalContainer = null,\n zIndex,\n },\n ref,\n) {\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const listboxId = `${id}-listbox`;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n const inputRef = useRef<HTMLInputElement | null>(null);\n\n const setInputRef = useCallback(\n (node: HTMLInputElement | null) => {\n inputRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) ref.current = node;\n },\n [ref],\n );\n\n const isValueControlled = valueProp !== undefined;\n const [uncontrolledValue, setUncontrolledValue] = useState<\n string | string[] | null\n >(() => {\n if (defaultValue !== undefined) return defaultValue;\n return multiple ? [] : null;\n });\n\n const rawValue = isValueControlled ? valueProp! : uncontrolledValue;\n const singleValue = multiple ? null : toSingleValue(rawValue);\n const multiValue = useMemo(\n () => (multiple ? toMultiValue(rawValue) : []),\n [multiple, rawValue],\n );\n\n const isInputControlled = inputValueProp !== undefined;\n const [uncontrolledInput, setUncontrolledInput] = useState(defaultInputValue);\n const [isOpen, setIsOpen] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [activeIndex, setActiveIndex] = useState(-1);\n const [queryOverride, setQueryOverride] = useState<string | null>(null);\n\n const resolveOption = useCallback(\n (optionValue: string): ComboboxOption | undefined =>\n options.find((o) => o.value === optionValue) ??\n selectedOptions?.find((o) => o.value === optionValue) ??\n (creatable ? { value: optionValue, label: optionValue } : undefined),\n [options, selectedOptions, creatable],\n );\n\n const selectedOption = useMemo(\n () => (singleValue == null ? undefined : resolveOption(singleValue)),\n [resolveOption, singleValue],\n );\n\n // Single-select: show the selected label until the user starts typing a filter.\n // `queryOverride !== null` means the field is in filter-edit mode.\n const displayInput = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return selectedOption?.label ?? uncontrolledInput;\n })();\n\n const filterQuery = (() => {\n if (isInputControlled) return inputValueProp!;\n if (multiple) return uncontrolledInput;\n if (queryOverride !== null) return queryOverride;\n return '';\n })();\n\n const setInputDisplay = useCallback(\n (next: string) => {\n if (!isInputControlled) {\n setUncontrolledInput(next);\n if (!multiple) setQueryOverride(next);\n }\n onInputChange?.(next);\n },\n [isInputControlled, multiple, onInputChange],\n );\n\n const commitValue = useCallback(\n (next: string | string[] | null) => {\n if (!isValueControlled) setUncontrolledValue(next);\n onChange?.(next);\n },\n [isValueControlled, onChange],\n );\n\n const filteredOptions = useMemo(() => {\n if (filter === false) return options;\n const fn = typeof filter === 'function' ? filter : defaultFilter;\n return options.filter((o) => fn(o, filterQuery));\n }, [options, filter, filterQuery]);\n\n const createInput = creatable ? filterQuery.trim() : '';\n const showCreateRow = useMemo(() => {\n if (createInput === '') return false;\n const needle = createInput.toLowerCase();\n const matches = (text: string) => text.toLowerCase() === needle;\n const knownOptions = [...options, ...(selectedOptions ?? [])];\n if (knownOptions.some((o) => matches(o.label) || matches(o.value))) {\n return false;\n }\n const current = multiple\n ? multiValue\n : singleValue != null\n ? [singleValue]\n : [];\n return !current.some(matches);\n }, [\n createInput,\n options,\n selectedOptions,\n multiple,\n multiValue,\n singleValue,\n ]);\n\n const rows = useMemo<ComboboxRow[]>(\n () => [\n ...filteredOptions.map((option) => ({ kind: 'option' as const, option })),\n ...(showCreateRow\n ? [{ kind: 'create' as const, inputValue: createInput }]\n : []),\n ],\n [filteredOptions, showCreateRow, createInput],\n );\n\n const rowId = useCallback(\n (row: ComboboxRow) =>\n row.kind === 'option'\n ? `${listboxId}-option-${row.option.value}`\n : `${listboxId}-create`,\n [listboxId],\n );\n\n const { mounted: popupMounted, visible: popupVisible } =\n usePopoverTransition(isOpen);\n\n const {\n placement,\n maxHeight,\n style: popupStyle,\n portalRef,\n renderPortal,\n } = useAnchoredPopupPortal(anchorRef, popupMounted, {\n preferredHeight: POPUP_MAX_HEIGHT,\n maxHeightCap: POPUP_MAX_HEIGHT,\n portalContainer,\n zIndex,\n });\n\n const close = useCallback(() => {\n setIsOpen(false);\n setActiveIndex(-1);\n if (!multiple && !isInputControlled) {\n setQueryOverride(null);\n setUncontrolledInput('');\n }\n }, [multiple, isInputControlled]);\n\n const open = useCallback(() => {\n if (disabled) return;\n setIsOpen(true);\n }, [disabled]);\n\n useOutsideClose(rootRef, isOpen, close, portalRef);\n\n useEffect(() => {\n if (!isOpen) return;\n setActiveIndex((prev) => {\n if (rows.length === 0) return -1;\n if (prev >= 0 && prev < rows.length) return prev;\n const selectedIdx = rows.findIndex(\n (row) =>\n row.kind === 'option' &&\n (multiple\n ? multiValue.includes(row.option.value)\n : row.option.value === singleValue),\n );\n return selectedIdx >= 0 ? selectedIdx : 0;\n });\n }, [isOpen, rows, multiple, multiValue, singleValue]);\n\n const isSelected = useCallback(\n (optionValue: string) =>\n multiple ? multiValue.includes(optionValue) : singleValue === optionValue,\n [multiple, multiValue, singleValue],\n );\n\n const selectOption = useCallback(\n (option: ComboboxOption) => {\n if (option.disabled) return;\n\n if (multiple) {\n const next = multiValue.includes(option.value)\n ? multiValue.filter((v) => v !== option.value)\n : [...multiValue, option.value];\n commitValue(next);\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n\n commitValue(option.value);\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(option.label);\n }\n close();\n },\n [\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const createValue = useCallback(\n (inputValue: string) => {\n if (onCreateOption) {\n onCreateOption(inputValue);\n } else if (multiple) {\n commitValue([...multiValue, inputValue]);\n } else {\n commitValue(inputValue);\n }\n\n if (multiple) {\n setInputDisplay('');\n close();\n inputRef.current?.focus();\n return;\n }\n if (!isInputControlled) {\n setUncontrolledInput('');\n setQueryOverride(null);\n } else {\n onInputChange?.(inputValue);\n }\n close();\n },\n [\n onCreateOption,\n multiple,\n multiValue,\n commitValue,\n setInputDisplay,\n isInputControlled,\n onInputChange,\n close,\n ],\n );\n\n const selectRow = useCallback(\n (row: ComboboxRow) => {\n if (row.kind === 'create') createValue(row.inputValue);\n else selectOption(row.option);\n },\n [createValue, selectOption],\n );\n\n const removeValue = useCallback(\n (optionValue: string) => {\n if (!multiple) return;\n commitValue(multiValue.filter((v) => v !== optionValue));\n },\n [multiple, multiValue, commitValue],\n );\n\n const moveActive = useCallback(\n (delta: number) => {\n const enabled = rows\n .map((row, i) => ({ row, i }))\n .filter(({ row }) => !isRowDisabled(row));\n if (enabled.length === 0) {\n setActiveIndex(-1);\n return;\n }\n setActiveIndex((prev) => {\n const currentPos = enabled.findIndex(({ i }) => i === prev);\n const nextPos =\n currentPos < 0\n ? delta > 0\n ? 0\n : enabled.length - 1\n : (currentPos + delta + enabled.length) % enabled.length;\n return enabled[nextPos].i;\n });\n },\n [rows],\n );\n\n useEffect(() => {\n if (!isOpen || activeIndex < 0) return;\n const row = rows[activeIndex];\n if (!row) return;\n document.getElementById(rowId(row))?.scrollIntoView({ block: 'nearest' });\n }, [isOpen, activeIndex, rows, rowId]);\n\n const handleInputChange = (e: ChangeEvent<HTMLInputElement>) => {\n const next = e.target.value;\n setInputDisplay(next);\n if (!isOpen) open();\n setActiveIndex(0);\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n open();\n // Select-all so the next keystroke replaces the selected label (filter mode).\n if (!multiple && !isInputControlled && selectedOption) {\n requestAnimationFrame(() => {\n inputRef.current?.select();\n });\n }\n };\n\n const handleBlur = (e: FocusEvent<HTMLInputElement>) => {\n // Delay so option mousedown can run first\n const related = e.relatedTarget as Node | null;\n if (related && rootRef.current?.contains(related)) return;\n setIsFocused(false);\n };\n\n const handleKeyDown = (e: KeyboardEvent<HTMLInputElement>) => {\n if (disabled) return;\n\n switch (e.key) {\n case 'ArrowDown':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(1);\n break;\n case 'ArrowUp':\n e.preventDefault();\n if (!isOpen) open();\n else moveActive(-1);\n break;\n case 'Home':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n setActiveIndex(\n Math.max(\n 0,\n rows.findIndex((row) => !isRowDisabled(row)),\n ),\n );\n }\n break;\n case 'End':\n if (isOpen && rows.length > 0) {\n e.preventDefault();\n for (let i = rows.length - 1; i >= 0; i--) {\n if (!isRowDisabled(rows[i])) {\n setActiveIndex(i);\n break;\n }\n }\n }\n break;\n case 'Enter':\n if (isOpen && activeIndex >= 0 && rows[activeIndex]) {\n e.preventDefault();\n selectRow(rows[activeIndex]);\n }\n break;\n case 'Escape':\n if (isOpen) {\n e.preventDefault();\n close();\n }\n break;\n case 'Backspace':\n if (multiple && displayInput === '' && multiValue.length > 0) {\n e.preventDefault();\n removeValue(multiValue[multiValue.length - 1]);\n }\n break;\n case 'Tab':\n close();\n break;\n default:\n break;\n }\n };\n\n const handleWrapperMouseDown = (e: MouseEvent<HTMLDivElement>) => {\n if (disabled) return;\n // Don't steal focus from chips or their remove buttons\n if ((e.target as HTMLElement).closest('[data-chip]')) return;\n if (e.target !== inputRef.current) {\n e.preventDefault();\n inputRef.current?.focus();\n }\n if (!isOpen) open();\n };\n\n const hasSelection = multiple\n ? multiValue.length > 0\n : singleValue != null && singleValue !== '';\n const hasInputText = displayInput.length > 0;\n const labelFloated = isFocused || isOpen || hasSelection || hasInputText;\n\n const activeRow = activeIndex >= 0 ? rows[activeIndex] : undefined;\n const activeDescendant = activeRow != null ? rowId(activeRow) : undefined;\n\n // Without `selectedOptions`, values in `options` keep their list order (the\n // original behavior); with it, chips follow value order so they don't jump\n // around as async results change.\n const chipOptions = useMemo<ComboboxOption[]>(() => {\n if (!multiple) return [];\n if (selectedOptions == null) {\n const fromOptions = options.filter((o) => multiValue.includes(o.value));\n if (!creatable) return fromOptions;\n const listed = new Set(fromOptions.map((o) => o.value));\n return [\n ...fromOptions,\n ...multiValue\n .filter((v) => !listed.has(v))\n .map((v) => ({ value: v, label: v })),\n ];\n }\n return multiValue\n .map(resolveOption)\n .filter((o): o is ComboboxOption => o != null);\n }, [\n multiple,\n selectedOptions,\n options,\n multiValue,\n creatable,\n resolveOption,\n ]);\n\n const sizeClass = styles[`combobox--size-${toKebab(size)}`];\n const hasChips = multiple && chipOptions.length > 0;\n const rootClass = [\n styles.combobox,\n sizeClass,\n invalid ? styles['combobox--invalid'] : '',\n label != null && labelFloated ? styles['combobox--label-floated'] : '',\n leadingIcon != null ? styles['combobox--has-leading-icon'] : '',\n hasChips ? styles['combobox--has-chips'] : '',\n isOpen ? styles['combobox--open'] : '',\n disabled ? styles['combobox--disabled'] : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <div className={rootClass} ref={rootRef}>\n <div className={styles.combobox__wrapper} ref={anchorRef}>\n {label != null && (\n <label className={styles.combobox__label} htmlFor={id}>\n {label}\n </label>\n )}\n {/* eslint-disable-next-line jsx-a11y/no-static-element-interactions -- pointer convenience; the input owns keyboard interaction */}\n <div\n className={styles.combobox__inner}\n onMouseDown={handleWrapperMouseDown}\n >\n {leadingIcon != null && (\n <span className={styles['combobox__leading-icon']} aria-hidden>\n <IconSlotContext.Provider value={{ size: '16' }}>\n {leadingIcon}\n </IconSlotContext.Provider>\n </span>\n )}\n <div className={styles.combobox__value}>\n {multiple && chipOptions.length > 0 && (\n <ChipGroup\n aria-label={\n typeof label === 'string' ? `${label} selections` : 'Selected'\n }\n disabled={disabled}\n >\n {chipOptions.map((option) => (\n <Chip\n key={option.value}\n size={CHIP_SIZE_BY_COMBOBOX[size]}\n leadingAvatar={option.leadingAvatar}\n leadingIcon={\n option.leadingAvatar == null\n ? option.leadingVisual\n : undefined\n }\n onRemove={\n disabled\n ? undefined\n : (ev) => {\n ev.stopPropagation();\n removeValue(option.value);\n }\n }\n >\n {option.label}\n </Chip>\n ))}\n </ChipGroup>\n )}\n <input\n ref={setInputRef}\n id={id}\n className={styles.combobox__control}\n type=\"text\"\n role=\"combobox\"\n autoComplete=\"off\"\n spellCheck={false}\n disabled={disabled}\n placeholder={\n multiple && chipOptions.length > 0 ? undefined : placeholder\n }\n value={displayInput}\n aria-label={ariaLabel}\n aria-invalid={invalid ? true : undefined}\n aria-expanded={isOpen}\n aria-controls={listboxId}\n aria-autocomplete=\"list\"\n aria-activedescendant={activeDescendant}\n aria-busy={loading || undefined}\n onChange={handleInputChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDown={handleKeyDown}\n />\n </div>\n <span className={styles['combobox__trailing-icon']} aria-hidden>\n <Icon size=\"12\" glyph={<ChevronDownIcon />} />\n </span>\n </div>\n </div>\n\n {popupMounted &&\n renderPortal(\n <div\n ref={portalRef}\n className={[\n styles.combobox__popup,\n placement === 'above' ? styles['combobox__popup--above'] : '',\n popupVisible ? styles['combobox__popup--visible'] : '',\n ]\n .filter(Boolean)\n .join(' ')}\n style={popupStyle}\n >\n <PopoverMenu className={styles.combobox__menu}>\n <PopoverMenuScroll maxHeight={maxHeight}>\n {rows.length > 0 && (\n <ul\n id={listboxId}\n className={styles.combobox__list}\n role=\"listbox\"\n aria-multiselectable={multiple || undefined}\n aria-label={\n typeof label === 'string'\n ? label\n : (ariaLabel ?? 'Options')\n }\n >\n {rows.map((row, index) => {\n const active = index === activeIndex;\n const preventBlur = (ev: MouseEvent) => {\n // Prevent input blur before click handler\n ev.preventDefault();\n };\n if (row.kind === 'create') {\n return (\n <li\n key={rowId(row)}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n id={rowId(row)}\n role=\"option\"\n label={formatCreateLabel(row.inputValue)}\n leadingVisual={<Icon glyph={<PlusIcon />} />}\n active={active}\n aria-selected={false}\n onMouseDown={preventBlur}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => createValue(row.inputValue)}\n />\n </li>\n );\n }\n const { option } = row;\n const selected = isSelected(option.value);\n const leading = optionLeadingVisual(option);\n return (\n <li\n key={option.value}\n className={styles.combobox__option}\n role=\"presentation\"\n >\n <MenuItem\n id={rowId(row)}\n role=\"option\"\n label={option.label}\n secondaryLabel={option.secondaryLabel}\n leadingElement={leading != null}\n leadingVisual={leading}\n trailingElement={selected}\n active={active}\n disabled={option.disabled}\n aria-selected={selected}\n onMouseDown={preventBlur}\n onMouseEnter={() => setActiveIndex(index)}\n onClick={() => selectOption(option)}\n />\n </li>\n );\n })}\n </ul>\n )}\n {loading ? (\n <div className={styles.combobox__loading} role=\"status\">\n <Spinner size=\"16\" aria-hidden />\n <span>{loadingMessage}</span>\n </div>\n ) : (\n rows.length === 0 && (\n <p className={styles.combobox__empty}>{emptyMessage}</p>\n )\n )}\n </PopoverMenuScroll>\n </PopoverMenu>\n </div>,\n )}\n </div>\n );\n});\n\nexport default Combobox;\n"],"names":["POPUP_MAX_HEIGHT","CHIP_SIZE_BY_COMBOBOX","defaultFormatCreateLabel","inputValue","isRowDisabled","row","defaultFilter","option","query","toSingleValue","value","toMultiValue","optionLeadingVisual","jsx","UserAvatar","Combobox","forwardRef","options","multiple","valueProp","defaultValue","onChange","inputValueProp","defaultInputValue","onInputChange","label","placeholder","leadingIcon","size","invalid","disabled","filter","emptyMessage","loading","loadingMessage","selectedOptions","creatable","onCreateOption","formatCreateLabel","className","idProp","ariaLabel","portalContainer","zIndex","ref","generatedId","useId","id","listboxId","rootRef","useRef","anchorRef","inputRef","setInputRef","useCallback","node","isValueControlled","uncontrolledValue","setUncontrolledValue","useState","rawValue","singleValue","multiValue","useMemo","isInputControlled","uncontrolledInput","setUncontrolledInput","isOpen","setIsOpen","isFocused","setIsFocused","activeIndex","setActiveIndex","queryOverride","setQueryOverride","resolveOption","optionValue","o","selectedOption","displayInput","filterQuery","setInputDisplay","next","commitValue","filteredOptions","fn","createInput","showCreateRow","needle","matches","text","rows","rowId","popupMounted","popupVisible","usePopoverTransition","placement","maxHeight","popupStyle","portalRef","renderPortal","useAnchoredPopupPortal","close","open","useOutsideClose","useEffect","prev","selectedIdx","isSelected","selectOption","v","_a","createValue","selectRow","removeValue","moveActive","delta","enabled","i","currentPos","nextPos","handleInputChange","handleFocus","handleBlur","related","handleKeyDown","handleWrapperMouseDown","hasSelection","hasInputText","labelFloated","activeRow","activeDescendant","chipOptions","fromOptions","listed","sizeClass","styles","toKebab","hasChips","rootClass","jsxs","IconSlotContext","ChipGroup","Chip","ev","Icon","ChevronDownIcon","PopoverMenu","PopoverMenuScroll","index","active","preventBlur","MenuItem","PlusIcon","selected","leading","Spinner"],"mappings":"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"}
@@ -1 +1 @@
1
- ._combobox_z7qkn_2{position:relative;display:flex;flex-direction:column;width:100%}._combobox__wrapper_z7qkn_8{position:relative;background-color:var(--center-channel-bg);border-radius:var(--radius-s);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.16);transition:box-shadow var(--duration-quick) var(--ease-transition);cursor:text}._combobox_z7qkn_2:not(._combobox--disabled_z7qkn_16):hover:not(:focus-within) ._combobox__wrapper_z7qkn_8{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.24)}._combobox_z7qkn_2:focus-within ._combobox__wrapper_z7qkn_8{box-shadow:inset 0 0 0 1px var(--focus-ring-color),0 0 0 1px var(--focus-ring-color)}._combobox--disabled_z7qkn_16 ._combobox__wrapper_z7qkn_8{opacity:.56;cursor:not-allowed}._combobox__label_z7qkn_26{position:absolute;left:var(--spacing-xs);top:50%;z-index:1;padding:0 var(--spacing-xxxs);transform:translateY(-50%);margin:0;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-regular);color:rgba(var(--center-channel-color-rgb),.64);background-color:var(--center-channel-bg);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 24px);transition:transform var(--duration-quick) var(--ease-transition),font-size var(--duration-quick) var(--ease-transition),top var(--duration-quick) var(--ease-transition),left var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox_z7qkn_2:focus-within ._combobox__label_z7qkn_26{color:var(--button-bg)}._combobox__inner_z7qkn_56{display:flex;align-items:center;position:relative;gap:var(--spacing-xs);width:100%;box-sizing:border-box}._combobox__leading-icon_z7qkn_64{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);pointer-events:none}._combobox__value_z7qkn_72{display:flex;flex:1 1 0;flex-wrap:wrap;align-items:center;align-self:stretch;gap:var(--spacing-xxs);min-width:0;margin:-1px 0}._combobox__control_z7qkn_82{flex:1 1 0;width:100%;min-width:0;min-height:100%;margin:0;padding:0;border:0;background:transparent;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-regular);color:var(--center-channel-color)}._combobox__control_z7qkn_82::placeholder{color:rgba(var(--center-channel-color-rgb),.64)}._combobox__control_z7qkn_82:focus{outline:none}._combobox__control_z7qkn_82:disabled{cursor:not-allowed;color:rgba(var(--center-channel-color-rgb),.64)}._combobox__trailing-icon_z7qkn_107{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);pointer-events:none;margin-right:var(--spacing-xxxs);transition:transform var(--duration-quick) var(--ease-transition)}._combobox--open_z7qkn_117 ._combobox__trailing-icon_z7qkn_107{transform:rotate(180deg)}._combobox__popup_z7qkn_120{opacity:0;transform:scale(.9);transform-origin:top center;transition:opacity var(--duration-quick) var(--ease-exit),transform var(--duration-quick) var(--ease-exit);pointer-events:none}._combobox__popup--above_z7qkn_127{transform-origin:bottom center}._combobox__popup--visible_z7qkn_130{opacity:1;transform:scale(1);pointer-events:auto;transition:opacity var(--duration-quick) var(--ease-entrance),transform var(--duration-quick) var(--ease-entrance)}._combobox__menu_z7qkn_136{width:100%;min-width:100%;max-width:none}._combobox__empty_z7qkn_141{margin:0;padding:var(--spacing-s) var(--spacing-l);font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.64)}._combobox__list_z7qkn_149{margin:0;padding:0;list-style:none}._combobox__option_z7qkn_154{display:block;width:100%}._combobox--size-small_z7qkn_158 ._combobox__wrapper_z7qkn_8{min-height:32px}._combobox--size-small_z7qkn_158 ._combobox__inner_z7qkn_56{padding:var(--spacing-xs) var(--spacing-m);gap:var(--spacing-xs)}._combobox--size-small_z7qkn_158._combobox--has-chips_z7qkn_165 ._combobox__inner_z7qkn_56{padding-block:var(--spacing-xxs)}._combobox--size-small_z7qkn_158 ._combobox__control_z7qkn_82{font-size:var(--font-size-75);line-height:var(--line-height-75)}._combobox--size-small_z7qkn_158 ._combobox__trailing-icon_z7qkn_107 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._combobox--size-small_z7qkn_158._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--size-medium_z7qkn_182 ._combobox__wrapper_z7qkn_8{min-height:40px}._combobox--size-medium_z7qkn_182 ._combobox__inner_z7qkn_56{padding:var(--spacing-s) var(--spacing-l);gap:var(--spacing-s)}._combobox--size-medium_z7qkn_182._combobox--has-chips_z7qkn_165 ._combobox__inner_z7qkn_56{padding-block:var(--spacing-xs)}._combobox--size-medium_z7qkn_182 ._combobox__control_z7qkn_82{font-size:var(--font-size-100);line-height:var(--line-height-100)}._combobox--size-medium_z7qkn_182 ._combobox__label_z7qkn_26{font-size:var(--font-size-100);left:var(--spacing-m)}._combobox--size-medium_z7qkn_182 ._combobox__trailing-icon_z7qkn_107 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._combobox--size-medium_z7qkn_182._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--size-large_z7qkn_210 ._combobox__wrapper_z7qkn_8{min-height:48px}._combobox--size-large_z7qkn_210 ._combobox__inner_z7qkn_56{padding:var(--spacing-m) var(--spacing-l);gap:var(--spacing-s)}._combobox--size-large_z7qkn_210._combobox--has-chips_z7qkn_165 ._combobox__inner_z7qkn_56{padding-block:var(--spacing-xs)}._combobox--size-large_z7qkn_210 ._combobox__control_z7qkn_82{font-size:var(--font-size-200);line-height:var(--line-height-200)}._combobox--size-large_z7qkn_210 ._combobox__label_z7qkn_26{font-size:var(--font-size-200);line-height:var(--line-height-200);left:var(--spacing-m)}._combobox--size-large_z7qkn_210 ._combobox__trailing-icon_z7qkn_107 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._combobox--size-large_z7qkn_210._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--invalid_z7qkn_239 ._combobox__wrapper_z7qkn_8{box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger))}._combobox--invalid_z7qkn_239:focus-within ._combobox__wrapper_z7qkn_8{box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger)),0 0 0 2px var(--error-text, var(--color-danger))}._combobox--invalid_z7qkn_239 ._combobox__label_z7qkn_26{color:var(--error-text, var(--color-danger))}._combobox--invalid_z7qkn_239:focus-within ._combobox__label_z7qkn_26{color:var(--error-text, var(--color-danger))}._combobox--has-leading-icon_z7qkn_251 ._combobox__label_z7qkn_26{left:32px}._combobox--has-leading-icon_z7qkn_251._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{left:var(--spacing-xs)}._combobox--has-leading-icon_z7qkn_251._combobox--size-medium_z7qkn_182 ._combobox__label_z7qkn_26,._combobox--has-leading-icon_z7qkn_251._combobox--size-large_z7qkn_210 ._combobox__label_z7qkn_26{left:38px}._combobox--has-leading-icon_z7qkn_251._combobox--size-medium_z7qkn_182._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26,._combobox--has-leading-icon_z7qkn_251._combobox--size-large_z7qkn_210._combobox--label-floated_z7qkn_47 ._combobox__label_z7qkn_26{left:var(--spacing-m)}._combobox_z7qkn_2:has(._combobox__label_z7qkn_26):not(._combobox--label-floated_z7qkn_47) ._combobox__control_z7qkn_82{color:transparent}._combobox_z7qkn_2:has(._combobox__label_z7qkn_26):not(._combobox--label-floated_z7qkn_47) ._combobox__control_z7qkn_82::placeholder{color:transparent}
1
+ ._combobox_14wpn_2{position:relative;display:flex;flex-direction:column;width:100%}._combobox__wrapper_14wpn_8{position:relative;background-color:var(--center-channel-bg);border-radius:var(--radius-s);box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.16);transition:box-shadow var(--duration-quick) var(--ease-transition);cursor:text}._combobox_14wpn_2:not(._combobox--disabled_14wpn_16):hover:not(:focus-within) ._combobox__wrapper_14wpn_8{box-shadow:inset 0 0 0 1px rgba(var(--center-channel-color-rgb),.24)}._combobox_14wpn_2:focus-within ._combobox__wrapper_14wpn_8{box-shadow:inset 0 0 0 1px var(--focus-ring-color),0 0 0 1px var(--focus-ring-color)}._combobox--disabled_14wpn_16 ._combobox__wrapper_14wpn_8{opacity:.56;cursor:not-allowed}._combobox__label_14wpn_26{position:absolute;left:var(--spacing-xs);top:50%;z-index:1;padding:0 var(--spacing-xxxs);transform:translateY(-50%);margin:0;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-regular);color:rgba(var(--center-channel-color-rgb),.64);background-color:var(--center-channel-bg);pointer-events:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:calc(100% - 24px);transition:transform var(--duration-quick) var(--ease-transition),font-size var(--duration-quick) var(--ease-transition),top var(--duration-quick) var(--ease-transition),left var(--duration-quick) var(--ease-transition),color var(--duration-quick) var(--ease-transition)}._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox_14wpn_2:focus-within ._combobox__label_14wpn_26{color:var(--button-bg)}._combobox__inner_14wpn_56{display:flex;align-items:center;position:relative;gap:var(--spacing-xs);width:100%;box-sizing:border-box}._combobox__leading-icon_14wpn_64{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);pointer-events:none}._combobox__value_14wpn_72{display:flex;flex:1 1 0;flex-wrap:wrap;align-items:center;align-self:stretch;gap:var(--spacing-xxs);min-width:0;margin:-1px 0}._combobox__control_14wpn_82{flex:1 1 0;width:100%;min-width:0;min-height:100%;margin:0;padding:0;border:0;background:transparent;font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);font-weight:var(--font-weight-regular);color:var(--center-channel-color)}._combobox__control_14wpn_82::placeholder{color:rgba(var(--center-channel-color-rgb),.64)}._combobox__control_14wpn_82:focus{outline:none}._combobox__control_14wpn_82:disabled{cursor:not-allowed;color:rgba(var(--center-channel-color-rgb),.64)}._combobox__trailing-icon_14wpn_107{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;color:rgba(var(--center-channel-color-rgb),.64);pointer-events:none;margin-right:var(--spacing-xxxs);transition:transform var(--duration-quick) var(--ease-transition)}._combobox--open_14wpn_117 ._combobox__trailing-icon_14wpn_107{transform:rotate(180deg)}._combobox__popup_14wpn_120{opacity:0;transform:scale(.9);transform-origin:top center;transition:opacity var(--duration-quick) var(--ease-exit),transform var(--duration-quick) var(--ease-exit);pointer-events:none}._combobox__popup--above_14wpn_127{transform-origin:bottom center}._combobox__popup--visible_14wpn_130{opacity:1;transform:scale(1);pointer-events:auto;transition:opacity var(--duration-quick) var(--ease-entrance),transform var(--duration-quick) var(--ease-entrance)}._combobox__menu_14wpn_136{width:100%;min-width:100%;max-width:none}._combobox__empty_14wpn_141{margin:0;padding:var(--spacing-s) var(--spacing-l);font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.64)}._combobox__loading_14wpn_149{display:flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-s) var(--spacing-l);font-family:var(--font-family-body);font-size:var(--font-size-75);line-height:var(--line-height-75);color:rgba(var(--center-channel-color-rgb),.72)}._combobox__list_14wpn_159{margin:0;padding:0;list-style:none}._combobox__option_14wpn_164{display:block;width:100%}._combobox--size-small_14wpn_168 ._combobox__wrapper_14wpn_8{min-height:32px}._combobox--size-small_14wpn_168 ._combobox__inner_14wpn_56{padding:var(--spacing-xs) var(--spacing-m);gap:var(--spacing-xs)}._combobox--size-small_14wpn_168._combobox--has-chips_14wpn_175 ._combobox__inner_14wpn_56{padding-block:var(--spacing-xxs)}._combobox--size-small_14wpn_168 ._combobox__control_14wpn_82{font-size:var(--font-size-75);line-height:var(--line-height-75)}._combobox--size-small_14wpn_168 ._combobox__trailing-icon_14wpn_107 svg{width:var(--icon-size-12);height:var(--icon-size-12)}._combobox--size-small_14wpn_168._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--size-medium_14wpn_192 ._combobox__wrapper_14wpn_8{min-height:40px}._combobox--size-medium_14wpn_192 ._combobox__inner_14wpn_56{padding:var(--spacing-s) var(--spacing-l);gap:var(--spacing-s)}._combobox--size-medium_14wpn_192._combobox--has-chips_14wpn_175 ._combobox__inner_14wpn_56{padding-block:var(--spacing-xs)}._combobox--size-medium_14wpn_192 ._combobox__control_14wpn_82{font-size:var(--font-size-100);line-height:var(--line-height-100)}._combobox--size-medium_14wpn_192 ._combobox__label_14wpn_26{font-size:var(--font-size-100);left:var(--spacing-m)}._combobox--size-medium_14wpn_192 ._combobox__trailing-icon_14wpn_107 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._combobox--size-medium_14wpn_192._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--size-large_14wpn_220 ._combobox__wrapper_14wpn_8{min-height:48px}._combobox--size-large_14wpn_220 ._combobox__inner_14wpn_56{padding:var(--spacing-m) var(--spacing-l);gap:var(--spacing-s)}._combobox--size-large_14wpn_220._combobox--has-chips_14wpn_175 ._combobox__inner_14wpn_56{padding-block:var(--spacing-xs)}._combobox--size-large_14wpn_220 ._combobox__control_14wpn_82{font-size:var(--font-size-200);line-height:var(--line-height-200)}._combobox--size-large_14wpn_220 ._combobox__label_14wpn_26{font-size:var(--font-size-200);line-height:var(--line-height-200);left:var(--spacing-m)}._combobox--size-large_14wpn_220 ._combobox__trailing-icon_14wpn_107 svg{width:var(--icon-size-16);height:var(--icon-size-16)}._combobox--size-large_14wpn_220._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{top:0;transform:translateY(-50%);font-size:var(--font-size-25);line-height:14px}._combobox--invalid_14wpn_249 ._combobox__wrapper_14wpn_8{box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger))}._combobox--invalid_14wpn_249:focus-within ._combobox__wrapper_14wpn_8{box-shadow:inset 0 0 0 1px var(--error-text, var(--color-danger)),0 0 0 2px var(--error-text, var(--color-danger))}._combobox--invalid_14wpn_249 ._combobox__label_14wpn_26{color:var(--error-text, var(--color-danger))}._combobox--invalid_14wpn_249:focus-within ._combobox__label_14wpn_26{color:var(--error-text, var(--color-danger))}._combobox--has-leading-icon_14wpn_261 ._combobox__label_14wpn_26{left:32px}._combobox--has-leading-icon_14wpn_261._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{left:var(--spacing-xs)}._combobox--has-leading-icon_14wpn_261._combobox--size-medium_14wpn_192 ._combobox__label_14wpn_26,._combobox--has-leading-icon_14wpn_261._combobox--size-large_14wpn_220 ._combobox__label_14wpn_26{left:38px}._combobox--has-leading-icon_14wpn_261._combobox--size-medium_14wpn_192._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26,._combobox--has-leading-icon_14wpn_261._combobox--size-large_14wpn_220._combobox--label-floated_14wpn_47 ._combobox__label_14wpn_26{left:var(--spacing-m)}._combobox_14wpn_2:has(._combobox__label_14wpn_26):not(._combobox--label-floated_14wpn_47) ._combobox__control_14wpn_82{color:transparent}._combobox_14wpn_2:has(._combobox__label_14wpn_26):not(._combobox--label-floated_14wpn_47) ._combobox__control_14wpn_82::placeholder{color:transparent}
@@ -34,7 +34,36 @@ export interface ComboboxProps {
34
34
  * `false` shows all options (caller filters via `inputValue` / `onInputChange`).
35
35
  */
36
36
  filter?: boolean | ((option: ComboboxOption, query: string) => boolean);
37
- emptyMessage?: string;
37
+ /** Shown when there are no rows to pick from. Default: "No results". */
38
+ emptyMessage?: ReactNode;
39
+ /**
40
+ * When true, the menu shows a loading row (with Spinner) in place of the
41
+ * empty message. Set while async results are in flight.
42
+ */
43
+ loading?: boolean;
44
+ /** Loading row text. Default: "Loading…". */
45
+ loadingMessage?: ReactNode;
46
+ /**
47
+ * Option objects for the current value(s), used for chips and the
48
+ * single-select label when a value is missing from `options` (e.g. an async
49
+ * search that no longer returns it, or values preselected on load). Values
50
+ * found in `options` resolve from there first.
51
+ */
52
+ selectedOptions?: ComboboxOption[];
53
+ /**
54
+ * When true, typed text that matches no option offers a create row. Created
55
+ * values not found in `options` or `selectedOptions` display their raw value
56
+ * as the label.
57
+ */
58
+ creatable?: boolean;
59
+ /**
60
+ * Called with the trimmed input when the create row is chosen. When set, the
61
+ * host owns adding the value (`onChange` is not called). When omitted, the
62
+ * input is committed as the value through `onChange`.
63
+ */
64
+ onCreateOption?: (inputValue: string) => void;
65
+ /** Create row label. Default: `Create "{inputValue}"`. */
66
+ formatCreateLabel?: (inputValue: string) => ReactNode;
38
67
  className?: string;
39
68
  id?: string;
40
69
  'aria-label'?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,SAAS,EACV,MAAM,OAAO,CAAC;AA2Bf,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACxE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6CD;;;;GAIG;AACH,QAAA,MAAM,QAAQ,4GA+gBZ,CAAC;AAEH,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,SAAS,EACV,MAAM,OAAO,CAAC;AA6Bf,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;AAExD,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACrD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC;IACxE,wEAAwE;IACxE,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,6CAA6C;IAC7C,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,cAAc,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,SAAS,CAAC;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mEAAmE;IACnE,eAAe,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACrC,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuDD;;;;GAIG;AACH,QAAA,MAAM,QAAQ,4GAgqBZ,CAAC;AAEH,eAAe,QAAQ,CAAC"}