Commit Graph
100 Commits
Author SHA1 Message Date
Tom Byers 9e6daecba3 Merge pull request #3610 from alphagov/fix-pill-tab-problems
Fix pill tab problems
2020-09-08 14:51:12 +01:00
Tom Byers 58ad6fe4c7 Remove pill-item__label--selected class
It was used to mark labels of selected items when
we thought they might need extra styling but is
now redundant.
2020-09-08 11:46:32 +01:00
Tom Byers 452e253e2c Make the selected pill item a link
All other navigations have their selected item as
a link so we should match this.

Includes changes to the pill CSS so:
1. it doesn't use elements in the selectors
2. all the selectors use BEM

I did 2. because I had to change the
classes/selectors anyway, they might as well match
the style GOVUK Design System uses.
2020-09-04 16:17:04 +01:00
Tom Byers c6711a113c Update h1 on pill pages to work with new pill
Pill pages are:
- /notifications
- /template-usage
- /monthly
- /organisations/<organisation_id>
- /templates

Includes changes to:
- the folder-path component
- the page-header component

...all their h1s have the same id.
2020-09-04 09:02:36 +01:00
Tom Byers 48902a2bac Give all h1s an id 2020-09-04 09:02:36 +01:00
Tom Byers 9598d3a97b Change pills from tabs to navigation
Changes the HTML to do the following:
- remove all tabs semantics
- give the list a role of navigation
- label the navigation with the h1
- mark the selected item with aria-current
2020-09-04 09:02:36 +01:00
Tom Byers 3bebb1fbfd Merge pull request #3607 from alphagov/add-missing-closing-tag
Add missing `</span>`
2020-09-02 16:05:59 +01:00
Tom Byers d9655f16f5 Add missing </span>
Missed out from this PR:

https://github.com/alphagov/notifications-admin/pull/3593
2020-09-02 15:53:49 +01:00
Tom Byers afb8669b2f Merge pull request #3597 from alphagov/fix-pill-spacing-2nd-attempt
Fix spacing in pill items
2020-09-02 11:16:40 +01:00
Tom Byers 0560066638 Change mixins-before-declarations Sass-lint rule
We write our Sass to be mobile-first, meaning we
declare the value for a property (for mobile) and
then add all other variations (for other
viewports) afterwards.

Because of this, we need mixins that produce media
queries to be able to follow declarations.

This extension to the rule is also hinted at as
good practice in the docs:

https://gitlab.skotty.io/forks/sass-lint/blob/7847511b61b3ca01a86a8870c00b5a7fca94bac5/docs/rules/mixins-before-declarations.md
2020-09-02 10:59:31 +01:00
Tom Byers 676a9297fe Merge pull request #3593 from alphagov/fix-link-and-button-text-across-pages
Fix link and button text across pages
2020-09-01 15:11:09 +01:00
Tom Byers 457c3336b9 Merge pull request #3603 from alphagov/fix-template-id-copy-to-clipboard
Fix comparison in api_key component
2020-08-28 13:56:58 +01:00
Tom Byers aff584b933 Fix comparison in api_key component
We can't control the case of either 'name' or
'thing' so the comparison should make them both
the same.
2020-08-28 13:07:38 +01:00
Tom Byers d446a91a8e Merge pull request #3591 from alphagov/fix-copy-to-clipboard
Fix copy to clipboard
2020-08-28 10:58:36 +01:00
Tom Byers 70007fcb8f Fix spacing in pill items
At maximum zoom, the text in the items gets
cropped horizontally.

This removes the padding on their containers to
give them more space and, instead, puts it on the
content items instead.

Left-aligned content still needs some padding on
the left-hand side but centrally-aligned can grow
into the whole space.

