PluginProbe
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder / 2.21.13
Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder v2.21.13
3.3.1 V-3.3.0 3.2.2 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 V3.0.3 V3.0.2 -3.0.1 V_3.0.0 1.1.1 1.1.8 1.2 1.3 1.4 1.4.18 1.5.2 1.9 2.0 2.10.0 2.10.1 All 138 releases
bit-form / includes / Frontend / Form / View / Theme / Fields / CountryField.php

CountryField.php in Bit Form – Contact Form, Payment Forms, Multi Step Forms, Calculator & Custom Form Builder 2.21.13, at includes/Frontend/Form/View/Theme/Fields/CountryField.php

280 lines 9.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace BitCode\BitForm\Frontend\Form\View\Theme\Fields;
4
5 class CountryField
6 {
7 public static function init($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null)
8 {
9 $inputWrapper = new ClassicInputWrapper($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
10 $input = self::field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error, $value);
11 return $inputWrapper->wrapper($input);
12 }
13
14 private static function field($field, $rowID, $field_name, $form_atomic_Cls_map, $formID, $error = null, $value = null)
15 {
16 $fieldHelpers = new ClassicFieldHelpers($field, $rowID, $form_atomic_Cls_map);
17 $asset_url = BITFORMS_ASSET_URI;
18 $img_url = BITFORMS_ASSET_URI . '/../static/countries/';
19 $req = $fieldHelpers->required();
20 $disabled = $fieldHelpers->disabled();
21 $readonly = $fieldHelpers->readonly();
22 $name = $fieldHelpers->name();
23 $selectedFlagImage = '';
24 $tabIndx = isset($field->disabled) ? -1 : 0;
25 $selectedCountryClearable = '';
26 $searchPlaceholder = '';
27 $searchClearable = '';
28 $options = '';
29 $readonlyCls = isset($field->readonly) ? 'readonly' : '';
30 $disabledCls = isset($field->disabled) ? 'disabled' : '';
31 $val = $fieldHelpers->value();
32
33 $selectedItm = null;
34 foreach ($field->options as $opt) {
35 if (isset($opt->check) && true === $opt->check) {
36 $selectedItm = $opt;
37 break;
38 }
39 }
40 if ($selectedItm) {
41 $img = $img_url . $selectedItm->img;
42 $ph = $selectedItm->lbl;
43 } else {
44 $img = htmlentities("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg'/>");
45 $ph = isset($field->ph) ? $field->ph : '';
46 }
47
48 if ($fieldHelpers->property_exists_nested($field, 'config->selectedFlagImage', true)) {
49 $img = sprintf(
50 '<img
51 %1$s
52 class="%2$s %3$s"
53 aria-hidden="true"
54 alt="selected country flag"
55 src="%4$s"
56 >',
57 $fieldHelpers->getCustomAttributes('selected-country-img'),
58 $fieldHelpers->getAtomicCls('selected-country-img'),
59 $fieldHelpers->getCustomClasses('selected-country-img'),
60 $img
61 );
62 } else {
63 $img = '';
64 }
65
66 $selectedFlagImage = sprintf(
67 '<div class="%1$s">
68 %2$s
69 <span
70 %3$s
71 class="%4$s %5$s"
72 >
73 %6$s
74 </span>
75 </div>',
76 $fieldHelpers->getAtomicCls('selected-country-wrp'),
77 $img,
78 $fieldHelpers->getCustomAttributes('selected-country-lbl'),
79 $fieldHelpers->getAtomicCls('selected-country-lbl'),
80 $fieldHelpers->getCustomClasses('selected-country-lbl'),
81 $fieldHelpers->esc_html($ph)
82 );
83
84 if ($fieldHelpers->property_exists_nested($field, 'config->selectedCountryClearable', true)) {
85 $selectedCountryClearable = sprintf(
86 '<button
87 %1$s
88 type="button"
89 title="Clear selected country value"
90 class="%2$s %3$s"
91 >
92 <svg
93 width="15"
94 height="15"
95 role="img"
96 title="Cross icon"
97 viewBox="0 0 24 24"
98 fill="none"
99 stroke="currentColor"
100 stroke-width="2"
101 stroke-linecap="round"
102 stroke-linejoin="round"
103 >
104 <line x1="18" y1="6" x2="6" y2="18" />
105 <line x1="6" y1="6" x2="18" y2="18" />
106 </svg>
107 </button>',
108 $fieldHelpers->getCustomAttributes('inp-clr-btn'),
109 $fieldHelpers->getAtomicCls('inp-clr-btn'),
110 $fieldHelpers->getCustomClasses('inp-clr-btn')
111 );
112 }
113
114 if ($fieldHelpers->property_exists_nested($field, 'config->searchPlaceholder', '', 1)) {
115 $searchPlaceholder = "placeholder='{$fieldHelpers->esc_attr($field->config->searchPlaceholder)}'";
116 }
117
118 if ($fieldHelpers->property_exists_nested($field, 'config->searchClearable', true)) {
119 $searchClearable = sprintf(
120 '<button
121 %1$s
122 type="button"
123 title="Clear search"
124 class="%2$s %3$s %4$s"
125 tabIndex="-1"
126 >
127 <svg
128 width="13"
129 height="13"
130 role="img"
131 title="Cross icon"
132 viewBox="0 0 24 24"
133 fill="none"
134 stroke="currentColor"
135 stroke-width="2"
136 stroke-linecap="round"
137 stroke-linejoin="round"
138 >
139 <line x1="18" y1="6" x2="6" y2="18" />
140 <line x1="6" y1="6" x2="18" y2="18" />
141 </svg>
142 </button>',
143 $fieldHelpers->getCustomAttributes('search-clear-btn'),
144 $fieldHelpers->getAtomicCls('icn'),
145 $fieldHelpers->getAtomicCls('search-clear-btn'),
146 $fieldHelpers->getCustomClasses('search-clear-btn')
147 );
148 }
149
150 return sprintf(
151 '<div class="%1$s">
152 <div
153 %2$s
154 class="%3$s %4$s %5$s %6$s"
155 >
156 <input
157 %7$s
158 %8$s
159 type="text"
160 title="Country Hidden Input"
161 class="%9$s d-none"
162 %10$s
163 %11$s
164 %12$s
165 />
166 <div
167 class="%13$s"
168 aria-live="assertive"
169 aria-label="Select a Country"
170 role="combobox"
171 aria-expanded="false"
172 tabIndex="%14$s"
173 >
174 %15$s
175 <div class="%16$s">
176 %17$s
177 <div class="%18$s">
178 <svg
179 width="15"
180 height="15"
181 viewBox="0 0 24 24"
182 title="Cross icon"
183 role="img"
184 fill="none"
185 stroke="currentColor"
186 stroke-width="2"
187 stroke-linecap="round"
188 stroke-linejoin="round"
189 >
190 <polyline points="6 9 12 15 18 9" />
191 </svg>
192 </div>
193 </div>
194 </div>
195 <div
196 %19$s
197 class="%20$s %21$s"
198 >
199 <div class="%22$s">
200 <div class="%23$s">
201 <input
202 %24$s
203 type="search"
204 class="%25$s %26$s"
205 %27$s
206 autoComplete="country-name"
207 tabIndex="-1"
208 />
209 <svg
210 %28$s
211 class="%29$s %30$s"
212 aria-hidden="true"
213 width="22"
214 height="22"
215 role="img"
216 title="Search icon"
217 viewBox="0 0 24 24"
218 fill="none"
219 stroke="currentColor"
220 stroke-width="2"
221 stroke-linecap="round"
222 stroke-linejoin="round"
223 >
224 <circle cx="11" cy="11" r="8" />
225 <line x1="21" y1="21" x2="16.65" y2="16.65" />
226 </svg>
227 %31$s
228 </div>
229 <ul
230 %32$s
231 class="%33$s %34$s"
232 tabIndex="-1"
233 role="listbox"
234 aria-label="country list"
235 >
236 %35$s
237 </ul>
238 </div>
239 </div>
240 </div>
241 </div>',
242 $fieldHelpers->getAtomicCls('country-fld-container'), // 1
243 $fieldHelpers->getCustomAttributes('country-fld-wrp'), // 2
244 $fieldHelpers->getAtomicCls('country-fld-wrp'), // 3
245 $fieldHelpers->getCustomClasses('country-fld-wrp'), // 4
246 $disabled, // 5
247 $readonly, // 6
248 $name, // 7
249 $req, // 8
250 $fieldHelpers->getAtomicCls('country-hidden-input'), // 9
251 $disabled, // 10
252 $readonly, // 11
253 $val, // 12
254 $fieldHelpers->getAtomicCls('dpd-wrp'), // 13
255 $tabIndx, // 14
256 $selectedFlagImage, // 15
257 $fieldHelpers->getAtomicCls('dpd-btn-wrp'), // 16
258 $selectedCountryClearable, // 17
259 $fieldHelpers->getAtomicCls('dpd-down-btn'), // 18
260 $fieldHelpers->getCustomAttributes('option-wrp'), // 19
261 $fieldHelpers->getAtomicCls('option-wrp'), // 20
262 $fieldHelpers->getCustomClasses('option-wrp'), // 21
263 $fieldHelpers->getAtomicCls('option-inner-wrp'), // 22
264 $fieldHelpers->getAtomicCls('option-search-wrp'), // 23
265 $fieldHelpers->getCustomAttributes('opt-search-input'), // 24
266 $fieldHelpers->getAtomicCls('opt-search-input'), // 25
267 $fieldHelpers->getCustomClasses('opt-search-input'), // 26
268 $searchPlaceholder, // 27
269 $fieldHelpers->getCustomAttributes('opt-search-icn'), // 28
270 $fieldHelpers->getAtomicCls('opt-search-icn'), // 29
271 $fieldHelpers->getCustomClasses('opt-search-icn'), // 30
272 $searchClearable, // 31
273 $fieldHelpers->getCustomAttributes('option-list'), // 32
274 $fieldHelpers->getAtomicCls('option-list'), // 33
275 $fieldHelpers->getCustomClasses('option-list'), // 34
276 $options // 35
277 );
278 }
279 }
280