Example 01
Small modal
UCASDesignFramework.modal.showModal('ExampleModal01')
This is a lightweight modal dialog with minimal markup designed to be as easy to implement as possible.
The only markup required is this:
<div id="ExampleModal01" data-modal-state="hidden" class="modal-container">
<div tabindex="-1" role="dialog" aria-labelledby="ExampleModal01Label" class="modal">
<!-- Content goes here. -->
</div>
</div>
See the examples below for more complex modals.
Please note: this must be the last node within the body tag to maintain the z-index context. Also the aria-labelledby
attribute's value should match the ID of a descriptive element from the modal markup.
To show a modal in response to a click event on a trigger button, pass the event to UCASDesignFramework.modal.showModal()
. Buttons that are marked up with data-modal-trigger
and data-modal-id
attributes will have a click handler that will do this added when UCASDesignFramework.modal.init()
is run.
For example:
<button class="button" data-modal-trigger data-modal-id="ExampleModal01">Example 01</button>
Alternatively, call UCASDesignFramework.modal.showModal()
and pass its ID and an element to return focus to (usually the trigger) when closing the modal.
UCASDesignFramework.modal.init() // Initialise modal plugin.
This is called when the page is loaded and attaches all event listeners and handles the open/close modal events.
UCASDesignFramework.modal.destroy() // Destroy modal plugin.
This removes all event listeners and closes any open modals, effectively disabling modal behaviour. To re-enable simply call UCASDesignFramework.modal.init()
UCASDesignFramework.modal.showModal("modal-id", returnFocusElement) // Displays the modal that has the given ID.
This will display the modal with the matching ID. If no argument is passed, nothing will happen.
If the user is using a keyboard for navigation, it will return focus to the returnFocusElement on closing the modal.
UCASDesignFramework.modal.hideModal() // Hide top open modal.
UCASDesignFramework.modal.hideModal("modal-id") // Hide modal with given ID.
This will hide the top most open modal. You may also supply an ID string as an argument which will close a specific modal.
Modals can also be referenced to make it easier to show/hide in code.
myLovelyModal = new UCASDesignFramework.modal.Modal("modal-1")
myLovelyModal.show()
myLovelyModal.hide()
<div id="ExampleModal01" data-modal-state="hidden" class="modal-container">
<div role="dialog" aria-labelledby="ExampleModal01Label" class="modal modal--small">
<header class="modal__header">
<h2 id="ExampleModal01Label">Example <span class="heading-alternative">01</span></h2>
</header>
<div class="modal__content">
<p>Quibusdam debitis fugiat quia aut a. animi ut autem est dolores mollitia sed officiis suscipit sit tempore laborum itaque consequatur. ut quos maiores pariatur dolor voluptates ipsa eos nemo ducimus non. nobis recusandae ullam eius ab quasi id minima sit. omnis qui dolor accusantium incidunt molestias delectus non a officiis sunt odio qui et eos. quia maxime vel laudantium velit alias accusamus ut voluptatem soluta quia.</p>
</div>
<footer class="modal__footer">
<div class="buttons">
<div class="buttons__group">
<!-- NOTE: form attribute doesn't work in IE, will require JavaScript. -->
<button class="button button--primary" type="submit" form="example-modal-01-form">Update</button>
<button class="button button--secondary" type="button" data-modal-close>Cancel</button>
</div>
</div>
</footer>
</div>
</div>
<!-- START login prompt modal component -->
<div id="LoginPromptModal" data-modal-state="hidden" class="modal-container modal-container--scroll">
<div role="dialog" aria-labelledby="LoginPromptModalLabel" class="modal modal--small">
<div class="modal__image modal__image--login"></div>
<div class="modal__content modal__content--login">
<h2 class="h4" id="LoginPromptModalLabel">Sign in <span class="heading-alternative">to favourite</span></h2>
<div class="grid grid--center">
<div class="grid__item">To add to your favourites you will need to sign in. If you don't have an account, please register to use all the features available.</div>
</div>
</div>
<footer class="modal__footer">
<div class="buttons">
<div class="buttons__group">
<a class="button button--primary" href="#">Sign in</a>
<a class="button button--secondary" href="#" data-modal-close>Cancel</a>
</div>
</div>
<p><small>Don't have an account yet? <a href="#">Sign up</a></small></p>
</footer>
</div>
</div>
<!-- END login prompt modal component -->
These example modals attempt to follow the modal accessibility guidelines from the W3C.
If testing with NVDA, you may find it is overly verbose. This is a known issue: NVDA repeats dialog content twice in Browsers
When using the keyboard, the modal open script will try to set focus on the following items in order:
data-modal-focus
attribute (see "Bank information" example).modal__content
(see "Add choice" example).modal__content
(see ".modal--error" example)Small modal
UCASDesignFramework.modal.showModal('ExampleModal01')
Small modal with lots of content
UCASDesignFramework.modal.showModal('ExampleModal02')
Medium modal
UCASDesignFramework.modal.showModal('ExampleModal03')
Uses theme-inverse
.
UCASDesignFramework.modal.showModal('ExampleModal04')
Uses theme-inverse
. No header.
UCASDesignFramework.modal.showModal('ExampleModal05')
UCASDesignFramework.modal.showModal('SearchFiltersModal')
UCASDesignFramework.modal.showModal('AddChoiceModal')
UCASDesignFramework.modal.showModal('BankInformationModal')
UCASDesignFramework.modal.showModal('ApplicationErrorModal')
UCASDesignFramework.modal.showModal('ErrorModal')
UCASDesignFramework.modal.showModal('SuccessModal')
UCASDesignFramework.modal.showModal('WarningModal')
UCASDesignFramework.modal.showModal('InformationModal')
UCASDesignFramework.modal.showModal('IconModal')
If this is needed on non .v5
pages add .v5-modal
to body instead.
UCASDesignFramework.modal.showModal('LoginPromptModal')
Est eos commodi non asperiores in in deserunt. labore temporibus commodi eos atque illo ullam maxime quisquam quia at est. voluptates quam nam eligendi assumenda quam praesentium accusantium sed et quae aspernatur perspiciatis. deleniti vero iusto dolor voluptatem dolorem quia quos corporis sed in iste quaerat aut.
Ipsa voluptas et quam voluptates sit. non eum vero labore eum fugiat quia maiores alias sequi rerum. vero temporibus sit repellat ut aliquid. magnam quo sed consequuntur quae dolore placeat sunt eum iure harum Iure est eaque est sunt repudiandae nemo dolorum cumque ab. porro sit vero possimus saepe aperiam aut ipsum laboriosam inventore excepturi natus enim odio nisi. sint dolorum sit illo. dolore ut quidem nesciunt saepe et sint labore dolores. sint nulla velit fuga eum quis quae quo sequi suscipit ullam. aperiam consequatur suscipit aperiam et. adipisci dolore voluptatem atque sapiente nam Quis ullam doloremque accusamus. et doloremque a dolorem et eos sit qui aliquam in. modi et incidunt maxime inventore sint. expedita sapiente quia ut sed rerum necessitatibus harum et blanditiis quis. accusantium omnis eveniet molestiae ratione ipsum laborum impedit quia quas voluptatem. ad reiciendis nihil perferendis amet quasi corrupti consequuntur asperiores Distinctio eum enim est nulla similique necessitatibus voluptates et. excepturi minima eius quae voluptatem necessitatibus dolores voluptatibus vel tenetur exercitationem et. temporibus iusto ut voluptatem repudiandae unde. ut eligendi totam culpa repudiandae asperiores nostrum aut quisquam quia Architecto atque neque saepe magnam ut laudantium sunt id molestias assumenda est. illo soluta reprehenderit molestiae velit ea velit magnam in assumenda non exercitationem ea voluptatem. provident qui aut nesciunt consequatur eveniet est adipisci assumenda distinctio ratione maxime consequatur Quasi et sunt temporibus repudiandae cupiditate voluptate natus soluta recusandae qui nihil. illo nobis ea modi soluta perspiciatis inventore assumenda ut est blanditiis rerum occaecati voluptatum. sit dolor blanditiis minus enim nobis natus. pariatur sunt praesentium hic eum dolor occaecati iste blanditiis quis quo. quae ut quasi distinctio dolorem rem Cupiditate omnis maxime architecto hic enim molestiae voluptates adipisci fugit excepturi omnis. molestias dicta excepturi molestiae voluptatibus magnam veritatis non est libero quia et ex necessitatibus. dolores dolorum dolorem omnis nemo ut illum dolor sit sed. aut culpa et quis reprehenderit quaerat occaecati autem quaerat nulla aut expedita accusamus accusantium. itaque animi ex ullam omnis odit enim ipsam veritatis sit consequatur aspernatur quo ducimus. velit consequuntur explicabo sed dolores iure quia nihil rem sit mollitia ex officiis. eos sunt minima quidem accusamus neque sit rem inventore nemo Aut distinctio molestiae nam maiores nostrum repudiandae voluptatem voluptates dolore iusto. vel sint iure quibusdam. non ipsum et suscipit.
ExampleModal01 comes before ExampleModal03 in the source order but should appear above in terms of z-index.
Here are your UCAS status codes – they’ll make opening a student bank account quick and easy.
4-Digit Code: 7064
16-Digit Code: 2051787148672738
Once your place has been confirmed you will be able to use them to quickly open your student bank account.