1/* Source and licensing information for the line(s) below can be found at https://www.cancham.org/modules/contrib/webform/js/webform.states.js. */ 2(function($,Drupal,once){'use strict';Drupal.webform=Drupal.webform||{};Drupal.webform.states=Drupal.webform.states||{};Drupal.webform.states.slideDown=Drupal.webform.states.slideDown||{};Drupal.webform.states.slideDown.duration='slow';Drupal.webform.states.slideUp=Drupal.webform.states.slideUp||{};Drupal.webform.states.slideUp.duration='fast';$.fn.hasData=function(data){return(typeof this.data(data)!=='undefined')};$.fn.isWebform=function(){return $(this).closest('form.webform-submission-form, form[id^="webform"], form[data-is-webform]').length?true:false};$.fn.isWebformElement=function(){return($(this).isWebform()||$(this).closest('[data-is-webform-element]').length)?true:false};Drupal.states.Trigger.states.empty.change=function change(){return this.val()===''};var states=Drupal.states;Drupal.states.Dependent.prototype.compare=function compare(reference,selector,state){var value=this.values[selector][state.name],name=reference.constructor.name;if(!name){name=$.type(reference);name=name.charAt(0).toUpperCase()+name.slice(1)};if(name in states.Dependent.comparisons)return states.Dependent.comparisons[name](reference,value);if(reference.constructor.name in states.Dependent.comparisons)return states.Dependent.comparisons[reference.constructor.name](reference,value);return _compare2(reference,value)} 3function _compare2(a,b){if(a===b)return typeof a==='undefined'?a:true;return typeof a==='undefined'||typeof b==='undefined'};Drupal.states.Dependent.comparisons.Object=function(reference,value){if('pattern'in reference){return(new RegExp(reference.pattern)).test(value)}else if('!pattern'in reference){return!((new RegExp(reference['!pattern'])).test(value))}else if('less'in reference){return(value!==''&&parseFloat(reference.less)>parseFloat(value))}else if('less_equal'in reference){return(value!==''&&parseFloat(reference.less_equal)>=parseFloat(value))}else if('greater'in reference){return(value!==''&&parseFloat(reference.greater)<parseFloat(value))}else if('greater_equal'in reference){return(value!==''&&parseFloat(reference.greater_equal)<=parseFloat(value))}else if('between'in reference||'!between'in reference){if(value==='')return false;var between=reference.between||reference['!between'],betweenParts=between.split(':'),greater=betweenParts[0],less=(typeof betweenParts[1]!=='undefined')?betweenParts[1]:null,isGreaterThan=(greater===null||greater===''||parseFloat(value)>=parseFloat(greater)),isLessThan=(less===null||less===''||parseFloat(value)<=parseFloat(less)),result=(isGreaterThan&&isLessThan);return(reference['!between'])?!result:result}else return reference.indexOf(value)!==false};var $document=$(document);$document.on('state:required',function(e){if(e.trigger&&$(e.target).isWebformElement()){var $target=$(e.target);toggleRequired($target.find('input[type="file"]'),e.value);if($target.is('.js-form-type-radios, .js-form-type-webform-radios-other, .js-webform-type-radios, .js-webform-type-webform-radios-other, .js-webform-type-webform-entity-radios, .webform-likert-table')){$target.toggleClass('required',e.value);toggleRequired($target.find('input[type="radio"]'),e.value)};if($target.is('.js-form-type-checkboxes, .js-form-type-webform-checkboxes-other, .js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other')){$target.toggleClass('required',e.value);var $checkboxes=$target.find('input[type="checkbox"]');if(e.value){$checkboxes.on('click',statesCheckboxesRequiredEventHandler);checkboxesRequired($target)}else{$checkboxes.off('click',statesCheckboxesRequiredEventHandler);toggleRequired($checkboxes,false)}};if($target.is('.js-webform-tableselect')){$target.toggleClass('required',e.value);var isMultiple=$target.is('[multiple]');if(isMultiple){var $tbody=$target.find('tbody'),$checkboxes=$tbody.find('input[type="checkbox"]');copyRequireMessage($target,$checkboxes);if(e.value){$checkboxes.on('click change',statesCheckboxesRequiredEventHandler);checkboxesRequired($tbody)}else{$checkboxes.off('click change ',statesCheckboxesRequiredEventHandler);toggleRequired($tbody,false)}}else{var $radios=$target.find('input[type="radio"]');copyRequireMessage($target,$radios);toggleRequired($radios,e.value)}};if($target.is('.js-form-type-webform-select-other, .js-webform-type-webform-select-other')){var $select=$target.find('select');toggleRequired($select,e.value);copyRequireMessage($target,$select)};if($target.find('> label:not([for])').length)$target.find('> label').toggleClass('js-form-required form-required',e.value);if($target.is('.js-webform-type-radios, .js-webform-type-checkboxes, fieldset'))$target.find('legend span.fieldset-legend:not(.visually-hidden),legend span.fieldset__label:not(.visually-hidden)').toggleClass('js-form-required form-required',e.value);if($target.is('fieldset'))$target.removeAttr('required aria-required')}});$document.on('state:checked',function(e){if(e.trigger)$(e.target).trigger('change')});$document.on('state:readonly',function(e){if(e.trigger&&$(e.target).isWebformElement()){$(e.target).prop('readonly',e.value).closest('.js-form-item, .js-form-wrapper').toggleClass('webform-readonly',e.value).find('input, textarea').prop('readonly',e.value);$(e.target).trigger('webform:readonly').find('select, input, textarea, button').trigger('webform:readonly')}});$document.on('state:visible state:visible-slide',function(e){if(e.trigger&&$(e.target).isWebformElement())if(e.value){$(':input',e.target).addBack().each(function(){restoreValueAndRequired(this);triggerEventHandlers(this)})}else $(':input',e.target).addBack().each(function(){backupValueAndRequired(this);clearValueAndRequired(this);triggerEventHandlers(this)})});$document.on('state:visible-slide',function(e){if(e.trigger&&$(e.target).isWebformElement()){var effect=e.value?'slideDown':'slide
3Up',duration=Drupal.webform.states[effect].duration;$(e.target).closest('.js-form-item, .js-form-submit, .js-form-wrapper')[effect](duration)}});Drupal.states.State.aliases['invisible-slide']='!visible-slide';$document.on('state:disabled',function(e){if(e.trigger&&$(e.target).isWebformElement()){$(e.target).prop('disabled',e.value).closest('.js-form-item, .js-form-submit, .js-form-wrapper').toggleClass('form-disabled',e.value).find('select, input, textarea, button').prop('disabled',e.value);var fileElements=$(e.target).find(':input[type="hidden"][name$="[fids]"]');if(fileElements.length){if($(e.target).is('fieldset'))$(e.target).prop('disabled',false);fileElements.removeAttr('disabled')};$(e.target).trigger('webform:disabled').find('select, input, textarea, button').trigger('webform:disabled')}});Drupal.behaviors.webformCheckboxesRequired={attach:function(context){$(once('webform-checkboxes-required','.js-form-type-checkboxes.required, .webform-term-checkboxes.required, .js-form-type-webform-checkboxes-other.required, .js-webform-type-checkboxes.required, .js-webform-type-webform-checkboxes-other.required, .js-webform-type-webform-radios-other.checkboxes',context)).each(function(){var $element=$(this);$element.find('input[type="checkbox"]').on('click',statesCheckboxesRequiredEventHandler);setTimeout(function(){checkboxesRequired($element)})})}};Drupal.behaviors.webformRadiosRequired={attach:function(context){$(once('webform-radios-required','.js-form-type-radios, .js-form-type-webform-radios-other, .js-webform-type-radios, .js-webform-type-webform-radios-other, .js-webform-type-webform-entity-radios, .js-webform-type-webform-scale',context)).each(function(){var $element=$(this);setTimeout(function(){radiosRequired($element)})})}};Drupal.behaviors.webformTableSelectRequired={attach:function(context){$(once('webform-tableselect-required','.js-webform-tableselect.required',context)).each(function(){var $element=$(this),$tbody=$element.find('tbody'),isMultiple=$element.is('[multiple]');if(isMultiple)$tbody.find('input[type="checkbox"]').on('click change',function(){checkboxesRequired($tbody)});setTimeout(function(){isMultiple?checkboxesRequired($tbody):radiosRequired($element)})})}} 4function checkboxesRequired($element){var $firstCheckbox=$element.find('input[type="checkbox"]').first(),isChecked=$element.find('input[type="checkbox"]').is(':checked');toggleRequired($firstCheckbox,!isChecked);copyRequireMessage($element,$firstCheckbox)} 5function radiosRequired($element){var $radios=$element.find('input[type="radio"]'),isRequired=$element.hasClass('required');toggleRequired($radios,isRequired);copyRequireMessage($element,$radios)} 6function statesCheckboxesRequiredEventHandler(){var $element=$(this).closest('.js-webform-type-checkboxes, .js-webform-type-webform-checkboxes-other, .js-webform-type-webform-term-checkboxes, .js-webform-tableselect tbody');checkboxesRequired($element)} 7function triggerEventHandlers(input){var $input=$(input),type=input.type,tag=input.tagName.toLowerCase(),extraParameters=['webform.states'];if(type==='checkbox'||type==='radio'){$input.trigger('change',extraParameters).trigger('blur',extraParameters)}else if(tag==='select'){if($input.closest('.webform-type-address').length){if(!$input.data('webform-states-address-initialized')&&$input.attr('autocomplete')==='country'&&$input.val()===$input.find("option[selected]").attr('value'))return;$input.data('webform-states-address-initialized',true)};$input.trigger('change',extraParameters).trigger('blur',extraParameters)}else if(type!=='submit'&&type!=='button'&&type!=='file'){var hasInputMask=($.fn.inputmask&&$input.hasClass('js-webform-input-mask'));hasInputMask&&$input.inputmask('remove');$input.trigger('input',extraParameters).trigger('change',extraParameters).trigger('keydown',extraParameters).trigger('keyup',extraParameters).trigger('blur',extraParameters);hasInputMask&&$input.inputmask()}} 8function backupValueAndRequired(input){var $input=$(input),type=input.type,tag=input.tagName.toLowerCase();if($input.prop('required')&&!$input.hasData('webform-required'))$input.data('webform-required',true);if(!$input.hasData('webform-value'))if(type==='checkbox'||type==='radio'){$input.data('webform-value',$input.prop('checked'))}else if(tag==='select'){var values=[];$input.find('option:selected').each(function(i,option){values[i]=option.value});$input.data('webform-value',values)}else if(type!=='submit'&&type!=='button')$input.data('webform-value',input.value)} 9function restoreValueAndRequired(input){var $input=$(input),value=$input.data('webform-value');
9if(typeof value!=='undefined'){var type=input.type,tag=input.tagName.toLowerCase();if(type==='checkbox'||type==='radio'){$input.prop('checked',value)}else if(tag==='select'){$.each(value,function(i,option_value){option_value=option_value.replace(/'/g,"\\\'");$input.find("option[value='"+option_value+"']").prop('selected',true)})}else if(type!=='submit'&&type!=='button')input.value=value;$input.removeData('webform-value')};var required=$input.data('webform-required');if(typeof required!=='undefined'){if(required)$input.prop('required',true);$input.removeData('webform-required')}} 10function clearValueAndRequired(input){var $input=$(input);if($input.closest('[data-webform-states-no-clear]').length)return;var type=input.type,tag=input.tagName.toLowerCase();if(type==='checkbox'||type==='radio'){$input.prop('checked',false)}else if(tag==='select'){if($input.find('option[value=""]').length){$input.val('')}else input.selectedIndex=-1}else if(type!=='submit'&&type!=='button')input.value=(type==='color')?'#000000':'';$input.prop('required',false)} 11function toggleRequired($input,required){var isCheckboxOrRadio=($input.attr('type')==='radio'||$input.attr('type')==='checkbox');if(required){if(isCheckboxOrRadio){$input.attr({required:'required'})}else $input.attr({required:'required','aria-required':'true'})}else{if(isCheckboxOrRadio){$input.removeAttr('required')}else $input.removeAttr('required aria-required');$input.each(function(){this.setCustomValidity&&this.setCustomValidity('')})}} 12function copyRequireMessage($source,$destination){if($source.attr('data-msg-required'))$destination.attr('data-msg-required',$source.attr('data-msg-required'))}})(jQuery,Drupal,once) 13/* Source and licensing information for the above line(s) can be found at https://www.cancham.org/modules/contrib/webform/js/webform.states.js. */
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.