|
1 | 1 | /**
|
2 |
| - * Copyright © Magento, Inc. All rights reserved. |
3 |
| - * See COPYING.txt for license details. |
| 2 | + * Copyright 2016 Adobe |
| 3 | + * All Rights Reserved. |
4 | 4 | */
|
5 | 5 |
|
6 | 6 | /**
|
@@ -110,10 +110,9 @@ define([
|
110 | 110 | }
|
111 | 111 |
|
112 | 112 | // code to allow duplicate files from same folder
|
113 |
| - const modifiedFile = { |
114 |
| - ...currentFile, |
115 |
| - id: currentFile.id + '-' + Date.now() |
116 |
| - }; |
| 113 | + const modifiedFile = Object.assign({}, currentFile, { |
| 114 | + id: currentFile.id + '-' + Date.now() |
| 115 | + }); |
117 | 116 |
|
118 | 117 | this.onLoadingStart();
|
119 | 118 | return modifiedFile;
|
@@ -177,10 +176,53 @@ define([
|
177 | 176 | let fileId = fileInput.id, fileName = fileInput.name,
|
178 | 177 | spanElement = '<span id=\'' + fileId + '\'></span>';
|
179 | 178 |
|
180 |
| - $('#' + fileId).closest('.file-uploader-area').attr('upload-area-id', fileName); |
| 179 | + $(fileInput).closest('.file-uploader-area').attr('upload-area-id', fileName); |
181 | 180 | $(fileInput).replaceWith(spanElement);
|
182 |
| - $('#' + fileId).closest('.file-uploader-area').find('.file-uploader-button:first').on('click', function () { |
183 |
| - $('#' + fileId).closest('.file-uploader-area').find('.uppy-Dashboard-browse').trigger('click'); |
| 181 | + }, |
| 182 | + |
| 183 | + /** |
| 184 | + * Trigger the file browser dialog |
| 185 | + * |
| 186 | + * @param {jQuery} $area |
| 187 | + */ |
| 188 | + triggerFileBrowser: function ($area) { |
| 189 | + const $browseBtn = $area.find('.uppy-Dashboard-browse').first(); |
| 190 | + |
| 191 | + if ($browseBtn.length > 0) { |
| 192 | + $browseBtn[0].click(); |
| 193 | + return; |
| 194 | + } |
| 195 | + |
| 196 | + let $dashboard = $area.find('.uppy-Dashboard-inner'), |
| 197 | + $fileInput = $dashboard.find('input[type="file"]:visible').first(); |
| 198 | + |
| 199 | + if ($fileInput.length > 0) { |
| 200 | + $fileInput[0].click(); |
| 201 | + } |
| 202 | + }, |
| 203 | + |
| 204 | + /** |
| 205 | + * Binds click events for file browser triggers using event delegation |
| 206 | + * |
| 207 | + * @param {String} fileId |
| 208 | + */ |
| 209 | + bindFileBrowserTriggers: function (fileId) { |
| 210 | + let self = this, |
| 211 | + $area = $('[upload-area-id="' + fileId + '"]').closest('.file-uploader-area'), |
| 212 | + $dropZone = $area.closest('[data-role=drop-zone]'); |
| 213 | + |
| 214 | + if (!$area.length) { |
| 215 | + $area = $('span[id="' + fileId + '"]').closest('.file-uploader-area'); |
| 216 | + $dropZone = $area.closest('[data-role=drop-zone]'); |
| 217 | + } |
| 218 | + |
| 219 | + $area.off('click.fileUploader').on('click.fileUploader', '.file-uploader-button:first', function (e) { |
| 220 | + e.preventDefault(); |
| 221 | + self.triggerFileBrowser($area); |
| 222 | + }); |
| 223 | + $dropZone.off('click.fileUploader').on('click.fileUploader', '.file-uploader-placeholder', function (e) { |
| 224 | + e.preventDefault(); |
| 225 | + self.triggerFileBrowser($area); |
184 | 226 | });
|
185 | 227 | },
|
186 | 228 |
|
@@ -216,11 +258,14 @@ define([
|
216 | 258 | * @param value
|
217 | 259 | * @returns {Promise<void>}
|
218 | 260 | */
|
219 |
| - async setImageSize(value) { |
220 |
| - let response = await fetch(value.url), |
221 |
| - blob = await response.blob(); |
222 |
| - |
223 |
| - value.size = blob.size; |
| 261 | + setImageSize: function (value) { |
| 262 | + return fetch(value.url) |
| 263 | + .then(function (response) { |
| 264 | + return response.blob(); |
| 265 | + }) |
| 266 | + .then(function (blob) { |
| 267 | + value.size = blob.size; |
| 268 | + }); |
224 | 269 | },
|
225 | 270 |
|
226 | 271 | /**
|
@@ -614,6 +659,7 @@ define([
|
614 | 659 | */
|
615 | 660 | onElementRender: function (fileInput) {
|
616 | 661 | this.initUploader(fileInput);
|
| 662 | + this.bindFileBrowserTriggers(fileInput.id); |
617 | 663 | },
|
618 | 664 |
|
619 | 665 | /**
|
|
0 commit comments