{# id, name and label are required variables #}
{% set styleModifier = styleModifier | default('') %}
{% set className = className | default('') %}
{% set classNames = {
input: inputModifier | default(''),
label: labelModifier | default(''),
error: errorModifier | default(''),
helpText: ''
} | merge(classNames | default({})) %}
{% set required = required | default(false) %}
{% set floating = floating | default(false) %}
{% set hideLabel = hideLabel | default(false) %}
{% set type = type | default('text') %}
{% set disabled = disabled | default(false) %}
{% set readonly = readonly | default(false) %}
{% set inputAttributes = inputAttributes | default({}) %}
{% set errors = errors | default([]) %}
{% set inputAttributes = inputAttributes
| merge(id is defined ? {id: id}: {})
| merge({type: type})
| merge(name is defined ? {name: name}: {})
| merge(placeholder is defined ? {placeholder: placeholder}: {})
| merge(floating and placeholder is not defined ? {placeholder: label}: {})
| merge(value is defined ? {value: value}: {})
| merge(required ? {required: ''}: {})
| merge(disabled ? {disabled: ''}: {})
| merge(readonly ? {readonly: ''}: {})
| merge(helpText is defined ? {'aria-describedby': id ~'-help-block'}: {}) %}
<div class="form-group
{{ (errors | length > 0) ? ' is-invalid': '' }}
{{ styleModifier ? ' ' ~ styleModifier : '' }}
{{ className ? ' ' ~ className : '' }}
{{ floating ? ' form-floating' }}">
{% block label %}
{% if floating is same as(false) and hideLabel is same as(false) %}
{{ include('includes/form/form-elements/form-control-label.html.twig', {
className:'form-label ' ~ classNames.label
}) }}
{% endif %}
{% endblock %}
{% block input %}
<input class="form-control{{ (errors | length > 0 )? ' is-invalid': '' }} {{ attribute(classNames, 'input') }}"
{% for key, value in inputAttributes %}
{{ key }}="{{ value }}"
{% endfor %}
>
{% endblock %}
{% block labelFloating %}
{% if floating is same as(true) and hideLabel is same as(false) %}
{{ include('includes/form/form-elements/form-control-label.html.twig', {
className:'form-label ' ~ classNames.label
}) }}
{% endif %}
{% endblock %}
{% block erros %}
{{ include('includes/form/form-elements/form-errors.html.twig', {
className:classNames.error
}) }}
{% endblock %}
{% block help %}
{{ include('includes/form/form-elements/form-control-help-text.html.twig', {
className:classNames.helpText
}) }}
{% endblock %}
</div>