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
* * /
function _toConsumableArray ( arr ) { if ( Array . isArray ( arr ) ) { for ( var i = 0 , arr2 = Array ( arr . length ) ; i < arr . length ; i ++ ) { arr2 [ i ] = arr [ i ] ; } return arr2 ; } else { return Array . from ( arr ) ; } }
2015-08-17 17:00:26 -07:00
( function ( $ , window , Drupal , drupalSettings ) {
Drupal . behaviors . AJAX = {
2018-11-23 12:29:20 +00:00
attach : function attach ( context , settings ) {
2015-08-17 17:00:26 -07:00
function loadAjaxBehavior ( base ) {
2018-11-23 12:29:20 +00:00
var elementSettings = settings . ajax [ base ] ;
if ( typeof elementSettings . selector === 'undefined' ) {
elementSettings . selector = '#' + base ;
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
$ ( elementSettings . selector ) . once ( 'drupal-ajax' ) . each ( function ( ) {
elementSettings . element = this ;
elementSettings . base = base ;
Drupal . ajax ( elementSettings ) ;
2015-08-17 17:00:26 -07:00
} ) ;
}
2018-11-23 12:29:20 +00:00
Object . keys ( settings . ajax || { } ) . forEach ( function ( base ) {
return loadAjaxBehavior ( base ) ;
2015-08-17 17:00:26 -07:00
} ) ;
2018-11-23 12:29:20 +00:00
Drupal . ajax . bindAjaxLinks ( document . body ) ;
2015-08-17 17:00:26 -07:00
$ ( '.use-ajax-submit' ) . once ( 'ajax' ) . each ( function ( ) {
2018-11-23 12:29:20 +00:00
var elementSettings = { } ;
elementSettings . url = $ ( this . form ) . attr ( 'action' ) ;
elementSettings . setClick = true ;
elementSettings . event = 'click' ;
elementSettings . progress = { type : 'throbber' } ;
elementSettings . base = $ ( this ) . attr ( 'id' ) ;
elementSettings . element = this ;
Drupal . ajax ( elementSettings ) ;
2015-08-17 17:00:26 -07:00
} ) ;
2016-04-20 09:56:34 -07:00
} ,
2018-11-23 12:29:20 +00:00
detach : function detach ( context , settings , trigger ) {
2016-04-20 09:56:34 -07:00
if ( trigger === 'unload' ) {
Drupal . ajax . expired ( ) . forEach ( function ( instance ) {
Drupal . ajax . instances [ instance . instanceIndex ] = null ;
} ) ;
}
2015-08-17 17:00:26 -07:00
}
} ;
2015-09-04 13:20:09 -07:00
Drupal . AjaxError = function ( xmlhttp , uri , customMessage ) {
2018-11-23 12:29:20 +00:00
var statusCode = void 0 ;
var statusText = void 0 ;
var responseText = void 0 ;
2015-08-17 17:00:26 -07:00
if ( xmlhttp . status ) {
2018-11-23 12:29:20 +00:00
statusCode = '\n' + Drupal . t ( 'An AJAX HTTP error occurred.' ) + '\n' + Drupal . t ( 'HTTP Result Code: !status' , { '!status' : xmlhttp . status } ) ;
} else {
2015-10-21 21:44:50 -07:00
statusCode = '\n' + Drupal . t ( 'An AJAX HTTP request terminated abnormally.' ) ;
2015-08-17 17:00:26 -07:00
}
2015-10-21 21:44:50 -07:00
statusCode += '\n' + Drupal . t ( 'Debugging information follows.' ) ;
2018-11-23 12:29:20 +00:00
var pathText = '\n' + Drupal . t ( 'Path: !uri' , { '!uri' : uri } ) ;
2015-08-17 17:00:26 -07:00
statusText = '' ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
try {
2018-11-23 12:29:20 +00:00
statusText = '\n' + Drupal . t ( 'StatusText: !statusText' , {
'!statusText' : $ . trim ( xmlhttp . statusText )
} ) ;
} catch ( e ) { }
2015-08-17 17:00:26 -07:00
responseText = '' ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
try {
2018-11-23 12:29:20 +00:00
responseText = '\n' + Drupal . t ( 'ResponseText: !responseText' , {
'!responseText' : $ . trim ( xmlhttp . responseText )
} ) ;
} catch ( e ) { }
2015-08-17 17:00:26 -07:00
2015-10-21 21:44:50 -07:00
responseText = responseText . replace ( /<("[^"]*"|'[^']*'|[^'">])*>/gi , '' ) ;
responseText = responseText . replace ( /[\n]+\s+/g , '\n' ) ;
2015-08-17 17:00:26 -07:00
2018-11-23 12:29:20 +00:00
var readyStateText = xmlhttp . status === 0 ? '\n' + Drupal . t ( 'ReadyState: !readyState' , {
'!readyState' : xmlhttp . readyState
} ) : '' ;
2015-08-17 17:00:26 -07:00
2018-11-23 12:29:20 +00:00
customMessage = customMessage ? '\n' + Drupal . t ( 'CustomMessage: !customMessage' , {
'!customMessage' : customMessage
} ) : '' ;
2015-09-04 13:20:09 -07:00
this . message = statusCode + pathText + statusText + customMessage + responseText + readyStateText ;
2015-08-17 17:00:26 -07:00
this . name = 'AjaxError' ;
} ;
Drupal . AjaxError . prototype = new Error ( ) ;
Drupal . AjaxError . prototype . constructor = Drupal . AjaxError ;
Drupal . ajax = function ( settings ) {
if ( arguments . length !== 1 ) {
throw new Error ( 'Drupal.ajax() function must be called with one configuration object only' ) ;
}
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
var base = settings . base || false ;
var element = settings . element || false ;
delete settings . base ;
delete settings . element ;
if ( ! settings . progress && ! element ) {
settings . progress = false ;
}
var ajax = new Drupal . Ajax ( base , element , settings ) ;
ajax . instanceIndex = Drupal . ajax . instances . length ;
Drupal . ajax . instances . push ( ajax ) ;
return ajax ;
} ;
Drupal . ajax . instances = [ ] ;
2016-04-20 09:56:34 -07:00
Drupal . ajax . expired = function ( ) {
return Drupal . ajax . instances . filter ( function ( instance ) {
return instance && instance . element !== false && ! document . body . contains ( instance . element ) ;
} ) ;
} ;
2018-11-23 12:29:20 +00:00
Drupal . ajax . bindAjaxLinks = function ( element ) {
$ ( element ) . find ( '.use-ajax' ) . once ( 'ajax' ) . each ( function ( i , ajaxLink ) {
var $linkElement = $ ( ajaxLink ) ;
var elementSettings = {
progress : { type : 'throbber' } ,
dialogType : $linkElement . data ( 'dialog-type' ) ,
dialog : $linkElement . data ( 'dialog-options' ) ,
dialogRenderer : $linkElement . data ( 'dialog-renderer' ) ,
base : $linkElement . attr ( 'id' ) ,
element : ajaxLink
} ;
var href = $linkElement . attr ( 'href' ) ;
if ( href ) {
elementSettings . url = href ;
elementSettings . event = 'click' ;
}
Drupal . ajax ( elementSettings ) ;
} ) ;
} ;
Drupal . Ajax = function ( base , element , elementSettings ) {
2015-08-17 17:00:26 -07:00
var defaults = {
event : element ? 'mousedown' : null ,
keypress : true ,
selector : base ? '#' + base : null ,
effect : 'none' ,
speed : 'none' ,
method : 'replaceWith' ,
progress : {
type : 'throbber' ,
message : Drupal . t ( 'Please wait...' )
} ,
submit : {
2015-09-04 13:20:09 -07:00
js : true
2015-08-17 17:00:26 -07:00
}
} ;
2018-11-23 12:29:20 +00:00
$ . extend ( this , defaults , elementSettings ) ;
2015-08-17 17:00:26 -07:00
this . commands = new Drupal . AjaxCommands ( ) ;
2016-04-20 09:56:34 -07:00
2015-08-17 17:00:26 -07:00
this . instanceIndex = false ;
if ( this . wrapper ) {
this . wrapper = '#' + this . wrapper ;
}
this . element = element ;
2018-11-23 12:29:20 +00:00
this . element _settings = elementSettings ;
2015-08-17 17:00:26 -07:00
2018-11-23 12:29:20 +00:00
this . elementSettings = elementSettings ;
2015-08-17 17:00:26 -07:00
2018-11-23 12:29:20 +00:00
if ( this . element && this . element . form ) {
2015-08-17 17:00:26 -07:00
this . $form = $ ( this . element . form ) ;
}
if ( ! this . url ) {
var $element = $ ( this . element ) ;
if ( $element . is ( 'a' ) ) {
this . url = $element . attr ( 'href' ) ;
2018-11-23 12:29:20 +00:00
} else if ( this . element && element . form ) {
2015-08-17 17:00:26 -07:00
this . url = this . $form . attr ( 'action' ) ;
}
}
2015-09-04 13:20:09 -07:00
var originalUrl = this . url ;
2016-04-20 09:56:34 -07:00
2018-11-23 12:29:20 +00:00
this . url = this . url . replace ( /\/nojs(\/|$|\?|#)/ , '/ajax$1' ) ;
2015-09-04 13:20:09 -07:00
if ( drupalSettings . ajaxTrustedUrl [ originalUrl ] ) {
drupalSettings . ajaxTrustedUrl [ this . url ] = true ;
}
2015-08-17 17:00:26 -07:00
var ajax = this ;
ajax . options = {
url : ajax . url ,
data : ajax . submit ,
2018-11-23 12:29:20 +00:00
beforeSerialize : function beforeSerialize ( elementSettings , options ) {
return ajax . beforeSerialize ( elementSettings , options ) ;
2015-08-17 17:00:26 -07:00
} ,
2018-11-23 12:29:20 +00:00
beforeSubmit : function beforeSubmit ( formValues , elementSettings , options ) {
2015-08-17 17:00:26 -07:00
ajax . ajaxing = true ;
2018-11-23 12:29:20 +00:00
return ajax . beforeSubmit ( formValues , elementSettings , options ) ;
2015-08-17 17:00:26 -07:00
} ,
2018-11-23 12:29:20 +00:00
beforeSend : function beforeSend ( xmlhttprequest , options ) {
2015-08-17 17:00:26 -07:00
ajax . ajaxing = true ;
return ajax . beforeSend ( xmlhttprequest , options ) ;
} ,
2018-11-23 12:29:20 +00:00
success : function success ( response , status , xmlhttprequest ) {
2015-08-17 17:00:26 -07:00
if ( typeof response === 'string' ) {
response = $ . parseJSON ( response ) ;
}
2015-09-04 13:20:09 -07:00
if ( response !== null && ! drupalSettings . ajaxTrustedUrl [ ajax . url ] ) {
if ( xmlhttprequest . getResponseHeader ( 'X-Drupal-Ajax-Token' ) !== '1' ) {
2015-10-21 21:44:50 -07:00
var customMessage = Drupal . t ( 'The response failed verification so will not be processed.' ) ;
2015-09-04 13:20:09 -07:00
return ajax . error ( xmlhttprequest , ajax . url , customMessage ) ;
}
}
2015-08-17 17:00:26 -07:00
return ajax . success ( response , status ) ;
} ,
2018-11-23 12:29:20 +00:00
complete : function complete ( xmlhttprequest , status ) {
2015-08-17 17:00:26 -07:00
ajax . ajaxing = false ;
if ( status === 'error' || status === 'parsererror' ) {
2015-09-04 13:20:09 -07:00
return ajax . error ( xmlhttprequest , ajax . url ) ;
2015-08-17 17:00:26 -07:00
}
} ,
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
dataType : 'json' ,
type : 'POST'
} ;
2018-11-23 12:29:20 +00:00
if ( elementSettings . dialog ) {
ajax . options . data . dialogOptions = elementSettings . dialog ;
2015-08-17 17:00:26 -07:00
}
if ( ajax . options . url . indexOf ( '?' ) === - 1 ) {
ajax . options . url += '?' ;
2018-11-23 12:29:20 +00:00
} else {
2015-08-17 17:00:26 -07:00
ajax . options . url += '&' ;
}
2018-11-23 12:29:20 +00:00
var wrapper = 'drupal_' + ( elementSettings . dialogType || 'ajax' ) ;
if ( elementSettings . dialogRenderer ) {
wrapper += '.' + elementSettings . dialogRenderer ;
}
ajax . options . url += Drupal . ajax . WRAPPER _FORMAT + '=' + wrapper ;
$ ( ajax . element ) . on ( elementSettings . event , function ( event ) {
2015-09-04 13:20:09 -07:00
if ( ! drupalSettings . ajaxTrustedUrl [ ajax . url ] && ! Drupal . url . isLocal ( ajax . url ) ) {
2018-11-23 12:29:20 +00:00
throw new Error ( Drupal . t ( 'The callback URL is not local and not trusted: !url' , {
'!url' : ajax . url
} ) ) ;
2015-09-04 13:20:09 -07:00
}
2015-08-17 17:00:26 -07:00
return ajax . eventResponse ( this , event ) ;
} ) ;
2018-11-23 12:29:20 +00:00
if ( elementSettings . keypress ) {
2015-08-17 17:00:26 -07:00
$ ( ajax . element ) . on ( 'keypress' , function ( event ) {
return ajax . keypressResponse ( this , event ) ;
} ) ;
}
2018-11-23 12:29:20 +00:00
if ( elementSettings . prevent ) {
$ ( ajax . element ) . on ( elementSettings . prevent , false ) ;
2015-08-17 17:00:26 -07:00
}
} ;
Drupal . ajax . WRAPPER _FORMAT = '_wrapper_format' ;
Drupal . Ajax . AJAX _REQUEST _PARAMETER = '_drupal_ajax' ;
Drupal . Ajax . prototype . execute = function ( ) {
if ( this . ajaxing ) {
return ;
}
try {
this . beforeSerialize ( this . element , this . options ) ;
2018-11-23 12:29:20 +00:00
2016-04-20 09:56:34 -07:00
return $ . ajax ( this . options ) ;
2018-11-23 12:29:20 +00:00
} catch ( e ) {
2015-08-17 17:00:26 -07:00
this . ajaxing = false ;
2015-10-21 21:44:50 -07:00
window . alert ( 'An error occurred while attempting to process ' + this . options . url + ': ' + e . message ) ;
2018-11-23 12:29:20 +00:00
2016-04-20 09:56:34 -07:00
return $ . Deferred ( ) . reject ( ) ;
2015-08-17 17:00:26 -07:00
}
} ;
Drupal . Ajax . prototype . keypressResponse = function ( element , event ) {
var ajax = this ;
2018-11-23 12:29:20 +00:00
if ( event . which === 13 || event . which === 32 && element . type !== 'text' && element . type !== 'textarea' && element . type !== 'tel' && element . type !== 'number' ) {
2015-08-17 17:00:26 -07:00
event . preventDefault ( ) ;
event . stopPropagation ( ) ;
2018-11-23 12:29:20 +00:00
$ ( element ) . trigger ( ajax . elementSettings . event ) ;
2015-08-17 17:00:26 -07:00
}
} ;
Drupal . Ajax . prototype . eventResponse = function ( element , event ) {
event . preventDefault ( ) ;
event . stopPropagation ( ) ;
var ajax = this ;
if ( ajax . ajaxing ) {
return ;
}
try {
if ( ajax . $form ) {
if ( ajax . setClick ) {
element . form . clk = element ;
}
ajax . $form . ajaxSubmit ( ajax . options ) ;
2018-11-23 12:29:20 +00:00
} else {
2015-08-17 17:00:26 -07:00
ajax . beforeSerialize ( ajax . element , ajax . options ) ;
$ . ajax ( ajax . options ) ;
}
2018-11-23 12:29:20 +00:00
} catch ( e ) {
2015-08-17 17:00:26 -07:00
ajax . ajaxing = false ;
2015-10-21 21:44:50 -07:00
window . alert ( 'An error occurred while attempting to process ' + ajax . options . url + ': ' + e . message ) ;
2015-08-17 17:00:26 -07:00
}
} ;
Drupal . Ajax . prototype . beforeSerialize = function ( element , options ) {
if ( this . $form ) {
var settings = this . settings || drupalSettings ;
Drupal . detachBehaviors ( this . $form . get ( 0 ) , settings , 'serialize' ) ;
}
options . data [ Drupal . Ajax . AJAX _REQUEST _PARAMETER ] = 1 ;
var pageState = drupalSettings . ajaxPageState ;
options . data [ 'ajax_page_state[theme]' ] = pageState . theme ;
options . data [ 'ajax_page_state[theme_token]' ] = pageState . theme _token ;
options . data [ 'ajax_page_state[libraries]' ] = pageState . libraries ;
} ;
2018-11-23 12:29:20 +00:00
Drupal . Ajax . prototype . beforeSubmit = function ( formValues , element , options ) { } ;
2015-08-17 17:00:26 -07:00
Drupal . Ajax . prototype . beforeSend = function ( xmlhttprequest , options ) {
if ( this . $form ) {
options . extraData = options . extraData || { } ;
options . extraData . ajax _iframe _upload = '1' ;
var v = $ . fieldValue ( this . element ) ;
if ( v !== null ) {
options . extraData [ this . element . name ] = v ;
}
}
$ ( this . element ) . prop ( 'disabled' , true ) ;
if ( ! this . progress || ! this . progress . type ) {
return ;
}
var progressIndicatorMethod = 'setProgressIndicator' + this . progress . type . slice ( 0 , 1 ) . toUpperCase ( ) + this . progress . type . slice ( 1 ) . toLowerCase ( ) ;
if ( progressIndicatorMethod in this && typeof this [ progressIndicatorMethod ] === 'function' ) {
this [ progressIndicatorMethod ] . call ( this ) ;
}
} ;
2018-11-23 12:29:20 +00:00
Drupal . theme . ajaxProgressThrobber = function ( message ) {
var messageMarkup = typeof message === 'string' ? Drupal . theme ( 'ajaxProgressMessage' , message ) : '' ;
var throbber = '<div class="throbber"> </div>' ;
return '<div class="ajax-progress ajax-progress-throbber">' + throbber + messageMarkup + '</div>' ;
} ;
Drupal . theme . ajaxProgressIndicatorFullscreen = function ( ) {
return '<div class="ajax-progress ajax-progress-fullscreen"> </div>' ;
} ;
Drupal . theme . ajaxProgressMessage = function ( message ) {
return '<div class="message">' + message + '</div>' ;
} ;
2015-08-17 17:00:26 -07:00
Drupal . Ajax . prototype . setProgressIndicatorBar = function ( ) {
var progressBar = new Drupal . ProgressBar ( 'ajax-progress-' + this . element . id , $ . noop , this . progress . method , $ . noop ) ;
if ( this . progress . message ) {
progressBar . setProgress ( - 1 , this . progress . message ) ;
}
if ( this . progress . url ) {
progressBar . startMonitoring ( this . progress . url , this . progress . interval || 1500 ) ;
}
this . progress . element = $ ( progressBar . element ) . addClass ( 'ajax-progress ajax-progress-bar' ) ;
this . progress . object = progressBar ;
$ ( this . element ) . after ( this . progress . element ) ;
} ;
Drupal . Ajax . prototype . setProgressIndicatorThrobber = function ( ) {
2018-11-23 12:29:20 +00:00
this . progress . element = $ ( Drupal . theme ( 'ajaxProgressThrobber' , this . progress . message ) ) ;
2015-08-17 17:00:26 -07:00
$ ( this . element ) . after ( this . progress . element ) ;
} ;
Drupal . Ajax . prototype . setProgressIndicatorFullscreen = function ( ) {
2018-11-23 12:29:20 +00:00
this . progress . element = $ ( Drupal . theme ( 'ajaxProgressIndicatorFullscreen' ) ) ;
2015-08-17 17:00:26 -07:00
$ ( 'body' ) . after ( this . progress . element ) ;
} ;
Drupal . Ajax . prototype . success = function ( response , status ) {
2018-11-23 12:29:20 +00:00
var _this = this ;
2015-08-17 17:00:26 -07:00
if ( this . progress . element ) {
$ ( this . progress . element ) . remove ( ) ;
}
if ( this . progress . object ) {
this . progress . object . stopMonitoring ( ) ;
}
$ ( this . element ) . prop ( 'disabled' , false ) ;
2015-11-17 13:42:33 -08:00
var elementParents = $ ( this . element ) . parents ( '[data-drupal-selector]' ) . addBack ( ) . toArray ( ) ;
var focusChanged = false ;
2018-11-23 12:29:20 +00:00
Object . keys ( response || { } ) . forEach ( function ( i ) {
if ( response [ i ] . command && _this . commands [ response [ i ] . command ] ) {
_this . commands [ response [ i ] . command ] ( _this , response [ i ] , status ) ;
2015-11-17 13:42:33 -08:00
if ( response [ i ] . command === 'invoke' && response [ i ] . method === 'focus' ) {
focusChanged = true ;
}
}
2018-11-23 12:29:20 +00:00
} ) ;
2015-11-17 13:42:33 -08:00
if ( ! focusChanged && this . element && ! $ ( this . element ) . data ( 'disable-refocus' ) ) {
var target = false ;
2018-11-23 12:29:20 +00:00
for ( var n = elementParents . length - 1 ; ! target && n >= 0 ; n -- ) {
2015-11-17 13:42:33 -08:00
target = document . querySelector ( '[data-drupal-selector="' + elementParents [ n ] . getAttribute ( 'data-drupal-selector' ) + '"]' ) ;
}
if ( target ) {
$ ( target ) . trigger ( 'focus' ) ;
2015-08-17 17:00:26 -07:00
}
}
if ( this . $form ) {
var settings = this . settings || drupalSettings ;
Drupal . attachBehaviors ( this . $form . get ( 0 ) , settings ) ;
}
this . settings = null ;
} ;
Drupal . Ajax . prototype . getEffect = function ( response ) {
var type = response . effect || this . effect ;
var speed = response . speed || this . speed ;
var effect = { } ;
if ( type === 'none' ) {
effect . showEffect = 'show' ;
effect . hideEffect = 'hide' ;
effect . showSpeed = '' ;
2018-11-23 12:29:20 +00:00
} else if ( type === 'fade' ) {
2015-08-17 17:00:26 -07:00
effect . showEffect = 'fadeIn' ;
effect . hideEffect = 'fadeOut' ;
effect . showSpeed = speed ;
2018-11-23 12:29:20 +00:00
} else {
2015-08-17 17:00:26 -07:00
effect . showEffect = type + 'Toggle' ;
effect . hideEffect = type + 'Toggle' ;
effect . showSpeed = speed ;
}
return effect ;
} ;
2015-09-04 13:20:09 -07:00
Drupal . Ajax . prototype . error = function ( xmlhttprequest , uri , customMessage ) {
2015-08-17 17:00:26 -07:00
if ( this . progress . element ) {
$ ( this . progress . element ) . remove ( ) ;
}
if ( this . progress . object ) {
this . progress . object . stopMonitoring ( ) ;
}
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
$ ( this . wrapper ) . show ( ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
$ ( this . element ) . prop ( 'disabled' , false ) ;
2018-11-23 12:29:20 +00:00
2015-08-17 17:00:26 -07:00
if ( this . $form ) {
2015-09-04 13:20:09 -07:00
var settings = this . settings || drupalSettings ;
2015-08-17 17:00:26 -07:00
Drupal . attachBehaviors ( this . $form . get ( 0 ) , settings ) ;
}
2015-09-04 13:20:09 -07:00
throw new Drupal . AjaxError ( xmlhttprequest , uri , customMessage ) ;
2015-08-17 17:00:26 -07:00
} ;
2018-11-23 12:29:20 +00:00
Drupal . theme . ajaxWrapperNewContent = function ( $newContent , ajax , response ) {
return ( response . effect || ajax . effect ) !== 'none' && $newContent . filter ( function ( i ) {
return ! ( $newContent [ i ] . nodeName === '#comment' || $newContent [ i ] . nodeName === '#text' && /^(\s|\n|\r)*$/ . test ( $newContent [ i ] . textContent ) ) ;
} ) . length > 1 ? Drupal . theme ( 'ajaxWrapperMultipleRootElements' , $newContent ) : $newContent ;
} ;
Drupal . theme . ajaxWrapperMultipleRootElements = function ( $elements ) {
return $ ( '<div></div>' ) . append ( $elements ) ;
} ;
2015-08-17 17:00:26 -07:00
Drupal . AjaxCommands = function ( ) { } ;
Drupal . AjaxCommands . prototype = {
2018-11-23 12:29:20 +00:00
insert : function insert ( ajax , response ) {
2016-04-20 09:56:34 -07:00
var $wrapper = response . selector ? $ ( response . selector ) : $ ( ajax . wrapper ) ;
2015-08-17 17:00:26 -07:00
var method = response . method || ajax . method ;
var effect = ajax . getEffect ( response ) ;
2018-11-23 12:29:20 +00:00
var settings = response . settings || ajax . settings || drupalSettings ;
var $newContent = $ ( $ . parseHTML ( response . data , document , true ) ) ;
$newContent = Drupal . theme ( 'ajaxWrapperNewContent' , $newContent , ajax , response ) ;
2015-08-17 17:00:26 -07:00
switch ( method ) {
case 'html' :
case 'replaceWith' :
case 'replaceAll' :
case 'empty' :
case 'remove' :
2016-04-20 09:56:34 -07:00
Drupal . detachBehaviors ( $wrapper . get ( 0 ) , settings ) ;
2018-11-23 12:29:20 +00:00
break ;
default :
break ;
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
$wrapper [ method ] ( $newContent ) ;
2015-08-17 17:00:26 -07:00
if ( effect . showEffect !== 'show' ) {
2018-11-23 12:29:20 +00:00
$newContent . hide ( ) ;
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
var $ajaxNewContent = $newContent . find ( '.ajax-new-content' ) ;
if ( $ajaxNewContent . length ) {
$ajaxNewContent . hide ( ) ;
$newContent . show ( ) ;
$ajaxNewContent [ effect . showEffect ] ( effect . showSpeed ) ;
} else if ( effect . showEffect !== 'show' ) {
$newContent [ effect . showEffect ] ( effect . showSpeed ) ;
2015-08-17 17:00:26 -07:00
}
2018-11-23 12:29:20 +00:00
if ( $newContent . parents ( 'html' ) . length ) {
$newContent . each ( function ( index , element ) {
if ( element . nodeType === Node . ELEMENT _NODE ) {
Drupal . attachBehaviors ( element , settings ) ;
}
} ) ;
2015-08-17 17:00:26 -07:00
}
} ,
2018-11-23 12:29:20 +00:00
remove : function remove ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
var settings = response . settings || ajax . settings || drupalSettings ;
$ ( response . selector ) . each ( function ( ) {
Drupal . detachBehaviors ( this , settings ) ;
2018-11-23 12:29:20 +00:00
} ) . remove ( ) ;
2015-08-17 17:00:26 -07:00
} ,
2018-11-23 12:29:20 +00:00
changed : function changed ( ajax , response , status ) {
2016-04-20 09:56:34 -07:00
var $element = $ ( response . selector ) ;
if ( ! $element . hasClass ( 'ajax-changed' ) ) {
$element . addClass ( 'ajax-changed' ) ;
2015-08-17 17:00:26 -07:00
if ( response . asterisk ) {
2016-04-20 09:56:34 -07:00
$element . find ( response . asterisk ) . append ( ' <abbr class="ajax-changed" title="' + Drupal . t ( 'Changed' ) + '">*</abbr> ' ) ;
2015-08-17 17:00:26 -07:00
}
}
} ,
2018-11-23 12:29:20 +00:00
alert : function alert ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
window . alert ( response . text , response . title ) ;
} ,
2018-11-23 12:29:20 +00:00
redirect : function redirect ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
window . location = response . url ;
} ,
2018-11-23 12:29:20 +00:00
css : function css ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
$ ( response . selector ) . css ( response . argument ) ;
} ,
2018-11-23 12:29:20 +00:00
settings : function settings ( ajax , response , status ) {
2016-04-20 09:56:34 -07:00
var ajaxSettings = drupalSettings . ajax ;
2016-10-06 15:16:20 -07:00
if ( ajaxSettings ) {
Drupal . ajax . expired ( ) . forEach ( function ( instance ) {
if ( instance . selector ) {
var selector = instance . selector . replace ( '#' , '' ) ;
if ( selector in ajaxSettings ) {
delete ajaxSettings [ selector ] ;
}
2016-04-20 09:56:34 -07:00
}
2016-10-06 15:16:20 -07:00
} ) ;
}
2016-04-20 09:56:34 -07:00
2015-08-17 17:00:26 -07:00
if ( response . merge ) {
$ . extend ( true , drupalSettings , response . settings ) ;
2018-11-23 12:29:20 +00:00
} else {
2015-08-17 17:00:26 -07:00
ajax . settings = response . settings ;
}
} ,
2018-11-23 12:29:20 +00:00
data : function data ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
$ ( response . selector ) . data ( response . name , response . value ) ;
} ,
2018-11-23 12:29:20 +00:00
invoke : function invoke ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
var $element = $ ( response . selector ) ;
2018-11-23 12:29:20 +00:00
$element [ response . method ] . apply ( $element , _toConsumableArray ( response . args ) ) ;
2015-08-17 17:00:26 -07:00
} ,
2018-11-23 12:29:20 +00:00
restripe : function restripe ( ajax , response , status ) {
$ ( response . selector ) . find ( '> tbody > tr:visible, > tr:visible' ) . removeClass ( 'odd even' ) . filter ( ':even' ) . addClass ( 'odd' ) . end ( ) . filter ( ':odd' ) . addClass ( 'even' ) ;
2015-08-17 17:00:26 -07:00
} ,
2018-11-23 12:29:20 +00:00
update _build _id : function update _build _id ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
$ ( 'input[name="form_build_id"][value="' + response . old + '"]' ) . val ( response . new ) ;
} ,
2018-11-23 12:29:20 +00:00
add _css : function add _css ( ajax , response , status ) {
2015-08-17 17:00:26 -07:00
$ ( 'head' ) . prepend ( response . data ) ;
2018-11-23 12:29:20 +00:00
var match = void 0 ;
var importMatch = /^@import url\("(.*)"\);$/gim ;
2015-08-17 17:00:26 -07:00
if ( document . styleSheets [ 0 ] . addImport && importMatch . test ( response . data ) ) {
importMatch . lastIndex = 0 ;
do {
match = importMatch . exec ( response . data ) ;
document . styleSheets [ 0 ] . addImport ( match [ 1 ] ) ;
} while ( match ) ;
}
}
} ;
2018-11-23 12:29:20 +00:00
} ) ( jQuery , window , Drupal , drupalSettings ) ;