@foxy.io/elements 1.27.0-beta.2 → 1.27.0-beta.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 (157) hide show
  1. package/dist/cdn/foxy-cancellation-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-codes-form.js +1 -1
  5. package/dist/cdn/foxy-coupon-form.js +1 -1
  6. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  7. package/dist/cdn/foxy-customer-portal.js +2 -2
  8. package/dist/cdn/foxy-customer.js +1 -1
  9. package/dist/cdn/foxy-donation.js +1 -1
  10. package/dist/cdn/foxy-downloadable-form.js +1 -1
  11. package/dist/cdn/foxy-email-template-form.js +1 -1
  12. package/dist/cdn/foxy-error-entry-card.js +1 -1
  13. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  14. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  15. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  16. package/dist/cdn/foxy-gift-card-form.js +1 -1
  17. package/dist/cdn/foxy-item-category-form.js +1 -1
  18. package/dist/cdn/foxy-item-form.js +2 -2
  19. package/dist/cdn/foxy-item-option-form.js +1 -1
  20. package/dist/cdn/foxy-items-form.js +1 -1
  21. package/dist/cdn/foxy-native-integration-form.js +1 -1
  22. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  23. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  24. package/dist/cdn/foxy-report-form.js +1 -1
  25. package/dist/cdn/foxy-store-form.js +1 -1
  26. package/dist/cdn/foxy-subscription-form.js +1 -1
  27. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  28. package/dist/cdn/foxy-tax-form.js +1 -1
  29. package/dist/cdn/foxy-template-config-form.js +1 -1
  30. package/dist/cdn/foxy-template-form.js +1 -1
  31. package/dist/cdn/foxy-transaction.js +1 -1
  32. package/dist/cdn/foxy-user-form.js +1 -1
  33. package/dist/cdn/foxy-users-table.js +1 -1
  34. package/dist/cdn/{shared-bbc0cdd6.js → shared-5c0e3fee.js} +1 -1
  35. package/dist/cdn/shared-6e9adc43.js +1 -0
  36. package/dist/cdn/shared-9de9f905.js +1 -0
  37. package/dist/cdn/{shared-40bece2b.js → shared-c0c7225c.js} +1 -1
  38. package/dist/cdn/{shared-352c79a6.js → shared-d7892f27.js} +1 -1
  39. package/dist/cdn/{shared-6e508e5b.js → shared-e4543605.js} +1 -1
  40. package/dist/cdn/translations/coupon-codes-form/en.json +12 -14
  41. package/dist/cdn/translations/coupon-form/en.json +46 -24
  42. package/dist/cdn/translations/generate-codes-form/en.json +34 -14
  43. package/dist/cdn/translations/gift-card-codes-form/en.json +18 -19
  44. package/dist/cdn/translations/gift-card-form/en.json +52 -32
  45. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js +17 -3
  46. package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map +1 -1
  47. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.d.ts +0 -2
  48. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js +1 -8
  49. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js.map +1 -1
  50. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +0 -2
  51. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +1 -8
  52. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
  53. package/dist/elements/private/Checkbox/Checkbox.d.ts +1 -0
  54. package/dist/elements/private/Checkbox/Checkbox.js +1 -0
  55. package/dist/elements/private/Checkbox/Checkbox.js.map +1 -1
  56. package/dist/elements/private/Choice/Choice.d.ts +1 -0
  57. package/dist/elements/private/Choice/Choice.js +1 -0
  58. package/dist/elements/private/Choice/Choice.js.map +1 -1
  59. package/dist/elements/private/Dropdown/Dropdown.d.ts +1 -0
  60. package/dist/elements/private/Dropdown/Dropdown.js +1 -0
  61. package/dist/elements/private/Dropdown/Dropdown.js.map +1 -1
  62. package/dist/elements/private/EditableList/EditableList.d.ts +1 -0
  63. package/dist/elements/private/EditableList/EditableList.js +1 -0
  64. package/dist/elements/private/EditableList/EditableList.js.map +1 -1
  65. package/dist/elements/private/ErrorScreen/ErrorScreen.d.ts +1 -0
  66. package/dist/elements/private/ErrorScreen/ErrorScreen.js +1 -0
  67. package/dist/elements/private/ErrorScreen/ErrorScreen.js.map +1 -1
  68. package/dist/elements/private/FrequencyInput/FrequencyInput.d.ts +1 -0
  69. package/dist/elements/private/FrequencyInput/FrequencyInput.js +1 -0
  70. package/dist/elements/private/FrequencyInput/FrequencyInput.js.map +1 -1
  71. package/dist/elements/private/Group/Group.d.ts +1 -0
  72. package/dist/elements/private/Group/Group.js +1 -0
  73. package/dist/elements/private/Group/Group.js.map +1 -1
  74. package/dist/elements/private/I18N/I18N.d.ts +1 -0
  75. package/dist/elements/private/I18N/I18N.js +1 -0
  76. package/dist/elements/private/I18N/I18N.js.map +1 -1
  77. package/dist/elements/private/List/List.d.ts +1 -0
  78. package/dist/elements/private/List/List.js +1 -0
  79. package/dist/elements/private/List/List.js.map +1 -1
  80. package/dist/elements/private/LoadingScreen/LoadingScreen.d.ts +1 -0
  81. package/dist/elements/private/LoadingScreen/LoadingScreen.js +1 -0
  82. package/dist/elements/private/LoadingScreen/LoadingScreen.js.map +1 -1
  83. package/dist/elements/private/Metadata/Metadata.d.ts +1 -0
  84. package/dist/elements/private/Metadata/Metadata.js +1 -0
  85. package/dist/elements/private/Metadata/Metadata.js.map +1 -1
  86. package/dist/elements/private/MonthdayPicker/MonthdayPicker.d.ts +1 -0
  87. package/dist/elements/private/MonthdayPicker/MonthdayPicker.js +1 -0
  88. package/dist/elements/private/MonthdayPicker/MonthdayPicker.js.map +1 -1
  89. package/dist/elements/private/Page/Page.d.ts +1 -0
  90. package/dist/elements/private/Page/Page.js +1 -0
  91. package/dist/elements/private/Page/Page.js.map +1 -1
  92. package/dist/elements/private/Section/Section.d.ts +1 -0
  93. package/dist/elements/private/Section/Section.js +1 -0
  94. package/dist/elements/private/Section/Section.js.map +1 -1
  95. package/dist/elements/private/Skeleton/Skeleton.d.ts +1 -0
  96. package/dist/elements/private/Skeleton/Skeleton.js +1 -0
  97. package/dist/elements/private/Skeleton/Skeleton.js.map +1 -1
  98. package/dist/elements/private/Switch/Switch.d.ts +1 -0
  99. package/dist/elements/private/Switch/Switch.js +1 -0
  100. package/dist/elements/private/Switch/Switch.js.map +1 -1
  101. package/dist/elements/private/Tabs/Tabs.d.ts +1 -0
  102. package/dist/elements/private/Tabs/Tabs.js +1 -0
  103. package/dist/elements/private/Tabs/Tabs.js.map +1 -1
  104. package/dist/elements/private/Warning/Warning.d.ts +1 -0
  105. package/dist/elements/private/Warning/Warning.js +1 -0
  106. package/dist/elements/private/Warning/Warning.js.map +1 -1
  107. package/dist/elements/private/WeekdayPicker/WeekdayPicker.d.ts +1 -0
  108. package/dist/elements/private/WeekdayPicker/WeekdayPicker.js +1 -0
  109. package/dist/elements/private/WeekdayPicker/WeekdayPicker.js.map +1 -1
  110. package/dist/elements/public/AttributeForm/AttributeForm.d.ts +1 -1
  111. package/dist/elements/public/AttributeForm/AttributeForm.js +1 -1
  112. package/dist/elements/public/AttributeForm/AttributeForm.js.map +1 -1
  113. package/dist/elements/public/CancellationForm/CancellationForm.d.ts +1 -0
  114. package/dist/elements/public/CancellationForm/CancellationForm.js +1 -0
  115. package/dist/elements/public/CancellationForm/CancellationForm.js.map +1 -1
  116. package/dist/elements/public/CouponCodesForm/CouponCodesForm.d.ts +17 -17
  117. package/dist/elements/public/CouponCodesForm/CouponCodesForm.js +42 -196
  118. package/dist/elements/public/CouponCodesForm/CouponCodesForm.js.map +1 -1
  119. package/dist/elements/public/CouponCodesForm/index.d.ts +2 -6
  120. package/dist/elements/public/CouponCodesForm/index.js +2 -8
  121. package/dist/elements/public/CouponCodesForm/index.js.map +1 -1
  122. package/dist/elements/public/CouponCodesForm/types.d.ts +8 -8
  123. package/dist/elements/public/CouponCodesForm/types.js.map +1 -1
  124. package/dist/elements/public/CustomFieldForm/CustomFieldForm.d.ts +1 -1
  125. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js +1 -1
  126. package/dist/elements/public/CustomFieldForm/CustomFieldForm.js.map +1 -1
  127. package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.d.ts +14 -18
  128. package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js +47 -208
  129. package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js.map +1 -1
  130. package/dist/elements/public/GenerateCodesForm/index.d.ts +5 -6
  131. package/dist/elements/public/GenerateCodesForm/index.js +5 -6
  132. package/dist/elements/public/GenerateCodesForm/index.js.map +1 -1
  133. package/dist/elements/public/GenerateCodesForm/types.d.ts +4 -2
  134. package/dist/elements/public/GenerateCodesForm/types.js.map +1 -1
  135. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.d.ts +19 -22
  136. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js +44 -239
  137. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js.map +1 -1
  138. package/dist/elements/public/GiftCardCodesForm/index.d.ts +3 -7
  139. package/dist/elements/public/GiftCardCodesForm/index.js +3 -9
  140. package/dist/elements/public/GiftCardCodesForm/index.js.map +1 -1
  141. package/dist/elements/public/GiftCardCodesForm/types.d.ts +6 -4
  142. package/dist/elements/public/GiftCardCodesForm/types.js.map +1 -1
  143. package/package.json +1 -1
  144. package/dist/cdn/shared-0cf90158.js +0 -1
  145. package/dist/cdn/shared-f53d078e.js +0 -1
  146. package/dist/elements/public/CouponCodesForm/internal/InternalCouponCodesFormListItem.d.ts +0 -14
  147. package/dist/elements/public/CouponCodesForm/internal/InternalCouponCodesFormListItem.js +0 -48
  148. package/dist/elements/public/CouponCodesForm/internal/InternalCouponCodesFormListItem.js.map +0 -1
  149. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.d.ts +0 -19
  150. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js +0 -48
  151. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js.map +0 -1
  152. /package/dist/cdn/{shared-f1afbd7b.js → shared-44d207fb.js} +0 -0
  153. /package/dist/cdn/{shared-497ebb8c.js → shared-597737ce.js} +0 -0
  154. /package/dist/cdn/{shared-4cec4de0.js → shared-65283d36.js} +0 -0
  155. /package/dist/cdn/{shared-5dfec3b7.js → shared-a3c5a30c.js} +0 -0
  156. /package/dist/cdn/{shared-74adbf9e.js → shared-c6707264.js} +0 -0
  157. /package/dist/cdn/{shared-9fd64015.js → shared-febda61c.js} +0 -0
