minsky-webform-formkit 1.0.0
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.
- package/.pnp.cjs +11555 -0
- package/.pnp.loader.mjs +2126 -0
- package/LICENSE +21 -0
- package/README.md +324 -0
- package/dist/index.css +1 -0
- package/dist/index.js +1 -0
- package/package.json +55 -0
- package/src/components/FormKit/FormKitPhoneEnhanced/FormKitPhoneEnhanced.js +100 -0
- package/src/components/FormKit/FormKitPhoneEnhanced/FormKitPhoneEnhanced.vue +30 -0
- package/src/components/FormKit/FormKitPhoneEnhanced/countryCodes.js +1214 -0
- package/src/components/FormKit/FormKitRecaptcha/FormKitRecaptcha.vue +46 -0
- package/src/components/Icon.vue +38 -0
- package/src/components/InfoTooltip.vue +16 -0
- package/src/components/MinksyWebformFormKit/MinskyWebformFormKit.vue +357 -0
- package/src/components/MinksyWebformFormKit/_MinskyWebformFormKit.js +282 -0
- package/src/composables/useExample.js +0 -0
- package/src/formkit.config.js +72 -0
- package/src/index.mjs +20 -0
- package/src/plugins/customLabelPlugin.js +42 -0
- package/src/plugins/htmlHelpPlugin.js +23 -0
- package/src/rules/iban.js +9 -0
- package/src/rules/insz.js +21 -0
- package/src/rules/phone.js +29 -0
- package/src/rules/time.js +79 -0
- package/src/rules/vat.js +42 -0
- package/src/styles/_functions.scss +96 -0
- package/src/styles/_mixins.scss +29 -0
- package/src/styles/_variables.scss +7 -0
- package/src/styles/main.scss +11 -0
- package/src/styles/webform-formkit-multistep.scss +98 -0
- package/src/styles/webform-formkit.scss +215 -0
- package/src/styles/webform.scss +400 -0
- package/src/utils/functions.js +78 -0
- package/src/utils/lodash.js +208 -0
- package/src/utils/messages.js +37 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) [2024] [Minsky]
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
# Minsky Formkit Webform
|
|
2
|
+
|
|
3
|
+
Vue 3 module that integrates **Drupal Webforms** with **FormKit**, providing validation rules, multi-step support, localization, and styling utilities commonly required in Minsky projects.
|
|
4
|
+
|
|
5
|
+
## Local development
|
|
6
|
+
|
|
7
|
+
Install dependencies:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
yarn install
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Build the module:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
yarn run build
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Run the development environment:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
yarn run dev
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Using the package locally in another project
|
|
26
|
+
|
|
27
|
+
To install the module from a local path:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
yarn add /path-to-local-minsky-formkit-map
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
This is useful when developing the package and testing changes inside another project.
|
|
34
|
+
|
|
35
|
+
## Installation
|
|
36
|
+
|
|
37
|
+
Install from npm:
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
yarn add minsky-webform-formkit
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Peer dependencies
|
|
44
|
+
|
|
45
|
+
Ensure the following peer dependencies are installed in your project:
|
|
46
|
+
|
|
47
|
+
```json
|
|
48
|
+
"peerDependencies": {
|
|
49
|
+
"vue": "^3.3.0",
|
|
50
|
+
"@formkit/vue": "^1.7.0",
|
|
51
|
+
"@formkit/core": "^1.7.0",
|
|
52
|
+
"@formkit/addons": "^1.7.0",
|
|
53
|
+
"@formkit/i18n": "^1.7.0",
|
|
54
|
+
"gsap": "^3.12.0"
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
These dependencies are commonly used in FormKit projects and are required for the module to function correctly.
|
|
59
|
+
|
|
60
|
+
Install them if they are not already present:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
yarn add vue @formkit/vue @formkit/core @formkit/addons @formkit/i18n gsap
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Setup
|
|
67
|
+
|
|
68
|
+
Register the plugin in your Vue application together with your FormKit configuration.
|
|
69
|
+
|
|
70
|
+
**App.vue example**
|
|
71
|
+
|
|
72
|
+
```javascript
|
|
73
|
+
import { createApp } from 'vue';
|
|
74
|
+
import CustomApp from './CustomApp.vue';
|
|
75
|
+
|
|
76
|
+
import MinskyWebformFormKit from 'minsky-webform-formkit';
|
|
77
|
+
import customConfig from './formkit.config';
|
|
78
|
+
|
|
79
|
+
const app = createApp(CustomApp);
|
|
80
|
+
|
|
81
|
+
app.use(MinskyWebformFormKit, customConfig);
|
|
82
|
+
|
|
83
|
+
app.mount('#app');
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### FormKit configuration
|
|
87
|
+
|
|
88
|
+
The module provides a default FormKit configuration that includes:
|
|
89
|
+
|
|
90
|
+
- multi-step form support
|
|
91
|
+
- validation rules
|
|
92
|
+
- localization (NL / EN / FR)
|
|
93
|
+
- custom inputs (phone, recaptcha)
|
|
94
|
+
- custom plugins
|
|
95
|
+
|
|
96
|
+
Example default configuration:
|
|
97
|
+
|
|
98
|
+
```javascript
|
|
99
|
+
const config = {
|
|
100
|
+
plugins: [customLabelPlugin, htmlHelpPlugin, createMultiStepPlugin({ allowIncomplete: false })],
|
|
101
|
+
rules: {
|
|
102
|
+
internationalPhone,
|
|
103
|
+
phone,
|
|
104
|
+
iban,
|
|
105
|
+
vat,
|
|
106
|
+
insz,
|
|
107
|
+
timeRule,
|
|
108
|
+
},
|
|
109
|
+
messages: {
|
|
110
|
+
nl: {
|
|
111
|
+
validation: {
|
|
112
|
+
phone: 'Dit is geen geldig telefoonnummer.',
|
|
113
|
+
required: 'Dit veld is verplicht.',
|
|
114
|
+
vat: 'Dit is geen geldig Btw-nummer.',
|
|
115
|
+
is: 'Dit veld is verplicht.',
|
|
116
|
+
timeRule({ node }) {
|
|
117
|
+
return timeMessage(node);
|
|
118
|
+
},
|
|
119
|
+
},
|
|
120
|
+
},
|
|
121
|
+
en: {
|
|
122
|
+
validation: {
|
|
123
|
+
phone: 'This is not a valid phone number.',
|
|
124
|
+
required: 'This field is required.',
|
|
125
|
+
is: 'This field is required.',
|
|
126
|
+
vat: 'This is not a valid VAT number.',
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
fr: {
|
|
130
|
+
validation: {
|
|
131
|
+
phone: "Ce numéro de téléphone n'est pas valide.",
|
|
132
|
+
required: 'Ce champ est obligatoire.',
|
|
133
|
+
is: 'Ce champ est obligatoire.',
|
|
134
|
+
vat: "Ce numéro de TVA n'est pas valide.",
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
locales: { nl, en, fr },
|
|
139
|
+
locale: document.documentElement.lang,
|
|
140
|
+
inputs: {
|
|
141
|
+
phoneEnhanced: createInput(FormKitPhoneEnhanced),
|
|
142
|
+
recaptcha: createInput(FormKitRecaptcha),
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
|
|
146
|
+
export default config;
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
You can extend or override this configuration by passing your own config object when installing the plugin.
|
|
150
|
+
|
|
151
|
+
## Styles
|
|
152
|
+
|
|
153
|
+
Import the default styles in your main stylesheet:
|
|
154
|
+
|
|
155
|
+
```scss
|
|
156
|
+
@import 'minsky-webform-formkit/dist/index';
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Overriding styles
|
|
160
|
+
|
|
161
|
+
You can override CSS variables to customize the appearance of the form.
|
|
162
|
+
|
|
163
|
+
Example:
|
|
164
|
+
|
|
165
|
+
```scss
|
|
166
|
+
.webform-formkit--class-modifier {
|
|
167
|
+
/* ========================================================================= */
|
|
168
|
+
/* customize form here */
|
|
169
|
+
/* ========================================================================= */
|
|
170
|
+
--f-color: var(--c-blue-medium);
|
|
171
|
+
--f-markup-color: var(--c-blue-dark);
|
|
172
|
+
--f-input-text-color: var(--c-blue-medium);
|
|
173
|
+
--f-input-border-color: var(--c-blue-light);
|
|
174
|
+
--f-input-border-width: 0.1rem;
|
|
175
|
+
--f-input-border-radius: 0.6rem;
|
|
176
|
+
--f-input-padding: 1.5rem 2.4rem 1.3rem 2.4rem;
|
|
177
|
+
--f-input-outline: 0.2rem solid var(--c-primary);
|
|
178
|
+
--f-input-background-color: transparent;
|
|
179
|
+
--f-input-font-family: inherit;
|
|
180
|
+
--f-input-font-size: 1.6rem;
|
|
181
|
+
--f-input-placeholder-color: var(--c-blue-light);
|
|
182
|
+
--f-input-placeholder-font-style: inherit;
|
|
183
|
+
--f-input-height: 5.2rem;
|
|
184
|
+
--f-label-margin-bottom: 0.5rem;
|
|
185
|
+
|
|
186
|
+
// description
|
|
187
|
+
--f-description-color: var(--c-blue-dark);
|
|
188
|
+
|
|
189
|
+
// submit btn
|
|
190
|
+
--f-submit-btn-background-color: #000;
|
|
191
|
+
--f-submit-btn-text-color: #fff;
|
|
192
|
+
--f-submit-btn-border-color: #000;
|
|
193
|
+
--f-submit-btn-border-width: 1px;
|
|
194
|
+
--f-submit-btn-border-radius: 0;
|
|
195
|
+
--f-submit-btn-font-family: inherit;
|
|
196
|
+
--f-submit-btn-min-width: initial; // must be defined for mobile devices
|
|
197
|
+
--f-submit-btn-min-height: initial; // must be defined for mobile devices
|
|
198
|
+
--f-submit-btn-hover-text-color: #000;
|
|
199
|
+
--f-submit-btn-hover-background-color: #fff;
|
|
200
|
+
--f-submit-btn-hover-border-color: #000;
|
|
201
|
+
--f-submit-btn-disabled-background-color: #e5e5e5;
|
|
202
|
+
|
|
203
|
+
// radio-buttons & check-boxes
|
|
204
|
+
--f-radio-check-border-color: var(--c-blue-light);
|
|
205
|
+
--f-radio-check-background-color: #fff;
|
|
206
|
+
--f-radio-check-background-color-active: var(--c-primary);
|
|
207
|
+
--f-radio-check-decorater-height: 2rem;
|
|
208
|
+
|
|
209
|
+
// help element
|
|
210
|
+
--f-help-background-color: #000;
|
|
211
|
+
--f-help-color: #fff;
|
|
212
|
+
--f-help-border-color: #000;
|
|
213
|
+
|
|
214
|
+
// other
|
|
215
|
+
--f-form-gap: 1.2rem 2rem;
|
|
216
|
+
--f-error-color: #{$c-red-status};
|
|
217
|
+
--f-success-color: #{$c-green-status};
|
|
218
|
+
|
|
219
|
+
// webform-fornkit props
|
|
220
|
+
--f-loader-color: var(--c-primary);
|
|
221
|
+
|
|
222
|
+
// multistep
|
|
223
|
+
--f-multistep-background-color-tab: var(--c-blue-light);
|
|
224
|
+
--f-multistep-color-tab: var(--c-blue-dark);
|
|
225
|
+
--f-multistep-background-color-tab-active: var(--c-primary);
|
|
226
|
+
--f-multistep-color-tab-active: var(--c-white);
|
|
227
|
+
|
|
228
|
+
/* ========================================================================= */
|
|
229
|
+
/* custom styles */
|
|
230
|
+
/* ========================================================================= */
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Apply the modifier via the classModifier property.
|
|
235
|
+
|
|
236
|
+
## Component API
|
|
237
|
+
|
|
238
|
+
### Properties
|
|
239
|
+
|
|
240
|
+
| property | required | default | description |
|
|
241
|
+
| --------------- | -------- | ---------------------------------- | ----------------------------------------------------------------- |
|
|
242
|
+
| id | `true` | | Drupal Webform ID |
|
|
243
|
+
| api | optional | `window.location.origin` | API base URL used to fetch and submit the form |
|
|
244
|
+
| classModifier | optional | | CSS class modifier applied to the root element |
|
|
245
|
+
| defaults | optional | | Default form values |
|
|
246
|
+
| schemeProcessor | optional | | Function to transform the FormKit schema before rendering |
|
|
247
|
+
| submitProcessor | optional | | Function to transform submission payload before sending to Drupal |
|
|
248
|
+
| formDataAddons | optional | | Additional FormKit addons |
|
|
249
|
+
| forceRedirect | optional | `default: () => ({ bool: false })` | Force redirect after successful submission |
|
|
250
|
+
| cmpLibrary | optional | | Additional components available to the schema |
|
|
251
|
+
| messages | optional | `default: () => {}` | Override default UI messages |
|
|
252
|
+
| setUserData | optional | | Function that stores submitted form data in local storage |
|
|
253
|
+
|
|
254
|
+
## Slots
|
|
255
|
+
|
|
256
|
+
### Placeholder
|
|
257
|
+
|
|
258
|
+
Rendered before the form schema is loaded.
|
|
259
|
+
|
|
260
|
+
```vue
|
|
261
|
+
<template #placeholder>Loading...</template>
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### afterSchema
|
|
265
|
+
|
|
266
|
+
Rendered immediately after the FormKit schema.
|
|
267
|
+
|
|
268
|
+
```vue
|
|
269
|
+
<template #afterSchema>Additional content</template>
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## Messages
|
|
273
|
+
|
|
274
|
+
Default UI messages can be overridden.
|
|
275
|
+
|
|
276
|
+
Example:
|
|
277
|
+
|
|
278
|
+
```javascript
|
|
279
|
+
export default {
|
|
280
|
+
global: {
|
|
281
|
+
editor: {
|
|
282
|
+
error: 'Check that the form has been completed correctly. Ensure that no unnecessary conditional fields have been filled in.'
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
nl: {
|
|
286
|
+
messages: {
|
|
287
|
+
missing: 'Dit formulier ontbreekt. Controleer of het ID dat u gebruikt correct is.',
|
|
288
|
+
error: 'Er is iets misgegaan bij het laden van het formulier.'
|
|
289
|
+
},
|
|
290
|
+
success: {
|
|
291
|
+
title: 'Bedankt!',
|
|
292
|
+
message: 'We hebben je gegevens goed ontvangen.',
|
|
293
|
+
}
|
|
294
|
+
},
|
|
295
|
+
en: {...},
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
**Editor-only validation messages**
|
|
300
|
+
Editor-specific validation messages are only visible to users with editor or administrator roles.
|
|
301
|
+
To enable this behavior in Drupal, expose user roles via `drupalSettings`.
|
|
302
|
+
|
|
303
|
+
`JsSettingsHooks.php` implementation:
|
|
304
|
+
|
|
305
|
+
```php
|
|
306
|
+
<?php
|
|
307
|
+
|
|
308
|
+
namespace Drupal\minsky\Hook;
|
|
309
|
+
|
|
310
|
+
use Drupal\Core\Hook\Attribute\Hook;
|
|
311
|
+
|
|
312
|
+
class JsSettingsHooks {
|
|
313
|
+
|
|
314
|
+
#[Hook('js_settings_alter')]
|
|
315
|
+
public function jsSettingsAlter(array &$settings): void {
|
|
316
|
+
// Provide the user information in drupalSettings to allow JavaScript code to customize
|
|
317
|
+
// the experience for the end user, rather than the server side, which would
|
|
318
|
+
// break the render cache.
|
|
319
|
+
$user = \Drupal::currentUser();
|
|
320
|
+
$settings['user']['roles'] = $user->getRoles();
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
```
|
package/dist/index.css
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@import "floating-vue/dist/style.css";.bef-exposed-form,.webform,.webform-formkit{--f-color:#000;--f-markup-color:#000;--f-input-text-color:#000;--f-input-border-color:#000;--f-input-border-width:1px;--f-input-border-radius:0;--f-input-padding:0.4em 0.6em;--f-input-outline:grey solid;--f-input-background-color:transparent;--f-input-font-family:inherit;--f-input-font-size:1.6rem;--f-input-placeholder-color:grey;--f-input-placeholder-font-style:inherit;--f-input-height:2.3em;--f-label-margin-bottom:0.2em;--f-description-color:#000;--f-submit-btn-background-color:#000;--f-submit-btn-text-color:#fff;--f-submit-btn-border-color:#000;--f-submit-btn-border-width:1px;--f-submit-btn-border-radius:0;--f-submit-btn-font-family:inherit;--f-submit-btn-min-width:13.4rem;--f-submit-btn-min-height:4.8rem;--f-submit-btn-hover-text-color:#000;--f-submit-btn-hover-background-color:#fff;--f-submit-btn-hover-border-color:#000;--f-submit-btn-disabled-background-color:#e5e5e5;--f-radio-check-border-color:#000;--f-radio-check-background-color:#fff;--f-radio-check-background-color-active:#e5e5e5;--f-radio-check-decorater-height:1.6rem;--f-help-background-color:#000;--f-help-color:#fff;--f-help-border-color:#000;--f-form-gap:1.5em;--f-error-color:red;--f-success-color:green;--f-loader-color:#000;--f-multistep-background-color-tab:#e5e5e5;--f-multistep-color-tab:#000;--f-multistep-background-color-tab-active:#000;--f-multistep-color-tab-active:#fff;box-sizing:border-box}.bef-exposed-form *,.webform *,.webform-formkit *{box-sizing:border-box}.bef-exposed-form form,.webform form,.webform-formkit form{color:var(--f-color)}.bef-exposed-form .form-item-markup,.bef-exposed-form .formkit-markup,.webform .form-item-markup,.webform .formkit-markup,.webform-formkit .form-item-markup,.webform-formkit .formkit-markup{color:var(--f-markup-color)}.bef-exposed-form input::-webkit-inner-spin-button,.bef-exposed-form input::-webkit-outer-spin-button,.webform input::-webkit-inner-spin-button,.webform input::-webkit-outer-spin-button,.webform-formkit input::-webkit-inner-spin-button,.webform-formkit input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.bef-exposed-form input[type=number],.webform input[type=number],.webform-formkit input[type=number]{-moz-appearance:textfield}.bef-exposed-form .form-item input[elementtype=date],.bef-exposed-form .form-item input[type=date],.bef-exposed-form .form-item input[type=email],.bef-exposed-form .form-item input[type=mask],.bef-exposed-form .form-item input[type=number],.bef-exposed-form .form-item input[type=tel],.bef-exposed-form .form-item input[type=text],.bef-exposed-form .form-item input[type=time],.bef-exposed-form .form-item input[type=url],.bef-exposed-form .form-item select,.bef-exposed-form .form-item textarea,.bef-exposed-form .formkit-outer input[elementtype=date],.bef-exposed-form .formkit-outer input[type=date],.bef-exposed-form .formkit-outer input[type=email],.bef-exposed-form .formkit-outer input[type=mask],.bef-exposed-form .formkit-outer input[type=number],.bef-exposed-form .formkit-outer input[type=tel],.bef-exposed-form .formkit-outer input[type=text],.bef-exposed-form .formkit-outer input[type=time],.bef-exposed-form .formkit-outer input[type=url],.bef-exposed-form .formkit-outer select,.bef-exposed-form .formkit-outer textarea,.webform .form-item input[elementtype=date],.webform .form-item input[type=date],.webform .form-item input[type=email],.webform .form-item input[type=mask],.webform .form-item input[type=number],.webform .form-item input[type=tel],.webform .form-item input[type=text],.webform .form-item input[type=time],.webform .form-item input[type=url],.webform .form-item select,.webform .form-item textarea,.webform .formkit-outer input[elementtype=date],.webform .formkit-outer input[type=date],.webform .formkit-outer input[type=email],.webform .formkit-outer input[type=mask],.webform .formkit-outer input[type=number],.webform .formkit-outer input[type=tel],.webform .formkit-outer input[type=text],.webform .formkit-outer input[type=time],.webform .formkit-outer input[type=url],.webform .formkit-outer select,.webform .formkit-outer textarea,.webform-formkit .form-item input[elementtype=date],.webform-formkit .form-item input[type=date],.webform-formkit .form-item input[type=email],.webform-formkit .form-item input[type=mask],.webform-formkit .form-item input[type=number],.webform-formkit .form-item input[type=tel],.webform-formkit .form-item input[type=text],.webform-formkit .form-item input[type=time],.webform-formkit .form-item input[type=url],.webform-formkit .form-item select,.webform-formkit .form-item textarea,.webform-formkit .formkit-outer input[elementtype=date],.webform-formkit .formkit-outer input[type=date],.webform-formkit .formkit-outer input[type=email],.webform-formkit .formkit-outer input[type=mask],.webform-formkit .formkit-outer input[type=number],.webform-formkit .formkit-outer input[type=tel],.webform-formkit .formkit-outer input[type=text],.webform-formkit .formkit-outer input[type=time],.webform-formkit .formkit-outer input[type=url],.webform-formkit .formkit-outer select,.webform-formkit .formkit-outer textarea{appearance:none;background-color:var(--f-input-background-color);border-color:var(--f-input-border-color);border-radius:var(--f-input-border-radius);border-style:solid;border-width:var(--f-input-border-width);box-shadow:none;color:var(--f-input-text-color);font-family:var(--f-input-font-family);font-size:var(--f-input-font-size);padding:var(--f-input-padding);width:100%}.bef-exposed-form .form-item input[elementtype=date]::placeholder,.bef-exposed-form .form-item input[type=date]::placeholder,.bef-exposed-form .form-item input[type=email]::placeholder,.bef-exposed-form .form-item input[type=mask]::placeholder,.bef-exposed-form .form-item input[type=number]::placeholder,.bef-exposed-form .form-item input[type=tel]::placeholder,.bef-exposed-form .form-item input[type=text]::placeholder,.bef-exposed-form .form-item input[type=time]::placeholder,.bef-exposed-form .form-item input[type=url]::placeholder,.bef-exposed-form .form-item select::placeholder,.bef-exposed-form .form-item textarea::placeholder,.bef-exposed-form .formkit-outer input[elementtype=date]::placeholder,.bef-exposed-form .formkit-outer input[type=date]::placeholder,.bef-exposed-form .formkit-outer input[type=email]::placeholder,.bef-exposed-form .formkit-outer input[type=mask]::placeholder,.bef-exposed-form .formkit-outer input[type=number]::placeholder,.bef-exposed-form .formkit-outer input[type=tel]::placeholder,.bef-exposed-form .formkit-outer input[type=text]::placeholder,.bef-exposed-form .formkit-outer input[type=time]::placeholder,.bef-exposed-form .formkit-outer input[type=url]::placeholder,.bef-exposed-form .formkit-outer select::placeholder,.bef-exposed-form .formkit-outer textarea::placeholder,.webform .form-item input[elementtype=date]::placeholder,.webform .form-item input[type=date]::placeholder,.webform .form-item input[type=email]::placeholder,.webform .form-item input[type=mask]::placeholder,.webform .form-item input[type=number]::placeholder,.webform .form-item input[type=tel]::placeholder,.webform .form-item input[type=text]::placeholder,.webform .form-item input[type=time]::placeholder,.webform .form-item input[type=url]::placeholder,.webform .form-item select::placeholder,.webform .form-item textarea::placeholder,.webform .formkit-outer input[elementtype=date]::placeholder,.webform .formkit-outer input[type=date]::placeholder,.webform .formkit-outer input[type=email]::placeholder,.webform .formkit-outer input[type=mask]::placeholder,.webform .formkit-outer input[type=number]::placeholder,.webform .formkit-outer input[type=tel]::placeholder,.webform .formkit-outer input[type=text]::placeholder,.webform .formkit-outer input[type=time]::placeholder,.webform .formkit-outer input[type=url]::placeholder,.webform .formkit-outer select::placeholder,.webform .formkit-outer textarea::placeholder,.webform-formkit .form-item input[elementtype=date]::placeholder,.webform-formkit .form-item input[type=date]::placeholder,.webform-formkit .form-item input[type=email]::placeholder,.webform-formkit .form-item input[type=mask]::placeholder,.webform-formkit .form-item input[type=number]::placeholder,.webform-formkit .form-item input[type=tel]::placeholder,.webform-formkit .form-item input[type=text]::placeholder,.webform-formkit .form-item input[type=time]::placeholder,.webform-formkit .form-item input[type=url]::placeholder,.webform-formkit .form-item select::placeholder,.webform-formkit .form-item textarea::placeholder,.webform-formkit .formkit-outer input[elementtype=date]::placeholder,.webform-formkit .formkit-outer input[type=date]::placeholder,.webform-formkit .formkit-outer input[type=email]::placeholder,.webform-formkit .formkit-outer input[type=mask]::placeholder,.webform-formkit .formkit-outer input[type=number]::placeholder,.webform-formkit .formkit-outer input[type=tel]::placeholder,.webform-formkit .formkit-outer input[type=text]::placeholder,.webform-formkit .formkit-outer input[type=time]::placeholder,.webform-formkit .formkit-outer input[type=url]::placeholder,.webform-formkit .formkit-outer select::placeholder,.webform-formkit .formkit-outer textarea::placeholder{color:var(--f-input-placeholder-color);font-style:var(--f-input-placeholder-font-style);transition:opacity .25s ease}.bef-exposed-form .form-item input[elementtype=date]:focus,.bef-exposed-form .form-item input[type=date]:focus,.bef-exposed-form .form-item input[type=email]:focus,.bef-exposed-form .form-item input[type=mask]:focus,.bef-exposed-form .form-item input[type=number]:focus,.bef-exposed-form .form-item input[type=tel]:focus,.bef-exposed-form .form-item input[type=text]:focus,.bef-exposed-form .form-item input[type=time]:focus,.bef-exposed-form .form-item input[type=url]:focus,.bef-exposed-form .form-item select:focus,.bef-exposed-form .form-item textarea:focus,.bef-exposed-form .formkit-outer input[elementtype=date]:focus,.bef-exposed-form .formkit-outer input[type=date]:focus,.bef-exposed-form .formkit-outer input[type=email]:focus,.bef-exposed-form .formkit-outer input[type=mask]:focus,.bef-exposed-form .formkit-outer input[type=number]:focus,.bef-exposed-form .formkit-outer input[type=tel]:focus,.bef-exposed-form .formkit-outer input[type=text]:focus,.bef-exposed-form .formkit-outer input[type=time]:focus,.bef-exposed-form .formkit-outer input[type=url]:focus,.bef-exposed-form .formkit-outer select:focus,.bef-exposed-form .formkit-outer textarea:focus,.webform .form-item input[elementtype=date]:focus,.webform .form-item input[type=date]:focus,.webform .form-item input[type=email]:focus,.webform .form-item input[type=mask]:focus,.webform .form-item input[type=number]:focus,.webform .form-item input[type=tel]:focus,.webform .form-item input[type=text]:focus,.webform .form-item input[type=time]:focus,.webform .form-item input[type=url]:focus,.webform .form-item select:focus,.webform .form-item textarea:focus,.webform .formkit-outer input[elementtype=date]:focus,.webform .formkit-outer input[type=date]:focus,.webform .formkit-outer input[type=email]:focus,.webform .formkit-outer input[type=mask]:focus,.webform .formkit-outer input[type=number]:focus,.webform .formkit-outer input[type=tel]:focus,.webform .formkit-outer input[type=text]:focus,.webform .formkit-outer input[type=time]:focus,.webform .formkit-outer input[type=url]:focus,.webform .formkit-outer select:focus,.webform .formkit-outer textarea:focus,.webform-formkit .form-item input[elementtype=date]:focus,.webform-formkit .form-item input[type=date]:focus,.webform-formkit .form-item input[type=email]:focus,.webform-formkit .form-item input[type=mask]:focus,.webform-formkit .form-item input[type=number]:focus,.webform-formkit .form-item input[type=tel]:focus,.webform-formkit .form-item input[type=text]:focus,.webform-formkit .form-item input[type=time]:focus,.webform-formkit .form-item input[type=url]:focus,.webform-formkit .form-item select:focus,.webform-formkit .form-item textarea:focus,.webform-formkit .formkit-outer input[elementtype=date]:focus,.webform-formkit .formkit-outer input[type=date]:focus,.webform-formkit .formkit-outer input[type=email]:focus,.webform-formkit .formkit-outer input[type=mask]:focus,.webform-formkit .formkit-outer input[type=number]:focus,.webform-formkit .formkit-outer input[type=tel]:focus,.webform-formkit .formkit-outer input[type=text]:focus,.webform-formkit .formkit-outer input[type=time]:focus,.webform-formkit .formkit-outer input[type=url]:focus,.webform-formkit .formkit-outer select:focus,.webform-formkit .formkit-outer textarea:focus{outline:var(--f-input-outline)}.bef-exposed-form .form-item input[elementtype=date]:focus::placeholder,.bef-exposed-form .form-item input[type=date]:focus::placeholder,.bef-exposed-form .form-item input[type=email]:focus::placeholder,.bef-exposed-form .form-item input[type=mask]:focus::placeholder,.bef-exposed-form .form-item input[type=number]:focus::placeholder,.bef-exposed-form .form-item input[type=tel]:focus::placeholder,.bef-exposed-form .form-item input[type=text]:focus::placeholder,.bef-exposed-form .form-item input[type=time]:focus::placeholder,.bef-exposed-form .form-item input[type=url]:focus::placeholder,.bef-exposed-form .form-item select:focus::placeholder,.bef-exposed-form .form-item textarea:focus::placeholder,.bef-exposed-form .formkit-outer input[elementtype=date]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=date]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=email]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=mask]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=number]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=tel]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=text]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=time]:focus::placeholder,.bef-exposed-form .formkit-outer input[type=url]:focus::placeholder,.bef-exposed-form .formkit-outer select:focus::placeholder,.bef-exposed-form .formkit-outer textarea:focus::placeholder,.webform .form-item input[elementtype=date]:focus::placeholder,.webform .form-item input[type=date]:focus::placeholder,.webform .form-item input[type=email]:focus::placeholder,.webform .form-item input[type=mask]:focus::placeholder,.webform .form-item input[type=number]:focus::placeholder,.webform .form-item input[type=tel]:focus::placeholder,.webform .form-item input[type=text]:focus::placeholder,.webform .form-item input[type=time]:focus::placeholder,.webform .form-item input[type=url]:focus::placeholder,.webform .form-item select:focus::placeholder,.webform .form-item textarea:focus::placeholder,.webform .formkit-outer input[elementtype=date]:focus::placeholder,.webform .formkit-outer input[type=date]:focus::placeholder,.webform .formkit-outer input[type=email]:focus::placeholder,.webform .formkit-outer input[type=mask]:focus::placeholder,.webform .formkit-outer input[type=number]:focus::placeholder,.webform .formkit-outer input[type=tel]:focus::placeholder,.webform .formkit-outer input[type=text]:focus::placeholder,.webform .formkit-outer input[type=time]:focus::placeholder,.webform .formkit-outer input[type=url]:focus::placeholder,.webform .formkit-outer select:focus::placeholder,.webform .formkit-outer textarea:focus::placeholder,.webform-formkit .form-item input[elementtype=date]:focus::placeholder,.webform-formkit .form-item input[type=date]:focus::placeholder,.webform-formkit .form-item input[type=email]:focus::placeholder,.webform-formkit .form-item input[type=mask]:focus::placeholder,.webform-formkit .form-item input[type=number]:focus::placeholder,.webform-formkit .form-item input[type=tel]:focus::placeholder,.webform-formkit .form-item input[type=text]:focus::placeholder,.webform-formkit .form-item input[type=time]:focus::placeholder,.webform-formkit .form-item input[type=url]:focus::placeholder,.webform-formkit .form-item select:focus::placeholder,.webform-formkit .form-item textarea:focus::placeholder,.webform-formkit .formkit-outer input[elementtype=date]:focus::placeholder,.webform-formkit .formkit-outer input[type=date]:focus::placeholder,.webform-formkit .formkit-outer input[type=email]:focus::placeholder,.webform-formkit .formkit-outer input[type=mask]:focus::placeholder,.webform-formkit .formkit-outer input[type=number]:focus::placeholder,.webform-formkit .formkit-outer input[type=tel]:focus::placeholder,.webform-formkit .formkit-outer input[type=text]:focus::placeholder,.webform-formkit .formkit-outer input[type=time]:focus::placeholder,.webform-formkit .formkit-outer input[type=url]:focus::placeholder,.webform-formkit .formkit-outer select:focus::placeholder,.webform-formkit .formkit-outer textarea:focus::placeholder{opacity:.5}.bef-exposed-form .form-item input[elementtype=date].form-item--error input,.bef-exposed-form .form-item input[elementtype=date].form-item--error select,.bef-exposed-form .form-item input[elementtype=date].form-item--error textarea,.bef-exposed-form .form-item input[type=date].form-item--error input,.bef-exposed-form .form-item input[type=date].form-item--error select,.bef-exposed-form .form-item input[type=date].form-item--error textarea,.bef-exposed-form .form-item input[type=email].form-item--error input,.bef-exposed-form .form-item input[type=email].form-item--error select,.bef-exposed-form .form-item input[type=email].form-item--error textarea,.bef-exposed-form .form-item input[type=mask].form-item--error input,.bef-exposed-form .form-item input[type=mask].form-item--error select,.bef-exposed-form .form-item input[type=mask].form-item--error textarea,.bef-exposed-form .form-item input[type=number].form-item--error input,.bef-exposed-form .form-item input[type=number].form-item--error select,.bef-exposed-form .form-item input[type=number].form-item--error textarea,.bef-exposed-form .form-item input[type=tel].form-item--error input,.bef-exposed-form .form-item input[type=tel].form-item--error select,.bef-exposed-form .form-item input[type=tel].form-item--error textarea,.bef-exposed-form .form-item input[type=text].form-item--error input,.bef-exposed-form .form-item input[type=text].form-item--error select,.bef-exposed-form .form-item input[type=text].form-item--error textarea,.bef-exposed-form .form-item input[type=time].form-item--error input,.bef-exposed-form .form-item input[type=time].form-item--error select,.bef-exposed-form .form-item input[type=time].form-item--error textarea,.bef-exposed-form .form-item input[type=url].form-item--error input,.bef-exposed-form .form-item input[type=url].form-item--error select,.bef-exposed-form .form-item input[type=url].form-item--error textarea,.bef-exposed-form .form-item select.form-item--error input,.bef-exposed-form .form-item select.form-item--error select,.bef-exposed-form .form-item select.form-item--error textarea,.bef-exposed-form .form-item textarea.form-item--error input,.bef-exposed-form .form-item textarea.form-item--error select,.bef-exposed-form .form-item textarea.form-item--error textarea,.bef-exposed-form .formkit-outer input[elementtype=date].form-item--error input,.bef-exposed-form .formkit-outer input[elementtype=date].form-item--error select,.bef-exposed-form .formkit-outer input[elementtype=date].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=date].form-item--error input,.bef-exposed-form .formkit-outer input[type=date].form-item--error select,.bef-exposed-form .formkit-outer input[type=date].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=email].form-item--error input,.bef-exposed-form .formkit-outer input[type=email].form-item--error select,.bef-exposed-form .formkit-outer input[type=email].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=mask].form-item--error input,.bef-exposed-form .formkit-outer input[type=mask].form-item--error select,.bef-exposed-form .formkit-outer input[type=mask].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=number].form-item--error input,.bef-exposed-form .formkit-outer input[type=number].form-item--error select,.bef-exposed-form .formkit-outer input[type=number].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=tel].form-item--error input,.bef-exposed-form .formkit-outer input[type=tel].form-item--error select,.bef-exposed-form .formkit-outer input[type=tel].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=text].form-item--error input,.bef-exposed-form .formkit-outer input[type=text].form-item--error select,.bef-exposed-form .formkit-outer input[type=text].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=time].form-item--error input,.bef-exposed-form .formkit-outer input[type=time].form-item--error select,.bef-exposed-form .formkit-outer input[type=time].form-item--error textarea,.bef-exposed-form .formkit-outer input[type=url].form-item--error input,.bef-exposed-form .formkit-outer input[type=url].form-item--error select,.bef-exposed-form .formkit-outer input[type=url].form-item--error textarea,.bef-exposed-form .formkit-outer select.form-item--error input,.bef-exposed-form .formkit-outer select.form-item--error select,.bef-exposed-form .formkit-outer select.form-item--error textarea,.bef-exposed-form .formkit-outer textarea.form-item--error input,.bef-exposed-form .formkit-outer textarea.form-item--error select,.bef-exposed-form .formkit-outer textarea.form-item--error textarea,.webform .form-item input[elementtype=date].form-item--error input,.webform .form-item input[elementtype=date].form-item--error select,.webform .form-item input[elementtype=date].form-item--error textarea,.webform .form-item input[type=date].form-item--error input,.webform .form-item input[type=date].form-item--error select,.webform .form-item input[type=date].form-item--error textarea,.webform .form-item input[type=email].form-item--error input,.webform .form-item input[type=email].form-item--error select,.webform .form-item input[type=email].form-item--error textarea,.webform .form-item input[type=mask].form-item--error input,.webform .form-item input[type=mask].form-item--error select,.webform .form-item input[type=mask].form-item--error textarea,.webform .form-item input[type=number].form-item--error input,.webform .form-item input[type=number].form-item--error select,.webform .form-item input[type=number].form-item--error textarea,.webform .form-item input[type=tel].form-item--error input,.webform .form-item input[type=tel].form-item--error select,.webform .form-item input[type=tel].form-item--error textarea,.webform .form-item input[type=text].form-item--error input,.webform .form-item input[type=text].form-item--error select,.webform .form-item input[type=text].form-item--error textarea,.webform .form-item input[type=time].form-item--error input,.webform .form-item input[type=time].form-item--error select,.webform .form-item input[type=time].form-item--error textarea,.webform .form-item input[type=url].form-item--error input,.webform .form-item input[type=url].form-item--error select,.webform .form-item input[type=url].form-item--error textarea,.webform .form-item select.form-item--error input,.webform .form-item select.form-item--error select,.webform .form-item select.form-item--error textarea,.webform .form-item textarea.form-item--error input,.webform .form-item textarea.form-item--error select,.webform .form-item textarea.form-item--error textarea,.webform .formkit-outer input[elementtype=date].form-item--error input,.webform .formkit-outer input[elementtype=date].form-item--error select,.webform .formkit-outer input[elementtype=date].form-item--error textarea,.webform .formkit-outer input[type=date].form-item--error input,.webform .formkit-outer input[type=date].form-item--error select,.webform .formkit-outer input[type=date].form-item--error textarea,.webform .formkit-outer input[type=email].form-item--error input,.webform .formkit-outer input[type=email].form-item--error select,.webform .formkit-outer input[type=email].form-item--error textarea,.webform .formkit-outer input[type=mask].form-item--error input,.webform .formkit-outer input[type=mask].form-item--error select,.webform .formkit-outer input[type=mask].form-item--error textarea,.webform .formkit-outer input[type=number].form-item--error input,.webform .formkit-outer input[type=number].form-item--error select,.webform .formkit-outer input[type=number].form-item--error textarea,.webform .formkit-outer input[type=tel].form-item--error input,.webform .formkit-outer input[type=tel].form-item--error select,.webform .formkit-outer input[type=tel].form-item--error textarea,.webform .formkit-outer input[type=text].form-item--error input,.webform .formkit-outer input[type=text].form-item--error select,.webform .formkit-outer input[type=text].form-item--error textarea,.webform .formkit-outer input[type=time].form-item--error input,.webform .formkit-outer input[type=time].form-item--error select,.webform .formkit-outer input[type=time].form-item--error textarea,.webform .formkit-outer input[type=url].form-item--error input,.webform .formkit-outer input[type=url].form-item--error select,.webform .formkit-outer input[type=url].form-item--error textarea,.webform .formkit-outer select.form-item--error input,.webform .formkit-outer select.form-item--error select,.webform .formkit-outer select.form-item--error textarea,.webform .formkit-outer textarea.form-item--error input,.webform .formkit-outer textarea.form-item--error select,.webform .formkit-outer textarea.form-item--error textarea,.webform-formkit .form-item input[elementtype=date].form-item--error input,.webform-formkit .form-item input[elementtype=date].form-item--error select,.webform-formkit .form-item input[elementtype=date].form-item--error textarea,.webform-formkit .form-item input[type=date].form-item--error input,.webform-formkit .form-item input[type=date].form-item--error select,.webform-formkit .form-item input[type=date].form-item--error textarea,.webform-formkit .form-item input[type=email].form-item--error input,.webform-formkit .form-item input[type=email].form-item--error select,.webform-formkit .form-item input[type=email].form-item--error textarea,.webform-formkit .form-item input[type=mask].form-item--error input,.webform-formkit .form-item input[type=mask].form-item--error select,.webform-formkit .form-item input[type=mask].form-item--error textarea,.webform-formkit .form-item input[type=number].form-item--error input,.webform-formkit .form-item input[type=number].form-item--error select,.webform-formkit .form-item input[type=number].form-item--error textarea,.webform-formkit .form-item input[type=tel].form-item--error input,.webform-formkit .form-item input[type=tel].form-item--error select,.webform-formkit .form-item input[type=tel].form-item--error textarea,.webform-formkit .form-item input[type=text].form-item--error input,.webform-formkit .form-item input[type=text].form-item--error select,.webform-formkit .form-item input[type=text].form-item--error textarea,.webform-formkit .form-item input[type=time].form-item--error input,.webform-formkit .form-item input[type=time].form-item--error select,.webform-formkit .form-item input[type=time].form-item--error textarea,.webform-formkit .form-item input[type=url].form-item--error input,.webform-formkit .form-item input[type=url].form-item--error select,.webform-formkit .form-item input[type=url].form-item--error textarea,.webform-formkit .form-item select.form-item--error input,.webform-formkit .form-item select.form-item--error select,.webform-formkit .form-item select.form-item--error textarea,.webform-formkit .form-item textarea.form-item--error input,.webform-formkit .form-item textarea.form-item--error select,.webform-formkit .form-item textarea.form-item--error textarea,.webform-formkit .formkit-outer input[elementtype=date].form-item--error input,.webform-formkit .formkit-outer input[elementtype=date].form-item--error select,.webform-formkit .formkit-outer input[elementtype=date].form-item--error textarea,.webform-formkit .formkit-outer input[type=date].form-item--error input,.webform-formkit .formkit-outer input[type=date].form-item--error select,.webform-formkit .formkit-outer input[type=date].form-item--error textarea,.webform-formkit .formkit-outer input[type=email].form-item--error input,.webform-formkit .formkit-outer input[type=email].form-item--error select,.webform-formkit .formkit-outer input[type=email].form-item--error textarea,.webform-formkit .formkit-outer input[type=mask].form-item--error input,.webform-formkit .formkit-outer input[type=mask].form-item--error select,.webform-formkit .formkit-outer input[type=mask].form-item--error textarea,.webform-formkit .formkit-outer input[type=number].form-item--error input,.webform-formkit .formkit-outer input[type=number].form-item--error select,.webform-formkit .formkit-outer input[type=number].form-item--error textarea,.webform-formkit .formkit-outer input[type=tel].form-item--error input,.webform-formkit .formkit-outer input[type=tel].form-item--error select,.webform-formkit .formkit-outer input[type=tel].form-item--error textarea,.webform-formkit .formkit-outer input[type=text].form-item--error input,.webform-formkit .formkit-outer input[type=text].form-item--error select,.webform-formkit .formkit-outer input[type=text].form-item--error textarea,.webform-formkit .formkit-outer input[type=time].form-item--error input,.webform-formkit .formkit-outer input[type=time].form-item--error select,.webform-formkit .formkit-outer input[type=time].form-item--error textarea,.webform-formkit .formkit-outer input[type=url].form-item--error input,.webform-formkit .formkit-outer input[type=url].form-item--error select,.webform-formkit .formkit-outer input[type=url].form-item--error textarea,.webform-formkit .formkit-outer select.form-item--error input,.webform-formkit .formkit-outer select.form-item--error select,.webform-formkit .formkit-outer select.form-item--error textarea,.webform-formkit .formkit-outer textarea.form-item--error input,.webform-formkit .formkit-outer textarea.form-item--error select,.webform-formkit .formkit-outer textarea.form-item--error textarea{border-color:var(--f-error-color)}.bef-exposed-form .form-item input[type=date],.bef-exposed-form .form-item input[type=email],.bef-exposed-form .form-item input[type=mask],.bef-exposed-form .form-item input[type=number],.bef-exposed-form .form-item input[type=tel],.bef-exposed-form .form-item input[type=text],.bef-exposed-form .form-item input[type=time],.bef-exposed-form .form-item input[type=url],.bef-exposed-form .form-item select,.bef-exposed-form .formkit-outer input[type=date],.bef-exposed-form .formkit-outer input[type=email],.bef-exposed-form .formkit-outer input[type=mask],.bef-exposed-form .formkit-outer input[type=number],.bef-exposed-form .formkit-outer input[type=tel],.bef-exposed-form .formkit-outer input[type=text],.bef-exposed-form .formkit-outer input[type=time],.bef-exposed-form .formkit-outer input[type=url],.bef-exposed-form .formkit-outer select,.webform .form-item input[type=date],.webform .form-item input[type=email],.webform .form-item input[type=mask],.webform .form-item input[type=number],.webform .form-item input[type=tel],.webform .form-item input[type=text],.webform .form-item input[type=time],.webform .form-item input[type=url],.webform .form-item select,.webform .formkit-outer input[type=date],.webform .formkit-outer input[type=email],.webform .formkit-outer input[type=mask],.webform .formkit-outer input[type=number],.webform .formkit-outer input[type=tel],.webform .formkit-outer input[type=text],.webform .formkit-outer input[type=time],.webform .formkit-outer input[type=url],.webform .formkit-outer select,.webform-formkit .form-item input[type=date],.webform-formkit .form-item input[type=email],.webform-formkit .form-item input[type=mask],.webform-formkit .form-item input[type=number],.webform-formkit .form-item input[type=tel],.webform-formkit .form-item input[type=text],.webform-formkit .form-item input[type=time],.webform-formkit .form-item input[type=url],.webform-formkit .form-item select,.webform-formkit .formkit-outer input[type=date],.webform-formkit .formkit-outer input[type=email],.webform-formkit .formkit-outer input[type=mask],.webform-formkit .formkit-outer input[type=number],.webform-formkit .formkit-outer input[type=tel],.webform-formkit .formkit-outer input[type=text],.webform-formkit .formkit-outer input[type=time],.webform-formkit .formkit-outer input[type=url],.webform-formkit .formkit-outer select{height:var(--f-input-height);line-height:1.1}.bef-exposed-form .form-item input[type=date],.bef-exposed-form .form-item input[type=time],.bef-exposed-form .formkit-outer input[type=date],.bef-exposed-form .formkit-outer input[type=time],.webform .form-item input[type=date],.webform .form-item input[type=time],.webform .formkit-outer input[type=date],.webform .formkit-outer input[type=time],.webform-formkit .form-item input[type=date],.webform-formkit .form-item input[type=time],.webform-formkit .formkit-outer input[type=date],.webform-formkit .formkit-outer input[type=time]{display:block;line-height:1.5em;min-width:15rem}.bef-exposed-form .form-item input[type=date],.bef-exposed-form .formkit-outer input[type=date],.webform .form-item input[type=date],.webform .formkit-outer input[type=date],.webform-formkit .form-item input[type=date],.webform-formkit .formkit-outer input[type=date]{display:flex;text-align:left}.bef-exposed-form .form-item input::-webkit-date-and-time-value,.bef-exposed-form .formkit-outer input::-webkit-date-and-time-value,.webform .form-item input::-webkit-date-and-time-value,.webform .formkit-outer input::-webkit-date-and-time-value,.webform-formkit .form-item input::-webkit-date-and-time-value,.webform-formkit .formkit-outer input::-webkit-date-and-time-value{text-align:left}.bef-exposed-form .form-item .formkit-label,.bef-exposed-form .form-item>label,.bef-exposed-form .formkit-outer .formkit-label,.bef-exposed-form .formkit-outer>label,.webform .form-item .formkit-label,.webform .form-item>label,.webform .formkit-outer .formkit-label,.webform .formkit-outer>label,.webform-formkit .form-item .formkit-label,.webform-formkit .form-item>label,.webform-formkit .formkit-outer .formkit-label,.webform-formkit .formkit-outer>label{display:inline-block;margin-bottom:var(--f-label-margin-bottom);padding-right:.6em}.bef-exposed-form .form-item .formkit-label .info-tooltip,.bef-exposed-form .form-item>label .info-tooltip,.bef-exposed-form .formkit-outer .formkit-label .info-tooltip,.bef-exposed-form .formkit-outer>label .info-tooltip,.webform .form-item .formkit-label .info-tooltip,.webform .form-item>label .info-tooltip,.webform .formkit-outer .formkit-label .info-tooltip,.webform .formkit-outer>label .info-tooltip,.webform-formkit .form-item .formkit-label .info-tooltip,.webform-formkit .form-item>label .info-tooltip,.webform-formkit .formkit-outer .formkit-label .info-tooltip,.webform-formkit .formkit-outer>label .info-tooltip{display:inline-block;margin-left:.25em;position:relative;top:.3rem}.bef-exposed-form .form-item select,.bef-exposed-form .formkit-outer select,.webform .form-item select,.webform .formkit-outer select,.webform-formkit .form-item select,.webform-formkit .formkit-outer select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 12 7'%3E%3Cpath fill='currentColor' fill-rule='evenodd' d='M.244.244a.833.833 0 0 1 1.179 0l4.41 4.41 4.411-4.41a.833.833 0 1 1 1.179 1.179l-5 5a.833.833 0 0 1-1.179 0l-5-5a.833.833 0 0 1 0-1.179' clip-rule='evenodd'/%3E%3C/svg%3E");background-position:calc(100% - 1rem);background-repeat:no-repeat;background-size:.7em;cursor:pointer;min-width:12rem;padding-right:3rem}.bef-exposed-form .form-item textarea,.bef-exposed-form .formkit-outer textarea,.webform .form-item textarea,.webform .formkit-outer textarea,.webform-formkit .form-item textarea,.webform-formkit .formkit-outer textarea{display:flex}.bef-exposed-form .form-actions button[type=submit],.bef-exposed-form .form-actions input[type=submit],.bef-exposed-form .formkit-actions button[type=submit],.bef-exposed-form .formkit-actions input[type=submit],.bef-exposed-form .formkit-outer button[type=submit],.bef-exposed-form .formkit-outer input[type=submit],.webform .form-actions button[type=submit],.webform .form-actions input[type=submit],.webform .formkit-actions button[type=submit],.webform .formkit-actions input[type=submit],.webform .formkit-outer button[type=submit],.webform .formkit-outer input[type=submit],.webform-formkit .form-actions button[type=submit],.webform-formkit .form-actions input[type=submit],.webform-formkit .formkit-actions button[type=submit],.webform-formkit .formkit-actions input[type=submit],.webform-formkit .formkit-outer button[type=submit],.webform-formkit .formkit-outer input[type=submit]{appearance:none;background-color:var(--f-submit-btn-background-color);border-color:var(--f-submit-btn-border-color);border-radius:var(--f-submit-btn-border-radius);border-width:var(--f-submit-btn-border-width);box-shadow:none;color:var(--f-submit-btn-text-color);cursor:pointer;font-family:var(--f-submit-btn-font-family);min-height:var(--f-submit-btn-min-height);min-width:var(--f-submit-btn-min-width);outline:none;width:auto}.bef-exposed-form .form-actions button[type=submit]:active,.bef-exposed-form .form-actions button[type=submit]:focus,.bef-exposed-form .form-actions button[type=submit]:hover,.bef-exposed-form .form-actions input[type=submit]:active,.bef-exposed-form .form-actions input[type=submit]:focus,.bef-exposed-form .form-actions input[type=submit]:hover,.bef-exposed-form .formkit-actions button[type=submit]:active,.bef-exposed-form .formkit-actions button[type=submit]:focus,.bef-exposed-form .formkit-actions button[type=submit]:hover,.bef-exposed-form .formkit-actions input[type=submit]:active,.bef-exposed-form .formkit-actions input[type=submit]:focus,.bef-exposed-form .formkit-actions input[type=submit]:hover,.bef-exposed-form .formkit-outer button[type=submit]:active,.bef-exposed-form .formkit-outer button[type=submit]:focus,.bef-exposed-form .formkit-outer button[type=submit]:hover,.bef-exposed-form .formkit-outer input[type=submit]:active,.bef-exposed-form .formkit-outer input[type=submit]:focus,.bef-exposed-form .formkit-outer input[type=submit]:hover,.webform .form-actions button[type=submit]:active,.webform .form-actions button[type=submit]:focus,.webform .form-actions button[type=submit]:hover,.webform .form-actions input[type=submit]:active,.webform .form-actions input[type=submit]:focus,.webform .form-actions input[type=submit]:hover,.webform .formkit-actions button[type=submit]:active,.webform .formkit-actions button[type=submit]:focus,.webform .formkit-actions button[type=submit]:hover,.webform .formkit-actions input[type=submit]:active,.webform .formkit-actions input[type=submit]:focus,.webform .formkit-actions input[type=submit]:hover,.webform .formkit-outer button[type=submit]:active,.webform .formkit-outer button[type=submit]:focus,.webform .formkit-outer button[type=submit]:hover,.webform .formkit-outer input[type=submit]:active,.webform .formkit-outer input[type=submit]:focus,.webform .formkit-outer input[type=submit]:hover,.webform-formkit .form-actions button[type=submit]:active,.webform-formkit .form-actions button[type=submit]:focus,.webform-formkit .form-actions button[type=submit]:hover,.webform-formkit .form-actions input[type=submit]:active,.webform-formkit .form-actions input[type=submit]:focus,.webform-formkit .form-actions input[type=submit]:hover,.webform-formkit .formkit-actions button[type=submit]:active,.webform-formkit .formkit-actions button[type=submit]:focus,.webform-formkit .formkit-actions button[type=submit]:hover,.webform-formkit .formkit-actions input[type=submit]:active,.webform-formkit .formkit-actions input[type=submit]:focus,.webform-formkit .formkit-actions input[type=submit]:hover,.webform-formkit .formkit-outer button[type=submit]:active,.webform-formkit .formkit-outer button[type=submit]:focus,.webform-formkit .formkit-outer button[type=submit]:hover,.webform-formkit .formkit-outer input[type=submit]:active,.webform-formkit .formkit-outer input[type=submit]:focus,.webform-formkit .formkit-outer input[type=submit]:hover{background-color:var(--f-submit-btn-hover-background-color);border-color:var(--f-submit-btn-hover-border-color);color:var(--f-submit-btn-hover-text-color)}.bef-exposed-form .form-actions button[type=submit]:disabled,.bef-exposed-form .form-actions input[type=submit]:disabled,.bef-exposed-form .formkit-actions button[type=submit]:disabled,.bef-exposed-form .formkit-actions input[type=submit]:disabled,.bef-exposed-form .formkit-outer button[type=submit]:disabled,.bef-exposed-form .formkit-outer input[type=submit]:disabled,.webform .form-actions button[type=submit]:disabled,.webform .form-actions input[type=submit]:disabled,.webform .formkit-actions button[type=submit]:disabled,.webform .formkit-actions input[type=submit]:disabled,.webform .formkit-outer button[type=submit]:disabled,.webform .formkit-outer input[type=submit]:disabled,.webform-formkit .form-actions button[type=submit]:disabled,.webform-formkit .form-actions input[type=submit]:disabled,.webform-formkit .formkit-actions button[type=submit]:disabled,.webform-formkit .formkit-actions input[type=submit]:disabled,.webform-formkit .formkit-outer button[type=submit]:disabled,.webform-formkit .formkit-outer input[type=submit]:disabled{background-color:var(--f-submit-btn-disabled-background-color);opacity:.5;pointer-events:none}.bef-exposed-form .checkboxes--wrapper .form-item--checkbox,.webform .checkboxes--wrapper .form-item--checkbox,.webform-formkit .checkboxes--wrapper .form-item--checkbox{margin-bottom:var(--f-radio-check-padding-bottom)}.bef-exposed-form .webform-element-help,.webform .webform-element-help,.webform-formkit .webform-element-help{background-color:var(--f-help-background-color);border-color:var(--f-help-border-color);color:var(--f-help-color);font-size:1rem;font-weight:400;height:1.5rem;line-height:1.2rem;position:relative;top:-2px;width:1.5rem}.bef-exposed-form .form-text,.bef-exposed-form .form-textarea,.webform .form-text,.webform .form-textarea,.webform-formkit .form-text,.webform-formkit .form-textarea{width:100%}.bef-exposed-form .form-textarea,.webform .form-textarea,.webform-formkit .form-textarea{resize:none}.bef-exposed-form .form-number::-webkit-inner-spin-button,.webform .form-number::-webkit-inner-spin-button,.webform-formkit .form-number::-webkit-inner-spin-button{appearance:none}.bef-exposed-form .formkit-help,.bef-exposed-form .webform-element-description,.webform .formkit-help,.webform .webform-element-description,.webform-formkit .formkit-help,.webform-formkit .webform-element-description{color:var(--f-description-color);font-size:1.4rem;font-style:italic;margin-top:.5em}.bef-exposed-form .formkit-help *,.bef-exposed-form .webform-element-description *,.webform .formkit-help *,.webform .webform-element-description *,.webform-formkit .formkit-help *,.webform-formkit .webform-element-description *{font-size:1.4rem}.bef-exposed-form .form-required:after,.webform .form-required:after,.webform-formkit .form-required:after{content:"*"}.bef-exposed-form .fieldset-legend,.webform .fieldset-legend,.webform-formkit .fieldset-legend{display:block;font-weight:700;margin-bottom:1em}.bef-exposed-form .formkit-form,.bef-exposed-form fieldset,.webform .formkit-form,.webform fieldset,.webform-formkit .formkit-form,.webform-formkit fieldset{display:grid;gap:var(--f-form-gap)}.bef-exposed-form fieldset,.webform fieldset,.webform-formkit fieldset{border-color:var(--f-input-border-color);border-radius:var(--f-input-border-radius);border-width:var(--f-input-border-width);padding:1.5rem}.bef-exposed-form fieldset legend,.webform fieldset legend,.webform-formkit fieldset legend{font-family:var(--f-input-font-family);font-size:1em}.bef-exposed-form .checkboxes--wrapper,.bef-exposed-form .form-item,.bef-exposed-form .form-item--checkbox,.bef-exposed-form .form-item--date,.bef-exposed-form .form-item--email,.bef-exposed-form .form-item--number,.bef-exposed-form .form-item--select,.bef-exposed-form .form-item--tel,.bef-exposed-form .form-item--textarea,.bef-exposed-form .form-item--textfield,.bef-exposed-form .form-item--webform-markup,.bef-exposed-form .form-item--webform-time,.bef-exposed-form .radios--wrapper,.webform .checkboxes--wrapper,.webform .form-item,.webform .form-item--checkbox,.webform .form-item--date,.webform .form-item--email,.webform .form-item--number,.webform .form-item--select,.webform .form-item--tel,.webform .form-item--textarea,.webform .form-item--textfield,.webform .form-item--webform-markup,.webform .form-item--webform-time,.webform .radios--wrapper,.webform-formkit .checkboxes--wrapper,.webform-formkit .form-item,.webform-formkit .form-item--checkbox,.webform-formkit .form-item--date,.webform-formkit .form-item--email,.webform-formkit .form-item--number,.webform-formkit .form-item--select,.webform-formkit .form-item--tel,.webform-formkit .form-item--textarea,.webform-formkit .form-item--textfield,.webform-formkit .form-item--webform-markup,.webform-formkit .form-item--webform-time,.webform-formkit .radios--wrapper{margin-top:var(--f-form-gap)}.bef-exposed-form .form-item--datetime .form-item--date,.webform .form-item--datetime .form-item--date,.webform-formkit .form-item--datetime .form-item--date{margin-right:1rem}.bef-exposed-form .fieldgroup,.webform .fieldgroup,.webform-formkit .fieldgroup{margin:0!important}.bef-exposed-form .form-actions,.bef-exposed-form .webform-actions,.webform .form-actions,.webform .webform-actions,.webform-formkit .form-actions,.webform-formkit .webform-actions{margin-top:2rem}.bef-exposed-form .formkit-messages,.webform .formkit-messages,.webform-formkit .formkit-messages{color:var(--f-error-color);font-size:1.4rem;list-style-type:none;margin:.5rem 0 0;padding:0}.bef-exposed-form .webform-flexbox,.webform .webform-flexbox,.webform-formkit .webform-flexbox{width:100%}@media (--bp-min-medium ){.bef-exposed-form .webform-flexbox,.webform .webform-flexbox,.webform-formkit .webform-flexbox{margin:0 -.5em;width:auto}}.bef-exposed-form .webform-flexbox .webform-flexbox,.webform .webform-flexbox .webform-flexbox,.webform-formkit .webform-flexbox .webform-flexbox{margin:0;padding-bottom:0}.bef-exposed-form .webform-flexbox .webform-flex,.webform .webform-flexbox .webform-flex,.webform-formkit .webform-flexbox .webform-flex{margin:0}.bef-exposed-form .webform-flexbox .webform-flex .fieldgroup,.webform .webform-flexbox .webform-flex .fieldgroup,.webform-formkit .webform-flexbox .webform-flex .fieldgroup{padding-bottom:0}.bef-exposed-form .webform-flexbox .webform-flex .fieldset-wrapper,.webform .webform-flexbox .webform-flex .fieldset-wrapper,.webform-formkit .webform-flexbox .webform-flex .fieldset-wrapper{margin:0 -.5em}.bef-exposed-form hr,.webform hr,.webform-formkit hr{width:100%}.bef-exposed-form .form-item--error-message,.webform .form-item--error-message,.webform-formkit .form-item--error-message{color:var(--f-error-color);font-size:1.2rem;margin-top:.3em}.bef-exposed-form .captcha,.webform .captcha,.webform-formkit .captcha{border:0;margin:0;margin-bottom:var(--f-form-gap);padding:0}.bef-exposed-form .captcha__title,.webform .captcha__title,.webform-formkit .captcha__title{display:none}.bef-exposed-form .captcha__description,.webform .captcha__description,.webform-formkit .captcha__description{font-size:1.2rem;margin-top:.5rem;max-width:40rem}.webform-formkit{position:relative}.webform-formkit .formkit-outer[data-type=recaptcha] .formkit-label{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;z-index:-1}.webform-formkit .webform-formkit__errors{color:var(--f-error-color);display:grid;gap:.5rem;margin-top:.3em}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-wrapper,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-wrapper,.webform-formkit .formkit-outer[data-type=radio] .formkit-wrapper{align-items:flex-start;display:flex;margin:0;padding:0}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-fieldset,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-fieldset,.webform-formkit .formkit-outer[data-type=radio] .formkit-fieldset{border:0;display:flex;flex-direction:column;gap:0;margin:0;padding:0}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-legend,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-legend,.webform-formkit .formkit-outer[data-type=radio] .formkit-legend{display:block;font-weight:400;font-weight:700;margin-bottom:var(--f-label-margin-bottom);padding-right:.6em;text-transform:none;width:fit-content}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-label,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-label,.webform-formkit .formkit-outer[data-type=radio] .formkit-label{cursor:pointer;font-weight:400;margin-bottom:0;margin-left:1em;margin-top:.1em}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-options,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-options,.webform-formkit .formkit-outer[data-type=radio] .formkit-options{list-style-type:none;margin:0;order:-1;padding:0}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-option,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-option,.webform-formkit .formkit-outer[data-type=radio] .formkit-option{margin-top:.5rem}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-option:first-of-type,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-option:first-of-type,.webform-formkit .formkit-outer[data-type=radio] .formkit-option:first-of-type{margin-top:0}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-input,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-input,.webform-formkit .formkit-outer[data-type=radio] .formkit-input{clip:rect(1px 1px 1px 1px);clip:rect(1px,1px,1px,1px);height:1px;overflow:hidden;position:absolute!important;width:1px;z-index:-1}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-option-help,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-option-help,.webform-formkit .formkit-outer[data-type=radio] .formkit-option-help{font-size:1.4rem;font-style:italic;margin-bottom:var(--f-label-margin-bottom);margin-left:4.2rem;margin-top:calc(var(--f-label-margin-bottom)*-1 + .4em)}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-decorator,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-decorator,.webform-formkit .formkit-outer[data-type=radio] .formkit-decorator{--width:var(--f-radio-check-decorater-height);align-items:center;background-color:var(--f-radio-check-background-color);border:var(--f-submit-btn-border-width) solid var(--f-radio-check-border-color);border-radius:.4rem;cursor:pointer;display:flex;height:var(--width);justify-content:center;margin:0;min-width:var(--width);width:var(--width)}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-decorator:before,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-decorator:before,.webform-formkit .formkit-outer[data-type=radio] .formkit-decorator:before{--width:calc(var(--f-radio-check-decorater-height) - 0.5em);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 14 11'%3E%3Cpath fill='currentColor' d='M4.896 11 0 5.786l1.224-1.304 3.672 3.91L12.776 0 14 1.304z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:contain;content:"";height:var(--width);transform:scale(0);transform-origin:center;transition:transform .15s ease;width:var(--width)}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-input:focus+.formkit-decorator,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-input:focus+.formkit-decorator,.webform-formkit .formkit-outer[data-type=radio] .formkit-input:focus+.formkit-decorator{outline:var(--input-outline)}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-input:checked+.formkit-decorator,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-input:checked+.formkit-decorator,.webform-formkit .formkit-outer[data-type=radio] .formkit-input:checked+.formkit-decorator{background-color:var(--f-radio-check-background-color-active)}.webform-formkit .formkit-outer[data-type=actionSelect] .formkit-input:checked+.formkit-decorator:before,.webform-formkit .formkit-outer[data-type=checkbox] .formkit-input:checked+.formkit-decorator:before,.webform-formkit .formkit-outer[data-type=radio] .formkit-input:checked+.formkit-decorator:before{transform:scale(1)}.webform-formkit .formkit-outer[data-type=actionSelect]>.formkit-wrapper{display:block}.webform-formkit .formkit-outer[data-type=actionSelect]>.formkit-wrapper>.formkit-label{display:flex;margin:0}.webform-formkit .formkit-outer[data-type=radio]:not(.formkit-radio-toggle,.formkit-radio-buttons) .formkit-decorator{border-radius:var(--width)}.webform-formkit .formkit-outer[data-type=radio]:not(.formkit-radio-toggle,.formkit-radio-buttons) .formkit-decorator:before{--width:calc(var(--f-radio-check-decorater-height) - 0.8rem);background:none;background-color:var(--f-radio-check-background-color-active);border-radius:var(--width)}.webform-formkit .formkit-outer[data-type=radio]:not(.formkit-radio-toggle,.formkit-radio-buttons) .formkit-input:checked+.formkit-decorator{background-color:var(--f-radio-check-background-color)}.webform-formkit .formkit-optional{color:var(--f-input-placeholder-color);font-size:1em;margin-left:.25em}.webform-formkit .formkit-asterisk,.webform-formkit label.form-required:after{margin-left:.1em}.webform-formkit .webform-formkit__success{align-items:center;display:flex;flex-direction:column;text-align:center}.webform-formkit .webform-flexbox{display:flex;flex-direction:column;gap:var(--f-form-gap);margin:0}@media (--bp-min-medium ){.webform-formkit .webform-flexbox{align-items:flex-start;flex-direction:row}}.webform-formkit .webform-flexbox .formkit-outer{flex-grow:1;width:100%}.webform-formkit__loader{align-items:center;bottom:0;display:flex;justify-content:center;left:0;position:absolute;right:0;top:0}.webform-formkit__loader .icon{color:var(--f-loader-color);font-size:5em}.webform-formkit--loading{min-height:10rem}.webform-formkit--loading .formkit-form{opacity:.25}.webform-formkit .formkit-step-inner{display:grid;gap:var(--f-form-gap)}.webform-formkit .formkit-step-actions{display:flex;gap:1rem;justify-content:space-between;margin-top:1.8rem}.webform-formkit .formkit-step-actions button:disabled{background-color:var(--f-submit-btn-disabled-background-color);opacity:.5;pointer-events:none}.webform-formkit .formkit-tabs{counter-reset:tabs;display:flex;justify-content:space-between}.webform-formkit .formkit-tab{appearance:none;background-color:transparent;border:0;color:var(--f-color);counter-increment:tabs;cursor:pointer;font-family:var(--f-input-font-family);font-size:.875em;padding-bottom:3.6rem;padding-top:4rem;position:relative;text-align:center}.webform-formkit .formkit-tab:before{align-items:center;background-color:var(--f-multistep-background-color-tab);border-radius:1.5rem;color:var(--f-multistep-color-tab);content:counter(tabs);display:flex;font-weight:700;height:3rem;justify-content:center;left:calc(50% - 1.5rem);position:absolute;top:0;width:3rem}.webform-formkit .formkit-tab[data-active=true]{font-weight:700}.webform-formkit .formkit-tab[data-active=true]:before,.webform-formkit .formkit-tab[data-valid=true][data-visited=true]:before{background-color:var(--f-multistep-background-color-tab-active);color:var(--f-multistep-color-tab-active)}.webform-formkit .formkit-tab[data-valid=true][data-visited=true] .formkit-badge{background-color:var(--f-success-color);background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 14 11'%3E%3Cpath fill='currentColor' d='M4.896 11 0 5.786l1.224-1.304 3.672 3.91L12.776 0 14 1.304z'/%3E%3C/svg%3E");background-position:50%;background-repeat:no-repeat;background-size:50%}.webform-formkit .formkit-tab .formkit-badge{align-items:center;background-color:var(--f-error-color);border-radius:1rem;color:#fff;display:flex;font-size:.75em;font-weight:700;height:2rem;justify-content:center;left:calc(50% + .5rem);position:absolute;top:-.5rem;width:2rem}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{ref as e,reactive as a,onMounted as o,computed as n,watch as d,nextTick as i,resolveComponent as c,openBlock as t,createElementBlock as l,normalizeClass as r,renderSlot as s,createCommentVNode as m,createVNode as u,toDisplayString as _,Fragment as f,renderList as p,createElementVNode as h,unref as v,withCtx as g,watchEffect as b,withDirectives as y,vModelSelect as S,createBlock as M}from"vue";import k from"gsap";import w from"gsap/ScrollToPlugin";import{createInput as A,plugin as T,defaultConfig as C,FormKitMessages as I}from"@formkit/vue";import{Tooltip as B}from"floating-vue";import{nl as G,en as P,fr as K}from"@formkit/i18n";import{createMultiStepPlugin as F}from"@formkit/addons";import L from"libphonenumber-js/mobile/examples";import N from"country-flag-icons/unicode";import{parsePhoneNumber as E,getExampleNumber as R}from"libphonenumber-js";import{IBAN as x}from"ibankit";import{countries as D,checkVAT as j}from"@accountable/jsvat";function $(e,...a){H(e)||Array.isArray(e)||(e={});for(const o of a)if(H(o)||Array.isArray(o))for(const a of Object.keys(o)){const n=o[a],d=e[a];Array.isArray(n)?Array.isArray(d)?e[a]=[...d,...n]:e[a]=[...n]:H(n)?(H(d)||(e[a]={}),e[a]=$(e[a],n)):e[a]=n}return e}const U=e=>null==e?[]:Object.keys(Object(e));function V(e,a){if(null==e)return{};Array.isArray(a)||(a=[a]);const o={};for(const n of a)n in e&&(o[n]=e[n]);return o}function O(e,...a){null==e&&(e={});for(const o of a)if(null!=o)for(const a of Object.keys(o)){const n=o[a],d=e[a];void 0===d?e[a]=n:H(d)&&H(n)&&O(d,n)}return e}function H(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}function z(e){let a=!1;return(e||0===e)&&(a=!0),Array.isArray(e)&&(a=!0),a}var W={global:{editor:{error:"Check that the form has been completed correctly. Ensure that no unnecessary conditional fields have been filled in."}},nl:{messages:{missing:"Dit formulier ontbreekt. Controleer of het ID dat u gebruikt correct is.",error:"Er is iets misgegaan bij het laden van het formulier."},success:{title:"Bedankt!",message:"We hebben je gegevens goed ontvangen."}},en:{messages:{missing:"This form is missing. Please check that the ID you are using is correct.",error:"Something went wrong while loading the form."},success:{title:"Thank you!",message:"We have successfully received your information."}},fr:{messages:{missing:"Ce formulaire est manquant. Vérifiez que l'ID que vous utilisez est correct.",error:"Une erreur est survenue lors du chargement du formulaire."},success:{title:"Merci !",message:"Nous avons bien reçu vos informations."}}};const q={key:0,class:"webform-formkit__placeholder"},J={key:1},Z={key:2,class:"webform-formkit__loader"},Y={key:0,class:"webform-formkit__message"},Q={key:3,class:"webform-formkit__success"},X={key:0,class:"webform-formkit__succes-title"},ee=["innerHTML"],ae={key:4,class:"webform-formkit__errors"},oe=["innerHTML"];var ne={__name:"MinskyWebformFormKit",props:{id:{type:String,required:!0},api:{type:String,default:window.location.origin},classModifier:String,defaults:Object,schemeProcessor:Function,formDataAddons:Object,submitProcessor:Function,forceRedirect:{type:Object,default:()=>({bool:!1})},cmpLibrary:{type:Object,default:()=>({})},messages:{type:Object,default:()=>{}},setUserData:Function},emits:["success"],setup(h,{emit:v}){k.registerPlugin(w);const{lang:g}=document.documentElement,b=h,y=v,S=e(null),M=e(null),A=e({}),T=e({}),C=e(!0),I=e(!1),B=e(!1),G=e(null),P=e(null),K=e(null),F=e(null),L=e(!1),N=a({values:{}});o((()=>{T.value=Object.assign(W,b.messages),N.submit=async e=>{delete e.form_id,delete e.vApp,delete e.webformId,U(e).forEach((a=>{a.includes("captcha")&&(Object.assign(e,e[a]),delete e[a])})),async function(e){b.submitProcessor&&(e=b.submitProcessor(e));B.value=!0;const a=document.querySelector(".formkit-input[type=submit]");a&&(a.disabled=!0);const o=new URLSearchParams(window.location.search);o.append("schema","form_kit");const n=new FormData;for(const a in e)if(z(e[a]))if(Array.isArray(e[a]))e[a].length?e[a].forEach((e=>{"imageUpload"===this.$formkit.get(`${this.id}--${a}`).context.type?"object"==typeof e?N.append(`${a}[]`,_values(e)[0]):N.append(`${a}[]`,e):n.append(`${a}[]`,e)})):n.append(a,"");else if("string"==typeof e[a])if(2===e[a].indexOf("json_value")){const o=JSON.parse(e[a]).json_value;U(o).forEach((e=>{n.append(`${a}[${e}]`,o[e])}))}else n.append(a,e[a]);else n.append(a,e[a]);fetch(`${b.api}/webform/${b.id}/json/submission?${o.toString()}`,{method:"POST",body:n,query:window.location.search}).then((a=>{200===a.status?a.json().then((a=>{!function(e){if(b.forceRedirect.bool)window.location=b.forceRedirect.url;else switch(e.confirmation.type){case"inline":K.value=e.confirmation.title,P.value=e.confirmation.message,I.value=!0,k.to(window,{duration:.5,scrollTo:{y:S.value,offsetY:200},ease:"power2"}),B.value=!1;break;case"url":window.location=e.confirmation.url;break;default:K.value=T.value[g].success.title,P.value=T.value[g].success.message,I.value=!0,B.value=!1}y("success")}(a),b.setUserData&&b.setUserData(e)})):a.json().then((e=>{L.value=!0,B.value=!1,F.value=e.errors}))})).catch((()=>{L.value=!0,B.value=!1}))}(e=function(e){const a={};return function e(o,n=""){for(const d in o)Array.isArray(o[d])?a[d]=o[d]:"object"==typeof o[d]&&null!==o[d]?e(o[d],`${n+d}.`):a[d]=o[d]}(e),a}(e))},N.submitInvalid=()=>{k.to(window,{duration:.5,scrollTo:{y:S.value,offsetY:300},ease:"power2"})},async function(){const e=new URLSearchParams(window.location.search);e.append("schema","form_kit");try{const a=await fetch(`${b.api}/webform/${b.id}/json/schema?${e.toString()}`),o=await a.json();if(!a.ok)throw new Error(o.errors?o.errors.map((e=>e.message)).join(", "):"Unknown error");o.schema?(M.value=o.schema,b.schemeProcessor&&(M.value=b.schemeProcessor(o.schema)),A.value=o.values):(L.value=!0,F.value=[{message:T.value[g].messages.missing}])}catch(e){if(L.value=!0,window.drupalSettings){(window.drupalSettings.user.roles||[]).some((e=>["administrator","editor"].includes(e)))?F.value=[{message:e},{message:T.value.global.error}]:F.value=[{message:T.value[g].messages.error}]}else F.value=[{message:T.value[g].messages.error}];console.error(`Error fetching schema of form with ID ${b.id}:`,e)}finally{C.value=!1}}(),b.formDataAddons&&Object.assign(N,b.formDataAddons)}));const E=n((()=>U(N.values)));function R(){O(N.values,V(A.value,E.value)),b.defaults&&$(N.values,V(b.defaults,E.value))}return d(E,(async()=>{R(),await i();const e=S.value?.querySelector("form");e&&e.setAttribute("novalidate",!0)})),(e,a)=>{const o=c("FormKitSchema"),n=c("Icon");return t(),l("div",{ref_key:"formRef",ref:S,class:r(["webform-formkit",[{"webform-formkit--loading":B.value||C.value},`webform-formkit--${b.id}`,b.classModifier?`webform-formkit--${b.classModifier}`:null]])},[!C.value||I.value||L.value?m("v-if",!0):(t(),l("div",q,[s(e.$slots,"placeholder")])),C.value||I.value||L.value?m("v-if",!0):(t(),l("div",J,[u(o,{schema:M.value,data:N,library:b.cmpLibrary},null,8,["schema","data","library"]),s(e.$slots,"afterSchema")])),C.value||B.value?(t(),l("div",Z,[u(n,{loading:!0}),G.value?(t(),l("p",Y,_(G.value),1)):m("v-if",!0)])):m("v-if",!0),I.value?(t(),l("div",Q,[K.value?(t(),l("h5",X,_(K.value),1)):m("v-if",!0),P.value?(t(),l("div",{key:1,class:"webform-formkit__message",innerHTML:P.value},null,8,ee)):m("v-if",!0)])):m("v-if",!0),L.value?(t(),l("ul",ae,[(t(!0),l(f,null,p(F.value,(e=>(t(),l("li",{innerHTML:e.message},null,8,oe)))),256))])):m("v-if",!0)],2)}},__file:"src/components/MinksyWebformFormKit/MinskyWebformFormKit.vue"};const de={key:0,role:"img",id:"L9",version:"1.1",class:"icon-svg icon-svg--loader",xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink",x:"0px",y:"0px",viewBox:"0 0 100 100",1:"","enable-background":"new 0 0 0 0","xml:space":"preserve"},ie=["aria-hidden"],ce={key:0},te=["xlink:href"];var le={__name:"Icon",props:{name:{type:String,default:""},loading:{type:Boolean,default:!1},modifiers:{type:Array,default:()=>[]},ariaTitle:{type:String}},setup:e=>(a,o)=>(t(),l("span",{class:r(["icon",[""!==e.name?"icon--"+e.name:"",e.modifiers.length?"icon--"+e.modifiers.join(" icon--"):""]])},[e.loading?(t(),l("svg",de,[...o[0]||(o[0]=[h("title",null,"Loading",-1),h("path",{fill:"currentColor",d:"M73,50c0-12.7-10.3-23-23-23S27,37.3,27,50 M30.9,50c0-10.5,8.5-19.1,19.1-19.1S69.1,39.5,69.1,50"},[h("animateTransform",{attributeName:"transform",attributeType:"XML",type:"rotate",dur:"1s",from:"0 50 50",to:"360 50 50",repeatCount:"indefinite"})],-1)])])):(t(),l("svg",{key:1,role:"img",class:"icon__svg","aria-hidden":!e.ariaTitle},[e.ariaTitle?(t(),l("title",ce,_(e.ariaTitle),1)):m("v-if",!0),e.name?(t(),l("use",{key:1,"xlink:href":"#sprite-"+e.name},null,8,te)):m("v-if",!0)],8,ie))],2)),__file:"src/components/Icon.vue"};const re={class:"info-tooltip"},se=["innerHTML"];var me={__name:"InfoTooltip",props:["content"],setup(e){const a=e;return(e,o)=>{const n=c("Icon");return t(),l("span",re,[u(v(B),{triggers:["click","hover"]},{popper:g((()=>[h("div",{innerHTML:a.content},null,8,se)])),default:g((()=>[u(n,{name:"info"})])),_:1})])}},__file:"src/components/InfoTooltip.vue"};const ue=["checkbox_multi","radio_multi","repeater","transferlist"];const _e=[{name:"Afghanistan",dial_code:"+93",code:"AF"},{name:"Aland Islands",dial_code:"+358",code:"AX"},{name:"Albania",dial_code:"+355",code:"AL"},{name:"Algeria",dial_code:"+213",code:"DZ"},{name:"AmericanSamoa",dial_code:"+1684",code:"AS"},{name:"Andorra",dial_code:"+376",code:"AD"},{name:"Angola",dial_code:"+244",code:"AO"},{name:"Anguilla",dial_code:"+1264",code:"AI"},{name:"Antarctica",dial_code:"+672",code:"AQ"},{name:"Antigua and Barbuda",dial_code:"+1268",code:"AG"},{name:"Argentina",dial_code:"+54",code:"AR"},{name:"Armenia",dial_code:"+374",code:"AM"},{name:"Aruba",dial_code:"+297",code:"AW"},{name:"Australia",dial_code:"+61",code:"AU"},{name:"Austria",dial_code:"+43",code:"AT"},{name:"Azerbaijan",dial_code:"+994",code:"AZ"},{name:"Bahamas",dial_code:"+1242",code:"BS"},{name:"Bahrain",dial_code:"+973",code:"BH"},{name:"Bangladesh",dial_code:"+880",code:"BD"},{name:"Barbados",dial_code:"+1246",code:"BB"},{name:"Belarus",dial_code:"+375",code:"BY"},{name:"Belgium",dial_code:"+32",code:"BE"},{name:"Belize",dial_code:"+501",code:"BZ"},{name:"Benin",dial_code:"+229",code:"BJ"},{name:"Bermuda",dial_code:"+1441",code:"BM"},{name:"Bhutan",dial_code:"+975",code:"BT"},{name:"Bolivia, Plurinational State of",dial_code:"+591",code:"BO"},{name:"Bosnia and Herzegovina",dial_code:"+387",code:"BA"},{name:"Botswana",dial_code:"+267",code:"BW"},{name:"Brazil",dial_code:"+55",code:"BR"},{name:"British Indian Ocean Territory",dial_code:"+246",code:"IO"},{name:"Brunei Darussalam",dial_code:"+673",code:"BN"},{name:"Bulgaria",dial_code:"+359",code:"BG"},{name:"Burkina Faso",dial_code:"+226",code:"BF"},{name:"Burundi",dial_code:"+257",code:"BI"},{name:"Cambodia",dial_code:"+855",code:"KH"},{name:"Cameroon",dial_code:"+237",code:"CM"},{name:"Canada",dial_code:"+1",code:"CA"},{name:"Cape Verde",dial_code:"+238",code:"CV"},{name:"Cayman Islands",dial_code:"+ 345",code:"KY"},{name:"Central African Republic",dial_code:"+236",code:"CF"},{name:"Chad",dial_code:"+235",code:"TD"},{name:"Chile",dial_code:"+56",code:"CL"},{name:"China",dial_code:"+86",code:"CN"},{name:"Christmas Island",dial_code:"+61",code:"CX"},{name:"Cocos (Keeling) Islands",dial_code:"+61",code:"CC"},{name:"Colombia",dial_code:"+57",code:"CO"},{name:"Comoros",dial_code:"+269",code:"KM"},{name:"Congo",dial_code:"+242",code:"CG"},{name:"Congo, The Democratic Republic of the Congo",dial_code:"+243",code:"CD"},{name:"Cook Islands",dial_code:"+682",code:"CK"},{name:"Costa Rica",dial_code:"+506",code:"CR"},{name:"Cote d'Ivoire",dial_code:"+225",code:"CI"},{name:"Croatia",dial_code:"+385",code:"HR"},{name:"Cuba",dial_code:"+53",code:"CU"},{name:"Cyprus",dial_code:"+357",code:"CY"},{name:"Czech Republic",dial_code:"+420",code:"CZ"},{name:"Denmark",dial_code:"+45",code:"DK"},{name:"Djibouti",dial_code:"+253",code:"DJ"},{name:"Dominica",dial_code:"+1767",code:"DM"},{name:"Dominican Republic",dial_code:"+1849",code:"DO"},{name:"Ecuador",dial_code:"+593",code:"EC"},{name:"Egypt",dial_code:"+20",code:"EG"},{name:"El Salvador",dial_code:"+503",code:"SV"},{name:"Equatorial Guinea",dial_code:"+240",code:"GQ"},{name:"Eritrea",dial_code:"+291",code:"ER"},{name:"Estonia",dial_code:"+372",code:"EE"},{name:"Ethiopia",dial_code:"+251",code:"ET"},{name:"Falkland Islands (Malvinas)",dial_code:"+500",code:"FK"},{name:"Faroe Islands",dial_code:"+298",code:"FO"},{name:"Fiji",dial_code:"+679",code:"FJ"},{name:"Finland",dial_code:"+358",code:"FI"},{name:"France",dial_code:"+33",code:"FR"},{name:"French Guiana",dial_code:"+594",code:"GF"},{name:"French Polynesia",dial_code:"+689",code:"PF"},{name:"Gabon",dial_code:"+241",code:"GA"},{name:"Gambia",dial_code:"+220",code:"GM"},{name:"Georgia",dial_code:"+995",code:"GE"},{name:"Germany",dial_code:"+49",code:"DE"},{name:"Ghana",dial_code:"+233",code:"GH"},{name:"Gibraltar",dial_code:"+350",code:"GI"},{name:"Greece",dial_code:"+30",code:"GR"},{name:"Greenland",dial_code:"+299",code:"GL"},{name:"Grenada",dial_code:"+1473",code:"GD"},{name:"Guadeloupe",dial_code:"+590",code:"GP"},{name:"Guam",dial_code:"+1671",code:"GU"},{name:"Guatemala",dial_code:"+502",code:"GT"},{name:"Guernsey",dial_code:"+44",code:"GG"},{name:"Guinea",dial_code:"+224",code:"GN"},{name:"Guinea-Bissau",dial_code:"+245",code:"GW"},{name:"Guyana",dial_code:"+595",code:"GY"},{name:"Haiti",dial_code:"+509",code:"HT"},{name:"Holy See (Vatican City State)",dial_code:"+379",code:"VA"},{name:"Honduras",dial_code:"+504",code:"HN"},{name:"Hong Kong",dial_code:"+852",code:"HK"},{name:"Hungary",dial_code:"+36",code:"HU"},{name:"Iceland",dial_code:"+354",code:"IS"},{name:"India",dial_code:"+91",code:"IN"},{name:"Indonesia",dial_code:"+62",code:"ID"},{name:"Iran, Islamic Republic of Persian Gulf",dial_code:"+98",code:"IR"},{name:"Iraq",dial_code:"+964",code:"IQ"},{name:"Ireland",dial_code:"+353",code:"IE"},{name:"Isle of Man",dial_code:"+44",code:"IM"},{name:"Israel",dial_code:"+972",code:"IL"},{name:"Italy",dial_code:"+39",code:"IT"},{name:"Jamaica",dial_code:"+1876",code:"JM"},{name:"Japan",dial_code:"+81",code:"JP"},{name:"Jersey",dial_code:"+44",code:"JE"},{name:"Jordan",dial_code:"+962",code:"JO"},{name:"Kazakhstan",dial_code:"+77",code:"KZ"},{name:"Kenya",dial_code:"+254",code:"KE"},{name:"Kiribati",dial_code:"+686",code:"KI"},{name:"Korea, Democratic People's Republic of Korea",dial_code:"+850",code:"KP"},{name:"Korea, Republic of South Korea",dial_code:"+82",code:"KR"},{name:"Kuwait",dial_code:"+965",code:"KW"},{name:"Kyrgyzstan",dial_code:"+996",code:"KG"},{name:"Laos",dial_code:"+856",code:"LA"},{name:"Latvia",dial_code:"+371",code:"LV"},{name:"Lebanon",dial_code:"+961",code:"LB"},{name:"Lesotho",dial_code:"+266",code:"LS"},{name:"Liberia",dial_code:"+231",code:"LR"},{name:"Libyan Arab Jamahiriya",dial_code:"+218",code:"LY"},{name:"Liechtenstein",dial_code:"+423",code:"LI"},{name:"Lithuania",dial_code:"+370",code:"LT"},{name:"Luxembourg",dial_code:"+352",code:"LU"},{name:"Macao",dial_code:"+853",code:"MO"},{name:"Macedonia",dial_code:"+389",code:"MK"},{name:"Madagascar",dial_code:"+261",code:"MG"},{name:"Malawi",dial_code:"+265",code:"MW"},{name:"Malaysia",dial_code:"+60",code:"MY"},{name:"Maldives",dial_code:"+960",code:"MV"},{name:"Mali",dial_code:"+223",code:"ML"},{name:"Malta",dial_code:"+356",code:"MT"},{name:"Marshall Islands",dial_code:"+692",code:"MH"},{name:"Martinique",dial_code:"+596",code:"MQ"},{name:"Mauritania",dial_code:"+222",code:"MR"},{name:"Mauritius",dial_code:"+230",code:"MU"},{name:"Mayotte",dial_code:"+262",code:"YT"},{name:"Mexico",dial_code:"+52",code:"MX"},{name:"Micronesia, Federated States of Micronesia",dial_code:"+691",code:"FM"},{name:"Moldova",dial_code:"+373",code:"MD"},{name:"Monaco",dial_code:"+377",code:"MC"},{name:"Mongolia",dial_code:"+976",code:"MN"},{name:"Montenegro",dial_code:"+382",code:"ME"},{name:"Montserrat",dial_code:"+1664",code:"MS"},{name:"Morocco",dial_code:"+212",code:"MA"},{name:"Mozambique",dial_code:"+258",code:"MZ"},{name:"Myanmar",dial_code:"+95",code:"MM"},{name:"Namibia",dial_code:"+264",code:"NA"},{name:"Nauru",dial_code:"+674",code:"NR"},{name:"Nepal",dial_code:"+977",code:"NP"},{name:"Netherlands",dial_code:"+31",code:"NL"},{name:"Netherlands Antilles",dial_code:"+599",code:"AN"},{name:"New Caledonia",dial_code:"+687",code:"NC"},{name:"New Zealand",dial_code:"+64",code:"NZ"},{name:"Nicaragua",dial_code:"+505",code:"NI"},{name:"Niger",dial_code:"+227",code:"NE"},{name:"Nigeria",dial_code:"+234",code:"NG"},{name:"Niue",dial_code:"+683",code:"NU"},{name:"Norfolk Island",dial_code:"+672",code:"NF"},{name:"Northern Mariana Islands",dial_code:"+1670",code:"MP"},{name:"Norway",dial_code:"+47",code:"NO"},{name:"Oman",dial_code:"+968",code:"OM"},{name:"Pakistan",dial_code:"+92",code:"PK"},{name:"Palau",dial_code:"+680",code:"PW"},{name:"Palestinian Territory, Occupied",dial_code:"+970",code:"PS"},{name:"Panama",dial_code:"+507",code:"PA"},{name:"Papua New Guinea",dial_code:"+675",code:"PG"},{name:"Paraguay",dial_code:"+595",code:"PY"},{name:"Peru",dial_code:"+51",code:"PE"},{name:"Philippines",dial_code:"+63",code:"PH"},{name:"Pitcairn",dial_code:"+872",code:"PN"},{name:"Poland",dial_code:"+48",code:"PL"},{name:"Portugal",dial_code:"+351",code:"PT"},{name:"Puerto Rico",dial_code:"+1939",code:"PR"},{name:"Qatar",dial_code:"+974",code:"QA"},{name:"Romania",dial_code:"+40",code:"RO"},{name:"Russia",dial_code:"+7",code:"RU"},{name:"Rwanda",dial_code:"+250",code:"RW"},{name:"Reunion",dial_code:"+262",code:"RE"},{name:"Saint Barthelemy",dial_code:"+590",code:"BL"},{name:"Saint Helena, Ascension and Tristan Da Cunha",dial_code:"+290",code:"SH"},{name:"Saint Kitts and Nevis",dial_code:"+1869",code:"KN"},{name:"Saint Lucia",dial_code:"+1758",code:"LC"},{name:"Saint Martin",dial_code:"+590",code:"MF"},{name:"Saint Pierre and Miquelon",dial_code:"+508",code:"PM"},{name:"Saint Vincent and the Grenadines",dial_code:"+1784",code:"VC"},{name:"Samoa",dial_code:"+685",code:"WS"},{name:"San Marino",dial_code:"+378",code:"SM"},{name:"Sao Tome and Principe",dial_code:"+239",code:"ST"},{name:"Saudi Arabia",dial_code:"+966",code:"SA"},{name:"Senegal",dial_code:"+221",code:"SN"},{name:"Serbia",dial_code:"+381",code:"RS"},{name:"Seychelles",dial_code:"+248",code:"SC"},{name:"Sierra Leone",dial_code:"+232",code:"SL"},{name:"Singapore",dial_code:"+65",code:"SG"},{name:"Slovakia",dial_code:"+421",code:"SK"},{name:"Slovenia",dial_code:"+386",code:"SI"},{name:"Solomon Islands",dial_code:"+677",code:"SB"},{name:"Somalia",dial_code:"+252",code:"SO"},{name:"South Africa",dial_code:"+27",code:"ZA"},{name:"South Sudan",dial_code:"+211",code:"SS"},{name:"South Georgia and the South Sandwich Islands",dial_code:"+500",code:"GS"},{name:"Spain",dial_code:"+34",code:"ES"},{name:"Sri Lanka",dial_code:"+94",code:"LK"},{name:"Sudan",dial_code:"+249",code:"SD"},{name:"Suriname",dial_code:"+597",code:"SR"},{name:"Svalbard and Jan Mayen",dial_code:"+47",code:"SJ"},{name:"Swaziland",dial_code:"+268",code:"SZ"},{name:"Sweden",dial_code:"+46",code:"SE"},{name:"Switzerland",dial_code:"+41",code:"CH"},{name:"Syrian Arab Republic",dial_code:"+963",code:"SY"},{name:"Taiwan",dial_code:"+886",code:"TW"},{name:"Tajikistan",dial_code:"+992",code:"TJ"},{name:"Tanzania, United Republic of Tanzania",dial_code:"+255",code:"TZ"},{name:"Thailand",dial_code:"+66",code:"TH"},{name:"Timor-Leste",dial_code:"+670",code:"TL"},{name:"Togo",dial_code:"+228",code:"TG"},{name:"Tokelau",dial_code:"+690",code:"TK"},{name:"Tonga",dial_code:"+676",code:"TO"},{name:"Trinidad and Tobago",dial_code:"+1868",code:"TT"},{name:"Tunisia",dial_code:"+216",code:"TN"},{name:"Turkey",dial_code:"+90",code:"TR"},{name:"Turkmenistan",dial_code:"+993",code:"TM"},{name:"Turks and Caicos Islands",dial_code:"+1649",code:"TC"},{name:"Tuvalu",dial_code:"+688",code:"TV"},{name:"Uganda",dial_code:"+256",code:"UG"},{name:"Ukraine",dial_code:"+380",code:"UA"},{name:"United Arab Emirates",dial_code:"+971",code:"AE"},{name:"United Kingdom",dial_code:"+44",code:"GB"},{name:"United States",dial_code:"+1",code:"US"},{name:"Uruguay",dial_code:"+598",code:"UY"},{name:"Uzbekistan",dial_code:"+998",code:"UZ"},{name:"Vanuatu",dial_code:"+678",code:"VU"},{name:"Venezuela, Bolivarian Republic of Venezuela",dial_code:"+58",code:"VE"},{name:"Vietnam",dial_code:"+84",code:"VN"},{name:"Virgin Islands, British",dial_code:"+1284",code:"VG"},{name:"Virgin Islands, U.S.",dial_code:"+1340",code:"VI"},{name:"Wallis and Futuna",dial_code:"+681",code:"WF"},{name:"Yemen",dial_code:"+967",code:"YE"},{name:"Zambia",dial_code:"+260",code:"ZM"},{name:"Zimbabwe",dial_code:"+263",code:"ZW"}];var fe={props:{context:{type:Object}},components:{},beforeMount(){this.setCode()},mounted(){this.setCountries(),b((async()=>{if(this.context.value){await i();const e=E(this.context.value);this.country=e.country,this.phone=e.nationalNumber}}))},data(){return{country:this.context.attrs.initialCountry,countries:[],code:""}},computed:{maskFn(){const e=R(this.country,L).formatInternational();return function(e,a){const o=String(e).replace(/\D/g,"");let n=0;return a.replace(/\d/g,(e=>n<o.length&&e===o[n]?(n+=1,e):"#"))}(this.code,e)}},methods:{getUnicodeFlagIcon:N,setCode(){this.code=_e.find((e=>e.code===this.country)).dial_code},setCountries(){const e=[..._e];this.context.attrs.preferredCountries&&(this.context.attrs.preferredCountries&&this.context.attrs.preferredCountries.reverse().forEach((a=>{e.sort((e=>e.code===a?-1:1))})),this.context.attrs.initialCountry&&e.sort((e=>e.code===this.context.attrs.initialCountry?-1:1)),this.countries=e),this.context.attrs.initialCountry&&e.sort((e=>e.code===this.context.attrs.initialCountry?-1:1)),this.countries=e}},watch:{country(){this.setCode(),this.context.value=""},"context.value":function(e){this.context.node.input(e)}}};const pe={class:"formkit-phone-enhanced"},he={class:"formkit-phone-enhanced__flag"},ve=["value"],ge={class:"formkit-phone-enhanced__flag-wrapper"},be=["src"];fe.render=function(e,a,o,n,d,i){const r=c("Icon"),s=c("FormKit");return t(),l("div",pe,[h("div",he,[y(h("select",{class:"formkit-phone-enhanced__list","onUpdate:modelValue":a[0]||(a[0]=a=>e.country=a)},[(t(!0),l(f,null,p(e.countries,(a=>(t(),l("option",{key:a.code,value:a.code},_(e.getUnicodeFlagIcon(a.code))+" "+_(a.name),9,ve)))),128))],512),[[S,e.country]]),h("div",ge,[h("img",{src:`https://purecatamphetamine.github.io/country-flag-icons/3x2/${e.country}.svg`,alt:""},null,8,be)]),u(r,{name:"chevron-down-fat"})]),m(" label field filled is in here (and hidden with css) to send label value to local storage (see setUserData() in Webform.vue) "),(t(),M(s,{classes:{outer:"formkit-phone-enhanced__outer",input:"formkit-phone-enhanced__input"},label:e.context.label,type:"mask",name:e.context.node.name,id:e.context.id,mask:e.maskFn,key:e.code,modelValue:e.context.value,"onUpdate:modelValue":a[1]||(a[1]=a=>e.context.value=a)},null,8,["label","name","id","mask","modelValue"]))])},fe.__file="src/components/FormKit/FormKitPhoneEnhanced/FormKitPhoneEnhanced.vue";const ye={class:"formkit-recaptcha"};var Se={__name:"FormKitRecaptcha",props:{context:Object},setup(a){const n=a,d=e(null);function i(e){n.context.node.input({captcha_sid:n.context.attrs.sid,captcha_token:n.context.attrs.token,captcha_response:"","g-recaptcha-response":e,captcha_cacheable:"1"})}return o((()=>{grecaptcha.ready((()=>{grecaptcha.render(d.value,{sitekey:n.context.attrs.siteKey,callback:i})}))})),(e,a)=>(t(),l("div",ye,[h("div",{class:"g-recaptcha",ref_key:"recaptchaRef",ref:d,"data-theme":"light","data-type":"image"},null,512)]))},__file:"src/components/FormKit/FormKitRecaptcha/FormKitRecaptcha.vue"};const Me=e=>{if("0"===e[0]){return 97-Number(e.slice(0,8))%97===Number(e.slice(8,10))}return"1"===e[0]&&10===e.length},ke={name:"newBelgium",codes:["BE","BEL","056"],calcWithFormatFn:e=>10===e.length?{vat:`BE${e}`,isValid:Me(e)}:{vat:`BE${e}`,isValid:!1},rules:{multipliers:{},regex:[/^(BE)(\d{10})$/]}},we=D.map((e=>"Belgium"===e.name?ke:e));function Ae(e){if(!e)return 0;const[a,o=0,n=0]=e.split(":").map(Number);return 3600*a+60*o+n}function Te(e){const a=Math.floor(e/3600),o=Math.floor(e%3600/60);return`${String(a).padStart(2,"0")}:${String(o).padStart(2,"0")}`}const Ce={plugins:[function(e){["button","submit","hidden","group","list","meta"].includes(e.props.type)||e.on("created",(()=>{const a=ue.includes(`${e.props.type}${e.props.options?"_multi":""}`)?"legend":"label";e.props.definition.schemaMemoKey&&(e.props.definition.schemaMemoKey+=(e.props.options?"_multi":"")+"_add_asterisk");const o=e.props.definition.schema;e.props.definition.schema=(e={})=>(e[a]={children:["$label",{$cmp:"InfoTooltip",if:"$attrs.tooltip",props:{content:"$attrs.tooltip"}},{$el:"span",if:"$state.required",attrs:{class:"formkit-asterisk"},children:["*"]}]},o(e))}))},function(e){["button","submit","hidden","group","list","meta"].includes(e.props.type)||e.on("created",(()=>{const a=e.props.definition.schema;e.props.definition.schema=(e={})=>(e.help={children:[{$el:"div",attrs:{innerHTML:"$help"}}]},a(e))}))},F({allowIncomplete:!1})],rules:{internationalPhone:function(e){if(""===e.value)return!0;try{return E(e.value).isValid()}catch(e){return!1}},phone:function(e){if(""===e.value)return!0;try{return E(e.value,"BE").isValid()}catch(e){return!1}},iban:function(e){return x.isValid(e.value)},vat:function(e){return j(e.value,we).isValid},insz:function(e){const a=e.value.replace(/[^0-9]/g,"");if(11!=a.length)return!1;const o=a.substr(a.length-2,2),n=function(e){return 97-e%97};let d=parseInt(a.substr(0,9));return n(d)==o||(d=parseInt("2"+a.substr(0,9)),n(d)==o)},timeRule:function(e){const a=e.value,{step:o,min:n,max:d}=e.props.attrs;if(!a)return!0;const i=Ae(a),c=Ae(n),t=Ae(d),l=Number(o);if(i<c)return!1;if(i>t)return!1;return 0===(i-c)%l}},messages:{nl:{validation:{phone:"Dit is geen geldig telefoonnummer.",required:"Dit veld is verplicht.",vat:"Dit is geen geldig Btw-nummer.",is:"Dit veld is verplicht.",timeRule:({node:e})=>function(e){const a=e.value,{step:o,min:n,max:d}=e.props.attrs;if(!a)return"";const i=Ae(a),c=Ae(n),t=Ae(d),l=Number(o);if(i<c)return`De waarde moet ${Te(c)} uur of later zijn.`;if(i>t)return`De waarde moet ${Te(t)} uur of eerder zijn.`;const r=(i-c)%l;if(0===r)return"";const s=i-r,m=s+l;return`Voer een geldige tijd in. De twee dichtstbijzijnde geldige waarden zijn ${Te(Math.max(s,c))} en ${Te(Math.min(m,t))}.`}(e)}},en:{validation:{phone:"This is not a valid phone number.",required:"This field is required.",is:"This field is required.",vat:"This is not a valid VAT number."}},fr:{validation:{phone:"Ce numéro de téléphone n'est pas valide.",required:"Ce champ est obligatoire.",is:"Ce champ est obligatoire.",vat:"Ce numéro de TVA n'est pas valide."}}},locales:{nl:G,en:P,fr:K},locale:document.documentElement.lang,inputs:{phoneEnhanced:A(fe),recaptcha:A(Se)}};var Ie={install(e,a){const o=$({},Ce,a);e.component("MinskyWebformFormKit",ne),e.use(T,C(o)),e.component("Icon",le),e.component("InfoTooltip",me),e.component("FormKitMessages",I)}};export{ne as MinskyWebformFormKit,Ie as default};
|
package/package.json
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "minsky-webform-formkit",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"build": "rollup -c",
|
|
9
|
+
"test": "vitest",
|
|
10
|
+
"dev": "vite example/"
|
|
11
|
+
},
|
|
12
|
+
"repository": {
|
|
13
|
+
"type": "git",
|
|
14
|
+
"url": "git+ssh://git@bitbucket.org/Minsky_WebAgency/minsky-webform-formkit.git"
|
|
15
|
+
},
|
|
16
|
+
"keywords": [
|
|
17
|
+
"vue3",
|
|
18
|
+
"formkit",
|
|
19
|
+
"drupal",
|
|
20
|
+
"webform"
|
|
21
|
+
],
|
|
22
|
+
"author": "",
|
|
23
|
+
"license": "MIT",
|
|
24
|
+
"homepage": "https://bitbucket.org/Minsky_WebAgency/minsky-webform-formkit#readme",
|
|
25
|
+
"peerDependencies": {
|
|
26
|
+
"@formkit/addons": "^1.7.2",
|
|
27
|
+
"@formkit/core": "^1.7.2",
|
|
28
|
+
"@formkit/i18n": "^1.7.2",
|
|
29
|
+
"@formkit/vue": "^1.7.2",
|
|
30
|
+
"gsap": "^3.14.2",
|
|
31
|
+
"vue": "^3.5.31"
|
|
32
|
+
},
|
|
33
|
+
"devDependencies": {
|
|
34
|
+
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
35
|
+
"@vitejs/plugin-vue": "^5.2.1",
|
|
36
|
+
"@vue/compiler-sfc": "^3.5.31",
|
|
37
|
+
"lodash": "^4.17.21",
|
|
38
|
+
"postcss": "^8.5.8",
|
|
39
|
+
"prettier": "^3.8.1",
|
|
40
|
+
"rollup": "^4.28.1",
|
|
41
|
+
"rollup-plugin-postcss": "^4.0.2",
|
|
42
|
+
"rollup-plugin-terser": "^7.0.2",
|
|
43
|
+
"rollup-plugin-vue": "^6.0.0",
|
|
44
|
+
"sass": "^1.98.0",
|
|
45
|
+
"terser": "^5.37.0",
|
|
46
|
+
"vite": "^6.0.3"
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"@accountable/jsvat": "^1.3.4",
|
|
50
|
+
"country-flag-icons": "^1.6.15",
|
|
51
|
+
"floating-vue": "^5.2.2",
|
|
52
|
+
"ibankit": "^1.6.5",
|
|
53
|
+
"libphonenumber-js": "^1.12.41"
|
|
54
|
+
}
|
|
55
|
+
}
|