Skip to content

Commit 4e0de26

Browse files
authored
Merge pull request #1705 from umbraco/bugfix/input-file
Bugfix/input file
2 parents 30b8d94 + 5e42e44 commit 4e0de26

File tree

3 files changed

+52
-8
lines changed

3 files changed

+52
-8
lines changed

src/packages/core/components/input-upload-field/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ export * from './input-upload-field-file.element.js';
33
export * from './input-upload-field-audio.element.js';
44
export * from './input-upload-field-video.element.js';
55
export * from './input-upload-field-svg.element.js';
6+
export * from './input-upload-field-image.element.js';
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
import { html, customElement, property, css } from '@umbraco-cms/backoffice/external/lit';
2+
import { UmbLitElement } from '@umbraco-cms/backoffice/lit-element';
3+
4+
@customElement('umb-input-upload-field-image')
5+
export class UmbInputUploadFieldImageElement extends UmbLitElement {
6+
@property({ type: String })
7+
path = '';
8+
9+
render() {
10+
if (!this.path) return html`<uui-loader></uui-loader>`;
11+
12+
return html`<img src=${this.path} alt="" />`;
13+
}
14+
15+
static styles = [
16+
css`
17+
:host {
18+
display: flex;
19+
height: 100%;
20+
position: relative;
21+
width: fit-content;
22+
max-height: 400px;
23+
}
24+
25+
img {
26+
max-width: 100%;
27+
max-height: 100%;
28+
object-fit: contain;
29+
width: auto;
30+
height: auto;
31+
}
32+
`,
33+
];
34+
}
35+
36+
declare global {
37+
interface HTMLElementTagNameMap {
38+
'umb-input-upload-field-image': UmbInputUploadFieldImageElement;
39+
}
40+
}

src/packages/core/components/input-upload-field/input-upload-field.element.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import type { UmbTemporaryFileModel } from '../../temporary-file/temporary-file-manager.class.js';
22
import { UmbTemporaryFileManager } from '../../temporary-file/temporary-file-manager.class.js';
3-
import { UMB_PROPERTY_DATASET_CONTEXT } from '../../property/property-dataset/property-dataset-context.token.js';
43
import { UmbId } from '@umbraco-cms/backoffice/id';
54
import {
65
css,
@@ -49,28 +48,27 @@ export class UmbInputUploadFieldElement extends UUIFormControlMixin(UmbLitElemen
4948
this.#setExtensions(value);
5049
}
5150
get fileExtensions(): Array<string> | undefined {
52-
return this.extensions;
51+
return this._extensions;
5352
}
5453

5554
/**
5655
* @description Allows the user to upload multiple files.
57-
* @type {Boolean}
5856
* @default false
5957
* @attr
6058
*/
6159
@property({ type: Boolean })
62-
multiple = false;
60+
public multiple = false;
6361

6462
@state()
65-
_files: Array<{
63+
private _files: Array<{
6664
path: string;
6765
unique: string;
6866
queueItem?: UmbTemporaryFileModel;
6967
file?: File;
7068
}> = [];
7169

7270
@state()
73-
extensions?: string[];
71+
private _extensions?: string[];
7472

7573
@query('#dropzone')
7674
private _dropzone?: UUIFileDropzoneElement;
@@ -124,8 +122,13 @@ export class UmbInputUploadFieldElement extends UUIFormControlMixin(UmbLitElemen
124122
}
125123

126124
#setExtensions(value: Array<string>) {
125+
if (!value) {
126+
this._extensions = undefined;
127+
return;
128+
}
129+
127130
// TODO: The dropzone uui component does not support file extensions without a dot. Remove this when it does.
128-
this.extensions = value?.map((extension) => {
131+
this._extensions = value?.map((extension) => {
129132
return `.${extension}`;
130133
});
131134
}
@@ -198,7 +201,7 @@ export class UmbInputUploadFieldElement extends UUIFormControlMixin(UmbLitElemen
198201
id="dropzone"
199202
label="dropzone"
200203
@change="${this.#onUpload}"
201-
accept="${ifDefined(this.extensions?.join(', '))}"
204+
accept="${ifDefined(this._extensions?.join(', '))}"
202205
?multiple="${this.multiple}">
203206
<uui-button label=${this.localize.term('media_clickToUpload')} @click="${this.#handleBrowse}"></uui-button>
204207
</uui-file-dropzone>

0 commit comments

Comments
 (0)