@sbc-connect/nuxt-forms 0.0.0-test-ld-20260520212549

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 (92) hide show
  1. package/.env.example +14 -0
  2. package/CHANGELOG.md +394 -0
  3. package/LICENSE +28 -0
  4. package/README.md +57 -0
  5. package/app/components/Connect/Fieldset.vue +87 -0
  6. package/app/components/Connect/Form/Address/City.vue +20 -0
  7. package/app/components/Connect/Form/Address/Country.vue +51 -0
  8. package/app/components/Connect/Form/Address/DeliveryInstructions.vue +20 -0
  9. package/app/components/Connect/Form/Address/PostalCode.vue +48 -0
  10. package/app/components/Connect/Form/Address/Region.vue +62 -0
  11. package/app/components/Connect/Form/Address/Street.vue +64 -0
  12. package/app/components/Connect/Form/Address/StreetAdditional.vue +18 -0
  13. package/app/components/Connect/Form/Address/index.vue +116 -0
  14. package/app/components/Connect/Form/FieldWrapper.vue +52 -0
  15. package/app/components/Connect/Form/Input.vue +38 -0
  16. package/app/components/Connect/Form/Phone/CountryCode.vue +128 -0
  17. package/app/components/Connect/Form/Phone/CountryFlag.vue +14 -0
  18. package/app/components/Connect/Form/Phone/index.vue +2 -0
  19. package/app/components/Connect/Form/Textarea.vue +39 -0
  20. package/app/components/Connect/Layout/Form.vue +21 -0
  21. package/app/components/HelloWorld/Forms.vue +12 -0
  22. package/app/composables/useCanadaPost.ts +74 -0
  23. package/app/coverage/base.css +224 -0
  24. package/app/coverage/block-navigation.js +87 -0
  25. package/app/coverage/clover.xml +2803 -0
  26. package/app/coverage/components/Connect/Fieldset.vue.html +310 -0
  27. package/app/coverage/components/Connect/Form/Address/City.vue.html +145 -0
  28. package/app/coverage/components/Connect/Form/Address/Country.vue.html +238 -0
  29. package/app/coverage/components/Connect/Form/Address/DeliveryInstructions.vue.html +145 -0
  30. package/app/coverage/components/Connect/Form/Address/PostalCode.vue.html +199 -0
  31. package/app/coverage/components/Connect/Form/Address/Region.vue.html +271 -0
  32. package/app/coverage/components/Connect/Form/Address/Street.vue.html +277 -0
  33. package/app/coverage/components/Connect/Form/Address/StreetAdditional.vue.html +139 -0
  34. package/app/coverage/components/Connect/Form/Address/index.html +221 -0
  35. package/app/coverage/components/Connect/Form/Address/index.vue.html +433 -0
  36. package/app/coverage/components/Connect/Form/FieldWrapper.vue.html +211 -0
  37. package/app/coverage/components/Connect/Form/Input.vue.html +199 -0
  38. package/app/coverage/components/Connect/Form/Phone/CountryCode.vue.html +457 -0
  39. package/app/coverage/components/Connect/Form/Phone/CountryFlag.vue.html +127 -0
  40. package/app/coverage/components/Connect/Form/Phone/index.html +146 -0
  41. package/app/coverage/components/Connect/Form/Phone/index.vue.html +91 -0
  42. package/app/coverage/components/Connect/Form/Textarea.vue.html +196 -0
  43. package/app/coverage/components/Connect/Form/index.html +146 -0
  44. package/app/coverage/components/Connect/Layout/Form.vue.html +148 -0
  45. package/app/coverage/components/Connect/Layout/index.html +116 -0
  46. package/app/coverage/components/Connect/index.html +116 -0
  47. package/app/coverage/components/HelloWorld/Forms.vue.html +121 -0
  48. package/app/coverage/components/HelloWorld/index.html +116 -0
  49. package/app/coverage/composables/index.html +116 -0
  50. package/app/coverage/composables/useCanadaPost.ts.html +307 -0
  51. package/app/coverage/coverage-final.json +29 -0
  52. package/app/coverage/enums/canada-post-address-datalevel.ts.html +106 -0
  53. package/app/coverage/enums/index.html +116 -0
  54. package/app/coverage/favicon.png +0 -0
  55. package/app/coverage/index.html +296 -0
  56. package/app/coverage/interfaces/canada-post.ts.html +199 -0
  57. package/app/coverage/interfaces/index.html +131 -0
  58. package/app/coverage/interfaces/phone-country.ts.html +127 -0
  59. package/app/coverage/layouts/ConnectForm.vue.html +100 -0
  60. package/app/coverage/layouts/index.html +116 -0
  61. package/app/coverage/prettify.css +1 -0
  62. package/app/coverage/prettify.js +2 -0
  63. package/app/coverage/sort-arrow-sprite.png +0 -0
  64. package/app/coverage/sorter.js +210 -0
  65. package/app/coverage/types/connect-fieldset.ts.html +88 -0
  66. package/app/coverage/types/index.html +116 -0
  67. package/app/coverage/utils/formHelpers.ts.html +124 -0
  68. package/app/coverage/utils/index.html +146 -0
  69. package/app/coverage/utils/index.ts.html +88 -0
  70. package/app/coverage/utils/isoCountriesList.ts.html +6193 -0
  71. package/app/coverage/utils/zod-schemas/addresses.ts.html +559 -0
  72. package/app/coverage/utils/zod-schemas/index.html +131 -0
  73. package/app/coverage/utils/zod-schemas/index.ts.html +88 -0
  74. package/app/enums/canada-post-address-datalevel.ts +7 -0
  75. package/app/interfaces/canada-post.ts +38 -0
  76. package/app/interfaces/phone-country.ts +14 -0
  77. package/app/layouts/ConnectForm.vue +5 -0
  78. package/app/types/connect-fieldset.ts +1 -0
  79. package/app/types/forms-page-meta.d.ts +5 -0
  80. package/app/utils/formHelpers.ts +13 -0
  81. package/app/utils/index.ts +1 -0
  82. package/app/utils/isoCountriesList.ts +2048 -0
  83. package/app/utils/zod-schemas/addresses.ts +159 -0
  84. package/app/utils/zod-schemas/index.ts +1 -0
  85. package/i18n/locales/en-CA.ts +49 -0
  86. package/i18n/locales/fr-CA.ts +3 -0
  87. package/nuxt.config.ts +58 -0
  88. package/package.json +40 -0
  89. package/playwright-report/index.html +85 -0
  90. package/public/css/addresscomplete-2.50.min.css +11 -0
  91. package/public/js/addresscomplete-2.50.min.js +260 -0
  92. package/test-results/.last-run.json +4 -0
