2 * @file media_library.widget.js
6 * Allows users to re-order their selection with drag+drop.
8 Drupal.behaviors.MediaLibraryWidgetSortable = {
10 // Allow media items to be re-sorted with drag+drop in the widget.
11 $('.js-media-library-selection', context)
12 .once('media-library-sortable')
16 handle: '.js-media-library-item-preview',
17 stop: ({ target }) => {
18 // Update all the hidden "weight" fields.
21 .each((index, child) => {
23 .find('.js-media-library-item-weight')
32 * Allows selection order to be set without drag+drop for accessibility.
34 Drupal.behaviors.MediaLibraryWidgetToggleWeight = {
37 show: Drupal.t('Show media item weights'),
38 hide: Drupal.t('Hide media item weights'),
40 $('.js-media-library-widget-toggle-weight', context)
41 .once('media-library-toggle')
45 .toggleClass('active')
47 $(e.currentTarget).hasClass('active')
52 .find('.js-media-library-item-weight')
57 $('.js-media-library-item-weight', context)
58 .once('media-library-toggle')
65 * Warn users when clicking outgoing links from the library or widget.
67 Drupal.behaviors.MediaLibraryWidgetWarn = {
69 $('.js-media-library-item a[href]', context)
70 .once('media-library-warn-link')
72 const message = Drupal.t(
73 'Unsaved changes to the form will be lost. Are you sure you want to leave?',
75 const confirmation = window.confirm(message);
84 * Prevent users from selecting more items than allowed in the view.
86 Drupal.behaviors.MediaLibraryWidgetRemaining = {
87 attach(context, settings) {
88 const $view = $('.js-media-library-view', context).once(
89 'media-library-remaining',
92 .find('.js-media-library-item input[type="checkbox"]')
95 settings.media_library &&
96 settings.media_library.selection_remaining
98 const $checkboxes = $view.find(
99 '.js-media-library-item input[type="checkbox"]',
102 $checkboxes.filter(':checked').length ===
103 settings.media_library.selection_remaining
107 .prop('disabled', true)
108 .closest('.js-media-library-item')
109 .addClass('media-library-item--disabled');
112 .prop('disabled', false)
113 .closest('.js-media-library-item')
114 .removeClass('media-library-item--disabled');