123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- export const autocomplete = {
- stateTerms: ['on', 'off'],
- standaloneTerms: [
- 'name',
- 'honorific-prefix',
- 'given-name',
- 'additional-name',
- 'family-name',
- 'honorific-suffix',
- 'nickname',
- 'username',
- 'new-password',
- 'current-password',
- 'organization-title',
- 'organization',
- 'street-address',
- 'address-line1',
- 'address-line2',
- 'address-line3',
- 'address-level4',
- 'address-level3',
- 'address-level2',
- 'address-level1',
- 'country',
- 'country-name',
- 'postal-code',
- 'cc-name',
- 'cc-given-name',
- 'cc-additional-name',
- 'cc-family-name',
- 'cc-number',
- 'cc-exp',
- 'cc-exp-month',
- 'cc-exp-year',
- 'cc-csc',
- 'cc-type',
- 'transaction-currency',
- 'transaction-amount',
- 'language',
- 'bday',
- 'bday-day',
- 'bday-month',
- 'bday-year',
- 'sex',
- 'url',
- 'photo',
- 'one-time-code'
- ],
- qualifiers: ['home', 'work', 'mobile', 'fax', 'pager'],
- qualifiedTerms: [
- 'tel',
- 'tel-country-code',
- 'tel-national',
- 'tel-area-code',
- 'tel-local',
- 'tel-local-prefix',
- 'tel-local-suffix',
- 'tel-extension',
- 'email',
- 'impp'
- ],
- locations: ['billing', 'shipping']
- };
- function isValidAutocomplete(
- autocompleteValue,
- {
- looseTyped = false,
- stateTerms = [],
- locations = [],
- qualifiers = [],
- standaloneTerms = [],
- qualifiedTerms = []
- } = {}
- ) {
- autocompleteValue = autocompleteValue.toLowerCase().trim();
- stateTerms = stateTerms.concat(autocomplete.stateTerms);
- if (stateTerms.includes(autocompleteValue) || autocompleteValue === '') {
- return true;
- }
- qualifiers = qualifiers.concat(autocomplete.qualifiers);
- locations = locations.concat(autocomplete.locations);
- standaloneTerms = standaloneTerms.concat(autocomplete.standaloneTerms);
- qualifiedTerms = qualifiedTerms.concat(autocomplete.qualifiedTerms);
- const autocompleteTerms = autocompleteValue.split(/\s+/g);
- if (!looseTyped) {
- if (
- autocompleteTerms[0].length > 8 &&
- autocompleteTerms[0].substr(0, 8) === 'section-'
- ) {
- autocompleteTerms.shift();
- }
- if (locations.includes(autocompleteTerms[0])) {
- autocompleteTerms.shift();
- }
- if (qualifiers.includes(autocompleteTerms[0])) {
- autocompleteTerms.shift();
- // only quantifiers allowed at this point
- standaloneTerms = [];
- }
- if (autocompleteTerms.length !== 1) {
- return false;
- }
- }
- const purposeTerm = autocompleteTerms[autocompleteTerms.length - 1];
- return (
- standaloneTerms.includes(purposeTerm) ||
- qualifiedTerms.includes(purposeTerm)
- );
- }
- export default isValidAutocomplete;
|