@foxy.io/elements 1.14.0-beta.7 → 1.14.0-beta.8
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/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +17 -17
- package/dist/cdn/foxy-customer-portal.js +2 -2
- package/dist/cdn/foxy-customer.js +4 -4
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-query-builder.js +2 -2
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +3 -3
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -14
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/{shared-50c7a176.js → shared-00070cc4.js} +5 -5
- package/dist/cdn/shared-007c4e34.js +1 -0
- package/dist/cdn/shared-07134f93.js +14 -0
- package/dist/cdn/{shared-09feabf8.js → shared-0f9809ab.js} +1 -1
- package/dist/cdn/{shared-8edee4e1.js → shared-31d03530.js} +7 -7
- package/dist/cdn/{shared-691da586.js → shared-4ba926ca.js} +1 -1
- package/dist/cdn/{shared-1bafffd0.js → shared-5d94bacb.js} +1 -1
- package/dist/cdn/{shared-6ecbc785.js → shared-7007dedb.js} +1 -1
- package/dist/cdn/{shared-7629a1a5.js → shared-a3d2c48e.js} +1 -1
- package/dist/cdn/{shared-c66e9946.js → shared-b24377bf.js} +1 -1
- package/dist/cdn/{shared-0ba88744.js → shared-c5ae5d33.js} +1 -1
- package/dist/cdn/{shared-6f7f752e.js → shared-ca7c3b9a.js} +1 -1
- package/dist/cdn/shared-d01035c5.js +1 -0
- package/dist/cdn/{shared-16e28f3b.js → shared-d05c93a5.js} +1 -1
- package/dist/cdn/{shared-4d3c7828.js → shared-da787055.js} +1 -1
- package/dist/cdn/{shared-a6c047b1.js → shared-daf6b763.js} +1 -1
- package/dist/cdn/shared-fe8a7aa2.js +1 -0
- package/dist/elements/private/Checkbox/Checkbox.d.ts +3 -1
- package/dist/elements/private/Checkbox/Checkbox.js +43 -14
- package/dist/elements/private/Checkbox/Checkbox.js.map +1 -1
- package/dist/elements/private/Choice/Choice.js +7 -5
- package/dist/elements/private/Choice/Choice.js.map +1 -1
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.d.ts +3 -2
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js +68 -50
- package/dist/elements/public/EmailTemplateForm/EmailTemplateForm.js.map +1 -1
- package/dist/elements/public/EmailTemplateForm/types.d.ts +14 -0
- package/dist/elements/public/EmailTemplateForm/types.js.map +1 -1
- package/dist/elements/public/TemplateConfigForm/CountriesList.js +11 -2
- package/dist/elements/public/TemplateConfigForm/CountriesList.js.map +1 -1
- package/dist/elements/public/TemplateConfigForm/CountryCard.d.ts +2 -0
- package/dist/elements/public/TemplateConfigForm/CountryCard.js +36 -4
- package/dist/elements/public/TemplateConfigForm/CountryCard.js.map +1 -1
- package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.d.ts +55 -1
- package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js +247 -55
- package/dist/elements/public/TemplateConfigForm/TemplateConfigForm.js.map +1 -1
- package/dist/elements/public/TemplateConfigForm/types.d.ts +34 -0
- package/dist/elements/public/TemplateConfigForm/types.js.map +1 -1
- package/dist/elements/public/TemplateForm/TemplateForm.d.ts +2 -1
- package/dist/elements/public/TemplateForm/TemplateForm.js +71 -52
- package/dist/elements/public/TemplateForm/TemplateForm.js.map +1 -1
- package/dist/elements/public/TemplateForm/types.d.ts +14 -0
- package/dist/elements/public/TemplateForm/types.js.map +1 -1
- package/dist/mixins/themeable.js +22 -8
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-3f35fa81.js +0 -1
- package/dist/cdn/shared-ace85f1b.js +0 -1
- package/dist/cdn/shared-d8852c42.js +0 -1
|
@@ -16,10 +16,64 @@ import { getDefaultJSON } from "./defaults.js";
|
|
|
16
16
|
import { live } from 'lit-html/directives/live';
|
|
17
17
|
const NS = 'template-config-form';
|
|
18
18
|
const Base = ScopedElementsMixin(ResponsiveMixin(ConfigurableMixin(ThemeableMixin(TranslatableMixin(NucleonElement, NS)))));
|
|
19
|
+
/**
|
|
20
|
+
* Form element for creating or editing template configs (`fx:template_config`).
|
|
21
|
+
*
|
|
22
|
+
* @slot cart-type:before
|
|
23
|
+
* @slot cart-type:after
|
|
24
|
+
*
|
|
25
|
+
* @slot foxycomplete:before
|
|
26
|
+
* @slot foxycomplete:after
|
|
27
|
+
*
|
|
28
|
+
* @slot locations:before
|
|
29
|
+
* @slot locations:after
|
|
30
|
+
*
|
|
31
|
+
* @slot hidden-fields:before
|
|
32
|
+
* @slot hidden-fields:after
|
|
33
|
+
*
|
|
34
|
+
* @slot cards:before
|
|
35
|
+
* @slot cards:after
|
|
36
|
+
*
|
|
37
|
+
* @slot checkout-type:before
|
|
38
|
+
* @slot checkout-type:after
|
|
39
|
+
*
|
|
40
|
+
* @slot consent:before
|
|
41
|
+
* @slot consent:after
|
|
42
|
+
*
|
|
43
|
+
* @slot fields:before
|
|
44
|
+
* @slot fields:after
|
|
45
|
+
*
|
|
46
|
+
* @slot google-analytics:before
|
|
47
|
+
* @slot google-analytics:after
|
|
48
|
+
*
|
|
49
|
+
* @slot segment-io:before
|
|
50
|
+
* @slot segment-io:after
|
|
51
|
+
*
|
|
52
|
+
* @slot troubleshooting:before
|
|
53
|
+
* @slot troubleshooting:after
|
|
54
|
+
*
|
|
55
|
+
* @slot custom-config:before
|
|
56
|
+
* @slot custom-config:after
|
|
57
|
+
*
|
|
58
|
+
* @slot header:before
|
|
59
|
+
* @slot header:after
|
|
60
|
+
*
|
|
61
|
+
* @slot custom-fields:before
|
|
62
|
+
* @slot custom-fields:after
|
|
63
|
+
*
|
|
64
|
+
* @slot footer:before
|
|
65
|
+
* @slot footer:after
|
|
66
|
+
*
|
|
67
|
+
* @element foxy-template-config-form
|
|
68
|
+
* @since 1.14.0
|
|
69
|
+
*/
|
|
19
70
|
export class TemplateConfigForm extends Base {
|
|
20
71
|
constructor() {
|
|
21
72
|
super(...arguments);
|
|
73
|
+
this.templates = {};
|
|
74
|
+
/** URI of the `fx:countries` hAPI resource. */
|
|
22
75
|
this.countries = '';
|
|
76
|
+
/** URI of the `fx:regions` hAPI resource. */
|
|
23
77
|
this.regions = '';
|
|
24
78
|
this.__addHiddenFieldInputValue = '';
|
|
25
79
|
}
|
|
@@ -95,17 +149,25 @@ export class TemplateConfigForm extends Base {
|
|
|
95
149
|
__renderCartType(json) {
|
|
96
150
|
const { lang, ns } = this;
|
|
97
151
|
const items = ['default', 'fullpage', 'custom'];
|
|
152
|
+
const isDisabled = this.disabledSelector.matches('cart-type', true);
|
|
98
153
|
return html `
|
|
99
154
|
<div>
|
|
100
155
|
${this.renderTemplateOrSlot('cart-type:before')}
|
|
101
156
|
|
|
102
157
|
<x-group frame>
|
|
103
|
-
<foxy-i18n
|
|
158
|
+
<foxy-i18n
|
|
159
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
160
|
+
slot="header"
|
|
161
|
+
lang=${lang}
|
|
162
|
+
key="cart_type"
|
|
163
|
+
ns=${ns}
|
|
164
|
+
>
|
|
165
|
+
</foxy-i18n>
|
|
104
166
|
|
|
105
167
|
<x-choice
|
|
106
168
|
.value=${json.cart_type}
|
|
107
169
|
.items=${items}
|
|
108
|
-
?disabled=${
|
|
170
|
+
?disabled=${isDisabled}
|
|
109
171
|
?readonly=${this.readonlySelector.matches('cart-type', true)}
|
|
110
172
|
@change=${(evt) => {
|
|
111
173
|
this.edit({ json: JSON.stringify({ ...json, cart_type: evt.detail }) });
|
|
@@ -116,7 +178,7 @@ export class TemplateConfigForm extends Base {
|
|
|
116
178
|
<div slot="${item}-label" class="grid leading-s py-s">
|
|
117
179
|
<foxy-i18n lang=${lang} key="cart_type_${item}" ns=${ns}></foxy-i18n>
|
|
118
180
|
<foxy-i18n
|
|
119
|
-
class="text-
|
|
181
|
+
class="text-xs ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
120
182
|
lang=${lang}
|
|
121
183
|
key="cart_type_${item}_explainer"
|
|
122
184
|
ns=${ns}
|
|
@@ -155,8 +217,7 @@ export class TemplateConfigForm extends Base {
|
|
|
155
217
|
this.edit({ json: JSON.stringify({ ...json, foxycomplete: newConfig }) });
|
|
156
218
|
}}
|
|
157
219
|
>
|
|
158
|
-
<foxy-i18n
|
|
159
|
-
</foxy-i18n>
|
|
220
|
+
<foxy-i18n lang=${lang} key="show_country_flags" ns=${ns}></foxy-i18n>
|
|
160
221
|
</x-checkbox>
|
|
161
222
|
`;
|
|
162
223
|
return html `
|
|
@@ -164,7 +225,14 @@ export class TemplateConfigForm extends Base {
|
|
|
164
225
|
${this.renderTemplateOrSlot('foxycomplete:before')}
|
|
165
226
|
|
|
166
227
|
<x-group frame>
|
|
167
|
-
<foxy-i18n
|
|
228
|
+
<foxy-i18n
|
|
229
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
230
|
+
slot="header"
|
|
231
|
+
lang=${lang}
|
|
232
|
+
key="foxycomplete"
|
|
233
|
+
ns=${ns}
|
|
234
|
+
>
|
|
235
|
+
</foxy-i18n>
|
|
168
236
|
|
|
169
237
|
<x-choice
|
|
170
238
|
.value=${value}
|
|
@@ -187,7 +255,7 @@ export class TemplateConfigForm extends Base {
|
|
|
187
255
|
<div slot="${item}-label" class="grid leading-s py-s">
|
|
188
256
|
<foxy-i18n lang=${lang} key="foxycomplete_${item}" ns=${ns}></foxy-i18n>
|
|
189
257
|
<foxy-i18n
|
|
190
|
-
class="text-
|
|
258
|
+
class="text-xs ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
191
259
|
lang=${lang}
|
|
192
260
|
key="foxycomplete_${item}_explainer"
|
|
193
261
|
ns=${ns}
|
|
@@ -253,6 +321,8 @@ export class TemplateConfigForm extends Base {
|
|
|
253
321
|
__renderLocations(json) {
|
|
254
322
|
const { lang, ns } = this;
|
|
255
323
|
const config = json.location_filtering;
|
|
324
|
+
const isDisabled = this.disabledSelector.matches('locations', true);
|
|
325
|
+
const isReadonly = this.readonlySelector.matches('locations', true);
|
|
256
326
|
const shippingChoice = config.shipping_filter_type === 'blacklist' ? 'block' : 'allow';
|
|
257
327
|
const billingChoice = config.usage === 'both'
|
|
258
328
|
? 'copy'
|
|
@@ -285,16 +355,31 @@ export class TemplateConfigForm extends Base {
|
|
|
285
355
|
${this.renderTemplateOrSlot('locations:before')}
|
|
286
356
|
|
|
287
357
|
<x-group frame>
|
|
288
|
-
<foxy-i18n
|
|
358
|
+
<foxy-i18n
|
|
359
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
360
|
+
slot="header"
|
|
361
|
+
lang=${lang}
|
|
362
|
+
key="location_plural"
|
|
363
|
+
ns=${ns}
|
|
364
|
+
>
|
|
365
|
+
</foxy-i18n>
|
|
289
366
|
|
|
290
367
|
<div class="grid sm-grid-cols-2 bg-contrast-10" style="gap: 1px">
|
|
291
368
|
<x-group class="bg-base pt-m">
|
|
292
|
-
<foxy-i18n
|
|
369
|
+
<foxy-i18n
|
|
370
|
+
class=${isDisabled ? 'text-disabled' : 'text-tertiary'}
|
|
371
|
+
slot="header"
|
|
372
|
+
lang=${lang}
|
|
373
|
+
key="shipping"
|
|
374
|
+
ns=${ns}
|
|
375
|
+
>
|
|
293
376
|
</foxy-i18n>
|
|
294
377
|
|
|
295
378
|
<x-choice
|
|
296
379
|
.items=${['allow', 'block']}
|
|
297
380
|
.value=${shippingChoice}
|
|
381
|
+
?disabled=${isDisabled}
|
|
382
|
+
?readonly=${isReadonly}
|
|
298
383
|
@change=${(evt) => {
|
|
299
384
|
if (config.usage !== 'both')
|
|
300
385
|
config.usage = 'independent';
|
|
@@ -314,8 +399,8 @@ export class TemplateConfigForm extends Base {
|
|
|
314
399
|
slot=${shippingChoice}
|
|
315
400
|
lang=${lang}
|
|
316
401
|
ns=${ns}
|
|
317
|
-
?disabled=${
|
|
318
|
-
?readonly=${
|
|
402
|
+
?disabled=${isDisabled}
|
|
403
|
+
?readonly=${isReadonly}
|
|
319
404
|
@update:countries=${(evt) => {
|
|
320
405
|
config.shipping_filter_values = evt.currentTarget.countries;
|
|
321
406
|
normalize();
|
|
@@ -327,12 +412,20 @@ export class TemplateConfigForm extends Base {
|
|
|
327
412
|
</x-group>
|
|
328
413
|
|
|
329
414
|
<x-group class="bg-base pt-m">
|
|
330
|
-
<foxy-i18n
|
|
415
|
+
<foxy-i18n
|
|
416
|
+
class=${isDisabled ? 'text-disabled' : 'text-tertiary'}
|
|
417
|
+
slot="header"
|
|
418
|
+
lang=${lang}
|
|
419
|
+
key="billing"
|
|
420
|
+
ns=${ns}
|
|
421
|
+
>
|
|
331
422
|
</foxy-i18n>
|
|
332
423
|
|
|
333
424
|
<x-choice
|
|
334
425
|
.items=${['allow', 'block', 'copy']}
|
|
335
426
|
.value=${billingChoice}
|
|
427
|
+
?disabled=${isDisabled}
|
|
428
|
+
?readonly=${isReadonly}
|
|
336
429
|
@change=${(evt) => {
|
|
337
430
|
if (evt.detail === 'copy') {
|
|
338
431
|
config.usage = 'both';
|
|
@@ -357,8 +450,8 @@ export class TemplateConfigForm extends Base {
|
|
|
357
450
|
slot=${billingChoice}
|
|
358
451
|
lang=${lang}
|
|
359
452
|
ns=${ns}
|
|
360
|
-
?disabled=${
|
|
361
|
-
?readonly=${
|
|
453
|
+
?disabled=${isDisabled}
|
|
454
|
+
?readonly=${isReadonly}
|
|
362
455
|
?hidden=${billingChoice === 'copy'}
|
|
363
456
|
@update:countries=${(evt) => {
|
|
364
457
|
config.billing_filter_values = evt.currentTarget.countries;
|
|
@@ -380,6 +473,8 @@ export class TemplateConfigForm extends Base {
|
|
|
380
473
|
const suggestions = [];
|
|
381
474
|
const fields = [];
|
|
382
475
|
const config = json.cart_display_config;
|
|
476
|
+
const isDisabled = this.disabledSelector.matches('hidden-fields', true);
|
|
477
|
+
const isReadonly = this.readonlySelector.matches('hidden-fields', true);
|
|
383
478
|
for (const key in config) {
|
|
384
479
|
if (!key.startsWith('show_'))
|
|
385
480
|
continue;
|
|
@@ -409,31 +504,54 @@ export class TemplateConfigForm extends Base {
|
|
|
409
504
|
${this.renderTemplateOrSlot('hidden-fields:before')}
|
|
410
505
|
|
|
411
506
|
<x-group frame>
|
|
412
|
-
<foxy-i18n
|
|
507
|
+
<foxy-i18n
|
|
508
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
509
|
+
slot="header"
|
|
510
|
+
lang=${lang}
|
|
511
|
+
key="hidden_fields"
|
|
512
|
+
ns=${ns}
|
|
513
|
+
>
|
|
514
|
+
</foxy-i18n>
|
|
413
515
|
|
|
414
516
|
<div class="divide-y divide-contrast-10">
|
|
415
|
-
${fields.map(field =>
|
|
416
|
-
|
|
517
|
+
${fields.map(field => {
|
|
518
|
+
return html `
|
|
519
|
+
<div
|
|
520
|
+
class=${classMap({
|
|
521
|
+
'h-m ml-m pr-xs flex items-center justify-between': true,
|
|
522
|
+
'text-secondary': isReadonly,
|
|
523
|
+
'text-disabled': isDisabled,
|
|
524
|
+
})}
|
|
525
|
+
>
|
|
417
526
|
${suggestions.includes(field)
|
|
418
|
-
|
|
419
|
-
|
|
527
|
+
? html `<foxy-i18n lang=${lang} key=${field} ns=${ns}></foxy-i18n>`
|
|
528
|
+
: html `<span>${field}</span>`}
|
|
420
529
|
|
|
421
530
|
<button
|
|
422
|
-
class
|
|
531
|
+
class=${classMap({
|
|
532
|
+
'w-xs h-xs rounded-full transition-colors': true,
|
|
533
|
+
'hover-bg-error-10 hover-text-error': !isDisabled,
|
|
534
|
+
'focus-outline-none focus-ring-2 ring-inset ring-error-50': !isDisabled,
|
|
535
|
+
'cursor-default': isDisabled,
|
|
536
|
+
'flex': !isReadonly,
|
|
537
|
+
'hidden': isReadonly,
|
|
538
|
+
})}
|
|
539
|
+
?disabled=${isDisabled}
|
|
423
540
|
@click=${() => {
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
541
|
+
if (typeof config[`show_${field}`] === 'boolean') {
|
|
542
|
+
config[`show_${field}`] = true;
|
|
543
|
+
}
|
|
544
|
+
else {
|
|
545
|
+
config.hidden_product_options = config.hidden_product_options.filter(option => option !== field);
|
|
546
|
+
}
|
|
547
|
+
this.edit({ json: JSON.stringify(json) });
|
|
548
|
+
}}
|
|
432
549
|
>
|
|
433
|
-
<iron-icon icon="icons:close" class="icon-inline text-m"></iron-icon>
|
|
550
|
+
<iron-icon icon="icons:close" class="icon-inline text-m m-auto"></iron-icon>
|
|
434
551
|
</button>
|
|
435
552
|
</div>
|
|
436
|
-
|
|
553
|
+
`;
|
|
554
|
+
})}
|
|
437
555
|
</div>
|
|
438
556
|
|
|
439
557
|
<div
|
|
@@ -441,6 +559,8 @@ export class TemplateConfigForm extends Base {
|
|
|
441
559
|
class=${classMap({
|
|
442
560
|
'h-m flex items-center ring-inset ring-primary-50 focus-within-ring-2': true,
|
|
443
561
|
'border-t border-contrast-10': fields.length > 0,
|
|
562
|
+
'flex': !isReadonly,
|
|
563
|
+
'hidden': isReadonly,
|
|
444
564
|
})}
|
|
445
565
|
>
|
|
446
566
|
<input
|
|
@@ -448,6 +568,7 @@ export class TemplateConfigForm extends Base {
|
|
|
448
568
|
class="w-full bg-transparent appearance-none h-m px-m focus-outline-none"
|
|
449
569
|
list="hidden-fields-list"
|
|
450
570
|
.value=${live(this.__addHiddenFieldInputValue)}
|
|
571
|
+
?disabled=${isDisabled}
|
|
451
572
|
@keydown=${(evt) => evt.key === 'Enter' && addField()}
|
|
452
573
|
@input=${(evt) => {
|
|
453
574
|
this.__addHiddenFieldInputValue = evt.currentTarget.value;
|
|
@@ -485,6 +606,7 @@ export class TemplateConfigForm extends Base {
|
|
|
485
606
|
__renderCards(json) {
|
|
486
607
|
const { lang, ns } = this;
|
|
487
608
|
const isDisabled = this.disabledSelector.matches('cards', true);
|
|
609
|
+
const isReadonly = this.readonlySelector.matches('cards', true);
|
|
488
610
|
const config = json.supported_payment_cards;
|
|
489
611
|
let skipForSaved;
|
|
490
612
|
let skipForSSO;
|
|
@@ -516,7 +638,14 @@ export class TemplateConfigForm extends Base {
|
|
|
516
638
|
|
|
517
639
|
<div class="space-y-xs">
|
|
518
640
|
<x-group frame>
|
|
519
|
-
<foxy-i18n
|
|
641
|
+
<foxy-i18n
|
|
642
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
643
|
+
slot="header"
|
|
644
|
+
lang=${lang}
|
|
645
|
+
key="supported_cards"
|
|
646
|
+
ns=${ns}
|
|
647
|
+
>
|
|
648
|
+
</foxy-i18n>
|
|
520
649
|
|
|
521
650
|
<div class="flex flex-wrap m-xs p-s">
|
|
522
651
|
${Object.entries(logos).map(([type, logo]) => {
|
|
@@ -534,10 +663,12 @@ export class TemplateConfigForm extends Base {
|
|
|
534
663
|
<label
|
|
535
664
|
class=${classMap({
|
|
536
665
|
'overflow-hidden transition-colors flex rounded border': true,
|
|
537
|
-
'border-primary bg-primary-10 text-primary': isChecked,
|
|
538
|
-
'
|
|
666
|
+
'border-primary bg-primary-10 text-primary': isChecked && !isReadonly,
|
|
667
|
+
'border-contrast bg-contrast-5 text-secondary': isChecked && isReadonly,
|
|
668
|
+
'hover-text-body': isChecked && !isDisabled && !isReadonly,
|
|
539
669
|
'border-contrast-10': !isChecked,
|
|
540
|
-
'hover-border-primary
|
|
670
|
+
'hover-border-primary': !isChecked && !isDisabled && !isReadonly,
|
|
671
|
+
'hover-text-primary': !isChecked && !isDisabled && !isReadonly,
|
|
541
672
|
})}
|
|
542
673
|
>
|
|
543
674
|
<div class="h-s">${logo}</div>
|
|
@@ -552,6 +683,8 @@ export class TemplateConfigForm extends Base {
|
|
|
552
683
|
?disabled=${isDisabled}
|
|
553
684
|
?checked=${isChecked}
|
|
554
685
|
@change=${(evt) => {
|
|
686
|
+
if (isReadonly)
|
|
687
|
+
return evt.preventDefault();
|
|
555
688
|
evt.stopPropagation();
|
|
556
689
|
if (isChecked) {
|
|
557
690
|
config.splice(config.indexOf(type), 1);
|
|
@@ -572,6 +705,7 @@ export class TemplateConfigForm extends Base {
|
|
|
572
705
|
<x-checkbox
|
|
573
706
|
class="m-s"
|
|
574
707
|
?disabled=${isDisabled || json.csc_requirements === 'new_cards_only'}
|
|
708
|
+
?readonly=${isReadonly}
|
|
575
709
|
?checked=${skipForSaved}
|
|
576
710
|
@change=${(evt) => {
|
|
577
711
|
json.csc_requirements = evt.detail ? 'sso_only' : 'all_cards';
|
|
@@ -585,6 +719,7 @@ export class TemplateConfigForm extends Base {
|
|
|
585
719
|
<x-checkbox
|
|
586
720
|
class="m-s"
|
|
587
721
|
?disabled=${isDisabled}
|
|
722
|
+
?readonly=${isReadonly}
|
|
588
723
|
?checked=${skipForSSO}
|
|
589
724
|
@change=${(evt) => {
|
|
590
725
|
json.csc_requirements = evt.detail
|
|
@@ -602,7 +737,7 @@ export class TemplateConfigForm extends Base {
|
|
|
602
737
|
</x-group>
|
|
603
738
|
|
|
604
739
|
<foxy-i18n
|
|
605
|
-
class="text-xs
|
|
740
|
+
class="text-xs leading-s block ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
606
741
|
lang=${lang}
|
|
607
742
|
key="supported_cards_disclaimer"
|
|
608
743
|
ns=${ns}
|
|
@@ -616,17 +751,26 @@ export class TemplateConfigForm extends Base {
|
|
|
616
751
|
}
|
|
617
752
|
__renderCheckoutType(json) {
|
|
618
753
|
const { lang, ns } = this;
|
|
754
|
+
const isDisabled = this.disabledSelector.matches('checkout-type', true);
|
|
755
|
+
const isReadonly = this.readonlySelector.matches('checkout-type', true);
|
|
619
756
|
return html `
|
|
620
757
|
<div>
|
|
621
758
|
${this.renderTemplateOrSlot('checkout-type:before')}
|
|
622
759
|
|
|
623
760
|
<div class="space-y-xs">
|
|
624
761
|
<x-group frame>
|
|
625
|
-
<foxy-i18n
|
|
762
|
+
<foxy-i18n
|
|
763
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
764
|
+
slot="header"
|
|
765
|
+
lang=${lang}
|
|
766
|
+
key="checkout_type"
|
|
767
|
+
ns=${ns}
|
|
768
|
+
>
|
|
769
|
+
</foxy-i18n>
|
|
626
770
|
|
|
627
771
|
<x-choice
|
|
628
|
-
?disabled=${
|
|
629
|
-
?readonly=${
|
|
772
|
+
?disabled=${isDisabled}
|
|
773
|
+
?readonly=${isReadonly}
|
|
630
774
|
.items=${['default_account', 'default_guest', 'guest_only', 'account_only']}
|
|
631
775
|
.value=${json.checkout_type}
|
|
632
776
|
.getText=${(item) => this.t(`checkout_type_${item}`)}
|
|
@@ -639,7 +783,7 @@ export class TemplateConfigForm extends Base {
|
|
|
639
783
|
</x-group>
|
|
640
784
|
|
|
641
785
|
<foxy-i18n
|
|
642
|
-
class="text-
|
|
786
|
+
class="text-xs leading-s block ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
643
787
|
lang=${lang}
|
|
644
788
|
key="checkout_type_helper_text"
|
|
645
789
|
ns=${ns}
|
|
@@ -664,7 +808,14 @@ export class TemplateConfigForm extends Base {
|
|
|
664
808
|
${this.renderTemplateOrSlot('consent:before')}
|
|
665
809
|
|
|
666
810
|
<x-group frame>
|
|
667
|
-
<foxy-i18n
|
|
811
|
+
<foxy-i18n
|
|
812
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
813
|
+
slot="header"
|
|
814
|
+
lang=${lang}
|
|
815
|
+
key="consent"
|
|
816
|
+
ns=${ns}
|
|
817
|
+
>
|
|
818
|
+
</foxy-i18n>
|
|
668
819
|
|
|
669
820
|
<x-checkbox
|
|
670
821
|
?disabled=${isDisabled}
|
|
@@ -682,7 +833,7 @@ export class TemplateConfigForm extends Base {
|
|
|
682
833
|
<div class="flex flex-col">
|
|
683
834
|
<foxy-i18n lang=${lang} key="display_tos_link" ns=${ns}></foxy-i18n>
|
|
684
835
|
<foxy-i18n
|
|
685
|
-
class="text-xs leading-s text-secondary"
|
|
836
|
+
class="text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
686
837
|
lang=${lang}
|
|
687
838
|
key="display_tos_link_explainer"
|
|
688
839
|
ns=${ns}
|
|
@@ -751,7 +902,7 @@ export class TemplateConfigForm extends Base {
|
|
|
751
902
|
<div class="flex flex-col">
|
|
752
903
|
<foxy-i18n lang=${lang} key="newsletter_subscribe" ns=${ns}></foxy-i18n>
|
|
753
904
|
<foxy-i18n
|
|
754
|
-
class="text-xs leading-s text-secondary"
|
|
905
|
+
class="text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
755
906
|
lang=${lang}
|
|
756
907
|
key="newsletter_subscribe_explainer"
|
|
757
908
|
ns=${ns}
|
|
@@ -775,7 +926,7 @@ export class TemplateConfigForm extends Base {
|
|
|
775
926
|
<div class="flex flex-col">
|
|
776
927
|
<foxy-i18n lang=${lang} key="display_sdta" ns=${ns}></foxy-i18n>
|
|
777
928
|
<foxy-i18n
|
|
778
|
-
class="text-xs leading-s text-secondary"
|
|
929
|
+
class="text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
779
930
|
lang=${lang}
|
|
780
931
|
key="display_sdta_explainer"
|
|
781
932
|
ns=${ns}
|
|
@@ -792,6 +943,7 @@ export class TemplateConfigForm extends Base {
|
|
|
792
943
|
__renderFields(json) {
|
|
793
944
|
const { lang, ns } = this;
|
|
794
945
|
const isDisabled = this.disabledSelector.matches('fields', true);
|
|
946
|
+
const isReadonly = this.readonlySelector.matches('fields', true);
|
|
795
947
|
const config = json.custom_checkout_field_requirements;
|
|
796
948
|
const options = {
|
|
797
949
|
cart_controls: ['enabled', 'disabled'],
|
|
@@ -813,12 +965,25 @@ export class TemplateConfigForm extends Base {
|
|
|
813
965
|
${this.renderTemplateOrSlot('fields:before')}
|
|
814
966
|
|
|
815
967
|
<x-group frame>
|
|
816
|
-
<foxy-i18n
|
|
968
|
+
<foxy-i18n
|
|
969
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
970
|
+
slot="header"
|
|
971
|
+
lang=${lang}
|
|
972
|
+
key="field_plural"
|
|
973
|
+
ns=${ns}
|
|
974
|
+
>
|
|
975
|
+
</foxy-i18n>
|
|
817
976
|
|
|
818
977
|
<div class="bg-contrast-10 grid grid-cols-1 md-grid-cols-2" style="gap: 1px">
|
|
819
978
|
${Object.entries(options).map(([property, values]) => {
|
|
820
979
|
return html `
|
|
821
|
-
<label
|
|
980
|
+
<label
|
|
981
|
+
class=${classMap({
|
|
982
|
+
'flex items-center pl-m bg-base': true,
|
|
983
|
+
'text-secondary': isReadonly,
|
|
984
|
+
'text-disabled': isDisabled,
|
|
985
|
+
})}
|
|
986
|
+
>
|
|
822
987
|
<foxy-i18n
|
|
823
988
|
class="flex-1"
|
|
824
989
|
lang=${lang}
|
|
@@ -829,14 +994,32 @@ export class TemplateConfigForm extends Base {
|
|
|
829
994
|
|
|
830
995
|
<div
|
|
831
996
|
class=${classMap({
|
|
832
|
-
'
|
|
997
|
+
'flex items-center text-right font-medium h-s px-s m-xs': isReadonly,
|
|
998
|
+
'hidden': !isReadonly,
|
|
999
|
+
})}
|
|
1000
|
+
>
|
|
1001
|
+
${this.t(values.find(value => config[property] === value))}
|
|
1002
|
+
</div>
|
|
1003
|
+
|
|
1004
|
+
<div
|
|
1005
|
+
class=${classMap({
|
|
1006
|
+
'px-s m-xs flex items-center rounded leading-none': true,
|
|
833
1007
|
'ring-primary-50 ring-inset focus-within-ring-2': !isDisabled,
|
|
834
1008
|
'hover-text-primary': !isDisabled,
|
|
835
|
-
'
|
|
1009
|
+
'cursor-pointer': !isDisabled,
|
|
1010
|
+
'cursor-default': isDisabled,
|
|
1011
|
+
'flex': !isReadonly,
|
|
1012
|
+
'hidden': isReadonly,
|
|
836
1013
|
})}
|
|
837
1014
|
>
|
|
838
1015
|
<select
|
|
839
|
-
class
|
|
1016
|
+
class=${classMap({
|
|
1017
|
+
'h-s mr-xs text-right appearance-none bg-transparent font-medium': true,
|
|
1018
|
+
'focus-outline-none cursor-pointer': !isDisabled,
|
|
1019
|
+
'cursor-default': isDisabled,
|
|
1020
|
+
})}
|
|
1021
|
+
?disabled=${isDisabled}
|
|
1022
|
+
?readonly=${isReadonly}
|
|
840
1023
|
@change=${(evt) => {
|
|
841
1024
|
const select = evt.currentTarget;
|
|
842
1025
|
const value = select.options[select.options.selectedIndex].value;
|
|
@@ -886,7 +1069,7 @@ export class TemplateConfigForm extends Base {
|
|
|
886
1069
|
${this.renderTemplateOrSlot('google-analytics:before')}
|
|
887
1070
|
|
|
888
1071
|
<x-group frame>
|
|
889
|
-
<span slot="header">Google Analytics</span>
|
|
1072
|
+
<span class=${isDisabled ? 'text-disabled' : ''} slot="header">Google Analytics</span>
|
|
890
1073
|
|
|
891
1074
|
<div class="p-m space-y-m">
|
|
892
1075
|
<vaadin-text-field
|
|
@@ -919,7 +1102,7 @@ export class TemplateConfigForm extends Base {
|
|
|
919
1102
|
<div class="flex flex-col">
|
|
920
1103
|
<foxy-i18n lang=${lang} key="ga_include_on_site" ns=${ns}></foxy-i18n>
|
|
921
1104
|
<foxy-i18n
|
|
922
|
-
class="text-xs leading-s text-secondary"
|
|
1105
|
+
class="text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
923
1106
|
lang=${lang}
|
|
924
1107
|
key="ga_include_on_site_explainer"
|
|
925
1108
|
ns=${ns}
|
|
@@ -945,7 +1128,7 @@ export class TemplateConfigForm extends Base {
|
|
|
945
1128
|
${this.renderTemplateOrSlot('segment-io:before')}
|
|
946
1129
|
|
|
947
1130
|
<x-group frame>
|
|
948
|
-
<span slot="header">Segment.io</span>
|
|
1131
|
+
<span class=${isDisabled ? 'text-disabled' : ''} slot="header">Segment.io</span>
|
|
949
1132
|
|
|
950
1133
|
<div class="p-m">
|
|
951
1134
|
<vaadin-text-field
|
|
@@ -975,17 +1158,26 @@ export class TemplateConfigForm extends Base {
|
|
|
975
1158
|
__renderTroubleshooting(json) {
|
|
976
1159
|
const { lang, ns } = this;
|
|
977
1160
|
const config = json.debug;
|
|
1161
|
+
const isDisabled = this.disabledSelector.matches('troubleshooting', true);
|
|
1162
|
+
const isReadonly = this.readonlySelector.matches('troubleshooting', true);
|
|
978
1163
|
return html `
|
|
979
1164
|
<div>
|
|
980
1165
|
${this.renderTemplateOrSlot('troubleshooting:before')}
|
|
981
1166
|
|
|
982
1167
|
<x-group frame>
|
|
983
|
-
<foxy-i18n
|
|
1168
|
+
<foxy-i18n
|
|
1169
|
+
class=${isDisabled ? 'text-disabled' : ''}
|
|
1170
|
+
slot="header"
|
|
1171
|
+
lang=${lang}
|
|
1172
|
+
key="troubleshooting"
|
|
1173
|
+
ns=${ns}
|
|
1174
|
+
>
|
|
1175
|
+
</foxy-i18n>
|
|
984
1176
|
|
|
985
1177
|
<div class="p-m space-y-m">
|
|
986
1178
|
<x-checkbox
|
|
987
|
-
?disabled=${
|
|
988
|
-
?readonly=${
|
|
1179
|
+
?disabled=${isDisabled}
|
|
1180
|
+
?readonly=${isReadonly}
|
|
989
1181
|
?checked=${config.usage === 'required'}
|
|
990
1182
|
@change=${(evt) => {
|
|
991
1183
|
config.usage = evt.detail ? 'required' : 'none';
|
|
@@ -995,7 +1187,7 @@ export class TemplateConfigForm extends Base {
|
|
|
995
1187
|
<div class="flex flex-col">
|
|
996
1188
|
<foxy-i18n lang=${lang} key="troubleshooting_debug" ns=${ns}></foxy-i18n>
|
|
997
1189
|
<foxy-i18n
|
|
998
|
-
class="text-xs leading-s text-secondary"
|
|
1190
|
+
class="text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}"
|
|
999
1191
|
lang=${lang}
|
|
1000
1192
|
key="troubleshooting_debug_explainer"
|
|
1001
1193
|
ns=${ns}
|