123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- /**
- * @file
- * Locale admin behavior.
- */
- (function($, Drupal) {
- /**
- * Marks changes of translations.
- *
- * @type {Drupal~behavior}
- *
- * @prop {Drupal~behaviorAttach} attach
- * Attaches behavior to show the user if translations has changed.
- * @prop {Drupal~behaviorDetach} detach
- * Detach behavior to show the user if translations has changed.
- */
- Drupal.behaviors.localeTranslateDirty = {
- attach() {
- const $form = $('#locale-translate-edit-form').once(
- 'localetranslatedirty',
- );
- if ($form.length) {
- // Display a notice if any row changed.
- $form.one('formUpdated.localeTranslateDirty', 'table', function() {
- const $marker = $(
- Drupal.theme('localeTranslateChangedWarning'),
- ).hide();
- $(this)
- .addClass('changed')
- .before($marker);
- $marker.fadeIn('slow');
- });
- // Highlight changed row.
- $form.on('formUpdated.localeTranslateDirty', 'tr', function() {
- const $row = $(this);
- const $rowToMark = $row.once('localemark');
- const marker = Drupal.theme('localeTranslateChangedMarker');
- $row.addClass('changed');
- // Add an asterisk only once if row changed.
- if ($rowToMark.length) {
- $rowToMark.find('td:first-child .js-form-item').append(marker);
- }
- });
- }
- },
- detach(context, settings, trigger) {
- if (trigger === 'unload') {
- const $form = $('#locale-translate-edit-form').removeOnce(
- 'localetranslatedirty',
- );
- if ($form.length) {
- $form.off('formUpdated.localeTranslateDirty');
- }
- }
- },
- };
- /**
- * Show/hide the description details on Available translation updates page.
- *
- * @type {Drupal~behavior}
- *
- * @prop {Drupal~behaviorAttach} attach
- * Attaches behavior for toggling details on the translation update page.
- */
- Drupal.behaviors.hideUpdateInformation = {
- attach(context, settings) {
- const $table = $('#locale-translation-status-form').once(
- 'expand-updates',
- );
- if ($table.length) {
- const $tbodies = $table.find('tbody');
- // Open/close the description details by toggling a tr class.
- $tbodies.on('click keydown', '.description', function(e) {
- if (e.keyCode && e.keyCode !== 13 && e.keyCode !== 32) {
- return;
- }
- e.preventDefault();
- const $tr = $(this).closest('tr');
- $tr.toggleClass('expanded');
- // Change screen reader text.
- $tr.find('.locale-translation-update__prefix').text(() => {
- if ($tr.hasClass('expanded')) {
- return Drupal.t('Hide description');
- }
- return Drupal.t('Show description');
- });
- });
- $table.find('.requirements, .links').hide();
- }
- },
- };
- $.extend(
- Drupal.theme,
- /** @lends Drupal.theme */ {
- /**
- * Creates markup for a changed translation marker.
- *
- * @return {string}
- * Markup for the marker.
- */
- localeTranslateChangedMarker() {
- return `<abbr class="warning ajax-changed" title="${Drupal.t(
- 'Changed',
- )}">*</abbr>`;
- },
- /**
- * Creates markup for the translation changed warning.
- *
- * @return {string}
- * Markup for the warning.
- */
- localeTranslateChangedWarning() {
- return `<div class="clearfix messages messages--warning">${Drupal.theme(
- 'localeTranslateChangedMarker',
- )} ${Drupal.t(
- 'Changes made in this table will not be saved until the form is submitted.',
- )}</div>`;
- },
- },
- );
- })(jQuery, Drupal);
|