Chris@0: /** Chris@0: * DO NOT EDIT THIS FILE. Chris@0: * See the following change record for more information, Chris@0: * https://www.drupal.org/node/2815083 Chris@0: * @preserve Chris@0: **/ Chris@0: Chris@0: (function ($, Drupal) { Chris@0: Drupal.behaviors.fileValidateAutoAttach = { Chris@0: attach: function attach(context, settings) { Chris@0: var $context = $(context); Chris@0: var elements = void 0; Chris@0: Chris@0: function initFileValidation(selector) { Chris@0: $context.find(selector).once('fileValidate').on('change.fileValidate', { extensions: elements[selector] }, Drupal.file.validateExtension); Chris@0: } Chris@0: Chris@0: if (settings.file && settings.file.elements) { Chris@0: elements = settings.file.elements; Chris@0: Object.keys(elements).forEach(initFileValidation); Chris@0: } Chris@0: }, Chris@0: detach: function detach(context, settings, trigger) { Chris@0: var $context = $(context); Chris@0: var elements = void 0; Chris@0: Chris@0: function removeFileValidation(selector) { Chris@0: $context.find(selector).removeOnce('fileValidate').off('change.fileValidate', Drupal.file.validateExtension); Chris@0: } Chris@0: Chris@0: if (trigger === 'unload' && settings.file && settings.file.elements) { Chris@0: elements = settings.file.elements; Chris@0: Object.keys(elements).forEach(removeFileValidation); Chris@0: } Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.behaviors.fileAutoUpload = { Chris@0: attach: function attach(context) { Chris@0: $(context).find('input[type="file"]').once('auto-file-upload').on('change.autoFileUpload', Drupal.file.triggerUploadButton); Chris@0: }, Chris@17: detach: function detach(context, settings, trigger) { Chris@0: if (trigger === 'unload') { Chris@0: $(context).find('input[type="file"]').removeOnce('auto-file-upload').off('.autoFileUpload'); Chris@0: } Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.behaviors.fileButtons = { Chris@0: attach: function attach(context) { Chris@0: var $context = $(context); Chris@0: $context.find('.js-form-submit').on('mousedown', Drupal.file.disableFields); Chris@0: $context.find('.js-form-managed-file .js-form-submit').on('mousedown', Drupal.file.progressBar); Chris@0: }, Chris@17: detach: function detach(context, settings, trigger) { Chris@17: if (trigger === 'unload') { Chris@17: var $context = $(context); Chris@17: $context.find('.js-form-submit').off('mousedown', Drupal.file.disableFields); Chris@17: $context.find('.js-form-managed-file .js-form-submit').off('mousedown', Drupal.file.progressBar); Chris@17: } Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.behaviors.filePreviewLinks = { Chris@0: attach: function attach(context) { Chris@0: $(context).find('div.js-form-managed-file .file a').on('click', Drupal.file.openInNewWindow); Chris@0: }, Chris@0: detach: function detach(context) { Chris@0: $(context).find('div.js-form-managed-file .file a').off('click', Drupal.file.openInNewWindow); Chris@0: } Chris@0: }; Chris@0: Chris@0: Drupal.file = Drupal.file || { Chris@0: validateExtension: function validateExtension(event) { Chris@0: event.preventDefault(); Chris@0: Chris@0: $('.file-upload-js-error').remove(); Chris@0: Chris@0: var extensionPattern = event.data.extensions.replace(/,\s*/g, '|'); Chris@0: if (extensionPattern.length > 1 && this.value.length > 0) { Chris@0: var acceptableMatch = new RegExp('\\.(' + extensionPattern + ')$', 'gi'); Chris@0: if (!acceptableMatch.test(this.value)) { Chris@0: var error = Drupal.t('The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.', { Chris@0: '%filename': this.value.replace('C:\\fakepath\\', ''), Chris@0: '%extensions': extensionPattern.replace(/\|/g, ', ') Chris@0: }); Chris@0: $(this).closest('div.js-form-managed-file').prepend('
' + error + '
'); Chris@0: this.value = ''; Chris@0: Chris@0: event.stopImmediatePropagation(); Chris@0: } Chris@0: } Chris@0: }, Chris@0: triggerUploadButton: function triggerUploadButton(event) { Chris@0: $(event.target).closest('.js-form-managed-file').find('.js-form-submit').trigger('mousedown'); Chris@0: }, Chris@0: disableFields: function disableFields(event) { Chris@16: var $clickedButton = $(this); Chris@17: $clickedButton.trigger('formUpdated'); Chris@0: Chris@0: var $enabledFields = []; Chris@0: if ($clickedButton.closest('div.js-form-managed-file').length > 0) { Chris@0: $enabledFields = $clickedButton.closest('div.js-form-managed-file').find('input.js-form-file'); Chris@0: } Chris@0: Chris@0: var $fieldsToTemporarilyDisable = $('div.js-form-managed-file input.js-form-file').not($enabledFields).not(':disabled'); Chris@0: $fieldsToTemporarilyDisable.prop('disabled', true); Chris@0: setTimeout(function () { Chris@0: $fieldsToTemporarilyDisable.prop('disabled', false); Chris@0: }, 1000); Chris@0: }, Chris@0: progressBar: function progressBar(event) { Chris@0: var $clickedButton = $(this); Chris@0: var $progressId = $clickedButton.closest('div.js-form-managed-file').find('input.file-progress'); Chris@0: if ($progressId.length) { Chris@0: var originalName = $progressId.attr('name'); Chris@0: Chris@0: $progressId.attr('name', originalName.match(/APC_UPLOAD_PROGRESS|UPLOAD_IDENTIFIER/)[0]); Chris@0: Chris@0: setTimeout(function () { Chris@0: $progressId.attr('name', originalName); Chris@0: }, 1000); Chris@0: } Chris@0: Chris@0: setTimeout(function () { Chris@0: $clickedButton.closest('div.js-form-managed-file').find('div.ajax-progress-bar').slideDown(); Chris@0: }, 500); Chris@17: $clickedButton.trigger('fileUpload'); Chris@0: }, Chris@0: openInNewWindow: function openInNewWindow(event) { Chris@0: event.preventDefault(); Chris@0: $(this).attr('target', '_blank'); Chris@0: window.open(this.href, 'filePreview', 'toolbar=0,scrollbars=1,location=1,statusbar=1,menubar=0,resizable=1,width=500,height=550'); Chris@0: } Chris@0: }; Chris@0: })(jQuery, Drupal);