This also reduces the padding applied below 420px
width or when the screen is zoomed below 300%.
Above that, our content needs more space between
items but below that, the space allocated to the
content is more important.
2020-08-26 16:20:43 +01:00
Tom Byers c12b7cbb5d Fix tests from changes to link text 2020-08-26 10:10:21 +01:00
Tom Byers e42adecd07 Add context to service settings links 2020-08-25 21:27:03 +01:00
Tom Byers aa0b21b8f6 Add context to Send button on template page 2020-08-25 20:54:35 +01:00
Tom Byers aacac232bf Add context to 'Cancel invitation' links 2020-08-25 20:52:45 +01:00
Tom Byers 5bc36a813d Add context to 'Edit' link on template page 2020-08-25 20:52:24 +01:00
Tom Byers f608d5e979 Add context to banner button text
Needs flash messaging system changes.
2020-08-25 20:52:21 +01:00
Tom Byers 0933485995 Add context to 'Move' button on /templates
Includes adding an extra parameter to the
page_footer component.
2020-08-25 20:52:21 +01:00
Tom Byers a52aa406df Add context to template page 'Send' and 'Edit' 2020-08-25 20:52:21 +01:00
Tom Byers 334c2677dc Add context to 'Hide' button in cookie banner 2020-08-25 20:52:21 +01:00
Tom Byers 3fe7fd7367 Add context to 'Change details' links on /users 2020-08-25 20:52:21 +01:00
Tom Byers 8b6069d717 Fix python tests 2020-08-25 16:03:14 +01:00
Tom Byers c3e32b7f95 Fix JS tests 2020-08-25 16:03:01 +01:00
Tom Byers 04160800f0 Update call to api_key component across pages
Includes the following pages:
- letter contact (in service settings)
- sms-senders page (in service settings)
- email reply-to (in service settings)
- API key page

Note: the call on the letter contact page uses
the first line of the contact address as the
unique identifier for each button.
2020-08-25 10:54:42 +01:00
Tom Byers a0e78e6102 Changes to API key component
Changes the interface so:
- `name` is a required argument
- the heading is only shown if `name` and `thing`
  match

These changes reflect a pattern observed in how
the component is used in pages.

It's first worth stating what the `thing` and
`name` arguments are.

`thing` is the type of thing the id is, for
example an reply-to email address.
`name` is which one of that type in the page, for
example the reply-to email address for user 1.

In pages where the id is the only one of its type,
these will have the same value.

When it is the only one of its type in a page, it
always has a heading so this makes the heading
appear based on `name` matching `thing`.
2020-08-25 10:54:42 +01:00
Tom Byers 7fd034a83f Change how live region works with API key JS
Includes implementation of new code on Reply-to
email addresses page.

The existing code put the live region on the
module element so the id and button were
read out when the state changed.

The report from the Digital Accessibility Centre
(DAC) said screenreader users were confused by the
content changing because it wasn't announced.

These changes attempt to make the state changes
clearer by:
1. moving the live region out into a separate
  element so we can better control what is
  announced
