Handbuch wien.gv.at
Startseite wien.gv.at

Formular: Upload

Dateien können entweder durch Drag & Drop oder durch Klick auf den "Datei hochladen"-Button hochgeladen werden.

Varianten

Upload einer Datei

Es darf maximal eine Datei hochgeladen werden.

Vorschau Geburtsurkunde Code
<wm-upload>
<strong>Geburtsurkunde</strong>
</wm-upload>

Upload mehrerer Dateien

Mehrere Dateien können hochgeladen und auch wieder entfernt werden.

Vorschau Code
<wm-upload multiple="multiple"></wm-upload>

Upload mit benutzerdefiniertem Text

Vorschau Dateien in diesen Bereich ziehen Code
<wm-upload class="upload" multiple="multiple" label="Auswählen">
Dateien in diesen Bereich ziehen
</wm-upload>
Dev

Weitere Beispiele

Upload – Darstellung ausgewählter Dateien

Vorschau Dateien in diesen Bereich ziehen Code
<wm-upload class="event" multiple>
Dateien in diesen Bereich ziehen
</wm-upload>

<script>
const eventUpload = document.querySelector('.event');
eventUpload.addEventListener('wm-files-added', e => {
console.log(e.type)
console.log(e.detail)
})

eventUpload.addEventListener('wm-files-removed', e => {
console.log(e.type)
console.log(e.detail)
})

eventUpload.addEventListener('wm-files-updated', e => {
console.log(e.type)
console.log(e.detail)
})
</script>

Upload – alternative Darstellung ausgewählter Dateien

Die ausgewählten Dateien können auch in einer benutzerdefinierten Liste dargestellt werden.

Vorschau Dateien in diesen Bereich ziehen Code
<wm-upload class="upload2" multiple hideSelectedFiles>
Dateien in diesen Bereich ziehen
</wm-upload>

<wm-table hidden class="files" sort="true, true, true, false">
<table>
<caption>Ausgewählte Dateien</caption>
<thead>
<tr>
<th>Dateiname</th>
<th>Zuletzt geändert</th>
<th>Dateigröße</th>
<th>Dateitype</th>
</tr>
</thead>

<tbody>
</tbody>
</table>
</wm-table>


<template id="row">
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td>
<wm-button color="morgenrot" size="xs" kind="secondary">
<button>
<wm-icon iconid="close"></wm-icon>
</button>
</wm-button>
</td>
</tr>
</template>

<script>
const upload = document.querySelector('.upload2')
const fileList = document.querySelector('.files')
const body = fileList.querySelector('tbody')
const row = document.querySelector('#row')

fileList.addEventListener('click', e => {
if (e.target.closest('button[data-index]')) {
const index = e.target.closest('button[data-index]').dataset.index;
upload.removeFile(index, e)

if (body.querySelectorAll('tr').length === 0) {
fileList.setAttribute('hidden', 'hidden');
}
}
})

upload.addEventListener('wm-files-updated', e => {
body.innerHTML = '';
fileList.removeAttribute('hidden');

for (let i = 0; i < e.detail.length; i++) {
const newRow = row.content.cloneNode(true)
const data = e.detail[i];
const tds = newRow.querySelectorAll('td');
const button = newRow.querySelector('button')

tds[0].textContent = data.name;
tds[1].textContent = data.lastModified;
tds[2].textContent = `${Math.round(data.size / 1024)}KB`;
tds[3].textContent = data.type;
button.dataset.index = i

body.appendChild(newRow)
}

if (fileList.querySelector('[aria-sort]')) {
const th = fileList.querySelector('[aria-sort]');
const direction = th.getAttribute('aria-sort') === 'ascending' ? 1 : 0
fileList.rearrangeRows(th, direction)
}
})
</script>

Events (siehe Konsole)

