Inputs Date Range

Contents

    <div class="dpr-date-range" data-dpr-module="date-range-input">
      <fieldset class="govuk-fieldset">
        <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">
          Date-range
        </legend>
    
        <div id='dpr-date-range' data-field-name='field3'>
    
          <div class="dpr-daterange__start-end-date-wrapper">
    
            <div class="dpr-daterange__start-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="Start date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.start">
                      From
                    </label>
    
                    <div id="filters.field3.start-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.start" name="filters.field3.start" type="text" value="01/02/2003" aria-describedby="filters.field3.start-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
              </div>
    
            </div>
    
            <div class="dpr-daterange__end-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="End date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.end">
                      To
                    </label>
    
                    <div id="filters.field3.end-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.end" name="filters.field3.end" type="text" value="04/05/2007" aria-describedby="filters.field3.end-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
              </div>
    
            </div>
          </div>
    
        </div>
    
      </fieldset>
    </div>
    

Nunjucks macro options

Name Type Required Description
data object Yes Data object. See filter.
parameterPrefix string no The prefix to apply to the filter parameters in the page URL
mandatory boolean no default: false

Filter

Name Type Required Description
text string Yes The title of the field
name string Yes The unique ID of the input
value object Yes Data object. See Value.
min string No The min date in format YYYY-MM-DD
max string No The max date in format YYYY-MM-DD

Value

Name Type Required Description
start string Yes The start date in format YYYY-MM-DD
end string Yes The end date in format YYYY-MM-DD

    {%- from "dpr/components/_inputs/date-range/view.njk" import dprDateRange %}
    
    {{ dprDateRange(
      {
        text: "Date-range",
        name: "field3",
        value:{
          start: "2003-02-01",
          end: "2007-05-04"
        }
      },
      'filterPrefix',
      false
    ) }}

Overview

The DPR multiselect component is composite of the MOJ design system date picker component.

When to use

Use the daterange component when you need to help users:

  • Select a start and end date
  • Select a date range within a min and max range
  • Select a date range within a relative range

When not to use

Do not use this component when you need a single date.

How to use

Basic Date Range

Contents

    <div class="dpr-date-range" data-dpr-module="date-range-input">
      <fieldset class="govuk-fieldset">
        <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">
          Date-range
        </legend>
    
        <div id='dpr-date-range' data-field-name='field3'>
    
          <div class="dpr-daterange__start-end-date-wrapper">
    
            <div class="dpr-daterange__start-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="Start date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.start">
                      From
                    </label>
    
                    <div id="filters.field3.start-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.start" name="filters.field3.start" type="text" value="01/02/2003" aria-describedby="filters.field3.start-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
              </div>
    
            </div>
    
            <div class="dpr-daterange__end-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="End date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.end">
                      To
                    </label>
    
                    <div id="filters.field3.end-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.end" name="filters.field3.end" type="text" value="04/05/2007" aria-describedby="filters.field3.end-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
              </div>
    
            </div>
          </div>
    
        </div>
    
      </fieldset>
    </div>
    

Nunjucks macro options

Name Type Required Description
data object Yes Data object. See filter.
parameterPrefix string no The prefix to apply to the filter parameters in the page URL
mandatory boolean no default: false

Filter

Name Type Required Description
text string Yes The title of the field
name string Yes The unique ID of the input
value object Yes Data object. See Value.
min string No The min date in format YYYY-MM-DD
max string No The max date in format YYYY-MM-DD

Value

Name Type Required Description
start string Yes The start date in format YYYY-MM-DD
end string Yes The end date in format YYYY-MM-DD

    {%- from "dpr/components/_inputs/date-range/view.njk" import dprDateRange %}
    
    {{ dprDateRange(
      {
        text: "Date-range",
        name: "field3",
        value:{
          start: "2003-02-01",
          end: "2007-05-04"
        }
      },
      'filterPrefix',
      false
    ) }}

Min and Max dates

