Mercurial > hg > isophonics-drupal-site
view core/modules/media_library/js/media_library.widget.es6.js @ 18:af1871eacc83
Update to Drupal core 8.7.1
author | Chris Cannam |
---|---|
date | Thu, 09 May 2019 15:33:08 +0100 |
parents | 129ea1e6d783 |
children |
line wrap: on
line source
/** * @file media_library.widget.js */ (($, Drupal) => { /** * Allows users to re-order their selection with drag+drop. * * @type {Drupal~behavior} * * @prop {Drupal~behaviorAttach} attach * Attaches behavior to re-order selected media items. */ Drupal.behaviors.MediaLibraryWidgetSortable = { attach(context) { // Allow media items to be re-sorted with drag+drop in the widget. $('.js-media-library-selection', context) .once('media-library-sortable') .sortable({ tolerance: 'pointer', helper: 'clone', handle: '.js-media-library-item-preview', stop: ({ target }) => { // Update all the hidden "weight" fields. $(target) .children() .each((index, child) => { $(child) .find('.js-media-library-item-weight') .val(index); }); }, }); }, }; /** * Allows selection order to be set without drag+drop for accessibility. * * @type {Drupal~behavior} * * @prop {Drupal~behaviorAttach} attach * Attaches behavior to toggle the weight field for media items. */ Drupal.behaviors.MediaLibraryWidgetToggleWeight = { attach(context) { const strings = { show: Drupal.t('Show media item weights'), hide: Drupal.t('Hide media item weights'), }; $('.js-media-library-widget-toggle-weight', context) .once('media-library-toggle') .on('click', e => { e.preventDefault(); $(e.currentTarget) .toggleClass('active') .text( $(e.currentTarget).hasClass('active') ? strings.hide : strings.show, ) .parent() .find('.js-media-library-item-weight') .parent() .toggle(); }) .text(strings.show); $('.js-media-library-item-weight', context) .once('media-library-toggle') .parent() .hide(); }, }; /** * Disable the open button when the user is not allowed to add more items. * * @type {Drupal~behavior} * * @prop {Drupal~behaviorAttach} attach * Attaches behavior to disable the media library open button. */ Drupal.behaviors.MediaLibraryWidgetDisableButton = { attach(context) { // When the user returns from the modal to the widget, we want to shift // the focus back to the open button. If the user is not allowed to add // more items, the button needs to be disabled. Since we can't shift the // focus to disabled elements, the focus is set back to the open button // via JavaScript by adding the 'data-disabled-focus' attribute. $('.js-media-library-open-button[data-disabled-focus="true"]', context) .once('media-library-disable') .each(function() { $(this).focus(); // There is a small delay between the focus set by the browser and the // focus of screen readers. We need to give screen readers time to // shift the focus as well before the button is disabled. setTimeout(() => { $(this).attr('disabled', 'disabled'); }, 50); }); }, }; })(jQuery, Drupal);