@designcrowd/library.brand-page 5.17.3 → 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.
Files changed (113) hide show
  1. package/lib/src/{CreatedOnBrandCrowd-de-de-yFg0wq_8.js → CreatedOnBrandCrowd-de-de-C_NzyXvG.js} +1 -1
  2. package/lib/src/{CreatedOnBrandCrowd-en-us-D4sUyR-U.js → CreatedOnBrandCrowd-en-us-DSmpdByg.js} +1 -1
  3. package/lib/src/{CreatedOnBrandCrowd-es-es-CjXHshc0.js → CreatedOnBrandCrowd-es-es-4O9ttd4y.js} +1 -1
  4. package/lib/src/{CreatedOnBrandCrowd-fr-fr-CtsyncLl.js → CreatedOnBrandCrowd-fr-ca-DDr8rQHb.js} +1 -1
  5. package/lib/src/{CreatedOnBrandCrowd-fr-ca-CtsyncLl.js → CreatedOnBrandCrowd-fr-fr-DDr8rQHb.js} +1 -1
  6. package/lib/src/{CreatedOnBrandCrowd-pt-pt-D8Z-gS4q.js → CreatedOnBrandCrowd-pt-br-BUTVQ17i.js} +1 -1
  7. package/lib/src/{CreatedOnBrandCrowd-pt-br-D8Z-gS4q.js → CreatedOnBrandCrowd-pt-pt-BUTVQ17i.js} +1 -1
  8. package/lib/src/{CreatedOnDcom-de-de-k7a8-Akd.js → CreatedOnDcom-de-de-thkGl7gg.js} +1 -1
  9. package/lib/src/{CreatedOnDcom-en-us-Bh5mbVcr.js → CreatedOnDcom-en-us-DOgnHkVR.js} +1 -1
  10. package/lib/src/{CreatedOnDcom-es-es-DkEBWtQn.js → CreatedOnDcom-es-es-NyEB16vO.js} +1 -1
  11. package/lib/src/{CreatedOnDcom-fr-ca-DcarvQ1r.js → CreatedOnDcom-fr-ca-Cd6WjWcu.js} +1 -1
  12. package/lib/src/{CreatedOnDcom-fr-fr-Cbe-yOPu.js → CreatedOnDcom-fr-fr-CDKX35U7.js} +1 -1
  13. package/lib/src/{CreatedOnDcom-pt-br-DlWu_Kwc.js → CreatedOnDcom-pt-br-PbJzyRNp.js} +1 -1
  14. package/lib/src/{CreatedOnDcom-pt-pt-DZp9RWfH.js → CreatedOnDcom-pt-pt-tja7jglY.js} +1 -1
  15. package/lib/src/brand-page/clients/brand-page.client.d.ts +2 -1
  16. package/lib/src/brand-page/clients/brand-page.client.js +1 -0
  17. package/lib/src/brand-page/models/payment.model.d.ts +42 -0
  18. package/lib/src/brand-page/models/payment.model.js +9 -0
  19. package/lib/src/brand-page/utils/view-model.util.js +1 -0
  20. package/lib/src/brand-page/view-models.d.ts +1 -0
  21. package/lib/src/brand-page-maker/components/brand-page-maker/BrandPageMaker.mixin.d.ts +1 -1
  22. package/lib/src/brand-page-maker/components/brandpage-maker-page/BrandPageMakerPage.mixin.d.ts +1 -0
  23. package/lib/src/brand-page-maker/composables/useEventTracker.d.ts +2 -0
  24. package/lib/src/brand-page-maker/composables/useEventTracker.js +6 -0
  25. package/lib/src/brand-page-maker/constants/config-settings-constant.d.ts +1 -0
  26. package/lib/src/brand-page-maker/constants/config-settings-constant.js +7 -0
  27. package/lib/src/brand-page-maker/models/content-settings.js +1 -0
  28. package/lib/src/bundled-translations-D5A4swr0.js +173 -0
  29. package/lib/src/bundled-translations.de-DE-Bq6H28Hz.js +173 -0
  30. package/lib/src/bundled-translations.es-ES-Bo-UGy51.js +173 -0
  31. package/lib/src/bundled-translations.fr-CA-7GXawEcN.js +173 -0
  32. package/lib/src/bundled-translations.fr-FR-DzVwt2U-.js +173 -0
  33. package/lib/src/bundled-translations.pt-BR-DSZZ-i-B.js +173 -0
  34. package/lib/src/bundled-translations.pt-PT-SNbEX0GM.js +173 -0
  35. package/lib/src/bundles/bundled-translations.de-DE.json +965 -1
  36. package/lib/src/bundles/bundled-translations.es-ES.json +965 -1
  37. package/lib/src/bundles/bundled-translations.fr-CA.json +965 -1
  38. package/lib/src/bundles/bundled-translations.fr-FR.json +965 -1
  39. package/lib/src/bundles/bundled-translations.json +965 -1
  40. package/lib/src/bundles/bundled-translations.pt-BR.json +965 -1
  41. package/lib/src/bundles/bundled-translations.pt-PT.json +965 -1
  42. package/lib/src/composables/useTranslate.d.ts +7 -1
  43. package/lib/src/composables/useTranslate.js +9 -1
  44. package/lib/src/css/library.brand-page-brandCrowd.min.css +33 -14
  45. package/lib/src/css/library.brand-page-brandPage.min.css +33 -14
  46. package/lib/src/css/library.brand-page-designCom.min.css +33 -14
  47. package/lib/src/css/library.brand-page-preview.min.css +33 -14
  48. package/lib/src/index.mjs +88 -87
  49. package/lib/src/{lib-DOfGX3z2.js → lib-DL-13itP.js} +21136 -20938
  50. package/lib/src/shared/content-settings/components/content-settings/ContentSettings.mixin.d.ts +1 -0
  51. package/lib/src/shared/content-settings/components/content-settings/ReplaceImageSettingsForContent.mixin.d.ts +1 -0
  52. package/lib/src/shared/content-settings/components/content-settings-item/ContentSettingsItem.mixin.d.ts +1 -0
  53. package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.d.ts +13 -1
  54. package/lib/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.js +10 -0
  55. package/lib/src/shared/logo-settings/components/EditLogoSettings.mixin.d.ts +2 -1
  56. package/lib/src/shared/page-settings/components/page-settings/PageSettings.mixin.d.ts +1 -0
  57. package/lib/src/shared/publish-brand-page-with-state/PublishBrandPageModalWithState.mixin.d.ts +1 -0
  58. package/lib/src/shared/side-bar/components/SideBarTabButton.mixin.d.ts +1 -0
  59. package/lib/src/shared/style-settings/components/StyleSettings.mixin.d.ts +1 -0
  60. package/lib/src/shared/template-settings/components/TemplatesSettings.mixin.d.ts +2 -1
  61. package/package.json +1 -1
  62. package/src/brand-page/clients/brand-page.client.ts +3 -0
  63. package/src/brand-page/components/payment/RequestPaymentStripe.vue +381 -44
  64. package/src/brand-page/components/shop/PaymentModal.vue +7 -1
  65. package/src/brand-page/components/shop/PaymentShippingAddress.vue +297 -0
  66. package/src/brand-page/components/shop/Shop.vue +1 -0
  67. package/src/brand-page/components/shop/i18n/countries.de-DE.json +240 -0
  68. package/src/brand-page/components/shop/i18n/countries.es-ES.json +240 -0
  69. package/src/brand-page/components/shop/i18n/countries.fr-CA.json +240 -0
  70. package/src/brand-page/components/shop/i18n/countries.fr-FR.json +240 -0
  71. package/src/brand-page/components/shop/i18n/countries.json +240 -0
  72. package/src/brand-page/components/shop/i18n/countries.pt-BR.json +240 -0
  73. package/src/brand-page/components/shop/i18n/countries.pt-PT.json +240 -0
  74. package/src/brand-page/components/shop/i18n/payment-shipping-address.de-DE.json +18 -0
  75. package/src/brand-page/components/shop/i18n/payment-shipping-address.es-ES.json +18 -0
  76. package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-CA.json +18 -0
  77. package/src/brand-page/components/shop/i18n/payment-shipping-address.fr-FR.json +18 -0
  78. package/src/brand-page/components/shop/i18n/payment-shipping-address.json +18 -0
  79. package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-BR.json +18 -0
  80. package/src/brand-page/components/shop/i18n/payment-shipping-address.pt-PT.json +18 -0
  81. package/src/brand-page/models/payment.model.ts +24 -0
  82. package/src/brand-page/utils/view-model.util.ts +1 -0
  83. package/src/brand-page/view-models.ts +1 -0
  84. package/src/brand-page-maker/composables/useEventTracker.ts +6 -0
  85. package/src/brand-page-maker/constants/config-settings-constant.ts +8 -0
  86. package/src/brand-page-maker/models/content-settings.ts +1 -0
  87. package/src/bundles/bundled-translations.de-DE.json +965 -1
  88. package/src/bundles/bundled-translations.es-ES.json +965 -1
  89. package/src/bundles/bundled-translations.fr-CA.json +965 -1
  90. package/src/bundles/bundled-translations.fr-FR.json +965 -1
  91. package/src/bundles/bundled-translations.json +965 -1
  92. package/src/bundles/bundled-translations.pt-BR.json +965 -1
  93. package/src/bundles/bundled-translations.pt-PT.json +965 -1
  94. package/src/composables/useTranslate.ts +15 -0
  95. package/src/shared/content-settings/components/content-settings/i18n/content-settings.de-DE.json +3 -1
  96. package/src/shared/content-settings/components/content-settings/i18n/content-settings.es-ES.json +3 -1
  97. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-CA.json +3 -1
  98. package/src/shared/content-settings/components/content-settings/i18n/content-settings.fr-FR.json +3 -1
  99. package/src/shared/content-settings/components/content-settings/i18n/content-settings.json +3 -1
  100. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-BR.json +3 -1
  101. package/src/shared/content-settings/components/content-settings/i18n/content-settings.pt-PT.json +3 -1
  102. package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.mixin.ts +12 -0
  103. package/src/shared/content-settings/components/payment-config-field/payment-toggle-field/PaymentToggleField.vue +9 -1
  104. package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.d.ts +0 -106
  105. package/lib/src/brand-page/components/payment/RequestPaymentStripe.mixin.js +0 -253
  106. package/lib/src/bundled-translations-B6qZE8LU.js +0 -169
  107. package/lib/src/bundled-translations.de-DE-CsU6YsZb.js +0 -169
  108. package/lib/src/bundled-translations.es-ES-unPBdcJx.js +0 -169
  109. package/lib/src/bundled-translations.fr-CA-Dpa2wEtC.js +0 -169
  110. package/lib/src/bundled-translations.fr-FR-BPloaUjN.js +0 -169
  111. package/lib/src/bundled-translations.pt-BR-CFRGdaDO.js +0 -169
  112. package/lib/src/bundled-translations.pt-PT-BHVYCE0K.js +0 -169
  113. package/src/brand-page/components/payment/RequestPaymentStripe.mixin.ts +0 -364
