Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/cvetdv.ru/bitrix/js/im/v2/component/elements/progressbar/src/ |
Upload File : |
import { ProgressBarManager } from 'im.v2.lib.progressbar'; import './css/progressbar.css'; import type { ImModelFile } from 'im.v2.model'; // @vue/component export const ProgressBar = { name: 'ProgressBar', props: { item: { type: Object, required: true, }, withLabels: { type: Boolean, default: true, }, cancelCallbackDelay: { type: Number, default: 0, }, }, emits: ['cancelClick'], computed: { file(): ImModelFile { return this.item; }, }, watch: { 'file.status': function() { this.getProgressBarManager().update(); }, 'file.progress': function() { this.getProgressBarManager().update(); }, }, mounted() { this.initProgressBar(); }, beforeUnmount() { this.removeProgressBar(); }, methods: { initProgressBar() { if (this.file.progress === 100) { return; } const customConfig = { hasTitle: false, cancelCallbackDelay: 0, }; if (!this.withLabels) { customConfig.labels = {}; } this.progressBarManager = new ProgressBarManager({ container: this.$refs['progress-bar'], uploadState: this.file, customConfig, }); this.progressBarManager.subscribe(ProgressBarManager.event.cancel, () => { this.$emit('cancelClick', { file: this.file }); }); this.progressBarManager.start(); }, removeProgressBar() { if (!this.getProgressBarManager()) { return; } this.getProgressBarManager().destroy(); }, getProgressBarManager(): ProgressBarManager { return this.progressBarManager; }, }, template: ` <div class="bx-im-progress-bar__container" ref="progress-bar"></div> `, };