WIP — The first option (used as a placeholder, even if not a valid value) should never be disabled

{{ aspExample({ code: "<div class=\"form__group\" id=\"select-example-1\">
<label class=\"form__label\" for=\"select-example-1-select\">Network</label>
<select class=\"form__input\" id=\"select-example-1-select\">
<option value=\"select\" id=\"select-example-1-placeholder\">Select Network</option>
<option value=\"ba\" id=\"select-example-1-ba\">BA</option>
<option value=\"br\" id=\"select-example-1-br\">BR</option>
<option value=\"me\" id=\"select-example-1-me\">ME</option>
<option value=\"ns\" id=\"select-example-1-ns\">NS</option>
<option value=\"sg\" id=\"select-example-1-sg\">SG</option>
<option value=\"ss\" id=\"select-example-1-ss\">SS</option>
<option value=\"ws\" id=\"select-example-1-ws\">WS</option>
</select>
</div>", nunjucks: "", title: "", id: "663ce167c4caa", url: "" }) }}

Select with hint

{{ aspExample({ code: "<div class=\"form__group\" id=\"select-example-2\">
<label class=\"form__label\" for=\"select-example-2-select\">Network</label>
<p class=\"from__hint\">Hint</p>
<select class=\"form__input\" id=\"select-example-2-select\">
<option value=\"select\" id=\"select-example-2-placeholder\">Select Network</option>
<option value=\"ba\" id=\"select-example-2-ba\">BA</option>
<option value=\"br\" id=\"select-example-2-br\">BR</option>
<option value=\"me\" id=\"select-example-2-me\">ME</option>
<option value=\"ns\" id=\"select-example-2-ns\">NS</option>
<option value=\"sg\" id=\"select-example-2-sg\">SG</option>
<option value=\"ss\" id=\"select-example-2-ss\">SS</option>
<option value=\"ws\" id=\"select-example-2-ws\">WS</option>
</select>
</div>", nunjucks: "", title: "", id: "663ce167c4d65", url: "" }) }}

Select with submission error

{{ aspExample({ code: "<div class=\"form__group form__group–error\" id=\"select-example-3\">
<label class=\"form__label\" for=\"select-example-3-select\">Network</label>
<p class=\"form__error-message\">\"Network\" is required</p>
<select class=\"form__input form__input–error\" id=\"select-example-3-select\">
<option value=\"select\" id=\"select-example-3-placeholder\">Select Network</option>
<option value=\"ba\" id=\"select-example-3-ba\">BA</option>
<option value=\"br\" id=\"select-example-3-br\">BR</option>
<option value=\"me\" id=\"select-example-3-me\">ME</option>
<option value=\"ns\" id=\"select-example-3-ns\">NS</option>
<option value=\"sg\" id=\"select-example-3-sg\">SG</option>
<option value=\"ss\" id=\"select-example-3-ss\">SS</option>
<option value=\"ws\" id=\"select-example-3-ws\">WS</option>
</select>
</div>", nunjucks: "", title: "", id: "663ce167c4db3", url: "" }) }}

Select with hint and submission error

{{ aspExample({ code: "<div class=\"form__group form__group–error\" id=\"select-example-4\">
<label class=\"form__label\" for=\"select-example-4-select\">Network</label>
<p class=\"from__hint form__hint–error\">Hint</p>
<p class=\"form__error-message\">\"Network\" is required</p>
<select class=\"form__input form__input–error\" id=\"select-example-4-select\">
<option value=\"select\" id=\"select-example-4-placeholder\">Select Network</option>
<option value=\"ba\" id=\"select-example-4-ba\">BA</option>
<option value=\"br\" id=\"select-example-4-br\">BR</option>
<option value=\"me\" id=\"select-example-4-me\">ME</option>
<option value=\"ns\" id=\"select-example-4-ns\">NS</option>
<option value=\"sg\" id=\"select-example-4-sg\">SG</option>
<option value=\"ss\" id=\"select-example-4-ss\">SS</option>
<option value=\"ws\" id=\"select-example-4-ws\">WS</option>
</select>
</div>", nunjucks: "", title: "", id: "6670121deafd2", url: "" }) }}

Select with conditional required text input

{{ aspExample({ code: "<div class=\"form__group\" id=\"select-additional-example-1\">
<label class=\"form__label\" for=\"select-additional-example-1-select\">Network</label>
<p class=\"form__hint\">Select \"Other\" to show conditional required text input</p>
<select class=\"form__input\" id=\"select-additional-example-1-select\">
<option value=\"select\" id=\"placeholder\">Select Network</option>
<option value=\"ba\">BA</option>
<option value=\"br\">BR</option>
<option value=\"me\">ME</option>
<option value=\"ns\">NS</option>
<option value=\"sg\">SG</option>
<option value=\"ss\">SS</option>
<option value=\"ws\">WS</option>
<option value=\"other\">Other</option>
</select>
<div class=\"form__indent\" data-parent-select-value=\"other\" data-child-required>
<div class=\"form__group\" id=\"select-additional-example-1-child\">
<label class=\"form__label\" for=\"select-additional-example-1-other\">Location <noscript>(required if \"Network\" is \"Other\")</noscript></label>
<input class=\"form__input\" id=\"select-additional-example-1-other\" type=\"text\">
</div>
</div>
</div>", nunjucks: "", title: "", id: "667a7643370c7", url: "" }) }}

WIP – noscript text (required if “Question” is “Option to reveal conditional content”)

Select with conditional optional textarea

{{ aspExample({ code: "<div class=\"form__group\" id=\"select-additional-example-2\">
<label class=\"form__label\" for=\"select-additional-example-2-select\">Network</label>
<p class=\"form__hint\">Select \"Other\" to show conditional optional textarea</p>
<select class=\"form__input\" id=\"select-additional-example-2-select\">
<option value=\"select\" id=\"placeholder\">Select Network</option>
<option value=\"ba\">BA</option>
<option value=\"br\">BR</option>
<option value=\"me\">ME</option>
<option value=\"ns\">NS</option>
<option value=\"sg\">SG</option>
<option value=\"ss\">SS</option>
<option value=\"ws\">WS</option>
<option value=\"other\">Other</option>
</select>
<div class=\"form__indent\" data-parent-select-value=\"other\">
<div class=\"form__group\" id=\"select-additional-example-2-child\">
<label class=\"form__label\" for=\"select-additional-example-2-other\">Describe location (optional)</label>
<textarea class=\"form__textarea\" id=\"select-additional-example-2-other\" name=\"text-area\" rows=\"6\" maxlength=\"3000\" data-countdown></textarea>
<p id=\"select-additional-example-2-other-countdown\">You can enter up to 3000 characters</p>
</div>
</div>
</div>", nunjucks: "", title: "", id: "668e7bdb7a393", url: "" }) }}

Select with conditional optional textarea (experimental)

{{ aspExample({ code: "<div class=\"form__group\" id=\"select-additional-example-3\">
<label class=\"form__label\" for=\"select-additional-example-3-select\">Network</label>
<p class=\"form__hint\">Select \"Other\" to show conditional optional textarea</p>
<select class=\"form__input\" id=\"select-additional-example-3-select\">
<option value=\"select\" id=\"select-additional-example-3-placeholder\">Select Network</option>
<option value=\"ba\" id=\"select-additional-example-3-ba\">BA</option>
<option value=\"br\" id=\"select-additional-example-3-br\">BR</option>
<option value=\"me\" id=\"select-additional-example-3-me\">ME</option>
<option value=\"ns\" id=\"select-additional-example-3-ns\">NS</option>
<option value=\"sg\" id=\"select-additional-example-3-sg\">SG</option>
<option value=\"ss\" id=\"select-additional-example-3-ss\">SS</option>
<option value=\"ws\" id=\"select-additional-example-3-ws\">WS</option>
<option value=\"other\" id=\"select-additional-example-3-other\">Other</option>
</select>
<div class=\"form__indent\" data-parent=\"select-additional-example-3-other\">
<div class=\"form__group\" id=\"select-additional-example-3-child\">
<label class=\"form__label\" for=\"select-additional-example-3-textarea\">Describe location (optional)</label>
<textarea class=\"form__textarea\" id=\"select-additional-example-3-textarea\" name=\"text-area\" rows=\"6\" maxlength=\"3000\" data-countdown></textarea>
<p id=\"select-additional-example-3-textarea-countdown\">You can enter up to 3000 characters</p>
</div>
</div>
</div>", nunjucks: "", title: "", id: "668d4c0e2417d", url: "" }) }}

When to use this component

WIP – When there are 8 or more options and only one available selection. This is based on Millers’ Law (Ask JS).

When not to use this component

WIP – Use radios if there is 6 or less options and only one available selection.

If a user has the option to select more than one option, use a check box group.

This component can be added within a conditional question.

Technical notes

WIP – Do not use “disabled” attributes (usually for the first option, utilised as a placeholder). This causes the contrast on desktops on some browsers to have a weak contrast between background (light grey) and text (white) colours. Instead; remove disabled options and allow for user to input that option with error messaging as a fall back.

Other variants

See Radios for conditional text input / select / textarea options. Also hint and errors within conditional content

Status of development

The below criteria all need to be met for a component to be considered as fully developed for use within the ASP Digital Design System.


{{ aspTable({
head: [
{ text: 'Development criteria'},
{ text: 'Status'}
],
rows: [
{
cells: [
{ text: 'WCAG 2.2 compliant'},
{ html: '<span class="status">Not started</span>'}
]
},
{
cells: [
{ text: 'WCAG 2.1 compliant'},
{ html: '<span class="status status–green">Completed</span>'}
]
},
{
cells: [
{ text: 'HTML / Nunjucks version'},
{ html: '<span class="status status–yellow">In Progress</span>'}
]
},
{
cells: [
{ text: 'Figma version'},
{ html: '<span class="status status">Not started</span>'}
]
},
{
cells: [
{ text: 'M365 versions'},
{ html: '<span class="status status">Not started</span>'}
]
},
{
cells: [
{ text: 'Documentation'},
{ html: '<span class="status status–yellow">In progress</span>'}
]
}
]
}) }}