{% extends '_layouts/cp' %} {% import '_includes/forms' as forms %} {% import 'verbb-base/_macros' as macros %} {% do view.registerAssetBundle('craft\\web\\assets\\timepicker\\TimepickerAsset') -%} {% set crumbs = [ { label: craft.formie.getPluginName() | t('formie'), url: url('formie') }, { label: 'Forms' | t('formie'), url: url('formie/forms') }, ] %} {% set selectedSubnavItem = 'forms' %} {% set bodyClass = 'fui-body' %} {% block pageTitle %}

${form.title}

{% endblock %} {% set errorSummary %}

${errorMessage}

{% endset %} {% block actionButton %} {% set submissions = craft.formie.submissions.form(form.handle).limit(1).exists() %} {% if submissions and (currentUser.can('formie-viewSubmissions') or currentUser.can('formie-viewSubmissions:' ~ form.uid)) %} {{ 'View Submissions' | t('formie') }} {% endif %} {% if currentUser.can('formie-manageForms') or currentUser.can('formie-manageForms:' ~ form.uid) %}
{{ 'Save' | t('app') }}
{% endif %} {% endblock %} {% block content %} {# Capture any JS generated by the form builder that isn't Vue. Think elementSelect fields. #} {% do craft.app.view.startJsBuffer() %}
{% if form.id %} {% endif %} {% if craft.app.getIsMultiSite() %} {% endif %} {% for tab in formTabs %}
{% include ['formie/forms/_panes/' ~ tab.value, 'formie/forms/_panes/form-fields'] %}
{% endfor %}
{# Wait for the `formie-form.js` file to load (via Vite) before initializing the Vue app. #} {# Once ready, initialized any captured JS _after_ Vue has loaded. This handles all jQuery-based scripts #} {% set jsBuffer = craft.app.view.clearJsBuffer(false) %} {% js %} document.addEventListener('vite-script-loaded', function(e) { if (e.detail.path === 'src/js/formie-form.js') { new Craft.Formie.EditForm({{ jsBuilderConfig | json_encode | raw }}); // Wait for Vue to kick in setTimeout(function() { {{ jsBuffer | raw }} }, 100); } }); {% endjs %} {% endblock %}