langcode: en
status: open
dependencies:
  enforced:
    module:
      - webform_examples
open: null
close: null
weight: 0
uid: null
template: false
archive: false
id: example_computed_elements_ajax
title: 'Example: Computed Ajax'
description: 'Example of a computed element using Ajax.'
category: Example
elements: |
  message_warning:
    '#type': webform_message
    '#states':
      visible:
        ':input[name="c"]':
          value: c
    '#message_type': warning
    '#message_message': 'Please enter <strong>a</strong> and <strong>b</strong> to perform a basic adding calculation.'
  message_status:
    '#type': webform_message
    '#message_message': 'Thank you for entering <strong>a</strong> and <strong>b</strong> to perform a basic adding calculation.'
    '#states':
      visible:
        ':input[name="c"]':
          '!value': c
  calculation:
    '#type': fieldset
    '#title': 'Basic adding calculation'
    container:
      '#type': container
      '#attributes':
        class:
          - container-inline
          - calculation
      a:
        '#type': number
        '#title': a
        '#title_display': invisible
        '#placeholder': a
        '#required': true
      markup_add:
        '#type': webform_markup
        '#markup': ' + '
      b:
        '#type': number
        '#title': b
        '#title_display': invisible
        '#placeholder': b
        '#required': true
      markup_equals:
        '#type': webform_markup
        '#markup': ' = '
      c:
        '#type': webform_computed_twig
        '#title': c
        '#title_display': invisible
        '#ajax': true
        '#template': '{% if data.a|length and data.b|length %}{{ data.a + data.b }}{% else %}c{% endif %}'
  user_information:
    '#type': fieldset
    '#title': 'User information'
    user:
      '#type': webform_entity_select
      '#title': User
      '#target_type': user
      '#selection_handler': 'default:user'
      '#selection_settings':
        include_anonymous: false
        filter:
          type: _none
    user_ud:
      '#type': webform_computed_token
      '#title': 'User: ID'
      '#ajax': true
      '#hide_empty': true
      '#template': '[webform_submission:values:user:entity:uid:clear]'
    user_display_name:
      '#type': webform_computed_token
      '#title': 'User: Display name'
      '#ajax': true
      '#hide_empty': true
      '#template': '[webform_submission:values:user:entity:display-name:clear]'
    user_mail:
      '#type': webform_computed_token
      '#title': 'User: Email'
      '#ajax': true
      '#hide_empty': true
      '#template': '[webform_submission:values:user:entity:mail:clear]'
    user_url:
      '#type': webform_computed_token
      '#title': 'User: URL'
      '#ajax': true
      '#hide_empty': true
      '#template': '[webform_submission:values:user:entity:url:clear]'
    user_created:
      '#type': webform_computed_token
      '#title': 'User: Created'
      '#ajax': true
      '#hide_empty': true
      '#template': '[webform_submission:values:user:entity:created:clear]'
  
css: |
  .calculation {
    font-size: 2em;
  }
  .calculation input {
    width: 4em;
    text-align: right;
  }
  
javascript: ''
settings:
  ajax: false
  ajax_scroll_top: form
  page: true
  page_submit_path: ''
  page_confirm_path: ''
  form_title: source_entity_webform
  form_submit_once: false
  form_exception_message: ''
  form_open_message: ''
  form_close_message: ''
  form_previous_submissions: true
  form_confidential: false
  form_confidential_message: ''
  form_remote_addr: true
  form_convert_anonymous: false
  form_prepopulate: false
  form_prepopulate_source_entity: false
  form_prepopulate_source_entity_required: false
  form_prepopulate_source_entity_type: ''
  form_reset: true
  form_disable_autocomplete: false
  form_novalidate: false
  form_disable_inline_errors: false
  form_required: false
  form_unsaved: false
  form_disable_back: false
  form_submit_back: false
  form_autofocus: false
  form_details_toggle: false
  form_access_denied: default
  form_access_denied_title: ''
  form_access_denied_message: ''
  form_access_denied_attributes: {  }
  form_file_limit: ''
  submission_label: ''
  submission_log: false
  submission_views: {  }
  submission_views_replace: {  }
  submission_user_columns: {  }
  submission_user_duplicate: false
  submission_access_denied: default
  submission_access_denied_title: ''
  submission_access_denied_message: ''
  submission_access_denied_attributes: {  }
  submission_exception_message: ''
  submission_locked_message: ''
  submission_excluded_elements: {  }
  submission_exclude_empty: false
  submission_exclude_empty_checkbox: false
  previous_submission_message: ''
  previous_submissions_message: ''
  autofill: false
  autofill_message: ''
  autofill_excluded_elements: {  }
  wizard_progress_bar: true
  wizard_progress_pages: false
  wizard_progress_percentage: false
  wizard_progress_link: false
  wizard_start_label: ''
  wizard_preview_link: false
  wizard_confirmation: true
  wizard_confirmation_label: ''
  wizard_track: ''
  preview: 0
  preview_label: ''
  preview_title: ''
  preview_message: ''
  preview_attributes: {  }
  preview_excluded_elements: {  }
  preview_exclude_empty: true
  preview_exclude_empty_checkbox: false
  draft: none
  draft_multiple: false
  draft_auto_save: false
  draft_saved_message: ''
  draft_loaded_message: ''
  confirmation_type: page
  confirmation_title: ''
  confirmation_message: ''
  confirmation_url: ''
  confirmation_attributes: {  }
  confirmation_back: true
  confirmation_back_label: ''
  confirmation_back_attributes: {  }
  confirmation_exclude_query: false
  confirmation_exclude_token: false
  limit_total: null
  limit_total_interval: null
  limit_total_message: ''
  limit_total_unique: false
  limit_user: null
  limit_user_interval: null
  limit_user_message: ''
  limit_user_unique: false
  entity_limit_total: null
  entity_limit_total_interval: null
  entity_limit_user: null
  entity_limit_user_interval: null
  purge: none
  purge_days: null
  results_disabled: false
  results_disabled_ignore: false
  token_update: false
access:
  create:
    roles:
      - anonymous
      - authenticated
    users: {  }
    permissions: {  }
  view_any:
    roles: {  }
    users: {  }
    permissions: {  }
  update_any:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_any:
    roles: {  }
    users: {  }
    permissions: {  }
  purge_any:
    roles: {  }
    users: {  }
    permissions: {  }
  view_own:
    roles: {  }
    users: {  }
    permissions: {  }
  update_own:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_own:
    roles: {  }
    users: {  }
    permissions: {  }
  administer:
    roles: {  }
    users: {  }
    permissions: {  }
  test:
    roles: {  }
    users: {  }
    permissions: {  }
  configuration:
    roles: {  }
    users: {  }
    permissions: {  }
handlers: {  }