Vorschau
Dateien in diesen Bereich ziehen
Code
<wm-form>
<form>
<wm-upload multiple id="events" required>
Dateien in diesen Bereich ziehen
</wm-upload>
<button>Send</button>
</form>
</wm-form>
<script>
const upload2 = document.querySelector('#events');
upload2.addEventListener('wm-focus', e => {
console.log(e.type)
console.log(e.detail)
})
upload2.addEventListener('wm-input', e => {
console.log(e.type)
console.log(e.detail)
})
upload2.addEventListener('wm-change', e => {
console.log(e.type)
console.log(e.detail)
})
upload2.addEventListener('wm-blur', e => {
console.log(e.type)
console.log(e.detail)
})
upload2.addEventListener('wm-invalid', e => {
console.log(e.type)
console.log(e.detail)
})
</script>
API

Abhängigkeiten

HTML
<script src="https://assets.wien.gv.at/theme/latest/js/components/Upload/Upload.js" type="module"></script>
<script src="https://assets.wien.gv.at/theme/latest/js/components/Button/Button.js" type="module"></script>
<script src="https://assets.wien.gv.at/theme/latest/js/components/List/List.js" type="module"></script>
<script src="https://assets.wien.gv.at/theme/latest/js/components/Stack/Stack.js" type="module"></script>
JavaScript
import { Upload } from './wienermelange/assets/js/components/Upload/Upload.js';
    import { Button } from './wienermelange/assets/js/components/Button/Button.js';
    import { List } from './wienermelange/assets/js/components/List/List.js';
    import { Stack } from './wienermelange/assets/js/components/Stack/Stack.js';

Eigenschaften

Eigenschaften
Eigenschaft Beschreibung Werte Default
labelDelete Bezeichnung des Löschen-Buttons (Lösche [Dateiname]) String "Lösche"
labelDeleted Bezeichnung für das Liveregion-Update nachdem eine Datei gelöscht wurde. ([Dateiname] gelöscht) String "gelöscht"
labelSelection Bezeichnung für Titel der ausgewählten Dateien String "Datei(en) ausgewählt"
multiple Auswahl von mehreren Dateien erlauben boolean false
hideSelectedFiles Auflistung der ausgewählten Dateien verbergen boolean false
_formData Needed to submit files object new FormData()
errormessage Fehlermeldung bei ungültiger Eingabe Diese Meldung wird direkt am Upload-Element angezeigt, wenn es validiert wird und ungültig ist, z.B. wenn ein Pflichtfeld keine Datei enthält. String ""
summaryErrormessage Spezifische Fehlermeldung für die Fehlerübersicht Diese Meldung wird in der Fehlerübersicht (wm-formerrorsummary) anstelle der normalen Fehlermeldung angezeigt. Dies ist nützlich, um in der Übersicht kontextspezifischere Fehlermeldungen anzuzeigen, z.B. "Bitte laden Sie einen Nachweis bei 'Einkommensnachweis' hoch" statt nur "Bitte wählen Sie eine Datei aus". String ""
_hasInteracted Whether the component has been interacted with Boolean false
validator function

Slots

Name Beschreibung
default Text oder HTML-Content über dem Button
postcontent Text oder HTML-Content unter dem Button

Methoden

Eigenschaft Optionen Argumente
removeFile Bestimmte Datei entfernen Index der ausgewählten Datei (Number)
Click-Event (Event)
showError Shows an error message for this upload component The error message to display (string)
clearError Clears any error state from this upload component /
_unsetFileValues Remove all files /
_setFileValues Fill formdata submitted to the server /
_handleChange
_handleEvent
_handleUpload
formResetCallback Form reset callback - called by parent forms Provides standard reset behavior /
formDisabledCallback Called when the element's form sets the disabled state Whether the control should be disabled (boolean)
_dispatchFormEvent

Events

Event Beschreibung Rückgabewert
wm-files-updated Dateiliste aktualisiert Array mit Dateien
change
wm-files-added
wm-files-removed
eventName
blur
focus
invalid
reset

CSS API

Property Beschreibung
--upload-background-color Hintergrundfarbe
--upload-border-color Farbe des Rahmens
--upload-border-color--dark Farbe des Rahmens (Dunkel)
--upload-border-color--active Farbe des Rahmens bei Hover und Focus
--upload-padding Innenabstand

Kontakt

Haben Sie noch Fragen, Feedback oder brauchen Sie ein Element, das die Pattern Library noch nicht bietet?

handbuch@ma53.wien.gv.at