UNPKG

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
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> ) }