Contents

    <div class="dpr-date-range" data-dpr-module="date-range-input">
      <fieldset class="govuk-fieldset">
        <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">
          Date-range, with min and max
        </legend>
    
        <div id='dpr-date-range' data-field-name='field3'>
    
          <div class="dpr-daterange__start-end-date-wrapper">
    
            <div class="dpr-daterange__start-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="Start date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="2003-02-01" data-max="2007-05-04" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="01/02/2003" data-max-date="04/05/2007">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.start">
                      From
                    </label>
    
                    <div id="filters.field3.start-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.start" name="filters.field3.start" type="text" value="01/02/2003" aria-describedby="filters.field3.start-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
                <div class="daterange-set-to-minmax__container">
    
                  <a class="govuk-body-s daterange-set-to-minmax" data-set-to-input='filters.field3.start' data-set-min-max-value=01/02/2003 data-set-min-max-trigger='true' href="#">
                    Set value to minimum date: 01/02/2003
                  </a>
    
                </div>
    
              </div>
    
            </div>
    
            <div class="dpr-daterange__end-date">
    
              <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="End date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="2003-02-01" data-max="2007-05-04" data-pattern-hint="DD/MM/YYYY">
    
                <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="01/02/2003" data-max-date="04/05/2007">
    
                  <div class="govuk-form-group">
                    <label class="govuk-label" for="filters.field3.end">
                      To
                    </label>
    
                    <div id="filters.field3.end-hint" class="govuk-hint">
                      For example 17/05/2024.
                    </div>
    
                    <input class="govuk-input moj-js-datepicker-input " id="filters.field3.end" name="filters.field3.end" type="text" value="04/05/2007" aria-describedby="filters.field3.end-hint" autocomplete="off">
    
                  </div>
    
                </div>
    
                <div class="daterange-set-to-minmax__container">
    
                  <a class="govuk-body-s daterange-set-to-minmax" data-set-to-input='filters.field3.end' data-set-min-max-value=04/05/2007 data-set-min-max-trigger='true' href="#">
                    Set value to maximum date: 04/05/2007
                  </a>
    
                </div>
    
              </div>
    
            </div>
          </div>
    
        </div>
    
      </fieldset>
    </div>
    

Nunjucks macro options

Name Type Required Description
data object Yes Data object. See filter.
parameterPrefix string no The prefix to apply to the filter parameters in the page URL
mandatory boolean no default: false

Filter

Name Type Required Description
text string Yes The title of the field
name string Yes The unique ID of the input
value object Yes Data object. See Value.
min string No The min date in format YYYY-MM-DD
max string No The max date in format YYYY-MM-DD

Value

Name Type Required Description
start string Yes The start date in format YYYY-MM-DD
end string Yes The end date in format YYYY-MM-DD

    {%- from "dpr/components/_inputs/date-range/view.njk" import dprDateRange %}
    
    {{ dprDateRange(
      {
        text: "Date-range, with min and max",
        name: "field3",
        value:{
          start: "2003-02-01",
          end: "2007-05-04"
        },
        min: "2003-02-01",
        max: "2007-05-04"  
      },
      'filterPrefix',
      false
    ) }}

Relative Date Range

