diff --git a/packages/upload/src/styles/vaadin-upload-base-styles.js b/packages/upload/src/styles/vaadin-upload-base-styles.js index 1beff605617..09ab351b840 100644 --- a/packages/upload/src/styles/vaadin-upload-base-styles.js +++ b/packages/upload/src/styles/vaadin-upload-base-styles.js @@ -39,6 +39,10 @@ export const uploadStyles = css` gap: var(--vaadin-gap-s); } + ::slotted([slot='drop-label-content']) { + flex: 100; + } + [part='drop-label'] { align-items: center; color: var(--vaadin-upload-drop-label-color, var(--vaadin-text-color)); diff --git a/packages/upload/src/vaadin-upload.js b/packages/upload/src/vaadin-upload.js index a230bbde362..890a7b796e2 100644 --- a/packages/upload/src/vaadin-upload.js +++ b/packages/upload/src/vaadin-upload.js @@ -125,10 +125,12 @@ class Upload extends UploadMixin(ElementMixin(ThemableMixin(PolylitMixin(LumoInj return html`
- + + +
diff --git a/packages/upload/test/dom/__snapshots__/vaadin-upload.test.snap.js b/packages/upload/test/dom/__snapshots__/vaadin-upload.test.snap.js index 350985bbe8b..f918dabe7dc 100644 --- a/packages/upload/test/dom/__snapshots__/vaadin-upload.test.snap.js +++ b/packages/upload/test/dom/__snapshots__/vaadin-upload.test.snap.js @@ -198,16 +198,18 @@ snapshots["vaadin-upload shadow default"] = `
- + + +
diff --git a/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom-with-files.png b/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom-with-files.png new file mode 100644 index 00000000000..e536271198e Binary files /dev/null and b/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom-with-files.png differ diff --git a/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom.png b/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom.png new file mode 100644 index 00000000000..1a1efd0ab95 Binary files /dev/null and b/packages/upload/test/visual/base/screenshots/upload/baseline/drop-label-content-custom.png differ diff --git a/packages/upload/test/visual/base/upload.test.js b/packages/upload/test/visual/base/upload.test.js index 00f5bb2025c..515a7949962 100644 --- a/packages/upload/test/visual/base/upload.test.js +++ b/packages/upload/test/visual/base/upload.test.js @@ -145,4 +145,31 @@ describe('upload', () => { await visualDiff(div, 'state-max-files-reached'); }); }); + + describe('drop-label-content slot', () => { + it('custom content', async () => { + element = fixtureSync( + ` +
+ Custom drop area content +
+
`, + div, + ); + await visualDiff(div, 'drop-label-content-custom'); + }); + + it('custom content with files', async () => { + element = fixtureSync( + ` +
+ Custom drop area content +
+
`, + div, + ); + element.files = [{ name: 'Don Quixote.pdf', progress: 100, complete: true }]; + await visualDiff(div, 'drop-label-content-custom-with-files'); + }); + }); }); diff --git a/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom-with-files.png b/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom-with-files.png new file mode 100644 index 00000000000..eab6ebbdaeb Binary files /dev/null and b/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom-with-files.png differ diff --git a/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom.png b/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom.png new file mode 100644 index 00000000000..18bfe631012 Binary files /dev/null and b/packages/upload/test/visual/lumo/screenshots/upload/baseline/drop-label-content-custom.png differ diff --git a/packages/upload/test/visual/lumo/upload.test.js b/packages/upload/test/visual/lumo/upload.test.js index 25675b5f316..169261bde25 100644 --- a/packages/upload/test/visual/lumo/upload.test.js +++ b/packages/upload/test/visual/lumo/upload.test.js @@ -157,4 +157,31 @@ describe('upload', () => { await visualDiff(div, 'width'); }); }); + + describe('drop-label-content slot', () => { + it('custom content', async () => { + element = fixtureSync( + ` +
+ Custom drop area content +
+
`, + div, + ); + await visualDiff(div, 'drop-label-content-custom'); + }); + + it('custom content with files', async () => { + element = fixtureSync( + ` +
+ Custom drop area content +
+
`, + div, + ); + element.files = [{ name: 'Don Quixote.pdf', progress: 100, complete: true }]; + await visualDiff(div, 'drop-label-content-custom-with-files'); + }); + }); });