@foxy.io/elements 1.40.0-beta.2 → 1.40.0-beta.3

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 (60) hide show
  1. package/dist/cdn/foxy-admin-subscription-form.js +1 -1
  2. package/dist/cdn/foxy-cart-form.js +1 -1
  3. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  4. package/dist/cdn/foxy-coupon-form.js +1 -1
  5. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  6. package/dist/cdn/foxy-customer-portal.js +1 -1
  7. package/dist/cdn/foxy-customer.js +1 -1
  8. package/dist/cdn/foxy-email-template-form.js +1 -1
  9. package/dist/cdn/foxy-experimental-add-to-cart-builder.js +1 -14
  10. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  11. package/dist/cdn/foxy-gift-card-form.js +1 -1
  12. package/dist/cdn/foxy-item-category-form.js +1 -1
  13. package/dist/cdn/foxy-item-form.js +1 -1
  14. package/dist/cdn/foxy-item-option-form.js +1 -1
  15. package/dist/cdn/foxy-native-integration-form.js +1 -1
  16. package/dist/cdn/foxy-payment-method-card.js +1 -1
  17. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  18. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  19. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  20. package/dist/cdn/foxy-store-form.js +1 -1
  21. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  22. package/dist/cdn/foxy-subscription-form.js +1 -1
  23. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  24. package/dist/cdn/foxy-tax-form.js +1 -1
  25. package/dist/cdn/foxy-template-config-form.js +1 -1
  26. package/dist/cdn/foxy-template-form.js +1 -1
  27. package/dist/cdn/foxy-template-set-form.js +1 -1
  28. package/dist/cdn/foxy-transaction.js +1 -1
  29. package/dist/cdn/foxy-update-payment-method-form.js +1 -1
  30. package/dist/cdn/foxy-user-invitation-form.js +1 -1
  31. package/dist/cdn/foxy-webhook-form.js +1 -1
  32. package/dist/cdn/{shared-0c134ce7.js → shared-0098edce.js} +1 -1
  33. package/dist/cdn/shared-511fcf8e.js +15 -0
  34. package/dist/cdn/shared-653368ea.js +1 -0
  35. package/dist/cdn/translations/native-integration-form/en.json +82 -17
  36. package/dist/cdn/translations/template-config-form/en.json +6 -6
  37. package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.d.ts +1 -0
  38. package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js +24 -2
  39. package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js.map +1 -1
  40. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.d.ts +1 -2
  41. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.js +28 -45
  42. package/dist/elements/public/NativeIntegrationForm/NativeIntegrationForm.js.map +1 -1
  43. package/dist/elements/public/NativeIntegrationForm/index.d.ts +1 -0
  44. package/dist/elements/public/NativeIntegrationForm/index.js +1 -0
  45. package/dist/elements/public/NativeIntegrationForm/index.js.map +1 -1
  46. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/InternalNativeIntegrationFormCodeMapControl.d.ts +12 -0
  47. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/InternalNativeIntegrationFormCodeMapControl.js +123 -0
  48. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/InternalNativeIntegrationFormCodeMapControl.js.map +1 -0
  49. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/index.d.ts +8 -0
  50. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/index.js +10 -0
  51. package/dist/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/index.js.map +1 -0
  52. package/dist/elements/public/TaxForm/TaxForm.js +1 -1
  53. package/dist/elements/public/TaxForm/TaxForm.js.map +1 -1
  54. package/dist/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControl.js +73 -53
  55. package/dist/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControl.js.map +1 -1
  56. package/dist/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControlItem.js +70 -54
  57. package/dist/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControlItem.js.map +1 -1
  58. package/package.json +1 -1
  59. package/dist/cdn/shared-80a1bf6f.js +0 -1
  60. package/dist/cdn/shared-aca2705d.js +0 -1
