file-tree-modal-create-file-mode.jsx 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import classnames from 'classnames'
  2. import PropTypes from 'prop-types'
  3. import Icon from '../../../../shared/components/icon'
  4. import { useFileTreeActionable } from '../../contexts/file-tree-actionable'
  5. import * as eventTracking from '../../../../infrastructure/event-tracking'
  6. import OLButton from '@/features/ui/components/ol/ol-button'
  7. import BootstrapVersionSwitcher from '@/features/ui/components/bootstrap-5/bootstrap-version-switcher'
  8. import MaterialIcon from '@/shared/components/material-icon'
  9. export default function FileTreeModalCreateFileMode({ mode, icon, label }) {
  10. const { newFileCreateMode, startCreatingFile } = useFileTreeActionable()
  11. const handleClick = () => {
  12. startCreatingFile(mode)
  13. eventTracking.sendMB('file-modal-click', { method: mode })
  14. }
  15. return (
  16. <li className={classnames({ active: newFileCreateMode === mode })}>
  17. <OLButton
  18. variant="link"
  19. onClick={handleClick}
  20. className="modal-new-file-mode"
  21. >
  22. <BootstrapVersionSwitcher
  23. bs3={<Icon type={icon} fw />}
  24. bs5={<MaterialIcon type={icon} />}
  25. />
  26. &nbsp;
  27. {label}
  28. </OLButton>
  29. </li>
  30. )
  31. }
  32. FileTreeModalCreateFileMode.propTypes = {
  33. mode: PropTypes.string.isRequired,
  34. icon: PropTypes.string.isRequired,
  35. label: PropTypes.string.isRequired,
  36. }