intl-tel-input 25.4.8 → 25.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (146) hide show
  1. package/README.md +5 -5
  2. package/angular/build/IntlTelInput.js +258 -316
  3. package/angular/build/IntlTelInputWithUtils.js +472 -446
  4. package/angular/build/intl-tel-input.js +46 -12
  5. package/build/js/data.js +1 -1
  6. package/build/js/data.min.js +1 -1
  7. package/build/js/intlTelInput.js +38 -9
  8. package/build/js/intlTelInput.min.js +2 -2
  9. package/build/js/intlTelInputWithUtils.js +38 -9
  10. package/build/js/intlTelInputWithUtils.min.js +2 -2
  11. package/package.json +4 -4
  12. package/react/README.md +1 -1
  13. package/react/build/IntlTelInput.cjs +37 -8
  14. package/react/build/IntlTelInput.js +37 -8
  15. package/react/build/IntlTelInputWithUtils.cjs +37 -8
  16. package/react/build/IntlTelInputWithUtils.js +37 -8
  17. package/vue/README.md +1 -1
  18. package/vue/build/IntlTelInput.mjs +144 -135
  19. package/vue/build/IntlTelInputWithUtils.mjs +488 -479
  20. package/angular/build/IntlTelInput.cjs +0 -3358
  21. package/angular/build/IntlTelInput.d.ts +0 -1671
  22. package/angular/build/IntlTelInputWithUtils.cjs +0 -9732
  23. package/angular/build/intl-tel-input/angular.js +0 -205
  24. package/angular/build/intl-tel-input/angularWithUtils.js +0 -206
  25. package/angular/build/intl-tel-input/data.js +0 -1096
  26. package/angular/build/intl-tel-input/i18n/ar/countries.js +0 -245
  27. package/angular/build/intl-tel-input/i18n/ar/index.js +0 -5
  28. package/angular/build/intl-tel-input/i18n/ar/interface.js +0 -13
  29. package/angular/build/intl-tel-input/i18n/bg/countries.js +0 -245
  30. package/angular/build/intl-tel-input/i18n/bg/index.js +0 -5
  31. package/angular/build/intl-tel-input/i18n/bg/interface.js +0 -13
  32. package/angular/build/intl-tel-input/i18n/bn/countries.js +0 -245
  33. package/angular/build/intl-tel-input/i18n/bn/index.js +0 -5
  34. package/angular/build/intl-tel-input/i18n/bn/interface.js +0 -13
  35. package/angular/build/intl-tel-input/i18n/bs/countries.js +0 -245
  36. package/angular/build/intl-tel-input/i18n/bs/index.js +0 -5
  37. package/angular/build/intl-tel-input/i18n/bs/interface.js +0 -13
  38. package/angular/build/intl-tel-input/i18n/ca/countries.js +0 -245
  39. package/angular/build/intl-tel-input/i18n/ca/index.js +0 -5
  40. package/angular/build/intl-tel-input/i18n/ca/interface.js +0 -13
  41. package/angular/build/intl-tel-input/i18n/cs/countries.js +0 -245
  42. package/angular/build/intl-tel-input/i18n/cs/index.js +0 -5
  43. package/angular/build/intl-tel-input/i18n/cs/interface.js +0 -13
  44. package/angular/build/intl-tel-input/i18n/da/countries.js +0 -245
  45. package/angular/build/intl-tel-input/i18n/da/index.js +0 -5
  46. package/angular/build/intl-tel-input/i18n/da/interface.js +0 -13
  47. package/angular/build/intl-tel-input/i18n/de/countries.js +0 -245
  48. package/angular/build/intl-tel-input/i18n/de/index.js +0 -5
  49. package/angular/build/intl-tel-input/i18n/de/interface.js +0 -13
  50. package/angular/build/intl-tel-input/i18n/ee/countries.js +0 -245
  51. package/angular/build/intl-tel-input/i18n/ee/index.js +0 -5
  52. package/angular/build/intl-tel-input/i18n/ee/interface.js +0 -13
  53. package/angular/build/intl-tel-input/i18n/el/countries.js +0 -245
  54. package/angular/build/intl-tel-input/i18n/el/index.js +0 -5
  55. package/angular/build/intl-tel-input/i18n/el/interface.js +0 -13
  56. package/angular/build/intl-tel-input/i18n/en/countries.js +0 -245
  57. package/angular/build/intl-tel-input/i18n/en/index.js +0 -5
  58. package/angular/build/intl-tel-input/i18n/en/interface.js +0 -13
  59. package/angular/build/intl-tel-input/i18n/es/countries.js +0 -245
  60. package/angular/build/intl-tel-input/i18n/es/index.js +0 -5
  61. package/angular/build/intl-tel-input/i18n/es/interface.js +0 -13
  62. package/angular/build/intl-tel-input/i18n/fa/countries.js +0 -245
  63. package/angular/build/intl-tel-input/i18n/fa/index.js +0 -5
  64. package/angular/build/intl-tel-input/i18n/fa/interface.js +0 -13
  65. package/angular/build/intl-tel-input/i18n/fi/countries.js +0 -245
  66. package/angular/build/intl-tel-input/i18n/fi/index.js +0 -5
  67. package/angular/build/intl-tel-input/i18n/fi/interface.js +0 -13
  68. package/angular/build/intl-tel-input/i18n/fr/countries.js +0 -245
  69. package/angular/build/intl-tel-input/i18n/fr/index.js +0 -5
  70. package/angular/build/intl-tel-input/i18n/fr/interface.js +0 -13
  71. package/angular/build/intl-tel-input/i18n/hi/countries.js +0 -245
  72. package/angular/build/intl-tel-input/i18n/hi/index.js +0 -5
  73. package/angular/build/intl-tel-input/i18n/hi/interface.js +0 -13
  74. package/angular/build/intl-tel-input/i18n/hr/countries.js +0 -245
  75. package/angular/build/intl-tel-input/i18n/hr/index.js +0 -5
  76. package/angular/build/intl-tel-input/i18n/hr/interface.js +0 -13
  77. package/angular/build/intl-tel-input/i18n/hu/countries.js +0 -245
  78. package/angular/build/intl-tel-input/i18n/hu/index.js +0 -5
  79. package/angular/build/intl-tel-input/i18n/hu/interface.js +0 -13
  80. package/angular/build/intl-tel-input/i18n/id/countries.js +0 -245
  81. package/angular/build/intl-tel-input/i18n/id/index.js +0 -5
  82. package/angular/build/intl-tel-input/i18n/id/interface.js +0 -13
  83. package/angular/build/intl-tel-input/i18n/index.js +0 -40
  84. package/angular/build/intl-tel-input/i18n/it/countries.js +0 -245
  85. package/angular/build/intl-tel-input/i18n/it/index.js +0 -5
  86. package/angular/build/intl-tel-input/i18n/it/interface.js +0 -13
  87. package/angular/build/intl-tel-input/i18n/ja/countries.js +0 -245
  88. package/angular/build/intl-tel-input/i18n/ja/index.js +0 -5
  89. package/angular/build/intl-tel-input/i18n/ja/interface.js +0 -13
  90. package/angular/build/intl-tel-input/i18n/ko/countries.js +0 -245
  91. package/angular/build/intl-tel-input/i18n/ko/index.js +0 -5
  92. package/angular/build/intl-tel-input/i18n/ko/interface.js +0 -13
  93. package/angular/build/intl-tel-input/i18n/mr/countries.js +0 -245
  94. package/angular/build/intl-tel-input/i18n/mr/index.js +0 -5
  95. package/angular/build/intl-tel-input/i18n/mr/interface.js +0 -13
  96. package/angular/build/intl-tel-input/i18n/nl/countries.js +0 -245
  97. package/angular/build/intl-tel-input/i18n/nl/index.js +0 -5
  98. package/angular/build/intl-tel-input/i18n/nl/interface.js +0 -13
  99. package/angular/build/intl-tel-input/i18n/no/countries.js +0 -245
  100. package/angular/build/intl-tel-input/i18n/no/index.js +0 -5
  101. package/angular/build/intl-tel-input/i18n/no/interface.js +0 -13
  102. package/angular/build/intl-tel-input/i18n/pl/countries.js +0 -245
  103. package/angular/build/intl-tel-input/i18n/pl/index.js +0 -5
  104. package/angular/build/intl-tel-input/i18n/pl/interface.js +0 -24
  105. package/angular/build/intl-tel-input/i18n/pt/countries.js +0 -245
  106. package/angular/build/intl-tel-input/i18n/pt/index.js +0 -5
  107. package/angular/build/intl-tel-input/i18n/pt/interface.js +0 -13
  108. package/angular/build/intl-tel-input/i18n/ro/countries.js +0 -245
  109. package/angular/build/intl-tel-input/i18n/ro/index.js +0 -5
  110. package/angular/build/intl-tel-input/i18n/ro/interface.js +0 -13
  111. package/angular/build/intl-tel-input/i18n/ru/countries.js +0 -245
  112. package/angular/build/intl-tel-input/i18n/ru/index.js +0 -5
  113. package/angular/build/intl-tel-input/i18n/ru/interface.js +0 -13
  114. package/angular/build/intl-tel-input/i18n/sk/countries.js +0 -245
  115. package/angular/build/intl-tel-input/i18n/sk/index.js +0 -5
  116. package/angular/build/intl-tel-input/i18n/sk/interface.js +0 -13
  117. package/angular/build/intl-tel-input/i18n/sv/countries.js +0 -245
  118. package/angular/build/intl-tel-input/i18n/sv/index.js +0 -5
  119. package/angular/build/intl-tel-input/i18n/sv/interface.js +0 -13
  120. package/angular/build/intl-tel-input/i18n/te/countries.js +0 -245
  121. package/angular/build/intl-tel-input/i18n/te/index.js +0 -5
  122. package/angular/build/intl-tel-input/i18n/te/interface.js +0 -13
  123. package/angular/build/intl-tel-input/i18n/th/countries.js +0 -245
  124. package/angular/build/intl-tel-input/i18n/th/index.js +0 -5
  125. package/angular/build/intl-tel-input/i18n/th/interface.js +0 -13
  126. package/angular/build/intl-tel-input/i18n/tr/countries.js +0 -245
  127. package/angular/build/intl-tel-input/i18n/tr/index.js +0 -5
  128. package/angular/build/intl-tel-input/i18n/tr/interface.js +0 -13
  129. package/angular/build/intl-tel-input/i18n/types.js +0 -1
  130. package/angular/build/intl-tel-input/i18n/uk/countries.js +0 -245
  131. package/angular/build/intl-tel-input/i18n/uk/index.js +0 -5
  132. package/angular/build/intl-tel-input/i18n/uk/interface.js +0 -13
  133. package/angular/build/intl-tel-input/i18n/ur/countries.js +0 -245
  134. package/angular/build/intl-tel-input/i18n/ur/index.js +0 -5
  135. package/angular/build/intl-tel-input/i18n/ur/interface.js +0 -13
  136. package/angular/build/intl-tel-input/i18n/uz/countries.js +0 -245
  137. package/angular/build/intl-tel-input/i18n/uz/index.js +0 -5
  138. package/angular/build/intl-tel-input/i18n/uz/interface.js +0 -13
  139. package/angular/build/intl-tel-input/i18n/vi/countries.js +0 -245
  140. package/angular/build/intl-tel-input/i18n/vi/index.js +0 -5
  141. package/angular/build/intl-tel-input/i18n/vi/interface.js +0 -13
  142. package/angular/build/intl-tel-input/i18n/zh/countries.js +0 -245
  143. package/angular/build/intl-tel-input/i18n/zh/index.js +0 -5
  144. package/angular/build/intl-tel-input/i18n/zh/interface.js +0 -13
  145. package/angular/build/intl-tel-input/intlTelInputWithUtils.js +0 -4
  146. package/angular/build/intl-tel-input/utils.js +0 -1341
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intl-tel-input",
3
- "version": "25.4.8",
3
+ "version": "25.5.1",
4
4
  "description": "A JavaScript plugin for entering and validating international telephone numbers",
