{% import '_includes/forms' as forms %} {% import 'verbb-base/_macros' as macros %} {% set displayName = integration.displayName() %} {% set type = integration.settings.type ?? 'v3' %} {{ macros.proxyField(fieldVariables, 'selectField', { label: 'reCAPTCHA Type' | t('formie'), instructions: 'Select the type of reCAPTCHA to use.' | t('formie'), name: 'type', required: true, toggle: true, targetPrefix: 'settings-', value: type, options: [ { value: 'v3', label: 'reCAPTCHA V3' | t('formie'), }, { value: 'v2_checkbox', label: 'reCAPTCHA V2 - Checkbox' | t('formie'), }, { value: 'v2_invisible', label: 'reCAPTCHA V2 - Invisible' | t('formie'), }, { value: 'enterprise', label: 'reCAPTCHA Enterprise' | t('formie'), }, ], warning: macros.configWarning('type', 'formie'), }) }} {{ macros.proxyField(fieldVariables, 'autosuggestField', { label: 'reCAPTCHA Site Key' | t('formie'), name: 'siteKey', required: true, suggestEnvVars: true, value: integration.settings.siteKey ?? '', warning: macros.configWarning('siteKey', 'formie'), }) }} {{ macros.proxyField(fieldVariables, 'autosuggestField', { label: 'reCAPTCHA Secret Key' | t('formie'), name: 'secretKey', required: true, suggestEnvVars: true, value: integration.settings.secretKey ?? '', warning: macros.configWarning('secretKey', 'formie'), }) }}

{{ 'Looking to hide the badge? Refer to the [reCAPTCHA FAQ](https://developers.google.com/recaptcha/docs/faq#id-like-to-hide-the-recaptcha-badge.-what-is-allowed) to achieve this.' | t('formie') | md(inlineOnly=true) }}

{{ macros.proxyField(fieldVariables, 'selectField', { label: 'Language' | t('formie'), instructions: 'Force a specific language when displaying reCAPTCHA. Choose "Auto" for Formie to automatically match your site’s language.' | t('formie'), name: 'language', value: integration.settings.language ?? 'auto', options: languageOptions, warning: macros.configWarning('language', 'formie'), }) }} {{ macros.proxyField(fieldVariables, 'selectField', { label: 'Script Loading Method' | t('formie'), instructions: 'Select the `defer` and `async` attributes to use in the script tag when rendering.' | t('formie'), name: 'scriptLoadingMethod', value: integration.settings.scriptLoadingMethod ?? 'asyncDefer', options: [ { value: 'none', label: 'None' | t('formie'), }, { value: 'asyncDefer', label: 'Async & Defer' | t('formie'), }, { value: 'async', label: 'Async' | t('formie'), }, { value: 'defer', label: 'Defer' | t('formie'), }, ], warning: macros.configWarning('scriptLoadingMethod', 'formie'), }) }} {% js %} {% set secretKey = 'reCAPTCHA Secret Key' | t('formie') %} {% set secretKeyAlt = 'Google Console API Key' | t('formie') %} // Change the "Secret Key" for Enterprise, for clarity $('[name="integrations[recaptcha][settings][type]"]').on('change', function(e) { const type = $(this).val(); const $input = $('[name="integrations[recaptcha][settings][secretKey]"]') const $field = $input.parents('.field'); const $label = $field.find('label'); const required = 'Required'; if (type === 'enterprise') { $label.html('{{ secretKeyAlt }}' + required); } else { $label.html('{{ secretKey }}' + required); } }); $('[name="integrations[recaptcha][settings][type]"]').trigger('change'); // Fix some fields being the same across multiple recaptchas. Sync them! $('[name="integrations[recaptcha][settings][badge]"]').on('change', function(e) { var $select = $(this); var $selects = $('[name="integrations[recaptcha][settings][badge]"]'); $selects.each(function(index, element) { if ($(element).attr('id') != $select.attr('id')) { $(element).val($select.val()) } }) }); $('[name="integrations[recaptcha][settings][language]"]').on('change', function(e) { var $select = $(this); var $selects = $('[name="integrations[recaptcha][settings][language]"]'); $selects.each(function(index, element) { if ($(element).attr('id') != $select.attr('id')) { $(element).val($select.val()) } }) }); {% endjs %}