Formular: Upload
-
Akkordeon -
Anker -
Audio-Player -
Bild -
Bot -
Breaking News -
Button -
Card -
Chip -
Copyright -
Details -
Exposé -
Fetch -
Flip-Card -
Footer -
Formular: Block -
Formular: Checkbox -
Formular: Combobox -
Formular: Fehlerliste -
Formular: Filter -
Formular: Fortschrittsanzeige -
Formular: Input -
Formular: Layouts -
Formular: Radio -
Formular: Select -
Formular: Switch -
Formular: Textfeld -
Formular: Upload -
Formular: Validierung -
Galerie -
Grid -
Header -
Hervorgehobener Link -
Hervorhebung -
Icon -
In-Page Navigation -
Infobox -
Karussell -
Kontakt -
Links -
Liste -
Logo -
Map -
Meldung -
Menü -
Modal -
Newsletter -
Pager -
Paginierung -
Quicklink-Liste -
Reiter -
Section -
Sidebar -
Skip Link -
Social Media -
Stack -
Stage -
Status -
Suche -
Tabelle -
Tag -
Tourismuszeile -
Video-Player -
Vorspann -
Zeitstempel -
Zitat
Dateien können entweder durch Drag & Drop oder durch Klick auf den "Datei hochladen"-Button hochgeladen werden.
Upload einer Datei
Es darf maximal eine Datei hochgeladen werden.
<wm-upload>
<strong>Geburtsurkunde</strong>
</wm-upload>
Upload mehrerer Dateien
Mehrere Dateien können hochgeladen und auch wieder entfernt werden.
<wm-upload multiple="multiple"></wm-upload>
Upload mit benutzerdefiniertem Text
<wm-upload class="upload" multiple="multiple" label="Auswählen">
Dateien in diesen Bereich ziehen
</wm-upload>
Weitere Beispiele
Upload – Darstellung ausgewählter Dateien
<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.
Dateiname | Zuletzt geändert | Dateigröße | Dateitype |
---|
<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)
<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>
Abhängigkeiten
<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>
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
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