{% from "../textarea/macro.njk" import moalandTextarea %}
{% from "../hint/macro.njk" import moalandHint %}

<div class="moaland-character-count" data-module="moaland-character-count"
{%- if params.maxlength %} data-maxlength="{{ params.maxlength }}"{% endif %}
{%- if params.threshold %} data-threshold="{{ params.threshold }}"{% endif %}
{%- if params.maxwords %} data-maxwords="{{ params.maxwords }}"{% endif %}>
  {{ moalandTextarea({
    id: params.id,
    name: params.name,
    describedBy: params.id + '-info',
    rows: params.rows,
    spellcheck: params.spellcheck,
    value: params.value,
    formGroup: params.formGroup,
    classes: 'moaland-js-character-count' + (' moaland-textarea--error' if params.errorMessage) + (' ' + params.classes if params.classes),
    label: {
      html: params.label.html,
      text: params.label.text,
      classes: params.label.classes,
      isPageHeading: params.label.isPageHeading,
      attributes: params.label.attributes,
      for: params.id
    },
    hint: params.hint,
    errorMessage: params.errorMessage,
    attributes: params.attributes
  }) }}
  {{ moalandHint({
    text: 'You can enter up to ' + (params.maxlength or params.maxwords) + (' words' if params.maxwords else ' characters'),
    id: params.id + '-info',
    classes: 'moaland-character-count__message' + (' ' + params.countMessage.classes if params.countMessage.classes),
    attributes: {
      'aria-live': 'polite'
    }
  }) }}
</div>
