add support for attr prefixing on custom field names
This commit is contained in:
parent
7723f64cf9
commit
aaeaeba4ee
2
jslib
2
jslib
|
@ -1 +1 @@
|
||||||
Subproject commit fa65b5637b5cd2e93b5d886584d6876c2c5eb571
|
Subproject commit 50d242e53a4b553a6cb3575945a84812eda75b1d
|
|
@ -870,6 +870,24 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||||
|
|
||||||
private findMatchingFieldIndex(field: AutofillField, names: string[]): number {
|
private findMatchingFieldIndex(field: AutofillField, names: string[]): number {
|
||||||
for (let i = 0; i < names.length; i++) {
|
for (let i = 0; i < names.length; i++) {
|
||||||
|
if (names[i].indexOf('=') > -1) {
|
||||||
|
if (this.fieldPropertyIsPrefixMatch(field, 'htmlID', names[i], 'id')) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
if (this.fieldPropertyIsPrefixMatch(field, 'htmlName', names[i], 'name')) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
if (this.fieldPropertyIsPrefixMatch(field, 'label-tag', names[i], 'label')) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
if (this.fieldPropertyIsPrefixMatch(field, 'label-aria', names[i], 'label')) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
if (this.fieldPropertyIsPrefixMatch(field, 'placeholder', names[i], 'placeholder')) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (this.fieldPropertyIsMatch(field, 'htmlID', names[i])) {
|
if (this.fieldPropertyIsMatch(field, 'htmlID', names[i])) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
@ -890,6 +908,16 @@ export default class AutofillService implements AutofillServiceInterface {
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fieldPropertyIsPrefixMatch(field: any, property: string, name: string, prefix: string,
|
||||||
|
separator = '='): boolean {
|
||||||
|
if (name.indexOf(prefix + separator) === 0) {
|
||||||
|
const sepIndex = name.indexOf(separator);
|
||||||
|
const val = name.substring(sepIndex + 1);
|
||||||
|
return val != null && this.fieldPropertyIsMatch(field, property, val);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
private fieldPropertyIsMatch(field: any, property: string, name: string): boolean {
|
private fieldPropertyIsMatch(field: any, property: string, name: string): boolean {
|
||||||
let fieldVal = field[property] as string;
|
let fieldVal = field[property] as string;
|
||||||
if (!this.hasValue(fieldVal)) {
|
if (!this.hasValue(fieldVal)) {
|
||||||
|
|
Loading…
Reference in New Issue