@@ -0,0 +1,457 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/Connect/Form/Phone/CountryCode.vue</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">components/Connect/Form/Phone</a> CountryCode.vue</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/95</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>1/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/95</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a>
81
+ <a name='L16'></a><a href='#L16'>16</a>
82
+ <a name='L17'></a><a href='#L17'>17</a>
83
+ <a name='L18'></a><a href='#L18'>18</a>
84
+ <a name='L19'></a><a href='#L19'>19</a>
85
+ <a name='L20'></a><a href='#L20'>20</a>
86
+ <a name='L21'></a><a href='#L21'>21</a>
87
+ <a name='L22'></a><a href='#L22'>22</a>
88
+ <a name='L23'></a><a href='#L23'>23</a>
89
+ <a name='L24'></a><a href='#L24'>24</a>
90
+ <a name='L25'></a><a href='#L25'>25</a>
91
+ <a name='L26'></a><a href='#L26'>26</a>
92
+ <a name='L27'></a><a href='#L27'>27</a>
93
+ <a name='L28'></a><a href='#L28'>28</a>
94
+ <a name='L29'></a><a href='#L29'>29</a>
95
+ <a name='L30'></a><a href='#L30'>30</a>
96
+ <a name='L31'></a><a href='#L31'>31</a>
97
+ <a name='L32'></a><a href='#L32'>32</a>
98
+ <a name='L33'></a><a href='#L33'>33</a>
99
+ <a name='L34'></a><a href='#L34'>34</a>
100
+ <a name='L35'></a><a href='#L35'>35</a>
101
+ <a name='L36'></a><a href='#L36'>36</a>
102
+ <a name='L37'></a><a href='#L37'>37</a>
103
+ <a name='L38'></a><a href='#L38'>38</a>
104
+ <a name='L39'></a><a href='#L39'>39</a>
105
+ <a name='L40'></a><a href='#L40'>40</a>
106
+ <a name='L41'></a><a href='#L41'>41</a>
107
+ <a name='L42'></a><a href='#L42'>42</a>
108
+ <a name='L43'></a><a href='#L43'>43</a>
109
+ <a name='L44'></a><a href='#L44'>44</a>
110
+ <a name='L45'></a><a href='#L45'>45</a>
111
+ <a name='L46'></a><a href='#L46'>46</a>
112
+ <a name='L47'></a><a href='#L47'>47</a>
113
+ <a name='L48'></a><a href='#L48'>48</a>
114
+ <a name='L49'></a><a href='#L49'>49</a>
115
+ <a name='L50'></a><a href='#L50'>50</a>
116
+ <a name='L51'></a><a href='#L51'>51</a>
117
+ <a name='L52'></a><a href='#L52'>52</a>
118
+ <a name='L53'></a><a href='#L53'>53</a>
119
+ <a name='L54'></a><a href='#L54'>54</a>
120
+ <a name='L55'></a><a href='#L55'>55</a>
121
+ <a name='L56'></a><a href='#L56'>56</a>
122
+ <a name='L57'></a><a href='#L57'>57</a>
123
+ <a name='L58'></a><a href='#L58'>58</a>
124
+ <a name='L59'></a><a href='#L59'>59</a>
125
+ <a name='L60'></a><a href='#L60'>60</a>
126
+ <a name='L61'></a><a href='#L61'>61</a>
127
+ <a name='L62'></a><a href='#L62'>62</a>
128
+ <a name='L63'></a><a href='#L63'>63</a>
129
+ <a name='L64'></a><a href='#L64'>64</a>
130
+ <a name='L65'></a><a href='#L65'>65</a>
131
+ <a name='L66'></a><a href='#L66'>66</a>
132
+ <a name='L67'></a><a href='#L67'>67</a>
133
+ <a name='L68'></a><a href='#L68'>68</a>
134
+ <a name='L69'></a><a href='#L69'>69</a>
135
+ <a name='L70'></a><a href='#L70'>70</a>
136
+ <a name='L71'></a><a href='#L71'>71</a>
137
+ <a name='L72'></a><a href='#L72'>72</a>
138
+ <a name='L73'></a><a href='#L73'>73</a>
139
+ <a name='L74'></a><a href='#L74'>74</a>
140
+ <a name='L75'></a><a href='#L75'>75</a>
141
+ <a name='L76'></a><a href='#L76'>76</a>
142
+ <a name='L77'></a><a href='#L77'>77</a>
143
+ <a name='L78'></a><a href='#L78'>78</a>
144
+ <a name='L79'></a><a href='#L79'>79</a>
145
+ <a name='L80'></a><a href='#L80'>80</a>
146
+ <a name='L81'></a><a href='#L81'>81</a>
147
+ <a name='L82'></a><a href='#L82'>82</a>
148
+ <a name='L83'></a><a href='#L83'>83</a>
149
+ <a name='L84'></a><a href='#L84'>84</a>
150
+ <a name='L85'></a><a href='#L85'>85</a>
151
+ <a name='L86'></a><a href='#L86'>86</a>
152
+ <a name='L87'></a><a href='#L87'>87</a>
153
+ <a name='L88'></a><a href='#L88'>88</a>
154
+ <a name='L89'></a><a href='#L89'>89</a>
155
+ <a name='L90'></a><a href='#L90'>90</a>
156
+ <a name='L91'></a><a href='#L91'>91</a>
157
+ <a name='L92'></a><a href='#L92'>92</a>
158
+ <a name='L93'></a><a href='#L93'>93</a>
159
+ <a name='L94'></a><a href='#L94'>94</a>
160
+ <a name='L95'></a><a href='#L95'>95</a>
161
+ <a name='L96'></a><a href='#L96'>96</a>
162
+ <a name='L97'></a><a href='#L97'>97</a>
163
+ <a name='L98'></a><a href='#L98'>98</a>
164
+ <a name='L99'></a><a href='#L99'>99</a>
165
+ <a name='L100'></a><a href='#L100'>100</a>
166
+ <a name='L101'></a><a href='#L101'>101</a>
167
+ <a name='L102'></a><a href='#L102'>102</a>
168
+ <a name='L103'></a><a href='#L103'>103</a>
169
+ <a name='L104'></a><a href='#L104'>104</a>
170
+ <a name='L105'></a><a href='#L105'>105</a>
171
+ <a name='L106'></a><a href='#L106'>106</a>
172
+ <a name='L107'></a><a href='#L107'>107</a>
173
+ <a name='L108'></a><a href='#L108'>108</a>
174
+ <a name='L109'></a><a href='#L109'>109</a>
175
+ <a name='L110'></a><a href='#L110'>110</a>
176
+ <a name='L111'></a><a href='#L111'>111</a>
177
+ <a name='L112'></a><a href='#L112'>112</a>
178
+ <a name='L113'></a><a href='#L113'>113</a>
179
+ <a name='L114'></a><a href='#L114'>114</a>
180
+ <a name='L115'></a><a href='#L115'>115</a>
181
+ <a name='L116'></a><a href='#L116'>116</a>
182
+ <a name='L117'></a><a href='#L117'>117</a>
183
+ <a name='L118'></a><a href='#L118'>118</a>
184
+ <a name='L119'></a><a href='#L119'>119</a>
185
+ <a name='L120'></a><a href='#L120'>120</a>
186
+ <a name='L121'></a><a href='#L121'>121</a>
187
+ <a name='L122'></a><a href='#L122'>122</a>
188
+ <a name='L123'></a><a href='#L123'>123</a>
189
+ <a name='L124'></a><a href='#L124'>124</a>
190
+ <a name='L125'></a><a href='#L125'>125</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
191
+ <span class="cline-any cline-no">&nbsp;</span>
192
+ <span class="cline-any cline-no">&nbsp;</span>
193
+ <span class="cline-any cline-neutral">&nbsp;</span>
194
+ <span class="cline-any cline-neutral">&nbsp;</span>
195
+ <span class="cline-any cline-neutral">&nbsp;</span>
196
+ <span class="cline-any cline-neutral">&nbsp;</span>
197
+ <span class="cline-any cline-neutral">&nbsp;</span>
198
+ <span class="cline-any cline-neutral">&nbsp;</span>
199
+ <span class="cline-any cline-no">&nbsp;</span>
200
+ <span class="cline-any cline-no">&nbsp;</span>
201
+ <span class="cline-any cline-neutral">&nbsp;</span>
202
+ <span class="cline-any cline-no">&nbsp;</span>
203
+ <span class="cline-any cline-no">&nbsp;</span>
204
+ <span class="cline-any cline-no">&nbsp;</span>
205
+ <span class="cline-any cline-no">&nbsp;</span>
206
+ <span class="cline-any cline-no">&nbsp;</span>
207
+ <span class="cline-any cline-no">&nbsp;</span>
208
+ <span class="cline-any cline-neutral">&nbsp;</span>
209
+ <span class="cline-any cline-no">&nbsp;</span>
210
+ <span class="cline-any cline-no">&nbsp;</span>
211
+ <span class="cline-any cline-no">&nbsp;</span>
212
+ <span class="cline-any cline-no">&nbsp;</span>
213
+ <span class="cline-any cline-no">&nbsp;</span>
214
+ <span class="cline-any cline-no">&nbsp;</span>
215
+ <span class="cline-any cline-no">&nbsp;</span>
216
+ <span class="cline-any cline-no">&nbsp;</span>
217
+ <span class="cline-any cline-neutral">&nbsp;</span>
218
+ <span class="cline-any cline-no">&nbsp;</span>
219
+ <span class="cline-any cline-no">&nbsp;</span>
220
+ <span class="cline-any cline-no">&nbsp;</span>
221
+ <span class="cline-any cline-no">&nbsp;</span>
222
+ <span class="cline-any cline-no">&nbsp;</span>
223
+ <span class="cline-any cline-no">&nbsp;</span>
224
+ <span class="cline-any cline-no">&nbsp;</span>
225
+ <span class="cline-any cline-no">&nbsp;</span>
226
+ <span class="cline-any cline-no">&nbsp;</span>
227
+ <span class="cline-any cline-neutral">&nbsp;</span>
228
+ <span class="cline-any cline-no">&nbsp;</span>
229
+ <span class="cline-any cline-no">&nbsp;</span>
230
+ <span class="cline-any cline-neutral">&nbsp;</span>
231
+ <span class="cline-any cline-no">&nbsp;</span>
232
+ <span class="cline-any cline-no">&nbsp;</span>
233
+ <span class="cline-any cline-no">&nbsp;</span>
234
+ <span class="cline-any cline-no">&nbsp;</span>
235
+ <span class="cline-any cline-no">&nbsp;</span>
236
+ <span class="cline-any cline-neutral">&nbsp;</span>
237
+ <span class="cline-any cline-no">&nbsp;</span>
238
+ <span class="cline-any cline-no">&nbsp;</span>
239
+ <span class="cline-any cline-no">&nbsp;</span>
240
+ <span class="cline-any cline-no">&nbsp;</span>
241
+ <span class="cline-any cline-no">&nbsp;</span>
242
+ <span class="cline-any cline-no">&nbsp;</span>
243
+ <span class="cline-any cline-no">&nbsp;</span>
244
+ <span class="cline-any cline-no">&nbsp;</span>
245
+ <span class="cline-any cline-no">&nbsp;</span>
246
+ <span class="cline-any cline-no">&nbsp;</span>
247
+ <span class="cline-any cline-neutral">&nbsp;</span>
248
+ <span class="cline-any cline-no">&nbsp;</span>
249
+ <span class="cline-any cline-no">&nbsp;</span>
250
+ <span class="cline-any cline-no">&nbsp;</span>
251
+ <span class="cline-any cline-neutral">&nbsp;</span>
252
+ <span class="cline-any cline-neutral">&nbsp;</span>
253
+ <span class="cline-any cline-no">&nbsp;</span>
254
+ <span class="cline-any cline-no">&nbsp;</span>
255
+ <span class="cline-any cline-neutral">&nbsp;</span>
256
+ <span class="cline-any cline-no">&nbsp;</span>
257
+ <span class="cline-any cline-no">&nbsp;</span>
258
+ <span class="cline-any cline-no">&nbsp;</span>
259
+ <span class="cline-any cline-neutral">&nbsp;</span>
260
+ <span class="cline-any cline-no">&nbsp;</span>
261
+ <span class="cline-any cline-no">&nbsp;</span>
262
+ <span class="cline-any cline-no">&nbsp;</span>
263
+ <span class="cline-any cline-no">&nbsp;</span>
264
+ <span class="cline-any cline-neutral">&nbsp;</span>
265
+ <span class="cline-any cline-no">&nbsp;</span>
266
+ <span class="cline-any cline-no">&nbsp;</span>
267
+ <span class="cline-any cline-no">&nbsp;</span>
268
+ <span class="cline-any cline-no">&nbsp;</span>
269
+ <span class="cline-any cline-no">&nbsp;</span>
270
+ <span class="cline-any cline-no">&nbsp;</span>
271
+ <span class="cline-any cline-no">&nbsp;</span>
272
+ <span class="cline-any cline-no">&nbsp;</span>
273
+ <span class="cline-any cline-no">&nbsp;</span>
274
+ <span class="cline-any cline-no">&nbsp;</span>
275
+ <span class="cline-any cline-no">&nbsp;</span>
276
+ <span class="cline-any cline-neutral">&nbsp;</span>
277
+ <span class="cline-any cline-neutral">&nbsp;</span>
278
+ <span class="cline-any cline-neutral">&nbsp;</span>
279
+ <span class="cline-any cline-no">&nbsp;</span>
280
+ <span class="cline-any cline-no">&nbsp;</span>
281
+ <span class="cline-any cline-no">&nbsp;</span>
282
+ <span class="cline-any cline-no">&nbsp;</span>
283
+ <span class="cline-any cline-no">&nbsp;</span>
284
+ <span class="cline-any cline-no">&nbsp;</span>
285
+ <span class="cline-any cline-no">&nbsp;</span>
286
+ <span class="cline-any cline-no">&nbsp;</span>
287
+ <span class="cline-any cline-no">&nbsp;</span>
288
+ <span class="cline-any cline-no">&nbsp;</span>
289
+ <span class="cline-any cline-no">&nbsp;</span>
290
+ <span class="cline-any cline-no">&nbsp;</span>
291
+ <span class="cline-any cline-neutral">&nbsp;</span>
292
+ <span class="cline-any cline-no">&nbsp;</span>
293
+ <span class="cline-any cline-no">&nbsp;</span>
294
+ <span class="cline-any cline-neutral">&nbsp;</span>
295
+ <span class="cline-any cline-no">&nbsp;</span>
296
+ <span class="cline-any cline-no">&nbsp;</span>
297
+ <span class="cline-any cline-no">&nbsp;</span>
298
+ <span class="cline-any cline-no">&nbsp;</span>
299
+ <span class="cline-any cline-no">&nbsp;</span>
300
+ <span class="cline-any cline-neutral">&nbsp;</span>
301
+ <span class="cline-any cline-neutral">&nbsp;</span>
302
+ <span class="cline-any cline-no">&nbsp;</span>
303
+ <span class="cline-any cline-no">&nbsp;</span>
304
+ <span class="cline-any cline-neutral">&nbsp;</span>
305
+ <span class="cline-any cline-no">&nbsp;</span>
306
+ <span class="cline-any cline-no">&nbsp;</span>
307
+ <span class="cline-any cline-no">&nbsp;</span>
308
+ <span class="cline-any cline-no">&nbsp;</span>
309
+ <span class="cline-any cline-no">&nbsp;</span>
310
+ <span class="cline-any cline-no">&nbsp;</span>
311
+ <span class="cline-any cline-neutral">&nbsp;</span>
312
+ <span class="cline-any cline-no">&nbsp;</span>
313
+ <span class="cline-any cline-neutral">&nbsp;</span>
314
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;script setup lang="ts"&gt;
315
+ <span class="cstat-no" title="statement not covered" >import countryList from 'country-codes-list'</span>
316
+ <span class="cstat-no" title="statement not covered" >import CountryFlag from '#forms/app/components/Connect/Form/Phone/CountryFlag.vue'</span>
317
+ import type { PhoneCountry } from '#forms/app/interfaces/phone-country'
318
+ &nbsp;
319
+ defineProps&lt;{
320
+ isInvalid: boolean | undefined
321
+ }&gt;()
322
+ &nbsp;
323
+ <span class="cstat-no" title="statement not covered" >const countryCallingCode = defineModel&lt;string | undefined&gt;('countryCallingCode', { required: false })</span>
324
+ <span class="cstat-no" title="statement not covered" >watch(countryCallingCode, (val) =&gt; {</span>
325
+ // this is needed for when something outside this component changes the callingCode model value
326
+ <span class="cstat-no" title="statement not covered" > if (!val) {</span>
327
+ <span class="cstat-no" title="statement not covered" > countryIso2.value = undefined</span>
328
+ <span class="cstat-no" title="statement not covered" > } else if (selectedCountry.value?.callingCode !== val) {</span>
329
+ <span class="cstat-no" title="statement not covered" > countryIso2.value = search(val)[0]?.iso2</span>
330
+ <span class="cstat-no" title="statement not covered" > }</span>
331
+ <span class="cstat-no" title="statement not covered" >})</span>
332
+ &nbsp;
333
+ <span class="cstat-no" title="statement not covered" >const countryIso2 = defineModel&lt;string | undefined&gt;('countryIso2', { required: false })</span>
334
+ <span class="cstat-no" title="statement not covered" >watch(countryIso2, (val) =&gt; {</span>
335
+ <span class="cstat-no" title="statement not covered" > if (!val) {</span>
336
+ <span class="cstat-no" title="statement not covered" > selectedCountry.value = undefined</span>
337
+ <span class="cstat-no" title="statement not covered" > } else if (val &amp;&amp; selectedCountry.value?.iso2 !== val) {</span>
338
+ <span class="cstat-no" title="statement not covered" > selectCountry(val)</span>
339
+ <span class="cstat-no" title="statement not covered" > }</span>
340
+ <span class="cstat-no" title="statement not covered" >})</span>
341
+ &nbsp;
342
+ <span class="cstat-no" title="statement not covered" >const selectedCountry = ref&lt;PhoneCountry | undefined&gt;(undefined)</span>
343
+ <span class="cstat-no" title="statement not covered" >watch(selectedCountry, (newVal) =&gt; {</span>
344
+ <span class="cstat-no" title="statement not covered" > if (newVal?.callingCode !== countryCallingCode.value) {</span>
345
+ <span class="cstat-no" title="statement not covered" > countryCallingCode.value = newVal?.callingCode</span>
346
+ <span class="cstat-no" title="statement not covered" > }</span>
347
+ <span class="cstat-no" title="statement not covered" > if (newVal?.iso2 !== countryIso2.value) {</span>
348
+ <span class="cstat-no" title="statement not covered" > countryIso2.value = newVal?.iso2</span>
349
+ <span class="cstat-no" title="statement not covered" > }</span>
350
+ <span class="cstat-no" title="statement not covered" >})</span>
351
+ &nbsp;
352
+ <span class="cstat-no" title="statement not covered" >const _countryListOptions = countryList.customList(</span>
353
+ <span class="cstat-no" title="statement not covered" > 'countryCode', '{countryCallingCode},{countryNameEn},{countryNameLocal}')</span>
354
+ &nbsp;
355
+ <span class="cstat-no" title="statement not covered" >const manualInput = (event: Event) =&gt; {</span>
356
+ <span class="cstat-no" title="statement not covered" > selectedCountry.value = {</span>
357
+ <span class="cstat-no" title="statement not covered" > callingCode: event.target.value</span>
358
+ <span class="cstat-no" title="statement not covered" > }</span>
359
+ <span class="cstat-no" title="statement not covered" >}</span>
360
+ &nbsp;
361
+ <span class="cstat-no" title="statement not covered" >const countryListOptions: Array&lt;PhoneCountry&gt; = Object.keys(_countryListOptions).map((key) =&gt; {</span>
362
+ <span class="cstat-no" title="statement not covered" > const [callingCode, nameEn, nameLocal] = _countryListOptions[key].split(',')</span>
363
+ <span class="cstat-no" title="statement not covered" > return {</span>
364
+ <span class="cstat-no" title="statement not covered" > iso2: key,</span>
365
+ <span class="cstat-no" title="statement not covered" > callingCode,</span>
366
+ <span class="cstat-no" title="statement not covered" > label: `+${callingCode}`,</span>
367
+ <span class="cstat-no" title="statement not covered" > nameLocal,</span>
368
+ <span class="cstat-no" title="statement not covered" > nameEn</span>
369
+ <span class="cstat-no" title="statement not covered" > }</span>
370
+ <span class="cstat-no" title="statement not covered" >}).sort((a, b) =&gt; a.callingCode.localeCompare(b.callingCode))</span>
371
+ &nbsp;
372
+ <span class="cstat-no" title="statement not covered" >const search = (q: string) =&gt; countryListOptions.filter((lo) =&gt; {</span>
373
+ <span class="cstat-no" title="statement not covered" > return lo.callingCode.includes(q)</span>
374
+ <span class="cstat-no" title="statement not covered" > || lo.iso2?.includes(q)</span>
375
+ || lo.nameLocal?.includes(q)
376
+ || lo.nameEn?.includes(q)
377
+ <span class="cstat-no" title="statement not covered" > || lo.label?.includes(q)</span>
378
+ <span class="cstat-no" title="statement not covered" >})</span>
379
+ &nbsp;
380
+ <span class="cstat-no" title="statement not covered" >const selectCountry = (iso2: string) =&gt; {</span>
381
+ <span class="cstat-no" title="statement not covered" > selectedCountry.value = countryListOptions.find(item =&gt; item.iso2 === iso2)</span>
382
+ <span class="cstat-no" title="statement not covered" >}</span>
383
+ &nbsp;
384
+ <span class="cstat-no" title="statement not covered" >onMounted(() =&gt; {</span>
385
+ <span class="cstat-no" title="statement not covered" > if (countryIso2.value !== undefined) {</span>
386
+ <span class="cstat-no" title="statement not covered" > selectCountry(countryIso2.value)</span>
387
+ <span class="cstat-no" title="statement not covered" > } else if (countryCallingCode.value) {</span>
388
+ // Set a country based on the calling code if available
389
+ <span class="cstat-no" title="statement not covered" > const iso2 = search(countryCallingCode.value)[0]?.iso2</span>
390
+ <span class="cstat-no" title="statement not covered" > if (iso2) {</span>
391
+ <span class="cstat-no" title="statement not covered" > selectCountry(iso2)</span>
392
+ <span class="cstat-no" title="statement not covered" > } else {</span>
393
+ <span class="cstat-no" title="statement not covered" > selectedCountry.value = {</span>
394
+ <span class="cstat-no" title="statement not covered" > callingCode: countryCallingCode.value,</span>
395
+ <span class="cstat-no" title="statement not covered" > label: `+${countryCallingCode.value}`</span>
396
+ <span class="cstat-no" title="statement not covered" > }</span>
397
+ <span class="cstat-no" title="statement not covered" > }</span>
398
+ <span class="cstat-no" title="statement not covered" > }</span>
399
+ <span class="cstat-no" title="statement not covered" >})</span>
400
+ &lt;/script&gt;
401
+ &nbsp;
402
+ &lt;template&gt;
403
+ <span class="cstat-no" title="statement not covered" > &lt;UInputMenu</span>
404
+ <span class="cstat-no" title="statement not covered" > v-model="selectedCountry"</span>
405
+ <span class="cstat-no" title="statement not covered" > :items="countryListOptions"</span>
406
+ <span class="cstat-no" title="statement not covered" > :color="selectedCountry?.callingCode ? 'primary' : ''"</span>
407
+ <span class="cstat-no" title="statement not covered" > :search="search"</span>
408
+ <span class="cstat-no" title="statement not covered" > :label-key="''"</span>
409
+ <span class="cstat-no" title="statement not covered" > :trailing-icon="'i-mdi-chevron-down'"</span>
410
+ <span class="cstat-no" title="statement not covered" > class="cursor-pointer"</span>
411
+ <span class="cstat-no" title="statement not covered" > :aria-required="true"</span>
412
+ <span class="cstat-no" title="statement not covered" > :aria-invalid="isInvalid"</span>
413
+ <span class="cstat-no" title="statement not covered" > :aria-label="$t('connect.label.countryCode')"</span>
414
+ <span class="cstat-no" title="statement not covered" > @input="manualInput($event)"</span>
415
+ &gt;
416
+ <span class="cstat-no" title="statement not covered" > &lt;template v-if="!!selectedCountry?.iso2" #leading="{ modelValue }"&gt;</span>
417
+ <span class="cstat-no" title="statement not covered" > &lt;div class="flex"&gt;</span>
418
+ &lt;CountryFlag
419
+ <span class="cstat-no" title="statement not covered" > :tooltip-text="selectedCountry?.nameEn"</span>
420
+ <span class="cstat-no" title="statement not covered" > :country-code-iso2letter="selectedCountry?.iso2"</span>
421
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
422
+ <span class="cstat-no" title="statement not covered" > &lt;span class="ml-2 mt-2 truncate"&gt;{{ modelValue.label }}&lt;/span&gt;</span>
423
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
424
+ &lt;/template&gt;
425
+ &nbsp;
426
+ <span class="cstat-no" title="statement not covered" > &lt;template #item="{ item }"&gt;</span>
427
+ <span class="cstat-no" title="statement not covered" > &lt;div class="flex items-end cursor-pointer"&gt;</span>
428
+ &lt;CountryFlag
429
+ <span class="cstat-no" title="statement not covered" > :tooltip-text="item.nameLocal"</span>
430
+ <span class="cstat-no" title="statement not covered" > :country-code-iso2letter="item.iso2"</span>
431
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
432
+ <span class="cstat-no" title="statement not covered" > &lt;span class="ml-2 truncate"&gt;{{ item.label }}&lt;/span&gt;</span>
433
+ <span class="cstat-no" title="statement not covered" > &lt;span class="sr-only"&gt;{{ item.nameLocal }}&lt;/span&gt;</span>
434
+ <span class="cstat-no" title="statement not covered" > &lt;/div&gt;</span>
435
+ &lt;/template&gt;
436
+ <span class="cstat-no" title="statement not covered" > &lt;/UInputMenu&gt;</span>
437
+ &lt;/template&gt;
438
+ &nbsp;</pre></td></tr></table></pre>
439
+
440
+ <div class='push'></div><!-- for sticky footer -->
441
+ </div><!-- /wrapper -->
442
+ <div class='footer quiet pad2 space-top1 center small'>
443
+ Code coverage generated by
444
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
445
+ at 2026-01-02T19:49:13.244Z
446
+ </div>
447
+ <script src="../../../../prettify.js"></script>
448
+ <script>
449
+ window.onload = function () {
450
+ prettyPrint();
451
+ };
452
+ </script>
453
+ <script src="../../../../sorter.js"></script>
454
+ <script src="../../../../block-navigation.js"></script>
455
+ </body>
456
+ </html>
457
+
@@ -0,0 +1,127 @@
1
+
2
+ <!doctype html>
3
+ <html lang="en">
4
+
5
+ <head>
6
+ <title>Code coverage report for components/Connect/Form/Phone/CountryFlag.vue</title>
7
+ <meta charset="utf-8" />
8
+ <link rel="stylesheet" href="../../../../prettify.css" />
9
+ <link rel="stylesheet" href="../../../../base.css" />
10
+ <link rel="shortcut icon" type="image/x-icon" href="../../../../favicon.png" />
11
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
12
+ <style type='text/css'>
13
+ .coverage-summary .sorter {
14
+ background-image: url(../../../../sort-arrow-sprite.png);
15
+ }
16
+ </style>
17
+ </head>
18
+
19
+ <body>
20
+ <div class='wrapper'>
21
+ <div class='pad1'>
22
+ <h1><a href="../../../../index.html">All files</a> / <a href="index.html">components/Connect/Form/Phone</a> CountryFlag.vue</h1>
23
+ <div class='clearfix'>
24
+
25
+ <div class='fl pad1y space-right2'>
26
+ <span class="strong">0% </span>
27
+ <span class="quiet">Statements</span>
28
+ <span class='fraction'>0/5</span>
29
+ </div>
30
+
31
+
32
+ <div class='fl pad1y space-right2'>
33
+ <span class="strong">100% </span>
34
+ <span class="quiet">Branches</span>
35
+ <span class='fraction'>1/1</span>
36
+ </div>
37
+
38
+
39
+ <div class='fl pad1y space-right2'>
40
+ <span class="strong">100% </span>
41
+ <span class="quiet">Functions</span>
42
+ <span class='fraction'>1/1</span>
43
+ </div>
44
+
45
+
46
+ <div class='fl pad1y space-right2'>
47
+ <span class="strong">0% </span>
48
+ <span class="quiet">Lines</span>
49
+ <span class='fraction'>0/5</span>
50
+ </div>
51
+
52
+
53
+ </div>
54
+ <p class="quiet">
55
+ Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
56
+ </p>
57
+ <template id="filterTemplate">
58
+ <div class="quiet">
59
+ Filter:
60
+ <input type="search" id="fileSearch">
61
+ </div>
62
+ </template>
63
+ </div>
64
+ <div class='status-line low'></div>
65
+ <pre><table class="coverage">
66
+ <tr><td class="line-count quiet"><a name='L1'></a><a href='#L1'>1</a>
67
+ <a name='L2'></a><a href='#L2'>2</a>
68
+ <a name='L3'></a><a href='#L3'>3</a>
69
+ <a name='L4'></a><a href='#L4'>4</a>
70
+ <a name='L5'></a><a href='#L5'>5</a>
71
+ <a name='L6'></a><a href='#L6'>6</a>
72
+ <a name='L7'></a><a href='#L7'>7</a>
73
+ <a name='L8'></a><a href='#L8'>8</a>
74
+ <a name='L9'></a><a href='#L9'>9</a>
75
+ <a name='L10'></a><a href='#L10'>10</a>
76
+ <a name='L11'></a><a href='#L11'>11</a>
77
+ <a name='L12'></a><a href='#L12'>12</a>
78
+ <a name='L13'></a><a href='#L13'>13</a>
79
+ <a name='L14'></a><a href='#L14'>14</a>
80
+ <a name='L15'></a><a href='#L15'>15</a></td><td class="line-coverage quiet"><span class="cline-any cline-neutral">&nbsp;</span>
81
+ <span class="cline-any cline-no">&nbsp;</span>
82
+ <span class="cline-any cline-neutral">&nbsp;</span>
83
+ <span class="cline-any cline-neutral">&nbsp;</span>
84
+ <span class="cline-any cline-neutral">&nbsp;</span>
85
+ <span class="cline-any cline-neutral">&nbsp;</span>
86
+ <span class="cline-any cline-neutral">&nbsp;</span>
87
+ <span class="cline-any cline-neutral">&nbsp;</span>
88
+ <span class="cline-any cline-neutral">&nbsp;</span>
89
+ <span class="cline-any cline-no">&nbsp;</span>
90
+ <span class="cline-any cline-no">&nbsp;</span>
91
+ <span class="cline-any cline-no">&nbsp;</span>
92
+ <span class="cline-any cline-no">&nbsp;</span>
93
+ <span class="cline-any cline-neutral">&nbsp;</span>
94
+ <span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">&lt;script setup lang="ts"&gt;
95
+ <span class="cstat-no" title="statement not covered" >import CountryFlag from 'vue-country-flag-next'</span>
96
+ &nbsp;
97
+ defineProps&lt;{
98
+ countryCodeIso2letter: string
99
+ }&gt;()
100
+ &lt;/script&gt;
101
+ &nbsp;
102
+ &lt;template&gt;
103
+ <span class="cstat-no" title="statement not covered" > &lt;CountryFlag</span>
104
+ <span class="cstat-no" title="statement not covered" > class="mb-2"</span>
105
+ <span class="cstat-no" title="statement not covered" > :country="countryCodeIso2letter"</span>
106
+ <span class="cstat-no" title="statement not covered" > /&gt;</span>
107
+ &lt;/template&gt;
108
+ &nbsp;</pre></td></tr></table></pre>
109
+
110
+ <div class='push'></div><!-- for sticky footer -->
111
+ </div><!-- /wrapper -->
112
+ <div class='footer quiet pad2 space-top1 center small'>
113
+ Code coverage generated by
114
+ <a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
115
+ at 2026-01-02T19:49:13.244Z
116
+ </div>
117
+ <script src="../../../../prettify.js"></script>
118
+ <script>
119
+ window.onload = function () {
120
+ prettyPrint();
121
+ };
122
+ </script>
123
+ <script src="../../../../sorter.js"></script>
124
+ <script src="../../../../block-navigation.js"></script>
125
+ </body>
126
+ </html>
127
+