@exmg/exm-upload 1.1.9 → 1.1.10-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload-base.d.ts +90 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload-base.js +226 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload.d.ts +11 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-dialog-upload.js +15 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-base.d.ts +148 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-base.js +373 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop-base.d.ts +16 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop-base.js +76 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-crop.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area-base.d.ts +8 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area-base.js +34 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-drop-area.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-input.d.ts +15 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-input.js +84 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item-base.d.ts +45 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item-base.js +175 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload-item.js +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload.d.ts +19 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/exm-upload.js +22 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/index.d.ts +19 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/index.js +18 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/mixins/exm-upload-drag-drop-mixin.d.ts +10 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/mixins/exm-upload-drag-drop-mixin.js +28 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-dialog-upload-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-dialog-upload-css.js +253 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-crop-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-crop-styles-css.js +324 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-drop-area-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-drop-area-styles-css.js +52 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-input-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-input-css.js +22 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-item-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-item-styles-css.js +124 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-styles-css.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/styles/exm-upload-styles-css.js +150 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/types.d.ts +33 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/types.js +10 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/form-data-adapter.d.ts +7 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/local-adapter.d.ts +6 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/adapters/xhr-adapter.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/index.d.ts +1 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/service.d.ts +9 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/service.js +45 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/upload/types.d.ts +12 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/utils.d.ts +33 -0
- package/.rollup.cache/root/repo/packages/exm-upload/dist/utils.js +89 -0
- package/dist/exm-dialog-upload-base.js +6 -4
- package/dist/exm-dialog-upload.js +4 -2
- package/dist/exm-upload-base.js +9 -7
- package/dist/exm-upload-crop-base.js +7 -4
- package/dist/exm-upload-crop.js +4 -2
- package/dist/exm-upload-drop-area-base.js +6 -3
- package/dist/exm-upload-drop-area.js +4 -2
- package/dist/exm-upload-input.js +5 -3
- package/dist/exm-upload-item-base.js +9 -6
- package/dist/exm-upload-item.js +4 -2
- package/dist/exm-upload.js +4 -2
- package/dist/index.d.ts +1 -0
- package/dist/index.js +3 -2
- package/dist/mixins/exm-upload-drag-drop-mixin.js +6 -3
- package/dist/styles/exm-dialog-upload-css.js +5 -2
- package/dist/styles/exm-upload-crop-styles-css.js +5 -2
- package/dist/styles/exm-upload-drop-area-styles-css.js +5 -3
- package/dist/styles/exm-upload-input-css.js +5 -2
- package/dist/styles/exm-upload-item-styles-css.js +5 -2
- package/dist/styles/exm-upload-styles-css.js +5 -2
- package/dist/types.js +5 -3
- package/dist/upload/service.js +2 -1
- package/dist/utils.js +11 -13
- package/package.json +10 -11
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/form-data-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/local-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/adapters/xhr-adapter.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/index.js +0 -0
- /package/{dist → .rollup.cache/root/repo/packages/exm-upload/dist}/upload/types.js +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import '@material/web/dialog/dialog.js';
|
|
2
|
+
import { MdDialog } from '@material/web/dialog/dialog.js';
|
|
3
|
+
import '@material/web/button/filled-button.js';
|
|
4
|
+
import '@material/web/button/text-button.js';
|
|
5
|
+
import '@material/web/icon/icon.js';
|
|
6
|
+
import '@material/web/iconbutton/icon-button.js';
|
|
7
|
+
import { ExmgElement } from '@exmg/lit-base';
|
|
8
|
+
import { ExmUpload } from './exm-upload.js';
|
|
9
|
+
import { FileData } from './types.js';
|
|
10
|
+
export declare const CLOSE_ACTION = "close";
|
|
11
|
+
export declare class ExmDialogUploadBase extends ExmgElement {
|
|
12
|
+
/**
|
|
13
|
+
* Opens the dialog when set to `true` and closes it when set to `false`.
|
|
14
|
+
*/
|
|
15
|
+
open: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Set to make the dialog position draggable.
|
|
18
|
+
*/
|
|
19
|
+
draggable: boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Title of the dialog
|
|
22
|
+
*/
|
|
23
|
+
title: string;
|
|
24
|
+
type?: 'alert' | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Submit button copy
|
|
27
|
+
*/
|
|
28
|
+
submitBtn: string;
|
|
29
|
+
/**
|
|
30
|
+
* Cancel button copy
|
|
31
|
+
*/
|
|
32
|
+
cancelBtn: string;
|
|
33
|
+
/**
|
|
34
|
+
* Icon of the dialog
|
|
35
|
+
*/
|
|
36
|
+
icon: string;
|
|
37
|
+
/**
|
|
38
|
+
* Internall used to show button spinner.
|
|
39
|
+
*/
|
|
40
|
+
submitting: boolean;
|
|
41
|
+
protected dialog: MdDialog;
|
|
42
|
+
_cropMode: boolean;
|
|
43
|
+
_hasItems: boolean;
|
|
44
|
+
protected getUploadElement(): ExmUpload;
|
|
45
|
+
/**
|
|
46
|
+
* Copy for done button
|
|
47
|
+
*/
|
|
48
|
+
buttonSaveCopy: string;
|
|
49
|
+
/**
|
|
50
|
+
* Copy for image crop done button
|
|
51
|
+
*/
|
|
52
|
+
buttonCropDoneCopy: string;
|
|
53
|
+
firstUpdated(): void;
|
|
54
|
+
_startCrop(): void;
|
|
55
|
+
_stopCrop(): void;
|
|
56
|
+
/**
|
|
57
|
+
* Opens and shows the dialog. This is equivalent to setting the `open`
|
|
58
|
+
* property to true.
|
|
59
|
+
*/
|
|
60
|
+
show(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Closes the dialog. This is equivalent to setting the `open`
|
|
63
|
+
* property to false.
|
|
64
|
+
*/
|
|
65
|
+
close(): void;
|
|
66
|
+
/**
|
|
67
|
+
* Opens and shows the dialog if it is closed; otherwise closes it.
|
|
68
|
+
*/
|
|
69
|
+
toggleShow(): void;
|
|
70
|
+
_getImageUploadElement(): ExmUpload | null;
|
|
71
|
+
_handleSuccess(): void;
|
|
72
|
+
_handleClose(): void;
|
|
73
|
+
_handleFilesChanged(e: CustomEvent<{
|
|
74
|
+
files: FileData[];
|
|
75
|
+
}>): void;
|
|
76
|
+
/**
|
|
77
|
+
* Action method that needs to be implemented
|
|
78
|
+
* @param {CustomEvent} e
|
|
79
|
+
*/
|
|
80
|
+
doAction?(url?: string): Promise<void> | void;
|
|
81
|
+
protected _handleSubmit(): Promise<void>;
|
|
82
|
+
_cancelActiveCrop(): void;
|
|
83
|
+
_saveActiveCrop(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Method should be overriden to render upload element
|
|
86
|
+
*/
|
|
87
|
+
protected renderContent(): import("lit-html").TemplateResult<1>;
|
|
88
|
+
renderActions(): import("lit-html").TemplateResult<1>;
|
|
89
|
+
protected render(): import("lit-html").TemplateResult<1>;
|
|
90
|
+
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { html } from 'lit';
|
|
3
|
+
import '@material/web/dialog/dialog.js';
|
|
4
|
+
import '@material/web/button/filled-button.js';
|
|
5
|
+
import '@material/web/button/text-button.js';
|
|
6
|
+
import '@material/web/icon/icon.js';
|
|
7
|
+
import '@material/web/iconbutton/icon-button.js';
|
|
8
|
+
import { property, query, state } from 'lit/decorators.js';
|
|
9
|
+
import { ExmgElement } from '@exmg/lit-base';
|
|
10
|
+
export const CLOSE_ACTION = 'close';
|
|
11
|
+
export class ExmDialogUploadBase extends ExmgElement {
|
|
12
|
+
constructor() {
|
|
13
|
+
super(...arguments);
|
|
14
|
+
/**
|
|
15
|
+
* Opens the dialog when set to `true` and closes it when set to `false`.
|
|
16
|
+
*/
|
|
17
|
+
this.open = false;
|
|
18
|
+
/**
|
|
19
|
+
* Set to make the dialog position draggable.
|
|
20
|
+
*/
|
|
21
|
+
this.draggable = false;
|
|
22
|
+
/**
|
|
23
|
+
* Title of the dialog
|
|
24
|
+
*/
|
|
25
|
+
this.title = 'Upload files';
|
|
26
|
+
this.type = 'alert';
|
|
27
|
+
/**
|
|
28
|
+
* Submit button copy
|
|
29
|
+
*/
|
|
30
|
+
this.submitBtn = 'Save';
|
|
31
|
+
/**
|
|
32
|
+
* Cancel button copy
|
|
33
|
+
*/
|
|
34
|
+
this.cancelBtn = 'Cancel';
|
|
35
|
+
/**
|
|
36
|
+
* Icon of the dialog
|
|
37
|
+
*/
|
|
38
|
+
this.icon = 'close';
|
|
39
|
+
/**
|
|
40
|
+
* Internall used to show button spinner.
|
|
41
|
+
*/
|
|
42
|
+
this.submitting = false;
|
|
43
|
+
this._cropMode = false;
|
|
44
|
+
this._hasItems = false;
|
|
45
|
+
/**
|
|
46
|
+
* Copy for done button
|
|
47
|
+
*/
|
|
48
|
+
this.buttonSaveCopy = 'Save';
|
|
49
|
+
/**
|
|
50
|
+
* Copy for image crop done button
|
|
51
|
+
*/
|
|
52
|
+
this.buttonCropDoneCopy = 'Done';
|
|
53
|
+
}
|
|
54
|
+
getUploadElement() {
|
|
55
|
+
return this.shadowRoot.querySelector('exm-upload');
|
|
56
|
+
}
|
|
57
|
+
firstUpdated() {
|
|
58
|
+
const uploadElement = this.getUploadElement();
|
|
59
|
+
if (uploadElement) {
|
|
60
|
+
uploadElement.isModeDialog = true;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
_startCrop() {
|
|
64
|
+
this._cropMode = true;
|
|
65
|
+
}
|
|
66
|
+
_stopCrop() {
|
|
67
|
+
this._cropMode = false;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Opens and shows the dialog. This is equivalent to setting the `open`
|
|
71
|
+
* property to true.
|
|
72
|
+
*/
|
|
73
|
+
show() {
|
|
74
|
+
this.open = true;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Closes the dialog. This is equivalent to setting the `open`
|
|
78
|
+
* property to false.
|
|
79
|
+
*/
|
|
80
|
+
close() {
|
|
81
|
+
this.open = false;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Opens and shows the dialog if it is closed; otherwise closes it.
|
|
85
|
+
*/
|
|
86
|
+
toggleShow() {
|
|
87
|
+
if (this.open) {
|
|
88
|
+
this.close();
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
this.show();
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
_getImageUploadElement() {
|
|
95
|
+
return this.querySelector('exm-upload');
|
|
96
|
+
}
|
|
97
|
+
_handleSuccess() {
|
|
98
|
+
this._hasItems = true;
|
|
99
|
+
}
|
|
100
|
+
_handleClose() {
|
|
101
|
+
const uploadElement = this.getUploadElement();
|
|
102
|
+
if (uploadElement) {
|
|
103
|
+
uploadElement.reset();
|
|
104
|
+
}
|
|
105
|
+
this.open = false;
|
|
106
|
+
}
|
|
107
|
+
_handleFilesChanged(e) {
|
|
108
|
+
const hasFiles = (e.detail.files || []).filter((f) => f.status === 'UPLOADED').length > 0;
|
|
109
|
+
this._hasItems = hasFiles;
|
|
110
|
+
}
|
|
111
|
+
async _handleSubmit() {
|
|
112
|
+
const uploadElement = this.getUploadElement();
|
|
113
|
+
const [url] = uploadElement.getValues() || [];
|
|
114
|
+
if (this.doAction) {
|
|
115
|
+
try {
|
|
116
|
+
this.submitting = true;
|
|
117
|
+
await this.doAction(url);
|
|
118
|
+
this.fire('action-success');
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
this.fire('action-error', { message: error instanceof Error ? error.message : 'Unkbnown error' }, true);
|
|
122
|
+
}
|
|
123
|
+
finally {
|
|
124
|
+
this.submitting = false;
|
|
125
|
+
this.close();
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
this.fire('action-submit', { url }, true);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
_cancelActiveCrop() {
|
|
133
|
+
const uploadElement = this.getUploadElement();
|
|
134
|
+
if (uploadElement) {
|
|
135
|
+
uploadElement.cancelActiveCrop();
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
_saveActiveCrop() {
|
|
139
|
+
const uploadElement = this.getUploadElement();
|
|
140
|
+
if (uploadElement) {
|
|
141
|
+
uploadElement.saveActiveCrop();
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Method should be overriden to render upload element
|
|
146
|
+
*/
|
|
147
|
+
renderContent() {
|
|
148
|
+
return html `<slot></slot>`;
|
|
149
|
+
}
|
|
150
|
+
renderActions() {
|
|
151
|
+
if (this._cropMode) {
|
|
152
|
+
return html `
|
|
153
|
+
<md-text-button slot="footer" dialogFocus @click=${this._cancelActiveCrop}>Back</md-text-button>
|
|
154
|
+
<md-filled-button slot="footer" @click=${this._saveActiveCrop}>${this.buttonCropDoneCopy}</md-filled-button>
|
|
155
|
+
`;
|
|
156
|
+
}
|
|
157
|
+
return html `
|
|
158
|
+
<md-text-button slot="footer" dialogFocus @click=${() => this.close()}>${this.cancelBtn}</md-text-button>
|
|
159
|
+
<md-filled-button slot="footer" @click=${this._handleSubmit} ?disabled=${!this._hasItems || this.submitting}
|
|
160
|
+
>${this.buttonSaveCopy}</md-filled-button
|
|
161
|
+
>
|
|
162
|
+
`;
|
|
163
|
+
}
|
|
164
|
+
render() {
|
|
165
|
+
const { type, draggable } = this;
|
|
166
|
+
return html ` <md-dialog .draggable=${draggable} .type=${type} .open=${this.open} @closed=${this._handleClose}>
|
|
167
|
+
<span slot="headline">
|
|
168
|
+
<md-icon-button @click=${() => this.close()}><md-icon>close</md-icon></md-icon-button>
|
|
169
|
+
<span class="headline">${this.title}</span>
|
|
170
|
+
</span>
|
|
171
|
+
<div slot="content">
|
|
172
|
+
<div class="content">
|
|
173
|
+
<span
|
|
174
|
+
@files-changed=${this._handleFilesChanged}
|
|
175
|
+
@upload-success=${this._handleSuccess}
|
|
176
|
+
@crop-cancel=${this._stopCrop}
|
|
177
|
+
@crop-done=${this._stopCrop}
|
|
178
|
+
@crop-start=${this._startCrop}
|
|
179
|
+
>${this.renderContent()}</span
|
|
180
|
+
>
|
|
181
|
+
</div>
|
|
182
|
+
</div>
|
|
183
|
+
<div slot="actions">${this.renderActions()}</div>
|
|
184
|
+
</md-dialog>`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
__decorate([
|
|
188
|
+
property({ type: Boolean })
|
|
189
|
+
], ExmDialogUploadBase.prototype, "open", void 0);
|
|
190
|
+
__decorate([
|
|
191
|
+
property({ type: Boolean })
|
|
192
|
+
], ExmDialogUploadBase.prototype, "draggable", void 0);
|
|
193
|
+
__decorate([
|
|
194
|
+
property({ type: String })
|
|
195
|
+
], ExmDialogUploadBase.prototype, "title", void 0);
|
|
196
|
+
__decorate([
|
|
197
|
+
property({ type: String })
|
|
198
|
+
], ExmDialogUploadBase.prototype, "type", void 0);
|
|
199
|
+
__decorate([
|
|
200
|
+
property({ type: String })
|
|
201
|
+
], ExmDialogUploadBase.prototype, "submitBtn", void 0);
|
|
202
|
+
__decorate([
|
|
203
|
+
property({ type: String })
|
|
204
|
+
], ExmDialogUploadBase.prototype, "cancelBtn", void 0);
|
|
205
|
+
__decorate([
|
|
206
|
+
property({ type: String })
|
|
207
|
+
], ExmDialogUploadBase.prototype, "icon", void 0);
|
|
208
|
+
__decorate([
|
|
209
|
+
property({ type: Boolean })
|
|
210
|
+
], ExmDialogUploadBase.prototype, "submitting", void 0);
|
|
211
|
+
__decorate([
|
|
212
|
+
query('md-dialog')
|
|
213
|
+
], ExmDialogUploadBase.prototype, "dialog", void 0);
|
|
214
|
+
__decorate([
|
|
215
|
+
state()
|
|
216
|
+
], ExmDialogUploadBase.prototype, "_cropMode", void 0);
|
|
217
|
+
__decorate([
|
|
218
|
+
state()
|
|
219
|
+
], ExmDialogUploadBase.prototype, "_hasItems", void 0);
|
|
220
|
+
__decorate([
|
|
221
|
+
property({ type: String })
|
|
222
|
+
], ExmDialogUploadBase.prototype, "buttonSaveCopy", void 0);
|
|
223
|
+
__decorate([
|
|
224
|
+
property({ type: String })
|
|
225
|
+
], ExmDialogUploadBase.prototype, "buttonCropDoneCopy", void 0);
|
|
226
|
+
//# sourceMappingURL=exm-dialog-upload-base.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ExmDialogUploadBase } from './exm-dialog-upload-base.js';
|
|
2
|
+
import { ExmUpload } from './exm-upload.js';
|
|
3
|
+
export declare class ExmDialogUpload extends ExmDialogUploadBase {
|
|
4
|
+
static styles: import("lit").CSSResult[];
|
|
5
|
+
protected getUploadElement(): ExmUpload;
|
|
6
|
+
}
|
|
7
|
+
declare global {
|
|
8
|
+
interface HTMLElementTagNameMap {
|
|
9
|
+
'exm-dialog-upload': ExmDialogUpload;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { customElement } from 'lit/decorators.js';
|
|
3
|
+
import { style } from './styles/exm-dialog-upload-css.js';
|
|
4
|
+
import { ExmDialogUploadBase } from './exm-dialog-upload-base.js';
|
|
5
|
+
let ExmDialogUpload = class ExmDialogUpload extends ExmDialogUploadBase {
|
|
6
|
+
getUploadElement() {
|
|
7
|
+
return this.querySelector('exm-upload');
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
ExmDialogUpload.styles = [style];
|
|
11
|
+
ExmDialogUpload = __decorate([
|
|
12
|
+
customElement('exm-dialog-upload')
|
|
13
|
+
], ExmDialogUpload);
|
|
14
|
+
export { ExmDialogUpload };
|
|
15
|
+
//# sourceMappingURL=exm-dialog-upload.js.map
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
2
|
+
import { ExmUploadCrop } from './exm-upload-crop.js';
|
|
3
|
+
import { FileData } from './types.js';
|
|
4
|
+
import './exm-upload-item.js';
|
|
5
|
+
import './exm-upload-crop.js';
|
|
6
|
+
import './exm-upload-drop-area.js';
|
|
7
|
+
import { ExmgElement } from '@exmg/lit-base';
|
|
8
|
+
import Cropper from 'cropperjs';
|
|
9
|
+
export declare class ExmUploadBase extends ExmgElement {
|
|
10
|
+
/**
|
|
11
|
+
* The id of the element that the upload is anchored to. This element
|
|
12
|
+
* must be a sibling of the upload.
|
|
13
|
+
*/
|
|
14
|
+
for?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Files addded to component
|
|
17
|
+
*/
|
|
18
|
+
files: FileData[];
|
|
19
|
+
/**
|
|
20
|
+
* Accepted file types seperated by comma
|
|
21
|
+
*/
|
|
22
|
+
accept?: string | undefined;
|
|
23
|
+
/**
|
|
24
|
+
* The max file size allowed to upload e.g. '20mb'
|
|
25
|
+
*/
|
|
26
|
+
maxSize: string;
|
|
27
|
+
/**
|
|
28
|
+
* Determines if multiple files can be selected. When false maxAmount is set to 1 automatically
|
|
29
|
+
*/
|
|
30
|
+
multiple: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* The max amount of items allowed to upload when in multiple mode
|
|
33
|
+
*/
|
|
34
|
+
maxAmount?: number;
|
|
35
|
+
/**
|
|
36
|
+
* Disable the upload component useful for forms
|
|
37
|
+
*/
|
|
38
|
+
disabled: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Admin User session will be set on request header for authentication
|
|
41
|
+
*/
|
|
42
|
+
customAdapterPath?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Optional property. If not set it will look for the window.emconfig.backendHost
|
|
45
|
+
*/
|
|
46
|
+
uploadUrl?: string;
|
|
47
|
+
/**
|
|
48
|
+
* The upload response type
|
|
49
|
+
*/
|
|
50
|
+
responseType: '' | 'json' | 'text' | 'blob' | 'arraybuffer';
|
|
51
|
+
/**
|
|
52
|
+
* The upload response type
|
|
53
|
+
*/
|
|
54
|
+
serverType: 'xhr' | 'local' | 'form-data' | 'custom';
|
|
55
|
+
/**
|
|
56
|
+
* The CropperJS config see: https://github.com/fengyuanchen/cropperjs#options
|
|
57
|
+
*/
|
|
58
|
+
cropperConfig: Cropper.Options;
|
|
59
|
+
_cropperConfig: Cropper.Options;
|
|
60
|
+
/**
|
|
61
|
+
* Internal state to check if user is cropping or not
|
|
62
|
+
*/
|
|
63
|
+
_isCropping: boolean;
|
|
64
|
+
isModeDialog: boolean;
|
|
65
|
+
/**
|
|
66
|
+
* Internal state to check if file is uploaded or not
|
|
67
|
+
*/
|
|
68
|
+
_uploaded: boolean;
|
|
69
|
+
cropSection?: ExmUploadCrop;
|
|
70
|
+
/**
|
|
71
|
+
* Allow cropping can only be used when fixedResolution is not set
|
|
72
|
+
*/
|
|
73
|
+
allowCropping: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* when set the image must be exactly the given resolution (for example 600x400)
|
|
76
|
+
*/
|
|
77
|
+
fixedResolution?: string;
|
|
78
|
+
fileElement?: HTMLInputElement;
|
|
79
|
+
itemContainer?: ExmUploadCrop;
|
|
80
|
+
getValues(): (string | undefined)[];
|
|
81
|
+
/**
|
|
82
|
+
* Extract files from either file input or drop event
|
|
83
|
+
* @param event
|
|
84
|
+
* @returns FileList[] | []
|
|
85
|
+
*/
|
|
86
|
+
private _getFiles;
|
|
87
|
+
/**
|
|
88
|
+
* Resets the upload component
|
|
89
|
+
* @public
|
|
90
|
+
*/
|
|
91
|
+
reset(): void;
|
|
92
|
+
private prepareFiles;
|
|
93
|
+
/**
|
|
94
|
+
* Handles file change which also validates
|
|
95
|
+
* @param event
|
|
96
|
+
* @fires files-changed
|
|
97
|
+
*/
|
|
98
|
+
private _handleChange;
|
|
99
|
+
/**
|
|
100
|
+
* Validator function to check file before upload to server
|
|
101
|
+
* @param FileData
|
|
102
|
+
*/
|
|
103
|
+
private _validateFile;
|
|
104
|
+
/**
|
|
105
|
+
* Enable cropping mode
|
|
106
|
+
* @param e
|
|
107
|
+
*/
|
|
108
|
+
_handleCropping(e: CustomEvent): void;
|
|
109
|
+
/**
|
|
110
|
+
* Removes file from files array
|
|
111
|
+
* @param id
|
|
112
|
+
*/
|
|
113
|
+
private removeFile;
|
|
114
|
+
/**
|
|
115
|
+
* Removes the file out of the files array.
|
|
116
|
+
* @fires file-removed
|
|
117
|
+
* @param e
|
|
118
|
+
* @param id
|
|
119
|
+
*/
|
|
120
|
+
_handleRemove(e: CustomEvent): void;
|
|
121
|
+
/**
|
|
122
|
+
* Handles crop done and toggles cropping state
|
|
123
|
+
* @fires crop-done
|
|
124
|
+
* @param e
|
|
125
|
+
*/
|
|
126
|
+
_handleCropDone(e: CustomEvent): Promise<void>;
|
|
127
|
+
/**
|
|
128
|
+
* Handles crop cancel and toggles cropping state
|
|
129
|
+
* @fires crop-cancel
|
|
130
|
+
*/
|
|
131
|
+
cancelActiveCrop(): void;
|
|
132
|
+
saveActiveCrop(): void;
|
|
133
|
+
/**
|
|
134
|
+
* Error handling helper function used for all validation
|
|
135
|
+
* @param message
|
|
136
|
+
* @param item
|
|
137
|
+
*/
|
|
138
|
+
_handleError(message: string, item: FileData): void;
|
|
139
|
+
openFileSelector(e: CustomEvent): void;
|
|
140
|
+
renderDescription(): string;
|
|
141
|
+
/**
|
|
142
|
+
* Renders the file items
|
|
143
|
+
*/
|
|
144
|
+
renderFileItems(): unknown;
|
|
145
|
+
renderUploadCrop(): import("lit-html").TemplateResult<1>;
|
|
146
|
+
renderUploadDropArea(): import("lit-html").TemplateResult<1>;
|
|
147
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
148
|
+
}
|