5
5
  "keywords": [
6
6
  "international",
@@ -147,11 +147,11 @@
147
147
  },
148
148
  "./angular": {
149
149
  "types": "./angular/build/types/intl-tel-input/angular.d.ts",
150
- "default": "./angular/build/intl-tel-input/angular.js"
150
+ "default": "./angular/build/IntlTelInput.js"
151
151
  },
152
152
  "./angularWithUtils": {
153
153
  "types": "./angular/build/types/intl-tel-input/angularWithUtils.d.ts",
154
- "default": "./angular/build/intl-tel-input/angularWithUtils.js"
154
+ "default": "./angular/build/IntlTelInputWithUtils.js"
155
155
  },
156
156
  "./i18n": {
157
157
  "types": "./build/js/intlTelInput.d.ts",
@@ -173,7 +173,7 @@
173
173
  "react/build/IntlTelInput.d.ts"
174
174
  ],
175
175
  "angular": [
176
- "angular/build/IntlTelInput.d.ts"
176
+ "angular/build/types/intl-tel-input/angular.d.ts"
177
177
  ]
178
178
  }
179
179
  }
package/react/README.md CHANGED
@@ -28,7 +28,7 @@ import "intl-tel-input/styles";
28
28
 
29
29
  See the [Validation demo](https://github.com/jackocnr/intl-tel-input/blob/master/react/demo/validation/ValidationApp.tsx) for a more fleshed-out example of how to handle validation.
30
30
 
31
- A note on the utils script (~260KB): if you're lazy loading the IntlTelInput chunk (and so less worried about filesize) then you can just import IntlTelInput from `"intl-tel-input/reactWithUtils"`, to include the utils script. Alternatively, if you use the main `"intl-tel-input/react"` import, then you should couple this with the `loadUtils` initialisation option - you will need to host the [utils.js](https://github.com/jackocnr/intl-tel-input/blob/master/build/js/utils.js) file, and then set the `loadUtils` option to that URL, or alternatively just point it to a CDN hosted version e.g. `"https://cdn.jsdelivr.net/npm/intl-tel-input@25.4.8/build/js/utils.js"`.
31
+ A note on the utils script (~260KB): if you're lazy loading the IntlTelInput chunk (and so less worried about filesize) then you can just import IntlTelInput from `"intl-tel-input/reactWithUtils"`, to include the utils script. Alternatively, if you use the main `"intl-tel-input/react"` import, then you should couple this with the `loadUtils` initialisation option - you will need to host the [utils.js](https://github.com/jackocnr/intl-tel-input/blob/master/build/js/utils.js) file, and then set the `loadUtils` option to that URL, or alternatively just point it to a CDN hosted version e.g. `"https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.1/build/js/utils.js"`.
32
32
 
33
33
  ## Props
34
34
  Here's a list of all of the current props you can pass to the IntlTelInput React component.
@@ -2008,7 +2008,7 @@ var Iti = class {
2008
2008
  if (separateDialCode) {
2009
2009
  this.selectedDialCode = createEl(
2010
2010
  "div",
2011
- { class: "iti__selected-dial-code" },
2011
+ { class: "iti__selected-dial-code", "aria-hidden": "true" },
2012
2012
  this.selectedCountry
2013
2013
  );
2014
2014
  }
@@ -2494,16 +2494,45 @@ var Iti = class {
2494
2494
  let noCountriesAddedYet = true;
2495
2495
  this.countryList.innerHTML = "";
2496
2496
  const normalisedQuery = normaliseString(query);
2497
+ const queryLength = normalisedQuery.length;
2498
+ const iso2Matches = [];
2499
+ const nameStartWith = [];
2500
+ const nameContains = [];
2501
+ const dialCodeMatches = [];
2502
+ const dialCodeContains = [];
2503
+ const initialsMatches = [];
2497
2504
  for (let i = 0; i < this.countries.length; i++) {
2498
2505
  const c = this.countries[i];
2499
2506
  const normalisedCountryName = normaliseString(c.name);
2500
2507
  const countryInitials = c.name.split(/[^a-zA-ZÀ-ÿа-яА-Я]/).map((word) => word[0]).join("").toLowerCase();
2501
- const fullDialCode = `+${c.dialCode}`;
2502
- if (isReset || normalisedCountryName.includes(normalisedQuery) || fullDialCode.includes(normalisedQuery) || c.iso2.includes(normalisedQuery) || countryInitials.includes(normalisedQuery)) {
2503
- const listItem = c.nodeById[this.id];
2504
- if (listItem) {
2505
- this.countryList.appendChild(listItem);
2506
- }
2508
+ if (isReset || queryLength === 0) {
2509
+ nameContains.push(c);
2510
+ } else if (c.iso2.toLowerCase() === normalisedQuery) {
2511
+ iso2Matches.push(c);
2512
+ } else if (normalisedCountryName.startsWith(normalisedQuery)) {
2513
+ nameStartWith.push(c);
2514
+ } else if (normalisedCountryName.includes(normalisedQuery)) {
2515
+ nameContains.push(c);
2516
+ } else if (normalisedQuery === c.dialCode || normalisedQuery === `+${c.dialCode}`) {
2517
+ dialCodeMatches.push(c);
2518
+ } else if (`+${c.dialCode}`.includes(normalisedQuery)) {
2519
+ dialCodeContains.push(c);
2520
+ } else if (countryInitials.includes(normalisedQuery)) {
2521
+ initialsMatches.push(c);
2522
+ }
2523
+ }
2524
+ const matchedCountries = [
2525
+ ...iso2Matches.sort((a, b) => a.priority - b.priority),
2526
+ ...nameStartWith.sort((a, b) => a.priority - b.priority),
2527
+ ...nameContains.sort((a, b) => a.priority - b.priority),
2528
+ ...dialCodeMatches.sort((a, b) => a.priority - b.priority),
2529
+ ...dialCodeContains.sort((a, b) => a.priority - b.priority),
2530
+ ...initialsMatches.sort((a, b) => a.priority - b.priority)
2531
+ ];
2532
+ for (const c of matchedCountries) {
2533
+ const listItem = c.nodeById[this.id];
2534
+ if (listItem) {
2535
+ this.countryList.appendChild(listItem);
2507
2536
  if (noCountriesAddedYet) {
2508
2537
  this._highlightListItem(listItem, false);
2509
2538
  noCountriesAddedYet = false;
@@ -3173,7 +3202,7 @@ var intlTelInput = Object.assign(
3173
3202
  attachUtils,
3174
3203
  startedLoadingUtilsScript: false,
3175
3204
  startedLoadingAutoCountry: false,
3176
- version: "25.4.8"
3205
+ version: "25.5.1"
3177
3206
  }
3178
3207
  );
3179
3208
  var intl_tel_input_default = intlTelInput;
@@ -1972,7 +1972,7 @@ var Iti = class {
1972
1972
  if (separateDialCode) {
1973
1973
  this.selectedDialCode = createEl(
1974
1974
  "div",
1975
- { class: "iti__selected-dial-code" },
1975
+ { class: "iti__selected-dial-code", "aria-hidden": "true" },
1976
1976
  this.selectedCountry
1977
1977
  );
1978
1978
  }
@@ -2458,16 +2458,45 @@ var Iti = class {
2458
2458
  let noCountriesAddedYet = true;
2459
2459
  this.countryList.innerHTML = "";
2460
2460
  const normalisedQuery = normaliseString(query);
2461
+ const queryLength = normalisedQuery.length;
2462
+ const iso2Matches = [];
2463
+ const nameStartWith = [];
2464
+ const nameContains = [];
2465
+ const dialCodeMatches = [];
2466
+ const dialCodeContains = [];
2467
+ const initialsMatches = [];
2461
2468
  for (let i = 0; i < this.countries.length; i++) {
2462
2469
  const c = this.countries[i];
2463
2470
  const normalisedCountryName = normaliseString(c.name);
2464
2471
  const countryInitials = c.name.split(/[^a-zA-ZÀ-ÿа-яА-Я]/).map((word) => word[0]).join("").toLowerCase();
2465
- const fullDialCode = `+${c.dialCode}`;
2466
- if (isReset || normalisedCountryName.includes(normalisedQuery) || fullDialCode.includes(normalisedQuery) || c.iso2.includes(normalisedQuery) || countryInitials.includes(normalisedQuery)) {
2467
- const listItem = c.nodeById[this.id];
2468
- if (listItem) {
2469
- this.countryList.appendChild(listItem);
2470
- }
2472
+ if (isReset || queryLength === 0) {
2473
+ nameContains.push(c);
2474
+ } else if (c.iso2.toLowerCase() === normalisedQuery) {
2475
+ iso2Matches.push(c);
2476
+ } else if (normalisedCountryName.startsWith(normalisedQuery)) {
2477
+ nameStartWith.push(c);
2478
+ } else if (normalisedCountryName.includes(normalisedQuery)) {
2479
+ nameContains.push(c);
2480
+ } else if (normalisedQuery === c.dialCode || normalisedQuery === `+${c.dialCode}`) {
2481
+ dialCodeMatches.push(c);
2482
+ } else if (`+${c.dialCode}`.includes(normalisedQuery)) {
2483
+ dialCodeContains.push(c);
2484
+ } else if (countryInitials.includes(normalisedQuery)) {
2485
+ initialsMatches.push(c);
2486
+ }
2487
+ }
2488
+ const matchedCountries = [
2489
+ ...iso2Matches.sort((a, b) => a.priority - b.priority),
2490
+ ...nameStartWith.sort((a, b) => a.priority - b.priority),
2491
+ ...nameContains.sort((a, b) => a.priority - b.priority),
2492
+ ...dialCodeMatches.sort((a, b) => a.priority - b.priority),
2493
+ ...dialCodeContains.sort((a, b) => a.priority - b.priority),
2494
+ ...initialsMatches.sort((a, b) => a.priority - b.priority)
2495
+ ];
2496
+ for (const c of matchedCountries) {
2497
+ const listItem = c.nodeById[this.id];
2498
+ if (listItem) {
2499
+ this.countryList.appendChild(listItem);
2471
2500
  if (noCountriesAddedYet) {
2472
2501
  this._highlightListItem(listItem, false);
2473
2502
  noCountriesAddedYet = false;
@@ -3137,7 +3166,7 @@ var intlTelInput = Object.assign(
3137
3166
  attachUtils,
3138
3167
  startedLoadingUtilsScript: false,
3139
3168
  startedLoadingAutoCountry: false,
3140
- version: "25.4.8"
3169
+ version: "25.5.1"
3141
3170
  }
3142
3171
  );
3143
3172
  var intl_tel_input_default = intlTelInput;
@@ -2008,7 +2008,7 @@ var Iti = class {
2008
2008
  if (separateDialCode) {
2009
2009
  this.selectedDialCode = createEl(
2010
2010
  "div",
2011
- { class: "iti__selected-dial-code" },
2011
+ { class: "iti__selected-dial-code", "aria-hidden": "true" },
2012
2012
  this.selectedCountry
2013
2013
  );
2014
2014
  }
@@ -2494,16 +2494,45 @@ var Iti = class {
2494
2494
  let noCountriesAddedYet = true;
2495
2495
  this.countryList.innerHTML = "";
2496
2496
  const normalisedQuery = normaliseString(query);
2497
+ const queryLength = normalisedQuery.length;
2498
+ const iso2Matches = [];
2499
+ const nameStartWith = [];
2500
+ const nameContains = [];
2501
+ const dialCodeMatches = [];
2502
+ const dialCodeContains = [];
2503
+ const initialsMatches = [];
2497
2504
  for (let i = 0; i < this.countries.length; i++) {
2498
2505
  const c = this.countries[i];
2499
2506
  const normalisedCountryName = normaliseString(c.name);
2500
2507
  const countryInitials = c.name.split(/[^a-zA-ZÀ-ÿа-яА-Я]/).map((word) => word[0]).join("").toLowerCase();
2501
- const fullDialCode = `+${c.dialCode}`;
2502
- if (isReset || normalisedCountryName.includes(normalisedQuery) || fullDialCode.includes(normalisedQuery) || c.iso2.includes(normalisedQuery) || countryInitials.includes(normalisedQuery)) {
2503
- const listItem = c.nodeById[this.id];
2504
- if (listItem) {
2505
- this.countryList.appendChild(listItem);
2506
- }
2508
+ if (isReset || queryLength === 0) {
2509
+ nameContains.push(c);
2510
+ } else if (c.iso2.toLowerCase() === normalisedQuery) {
2511
+ iso2Matches.push(c);
2512
+ } else if (normalisedCountryName.startsWith(normalisedQuery)) {
2513
+ nameStartWith.push(c);
2514
+ } else if (normalisedCountryName.includes(normalisedQuery)) {
2515
+ nameContains.push(c);
2516
+ } else if (normalisedQuery === c.dialCode || normalisedQuery === `+${c.dialCode}`) {
2517
+ dialCodeMatches.push(c);
2518
+ } else if (`+${c.dialCode}`.includes(normalisedQuery)) {
2519
+ dialCodeContains.push(c);
2520
+ } else if (countryInitials.includes(normalisedQuery)) {
2521
+ initialsMatches.push(c);
2522
+ }
2523
+ }
2524
+ const matchedCountries = [
2525
+ ...iso2Matches.sort((a, b) => a.priority - b.priority),
2526
+ ...nameStartWith.sort((a, b) => a.priority - b.priority),
2527
+ ...nameContains.sort((a, b) => a.priority - b.priority),
2528
+ ...dialCodeMatches.sort((a, b) => a.priority - b.priority),
2529
+ ...dialCodeContains.sort((a, b) => a.priority - b.priority),
2530
+ ...initialsMatches.sort((a, b) => a.priority - b.priority)
2531
+ ];
2532
+ for (const c of matchedCountries) {
2533
+ const listItem = c.nodeById[this.id];
2534
+ if (listItem) {
2535
+ this.countryList.appendChild(listItem);
2507
2536
  if (noCountriesAddedYet) {
2508
2537
  this._highlightListItem(listItem, false);
2509
2538
  noCountriesAddedYet = false;
@@ -3173,7 +3202,7 @@ var intlTelInput = Object.assign(
3173
3202
  attachUtils,
3174
3203
  startedLoadingUtilsScript: false,
3175
3204
  startedLoadingAutoCountry: false,
3176
- version: "25.4.8"
3205
+ version: "25.5.1"
3177
3206
  }
3178
3207
  );
3179
3208
  var intl_tel_input_default = intlTelInput;
@@ -1972,7 +1972,7 @@ var Iti = class {
1972
1972
  if (separateDialCode) {
1973
1973
  this.selectedDialCode = createEl(
1974
1974
  "div",
1975
- { class: "iti__selected-dial-code" },
1975
+ { class: "iti__selected-dial-code", "aria-hidden": "true" },
1976
1976
  this.selectedCountry
1977
1977
  );
1978
1978
  }
@@ -2458,16 +2458,45 @@ var Iti = class {
2458
2458
  let noCountriesAddedYet = true;
2459
2459
  this.countryList.innerHTML = "";
2460
2460
  const normalisedQuery = normaliseString(query);
2461
+ const queryLength = normalisedQuery.length;
2462
+ const iso2Matches = [];
2463
+ const nameStartWith = [];
2464
+ const nameContains = [];
2465
+ const dialCodeMatches = [];
2466
+ const dialCodeContains = [];
2467
+ const initialsMatches = [];
2461
2468
  for (let i = 0; i < this.countries.length; i++) {
2462
2469
  const c = this.countries[i];
2463
2470
  const normalisedCountryName = normaliseString(c.name);
2464
2471
  const countryInitials = c.name.split(/[^a-zA-ZÀ-ÿа-яА-Я]/).map((word) => word[0]).join("").toLowerCase();
2465
- const fullDialCode = `+${c.dialCode}`;
2466
- if (isReset || normalisedCountryName.includes(normalisedQuery) || fullDialCode.includes(normalisedQuery) || c.iso2.includes(normalisedQuery) || countryInitials.includes(normalisedQuery)) {
2467
- const listItem = c.nodeById[this.id];
2468
- if (listItem) {
2469
- this.countryList.appendChild(listItem);
2470
- }
2472
+ if (isReset || queryLength === 0) {
2473
+ nameContains.push(c);
2474
+ } else if (c.iso2.toLowerCase() === normalisedQuery) {
2475
+ iso2Matches.push(c);
2476
+ } else if (normalisedCountryName.startsWith(normalisedQuery)) {
2477
+ nameStartWith.push(c);
2478
+ } else if (normalisedCountryName.includes(normalisedQuery)) {
2479
+ nameContains.push(c);
2480
+ } else if (normalisedQuery === c.dialCode || normalisedQuery === `+${c.dialCode}`) {
2481
+ dialCodeMatches.push(c);
2482
+ } else if (`+${c.dialCode}`.includes(normalisedQuery)) {
2483
+ dialCodeContains.push(c);
2484
+ } else if (countryInitials.includes(normalisedQuery)) {
2485
+ initialsMatches.push(c);
2486
+ }
2487
+ }
2488
+ const matchedCountries = [
2489
+ ...iso2Matches.sort((a, b) => a.priority - b.priority),
2490
+ ...nameStartWith.sort((a, b) => a.priority - b.priority),
2491
+ ...nameContains.sort((a, b) => a.priority - b.priority),
2492
+ ...dialCodeMatches.sort((a, b) => a.priority - b.priority),
2493
+ ...dialCodeContains.sort((a, b) => a.priority - b.priority),
2494
+ ...initialsMatches.sort((a, b) => a.priority - b.priority)
2495
+ ];
2496
+ for (const c of matchedCountries) {
2497
+ const listItem = c.nodeById[this.id];
2498
+ if (listItem) {
2499
+ this.countryList.appendChild(listItem);
2471
2500
  if (noCountriesAddedYet) {
2472
2501
  this._highlightListItem(listItem, false);
2473
2502
  noCountriesAddedYet = false;
@@ -3137,7 +3166,7 @@ var intlTelInput = Object.assign(
3137
3166
  attachUtils,
3138
3167
  startedLoadingUtilsScript: false,
3139
3168
  startedLoadingAutoCountry: false,
3140
- version: "25.4.8"
3169
+ version: "25.5.1"
3141
3170
  }
3142
3171
  );
3143
3172
  var intl_tel_input_default = intlTelInput;
package/vue/README.md CHANGED
@@ -34,7 +34,7 @@ See the [Validation demo](https://github.com/jackocnr/intl-tel-input/blob/master
34
34
  "vue:demo": "vite --config vue/demo/[demo variant]/vite.config.js"
35
35
  ```
36
36
 
37
- A note on the utils script (~260KB): if you're lazy loading the IntlTelInput chunk (and so less worried about filesize) then you can just import IntlTelInput from `"intl-tel-input/vueWithUtils"`, to include the utils script. Alternatively, if you use the main `"intl-tel-input/vue"` import, then you should couple this with the `loadUtils` initialisation option - you will need to host the [utils.js](https://github.com/jackocnr/intl-tel-input/blob/master/build/js/utils.js) file, and then set the `loadUtils` option to that URL, or alternatively just point it to a CDN hosted version e.g. `"https://cdn.jsdelivr.net/npm/intl-tel-input@25.4.8/build/js/utils.js"`.
37
+ A note on the utils script (~260KB): if you're lazy loading the IntlTelInput chunk (and so less worried about filesize) then you can just import IntlTelInput from `"intl-tel-input/vueWithUtils"`, to include the utils script. Alternatively, if you use the main `"intl-tel-input/vue"` import, then you should couple this with the `loadUtils` initialisation option - you will need to host the [utils.js](https://github.com/jackocnr/intl-tel-input/blob/master/build/js/utils.js) file, and then set the `loadUtils` option to that URL, or alternatively just point it to a CDN hosted version e.g. `"https://cdn.jsdelivr.net/npm/intl-tel-input@25.5.1/build/js/utils.js"`.
38
38
 
39
39
  ## Props
40
40
  Here's a list of all of the current props you can pass to the IntlTelInput Vue component.