|
13 | 13 | alpine_disabled_expr (optional) — Alpine expression to conditionally disable the textarea |
14 | 14 | alpine_x_model (optional) — Alpine state property to two-way bind via x-model (e.g. "linkDescription") |
15 | 15 | alpine_at_input (optional) — Alpine expression for the @input handler (e.g. "onLinkDescriptionEdited($event)") |
| 16 | + char_counter_max (optional) — when set together with alpine_x_model, renders a live "N left" counter next to the label and sets maxlength on the textarea |
16 | 17 | required (optional) — if truthy, adds required attribute |
17 | 18 | disabled (optional) — if truthy, adds disabled attribute |
18 | 19 | extra_class (optional) — additional classes on the wrapper |
|
23 | 24 | <div class="field field--textarea{% if error %} field--error{% endif %}{% if extra_class %} {{ extra_class }}{% endif %}" |
24 | 25 | {% if alpine_error %}:class="{ 'field--error': {{ alpine_error }} }"{% endif %}> |
25 | 26 | {% if label %} |
| 27 | + {% if char_counter_max and alpine_x_model %} |
| 28 | + <div class="create-post-page__field-header"> |
| 29 | + <label class="field__label" for="field-{{ fid }}">{{ label }}</label> |
| 30 | + <span class="create-post-page__char-counter" aria-hidden="true" x-text="({{ char_counter_max }} - ({{ alpine_x_model }} ? {{ alpine_x_model }}.length : 0)).toLocaleString() + ' left'">{{ char_counter_max }} left</span> |
| 31 | + </div> |
| 32 | + {% else %} |
26 | 33 | <label class="field__label" for="field-{{ fid }}">{{ label }}</label> |
27 | 34 | {% endif %} |
| 35 | + {% endif %} |
28 | 36 | <div class="field__control field__control--textarea{% if disabled %} field__control--disabled{% endif %}"> |
29 | 37 | <textarea |
30 | 38 | class="field__input field__input--textarea" |
31 | 39 | id="field-{{ fid }}" |
32 | 40 | name="{{ name }}" |
33 | 41 | rows="{{ rows|default:4 }}" |
| 42 | + {% if char_counter_max %}maxlength="{{ char_counter_max }}"{% endif %} |
34 | 43 | {% if placeholder %}placeholder="{{ placeholder }}"{% endif %} |
35 | 44 | {% if required %}required{% endif %} |
36 | 45 | {% if disabled %}disabled{% endif %} |
|
0 commit comments