component FileInput { props { @event input = function @event change = function @event focus = function @event blur = function @event select = function @event clear = function @event invalid = function size = "default" color = "primary" id = "" name = "" label = "File" hiddenLabel = false placeholder = "Choose a file" value = "" icon = "icon-[lucide--upload]" iconPosition = "start" accept = "" multiple = false helperText = "" cornerHint = "" error = "" inline = false variant = "normal" readonly = false disabled = false required = false class = "" } state selectedName = "" functions { function handleChange(sourceEvent) { sourceEvent.stopPropagation() selectedName = sourceEvent.currentTarget.files && sourceEvent.currentTarget.files.length ? sourceEvent.currentTarget.files[0].name : "" $emit("input", { files: sourceEvent.currentTarget.files, name: name, sourceEvent: sourceEvent }) $emit("change", { files: sourceEvent.currentTarget.files, name: name, sourceEvent: sourceEvent }) if (selectedName) $emit("select", { files: sourceEvent.currentTarget.files, name: name, sourceEvent: sourceEvent }) else $emit("clear", { name: name, sourceEvent: sourceEvent }) } function emitField(nameEvent, sourceEvent) { sourceEvent.stopPropagation(); $emit(nameEvent, { name: name, sourceEvent: sourceEvent }) } function preventReadonly(sourceEvent) { if (readonly) sourceEvent.preventDefault() } } view {
} }