This repository has been archived on 2025-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
drupalcampbristol/web/modules/contrib/webform/js/webform.wizard.track.js

42 lines
1.5 KiB
JavaScript
Raw Normal View History

2018-11-23 12:29:20 +00:00
/**
* @file
* JavaScript behaviors for webform wizard.
*/
(function ($, Drupal) {
'use strict';
/**
* Tracks the wizard's current page in the URL.
*
* @type {Drupal~behavior}
*
* @prop {Drupal~behaviorAttach} attach
* Tracks the wizard's current page in the URL.
*/
Drupal.behaviors.webformWizardTrackPage = {
attach: function (context) {
// Make sure on page load or Ajax refresh the location ?page is correct
// since conditional logic can skip pages.
// Note: window.history is only supported by IE 10+ and all other browsers.
if (window.history && history.replaceState) {
$('form[data-webform-wizard-current-page]', context).once('webform-wizard-current-page').each(function () {
var page = $(this).attr('data-webform-wizard-current-page');
history.replaceState(null, null, window.location.toString().replace(/\?.+$/, '') + '?page=' + page);
});
}
// When paging next and back update the URL so that Drupal knows what
// the expected page name or index is going to be.
// NOTE: If conditional wizard page logic is configured the
// expected page name or index may not be accurate.
$(':button[data-webform-wizard-page], :submit[data-webform-wizard-page]', context).once('webform-wizard-page').on('click', function () {
var page = $(this).attr('data-webform-wizard-page');
this.form.action = this.form.action.replace(/\?.+$/, '') + '?page=' + page;
});
}
};
})(jQuery, Drupal);