UNPKG

@uploadcare/file-uploader

Version:

Building blocks for Uploadcare products integration

77 lines (66 loc) 2.27 kB
// @ts-check import { ActivityBlock } from '../../../abstract/ActivityBlock.js'; import { SolutionBlock } from '../../../abstract/SolutionBlock.js'; export class FileUploaderInline extends SolutionBlock { static styleAttrs = [...super.styleAttrs, 'uc-file-uploader-inline']; constructor() { super(); this.init$ = { ...this.init$, couldCancel: false, cancel: () => { if (this.couldHistoryBack) { this.$['*historyBack'](); } else if (this.couldShowList) { this.$['*currentActivity'] = ActivityBlock.activities.UPLOAD_LIST; } }, }; } get couldHistoryBack() { const history = this.$['*history']; return history.length > 1 && history[history.length - 1] !== ActivityBlock.activities.START_FROM; } get couldShowList() { return this.cfg.showEmptyList || this.$['*uploadList'].length > 0; } initCallback() { super.initCallback(); /** @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; } }); this.sub('*uploadList', (list) => { if ( list?.length > 0 && this.$['*currentActivity'] === (uBlock.initActivity || ActivityBlock.activities.START_FROM) ) { this.$['*currentActivity'] = ActivityBlock.activities.UPLOAD_LIST; } }); this.sub('*history', () => { this.$['couldCancel'] = this.couldHistoryBack || this.couldShowList; }); } } FileUploaderInline.template = /* HTML */ ` <uc-start-from> <uc-drop-area with-icon clickable></uc-drop-area> <uc-source-list role="list" wrap></uc-source-list> <button type="button" l10n="start-from-cancel" class="uc-cancel-btn uc-secondary-btn" set="onclick: cancel; @hidden: !couldCancel" ></button> <uc-copyright></uc-copyright> </uc-start-from> <uc-upload-list ref="uBlock"></uc-upload-list> <uc-camera-source></uc-camera-source> <uc-url-source></uc-url-source> <uc-external-source></uc-external-source> <uc-cloud-image-editor-activity></uc-cloud-image-editor-activity> `;