2015-08-17 17:00:26 -07:00
/ * *
2018-11-23 12:29:20 +00:00
* DO NOT EDIT THIS FILE .
* See the following change record for more information ,
* https : //www.drupal.org/node/2815083
* @ preserve
* * /
2015-08-17 17:00:26 -07:00
( function ( $ , Drupal , debounce ) {
$ . fn . drupalGetSummary = function ( ) {
var callback = this . data ( 'summaryCallback' ) ;
2018-11-23 12:29:20 +00:00
return this [ 0 ] && callback ? $ . trim ( callback ( this [ 0 ] ) ) : '' ;
2015-08-17 17:00:26 -07:00
} ;
$ . fn . drupalSetSummary = function ( callback ) {
var self = this ;
if ( typeof callback !== 'function' ) {
var val = callback ;
2018-11-23 12:29:20 +00:00
callback = function callback ( ) {
return val ;
} ;
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
return this . data ( 'summaryCallback' , callback ) . off ( 'formUpdated.summary' ) . on ( 'formUpdated.summary' , function ( ) {
self . trigger ( 'summaryUpdated' ) ;
} ) . trigger ( 'summaryUpdated' ) ;
2015-08-17 17:00:26 -07:00
} ;
Drupal . behaviors . formSingleSubmit = {
2018-11-23 12:29:20 +00:00
attach : function attach ( ) {
2015-08-17 17:00:26 -07:00
function onFormSubmit ( e ) {
var $form = $ ( e . currentTarget ) ;
var formValues = $form . serialize ( ) ;
var previousValues = $form . attr ( 'data-drupal-form-submit-last' ) ;
if ( previousValues === formValues ) {
e . preventDefault ( ) ;
2018-11-23 12:29:20 +00:00
} else {
2015-08-17 17:00:26 -07:00
$form . attr ( 'data-drupal-form-submit-last' , formValues ) ;
}
}
2018-11-23 12:29:20 +00:00
$ ( 'body' ) . once ( 'form-single-submit' ) . on ( 'submit.singleSubmit' , 'form:not([method~="GET"])' , onFormSubmit ) ;
2015-08-17 17:00:26 -07:00
}
} ;
function triggerFormUpdated ( element ) {
$ ( element ) . trigger ( 'formUpdated' ) ;
}
function fieldsList ( form ) {
var $fieldList = $ ( form ) . find ( '[name]' ) . map ( function ( index , element ) {
return element . getAttribute ( 'id' ) ;
} ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
return $ . makeArray ( $fieldList ) ;
}
Drupal . behaviors . formUpdated = {
2018-11-23 12:29:20 +00:00
attach : function attach ( context ) {
2015-08-17 17:00:26 -07:00
var $context = $ ( context ) ;
var contextIsForm = $context . is ( 'form' ) ;
var $forms = ( contextIsForm ? $context : $context . find ( 'form' ) ) . once ( 'form-updated' ) ;
2018-11-23 12:29:20 +00:00
var formFields = void 0 ;
2015-08-17 17:00:26 -07:00
if ( $forms . length ) {
$ . makeArray ( $forms ) . forEach ( function ( form ) {
var events = 'change.formUpdated input.formUpdated ' ;
2018-11-23 12:29:20 +00:00
var eventHandler = debounce ( function ( event ) {
triggerFormUpdated ( event . target ) ;
} , 300 ) ;
2015-08-17 17:00:26 -07:00
formFields = fieldsList ( form ) . join ( ',' ) ;
form . setAttribute ( 'data-drupal-form-fields' , formFields ) ;
$ ( form ) . on ( events , eventHandler ) ;
} ) ;
}
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
if ( contextIsForm ) {
formFields = fieldsList ( context ) . join ( ',' ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
var currentFields = $ ( context ) . attr ( 'data-drupal-form-fields' ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
if ( formFields !== currentFields ) {
triggerFormUpdated ( context ) ;
}
}
} ,
2018-11-23 12:29:20 +00:00
detach : function detach ( context , settings , trigger ) {
2015-08-17 17:00:26 -07:00
var $context = $ ( context ) ;
var contextIsForm = $context . is ( 'form' ) ;
if ( trigger === 'unload' ) {
var $forms = ( contextIsForm ? $context : $context . find ( 'form' ) ) . removeOnce ( 'form-updated' ) ;
if ( $forms . length ) {
$ . makeArray ( $forms ) . forEach ( function ( form ) {
form . removeAttribute ( 'data-drupal-form-fields' ) ;
$ ( form ) . off ( '.formUpdated' ) ;
} ) ;
}
}
}
} ;
Drupal . behaviors . fillUserInfoFromBrowser = {
2018-11-23 12:29:20 +00:00
attach : function attach ( context , settings ) {
2015-08-17 17:00:26 -07:00
var userInfo = [ 'name' , 'mail' , 'homepage' ] ;
var $forms = $ ( '[data-user-info-from-browser]' ) . once ( 'user-info-from-browser' ) ;
if ( $forms . length ) {
2018-11-23 12:29:20 +00:00
userInfo . forEach ( function ( info ) {
2015-08-17 17:00:26 -07:00
var $element = $forms . find ( '[name=' + info + ']' ) ;
var browserData = localStorage . getItem ( 'Drupal.visitor.' + info ) ;
2018-11-23 12:29:20 +00:00
var emptyOrDefault = $element . val ( ) === '' || $element . attr ( 'data-drupal-default-value' ) === $element . val ( ) ;
2015-08-17 17:00:26 -07:00
if ( $element . length && emptyOrDefault && browserData ) {
$element . val ( browserData ) ;
}
} ) ;
}
$forms . on ( 'submit' , function ( ) {
2018-11-23 12:29:20 +00:00
userInfo . forEach ( function ( info ) {
2015-08-17 17:00:26 -07:00
var $element = $forms . find ( '[name=' + info + ']' ) ;
if ( $element . length ) {
localStorage . setItem ( 'Drupal.visitor.' + info , $element . val ( ) ) ;
}
} ) ;
} ) ;
}
} ;
2018-11-23 12:29:20 +00:00
var handleFragmentLinkClickOrHashChange = function handleFragmentLinkClickOrHashChange ( e ) {
var url = void 0 ;
if ( e . type === 'click' ) {
url = e . currentTarget . location ? e . currentTarget . location : e . currentTarget ;
} else {
url = window . location ;
}
var hash = url . hash . substr ( 1 ) ;
if ( hash ) {
var $target = $ ( '#' + hash ) ;
$ ( 'body' ) . trigger ( 'formFragmentLinkClickOrHashChange' , [ $target ] ) ;
setTimeout ( function ( ) {
return $target . trigger ( 'focus' ) ;
} , 300 ) ;
}
} ;
var debouncedHandleFragmentLinkClickOrHashChange = debounce ( handleFragmentLinkClickOrHashChange , 300 , true ) ;
$ ( window ) . on ( 'hashchange.form-fragment' , debouncedHandleFragmentLinkClickOrHashChange ) ;
$ ( document ) . on ( 'click.form-fragment' , 'a[href*="#"]' , debouncedHandleFragmentLinkClickOrHashChange ) ;
} ) ( jQuery , Drupal , Drupal . debounce ) ;