{% css formCss %} {{ form.renderTag({class: "w-full"}) }} {# Set styling for Ajax responses #} {# Render tabs for pages #} {% if form.pages|length > 1 %} {% endif %} {# Render errors #} {% if form.hasErrors %} {% endif %} {# Define standard field classes #} {% set standardFieldClasses = "appearance-none block w-full bg-gray-100 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" %} {% set selectFieldClasses = "block appearance-none w-full bg-gray-100 border border-gray-200 text-gray-700 py-3 px-4 pr-8 rounded leading-tight focus:outline-none focus:bg-white focus:border-gray-500" %} {% set checkboxFieldClasses = "bg-gray-100 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" %} {% set fileFieldClasses = "appearance-none block w-full text-gray-700 py-3 px-4 leading-tight" %} {% set tableFieldClasses = "appearance-none w-full text-gray-700 py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" %} {% set signatureFieldClasses = "bg-gray-200 hover:bg-gray-400 text-black font-normal py-1 px-2 rounded mr-1" %} {% set standardLabelsClasses = "tracking-wide text-gray-700 text-xs font-bold mb-2" %} {# Render form rows #} {% for row in form %}
{% for field in row %} {# Calculate column class based on columns count #} {% set columnCount = row|length %} {% set columnClass = "w-full px-3 mb-6 md:mb-0" %} {% set columnClass = columnClass ~ form.customAttributes.columnClass %} {% if columnCount > 1 %} {% set columnClass = columnClass ~ " md:w-1/" ~ columnCount ~ " lg:w-1/" ~ columnCount ~ " xl:w-1/" ~ columnCount %} {% else %} {% set columnClass = columnClass ~ " md:w-full lg:w-full xl:w-full" %} {% endif %} {# Set a custom column class for the submit button #} {% if field.type == "submit" %} {% set columnClass = columnClass ~ " text-" ~ field.position %} {% endif %} {# Set field class based on field type #} {% set fieldClass = standardFieldClasses %} {% switch field.type %} {% case "select" %} {% set fieldClass = selectFieldClasses %} {% case "checkbox" %} {% set fieldClass = checkboxFieldClasses %} {% case "mailing_list" %} {% set fieldClass = checkboxFieldClasses %} {% case "file" %} {% set fieldClass = fileFieldClasses %} {% case "table" %} {% set fieldClass = tableFieldClasses %} {% case "signature" %} {% set fieldClass = signatureFieldClasses %} {% endswitch %} {% set fieldClass = fieldClass ~ (field.hasErrors ? " border-red-500") %} {# Set label class #} {% set labelClass = standardLabelsClasses ~ " block uppercase" %} {% set labelClass = labelClass ~ (field.required ? " required" : "") %} {# Set error class #} {% set errorClass = "text-red-500 text-xs italic" %} {# Set instructions class #} {% set instructionClass = "text-gray-600 text-xs italic" %} {# Create a column except when creating Freeform Payments columns #} {% if field.type != 'cc_details' %}
{% endif %} {% if field.type == "checkbox_group" %} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }} {% for index, option in field.options %}
{% endfor %} {{ field.renderInstructions() }} {{ field.renderErrors({ errorClass: errorClass }) }} {% elseif field.type == "radio_group" %} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }} {% for index, option in field.options %}
{% endfor %} {{ field.renderInstructions() }} {{ field.renderErrors() }} {% elseif field.type == "dynamic_recipients" and (field.showAsRadio or field.showAsCheckboxes) %} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }} {{ field.oneLine ? "
"|raw }} {% for index, option in field.options %}
{% endfor %} {{ field.oneLine ? "
"|raw }} {{ field.renderInstructions() }} {{ field.renderErrors() }} {% elseif field.type == "dynamic_recipients" and (field.showAsSelect) %} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }}
{{ field.renderInstructions() }} {{ field.renderErrors() }} {% elseif field.type == "select" %} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }}
{{ field.renderInstructions() }} {{ field.renderErrors() }} {% elseif field.type in ["checkbox", "mailing_list"] %}
{{ field.renderInput({ class: fieldClass ~ (field.hasErrors ? " border-red-500") }) }} {{ field.renderLabel({ labelClass: (field.hasErrors ? " border-red-500") }) }} {{ field.renderErrors({ errorClass: errorClass }) }}
{% elseif field.type == "submit" %} {{ field.render({ class: "bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded mr-2" }) }} {% elseif field.type == "table" %} {{ field.render({ class: fieldClass, labelClass: labelClass, instructionsClass: instructionClass, instructionsBelowField: true, errorClass: errorClass, addButtonLabel: "Add +", addButtonClass: "bg-green-500 hover:bg-green-700 text-white font-normal py-2 px-4 rounded m-4", removeButtonLabel: "x", removeButtonClass: "bg-red-500 hover:bg-red-700 text-white font-normal py-2 px-4 rounded ml-2", tableTextInputClass: standardFieldClasses ~ " my-2", tableSelectInputClass: selectFieldClasses, tableCheckboxInputClass: checkboxFieldClasses ~ " m-1", tableLabelsClass: standardLabelsClasses }) }} {% elseif field.type == "cc_details" %} {# FOR FREEFORM PAYMENTS #} {{ field.renderLabel({ labelClass: labelClass, instructionsClass: instructionClass, errorClass: errorClass, }) }} {% for layoutRow in field.layoutRows %} {% set columnCount = layoutRow|length %} {% set columnClass = "w-full px-3 mb-6 md:mb-0" %} {% set columnClass = columnClass ~ form.customAttributes.columnClass %} {% if columnCount > 1 %} {% set columnClass = columnClass ~ " md:w-1/" ~ columnCount ~ " lg:w-1/" ~ columnCount ~ " xl:w-1/" ~ columnCount %} {% else %} {% set columnClass = columnClass ~ " md:w-full lg:w-full xl:w-full" %} {% endif %} {% for layoutField in layoutRow %} {% set fieldClass = "appearance-none block w-full bg-gray-100 text-gray-700 border border-gray-200 rounded py-3 px-4 leading-tight focus:outline-none focus:bg-white focus:border-gray-500" ~ (field.hasErrors ? " border-red-500") %}
{{ layoutField.render({ class: (loop.parent.loop.last ? fieldClass: fieldClass ~ " mb-6"), instructionsClass: instructionClass, instructionsBelowField: true, labelClass: labelClass, errorClass: errorClass, }) }}
{% endfor %} {% endfor %} {{ field.renderInput({ instructionsClass: instructionClass, instructionsBelowField: true, labelClass: labelClass, errorClass: errorClass, }) }} {{ field.renderInstructions }} {{ field.renderErrors }} {% else %} {{ field.render({ class: fieldClass, labelClass: labelClass, instructionsClass: instructionClass, instructionsBelowField: true, errorClass: errorClass, }) }} {% endif %} {# Close a column except when creating Freeform Payments columns #} {% if field.type != 'cc_details' %}
{% endif %} {% endfor %}
{% endfor %} {{ form.renderClosingTag }}