Contents

    <div class="dpr-date-range" data-dpr-module="date-range-input">
      <fieldset class="govuk-fieldset">
        <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">
          Relative Date range picker
        </legend>
    
        <div class="govuk-tabs" data-module="govuk-tabs">
          <h2 class="govuk-tabs__title">
            Contents
          </h2>
    
          <ul class="govuk-tabs__list">
    
            <li class="govuk-tabs__list-item govuk-tabs__list-item--selected">
              <a class="govuk-tabs__tab" href="#date-picker">
                Date range
              </a>
            </li>
    
            <li class="govuk-tabs__list-item">
              <a class="govuk-tabs__tab" href="#relative-range">
                Preset date ranges
              </a>
            </li>
    
          </ul>
    
          <div class="govuk-tabs__panel" id="date-picker">
    
            <div id='dpr-date-range' data-field-name='relative-date-range-picker'>
    
              <div class="dpr-daterange__start-end-date-wrapper">
    
                <div class="dpr-daterange__start-date">
    
                  <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="Start date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                    <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                      <div class="govuk-form-group">
                        <label class="govuk-label" for="filters.relative-date-range-picker.start">
                          From
                        </label>
    
                        <div id="filters.relative-date-range-picker.start-hint" class="govuk-hint">
                          For example 17/05/2024.
                        </div>
    
                        <input class="govuk-input moj-js-datepicker-input " id="filters.relative-date-range-picker.start" name="filters.relative-date-range-picker.start" type="text" value="01/02/2003" aria-describedby="filters.relative-date-range-picker.start-hint" autocomplete="off">
    
                      </div>
    
                    </div>
    
                  </div>
    
                </div>
    
                <div class="dpr-daterange__end-date">
    
                  <div class="dpr-date" data-dpr-module="date-input" data-required="false" data-display-name="End date" data-pattern="\d{1,2}\/\d{1,2}\/\d{2,4}" data-min="1977-05-25" data-max="9999-01-01" data-pattern-hint="DD/MM/YYYY">
    
                    <div class="moj-datepicker" data-module="moj-date-picker" data-min-date="25/05/1977" data-max-date="01/01/9999">
    
                      <div class="govuk-form-group">
                        <label class="govuk-label" for="filters.relative-date-range-picker.end">
                          To
                        </label>
    
                        <div id="filters.relative-date-range-picker.end-hint" class="govuk-hint">
                          For example 17/05/2024.
                        </div>
    
                        <input class="govuk-input moj-js-datepicker-input " id="filters.relative-date-range-picker.end" name="filters.relative-date-range-picker.end" type="text" value="04/05/2007" aria-describedby="filters.relative-date-range-picker.end-hint" autocomplete="off">
    
                      </div>
    
                    </div>
    
                  </div>
    
                </div>
              </div>
    
            </div>
    
          </div>
    
          <div class="govuk-tabs__panel govuk-tabs__panel--hidden" id="relative-range">
    
            <div class="govuk-form-group govuk-!-margin-bottom-3 dpr-relative-range-radio">
    
              <fieldset class="govuk-fieldset">
    
                <legend class="govuk-fieldset__legend govuk-label govuk-!-font-weight-bold">
    
                  Preset date range
    
                </legend>
    
                <div class="govuk-radios govuk-radios--small" display-name="Preset date range" data-module="govuk-radios">
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration" name="filters.relative-date-range-picker.relative-duration" type="radio" value="">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration">
                      None
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-2" name="filters.relative-date-range-picker.relative-duration" type="radio" value="yesterday">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-2">
                      Yesterday
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-3" name="filters.relative-date-range-picker.relative-duration" type="radio" value="tomorrow">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-3">
                      Tomorrow
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-4" name="filters.relative-date-range-picker.relative-duration" type="radio" value="last-week">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-4">
                      Last week
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-5" name="filters.relative-date-range-picker.relative-duration" type="radio" value="next-week">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-5">
                      Next week
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-6" name="filters.relative-date-range-picker.relative-duration" type="radio" value="last-month">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-6">
                      Last month
                    </label>
    
                  </div>
    
                  <div class="govuk-radios__item">
                    <input class="govuk-radios__input" id="filters.relative-date-range-picker.relative-duration-7" name="filters.relative-date-range-picker.relative-duration" type="radio" value="next-month">
                    <label class="govuk-label govuk-radios__label" for="filters.relative-date-range-picker.relative-duration-7">
                      Next-month
                    </label>
    
                  </div>
    
                </div>
    
              </fieldset>
    
            </div>
    
          </div>
    
        </div>
    
      </fieldset>
    </div>
    

Nunjucks macro options

Name Type Required Description
data object Yes Data object. See filter.
parameterPrefix string no The prefix to apply to the filter parameters in the page URL
mandatory boolean no default: false

Filter

Name Type Required Description
text string Yes The title of the field
name string Yes The unique ID of the input
value object Yes Data object. See Value.
min string No The min date in format YYYY-MM-DD
max string No The max date in format YYYY-MM-DD

Value

Name Type Required Description
start string Yes The start date in format YYYY-MM-DD
end string Yes The end date in format YYYY-MM-DD

    {%- from "dpr/components/_inputs/date-range/view.njk" import dprDateRange %}
    
    {{ dprDateRange(
      {
        text: "Relative Date range picker",
        name: "relative-date-range-picker",
        value:{
          start: "2003-02-01",
          end: "2007-05-04"
        },
        relativeOptions: [
          { value: null, text: 'None' },
          { value: 'yesterday', text: 'Yesterday' },
          { value: 'tomorrow', text: 'Tomorrow' },
          { value: 'last-week', text: 'Last week' },
          { value: 'next-week', text: 'Next week' },
          { value: 'last-month', text: 'Last month' },
          { value: 'next-month', text: 'Next-month' }
        ]
      },
      'filters.',
      false
    ) }}