Browser.js 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. const html = require('yo-yo')
  2. const Breadcrumbs = require('./Breadcrumbs')
  3. const Table = require('./Table')
  4. module.exports = (props) => {
  5. let filteredFolders = props.folders
  6. let filteredFiles = props.files
  7. if (props.filterInput !== '') {
  8. filteredFolders = props.filterItems(props.folders)
  9. filteredFiles = props.filterItems(props.files)
  10. }
  11. return html`
  12. <div class="Browser Browser-viewType--${props.viewType}">
  13. <header class="Browser-header">
  14. <div class="Browser-search" aria-hidden="${!props.isSearchVisible}">
  15. <input type="text" class="Browser-searchInput" placeholder="Search"
  16. onkeyup=${props.filterQuery} value="${props.filterInput}"/>
  17. <button type="button" class="Browser-searchClose"
  18. onclick=${props.toggleSearch}>
  19. <svg class="UppyIcon" viewBox="0 0 19 19">
  20. <path d="M17.318 17.232L9.94 9.854 9.586 9.5l-.354.354-7.378 7.378h.707l-.62-.62v.706L9.318 9.94l.354-.354-.354-.354L1.94 1.854v.707l.62-.62h-.706l7.378 7.378.354.354.354-.354 7.378-7.378h-.707l.622.62v-.706L9.854 9.232l-.354.354.354.354 7.378 7.378.708-.707-7.38-7.378v.708l7.38-7.38.353-.353-.353-.353-.622-.622-.353-.353-.354.352-7.378 7.38h.708L2.56 1.23 2.208.88l-.353.353-.622.62-.353.355.352.353 7.38 7.38v-.708l-7.38 7.38-.353.353.352.353.622.622.353.353.354-.353 7.38-7.38h-.708l7.38 7.38z"/>
  21. </svg>
  22. </button>
  23. </div>
  24. <div class="Browser-headerBar">
  25. <button type="button" class="Browser-searchToggle"
  26. onclick=${props.toggleSearch}>
  27. <svg class="UppyIcon" viewBox="0 0 100 100">
  28. <path d="M87.533 80.03L62.942 55.439c3.324-4.587 5.312-10.207 5.312-16.295 0-.312-.043-.611-.092-.908.05-.301.093-.605.093-.922 0-15.36-12.497-27.857-27.857-27.857-.273 0-.536.043-.799.08-.265-.037-.526-.08-.799-.08-15.361 0-27.858 12.497-27.858 27.857 0 .312.042.611.092.909a5.466 5.466 0 0 0-.093.921c0 15.36 12.496 27.858 27.857 27.858.273 0 .535-.043.8-.081.263.038.524.081.798.081 5.208 0 10.071-1.464 14.245-3.963L79.582 87.98a5.603 5.603 0 0 0 3.976 1.647 5.621 5.621 0 0 0 3.975-9.597zM39.598 55.838c-.265-.038-.526-.081-.8-.081-9.16 0-16.612-7.452-16.612-16.612 0-.312-.042-.611-.092-.908.051-.301.093-.605.093-.922 0-9.16 7.453-16.612 16.613-16.612.272 0 .534-.042.799-.079.263.037.525.079.799.079 9.16 0 16.612 7.452 16.612 16.612 0 .312.043.611.092.909-.05.301-.094.604-.094.921 0 9.16-7.452 16.612-16.612 16.612-.274 0-.536.043-.798.081z"/>
  29. </svg>
  30. </button>
  31. ${Breadcrumbs({
  32. getFolder: props.getFolder,
  33. directories: props.directories,
  34. title: props.title
  35. })}
  36. <button type="button" onclick=${props.logout} class="Browser-userLogout">Log out</button>
  37. </div>
  38. </header>
  39. <div class="Browser-body">
  40. ${Table({
  41. columns: [{
  42. name: 'Name',
  43. key: 'title'
  44. }],
  45. folders: filteredFolders,
  46. files: filteredFiles,
  47. activeRow: props.isActiveRow,
  48. sortByTitle: props.sortByTitle,
  49. sortByDate: props.sortByDate,
  50. handleFileClick: props.addFile,
  51. handleFolderClick: props.getNextFolder,
  52. isChecked: props.isChecked,
  53. toggleCheckbox: props.toggleCheckbox,
  54. getItemName: props.getItemName,
  55. getItemIcon: props.getItemIcon,
  56. handleScroll: props.handleScroll,
  57. title: props.title
  58. })}
  59. </div>
  60. <button class="UppyButton--circular UppyButton--blue Browser-doneBtn"
  61. type="button"
  62. aria-label="Done picking files"
  63. title="Done picking files"
  64. onclick=${props.done}>
  65. <svg aria-hidden="true" class="UppyIcon" width="13px" height="9px" viewBox="0 0 13 9">
  66. <polygon points="5 7.293 1.354 3.647 0.646 4.354 5 8.707 12.354 1.354 11.646 0.647" />
  67. </svg>
  68. </button>
  69. </div>
  70. `
  71. }