@@ -35,6 +35,7 @@
35
35
  :stripe-publishable-key="context.stripePublishableKey!"
36
36
  :product-name="productName"
37
37
  :is-shop="true"
38
+ :is-shipping-enabled="props.isShippingEnabled"
38
39
  @go-to-payment-option-selection="onGoToCartSelection"
39
40
  @success="onRequestPaymentStripeSuccess"
40
41
  />
@@ -114,7 +115,7 @@
114
115
  <script setup lang="ts">
115
116
  import { Modal, Button, Loader } from '@designcrowd/fe-shared-lib';
116
117
  import { useCartStore } from '@shared/ecommerce-settings/store/cart-settings-store';
117
- import { computed, reactive, onMounted } from 'vue';
118
+ import { computed, reactive, ref, onMounted } from 'vue';
118
119
  import IconStripe from '../icon/IconStripe.vue';
119
120
  import RequestPaymentStripe from '../payment/RequestPaymentStripe.vue';
120
121
  import TextWrapper from '../text-wrapper/TextWrapper.vue';
@@ -127,6 +128,7 @@ import type {
127
128
  BrandPagePaymentConfig,
128
129
  TextStyleDeclaration,
129
130
  StripePaymentIntent,
131
+ StripeShippingDetails,
130
132
  } from '@brand-page/models';