@@ -1,22 +1,17 @@
1
- import { ScopedElementsMixin } from '@open-wc/scoped-elements';
2
- import { html } from 'lit-html';
3
- import { ConfigurableMixin } from "../../../mixins/configurable.js";
4
- import { EditableList } from "../../private/EditableList/EditableList.js";
5
- import { Group } from "../../private/Group/Group.js";
6
- import { NucleonElement } from "../NucleonElement/NucleonElement.js";
7
- import { ThemeableMixin } from "../../../mixins/themeable.js";
8
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
9
- import { classMap } from "../../../utils/class-map.js";
2
+ import { BooleanSelector } from '@foxy.io/sdk/core';
3
+ import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
4
+ import { html } from 'lit-html';
10
5
  const NS = 'coupon-codes-form';
11
- const Base = ConfigurableMixin(ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS))));
6
+ const Base = TranslatableMixin(InternalForm, NS);
12
7
  /**
13
8
  * Form element for importing coupon codes (`fx:coupon_codes`).
14
9
  *
15
- * @slot codes:before
16
- * @slot codes:after
10
+ * @slot coupon-codes:before - **new in v1.27.0**
11
+ * @slot coupon-codes:after - **new in v1.27.0**
17
12
  *
18
- * @slot import:before
19
- * @slot import:after
13
+ * @slot create:before - **new in v1.27.0**
14
+ * @slot create:after - **new in v1.27.0**
20
15
  *
21
16
  * @element foxy-coupon-codes-form
22
17
  * @since 1.15.0
@@ -25,198 +20,49 @@ export class CouponCodesForm extends Base {
25
20
  constructor() {
26
21
  super(...arguments);
27
22
  this.templates = {};
28
- }
29
- static get scopedElements() {
30
- return {
31
- 'vaadin-button': customElements.get('vaadin-button'),
32
- 'iron-icon': customElements.get('iron-icon'),
33
- 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),
34
- 'foxy-spinner': customElements.get('foxy-spinner'),
35
- 'foxy-i18n': customElements.get('foxy-i18n'),
36
- 'x-editable-list': EditableList,
37
- 'x-group': Group,
23
+ this.__couponCodesGetValue = () => {
24
+ var _a, _b;
25
+ return (_b = (_a = this.form.coupon_codes) === null || _a === void 0 ? void 0 : _a.map(value => ({ value }))) !== null && _b !== void 0 ? _b : [];
26
+ };
27
+ this.__couponCodesSetValue = (newValue) => {
28
+ this.edit({
29
+ coupon_codes: newValue
30
+ .map(({ value }) => value.split(' ').map(v => v.trim()))
31
+ .flat()
32
+ .filter((v, i, a) => a.indexOf(v) === i),
33
+ });
38
34
  };
39
35
  }
40
36
  static get v8n() {
41
- return [({ coupon_codes: v }) => (v && v.length > 0) || 'coupon_codes_required'];
37
+ return [({ coupon_codes: v }) => (v && v.length > 0) || 'coupon-codes:v8n_required'];
42
38
  }
43
- render() {
44
- var _a, _b;
45
- const { hiddenSelector, lang, ns } = this;
46
- const isBusy = this.in('busy');
47
- const isFail = this.in('fail');
48
- const isSnapshot = this.in({ idle: 'snapshot' });
49
- const isTemplate = this.in({ idle: 'template' });
50
- const transition = 'transition-opacity duration-500';
51
- const hidden = 'opacity-0 pointer-events-none';
52
- return html `
53
- <div class="relative">
54
- <div
55
- class=${classMap({
56
- 'relative space-y-m': true,
57
- [transition]: true,
58
- [hidden]: isSnapshot,
59
- })}
60
- >
61
- ${hiddenSelector.matches('codes', true) ? '' : this.__renderCodes()}
62
- ${hiddenSelector.matches('import', true) ? '' : this.__renderImport()}
63
- </div>
64
-
65
- <div
66
- class=${classMap({
67
- 'absolute inset-0 flex flex-col items-center justify-center': true,
68
- 'text-center text-m text-secondary leading-m': true,
69
- [transition]: true,
70
- [hidden]: !isSnapshot,
71
- })}
72
- >
73
- <div class="mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success">
74
- <iron-icon icon="icons:done-all" class="m-auto text-success-contrast"></iron-icon>
75
- </div>
76
-
77
- <foxy-i18n class="block" lang=${lang} key="import_codes_done" ns=${ns}></foxy-i18n>
78
- </div>
79
-
80
- <div
81
- data-testid="spinner"
82
- class=${classMap({
83
- 'absolute inset-0 flex': true,
84
- [transition]: true,
85
- [hidden]: !isBusy && !isFail,
86
- })}
87
- >
88
- <foxy-spinner
89
- layout="vertical"
90
- class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l"
91
- state=${isFail ? 'error' : isTemplate ? 'empty' : 'busy'}
92
- lang=${lang}
93
- ns="${ns} ${(_b = (_a = customElements.get('foxy-spinner')) === null || _a === void 0 ? void 0 : _a.defaultNS) !== null && _b !== void 0 ? _b : ''}"
94
- >
95
- </foxy-spinner>
96
- </div>
97
- </div>
98
- `;
39
+ get readonlySelector() {
40
+ const alwaysMatch = [super.readonlySelector.toString()];
41
+ if (this.href)
42
+ alwaysMatch.push('coupon-codes');
43
+ return new BooleanSelector(alwaysMatch.join(' ').trim());
99
44
  }
100
- __renderCodes() {
101
- var _a;
102
- const maxVisible = 16;
103
- const codes = (_a = this.form.coupon_codes) !== null && _a !== void 0 ? _a : [];
104
- const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;
105
- const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];
106
- const parse = (value) => {
107
- return value
108
- .split(/\s/)
109
- .map(code => code.trim())
110
- .filter(code => code.length > 0);
111
- };
112
- const items = visibleCodes.map(code => {
113
- let href;
114
- try {
115
- const url = new URL(this.parent);
116
- url.searchParams.set('code', code);
117
- href = url.toString();
118
- }
119
- catch (_a) {
120
- href = this.parent;
121
- }
122
- return {
123
- value: code,
124
- label: html `
125
- <foxy-internal-coupon-codes-form-list-item
126
- group=${this.group}
127
- href=${href}
128
- lang=${this.lang}
129
- ns=${this.ns}
130
- >
131
- </foxy-internal-coupon-codes-form-list-item>
132
- `,
133
- };
134
- });
135
- return html `
136
- <div data-testid="codes">
137
- ${this.renderTemplateOrSlot('codes:before')}
138
-
139
- <x-group class="mb-xs" frame>
140
- <foxy-i18n slot="header" lang=${this.lang} key="code_plural" ns=${this.ns}></foxy-i18n>
141
-
142
- <x-editable-list
143
- data-testid="codes:list"
144
- lang=${this.lang}
145
- ns=${this.ns}
146
- ?disabled=${!this.in('idle') || this.disabledSelector.matches('codes', true)}
147
- ?readonly=${this.readonlySelector.matches('codes', true)}
148
- .items=${items}
149
- @change=${(evt) => {
150
- const list = evt.currentTarget;
151
- const codes = list.items.reduce((p, c) => [...p, ...parse(c.value)], []);
152
- const newCodes = new Set([...hiddenCodes, ...codes]);
153
- this.edit({ coupon_codes: [...newCodes] });
154
- }}
155
- @paste=${(evt) => {
156
- var _a, _b;
157
- evt.preventDefault();
158
- const text = (_b = (_a = evt.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text')) !== null && _b !== void 0 ? _b : '';
159
- const pastedCodes = parse(text);
160
- this.edit({ coupon_codes: Array.from(new Set([...codes, ...pastedCodes])) });
161
- }}
162
- >
163
- <div
164
- class="ml-m py-s border-b border-contrast-10 font-lumo"
165
- ?hidden=${hiddenCodes.length === 0}
166
- >
167
- <foxy-i18n
168
- options=${JSON.stringify({ count: hiddenCodes.length })}
169
- class="block text-body text-m mb-xs"
170
- lang=${this.lang}
171
- key="hidden_codes_header"
172
- ns=${this.ns}
173
- >
174
- </foxy-i18n>
175
-
176
- <foxy-i18n
177
- class="block text-xs text-tertiary"
178
- lang=${this.lang}
179
- key="hidden_codes_explainer"
180
- ns=${this.ns}
181
- >
182
- </foxy-i18n>
183
- </div>
184
- </x-editable-list>
185
- </x-group>
186
-
187
- <foxy-i18n
188
- class="block text-xs text-tertiary leading-s"
189
- lang=${this.lang}
190
- key="code_import_hint"
191
- ns=${this.ns}
192
- >
193
- </foxy-i18n>
194
-
195
- ${this.renderTemplateOrSlot('codes:after')}
196
- </div>
197
- `;
45
+ get hiddenSelector() {
46
+ const alwaysMatch = ['delete timestamps', super.hiddenSelector.toString()];
47
+ return new BooleanSelector(alwaysMatch.join(' ').trim());
198
48
  }
199
- __renderImport() {
200
- const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });
201
- const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });
202
- const isValid = isTemplateValid || isSnapshotValid;
49
+ renderBody() {
203
50
  return html `
204
- <div>
205
- ${this.renderTemplateOrSlot('import:before')}
51
+ <foxy-internal-editable-list-control
52
+ infer="coupon-codes"
53
+ .getValue=${this.__couponCodesGetValue}
54
+ .setValue=${this.__couponCodesSetValue}
55
+ >
56
+ </foxy-internal-editable-list-control>
206
57
 
207
- <vaadin-button
208
- data-testid="import"
209
- class="w-full mb-xs"
210
- theme="primary success"
211
- ?disabled=${!isValid || !this.in('idle') || this.disabledSelector.matches('import', true)}
212
- @click=${() => this.submit()}
213
- >
214
- <foxy-i18n ns=${this.ns} key="import" lang=${this.lang}></foxy-i18n>
215
- </vaadin-button>
216
-
217
- ${this.renderTemplateOrSlot('import:after')}
218
- </div>
58
+ ${super.renderBody()}
219
59
  `;
220
60
  }
61
+ async _sendPost(edits) {
62
+ const body = JSON.stringify(edits);
63
+ const data = await this._fetch(this.parent, { body, method: 'POST' });
64
+ this.status = { key: 'success' };
65
+ return data;
66
+ }
221
67
  }
222
68
  //# sourceMappingURL=CouponCodesForm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CouponCodesForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/CouponCodesForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { Group } from '../../private/Group/Group';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'coupon-codes-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for importing coupon codes (`fx:coupon_codes`).\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot import:before\n * @slot import:after\n *\n * @element foxy-coupon-codes-form\n * @since 1.15.0\n */\nexport class CouponCodesForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-button': customElements.get('vaadin-button'),\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-editable-list': EditableList,\n 'x-group': Group,\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [({ coupon_codes: v }) => (v && v.length > 0) || 'coupon_codes_required'];\n }\n\n templates: Templates = {};\n\n render(): TemplateResult {\n const { hiddenSelector, lang, ns } = this;\n\n const isBusy = this.in('busy');\n const isFail = this.in('fail');\n const isSnapshot = this.in({ idle: 'snapshot' });\n const isTemplate = this.in({ idle: 'template' });\n\n const transition = 'transition-opacity duration-500';\n const hidden = 'opacity-0 pointer-events-none';\n\n return html`\n <div class=\"relative\">\n <div\n class=${classMap({\n 'relative space-y-m': true,\n [transition]: true,\n [hidden]: isSnapshot,\n })}\n >\n ${hiddenSelector.matches('codes', true) ? '' : this.__renderCodes()}\n ${hiddenSelector.matches('import', true) ? '' : this.__renderImport()}\n </div>\n\n <div\n class=${classMap({\n 'absolute inset-0 flex flex-col items-center justify-center': true,\n 'text-center text-m text-secondary leading-m': true,\n [transition]: true,\n [hidden]: !isSnapshot,\n })}\n >\n <div class=\"mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success\">\n <iron-icon icon=\"icons:done-all\" class=\"m-auto text-success-contrast\"></iron-icon>\n </div>\n\n <foxy-i18n class=\"block\" lang=${lang} key=\"import_codes_done\" ns=${ns}></foxy-i18n>\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'absolute inset-0 flex': true,\n [transition]: true,\n [hidden]: !isBusy && !isFail,\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${isFail ? 'error' : isTemplate ? 'empty' : 'busy'}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private __renderCodes() {\n const maxVisible = 16;\n const codes = this.form.coupon_codes ?? [];\n\n const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;\n const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];\n const parse = (value: string) => {\n return value\n .split(/\\s/)\n .map(code => code.trim())\n .filter(code => code.length > 0);\n };\n\n const items = visibleCodes.map(code => {\n let href: string;\n\n try {\n const url = new URL(this.parent);\n url.searchParams.set('code', code);\n href = url.toString();\n } catch {\n href = this.parent;\n }\n\n return {\n value: code,\n label: html`\n <foxy-internal-coupon-codes-form-list-item\n group=${this.group}\n href=${href}\n lang=${this.lang}\n ns=${this.ns}\n >\n </foxy-internal-coupon-codes-form-list-item>\n `,\n };\n });\n\n return html`\n <div data-testid=\"codes\">\n ${this.renderTemplateOrSlot('codes:before')}\n\n <x-group class=\"mb-xs\" frame>\n <foxy-i18n slot=\"header\" lang=${this.lang} key=\"code_plural\" ns=${this.ns}></foxy-i18n>\n\n <x-editable-list\n data-testid=\"codes:list\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('codes', true)}\n ?readonly=${this.readonlySelector.matches('codes', true)}\n .items=${items}\n @change=${(evt: CustomEvent) => {\n const list = evt.currentTarget as EditableList;\n const codes = list.items.reduce<string[]>((p, c) => [...p, ...parse(c.value)], []);\n const newCodes = new Set([...hiddenCodes, ...codes]);\n this.edit({ coupon_codes: [...newCodes] });\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n const text = evt.clipboardData?.getData('text') ?? '';\n const pastedCodes = parse(text);\n this.edit({ coupon_codes: Array.from(new Set([...codes, ...pastedCodes])) });\n }}\n >\n <div\n class=\"ml-m py-s border-b border-contrast-10 font-lumo\"\n ?hidden=${hiddenCodes.length === 0}\n >\n <foxy-i18n\n options=${JSON.stringify({ count: hiddenCodes.length })}\n class=\"block text-body text-m mb-xs\"\n lang=${this.lang}\n key=\"hidden_codes_header\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary\"\n lang=${this.lang}\n key=\"hidden_codes_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </x-editable-list>\n </x-group>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary leading-s\"\n lang=${this.lang}\n key=\"code_import_hint\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderImport() {\n const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });\n const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });\n const isValid = isTemplateValid || isSnapshotValid;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('import:before')}\n\n <vaadin-button\n data-testid=\"import\"\n class=\"w-full mb-xs\"\n theme=\"primary success\"\n ?disabled=${!isValid || !this.in('idle') || this.disabledSelector.matches('import', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} key=\"import\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('import:after')}\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"CouponCodesForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/CouponCodesForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,mBAAmB,CAAC;AAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAU;IAA/C;;QAKE,cAAS,GAAc,EAAE,CAAC;QAET,0BAAqB,GAAG,GAAG,EAAE;;YAC5C,mBAAO,IAAI,CAAC,IAAI,CAAC,YAAY,0CAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,oCAAK,EAAE,CAAC;QACjE,CAAC,CAAC;QAEe,0BAAqB,GAAG,CAAC,QAAgB,EAAE,EAAE;YAC5D,IAAI,CAAC,IAAI,CAAC;gBACR,YAAY,EAAE,QAAQ;qBACnB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;qBACvD,IAAI,EAAE;qBACN,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC;IAgCJ,CAAC;IAjDC,MAAM,KAAK,GAAG;QACZ,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,2BAA2B,CAAC,CAAC;IACvF,CAAC;IAiBD,IAAI,gBAAgB;QAClB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,IAAI,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAChD,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,cAAc;QAChB,MAAM,WAAW,GAAG,CAAC,mBAAmB,EAAE,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,qBAAqB;oBAC1B,IAAI,CAAC,qBAAqB;;;;QAItC,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;IAES,KAAK,CAAC,SAAS,CAAC,KAAoB;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'coupon-codes-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for importing coupon codes (`fx:coupon_codes`).\n *\n * @slot coupon-codes:before - **new in v1.27.0**\n * @slot coupon-codes:after - **new in v1.27.0**\n *\n * @slot create:before - **new in v1.27.0**\n * @slot create:after - **new in v1.27.0**\n *\n * @element foxy-coupon-codes-form\n * @since 1.15.0\n */\nexport class CouponCodesForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [({ coupon_codes: v }) => (v && v.length > 0) || 'coupon-codes:v8n_required'];\n }\n\n templates: Templates = {};\n\n private readonly __couponCodesGetValue = () => {\n return this.form.coupon_codes?.map(value => ({ value })) ?? [];\n };\n\n private readonly __couponCodesSetValue = (newValue: Item[]) => {\n this.edit({\n coupon_codes: newValue\n .map(({ value }) => value.split(' ').map(v => v.trim()))\n .flat()\n .filter((v, i, a) => a.indexOf(v) === i),\n });\n };\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = [super.readonlySelector.toString()];\n if (this.href) alwaysMatch.push('coupon-codes');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = ['delete timestamps', super.hiddenSelector.toString()];\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-editable-list-control\n infer=\"coupon-codes\"\n .getValue=${this.__couponCodesGetValue}\n .setValue=${this.__couponCodesSetValue}\n >\n </foxy-internal-editable-list-control>\n\n ${super.renderBody()}\n `;\n }\n\n protected async _sendPost(edits: Partial<Data>): Promise<Data> {\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.parent, { body, method: 'POST' });\n this.status = { key: 'success' };\n return data;\n }\n}\n"]}
@@ -1,8 +1,4 @@
1
- import '@vaadin/vaadin-button';
2
- import '@polymer/iron-icons';
3
- import '@polymer/iron-icon';
4
- import '../../internal/InternalSandbox/index';
5
- import '../Spinner/index';
6
- import '../I18n/index';
1
+ import '../../internal/InternalEditableListControl/index';
2
+ import '../../internal/InternalForm/index';
7
3
  import { CouponCodesForm } from './CouponCodesForm';
8
4
  export { CouponCodesForm };
@@ -1,12 +1,6 @@
1
- import '@vaadin/vaadin-button';
2
- import '@polymer/iron-icons';
3
- import '@polymer/iron-icon';
4
- import "../../internal/InternalSandbox/index.js";
5
- import "../Spinner/index.js";
6
- import "../I18n/index.js";
1
+ import "../../internal/InternalEditableListControl/index.js";
2
+ import "../../internal/InternalForm/index.js";
7
3
  import { CouponCodesForm } from "./CouponCodesForm.js";
8
- import { InternalCouponCodesFormListItem } from "./internal/InternalCouponCodesFormListItem.js";
9
4
  customElements.define('foxy-coupon-codes-form', CouponCodesForm);
10
- customElements.define('foxy-internal-coupon-codes-form-list-item', InternalCouponCodesFormListItem);
11
5
  export { CouponCodesForm };
12
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAC/B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,oBAAoB,CAAC;AAC5B,iDAA8C;AAC9C,6BAA0B;AAC1B,0BAAuB;AAEvB,OAAO,EAAE,eAAe,EAAE,6BAA0B;AACpD,OAAO,EAAE,+BAA+B,EAAE,sDAAmD;AAE7F,cAAc,CAAC,MAAM,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AACjE,cAAc,CAAC,MAAM,CAAC,2CAA2C,EAAE,+BAA+B,CAAC,CAAC;AAEpG,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\nimport '@polymer/iron-icons';\nimport '@polymer/iron-icon';\nimport '../../internal/InternalSandbox/index';\nimport '../Spinner/index';\nimport '../I18n/index';\n\nimport { CouponCodesForm } from './CouponCodesForm';\nimport { InternalCouponCodesFormListItem } from './internal/InternalCouponCodesFormListItem';\n\ncustomElements.define('foxy-coupon-codes-form', CouponCodesForm);\ncustomElements.define('foxy-internal-coupon-codes-form-list-item', InternalCouponCodesFormListItem);\n\nexport { CouponCodesForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/index.ts"],"names":[],"mappings":"AAAA,6DAA0D;AAC1D,8CAA2C;AAE3C,OAAO,EAAE,eAAe,EAAE,6BAA0B;AAEpD,cAAc,CAAC,MAAM,CAAC,wBAAwB,EAAE,eAAe,CAAC,CAAC;AAEjE,OAAO,EAAE,eAAe,EAAE,CAAC","sourcesContent":["import '../../internal/InternalEditableListControl/index';\nimport '../../internal/InternalForm/index';\n\nimport { CouponCodesForm } from './CouponCodesForm';\n\ncustomElements.define('foxy-coupon-codes-form', CouponCodesForm);\n\nexport { CouponCodesForm };\n"]}
@@ -1,7 +1,7 @@
1
- import { CouponCodesForm } from './CouponCodesForm';
2
- import { Rels } from '@foxy.io/sdk/backend';
3
- import { Renderer } from '../../../mixins/configurable';
4
- import { Resource } from '@foxy.io/sdk/core';
1
+ import type { CouponCodesForm } from './CouponCodesForm';
2
+ import type { Renderer } from '../../../mixins/configurable';
3
+ import type { Resource } from '@foxy.io/sdk/core';
4
+ import type { Rels } from '@foxy.io/sdk/backend';
5
5
  export declare type Data = Resource<Rels.CouponCodesImport> & {
6
6
  _links: {
7
7
  self: {
@@ -10,8 +10,8 @@ export declare type Data = Resource<Rels.CouponCodesImport> & {
10
10
  };
11
11
  };
12
12
  export declare type Templates = {
13
- 'codes:before'?: Renderer<CouponCodesForm>;
14
- 'codes:after'?: Renderer<CouponCodesForm>;
15
- 'import:before'?: Renderer<CouponCodesForm>;
16
- 'import:after'?: Renderer<CouponCodesForm>;
13
+ 'coupon-codes:before'?: Renderer<CouponCodesForm>;
14
+ 'coupon-codes:after'?: Renderer<CouponCodesForm>;
15
+ 'create:before'?: Renderer<CouponCodesForm>;
16
+ 'create:after'?: Renderer<CouponCodesForm>;
17
17
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import { CouponCodesForm } from './CouponCodesForm';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Renderer } from '../../../mixins/configurable';\nimport { Resource } from '@foxy.io/sdk/core';\n\nexport type Data = Resource<Rels.CouponCodesImport> & { _links: { self: { href: string } } };\n\nexport type Templates = {\n 'codes:before'?: Renderer<CouponCodesForm>;\n 'codes:after'?: Renderer<CouponCodesForm>;\n 'import:before'?: Renderer<CouponCodesForm>;\n 'import:after'?: Renderer<CouponCodesForm>;\n};\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodesForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { CouponCodesForm } from './CouponCodesForm';\nimport type { Renderer } from '../../../mixins/configurable';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport type Data = Resource<Rels.CouponCodesImport> & { _links: { self: { href: string } } };\n\nexport type Templates = {\n 'coupon-codes:before'?: Renderer<CouponCodesForm>;\n 'coupon-codes:after'?: Renderer<CouponCodesForm>;\n 'create:before'?: Renderer<CouponCodesForm>;\n 'create:after'?: Renderer<CouponCodesForm>;\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import type { Data, Templates } from './types';
2
2
  import type { TemplateResult } from 'lit-html';
3
3
  import type { NucleonV8N } from '../NucleonElement/types';
4
- import { InternalForm } from '../../internal/InternalForm';
4
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
5
5
  declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
6
6
  defaultNS: string;
7
7
  };
@@ -1,5 +1,5 @@
1
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
- import { InternalForm } from "../../internal/InternalForm.js";
2
+ import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
3
3
  import { html } from 'lit-html';
4
4
  const NS = 'custom-field-form';
5
5
  const Base = TranslatableMixin(InternalForm, NS);
@@ -1 +1 @@
1
- {"version":3,"file":"CustomFieldForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldForm/CustomFieldForm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,uCAAoC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,mBAAmB,CAAC;AAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAU;IAA/C;;QAUE,cAAS,GAAc,EAAE,CAAC;QAET,yBAAoB,GAAG,GAAG,EAAE;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC;QAEe,yBAAoB,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEe,wBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAiBvF,CAAC;IApCC,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,oBAAoB;YAC7D,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,oBAAoB;YAC/D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,mBAAmB;YAC3D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,mBAAmB;SAC9D,CAAC;IACJ,CAAC;IAcD,UAAU;QACR,OAAO,IAAI,CAAA;;;;;oBAKK,IAAI,CAAC,oBAAoB;oBACzB,IAAI,CAAC,oBAAoB;mBAC1B,IAAI,CAAC,mBAAmB;;;;QAInC,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'custom-field-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing custom fields.\n *\n * @slot name:before - **new in v1.4.0**\n * @slot name:after - **new in v1.4.0**\n *\n * @slot value:before - **new in v1.4.0**\n * @slot value:after - **new in v1.4.0**\n *\n * @slot visibility:before - **new in v1.4.0**\n * @slot visibility:after - **new in v1.4.0**\n *\n * @slot timestamps:before - **new in v1.4.0**\n * @slot timestamps:after - **new in v1.4.0**\n *\n * @slot create:before - **new in v1.4.0**\n * @slot create:after - **new in v1.4.0**\n *\n * @slot delete:before - **new in v1.4.0**\n * @slot delete:after - **new in v1.4.0**\n *\n * @element foxy-custom-field-form\n * @since 1.2.0\n */\nexport class CustomFieldForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ value: v }) => (v && v.length > 0) || 'value:v8n_required',\n ({ value: v }) => !v || v.length <= 700 || 'value:v8n_too_long',\n ({ name: v }) => (v && v.length > 0) || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 100 || 'name:v8n_too_long',\n ];\n }\n\n templates: Templates = {};\n\n private readonly __visibilityGetValue = () => {\n return this.form.is_hidden ? ['hidden'] : [];\n };\n\n private readonly __visibilitySetValue = (newValue: string[]) => {\n this.edit({ is_hidden: newValue.includes('hidden') });\n };\n\n private readonly __visibilityOptions = [{ label: 'option_hidden', value: 'hidden' }];\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-source-control infer=\"name\"></foxy-internal-source-control>\n <foxy-internal-source-control infer=\"value\"></foxy-internal-source-control>\n <foxy-internal-checkbox-group-control\n infer=\"visibility\"\n .getValue=${this.__visibilityGetValue}\n .setValue=${this.__visibilitySetValue}\n .options=${this.__visibilityOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"CustomFieldForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CustomFieldForm/CustomFieldForm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,mBAAmB,CAAC;AAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAU;IAA/C;;QAUE,cAAS,GAAc,EAAE,CAAC;QAET,yBAAoB,GAAG,GAAG,EAAE;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,CAAC,CAAC;QAEe,yBAAoB,GAAG,CAAC,QAAkB,EAAE,EAAE;YAC7D,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC;QAEe,wBAAmB,GAAG,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAiBvF,CAAC;IApCC,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,oBAAoB;YAC7D,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,oBAAoB;YAC/D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,mBAAmB;YAC3D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,mBAAmB;SAC9D,CAAC;IACJ,CAAC;IAcD,UAAU;QACR,OAAO,IAAI,CAAA;;;;;oBAKK,IAAI,CAAC,oBAAoB;oBACzB,IAAI,CAAC,oBAAoB;mBAC1B,IAAI,CAAC,mBAAmB;;;;QAInC,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, Templates } from './types';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'custom-field-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing custom fields.\n *\n * @slot name:before - **new in v1.4.0**\n * @slot name:after - **new in v1.4.0**\n *\n * @slot value:before - **new in v1.4.0**\n * @slot value:after - **new in v1.4.0**\n *\n * @slot visibility:before - **new in v1.4.0**\n * @slot visibility:after - **new in v1.4.0**\n *\n * @slot timestamps:before - **new in v1.4.0**\n * @slot timestamps:after - **new in v1.4.0**\n *\n * @slot create:before - **new in v1.4.0**\n * @slot create:after - **new in v1.4.0**\n *\n * @slot delete:before - **new in v1.4.0**\n * @slot delete:after - **new in v1.4.0**\n *\n * @element foxy-custom-field-form\n * @since 1.2.0\n */\nexport class CustomFieldForm extends Base<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ value: v }) => (v && v.length > 0) || 'value:v8n_required',\n ({ value: v }) => !v || v.length <= 700 || 'value:v8n_too_long',\n ({ name: v }) => (v && v.length > 0) || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 100 || 'name:v8n_too_long',\n ];\n }\n\n templates: Templates = {};\n\n private readonly __visibilityGetValue = () => {\n return this.form.is_hidden ? ['hidden'] : [];\n };\n\n private readonly __visibilitySetValue = (newValue: string[]) => {\n this.edit({ is_hidden: newValue.includes('hidden') });\n };\n\n private readonly __visibilityOptions = [{ label: 'option_hidden', value: 'hidden' }];\n\n renderBody(): TemplateResult {\n return html`\n <foxy-internal-source-control infer=\"name\"></foxy-internal-source-control>\n <foxy-internal-source-control infer=\"value\"></foxy-internal-source-control>\n <foxy-internal-checkbox-group-control\n infer=\"visibility\"\n .getValue=${this.__visibilityGetValue}\n .setValue=${this.__visibilitySetValue}\n .options=${this.__visibilityOptions}\n >\n </foxy-internal-checkbox-group-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
@@ -1,12 +1,11 @@
1
- import { Data, Templates } from './types';
2
- import { TemplateResult } from 'lit-html';
3
- import { NucleonElement } from '../NucleonElement/NucleonElement';
4
- import { NucleonV8N } from '../NucleonElement/types';
5
- declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
1
+ import type { Data, Templates } from './types';
2
+ import type { TemplateResult } from 'lit-html';
3
+ import type { NucleonV8N } from '../NucleonElement/types';
4
+ import { BooleanSelector } from '@foxy.io/sdk/core';
5
+ import { InternalForm } from '../../internal/InternalForm/InternalForm';
6
+ declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
6
7
  defaultNS: string;
7
- } & {
8
- styles: import("lit-element").CSSResultArray;
9
- } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost>;
8
+ };
10
9
  /**
11
10
  * Form element for generating codes for coupons or gift cards (`fx:generate_codes`).
12
11
  *
@@ -22,8 +21,8 @@ declare const Base: typeof NucleonElement & import("lit-element").Constructor<im
22
21
  * @slot current-balance:before
23
22
  * @slot current-balance:after
24
23
  *
25
- * @slot generate:before
26
- * @slot generate:after
24
+ * @slot create:before
25
+ * @slot create:after
27
26
  *
28
27
  * @element foxy-generate-codes-form
29
28
  * @since 1.15.0
@@ -31,13 +30,10 @@ declare const Base: typeof NucleonElement & import("lit-element").Constructor<im
31
30
  export declare class GenerateCodesForm extends Base<Data> {
32
31
  static get v8n(): NucleonV8N<Data>;
33
32
  templates: Templates;
34
- render(): TemplateResult;
35
- private __getErrorMessage;
36
- private __getValidator;
37
- private __renderLength;
38
- private __renderNumberOfCodes;
39
- private __renderCurrentBalance;
40
- private __renderPrefix;
41
- private __renderGenerate;
33
+ private readonly __exampleGetValue;
34
+ get readonlySelector(): BooleanSelector;
35
+ get hiddenSelector(): BooleanSelector;
36
+ renderBody(): TemplateResult;
37
+ protected _sendPost(edits: Partial<Data>): Promise<Data>;
42
38
  }
43
39
  export {};