fix: Handle dynamic values in `a11y-autocomplete-valid` (#8567)

Fixes #8562
Fixes #8565
pull/8571/head
Simon H 2 years ago committed by GitHub
parent 4537eb77bb
commit b6288ecdb7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -1,5 +1,9 @@
# Svelte changelog # Svelte changelog
## 3.59.1 (Unreleased)
* Handle dynamic values in `a11y-autocomplete-valid` ([#8567](https://github.com/sveltejs/svelte/pull/8567))
## 3.59.0 ## 3.59.0
* Add `ResizeObserver` bindings `contentRect`/`contentBoxSize`/`borderBoxSize`/`devicePixelContentBoxSize` ([#8022](https://github.com/sveltejs/svelte/pull/8022)) * Add `ResizeObserver` bindings `contentRect`/`contentBoxSize`/`borderBoxSize`/`devicePixelContentBoxSize` ([#8022](https://github.com/sveltejs/svelte/pull/8022))

@ -164,7 +164,7 @@ export default {
}), }),
a11y_autocomplete_valid: (type: null | true | string, value: null | true | string) => ({ a11y_autocomplete_valid: (type: null | true | string, value: null | true | string) => ({
code: 'a11y-autocomplete-valid', code: 'a11y-autocomplete-valid',
message: `A11y: The value '${value}' is not supported by the attribute 'autocomplete' on element <input type="${type}">` message: `A11y: The value '${value}' is not supported by the attribute 'autocomplete' on element <input type="${type || '...'}">`
}), }),
a11y_img_redundant_alt: { a11y_img_redundant_alt: {
code: 'a11y-img-redundant-alt', code: 'a11y-img-redundant-alt',

@ -857,7 +857,7 @@ export default class Element extends Node {
const type_value = type.get_static_value(); const type_value = type.get_static_value();
const autocomplete_value = autocomplete.get_static_value(); const autocomplete_value = autocomplete.get_static_value();
if (!is_valid_autocomplete(type_value, autocomplete_value)) { if (!is_valid_autocomplete(autocomplete_value)) {
component.warn(autocomplete, compiler_warnings.a11y_autocomplete_valid(type_value, autocomplete_value)); component.warn(autocomplete, compiler_warnings.a11y_autocomplete_valid(type_value, autocomplete_value));
} }
} }

@ -290,9 +290,11 @@ const autofill_contact_field_name_tokens = new Set([
'impp' 'impp'
]); ]);
export function is_valid_autocomplete(type: null | true | string, autocomplete: null | true | string) { export function is_valid_autocomplete(autocomplete: null | true | string) {
if (typeof autocomplete !== 'string' || typeof type !== 'string') { if (autocomplete === true) {
return false; return false;
} else if (!autocomplete) {
return true; // dynamic value
} }
const tokens = autocomplete.trim().toLowerCase().split(regex_whitespaces); const tokens = autocomplete.trim().toLowerCase().split(regex_whitespaces);

@ -1,3 +1,7 @@
<script>
let dynamic = '';
</script>
<!-- VALID --> <!-- VALID -->
<input type="text" /> <input type="text" />
<input type="text" autocomplete="name" /> <input type="text" autocomplete="name" />
@ -14,6 +18,8 @@
<input type="hidden" autocomplete="off" /> <input type="hidden" autocomplete="off" />
<input type="hidden" autocomplete="on" /> <input type="hidden" autocomplete="on" />
<input type="text" autocomplete="" /> <input type="text" autocomplete="" />
<input type="{dynamic}" autocomplete="" />
<input type="text" autocomplete="{dynamic}" />
<!-- INVALID --> <!-- INVALID -->
<input type="text" autocomplete /> <input type="text" autocomplete />

@ -3,36 +3,36 @@
"code": "a11y-autocomplete-valid", "code": "a11y-autocomplete-valid",
"end": { "end": {
"column": 31, "column": 31,
"line": 19 "line": 25
}, },
"message": "A11y: The value 'true' is not supported by the attribute 'autocomplete' on element <input type=\"text\">", "message": "A11y: The value 'true' is not supported by the attribute 'autocomplete' on element <input type=\"text\">",
"start": { "start": {
"column": 19, "column": 19,
"line": 19 "line": 25
} }
}, },
{ {
"code": "a11y-autocomplete-valid", "code": "a11y-autocomplete-valid",
"end": { "end": {
"column": 43, "column": 43,
"line": 20 "line": 26
}, },
"message": "A11y: The value 'incorrect' is not supported by the attribute 'autocomplete' on element <input type=\"text\">", "message": "A11y: The value 'incorrect' is not supported by the attribute 'autocomplete' on element <input type=\"text\">",
"start": { "start": {
"column": 19, "column": 19,
"line": 20 "line": 26
} }
}, },
{ {
"code": "a11y-autocomplete-valid", "code": "a11y-autocomplete-valid",
"end": { "end": {
"column": 42, "column": 42,
"line": 21 "line": 27
}, },
"message": "A11y: The value 'webauthn' is not supported by the attribute 'autocomplete' on element <input type=\"text\">", "message": "A11y: The value 'webauthn' is not supported by the attribute 'autocomplete' on element <input type=\"text\">",
"start": { "start": {
"column": 19, "column": 19,
"line": 21 "line": 27
} }
} }
] ]

Loading…
Cancel
Save