uppy
Version:
Extensible JavaScript file upload widget with support for drag&drop, resumable uploads, previews, restrictions, file processing/encoding, remote providers like Instagram, Dropbox, Google Drive, S3 and more :dog:
49 lines (44 loc) • 1.31 kB
JavaScript
const cuid = require('cuid')
const { h } = require('preact')
module.exports = (props) => {
const uniqueId = cuid()
const stop = (ev) => {
if (ev.keyCode === 13) {
ev.stopPropagation()
ev.preventDefault()
}
}
const handleItemClick = (ev) => {
ev.preventDefault()
// when file is clicked, select it, but when folder is clicked, open it
if (props.type === 'folder') {
return props.handleClick(ev)
}
props.handleCheckboxClick(ev)
}
return (
<li class={'uppy-ProviderBrowserItem' + (props.isChecked ? ' uppy-ProviderBrowserItem--selected' : '')}>
<div class="uppy-ProviderBrowserItem-checkbox">
<input type="checkbox"
role="option"
tabindex="0"
aria-label={`Select ${props.title}`}
id={uniqueId}
checked={props.isChecked}
disabled={props.isDisabled}
onchange={props.handleCheckboxClick}
onkeyup={stop}
onkeydown={stop}
onkeypress={stop} />
<label for={uniqueId} />
</div>
<button type="button"
class="uppy-ProviderBrowserItem-inner"
aria-label={`Select ${props.title}`}
tabindex="0"
onclick={handleItemClick}>
{props.getItemIcon()} {props.title}
</button>
</li>
)
}