2. adding hidden text around to the button and text
  above (sometimes the id, sometimes the 'Copied
  to clipboard' text) to give more context

When the id is copied to clipboard, the button
changes but this is not announced as the
live-region text takes precedence (due to being
set to 'assertive'). Because of this, hidden text
has been added in change 2 to explain what the new
button does.
2020-08-25 10:54:42 +01:00
Tom Byers 8659e46828 Remove skiplink & fix table caption on bulk send
error pages

The skiplink in those pages is in the error summary
at the top. In this case, it seems redundant
because:
- it jumps to a section of the page just below it
- the section it would jump to is the only error
  on the page

Because of this, and because The Digital
Accessibility Centre (DAC) reported that the
skiplinks in these pages may not be needed, we
decided to remove it.

This commit also adds a prefix to the table caption to
indicate that it only contains the errors from the
CSV, not the rest of its contents.
2020-08-19 11:29:17 +01:00
Tom Byers 5220e1fbcb Merge pull request #3571 from alphagov/fix-fix-for-pill-spacing
Replace horizontal padding on pill items
2020-08-13 12:47:39 +01:00
Tom Byers 661c8c130c Replace horizontal padding on pill items
If the text isn't centrally aligned, it is needed.
2020-08-13 11:58:35 +01:00
Tom Byers d8355be6fc Add comment explaining use of textbox for tel 2020-08-13 11:40:09 +01:00
Tom Byers 222bb864bc Remove horizontal padding for pill items
This gives the contents of each item more space
which is useful on smaller screens or at higher
zoom levels.

Each item still has a 2px border so is prevented
from its contents touching those of the other
items. They are also flex-items, set to occupy a
quarter of the available space so will removing
this padding will not effect their width.
2020-08-12 11:32:55 +01:00
Tom Byers bff07c10b1 Convert IntegerFields to GovukIntegerFields
Changes those fields in the following forms:
- FreeSMSAllowance
- ProviderForm
- ProviderRatioForm
- ServiceDataRetentionEditForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 97ddc7923a Add GovukIntegerField - extends IntegerField 2020-08-12 10:34:51 +01:00
Tom Byers c715681f5c Convert DateFields to GovukDateFields
Changes those fields in the following forms:
- DateFilterForm
- RequiredDateFilterForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 8faca47152 Add GovukDateField - extends DateField 2020-08-12 10:34:51 +01:00
Tom Byers 3f7142b3e2 Update fields on ServiceLetterBrandingDetails
Changes its StringField to GovukTextInputField.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers a22b8cf684 Update ForgivingIntegerField
Makes it inherit from GovukTextInputField.

Changes to govuk_field_widget to allow the value
attribute to be set by passing a value keyword
argument to the __call__ method.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 11dcd87115 Update ServiceContactDetailsForm with new fields
Changes its:
- StringFields to GovukTextInputFields
- EmailFields to GovukEmailFields

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 880a0a3318 Update CreateKeyForm to new fields
Changes its StringFields to GovukTextInputFields.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 949aa3a9bd Update CreateServiceForm with new fields
Changes its StringField to GovukTextInputField.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers 9457ba206a Convert BaseTemplateForm to use new fields
Updates StringField to GovukTextInputField.

These changes also affect the following forms that
inherit from BaseTemplateForm:
- SMSTemplateForm
- EmailTemplateForm

Includes changes to templates that use these forms
and associated tests.
2020-08-12 10:34:51 +01:00
Tom Byers d21b9475ba Convert SearchFields to GovukSearchFields
Changes those fields in the following forms:
- SearchByNameForm
- SearchUsersByEmailForm
- SearchUsersForm
- SearchNotificationsForm

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:50 +01:00
Tom Byers f95d57cfde Add GovukSearchField - extends SearchField 2020-08-12 10:34:50 +01:00
Tom Byers 427b01999c Update UKMobileNumber & InternationalPhoneNumber
Changes those classes so they have the same
interface as a GOVUK field when instantiated and
render GovukTextInputField HTML.

Includes changes to templates that use this form
and associated tests.
2020-08-12 10:34:50 +01:00
Tom Byers 7e771a5fa1 Add GovukEmailField - extends EmailField 2020-08-12 10:23:43 +01:00
Tom Byers 139616a0a9 Add data attributes to send errors to analytics 2020-08-12 10:23:43 +01:00
Tom Byers e316e33180 Convert PasswordFields to GovukPasswordFields
Converts them directly in the following forms:
- LoginForm
- ConfirmPasswordForm

Changes the password function to return
GovukPasswordField instead of PasswordField which
effects the following forms:
- RegisterUserForm
- RegisterUserFromInviteForm
- RegisterUserFromOrgInviteForm
- NewPasswordForm
- ChangePasswordForm

It also updates StringField on RegisterUserFromOrgInviteForm
to GovukTextInputField

Also includes changes to templates that use this
form and associated tests.
2020-08-12 10:23:43 +01:00
Tom Byers 5cbf57e1fb Add GovukPasswordField - extends PasswordField
Also adds it to the list of fields
StripWhitespaceForm skips when processing field
data.
2020-08-12 10:22:20 +01:00
Tom Byers a3e661830d Convert text inputs on ServiceUpdateEmailBranding
Includes changes to templates that use this form
and associated tests.
2020-08-12 10:22:20 +01:00
Tom Byers 87beaf49ae Use GovukTextInputField in RenameServiceForm
Includes changes to templates that use this form
and associated tests.
2020-08-12 10:22:20 +01:00
Tom Byers 57d5f31be4 Add GovukTextInputField - extends StringField 2020-08-12 10:22:20 +01:00
Tom Byers 02514df9fa Bring in Jinja and Sass for text-input component 2020-08-12 10:22:20 +01:00
Tom Byers cd398ab55c Merge pull request #3543 from alphagov/remove-code-supporting-old-permissions-form_fields
Revert support for old user permissions params
2020-08-05 15:51:28 +01:00
Tom Byers a74501f1d8 Merge pull request #3535 from alphagov/try-introducing-govuk-checkboxes-again
Try introducing govuk checkboxes again
2020-08-04 14:39:54 +01:00
Tom Byers 468a43bd68 Revert support for old user permissions params
The fields used for user permissions on
permissions forms were changed as part of the work
converting the checkboxes to GOVUK Frontend.

This removes code added to protect against a
situation where the server-side app was running
this updated code but clients were POSTing from
pages that were not, and so sending the old HTTP
params.
2020-07-31 15:40:12 +01:00
Tom Byers 75bac87a4d Make permissions forms handle old/new params 2020-07-31 15:15:37 +01:00
Tom Byers e3c434bb8f Change permissions tests to support old API
User permissions were handled by a group of
BooleanFields but introducing the new checkboxes
changed this to just one field that stores its
data in a list.

It was mentioned in a comment that there could be
a situation, when the instances roll, where clients
are using the old fields but POSTing to a server
running the new code.

https://github.com/alphagov/notifications-admin/pull/3535#discussion_r460872903

This introduces tests for that situation.
2020-07-31 15:15:26 +01:00
Tom Byers f322229614 Change tests to check permissions_field name
A comment on this group of changes mentioned the
'name' attribute of checkboxes for the
permissions_field should be checked as well as the
'value' attribute:

https://github.com/alphagov/notifications-admin/pull/3535#discussion_r460869797

This adds checks to support that point.
2020-07-31 15:15:16 +01:00
Tom Byers e266b11ee2 Fix tests for pages using govukCheckboxField
These fields used to use govukCheckboxesField and
so stored their data in a list. They were since
migrated to govukCheckboxField, which extends
BooleanField and so keeps its data as a boolean
value.
2020-07-31 10:20:44 +01:00
Tom Byers 0d6ef2977d Merge pull request #3465 from alphagov/add-scroll-to-reveal-method
Add scroll to reveal element method
2020-07-24 14:21:15 +01:00
Tom Byers ca9b8a8ca3 Add analytics error tracking to checkbox fields
The existing macros added data attributes to any
error message displayed which communicated the
error to Google Analytics (if the user had given
consent).

This re-implements that functionality.
2020-07-24 11:34:02 +01:00
Tom Byers 01f84d5443 Convert checkboxes for broadcast areas
Includes removal of MultiCheckboxField due to it
no longer being used elsewhere in this file.
2020-07-24 11:34:02 +01:00
Tom Byers 64cc9f2520 Make tests work with new template list HTML
Adds the extra text added to each checkbox label.
It's a copy of the text of the link in the same
list item which does add a lot of duplication to
the test data.

This reformats a lot of the test data, stacking it
to separate out the duplicate items.
2020-07-24 11:34:02 +01:00
Tom Byers ee03753187 Make template-list checkbox label text match link
The checkboxes need an accessible name that
identifies the folder/template and this needs to
include their full path to avoid duplication.

There's a lot of debate about how to write out
breadcrumb/path syntax so this just puts all the
words together under the assumption that the
folder naming will describe the path (and to
introduce as little extra semantics as possible
to start with).
2020-07-24 11:34:02 +01:00
Tom Byers 0f9e4c813a Change HTML for template list items
Moves the link out of the label and increases
the hit-size for the checkbox. The intention is to
reduce the chance of clicking the wrong thing by
accident.

This includes a TODO in the checkboxes component
template code. The item meta needs to be
associated with the checkbox input by use of
`aria-describedby` but this needs changes in
govuk-frontend-jinja to happen.
2020-07-24 11:34:02 +01:00
Tom Byers e3753ae623 Fix issues in tests from new fields 2020-07-24 11:34:02 +01:00
Tom Byers c56a6a1117 Remove all unused checkbox macros and imports 2020-07-24 11:34:02 +01:00
Tom Byers c21f0940f9 Update all single field checkboxes
Includes adding some code to govukCheckboxesField
to add a single boolean-like option by default, if
there are no choices added.
2020-07-24 11:34:01 +01:00
Tom Byers 03240b21d5 Update templates page
Includes:
- changes to the govukCheckboxesField class
  to allow params to be extended at render time
- updates to templates and folders CSS
2020-07-24 11:34:01 +01:00
Tom Byers 3956d4f5fa Update manage folder page 2020-07-24 11:34:01 +01:00
Tom Byers 830aeae7b8 Update permissions page
Includes adding filtering to the user permissions
data.

Classes extending BasePermissionsForm have their
user permissions handled by permissions_field
which stores its data in a list. This replaces the
previous approach of having a BooleanField for
each role.

Because permissions_field.data is taken directly
from POST data, it needs extra guarding against
values not present in whatever roles model the
class is based on (ie. broadcast_permissions).
2020-07-24 11:34:01 +01:00
Tom Byers 2092a04547 Split common checkbox methods off into mixin 2020-07-24 11:34:01 +01:00
Tom Byers 38cc90a24b Add govukCheckboxField for single checkboxes
Single checkboxes are distinct because:
- they don't need to be wrapped in a `<fieldset>`
- they are a subclass of BooleanField so their
  data is either True or False
2020-07-24 11:34:01 +01:00
Tom Byers 3f79881864 Fix nested checkboxes with single top-level node
Nested checkboxes with a single top-level node
will only have one item in their `items` list.
This is because the other choices are children of
that list item.

This means we need to check the `choices`
attribute, which lists all the checkboxes, to see
if they should be marked as a group (by being
wrapped in a `<fieldset>`) or not.
2020-07-24 11:34:01 +01:00
Tom Byers 3ebb58219d Add govukCollapsibleNestedCheckboxesField
Includes:
1. changes to make NestedFieldMixin work
  with new fields and CSS for nested checkboxes
2. adds custom version of GOVUK checkboxes
  component to allow us to:
  - add classes to elements currently inaccessible
  - wrap the checkboxes in a list
  - add child checkboxes to each checkbox (making
    tree structures possible through recursion

Change 2. should be pushed upstream to the GOVUK
Design System as a proposal for changes to the
GOVUK Checkboxes component.
2020-07-24 11:34:01 +01:00
Tom Byers 38ad2e7e86 Add mixin & field to make collapsible checkboxes
Allows checkboxes to be collapsed so they take up
less space in the page. The collapsed state
includes a live summary tracking which of them are
selected.

Includes changes to the JS for collapsible
checkboxes to make it work with the GOVUK
Checkboxes component HTML.
2020-07-24 11:34:01 +01:00
Tom Byers 7b288ea51a Add govukCheckboxesField
govukCheckboxesField subclasses
SelectMultipleField and overwrites how it renders
HTML to let us use the GOVUK Checkboxes component
while retaining all the functionality of WTForms
fields.

Based on work on github.com/richardjpope/recourse:

https://github.com/richardjpope/recourse/blob/master/recourse/forms.py#L6
2020-07-24 11:34:01 +01:00
Tom Byers 0092ce122c Bring in Jinja and Sass for checkboxes component 2020-07-24 11:34:01 +01:00
Tom Byers e62fc846c7 Add test for scrollToRevealElement method 2020-07-17 11:57:19 +01:00
Tom Byers 413e3c4e81 Add scrollToRevealElement method to stickys API
When an element is obscured by the sticky nav,
this method allows you to scroll the page until it
is revealled.

The bulk of this code was added in: https://github.com/alphagov/notifications-admin/pull/2843
to ensure elements with focus were in view. This
moves that into a public method so, as well as
being called by the focus event handler, it can be
called directly by other code.

These changes include code that adds a
'sticky-scroll-area' class to scroll areas not
explicitly marked as such in the base HTML but
made to be a scroll area by the sticky JS.
2020-07-17 11:57:19 +01:00
Tom Byers 741ab9288f Add tests for 'data-show-now-as-default' on/off 2020-07-17 08:28:59 +01:00
Tom Byers b5360c14cc Lowercase value of 'show-now-as-default'
To match the boolean value in JavaScript.
2020-07-17 08:28:59 +01:00
Tom Byers e45bbcf99e Fix comparison of original categories with new
These tests make sure the sub-categories shown
when a category is selected are right but the
comparison looked for a direct match between the
labels for both types.

This looks for the category label in the
sub-category label instead, ie.

'Today at' in 'Today at 1pm'.

...instead of

'Today at' === 'Today at 1pm', which will always
fail.
2020-07-17 08:28:59 +01:00
Tom Byers 909f2d4678 Fix numbering on hours in radioSelect test 2020-07-17 08:28:59 +01:00
Tom Byers 636cb6825b Fix use of querySelector in radioSelect tests 2020-07-17 08:28:58 +01:00
Tom Byers 0f29b3d64c Merge pull request #3526 from alphagov/revert-3476-introduce-govuk-checkboxes
Revert "Re-introduce govuk checkboxes"
2020-07-15 14:03:04 +01:00
Tom Byers dfcddb757e Revert "Re-introduce govuk checkboxes" 2020-07-15 13:41:34 +01:00
Tom Byers 86f70ae9fa Merge pull request #3476 from alphagov/introduce-govuk-checkboxes
Re-introduce govuk checkboxes
2020-07-15 13:14:19 +01:00
Tom Byers 6ae9d15141 Add analytics error tracking to checkbox fields
The existing macros added data attributes to any
error message displayed which communicated the
error to Google Analytics (if the user had given
consent).

This re-implements that functionality.
2020-07-14 10:41:09 +01:00
Tom Byers 2ad0d5f18c Convert checkboxes for broadcast areas
Includes removal of MultiCheckboxField due to it
no longer being used elsewhere in this file.
2020-07-14 10:41:09 +01:00
Tom Byers 2b49e5eb7c Make tests work with new template list HTML
Adds the extra text added to each checkbox label.
It's a copy of the text of the link in the same
list item which does add a lot of duplication to
the test data.

This reformats a lot of the test data, stacking it
to separate out the duplicate items.
2020-07-14 10:41:09 +01:00
Tom Byers 67c27fff8c Make template-list checkbox label text match link
The checkboxes need an accessible name that
identifies the folder/template and this needs to
include their full path to avoid duplication.

There's a lot of debate about how to write out
breadcrumb/path syntax so this just puts all the
words together under the assumption that the
folder naming will describe the path (and to
introduce as little extra semantics as possible
to start with).
2020-07-14 10:41:09 +01:00
Tom Byers a99622aec5 Change HTML for template list items
Moves the link out of the label and increases
the hit-size for the checkbox. The intention is to
reduce the chance of clicking the wrong thing by
accident.

This includes a TODO in the checkboxes component
template code. The item meta needs to be
associated with the checkbox input by use of
`aria-describedby` but this needs changes in
govuk-frontend-jinja to happen.
2020-07-14 10:41:09 +01:00
Tom Byers 05088037d2 Fix issues in tests from new fields 2020-07-14 10:41:09 +01:00
Tom Byers 3b23ae46a7 Remove all unused checkbox macros and imports 2020-07-14 10:41:09 +01:00
Tom Byers d1ae3b812a Update all single field checkboxes
Includes adding some code to govukCheckboxesField
to add a single boolean-like option by default, if
there are no choices added.
2020-07-14 10:41:09 +01:00