Inputs Autocomplete
Contents
<div class="dpr-autocomplete-text-input" data-dpr-module="autocomplete-text-input">
<div class="govuk-form-group">
<label class="govuk-label govuk-!-font-weight-bold dpr-inline-label" for="people">
People
</label>
<div id="people-hint" class="govuk-hint">
(Optional)
</div>
<div class="govuk-input__wrapper">
<input class="govuk-input autocomplete-text-input-box govuk-input--width-20" id="people" name="people" type="search" aria-describedby="people-hint" autocomplete="off" aria-autocomplete="list" aria-expanded="false" aria-owns="people-list" haspopup="true" data-minimum-length="" data-resource-endpoint="" placeholder="Search" role="combobox" pattern="" display-name="People">
<div class="govuk-input__suffix" aria-hidden="true">🔍</div>
</div>
</div>
<div id="people-list" class="autocomplete-text-input-list">
<ul role="listbox" aria-label="Autocomplete options">
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Magnar Azure
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Quinctus Zainabu
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Paraskevi Munroe
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Gundega Johanneke
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Konjit Taina
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Lennie Alma
</button>
</li>
<li class="autocomplete-text-input-item-hide">
<button type="submit" class="govuk-button govuk-button--inverse autocomplete-text-input-list-button" data-module="govuk-button" data-parent-input="people" data-static-option-name-value="">
Murad Ali
</button>
</li>
</ul>
</div>
</div>
Nunjucks macro options
Name | Type | Required | Description |
---|---|---|---|
id | string | Yes | A unique identifier for the input. |
name | string | Yes | The name of the input. |
value | string | No | The current value of this input. |
labelText | string | No | The text of the label displayed above this input. |
items | array | No | A static list of options to choose from. See Items. This is ignored if the dynamic resource endpoint is set. |
minimumLength | number | No | The minimum length of text before options are fetched/displayed. |
dynamicResourceEndpoint | string | No | The API endpoint to call to fetch the dynamic values. This should contain a {prefix} token to be replaced by the current text value when the request is made. |
Items
Name | Type | Required | Description |
---|---|---|---|
text | String | Yes | The value to be displayed and returned for the option. |
{%- from "dpr/components/_inputs/autocomplete-text-input/view.njk" import dprAutocompleteTextInput -%}
{{ dprAutocompleteTextInput({
id: 'people',
name: 'people',
items: [
{ text: 'Magnar Azure' },
{ text: 'Quinctus Zainabu' },
{ text: 'Paraskevi Munroe' },
{ text: 'Gundega Johanneke' },
{ text: 'Konjit Taina' },
{ text: 'Lennie Alma' },
{ text: 'Murad Ali' }
],
labelText: 'People',
minimumlength: 1
}) }}
Overview
When to use
Use this component when users need to choose from a large set of options. Either populated statically, or dynamically from a remote API endpoint.
Example uses:
- Choosing an establishment name.
- Searching for a post code.
- Searching for a person's name.
When not to use
Do not use this component for a small set of options, or where discovery of the available options is important. In these cases a Radio input of similar may be a better option.