62 lines
1.8 KiB
JavaScript
62 lines
1.8 KiB
JavaScript
/**
|
|
* @file
|
|
* JavaScript behaviors for webform wizard.
|
|
*/
|
|
|
|
(function ($, Drupal) {
|
|
|
|
'use strict';
|
|
|
|
/**
|
|
* Link the wizard's previous pages.
|
|
*
|
|
* @type {Drupal~behavior}
|
|
*
|
|
* @prop {Drupal~behaviorAttach} attach
|
|
* Links the wizard's previous pages.
|
|
*/
|
|
Drupal.behaviors.webformWizardPagesLink = {
|
|
attach: function (context) {
|
|
$('.js-webform-wizard-pages-links', context).once('webform-wizard-pages-links').each(function () {
|
|
var $pages = $(this);
|
|
var $form = $pages.closest('form');
|
|
|
|
var hasProgressLink = $pages.data('wizard-progress-link');
|
|
var hasPreviewLink = $pages.data('wizard-preview-link');
|
|
|
|
$pages.find('.js-webform-wizard-pages-link').each(function () {
|
|
var $button = $(this);
|
|
var title = $button.attr('title');
|
|
var page = $button.data('webform-page');
|
|
|
|
// Link progress marker and title.
|
|
if (hasProgressLink) {
|
|
var $progress = $form.find('.webform-progress [data-webform-page="' + page + '"]');
|
|
$progress.find('.progress-marker, .progress-title')
|
|
.attr({
|
|
'role': 'link',
|
|
'title': title,
|
|
'aria-label': title
|
|
})
|
|
.click(function () {
|
|
$button.click();
|
|
});
|
|
// Only allow the marker to be tabbable.
|
|
$progress.find('.progress-marker').attr('tabindex', 0);
|
|
}
|
|
|
|
// Move button to preview page div container with [data-webform-page].
|
|
// @see \Drupal\webform\Plugin\WebformElement\WebformWizardPage::formatHtmlItem
|
|
if (hasPreviewLink) {
|
|
$form
|
|
.find('.webform-preview [data-webform-page="' + page + '"]')
|
|
.append($button)
|
|
.show();
|
|
}
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|
|
})(jQuery, Drupal);
|