Remove whitespace from copy to clipboard component

If there is whitespace in the element containing the value to be copied
then Firefox[1] includes that space in the value it puts in the clipboard.

This is obviously annoying since `foo-bar` might be a valid API key where
`foo-bar ` is not.

This commit fixes that by using the `-` in Jinja to gobble whitespace.

I also looked at doing this in the Javascript, but the browser API for
selecting some text and copying it doesn’t give an obvious place for
using `String.prototype.trim()`.

1. Tested with Firefox 100.0 on Mac OS 12.2.1
This commit is contained in:
Chris Hill-Scott
2022-05-05 15:25:35 +01:00
parent b4b7ecb2aa
commit c6fb0e6694
2 changed files with 4 additions and 3 deletions

View File

@@ -6,7 +6,7 @@
{% endif %}
<div data-module="copy-to-clipboard" data-value="{{ value }}" data-thing="{{ thing }}" data-name="{{ name }}">
<span class="copy-to-clipboard__value">
{% if name|lower != thing|lower %}<span class="govuk-visually-hidden">{{ thing }}: </span>{% endif %}{{ value }}
{%- if name|lower != thing|lower %}<span class="govuk-visually-hidden">{{ thing }}: </span>{% endif %}{{ value -}}
</span>
<span class="copy-to-clipboard__notice" aria-live="assertive"></span>
</div>

View File

@@ -281,8 +281,9 @@ def test_should_create_api_key_with_type_normal(
_expected_status=200,
)
assert page.select_one('span.copy-to-clipboard__value').text.strip() == (
'some_default_key_name_12-{}-{}'.format(SERVICE_ONE_ID, fake_uuid)
assert page.select_one('span.copy-to-clipboard__value').text == (
# The text should be exactly this, with no leading or trailing whitespace
f'some_default_key_name_12-{SERVICE_ONE_ID}-{fake_uuid}'
)
post.assert_called_once_with(url='/service/{}/api-key'.format(SERVICE_ONE_ID), data={