Item.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. const { h } = require('preact')
  2. module.exports = (props) => {
  3. const stop = (ev) => {
  4. if (ev.keyCode === 13) {
  5. ev.stopPropagation()
  6. ev.preventDefault()
  7. }
  8. }
  9. const handleItemClick = (ev) => {
  10. ev.preventDefault()
  11. // when file is clicked, select it, but when folder is clicked, open it
  12. if (props.type === 'folder') {
  13. return props.handleClick(ev)
  14. }
  15. props.handleCheckboxClick(ev)
  16. }
  17. return (
  18. <li class={'uppy-ProviderBrowserItem' + (props.isChecked ? ' uppy-ProviderBrowserItem--selected' : '')}>
  19. <div class="uppy-ProviderBrowserItem-checkbox">
  20. <input type="checkbox"
  21. role="option"
  22. tabindex={0}
  23. aria-label={`Select ${props.title}`}
  24. id={props.id}
  25. checked={props.isChecked}
  26. disabled={props.isDisabled}
  27. onchange={props.handleCheckboxClick}
  28. onkeyup={stop}
  29. onkeydown={stop}
  30. onkeypress={stop} />
  31. <label
  32. for={props.id}
  33. onclick={props.handleCheckboxClick}
  34. />
  35. </div>
  36. <button type="button"
  37. class="uppy-ProviderBrowserItem-inner"
  38. aria-label={`Select ${props.title}`}
  39. tabindex={0}
  40. onclick={handleItemClick}>
  41. {props.getItemIcon()} {props.showTitles && props.title}
  42. </button>
  43. </li>
  44. )
  45. }