131
133
  import { paymentProviders } from '@brand-page/constants';
132
134
  import raygunUtil from '@brand-page/utils/raygun.util';
@@ -150,10 +152,12 @@ interface Props {
150
152
  shopPaymentConfig: BrandPagePaymentConfig;
151
153
  descriptionStyle: TextStyleDeclaration | undefined;
152
154
  successMessage: string;
155
+ isShippingEnabled: boolean;
153
156
  }
154
157
 
155
158
  const props = withDefaults(defineProps<Props>(), {
156
159
  isVisible: true,
160
+ isShippingEnabled: false,
157
161
  });
158
162
 
159
163
  const uniformDescriptionStyle = computed<TextStyleDeclaration>(() => ({
@@ -169,6 +173,8 @@ const data = reactive({
169
173
  state: 'creating-cart' as State,
170
174
  });
171
175
 
176
+ const customerEmail = ref('');
177
+
172
178
  const emit = defineEmits(['on-close', 'on-back']);
173
179
 
174
180
  const onClose = () => {
@@ -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>
@@ -111,6 +111,7 @@
111
111
  :shop-payment-config="shopPaymentConfig"
112
112
  :context="context"
113
113
  :success-message="viewModel.successMessage"
114
+ :is-shipping-enabled="viewModel.isShippingEnabled"
114
115
  @on-close="onCloseCart"
115
116
  @on-back="onShowCartModal"
116
117
  />
@@ -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
+ }