Skip to content
bahtuiv0.6.0

<baht-file>

The type: 'file' field for JSON forms. Two modes: capture (default) hands the host a File | File[] | null and never uploads; upload (field.uploader naming a registry function) uploads on pick and the value becomes a serializable { name, size, type, url } ref. Want to point at an endpoint from markup with no host code? That is <baht-upload>.

Basic

<baht-file></baht-file>

<script>
  const el = document.querySelector('baht-file');
  el.field = {
    "order": 1,
    "type": "file",
    "key": "resume",
    "label": "Resume (PDF)",
    "accept": ".pdf",
    "max_size": 5242880
  };
  el.value = null;
</script>
NameTypeDefaultDescription
uploaderJS(file: File) => Promise<UploadedFile> | undefinedResolved registry uploader — <baht-form> injects it when `field.uploader` is set.
fieldJSFieldDescriptorField spec: { order, type, key, label?, placeholder?, options?, … }
valueJSunknownnullControlled value. Re-feed on every baht-input
disabledbooleanfalseDisable the control
readonlybooleanfalseRead-only
requiredbooleanfalseShow required mark
show-optionalbooleanfalseAppend the localized "(optional)" marker to the label when not required (set by <baht-form show-optional>).
errorJSstring | nullnullValidation message to display
debouncenumber | undefinedDebounce for typed edits (ms); unset = BahtFieldBase.defaultDebounce.
EventdetailDescription
nameCustomEvent
baht-input{ key, value }Fired on every user edit