@@ -0,0 +1,123 @@
1
+ import { InternalEditableControl } from "../../../../internal/InternalEditableControl/InternalEditableControl.js";
2
+ import { getResourceId } from '@foxy.io/sdk/core';
3
+ import { ifDefined } from 'lit-html/directives/if-defined';
4
+ import { html, svg } from 'lit-element';
5
+ import { classMap } from "../../../../../utils/class-map.js";
6
+ export class InternalNativeIntegrationFormCodeMapControl extends InternalEditableControl {
7
+ constructor() {
8
+ super(...arguments);
9
+ this.itemCategoryBase = null;
10
+ this.itemCategories = null;
11
+ this.__newMappingGetValue = () => void 0;
12
+ this.__newMappingSetValue = (value) => {
13
+ const id = getResourceId(value);
14
+ if (typeof id === 'string' || typeof id === 'number') {
15
+ if (this._value && id in this._value) {
16
+ const entry = this.renderRoot.querySelector(`#category-${id}`);
17
+ entry === null || entry === void 0 ? void 0 : entry.animate([
18
+ { background: '' },
19
+ { background: 'var(--lumo-primary-color-50pct)' },
20
+ { background: '' },
21
+ ], {
22
+ duration: 2000,
23
+ easing: 'ease',
24
+ });
25
+ }
26
+ else {
27
+ this._value = { ...this._value, [id]: '' };
28
+ }
29
+ }
30
+ };
31
+ }
32
+ static get properties() {
33
+ return {
34
+ ...super.properties,
35
+ itemCategoryBase: { attribute: 'item-category-base' },
36
+ itemCategories: { attribute: 'item-categories' },
37
+ };
38
+ }
39
+ renderControl() {
40
+ var _a, _b;
41
+ return html `
42
+ <foxy-internal-summary-control infer="existing-mappings" unsafe-helper-text>
43
+ ${Object.entries((_a = this._value) !== null && _a !== void 0 ? _a : {}).map(([id, taxCode]) => {
44
+ var _a, _b, _c, _d, _e;
45
+ let categoryHref;
46
+ try {
47
+ categoryHref = new URL(id, (_a = this.itemCategoryBase) !== null && _a !== void 0 ? _a : void 0).toString();
48
+ }
49
+ catch (_f) {
50
+ categoryHref = undefined;
51
+ }
52
+ const loader = this.renderRoot.querySelector(`#category${id}Loader`);
53
+ const status = (loader === null || loader === void 0 ? void 0 : loader.in('fail')) ? this.t('existing-mappings.status_fail')
54
+ : (loader === null || loader === void 0 ? void 0 : loader.in('busy')) ? this.t('existing-mappings.status_busy')
55
+ : null;
56
+ return html `
57
+ <div class="flex items-center gap-xs" id="category-${id}">
58
+ <foxy-nucleon
59
+ parent=${ifDefined((_b = this.itemCategories) !== null && _b !== void 0 ? _b : void 0)}
60
+ class="hidden"
61
+ infer=""
62
+ href=${ifDefined(categoryHref)}
63
+ id="category${id}Loader"
64
+ @update=${() => this.requestUpdate()}
65
+ >
66
+ </foxy-nucleon>
67
+
68
+ <foxy-internal-text-control
69
+ helper-text=""
70
+ layout="summary-item"
71
+ label=${(_e = (_d = (_c = loader === null || loader === void 0 ? void 0 : loader.data) === null || _c === void 0 ? void 0 : _c.name) !== null && _d !== void 0 ? _d : status) !== null && _e !== void 0 ? _e : id}
72
+ infer=""
73
+ class="flex-1"
74
+ .getValue=${() => taxCode}
75
+ .setValue=${(v) => (this._value = { ...this._value, [id]: v })}
76
+ >
77
+ </foxy-internal-text-control>
78
+
79
+ <button
80
+ aria-label=${this.t('delete')}
81
+ class=${classMap({
82
+ 'flex-shrink-0 rounded-full transition-colors': true,
83
+ 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,
84
+ 'cursor-pointer text-tertiary hover-text-body': !this.disabled,
85
+ 'cursor-default text-disabled': this.disabled,
86
+ })}
87
+ style="width: 1em; height: 1em;"
88
+ ?disabled=${this.disabled}
89
+ ?hidden=${this.readonly || !!taxCode}
90
+ @click=${() => {
91
+ const newValue = { ...this._value };
92
+ delete newValue[id];
93
+ this._value = newValue;
94
+ }}
95
+ >
96
+ ${svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" style="width: 1em; height: 1em; transform: translate(0.1em, 0.1em) scale(1.3);"><path fill-rule="evenodd" d="M5 3.25V4H2.75a.75.75 0 0 0 0 1.5h.3l.815 8.15A1.5 1.5 0 0 0 5.357 15h5.285a1.5 1.5 0 0 0 1.493-1.35l.815-8.15h.3a.75.75 0 0 0 0-1.5H11v-.75A2.25 2.25 0 0 0 8.75 1h-1.5A2.25 2.25 0 0 0 5 3.25Zm2.25-.75a.75.75 0 0 0-.75.75V4h3v-.75a.75.75 0 0 0-.75-.75h-1.5ZM6.05 6a.75.75 0 0 1 .787.713l.275 5.5a.75.75 0 0 1-1.498.075l-.275-5.5A.75.75 0 0 1 6.05 6Zm3.9 0a.75.75 0 0 1 .712.787l-.275 5.5a.75.75 0 0 1-1.498-.075l.275-5.5a.75.75 0 0 1 .786-.711Z" clip-rule="evenodd" /> </svg>`}
97
+ </button>
98
+ </div>
99
+ `;
100
+ })}
101
+ </foxy-internal-summary-control>
102
+
103
+ <foxy-internal-summary-control helper-text="" label="" infer="new-mapping" class="mt-s">
104
+ <foxy-internal-resource-picker-control
105
+ layout="summary-item"
106
+ first=${ifDefined((_b = this.itemCategories) !== null && _b !== void 0 ? _b : void 0)}
107
+ infer=""
108
+ item="foxy-item-category-card"
109
+ .getValue=${this.__newMappingGetValue}
110
+ .setValue=${this.__newMappingSetValue}
111
+ >
112
+ </foxy-internal-resource-picker-control>
113
+ </foxy-internal-summary-control>
114
+ `;
115
+ }
116
+ get _value() {
117
+ return super._value;
118
+ }
119
+ set _value(newValue) {
120
+ super._value = newValue;
121
+ }
122
+ }
123
+ //# sourceMappingURL=InternalNativeIntegrationFormCodeMapControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalNativeIntegrationFormCodeMapControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/InternalNativeIntegrationFormCodeMapControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../../../NucleonElement/NucleonElement';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { InternalEditableControl } from '../../../../internal/InternalEditableControl/InternalEditableControl';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, svg } from 'lit-element';\nimport { classMap } from '../../../../../utils/class-map';\n\nexport class InternalNativeIntegrationFormCodeMapControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n itemCategoryBase: { attribute: 'item-category-base' },\n itemCategories: { attribute: 'item-categories' },\n };\n }\n\n itemCategoryBase: string | null = null;\n\n itemCategories: string | null = null;\n\n private readonly __newMappingGetValue = () => void 0;\n\n private readonly __newMappingSetValue = (value: string) => {\n const id = getResourceId(value);\n\n if (typeof id === 'string' || typeof id === 'number') {\n if (this._value && id in this._value) {\n const entry = this.renderRoot.querySelector(`#category-${id}`);\n entry?.animate(\n [\n { background: '' },\n { background: 'var(--lumo-primary-color-50pct)' },\n { background: '' },\n ],\n {\n duration: 2000,\n easing: 'ease',\n }\n );\n } else {\n this._value = { ...this._value, [id]: '' };\n }\n }\n };\n\n renderControl(): TemplateResult {\n return html`\n <foxy-internal-summary-control infer=\"existing-mappings\" unsafe-helper-text>\n ${Object.entries(this._value ?? {}).map(([id, taxCode]) => {\n let categoryHref: string | undefined;\n\n try {\n categoryHref = new URL(id, this.itemCategoryBase ?? void 0).toString();\n } catch {\n categoryHref = undefined;\n }\n\n type Loader = NucleonElement<Resource<Rels.ItemCategory>>;\n const loader = this.renderRoot.querySelector<Loader>(`#category${id}Loader`);\n const status = loader?.in('fail')\n ? this.t('existing-mappings.status_fail')\n : loader?.in('busy')\n ? this.t('existing-mappings.status_busy')\n : null;\n\n return html`\n <div class=\"flex items-center gap-xs\" id=\"category-${id}\">\n <foxy-nucleon\n parent=${ifDefined(this.itemCategories ?? void 0)}\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(categoryHref)}\n id=\"category${id}Loader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-internal-text-control\n helper-text=\"\"\n layout=\"summary-item\"\n label=${loader?.data?.name ?? status ?? id}\n infer=\"\"\n class=\"flex-1\"\n .getValue=${() => taxCode}\n .setValue=${(v: string) => (this._value = { ...this._value, [id]: v })}\n >\n </foxy-internal-text-control>\n\n <button\n aria-label=${this.t('delete')}\n class=${classMap({\n 'flex-shrink-0 rounded-full transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer text-tertiary hover-text-body': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n })}\n style=\"width: 1em; height: 1em;\"\n ?disabled=${this.disabled}\n ?hidden=${this.readonly || !!taxCode}\n @click=${() => {\n const newValue = { ...this._value };\n delete newValue[id];\n this._value = newValue;\n }}\n >\n ${svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width: 1em; height: 1em; transform: translate(0.1em, 0.1em) scale(1.3);\"><path fill-rule=\"evenodd\" d=\"M5 3.25V4H2.75a.75.75 0 0 0 0 1.5h.3l.815 8.15A1.5 1.5 0 0 0 5.357 15h5.285a1.5 1.5 0 0 0 1.493-1.35l.815-8.15h.3a.75.75 0 0 0 0-1.5H11v-.75A2.25 2.25 0 0 0 8.75 1h-1.5A2.25 2.25 0 0 0 5 3.25Zm2.25-.75a.75.75 0 0 0-.75.75V4h3v-.75a.75.75 0 0 0-.75-.75h-1.5ZM6.05 6a.75.75 0 0 1 .787.713l.275 5.5a.75.75 0 0 1-1.498.075l-.275-5.5A.75.75 0 0 1 6.05 6Zm3.9 0a.75.75 0 0 1 .712.787l-.275 5.5a.75.75 0 0 1-1.498-.075l.275-5.5a.75.75 0 0 1 .786-.711Z\" clip-rule=\"evenodd\" /> </svg>`}\n </button>\n </div>\n `;\n })}\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control helper-text=\"\" label=\"\" infer=\"new-mapping\" class=\"mt-s\">\n <foxy-internal-resource-picker-control\n layout=\"summary-item\"\n first=${ifDefined(this.itemCategories ?? void 0)}\n infer=\"\"\n item=\"foxy-item-category-card\"\n .getValue=${this.__newMappingGetValue}\n .setValue=${this.__newMappingSetValue}\n >\n </foxy-internal-resource-picker-control>\n </foxy-internal-summary-control>\n `;\n }\n\n protected get _value(): Record<string, string> | undefined {\n return super._value as Record<string, string> | undefined;\n }\n\n protected set _value(newValue: Record<string, string> | undefined) {\n super._value = newValue;\n }\n}\n"]}
@@ -0,0 +1,8 @@
1
+ import '../../../../internal/InternalResourcePickerControl/index';
2
+ import '../../../../internal/InternalEditableControl/index';
3
+ import '../../../../internal/InternalSummaryControl/index';
4
+ import '../../../../internal/InternalTextControl/index';
5
+ import '../../../ItemCategoryCard/index';
6
+ import '../../../NucleonElement/index';
7
+ import { InternalNativeIntegrationFormCodeMapControl } from './InternalNativeIntegrationFormCodeMapControl';
8
+ export { InternalNativeIntegrationFormCodeMapControl };
@@ -0,0 +1,10 @@
1
+ import "../../../../internal/InternalResourcePickerControl/index.js";
2
+ import "../../../../internal/InternalEditableControl/index.js";
3
+ import "../../../../internal/InternalSummaryControl/index.js";
4
+ import "../../../../internal/InternalTextControl/index.js";
5
+ import "../../../ItemCategoryCard/index.js";
6
+ import "../../../NucleonElement/index.js";
7
+ import { InternalNativeIntegrationFormCodeMapControl } from "./InternalNativeIntegrationFormCodeMapControl.js";
8
+ customElements.define('foxy-internal-native-integration-form-code-map-control', InternalNativeIntegrationFormCodeMapControl);
9
+ export { InternalNativeIntegrationFormCodeMapControl };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/NativeIntegrationForm/internal/InternalNativeIntegrationFormCodeMapControl/index.ts"],"names":[],"mappings":"AAAA,qEAAkE;AAClE,+DAA4D;AAC5D,8DAA2D;AAC3D,2DAAwD;AAExD,4CAAyC;AACzC,0CAAuC;AAEvC,OAAO,EAAE,2CAA2C,EAAE,yDAAsD;AAE5G,cAAc,CAAC,MAAM,CACnB,wDAAwD,EACxD,2CAA2C,CAC5C,CAAC;AAEF,OAAO,EAAE,2CAA2C,EAAE,CAAC","sourcesContent":["import '../../../../internal/InternalResourcePickerControl/index';\nimport '../../../../internal/InternalEditableControl/index';\nimport '../../../../internal/InternalSummaryControl/index';\nimport '../../../../internal/InternalTextControl/index';\n\nimport '../../../ItemCategoryCard/index';\nimport '../../../NucleonElement/index';\n\nimport { InternalNativeIntegrationFormCodeMapControl } from './InternalNativeIntegrationFormCodeMapControl';\n\ncustomElements.define(\n 'foxy-internal-native-integration-form-code-map-control',\n InternalNativeIntegrationFormCodeMapControl\n);\n\nexport { InternalNativeIntegrationFormCodeMapControl };\n"]}
@@ -231,7 +231,7 @@ export class TaxForm extends Base {
231
231
  if (this.form.type === 'union' ||
232
232
  !this.form.country ||
233
233
  defaultLiveRateCountries.includes(this.form.country)) {
234
- options.unshift({ label: 'option_default', value: 'default' });
234
+ options.unshift({ label: 'option_default', value: '' });
235
235
  }
236
236
  if (this.form.type === 'union' ||
237
237
  !this.form.country ||
@@ -1 +1 @@
1
- {"version":3,"file":"TaxForm.js","sourceRoot":"","sources":["../../../../src/elements/public/TaxForm/TaxForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'tax-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n// prettier-ignore\nconst defaultLiveRateCountries: (string | undefined)[] = ['US', 'CA', 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IM', 'IT', 'LT', 'LU', 'LV', 'MC', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'];\nconst taxJarLiveRateCountries = [...defaultLiveRateCountries, 'AU'];\n\n/**\n * Form element for creating or editing taxes (`fx:tax`).\n *\n * @element foxy-tax-form\n * @since 1.13.0\n */\nexport class TaxForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n nativeIntegrations: { attribute: 'native-integrations' },\n countries: {},\n regions: {},\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 30 || 'name:v8n_too_long',\n ({ country: c, type: t }) => t !== 'country' || !!c || 'country:v8n_required',\n ({ country: c, type: t }) => t !== 'region' || !!c || 'country:v8n_required',\n ({ country: c, use_origin_rates: r }) => !r || !!c || 'country:v8n_required',\n ({ region: v, type: t }) => t != 'region' || !!v || 'region:v8n_required',\n ({ region: v }) => !v || v.length <= 20 || 'region:v8n_too_long',\n ({ city: v }) => !v || v.length <= 50 || 'city:v8n_too_long',\n ({ city: c, type: t }) => t != 'local' || !!c || 'city:v8n_required',\n ({ rate: v, type, is_live }) => {\n return (\n v === void 0 ||\n v > 0 ||\n // @ts-expect-error SDK types are not up to date.\n type === 'custom_tax_endpoint' ||\n type === void 0 ||\n is_live ||\n 'rate:v8n_invalid'\n );\n },\n ];\n }\n\n /** URL of the `fx:native_integrations` collection for the store. */\n nativeIntegrations: string | null = null;\n\n /** URL of the `fx:countries` property helper resource. */\n countries: string | null = null;\n\n /** URL of the `fx:regions` property helper resource. */\n regions: string | null = null;\n\n private __countrySetValue = (newValue: string) => {\n this.edit({ country: newValue, region: '', city: '' });\n this.edit({ apply_to_shipping: this.__isApplyToShippingHidden });\n };\n\n private __regionSetValue = (newValue: string) => {\n this.edit({ region: newValue, city: '' });\n };\n\n private __typeSetValue = (newValue: Data['type']) => {\n this.edit({\n type: newValue,\n country: '',\n region: '',\n city: '',\n // @ts-expect-error SDK types are not up to date.\n service_provider: newValue === 'custom_tax_endpoint' ? 'custom_tax' : '',\n apply_to_shipping: false,\n use_origin_rates: false,\n exempt_all_customer_tax_ids: false,\n is_live: false,\n rate: 0,\n });\n };\n\n private readonly __typeOptions = JSON.stringify([\n { label: 'option_custom_tax_endpoint', value: 'custom_tax_endpoint' },\n { label: 'option_global', value: 'global' },\n { label: 'option_union', value: 'union' },\n { label: 'option_country', value: 'country' },\n { label: 'option_region', value: 'region' },\n { label: 'option_local', value: 'local' },\n ]);\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = [super.readonlySelector.toString()];\n alwaysMatch.unshift('native-integrations');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n const type = this.form.type as string | undefined;\n\n if (type === 'global' || type === 'custom_tax_endpoint') {\n alwaysMatch.unshift('group-one:is-live', 'group-one:service-provider');\n if (type === 'custom_tax_endpoint') alwaysMatch.unshift('group-one:rate');\n } else {\n if (this.form.is_live) {\n alwaysMatch.unshift('group-one:rate');\n } else {\n alwaysMatch.unshift('group-one:service-provider');\n }\n }\n\n if (this.__nativeIntegrationsUrl === void 0) alwaysMatch.unshift('native-integrations');\n if (this.__isCountryHidden) alwaysMatch.unshift('group-three:country');\n if (this.__isRegionHidden) {\n alwaysMatch.unshift('group-three:region-select', 'group-three:region-input');\n }\n\n if (this.__isCityHidden) alwaysMatch.unshift('group-three:city');\n if (this.__isApplyToShippingHidden) alwaysMatch.unshift('group-two:apply-to-shipping');\n if (this.__isUseOriginRatesHidden) alwaysMatch.unshift('group-two:use-origin-rates');\n if (this.__isExemptAllCustomerTaxIdsHidden) {\n alwaysMatch.unshift('group-two:exempt-all-customer-tax-ids');\n }\n\n const regions = Object.values(this.__regionsLoader?.data?.values ?? {});\n alwaysMatch.unshift(`group-three:region-${regions.length ? 'input' : 'select'}`);\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const countries = Object.values(this.__countriesLoader?.data?.values ?? {});\n const countryOptions = countries.map(c => ({ rawLabel: c.default, value: c.cc2 }));\n\n const regions = Object.values(this.__regionsLoader?.data?.values ?? {});\n const regionOptions = regions.map(r => ({ rawLabel: r.default, value: r.code }));\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"group-one\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"name\"></foxy-internal-text-control>\n\n <foxy-internal-select-control\n options=${this.__typeOptions}\n layout=\"summary-item\"\n infer=\"type\"\n .setValue=${this.__typeSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-switch-control infer=\"is-live\"></foxy-internal-switch-control>\n\n <foxy-internal-select-control\n options=${JSON.stringify(this.__serviceProviderOptions)}\n layout=\"summary-item\"\n infer=\"service-provider\"\n >\n </foxy-internal-select-control>\n\n <foxy-internal-number-control layout=\"summary-item\" suffix=\"%\" infer=\"rate\" min=\"0\">\n </foxy-internal-number-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"native-integrations\"\n first=${ifDefined(this.__nativeIntegrationsUrl)}\n item=\"foxy-native-integration-card\"\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-summary-control infer=\"group-two\">\n <foxy-internal-switch-control infer=\"exempt-all-customer-tax-ids\">\n </foxy-internal-switch-control>\n <foxy-internal-switch-control infer=\"apply-to-shipping\"></foxy-internal-switch-control>\n <foxy-internal-switch-control infer=\"use-origin-rates\"></foxy-internal-switch-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"group-three\">\n <foxy-internal-select-control\n options=${JSON.stringify(countryOptions)}\n layout=\"summary-item\"\n infer=\"country\"\n .setValue=${this.__countrySetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-select-control\n property=\"region\"\n options=${JSON.stringify(regionOptions)}\n layout=\"summary-item\"\n infer=\"region-select\"\n .setValue=${this.__regionSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-text-control\n property=\"region\"\n layout=\"summary-item\"\n infer=\"region-input\"\n .setValue=${this.__regionSetValue}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control layout=\"summary-item\" infer=\"city\"></foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.countries ?? void 0)}\n id=\"countriesLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.__regionsUrl)}\n id=\"regionsLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __serviceProviderOptions() {\n const options = [\n { label: 'option_avalara', value: 'avalara' },\n { label: 'option_onesource', value: 'onesource' },\n ];\n\n if (\n this.form.type === 'union' ||\n !this.form.country ||\n defaultLiveRateCountries.includes(this.form.country)\n ) {\n options.unshift({ label: 'option_default', value: 'default' });\n }\n\n if (\n this.form.type === 'union' ||\n !this.form.country ||\n taxJarLiveRateCountries.includes(this.form.country)\n ) {\n options.push({ label: 'option_taxjar', value: 'taxjar' });\n }\n\n return options;\n }\n\n private get __nativeIntegrationsUrl() {\n try {\n const url = new URL(this.nativeIntegrations ?? '');\n const provider = this.form.service_provider;\n if (provider) {\n url.searchParams.set('provider', provider);\n return url.toString();\n }\n } catch {\n // do nothing\n }\n }\n\n private get __regionsUrl() {\n try {\n const regionsURL = new URL(this.regions ?? '');\n const country = this.form.country;\n if (country) regionsURL.searchParams.set('country_code', country);\n return regionsURL.toString();\n } catch {\n // do nothing\n }\n }\n\n private get __countriesLoader() {\n type Loader = NucleonElement<Resource<Rels.Countries>>;\n return this.renderRoot.querySelector<Loader>('#countriesLoader');\n }\n\n private get __regionsLoader() {\n type Loader = NucleonElement<Resource<Rels.Regions>>;\n return this.renderRoot.querySelector<Loader>('#regionsLoader');\n }\n\n private get __isExemptAllCustomerTaxIdsHidden() {\n const type = this.form.type as string | undefined;\n if (type === 'custom_tax_endpoint') return true;\n if (type === 'country' || type === 'region' || type === 'local') return !!this.form.is_live;\n\n const provider = this.form.service_provider as string | undefined;\n return !provider || provider === 'onesource' || provider === 'avalara' || provider === 'taxjar';\n }\n\n private get __isApplyToShippingHidden() {\n const type = this.form.type as string | undefined;\n\n if (!type || type === 'custom_tax_endpoint') return true;\n if (type === 'union') return false;\n if (type === 'country' && this.form.is_live) return true;\n if (type === 'region' && this.form.is_live) return true;\n\n return !!this.form.is_live && defaultLiveRateCountries.includes(this.form.country);\n }\n\n private get __isUseOriginRatesHidden() {\n return this.form.type !== 'union' || !this.form.is_live || !!this.form.service_provider;\n }\n\n private get __isCountryHidden() {\n if (this.form.type === 'union') {\n return (!this.form.service_provider || this.form.is_live) && !this.form.use_origin_rates;\n } else {\n return !(['country', 'region', 'local'] as unknown[]).includes(this.form.type);\n }\n }\n\n private get __isRegionHidden() {\n return this.form.type !== 'local' && this.form.type !== 'region';\n }\n\n private get __isCityHidden() {\n return this.form.type !== 'local';\n }\n}\n"]}
1
+ {"version":3,"file":"TaxForm.js","sourceRoot":"","sources":["../../../../src/elements/public/TaxForm/TaxForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'tax-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n// prettier-ignore\nconst defaultLiveRateCountries: (string | undefined)[] = ['US', 'CA', 'AT', 'BE', 'BG', 'CY', 'CZ', 'DE', 'DK', 'EE', 'ES', 'FI', 'FR', 'GB', 'GR', 'HR', 'HU', 'IE', 'IM', 'IT', 'LT', 'LU', 'LV', 'MC', 'MT', 'NL', 'PL', 'PT', 'RO', 'SE', 'SI', 'SK'];\nconst taxJarLiveRateCountries = [...defaultLiveRateCountries, 'AU'];\n\n/**\n * Form element for creating or editing taxes (`fx:tax`).\n *\n * @element foxy-tax-form\n * @since 1.13.0\n */\nexport class TaxForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n nativeIntegrations: { attribute: 'native-integrations' },\n countries: {},\n regions: {},\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 30 || 'name:v8n_too_long',\n ({ country: c, type: t }) => t !== 'country' || !!c || 'country:v8n_required',\n ({ country: c, type: t }) => t !== 'region' || !!c || 'country:v8n_required',\n ({ country: c, use_origin_rates: r }) => !r || !!c || 'country:v8n_required',\n ({ region: v, type: t }) => t != 'region' || !!v || 'region:v8n_required',\n ({ region: v }) => !v || v.length <= 20 || 'region:v8n_too_long',\n ({ city: v }) => !v || v.length <= 50 || 'city:v8n_too_long',\n ({ city: c, type: t }) => t != 'local' || !!c || 'city:v8n_required',\n ({ rate: v, type, is_live }) => {\n return (\n v === void 0 ||\n v > 0 ||\n // @ts-expect-error SDK types are not up to date.\n type === 'custom_tax_endpoint' ||\n type === void 0 ||\n is_live ||\n 'rate:v8n_invalid'\n );\n },\n ];\n }\n\n /** URL of the `fx:native_integrations` collection for the store. */\n nativeIntegrations: string | null = null;\n\n /** URL of the `fx:countries` property helper resource. */\n countries: string | null = null;\n\n /** URL of the `fx:regions` property helper resource. */\n regions: string | null = null;\n\n private __countrySetValue = (newValue: string) => {\n this.edit({ country: newValue, region: '', city: '' });\n this.edit({ apply_to_shipping: this.__isApplyToShippingHidden });\n };\n\n private __regionSetValue = (newValue: string) => {\n this.edit({ region: newValue, city: '' });\n };\n\n private __typeSetValue = (newValue: Data['type']) => {\n this.edit({\n type: newValue,\n country: '',\n region: '',\n city: '',\n // @ts-expect-error SDK types are not up to date.\n service_provider: newValue === 'custom_tax_endpoint' ? 'custom_tax' : '',\n apply_to_shipping: false,\n use_origin_rates: false,\n exempt_all_customer_tax_ids: false,\n is_live: false,\n rate: 0,\n });\n };\n\n private readonly __typeOptions = JSON.stringify([\n { label: 'option_custom_tax_endpoint', value: 'custom_tax_endpoint' },\n { label: 'option_global', value: 'global' },\n { label: 'option_union', value: 'union' },\n { label: 'option_country', value: 'country' },\n { label: 'option_region', value: 'region' },\n { label: 'option_local', value: 'local' },\n ]);\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = [super.readonlySelector.toString()];\n alwaysMatch.unshift('native-integrations');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n const type = this.form.type as string | undefined;\n\n if (type === 'global' || type === 'custom_tax_endpoint') {\n alwaysMatch.unshift('group-one:is-live', 'group-one:service-provider');\n if (type === 'custom_tax_endpoint') alwaysMatch.unshift('group-one:rate');\n } else {\n if (this.form.is_live) {\n alwaysMatch.unshift('group-one:rate');\n } else {\n alwaysMatch.unshift('group-one:service-provider');\n }\n }\n\n if (this.__nativeIntegrationsUrl === void 0) alwaysMatch.unshift('native-integrations');\n if (this.__isCountryHidden) alwaysMatch.unshift('group-three:country');\n if (this.__isRegionHidden) {\n alwaysMatch.unshift('group-three:region-select', 'group-three:region-input');\n }\n\n if (this.__isCityHidden) alwaysMatch.unshift('group-three:city');\n if (this.__isApplyToShippingHidden) alwaysMatch.unshift('group-two:apply-to-shipping');\n if (this.__isUseOriginRatesHidden) alwaysMatch.unshift('group-two:use-origin-rates');\n if (this.__isExemptAllCustomerTaxIdsHidden) {\n alwaysMatch.unshift('group-two:exempt-all-customer-tax-ids');\n }\n\n const regions = Object.values(this.__regionsLoader?.data?.values ?? {});\n alwaysMatch.unshift(`group-three:region-${regions.length ? 'input' : 'select'}`);\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const countries = Object.values(this.__countriesLoader?.data?.values ?? {});\n const countryOptions = countries.map(c => ({ rawLabel: c.default, value: c.cc2 }));\n\n const regions = Object.values(this.__regionsLoader?.data?.values ?? {});\n const regionOptions = regions.map(r => ({ rawLabel: r.default, value: r.code }));\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"group-one\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"name\"></foxy-internal-text-control>\n\n <foxy-internal-select-control\n options=${this.__typeOptions}\n layout=\"summary-item\"\n infer=\"type\"\n .setValue=${this.__typeSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-switch-control infer=\"is-live\"></foxy-internal-switch-control>\n\n <foxy-internal-select-control\n options=${JSON.stringify(this.__serviceProviderOptions)}\n layout=\"summary-item\"\n infer=\"service-provider\"\n >\n </foxy-internal-select-control>\n\n <foxy-internal-number-control layout=\"summary-item\" suffix=\"%\" infer=\"rate\" min=\"0\">\n </foxy-internal-number-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"native-integrations\"\n first=${ifDefined(this.__nativeIntegrationsUrl)}\n item=\"foxy-native-integration-card\"\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-summary-control infer=\"group-two\">\n <foxy-internal-switch-control infer=\"exempt-all-customer-tax-ids\">\n </foxy-internal-switch-control>\n <foxy-internal-switch-control infer=\"apply-to-shipping\"></foxy-internal-switch-control>\n <foxy-internal-switch-control infer=\"use-origin-rates\"></foxy-internal-switch-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"group-three\">\n <foxy-internal-select-control\n options=${JSON.stringify(countryOptions)}\n layout=\"summary-item\"\n infer=\"country\"\n .setValue=${this.__countrySetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-select-control\n property=\"region\"\n options=${JSON.stringify(regionOptions)}\n layout=\"summary-item\"\n infer=\"region-select\"\n .setValue=${this.__regionSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-text-control\n property=\"region\"\n layout=\"summary-item\"\n infer=\"region-input\"\n .setValue=${this.__regionSetValue}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-text-control layout=\"summary-item\" infer=\"city\"></foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.countries ?? void 0)}\n id=\"countriesLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.__regionsUrl)}\n id=\"regionsLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __serviceProviderOptions() {\n const options = [\n { label: 'option_avalara', value: 'avalara' },\n { label: 'option_onesource', value: 'onesource' },\n ];\n\n if (\n this.form.type === 'union' ||\n !this.form.country ||\n defaultLiveRateCountries.includes(this.form.country)\n ) {\n options.unshift({ label: 'option_default', value: '' });\n }\n\n if (\n this.form.type === 'union' ||\n !this.form.country ||\n taxJarLiveRateCountries.includes(this.form.country)\n ) {\n options.push({ label: 'option_taxjar', value: 'taxjar' });\n }\n\n return options;\n }\n\n private get __nativeIntegrationsUrl() {\n try {\n const url = new URL(this.nativeIntegrations ?? '');\n const provider = this.form.service_provider;\n if (provider) {\n url.searchParams.set('provider', provider);\n return url.toString();\n }\n } catch {\n // do nothing\n }\n }\n\n private get __regionsUrl() {\n try {\n const regionsURL = new URL(this.regions ?? '');\n const country = this.form.country;\n if (country) regionsURL.searchParams.set('country_code', country);\n return regionsURL.toString();\n } catch {\n // do nothing\n }\n }\n\n private get __countriesLoader() {\n type Loader = NucleonElement<Resource<Rels.Countries>>;\n return this.renderRoot.querySelector<Loader>('#countriesLoader');\n }\n\n private get __regionsLoader() {\n type Loader = NucleonElement<Resource<Rels.Regions>>;\n return this.renderRoot.querySelector<Loader>('#regionsLoader');\n }\n\n private get __isExemptAllCustomerTaxIdsHidden() {\n const type = this.form.type as string | undefined;\n if (type === 'custom_tax_endpoint') return true;\n if (type === 'country' || type === 'region' || type === 'local') return !!this.form.is_live;\n\n const provider = this.form.service_provider as string | undefined;\n return !provider || provider === 'onesource' || provider === 'avalara' || provider === 'taxjar';\n }\n\n private get __isApplyToShippingHidden() {\n const type = this.form.type as string | undefined;\n\n if (!type || type === 'custom_tax_endpoint') return true;\n if (type === 'union') return false;\n if (type === 'country' && this.form.is_live) return true;\n if (type === 'region' && this.form.is_live) return true;\n\n return !!this.form.is_live && defaultLiveRateCountries.includes(this.form.country);\n }\n\n private get __isUseOriginRatesHidden() {\n return this.form.type !== 'union' || !this.form.is_live || !!this.form.service_provider;\n }\n\n private get __isCountryHidden() {\n if (this.form.type === 'union') {\n return (!this.form.service_provider || this.form.is_live) && !this.form.use_origin_rates;\n } else {\n return !(['country', 'region', 'local'] as unknown[]).includes(this.form.type);\n }\n }\n\n private get __isRegionHidden() {\n return this.form.type !== 'local' && this.form.type !== 'region';\n }\n\n private get __isCityHidden() {\n return this.form.type !== 'local';\n }\n}\n"]}
@@ -19,7 +19,8 @@ export class InternalTemplateConfigFormFilterValuesControl extends InternalEdita
19
19
  }
20
20
  renderControl() {
21
21
  var _a, _b, _c, _d;
22
- const countries = (_c = (_b = (_a = this.__countriesLoader) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : {};
22
+ const options = Object.values((_c = (_b = (_a = this.__countriesLoader) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.values) !== null && _c !== void 0 ? _c : {});
23
+ const filteredOptions = options.filter(c => !(c.cc2 in this._value));
23
24
  return html `
24
25
  <div class="space-y-s" data-testid="countries">
25
26
  ${Object.entries(this._value).map(([country, regions]) => {
@@ -38,7 +39,7 @@ export class InternalTemplateConfigFormFilterValuesControl extends InternalEdita
38
39
  regions=${JSON.stringify(regions === '*' ? [] : regions)}
39
40
  infer=""
40
41
  code=${country}
41
- name=${ifDefined((_b = countries[country]) === null || _b === void 0 ? void 0 : _b.default)}
42
+ name=${ifDefined((_b = options.find(o => o.cc2 === country)) === null || _b === void 0 ? void 0 : _b.default)}
42
43
  href=${regionsLink}
43
44
  ?disabled=${this.disabled}
44
45
  ?readonly=${this.readonly}
@@ -57,60 +58,79 @@ export class InternalTemplateConfigFormFilterValuesControl extends InternalEdita
57
58
  </foxy-internal-template-config-form-filter-values-control-item>
58
59
  `;
59
60
  })}
61
+ ${filteredOptions.length === 0 && options.length !== 0
62
+ ? ''
63
+ : html `
64
+ <div
65
+ data-testid="new-country"
66
+ class=${classMap({
67
+ 'h-m flex items-center rounded-s transition-colors': true,
68
+ 'border border-contrast-10 ring-primary-50': true,
69
+ 'focus-within-ring-1 focus-within-border-primary-50': !this.disabled,
70
+ 'flex': !this.readonly,
71
+ 'hidden': this.readonly,
72
+ })}
73
+ >
74
+ ${options.length === 0
75
+ ? html `
76
+ <input
77
+ placeholder=${this.t('add_country')}
78
+ class="w-full bg-transparent font-medium appearance-none h-m focus-outline-none"
79
+ style="padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)"
80
+ .value=${this.__newCountry}
81
+ ?disabled=${this.disabled}
82
+ ?readonly=${this.readonly}
83
+ @keydown=${(evt) => {
84
+ if (evt.key === 'Enter' && this.__newCountry)
85
+ this.__addCountry();
86
+ }}
87
+ @input=${(evt) => {
88
+ const target = evt.currentTarget;
89
+ this.__newCountry = target.value;
90
+ }}
91
+ />
60
92
 
61
- <div
62
- data-testid="new-country"
63
- class=${classMap({
64
- 'h-m flex items-center rounded-s transition-colors': true,
65
- 'border border-contrast-10 ring-primary-50': true,
66
- 'focus-within-ring-1 focus-within-border-primary-50': !this.disabled,
67
- 'flex': !this.readonly,
68
- 'hidden': this.readonly,
69
- })}
70
- >
71
- <input
72
- placeholder=${this.t('add_country')}
73
- class="w-full bg-transparent font-medium appearance-none h-m focus-outline-none"
74
- style="padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)"
75
- list="list"
76
- .value=${this.__newCountry}
77
- ?disabled=${this.disabled}
78
- ?readonly=${this.readonly}
79
- @keydown=${(evt) => {
80
- if (evt.key === 'Enter' && this.__newCountry)
81
- this.__addCountry();
82
- }}
83
- @input=${(evt) => {
84
- const target = evt.currentTarget;
85
- this.__newCountry = target.value;
86
- }}
87
- />
88
-
89
- <button
90
- aria-label=${this.t('create')}
91
- class=${classMap({
92
- 'mr-xs flex-shrink-0': true,
93
- 'flex items-center justify-center rounded-s transition-colors': true,
94
- 'text-transparent cursor-default': !this.__newCountry,
95
- 'bg-contrast-5 text-body cursor-pointer': !!this.__newCountry,
96
- 'hover-bg-success hover-text-success-contrast': !!this.__newCountry,
97
- 'focus-outline-none focus-ring-2 ring-inset ring-primary-50': !!this.__newCountry,
98
- })}
99
- style="width: calc(var(--lumo-size-s) - 2px); height: calc(var(--lumo-size-s) - 2px)"
100
- ?disabled=${!this.__newCountry || this.disabled}
101
- @click=${this.__addCountry}
102
- >
103
- <iron-icon icon="icons:add" class="icon-inline text-m"></iron-icon>
104
- </button>
105
- </div>
93
+ <button
94
+ aria-label=${this.t('create')}
95
+ class=${classMap({
96
+ 'mr-xs flex-shrink-0': true,
97
+ 'flex items-center justify-center rounded-s transition-colors': true,
98
+ 'text-transparent cursor-default': !this.__newCountry,
99
+ 'bg-contrast-5 text-body cursor-pointer': !!this.__newCountry,
100
+ 'hover-bg-success hover-text-success-contrast': !!this.__newCountry,
101
+ 'focus-outline-none focus-ring-2 ring-inset ring-primary-50': !!this.__newCountry,
102
+ })}
103
+ style="width: calc(var(--lumo-size-s) - 2px); height: calc(var(--lumo-size-s) - 2px)"
104
+ ?disabled=${!this.__newCountry || this.disabled}
105
+ @click=${this.__addCountry}
106
+ >
107
+ <iron-icon icon="icons:add" class="icon-inline text-m"></iron-icon>
108
+ </button>
109
+ `
110
+ : html `
111
+ <select
112
+ class=${classMap({
113
+ 'appearance-none bg-transparent h-m text-m px-s flex-1 font-medium': true,
114
+ 'transition-colors rounded-s focus-outline-none': true,
115
+ 'cursor-pointer hover-bg-contrast-5': !this.disabled,
116
+ 'text-disabled': this.disabled,
117
+ })}
118
+ ?disabled=${this.disabled}
119
+ @change=${(evt) => {
120
+ const target = evt.currentTarget;
121
+ this.__newCountry = target.value;
122
+ this.__addCountry();
123
+ target.value = '';
124
+ }}
125
+ >
126
+ <option value="" disabled selected>${this.t('add_country')}</option>
127
+ ${filteredOptions.map(option => html `<option value=${option.cc2}>${option.default}</option>`)}
128
+ </select>
129
+ `}
130
+ </div>
131
+ `}
106
132
  </div>
107
133
 
108
- <datalist id="list">
109
- ${Object.entries(countries).map(([code, country]) => {
110
- return html `<option value=${code}>${country.default}</option>`;
111
- })}
112
- </datalist>
113
-
114
134
  <foxy-nucleon
115
135
  infer=""
116
136
  href=${ifDefined((_d = this.countries) !== null && _d !== void 0 ? _d : void 0)}
@@ -1 +1 @@
1
- {"version":3,"file":"InternalTemplateConfigFormFilterValuesControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../../../NucleonElement/NucleonElement';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { InternalEditableControl } from '../../../../internal/InternalEditableControl/InternalEditableControl';\nimport { TemplateResult, html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../../../utils/class-map';\nimport { InternalTemplateConfigFormFilterValuesControlItem } from './InternalTemplateConfigFormFilterValuesControlItem';\n\nexport class InternalTemplateConfigFormFilterValuesControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __newCountry: { attribute: false },\n countries: {},\n regions: {},\n };\n }\n\n countries: string | null = null;\n\n regions: string | null = null;\n\n private __newCountry = '';\n\n renderControl(): TemplateResult {\n const countries = this.__countriesLoader?.data?.values ?? {};\n\n return html`\n <div class=\"space-y-s\" data-testid=\"countries\">\n ${Object.entries(this._value).map(([country, regions]) => {\n let regionsLink: string;\n\n try {\n const url = new URL(this.regions ?? '');\n url.searchParams.set('country_code', country);\n regionsLink = url.toString();\n } catch {\n regionsLink = '';\n }\n\n return html`\n <foxy-internal-template-config-form-filter-values-control-item\n regions=${JSON.stringify(regions === '*' ? [] : regions)}\n infer=\"\"\n code=${country}\n name=${ifDefined(countries[country]?.default)}\n href=${regionsLink}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @update:regions=${(evt: CustomEvent) => {\n const newCountries = { ...this._value };\n const newRegions = (\n evt.currentTarget as InternalTemplateConfigFormFilterValuesControlItem\n ).regions;\n\n newCountries[country] = newRegions.length ? newRegions : '*';\n this._value = newCountries;\n }}\n @delete=${() => {\n const newCountries = { ...this._value };\n delete newCountries[country];\n this._value = newCountries;\n }}\n >\n </foxy-internal-template-config-form-filter-values-control-item>\n `;\n })}\n\n <div\n data-testid=\"new-country\"\n class=${classMap({\n 'h-m flex items-center rounded-s transition-colors': true,\n 'border border-contrast-10 ring-primary-50': true,\n 'focus-within-ring-1 focus-within-border-primary-50': !this.disabled,\n 'flex': !this.readonly,\n 'hidden': this.readonly,\n })}\n >\n <input\n placeholder=${this.t('add_country')}\n class=\"w-full bg-transparent font-medium appearance-none h-m focus-outline-none\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n list=\"list\"\n .value=${this.__newCountry}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => {\n if (evt.key === 'Enter' && this.__newCountry) this.__addCountry();\n }}\n @input=${(evt: InputEvent) => {\n const target = evt.currentTarget as HTMLInputElement;\n this.__newCountry = target.value;\n }}\n />\n\n <button\n aria-label=${this.t('create')}\n class=${classMap({\n 'mr-xs flex-shrink-0': true,\n 'flex items-center justify-center rounded-s transition-colors': true,\n 'text-transparent cursor-default': !this.__newCountry,\n 'bg-contrast-5 text-body cursor-pointer': !!this.__newCountry,\n 'hover-bg-success hover-text-success-contrast': !!this.__newCountry,\n 'focus-outline-none focus-ring-2 ring-inset ring-primary-50': !!this.__newCountry,\n })}\n style=\"width: calc(var(--lumo-size-s) - 2px); height: calc(var(--lumo-size-s) - 2px)\"\n ?disabled=${!this.__newCountry || this.disabled}\n @click=${this.__addCountry}\n >\n <iron-icon icon=\"icons:add\" class=\"icon-inline text-m\"></iron-icon>\n </button>\n </div>\n </div>\n\n <datalist id=\"list\">\n ${Object.entries(countries).map(([code, country]) => {\n return html`<option value=${code}>${country.default}</option>`;\n })}\n </datalist>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.countries ?? void 0)}\n id=\"countriesLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __addCountry() {\n this._value = { ...this._value, [this.__newCountry]: '*' };\n this.__newCountry = '';\n }\n\n private get __countriesLoader() {\n type Loader = NucleonElement<Resource<Rels.Countries>>;\n return this.renderRoot.querySelector<Loader>('#countriesLoader');\n }\n\n protected get _value(): Record<string, '*' | string[]> {\n return (super._value ?? {}) as Record<string, '*' | string[]>;\n }\n\n protected set _value(value: Record<string, '*' | string[]>) {\n super._value = value;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalTemplateConfigFormFilterValuesControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/TemplateConfigForm/internal/InternalTemplateConfigFormFilterValuesControl/InternalTemplateConfigFormFilterValuesControl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,gFAA6E;AAC/G,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,0CAAuC;AAG1D,MAAM,OAAO,6CAA8C,SAAQ,uBAAuB;IAA1F;;QAUE,cAAS,GAAkB,IAAI,CAAC;QAEhC,YAAO,GAAkB,IAAI,CAAC;QAEtB,iBAAY,GAAG,EAAE,CAAC;IAoJ5B,CAAC;IAjKC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAClC,SAAS,EAAE,EAAE;YACb,OAAO,EAAE,EAAE;SACZ,CAAC;IACJ,CAAC;IAQD,aAAa;;QACX,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,mBAAC,IAAI,CAAC,iBAAiB,0CAAE,IAAI,0CAAE,MAAM,mCAAI,EAAE,CAAC,CAAC;QAC1E,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAErE,OAAO,IAAI,CAAA;;UAEL,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,EAAE;;YACvD,IAAI,WAAmB,CAAC;YAExB,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,GAAG,OAAC,IAAI,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC;gBACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;gBAC9C,WAAW,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aAC9B;YAAC,WAAM;gBACN,WAAW,GAAG,EAAE,CAAC;aAClB;YAED,OAAO,IAAI,CAAA;;wBAEG,IAAI,CAAC,SAAS,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;;qBAEjD,OAAO;qBACP,SAAS,OAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,0CAAE,OAAO,CAAC;qBACxD,WAAW;0BACN,IAAI,CAAC,QAAQ;0BACb,IAAI,CAAC,QAAQ;gCACP,CAAC,GAAgB,EAAE,EAAE;gBACrC,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,MAAM,UAAU,GACd,GAAG,CAAC,aACL,CAAC,OAAO,CAAC;gBAEV,YAAY,CAAC,OAAO,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC7D,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YAC7B,CAAC;wBACS,GAAG,EAAE;gBACb,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBACxC,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC7B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YAC7B,CAAC;;;WAGJ,CAAC;QACJ,CAAC,CAAC;UACA,eAAe,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YACpD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,IAAI,CAAA;;;wBAGQ,QAAQ,CAAC;gBACf,mDAAmD,EAAE,IAAI;gBACzD,2CAA2C,EAAE,IAAI;gBACjD,oDAAoD,EAAE,CAAC,IAAI,CAAC,QAAQ;gBACpE,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC;;kBAEA,OAAO,CAAC,MAAM,KAAK,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAA;;sCAEc,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;;;iCAG1B,IAAI,CAAC,YAAY;oCACd,IAAI,CAAC,QAAQ;oCACb,IAAI,CAAC,QAAQ;mCACd,CAAC,GAAkB,EAAE,EAAE;oBAChC,IAAI,GAAG,CAAC,GAAG,KAAK,OAAO,IAAI,IAAI,CAAC,YAAY;wBAAE,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpE,CAAC;iCACQ,CAAC,GAAe,EAAE,EAAE;oBAC3B,MAAM,MAAM,GAAG,GAAG,CAAC,aAAiC,CAAC;oBACrD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;gBACnC,CAAC;;;;qCAIY,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;gCACrB,QAAQ,CAAC;oBACf,qBAAqB,EAAE,IAAI;oBAC3B,8DAA8D,EAAE,IAAI;oBACpE,iCAAiC,EAAE,CAAC,IAAI,CAAC,YAAY;oBACrD,wCAAwC,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;oBAC7D,8CAA8C,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY;oBACnE,4DAA4D,EAC1D,CAAC,CAAC,IAAI,CAAC,YAAY;iBACtB,CAAC;;oCAEU,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ;iCACtC,IAAI,CAAC,YAAY;;;;qBAI7B;gBACH,CAAC,CAAC,IAAI,CAAA;;gCAEQ,QAAQ,CAAC;oBACf,mEAAmE,EAAE,IAAI;oBACzE,gDAAgD,EAAE,IAAI;oBACtD,oCAAoC,EAAE,CAAC,IAAI,CAAC,QAAQ;oBACpD,eAAe,EAAE,IAAI,CAAC,QAAQ;iBAC/B,CAAC;oCACU,IAAI,CAAC,QAAQ;kCACf,CAAC,GAAU,EAAE,EAAE;oBACvB,MAAM,MAAM,GAAG,GAAG,CAAC,aAAkC,CAAC;oBACtD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;oBACjC,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC;gBACpB,CAAC;;6DAEoC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;0BACxD,eAAe,CAAC,GAAG,CACnB,MAAM,CAAC,EAAE,CAAC,IAAI,CAAA,iBAAiB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,WAAW,CACvE;;qBAEJ;;aAER;;;;;eAKE,SAAS,OAAC,IAAI,CAAC,SAAS,mCAAI,KAAK,CAAC,CAAC;;kBAEhC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;KAGvC,CAAC;IACJ,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;QAC3D,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IACzB,CAAC;IAED,IAAY,iBAAiB;QAE3B,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,kBAAkB,CAAC,CAAC;IACnE,CAAC;IAED,IAAc,MAAM;;QAClB,OAAO,OAAC,KAAK,CAAC,MAAM,mCAAI,EAAE,CAAmC,CAAC;IAChE,CAAC;IAED,IAAc,MAAM,CAAC,KAAqC;QACxD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;IACvB,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../../../NucleonElement/NucleonElement';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nimport { InternalEditableControl } from '../../../../internal/InternalEditableControl/InternalEditableControl';\nimport { TemplateResult, html } from 'lit-html';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../../../utils/class-map';\nimport { InternalTemplateConfigFormFilterValuesControlItem } from './InternalTemplateConfigFormFilterValuesControlItem';\n\nexport class InternalTemplateConfigFormFilterValuesControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __newCountry: { attribute: false },\n countries: {},\n regions: {},\n };\n }\n\n countries: string | null = null;\n\n regions: string | null = null;\n\n private __newCountry = '';\n\n renderControl(): TemplateResult {\n const options = Object.values(this.__countriesLoader?.data?.values ?? {});\n const filteredOptions = options.filter(c => !(c.cc2 in this._value));\n\n return html`\n <div class=\"space-y-s\" data-testid=\"countries\">\n ${Object.entries(this._value).map(([country, regions]) => {\n let regionsLink: string;\n\n try {\n const url = new URL(this.regions ?? '');\n url.searchParams.set('country_code', country);\n regionsLink = url.toString();\n } catch {\n regionsLink = '';\n }\n\n return html`\n <foxy-internal-template-config-form-filter-values-control-item\n regions=${JSON.stringify(regions === '*' ? [] : regions)}\n infer=\"\"\n code=${country}\n name=${ifDefined(options.find(o => o.cc2 === country)?.default)}\n href=${regionsLink}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @update:regions=${(evt: CustomEvent) => {\n const newCountries = { ...this._value };\n const newRegions = (\n evt.currentTarget as InternalTemplateConfigFormFilterValuesControlItem\n ).regions;\n\n newCountries[country] = newRegions.length ? newRegions : '*';\n this._value = newCountries;\n }}\n @delete=${() => {\n const newCountries = { ...this._value };\n delete newCountries[country];\n this._value = newCountries;\n }}\n >\n </foxy-internal-template-config-form-filter-values-control-item>\n `;\n })}\n ${filteredOptions.length === 0 && options.length !== 0\n ? ''\n : html`\n <div\n data-testid=\"new-country\"\n class=${classMap({\n 'h-m flex items-center rounded-s transition-colors': true,\n 'border border-contrast-10 ring-primary-50': true,\n 'focus-within-ring-1 focus-within-border-primary-50': !this.disabled,\n 'flex': !this.readonly,\n 'hidden': this.readonly,\n })}\n >\n ${options.length === 0\n ? html`\n <input\n placeholder=${this.t('add_country')}\n class=\"w-full bg-transparent font-medium appearance-none h-m focus-outline-none\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n .value=${this.__newCountry}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => {\n if (evt.key === 'Enter' && this.__newCountry) this.__addCountry();\n }}\n @input=${(evt: InputEvent) => {\n const target = evt.currentTarget as HTMLInputElement;\n this.__newCountry = target.value;\n }}\n />\n\n <button\n aria-label=${this.t('create')}\n class=${classMap({\n 'mr-xs flex-shrink-0': true,\n 'flex items-center justify-center rounded-s transition-colors': true,\n 'text-transparent cursor-default': !this.__newCountry,\n 'bg-contrast-5 text-body cursor-pointer': !!this.__newCountry,\n 'hover-bg-success hover-text-success-contrast': !!this.__newCountry,\n 'focus-outline-none focus-ring-2 ring-inset ring-primary-50':\n !!this.__newCountry,\n })}\n style=\"width: calc(var(--lumo-size-s) - 2px); height: calc(var(--lumo-size-s) - 2px)\"\n ?disabled=${!this.__newCountry || this.disabled}\n @click=${this.__addCountry}\n >\n <iron-icon icon=\"icons:add\" class=\"icon-inline text-m\"></iron-icon>\n </button>\n `\n : html`\n <select\n class=${classMap({\n 'appearance-none bg-transparent h-m text-m px-s flex-1 font-medium': true,\n 'transition-colors rounded-s focus-outline-none': true,\n 'cursor-pointer hover-bg-contrast-5': !this.disabled,\n 'text-disabled': this.disabled,\n })}\n ?disabled=${this.disabled}\n @change=${(evt: Event) => {\n const target = evt.currentTarget as HTMLSelectElement;\n this.__newCountry = target.value;\n this.__addCountry();\n target.value = '';\n }}\n >\n <option value=\"\" disabled selected>${this.t('add_country')}</option>\n ${filteredOptions.map(\n option => html`<option value=${option.cc2}>${option.default}</option>`\n )}\n </select>\n `}\n </div>\n `}\n </div>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this.countries ?? void 0)}\n id=\"countriesLoader\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __addCountry() {\n this._value = { ...this._value, [this.__newCountry]: '*' };\n this.__newCountry = '';\n }\n\n private get __countriesLoader() {\n type Loader = NucleonElement<Resource<Rels.Countries>>;\n return this.renderRoot.querySelector<Loader>('#countriesLoader');\n }\n\n protected get _value(): Record<string, '*' | string[]> {\n return (super._value ?? {}) as Record<string, '*' | string[]>;\n }\n\n protected set _value(value: Record<string, '*' | string[]>) {\n super._value = value;\n }\n}\n"]}