'dialog' mode was introduced as part of this work:
https://github.com/alphagov/notifications-admin/pull/2682
It lets multiple elements sticky to the viewport
together so a set of UI can be present for a set
scrolling range. It's called a 'dialog' because
the behaviour is closest to that of a modal
dialog.
This includes the following fixes:
1. fix error in `WindowMock.setWidthTo`
It was returning height, not width.
2. Fix for `WindowMock.reset`
Changes to the scroll position need to go
through the `scrollTo` method.
It also includes the following changes
1. Improve mocking of window scrollTop
Increases the number of DOM API methods mocked
to return the intended scrollTop value.
2. Change WindowMock.scrollBy to
WindowMock.scrollTo
Because you're not scrolling by an amount,
you're scrolling to a position.
3. Give WindowMock getters for position/dimension
It's useful to be able to get the
position/dimension of the window in tests when
you're resizing and scrolling it as part of the
test.
4. Assign WindowMock spies on instantiation
Assigning them whenever a dimension is set doesn't
make sense. You're just setting a value, not
changing how that value is accessed.
To add the text from an element to the clipboard
you need to:
1. get the current Selection
1. create a Range from the contents of the element
2. clear any existing Ranges from the Selection
and add the new Range to the selection
3. execute the 'copy' command
To track calls to all the DOM APIs involved in
this we need mocks for Range and Selection.
Range:
https://developer.mozilla.org/en-US/docs/Web/API/Range
Selection:
https://developer.mozilla.org/en-US/docs/Web/API/Selection
Also includes a base class to help building out
Web API interface mocks.
Extends triggerEvent, allowing the creation of
different types of event, and to change the data
on its object. Also fakes the positional data
browsers add to the event object.
Also adds helpers for simulating:
- all the events for a mouse click
- the events invovled in moving the selection in a radio group