rail-overflow-dropdown.tsx 943 B

123456789101112131415161718192021222324252627282930313233
  1. import { DropdownMenu } from '@/shared/components/dropdown/dropdown-menu'
  2. import { RailTabKey } from '@/features/ide-react/context/rail-context'
  3. import { RailElement } from '@/features/ide-react/util/rail-types'
  4. import RailTab from './rail-tab'
  5. import { shouldIncludeElement } from '@/features/ide-react/util/rail-utils'
  6. export default function RailOverflowDropdown({
  7. tabs,
  8. isOpen,
  9. selectedTab,
  10. }: {
  11. tabs: RailElement[]
  12. isOpen: boolean
  13. selectedTab: RailTabKey
  14. }) {
  15. return (
  16. <DropdownMenu className="ide-rail-overflow-dropdown">
  17. {tabs
  18. .filter(shouldIncludeElement)
  19. .map(({ icon, key, indicator, title, disabled }) => (
  20. <RailTab
  21. open={isOpen && selectedTab === key}
  22. key={key}
  23. eventKey={key}
  24. icon={icon}
  25. indicator={indicator}
  26. title={title}
  27. disabled={disabled}
  28. />
  29. ))}
  30. </DropdownMenu>
  31. )
  32. }