@designcrowd/library.brand-page 5.17.2 → 5.17.4
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/lib/src/{CreatedOnBrandCrowd-de-de-DVbX019x.js → CreatedOnBrandCrowd-de-de-C_NzyXvG.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-en-us-U7ZUILmi.js → CreatedOnBrandCrowd-en-us-DSmpdByg.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-es-es-D97zjmv_.js → CreatedOnBrandCrowd-es-es-4O9ttd4y.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-fr-fr-BuOAG7-D.js → CreatedOnBrandCrowd-fr-ca-DDr8rQHb.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-fr-ca-BuOAG7-D.js → CreatedOnBrandCrowd-fr-fr-DDr8rQHb.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-pt-pt-DMTRsNBz.js → CreatedOnBrandCrowd-pt-br-BUTVQ17i.js} +3 -3
- package/lib/src/{CreatedOnBrandCrowd-pt-br-DMTRsNBz.js → CreatedOnBrandCrowd-pt-pt-BUTVQ17i.js} +3 -3
- package/lib/src/{CreatedOnDcom-de-de-B_jbp2ga.js → CreatedOnDcom-de-de-thkGl7gg.js} +3 -3
- package/lib/src/{CreatedOnDcom-en-us-DQQQhn-z.js → CreatedOnDcom-en-us-DOgnHkVR.js} +3 -3
- package/lib/src/{CreatedOnDcom-es-es-q3MzWO6e.js → CreatedOnDcom-es-es-NyEB16vO.js} +3 -3
- package/lib/src/{CreatedOnDcom-fr-ca-Bep30mu7.js → CreatedOnDcom-fr-ca-Cd6WjWcu.js} +3 -3
- package/lib/src/{CreatedOnDcom-fr-fr-DTF8Zzzc.js → CreatedOnDcom-fr-fr-CDKX35U7.js} +3 -3
- package/lib/src/{CreatedOnDcom-pt-br-ByR1GU2L.js → CreatedOnDcom-pt-br-PbJzyRNp.js} +3 -3
- package/lib/src/{CreatedOnDcom-pt-pt-A0L4zTr0.js → CreatedOnDcom-pt-pt-tja7jglY.js} +3 -3
- package/lib/src/brand-page/clients/brand-page.client.d.ts +2 -1
- package/lib/src/brand-page/clients/brand-page.client.js +1 -0
- package/lib/src/brand-page/models/payment.model.d.ts +42 -0
- package/lib/src/brand-page/models/payment.model.js +9 -0
- package/lib/src/brand-page/utils/view-model.util.js +1 -0
- package/lib/src/brand-page/view-models.d.ts +1 -0
- package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -1
- package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +1 -0
- package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -0
- package/lib/src/brand-page-maker/composables/useEventTracker.js +6 -0
- package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +1 -0
- package/lib/src/brand-page-maker/constants/config-settings-constant.js +7 -0
- package/lib/src/brand-page-maker/models/content-settings.js +1 -0
- package/lib/src/brand-page-maker/validators/section-button.validator.js +4 -1
- package/lib/src/bundled-translations-D5A4swr0.js +173 -0
- package/lib/src/bundled-translations.de-DE-Bq6H28Hz.js +173 -0
- package/lib/src/bundled-translations.es-ES-Bo-UGy51.js +173 -0
- package/lib/src/bundled-translations.fr-CA-7GXawEcN.js +173 -0
- package/lib/src/bundled-translations.fr-FR-DzVwt2U-.js +173 -0
- package/lib/src/bundled-translations.pt-BR-DSZZ-i-B.js +173 -0
- package/lib/src/bundled-translations.pt-PT-SNbEX0GM.js +173 -0
- package/lib/src/bundles/bundled-translations.de-DE.json +965 -1
- package/lib/src/bundles/bundled-translations.es-ES.json +965 -1
- package/lib/src/bundles/bundled-translations.fr-CA.json +965 -1
- package/lib/src/bundles/bundled-translations.fr-FR.json +965 -1
- package/lib/src/bundles/bundled-translations.json +965 -1
- package/lib/src/bundles/bundled-translations.pt-BR.json +965 -1
- package/lib/src/bundles/bundled-translations.pt-PT.json +965 -1
- package/lib/src/composables/useTranslate.d.ts +7 -1
- package/lib/src/composables/useTranslate.js +9 -1
- package/lib/src/css/library.brand-page-brandCrowd.min.css +76 -55
- package/lib/src/css/library.brand-page-brandPage.min.css +77 -57
- package/lib/src/css/library.brand-page-designCom.min.css +76 -55
- package/lib/src/css/library.brand-page-preview.min.css +76 -55
- package/lib/src/index.mjs +88 -87
- package/lib/src/{lib-CvEpWvWA.js → lib-DL-13itP.js} +24124 -23832
- package/lib/src/mockServiceWorker.js +1 -1
- package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
- package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.js +14 -0
- package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.d.ts +13 -1
- package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.js +10 -0
- package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +2 -1
- package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -0
- package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +1 -0
- package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
- package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -0
- package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +2 -1
- package/package.json +1 -1
- package/src/brand-page/clients/brand-page.client.ts +3 -0
- package/src/brand-page/components/about-section/AboutSection.vue +7 -1
- package/src/brand-page/components/payment/RequestPaymentStripe.vue +381 -44
- package/src/brand-page/components/shop/PaymentModal.vue +7 -1
- package/src/brand-page/components/shop/PaymentShippingAddress.vue +297 -0
- package/src/brand-page/components/shop/Shop.vue +1 -0
- package/src/brand-page/components/shop/i18n/countries.de-DE.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.es-ES.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.fr-CA.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.fr-FR.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.pt-BR.json +240 -0
- package/src/brand-page/components/shop/i18n/countries.pt-PT.json +240 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.de-DE.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.es-ES.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-CA.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-FR.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-BR.json +18 -0
- package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-PT.json +18 -0
- package/src/brand-page/models/payment.model.ts +24 -0
- package/src/brand-page/utils/view-model.util.ts +1 -0
- package/src/brand-page/view-models.ts +1 -0
- package/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.vue +1 -1
- package/src/brand-page-maker/composables/useEventTracker.ts +6 -0
- package/src/brand-page-maker/constants/config-settings-constant.ts +8 -0
- package/src/brand-page-maker/models/content-settings.ts +1 -0
- package/src/brand-page-maker/validators/section-button.validator.ts +5 -1
- package/src/bundles/bundled-translations.de-DE.json +965 -1
- package/src/bundles/bundled-translations.es-ES.json +965 -1
- package/src/bundles/bundled-translations.fr-CA.json +965 -1
- package/src/bundles/bundled-translations.fr-FR.json +965 -1
- package/src/bundles/bundled-translations.json +965 -1
- package/src/bundles/bundled-translations.pt-BR.json +965 -1
- package/src/bundles/bundled-translations.pt-PT.json +965 -1
- package/src/composables/useTranslate.ts +15 -0
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +3 -1
- package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +3 -1
- package/src/shared/content-settings/components/content-settings-item/ContentSettingsItemField.mixin.ts +17 -0
- package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.ts +12 -0
- package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.vue +9 -1
- package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.d.ts +0 -106
- package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.js +0 -253
- package/lib/src/bundled-translations-B6qZE8LU.js +0 -169
- package/lib/src/bundled-translations.de-DE-CsU6YsZb.js +0 -169
- package/lib/src/bundled-translations.es-ES-unPBdcJx.js +0 -169
- package/lib/src/bundled-translations.fr-CA-Dpa2wEtC.js +0 -169
- package/lib/src/bundled-translations.fr-FR-BPloaUjN.js +0 -169
- package/lib/src/bundled-translations.pt-BR-CFRGdaDO.js +0 -169
- package/lib/src/bundled-translations.pt-PT-BHVYCE0K.js +0 -169
- package/src/brand-page/components/payment/RequestPaymentStripe.mixin.ts +0 -364
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div data-component="payment-shipping-address" class="tw-text-black">
|
|
3
|
+
<!-- Shipping Address Section -->
|
|
4
|
+
<p class="tw-font-bold tw-mb-2">
|
|
5
|
+
{{ paymentShippingAddressTr('shippingAddress') }}
|
|
6
|
+
</p>
|
|
7
|
+
|
|
8
|
+
<!-- Full Name -->
|
|
9
|
+
<TextInput
|
|
10
|
+
v-model="shippingData.name"
|
|
11
|
+
class="tw-mb-1"
|
|
12
|
+
:placeholder="paymentShippingAddressTr('fullNamePlaceholder')"
|
|
13
|
+
:error="Boolean(errors.name)"
|
|
14
|
+
@blur="validateField('name')"
|
|
15
|
+
@input="onFieldInput('name')"
|
|
16
|
+
/>
|
|
17
|
+
<p v-if="errors.name" class="form-error tw-mb-2">
|
|
18
|
+
{{ errors.name }}
|
|
19
|
+
</p>
|
|
20
|
+
|
|
21
|
+
<!-- Address Line 1 -->
|
|
22
|
+
<TextInput
|
|
23
|
+
v-model="shippingData.line1"
|
|
24
|
+
class="tw-mb-1 tw-mt-3"
|
|
25
|
+
:placeholder="paymentShippingAddressTr('addressLine1Placeholder')"
|
|
26
|
+
:error="Boolean(errors.line1)"
|
|
27
|
+
@blur="validateField('line1')"
|
|
28
|
+
@input="onFieldInput('line1')"
|
|
29
|
+
/>
|
|
30
|
+
<p v-if="errors.line1" class="form-error tw-mb-2">
|
|
31
|
+
{{ errors.line1 }}
|
|
32
|
+
</p>
|
|
33
|
+
|
|
34
|
+
<!-- Address Line 2 (optional) -->
|
|
35
|
+
<TextInput
|
|
36
|
+
v-model="shippingData.line2"
|
|
37
|
+
class="tw-mb-1 tw-mt-3"
|
|
38
|
+
:placeholder="paymentShippingAddressTr('addressLine2Placeholder')"
|
|
39
|
+
:error="Boolean(errors.line2)"
|
|
40
|
+
@blur="validateField('line2')"
|
|
41
|
+
@input="onFieldInput('line2')"
|
|
42
|
+
/>
|
|
43
|
+
<p v-if="errors.line2" class="form-error tw-mb-2">
|
|
44
|
+
{{ errors.line2 }}
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
<!-- Country and City Row -->
|
|
48
|
+
<div class="tw-flex tw-flex-row tw-gap-2 tw-mt-3">
|
|
49
|
+
<div class="tw-flex-1">
|
|
50
|
+
<Dropdown
|
|
51
|
+
v-model:show="showCountryMenu"
|
|
52
|
+
:title="selectedCountryLabel"
|
|
53
|
+
:element-classes="countryDropdownClasses"
|
|
54
|
+
menu-element-classes="tw-overflow-y-auto tw-max-h-72 tw-w-full"
|
|
55
|
+
@update:show="onCountryMenuToggle"
|
|
56
|
+
@blur="validateField('country')"
|
|
57
|
+
>
|
|
58
|
+
<DropdownItem
|
|
59
|
+
v-for="country in countries"
|
|
60
|
+
:key="country.code"
|
|
61
|
+
class="tw-text-black tw-break-all"
|
|
62
|
+
@click="onSelectCountry(country.code)"
|
|
63
|
+
>
|
|
64
|
+
{{ country.name }}
|
|
65
|
+
</DropdownItem>
|
|
66
|
+
</Dropdown>
|
|
67
|
+
<p v-if="errors.country" class="form-error tw-mt-1">
|
|
68
|
+
{{ errors.country }}
|
|
69
|
+
</p>
|
|
70
|
+
</div>
|
|
71
|
+
<div class="tw-flex-1">
|
|
72
|
+
<TextInput
|
|
73
|
+
v-model="shippingData.city"
|
|
74
|
+
:placeholder="paymentShippingAddressTr('cityPlaceholder')"
|
|
75
|
+
:error="Boolean(errors.city)"
|
|
76
|
+
@blur="validateField('city')"
|
|
77
|
+
@input="onFieldInput('city')"
|
|
78
|
+
/>
|
|
79
|
+
<p v-if="errors.city" class="form-error tw-mt-1">
|
|
80
|
+
{{ errors.city }}
|
|
81
|
+
</p>
|
|
82
|
+
</div>
|
|
83
|
+
</div>
|
|
84
|
+
|
|
85
|
+
<!-- State and Postal Code Row -->
|
|
86
|
+
<div class="tw-flex tw-flex-row tw-gap-2 tw-mt-3">
|
|
87
|
+
<div class="tw-flex-1">
|
|
88
|
+
<TextInput
|
|
89
|
+
v-model="shippingData.state"
|
|
90
|
+
:placeholder="paymentShippingAddressTr('statePlaceholder')"
|
|
91
|
+
:error="Boolean(errors.state)"
|
|
92
|
+
@blur="validateField('state')"
|
|
93
|
+
@input="onFieldInput('state')"
|
|
94
|
+
/>
|
|
95
|
+
<p v-if="errors.state" class="form-error tw-mt-1">
|
|
96
|
+
{{ errors.state }}
|
|
97
|
+
</p>
|
|
98
|
+
</div>
|
|
99
|
+
<div class="tw-flex-1">
|
|
100
|
+
<TextInput
|
|
101
|
+
v-model="shippingData.postalCode"
|
|
102
|
+
:placeholder="paymentShippingAddressTr('postalCodePlaceholder')"
|
|
103
|
+
:error="Boolean(errors.postalCode)"
|
|
104
|
+
@blur="validateField('postalCode')"
|
|
105
|
+
@input="onFieldInput('postalCode')"
|
|
106
|
+
/>
|
|
107
|
+
<p v-if="errors.postalCode" class="form-error tw-mt-1">
|
|
108
|
+
{{ errors.postalCode }}
|
|
109
|
+
</p>
|
|
110
|
+
</div>
|
|
111
|
+
</div>
|
|
112
|
+
</div>
|
|
113
|
+
</template>
|
|
114
|
+
|
|
115
|
+
<script setup lang="ts">
|
|
116
|
+
import { reactive, computed, watch, ref } from 'vue';
|
|
117
|
+
import { TextInput, Dropdown, DropdownItem } from '@designcrowd/fe-shared-lib';
|
|
118
|
+
import {
|
|
119
|
+
paymentShippingAddressTr,
|
|
120
|
+
countriesTr,
|
|
121
|
+
} from '../../../composables/useTranslate';
|
|
122
|
+
import {
|
|
123
|
+
STRIPE_ADDRESS_LIMITS,
|
|
124
|
+
type StripeAddressField,
|
|
125
|
+
type StripeShippingDetails,
|
|
126
|
+
} from '../../models';
|
|
127
|
+
|
|
128
|
+
interface Props {
|
|
129
|
+
modelValue: StripeShippingDetails;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
const props = defineProps<Props>();
|
|
133
|
+
|
|
134
|
+
const emit = defineEmits<{
|
|
135
|
+
(e: 'update:modelValue', value: StripeShippingDetails): void;
|
|
136
|
+
(e: 'validation-change', isValid: boolean): void;
|
|
137
|
+
}>();
|
|
138
|
+
|
|
139
|
+
type ValidatableField = StripeAddressField;
|
|
140
|
+
|
|
141
|
+
type Country = { code: string; name: string };
|
|
142
|
+
|
|
143
|
+
type FormErrors = Record<ValidatableField, string>;
|
|
144
|
+
|
|
145
|
+
const shippingData = reactive({
|
|
146
|
+
name: props.modelValue.name || '',
|
|
147
|
+
line1: props.modelValue.line1 || '',
|
|
148
|
+
line2: props.modelValue.line2 || '',
|
|
149
|
+
city: props.modelValue.city || '',
|
|
150
|
+
state: props.modelValue.state || '',
|
|
151
|
+
postalCode: props.modelValue.postalCode || '',
|
|
152
|
+
country: props.modelValue.country || '',
|
|
153
|
+
});
|
|
154
|
+
|
|
155
|
+
const errors = reactive<FormErrors>({
|
|
156
|
+
name: '',
|
|
157
|
+
line1: '',
|
|
158
|
+
line2: '',
|
|
159
|
+
city: '',
|
|
160
|
+
state: '',
|
|
161
|
+
postalCode: '',
|
|
162
|
+
country: '',
|
|
163
|
+
});
|
|
164
|
+
|
|
165
|
+
const countries = computed<Country[]>(() => countriesTr());
|
|
166
|
+
const showCountryMenu = ref(false);
|
|
167
|
+
|
|
168
|
+
const selectedCountryLabel = computed((): string => {
|
|
169
|
+
if (!shippingData.country) {
|
|
170
|
+
return paymentShippingAddressTr('countryPlaceholder');
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
const match = countries.value.find(
|
|
174
|
+
(country) => country.code === shippingData.country,
|
|
175
|
+
);
|
|
176
|
+
|
|
177
|
+
return match?.name ?? paymentShippingAddressTr('countryPlaceholder');
|
|
178
|
+
});
|
|
179
|
+
|
|
180
|
+
const countryDropdownClasses = computed((): string => {
|
|
181
|
+
return [
|
|
182
|
+
'tw-h-[2.6rem]',
|
|
183
|
+
'tw-w-full',
|
|
184
|
+
'tw-text-base',
|
|
185
|
+
'tw-bg-white',
|
|
186
|
+
'tw-rounded',
|
|
187
|
+
'tw-border',
|
|
188
|
+
'tw-border-solid',
|
|
189
|
+
errors.country ? 'tw-border-error-500' : 'tw-border-grayscale-300',
|
|
190
|
+
shippingData.country ? 'tw-text-grayscale-800' : 'tw-text-grayscale-500',
|
|
191
|
+
].join(' ');
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
function validateAddressField(field: StripeAddressField): boolean {
|
|
195
|
+
const value = shippingData[field].trim();
|
|
196
|
+
const { min, max } = STRIPE_ADDRESS_LIMITS[field];
|
|
197
|
+
|
|
198
|
+
if (min > 0 && !value) {
|
|
199
|
+
errors[field] = paymentShippingAddressTr('fieldRequired');
|
|
200
|
+
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (value.length > max) {
|
|
205
|
+
errors[field] = paymentShippingAddressTr('fieldMaxLength', { max });
|
|
206
|
+
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
errors[field] = '';
|
|
211
|
+
|
|
212
|
+
return true;
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
function validateField(field: ValidatableField): boolean {
|
|
216
|
+
return validateAddressField(field);
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
function onFieldInput(field: ValidatableField): void {
|
|
220
|
+
if (errors[field]) {
|
|
221
|
+
validateField(field);
|
|
222
|
+
}
|
|
223
|
+
emitUpdate();
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function onCountryMenuToggle(isOpen: boolean): void {
|
|
227
|
+
showCountryMenu.value = isOpen;
|
|
228
|
+
if (!isOpen) {
|
|
229
|
+
validateField('country');
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
function onSelectCountry(countryCode: string): void {
|
|
234
|
+
shippingData.country = countryCode;
|
|
235
|
+
showCountryMenu.value = false;
|
|
236
|
+
onFieldInput('country');
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
function validateAll(): boolean {
|
|
240
|
+
const addressFields: StripeAddressField[] = [
|
|
241
|
+
'name',
|
|
242
|
+
'line1',
|
|
243
|
+
'line2',
|
|
244
|
+
'city',
|
|
245
|
+
'state',
|
|
246
|
+
'postalCode',
|
|
247
|
+
'country',
|
|
248
|
+
];
|
|
249
|
+
|
|
250
|
+
const results = addressFields.map((field) => validateAddressField(field));
|
|
251
|
+
|
|
252
|
+
return results.every(Boolean);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function emitUpdate(): void {
|
|
256
|
+
const shippingDetails: StripeShippingDetails = {
|
|
257
|
+
name: shippingData.name,
|
|
258
|
+
line1: shippingData.line1,
|
|
259
|
+
line2: shippingData.line2 || undefined,
|
|
260
|
+
city: shippingData.city || undefined,
|
|
261
|
+
state: shippingData.state || undefined,
|
|
262
|
+
postalCode: shippingData.postalCode || undefined,
|
|
263
|
+
country: shippingData.country,
|
|
264
|
+
};
|
|
265
|
+
|
|
266
|
+
emit('update:modelValue', shippingDetails);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
// Watch for changes and emit updates
|
|
270
|
+
watch(
|
|
271
|
+
shippingData,
|
|
272
|
+
() => {
|
|
273
|
+
emitUpdate();
|
|
274
|
+
const isValid = Object.values(errors).every((error) => !error);
|
|
275
|
+
emit('validation-change', isValid);
|
|
276
|
+
},
|
|
277
|
+
{ deep: true },
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
// Expose validation method for parent component
|
|
281
|
+
defineExpose({
|
|
282
|
+
validateAll,
|
|
283
|
+
});
|
|
284
|
+
</script>
|
|
285
|
+
|
|
286
|
+
<style scoped>
|
|
287
|
+
.form-error {
|
|
288
|
+
@apply tw-text-xs;
|
|
289
|
+
color: #f21b3f;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
select {
|
|
293
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23666' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
|
|
294
|
+
background-repeat: no-repeat;
|
|
295
|
+
background-position: right 12px center;
|
|
296
|
+
}
|
|
297
|
+
</style>
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"countries": [
|
|
3
|
+
{"code":"AF","name":"Afghanistan"},
|
|
4
|
+
{"code":"AX","name":"Åland-Inseln"},
|
|
5
|
+
{"code":"AL","name":"Albanien"},
|
|
6
|
+
{"code":"DZ","name":"Algerien"},
|
|
7
|
+
{"code":"AD","name":"Andorra"},
|
|
8
|
+
{"code":"AO","name":"Angola"},
|
|
9
|
+
{"code":"KI","name":"Anguilla"},
|
|
10
|
+
{"code":"AQ","name":"Antarktis"},
|
|
11
|
+
{"code":"AG","name":"Antigua und Barbuda"},
|
|
12
|
+
{"code":"AR","name":"Argentinien"},
|
|
13
|
+
{"code":"AM","name":"Armenien"},
|
|
14
|
+
{"code":"AW","name":"Aruba"},
|
|
15
|
+
{"code":"AC","name":"Ascension"},
|
|
16
|
+
{"code":"AU","name":"Australien"},
|
|
17
|
+
{"code":"AT","name":"Österreich"},
|
|
18
|
+
{"code":"AZ","name":"Aserbaidschan"},
|
|
19
|
+
{"code":"BS","name":"Bahamas"},
|
|
20
|
+
{"code":"BH","name":"Bahrain"},
|
|
21
|
+
{"code":"BD","name":"Bangladesh"},
|
|
22
|
+
{"code":"BB","name":"Barbados"},
|
|
23
|
+
{"code":"BY","name":"Belarus"},
|
|
24
|
+
{"code":"BE","name":"Belgien"},
|
|
25
|
+
{"code":"BZ","name":"Belize"},
|
|
26
|
+
{"code":"BJ","name":"Benin"},
|
|
27
|
+
{"code":"BM","name":"Bermuda"},
|
|
28
|
+
{"code":"BT","name":"Bhutan"},
|
|
29
|
+
{"code":"BO","name":"Bolivien"},
|
|
30
|
+
{"code":"BQ","name":"Bonaire, Sint Eustatius und Saba"},
|
|
31
|
+
{"code":"BA","name":"Bosnien und Herzegowina"},
|
|
32
|
+
{"code":"BW","name":"Botswana"},
|
|
33
|
+
{"code":"BV","name":"Bouvetinsel"},
|
|
34
|
+
{"code":"BR","name":"Brasilien"},
|
|
35
|
+
{"code":"IO","name":"Britisches Territorium im Indischen Ozean"},
|
|
36
|
+
{"code":"VG","name":"Britische Jungferninseln"},
|
|
37
|
+
{"code":"BN","name":"Brunei"},
|
|
38
|
+
{"code":"BG","name":"Bulgarien"},
|
|
39
|
+
{"code":"BF","name":"Burkina Faso"},
|
|
40
|
+
{"code":"BI","name":"Burundi"},
|
|
41
|
+
{"code":"KH","name":"Kambodscha"},
|
|
42
|
+
{"code":"CM","name":"Kamerun"},
|
|
43
|
+
{"code":"CA","name":"Kanada"},
|
|
44
|
+
{"code":"CV","name":"Kap Verde"},
|
|
45
|
+
{"code":"KY","name":"Kaimaninseln"},
|
|
46
|
+
{"code":"CF","name":"Zentralafrikanische Republik"},
|
|
47
|
+
{"code":"TD","name":"Tschad"},
|
|
48
|
+
{"code":"CL","name":"Chile"},
|
|
49
|
+
{"code":"CN","name":"China"},
|
|
50
|
+
{"code":"CO","name":"Kolumbien"},
|
|
51
|
+
{"code":"KM","name":"Komoren"},
|
|
52
|
+
{"code":"CK","name":"Cookinseln"},
|
|
53
|
+
{"code":"CR","name":"Costa Rica"},
|
|
54
|
+
{"code":"CI","name":"Elfenbeinküste"},
|
|
55
|
+
{"code":"HR","name":"Kroatien"},
|
|
56
|
+
{"code":"CW","name":"Curaçao"},
|
|
57
|
+
{"code":"CY","name":"Zypern"},
|
|
58
|
+
{"code":"CZ","name":"Tschechien"},
|
|
59
|
+
{"code":"CD","name":"Demokratische Republik Kongo"},
|
|
60
|
+
{"code":"DK","name":"Dänemark"},
|
|
61
|
+
{"code":"DJ","name":"Dschibuti"},
|
|
62
|
+
{"code":"DM","name":"Dominica"},
|
|
63
|
+
{"code":"TUN","name":"Dominikanische Republik"},
|
|
64
|
+
{"code":"EC","name":"Ecuador"},
|
|
65
|
+
{"code":"EG","name":"Ägypten"},
|
|
66
|
+
{"code":"SV","name":"El Salvador"},
|
|
67
|
+
{"code":"GQ","name":"Äquatorialguinea"},
|
|
68
|
+
{"code":"ER","name":"Eritrea"},
|
|
69
|
+
{"code":"EE","name":"Estland"},
|
|
70
|
+
{"code":"SZ","name":"Eswatini"},
|
|
71
|
+
{"code":"ET","name":"Äthiopien"},
|
|
72
|
+
{"code":"FK","name":"Falklandinseln"},
|
|
73
|
+
{"code":"FO","name":"Färöer-Inseln"},
|
|
74
|
+
{"code":"FJ","name":"Fiji"},
|
|
75
|
+
{"code":"FI","name":"Finnland"},
|
|
76
|
+
{"code":"FR","name":"Frankreich"},
|
|
77
|
+
{"code":"GF","name":"Französisch-Guayana"},
|
|
78
|
+
{"code":"PF","name":"Französisch-Polynesien"},
|
|
79
|
+
{"code":"TF","name":"Französische Süd- und Antarktisgebiete"},
|
|
80
|
+
{"code":"GA","name":"Gabon"},
|
|
81
|
+
{"code":"GM","name":"Gambia"},
|
|
82
|
+
{"code":"GE","name":"Georgien"},
|
|
83
|
+
{"code":"DE","name":"Deutschland"},
|
|
84
|
+
{"code":"GH","name":"Ghana"},
|
|
85
|
+
{"code":"GI","name":"Gibraltar"},
|
|
86
|
+
{"code":"GR","name":"Griechenland"},
|
|
87
|
+
{"code":"GL","name":"Grönland"},
|
|
88
|
+
{"code":"GD","name":"Grenada"},
|
|
89
|
+
{"code":"GP","name":"Guadeloupe"},
|
|
90
|
+
{"code":"GU","name":"Guam"},
|
|
91
|
+
{"code":"GT","name":"Guatemala"},
|
|
92
|
+
{"code":"GG","name":"Guernsey"},
|
|
93
|
+
{"code":"GN","name":"Guinea"},
|
|
94
|
+
{"code":"GW","name":"Guinea-Bissau"},
|
|
95
|
+
{"code":"GY","name":"Guyana"},
|
|
96
|
+
{"code":"HT","name":"Haiti"},
|
|
97
|
+
{"code":"HN","name":"Honduras"},
|
|
98
|
+
{"code":"HK","name":"Hongkong"},
|
|
99
|
+
{"code":"HU","name":"Ungarn"},
|
|
100
|
+
{"code":"IS","name":"Island"},
|
|
101
|
+
{"code":"IN","name":"Indien"},
|
|
102
|
+
{"code":"Id","name":"Indonesien"},
|
|
103
|
+
{"code":"IQ","name":"Irak"},
|
|
104
|
+
{"code":"IE","name":"Irland"},
|
|
105
|
+
{"code":"IM","name":"Isle of Man"},
|
|
106
|
+
{"code":"IL","name":"Israel"},
|
|
107
|
+
{"code":"IT","name":"Italien"},
|
|
108
|
+
{"code":"JM","name":"Jamaika"},
|
|
109
|
+
{"code":"JP","name":"Japan"},
|
|
110
|
+
{"code":"JE","name":"Jersey"},
|
|
111
|
+
{"code":"JO","name":"Jordanien"},
|
|
112
|
+
{"code":"KZ","name":"Kasachstan"},
|
|
113
|
+
{"code":"KE","name":"Kenya"},
|
|
114
|
+
{"code":"KI","name":"Kiribati"},
|
|
115
|
+
{"code":"XK","name":"Kosovo"},
|
|
116
|
+
{"code":"KW","name":"Kuwait"},
|
|
117
|
+
{"code":"KG","name":"Kirgisistan"},
|
|
118
|
+
{"code":"LA","name":"Laos"},
|
|
119
|
+
{"code":"LV","name":"Lettland"},
|
|
120
|
+
{"code":"LB","name":"Libanon"},
|
|
121
|
+
{"code":"LS","name":"Lesotho"},
|
|
122
|
+
{"code":"LR","name":"Liberia"},
|
|
123
|
+
{"code":"LY","name":"Libyen"},
|
|
124
|
+
{"code":"LI","name":"Liechtenstein"},
|
|
125
|
+
{"code":"LT","name":"Litauen"},
|
|
126
|
+
{"code":"LU","name":"Luxemburg"},
|
|
127
|
+
{"code":"MO","name":"Macau"},
|
|
128
|
+
{"code":"MG","name":"Madagaskar"},
|
|
129
|
+
{"code":"MW","name":"Malawi"},
|
|
130
|
+
{"code":"MY","name":"Malaysia"},
|
|
131
|
+
{"code":"MV","name":"Malediven"},
|
|
132
|
+
{"code":"ML","name":"Mali"},
|
|
133
|
+
{"code":"MT","name":"Malta"},
|
|
134
|
+
{"code":"MQ","name":"Martinique"},
|
|
135
|
+
{"code":"MR","name":"Mauretanien"},
|
|
136
|
+
{"code":"MU","name":"Mauritius"},
|
|
137
|
+
{"code":"YT","name":"Mayotte"},
|
|
138
|
+
{"code":"MX","name":"Mexiko"},
|
|
139
|
+
{"code":"MD","name":"Republik Moldau"},
|
|
140
|
+
{"code":"MC","name":"Monaco"},
|
|
141
|
+
{"code":"MN","name":"Mongolei"},
|
|
142
|
+
{"code":"mich","name":"Montenegro"},
|
|
143
|
+
{"code":"MS","name":"Montserrat"},
|
|
144
|
+
{"code":"MA","name":"Marokko"},
|
|
145
|
+
{"code":"MZ","name":"Mosambik"},
|
|
146
|
+
{"code":"MM","name":"Myanmar"},
|
|
147
|
+
{"code":"NA","name":"Namibia"},
|
|
148
|
+
{"code":"NR","name":"Nauru"},
|
|
149
|
+
{"code":"NP","name":"Nepal"},
|
|
150
|
+
{"code":"NL","name":"Niederlande"},
|
|
151
|
+
{"code":"NC","name":"Neukaledonien"},
|
|
152
|
+
{"code":"NZ","name":"Neuseeland"},
|
|
153
|
+
{"code":"NI","name":"Nicaragua"},
|
|
154
|
+
{"code":"NE","name":"Niger"},
|
|
155
|
+
{"code":"NG","name":"Nigeria"},
|
|
156
|
+
{"code":"NU","name":"Niue"},
|
|
157
|
+
{"code":"MK","name":"Nordmazedonien"},
|
|
158
|
+
{"code":"Nein","name":"Norwegen"},
|
|
159
|
+
{"code":"OM","name":"Oman"},
|
|
160
|
+
{"code":"PK","name":"Pakistan"},
|
|
161
|
+
{"code":"PS","name":"Palästina"},
|
|
162
|
+
{"code":"PA","name":"Panama"},
|
|
163
|
+
{"code":"PG","name":"Papua-Neuguinea"},
|
|
164
|
+
{"code":"PY","name":"Paraguay"},
|
|
165
|
+
{"code":"PE","name":"Peru"},
|
|
166
|
+
{"code":"PH","name":"Philippinen"},
|
|
167
|
+
{"code":"PN","name":"Pitcairn-Inseln"},
|
|
168
|
+
{"code":"PL","name":"Polen"},
|
|
169
|
+
{"code":"PT","name":"Portugal"},
|
|
170
|
+
{"code":"PR","name":"Puerto Rico"},
|
|
171
|
+
{"code":"QA","name":"Qatar"},
|
|
172
|
+
{"code":"CG","name":"Republik Kongo"},
|
|
173
|
+
{"code":"RE","name":"Réunion"},
|
|
174
|
+
{"code":"RO","name":"Rumänien"},
|
|
175
|
+
{"code":"RU","name":"Russland"},
|
|
176
|
+
{"code":"RW","name":"Rwanda"},
|
|
177
|
+
{"code":"BL","name":"Saint-Barthélemy"},
|
|
178
|
+
{"code":"SH","name":"St. Helena"},
|
|
179
|
+
{"code":"KN","name":"Saint Kitts und Nevis"},
|
|
180
|
+
{"code":"LC","name":"Saint Lucia"},
|
|
181
|
+
{"code":"MF","name":"Saint Martin"},
|
|
182
|
+
{"code":"PM","name":"Saint-Pierre und Miquelon"},
|
|
183
|
+
{"code":"VC","name":"St. Vincent und die Grenadinen"},
|
|
184
|
+
{"code":"WS","name":"Samoa"},
|
|
185
|
+
{"code":"SM","name":"San Marino"},
|
|
186
|
+
{"code":"ST","name":"Sao Tome und Principe"},
|
|
187
|
+
{"code":"SA","name":"Saudi-Arabien"},
|
|
188
|
+
{"code":"SN","name":"Senegal"},
|
|
189
|
+
{"code":"RS","name":"Serbien"},
|
|
190
|
+
{"code":"SC","name":"Seychellen"},
|
|
191
|
+
{"code":"SL","name":"Sierra Leone"},
|
|
192
|
+
{"code":"SG","name":"Singapur"},
|
|
193
|
+
{"code":"SX","name":"Sint Maarten"},
|
|
194
|
+
{"code":"SK","name":"Slowakei"},
|
|
195
|
+
{"code":"SI","name":"Slowenien"},
|
|
196
|
+
{"code":"SB","name":"Salomonen"},
|
|
197
|
+
{"code":"SO","name":"Somalia"},
|
|
198
|
+
{"code":"ZA","name":"Südafrika"},
|
|
199
|
+
{"code":"GS","name":"Südgeorgien und die Südlichen Sandwichinseln"},
|
|
200
|
+
{"code":"KR","name":"Südkorea"},
|
|
201
|
+
{"code":"SS","name":"Südsudan"},
|
|
202
|
+
{"code":"ge","name":"Spanien"},
|
|
203
|
+
{"code":"LK","name":"Sri Lanka"},
|
|
204
|
+
{"code":"SR","name":"Suriname"},
|
|
205
|
+
{"code":"SJ","name":"Svalbard und Jan Mayen"},
|
|
206
|
+
{"code":"SE","name":"Schweden"},
|
|
207
|
+
{"code":"CH","name":"Schweiz"},
|
|
208
|
+
{"code":"TW","name":"Taiwan"},
|
|
209
|
+
{"code":"TJ","name":"Tadschikistan"},
|
|
210
|
+
{"code":"TZ","name":"Tansania"},
|
|
211
|
+
{"code":"TH","name":"Thailand"},
|
|
212
|
+
{"code":"TL","name":"Timor-Leste"},
|
|
213
|
+
{"code":"TG","name":"Togo"},
|
|
214
|
+
{"code":"TK","name":"Tokelau"},
|
|
215
|
+
{"code":"DABEI","name":"Tonga"},
|
|
216
|
+
{"code":"TT","name":"Trinidad und Tobago"},
|
|
217
|
+
{"code":"TA","name":"Tristan da Cunha"},
|
|
218
|
+
{"code":"TN","name":"Tunesien"},
|
|
219
|
+
{"code":"TR","name":"Türkei"},
|
|
220
|
+
{"code":"TM","name":"Turkmenistan"},
|
|
221
|
+
{"code":"TC","name":"Turks- und Caicosinseln"},
|
|
222
|
+
{"code":"TV","name":"Tuvalu"},
|
|
223
|
+
{"code":"UG","name":"Uganda"},
|
|
224
|
+
{"code":"UA","name":"Ukraine"},
|
|
225
|
+
{"code":"AE","name":"Vereinigte Arabische Emirate"},
|
|
226
|
+
{"code":"GB","name":"Vereinigtes Königreich"},
|
|
227
|
+
{"code":"USA","name":"Vereinigte Staaten"},
|
|
228
|
+
{"code":"UY","name":"Uruguay"},
|
|
229
|
+
{"code":"UZ","name":"Usbekistan"},
|
|
230
|
+
{"code":"VU","name":"Vanuatu"},
|
|
231
|
+
{"code":"VA","name":"Vatikanstadt"},
|
|
232
|
+
{"code":"VE","name":"Venezuela"},
|
|
233
|
+
{"code":"VN","name":"Vietnam"},
|
|
234
|
+
{"code":"WF","name":"Wallis und Futuna"},
|
|
235
|
+
{"code":"EH","name":"Westsahara"},
|
|
236
|
+
{"code":"YE","name":"Jemen"},
|
|
237
|
+
{"code":"ZM","name":"Sambia"},
|
|
238
|
+
{"code":"ZW","name":"Zimbabwe"}
|
|
239
|
+
]
|
|
240
|
+
}
|