@uploadcare/blocks
Version:
Building blocks for Uploadcare products integration
39 lines (36 loc) • 1.47 kB
JavaScript
import { SolutionBlock } from '../../../abstract/SolutionBlock.js';
import { ActivityBlock } from '../../../abstract/ActivityBlock.js';
import { UploaderBlock } from '../../../abstract/UploaderBlock.js';
export class FileUploaderInline extends SolutionBlock {
init$ = {
...this.ctxInit,
dropAreaHidden: false,
};
shadowReadyCallback() {
/** @type {import('../../../abstract/UploaderBlock.js').UploaderBlock} */
const uBlock = this.ref.uBlock;
this.sub('*currentActivity', (val) => {
if (!val) {
this.$['*currentActivity'] = uBlock.initActivity || ActivityBlock.activities.START_FROM;
}
});
window.customElements.whenDefined(uBlock.tagName.toLowerCase()).then(() => {
if (uBlock.sourceList.length === 1 && !uBlock.sourceList.includes(UploaderBlock.sourceTypes.LOCAL)) {
this.$.dropAreaHidden = true;
}
});
}
}
FileUploaderInline.template = /* HTML */ ` <lr-start-from>
<lr-source-list wrap></lr-source-list>
<lr-drop-area set="@hidden: dropAreaHidden" clickable></lr-drop-area>
</lr-start-from>
<lr-upload-list ref="uBlock"></lr-upload-list>
<lr-camera-source></lr-camera-source>
<lr-url-source></lr-url-source>
<lr-external-source></lr-external-source>
<lr-upload-details></lr-upload-details>
<lr-confirmation-dialog></lr-confirmation-dialog>
<lr-message-box></lr-message-box>
<lr-progress-bar></lr-progress-bar>
<lr-cloud-image-editor></lr-cloud-image-editor>`;