//
// Copyright (c) 2017, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
// 30 Jan 2017 Andy Frank Creation
//
using dom
**
** FilePicker allows selection of files.
**
** See also: [docDomkit]`docDomkit::Controls#filePicker`
**
@Js class FilePicker : Elem
{
new make() : super("input")
{
this.style.addClass("domkit-FilePicker")
this->type = "file"
this->tabIndex = 0
this.onEvent("change", false)
{
if (cbSelect != null) cbSelect(this)
}
}
** Indicate the types of files that the server accepts.
** The value must be a comma-separated list of unique
** content type specifiers:
**
** - A file extension starting with a '.': (e.g. .jpg, .png, .doc)
** - A valid MIME type with no extensions
** - 'audio/*' representing sound files
** - 'video/*' representing video files
** - 'image/*' representing image files
Str? accept
{
get { this->accept }
set { this->accept = it }
}
** Does this picker allow selecting multiple files?
Bool multi
{
get { this->multiple }
set { this->multiple = it }
}
** Programmtically open the client file chooser interface.
Void open() { this.invoke("click") }
** Get the list of currently selected files.
DomFile[] files() { this->files }
** Reset picker to no selection.
Void reset() { this->value = "" }
** Callback when a file has been selected by this picker.
Void onSelect(|FilePicker| f) { this.cbSelect = f }
private Func? cbSelect := null
}