@foxy.io/elements 1.15.0-beta.3 → 1.15.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 (149) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  5. package/dist/cdn/foxy-attribute-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-form.js +1 -1
  7. package/dist/cdn/foxy-cancellation-form.js +1 -1
  8. package/dist/cdn/foxy-collection-page.js +1 -1
  9. package/dist/cdn/foxy-collection-pages.js +1 -1
  10. package/dist/cdn/foxy-coupon-card.js +1 -1
  11. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  12. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  13. package/dist/cdn/foxy-coupon-form.js +1 -1
  14. package/dist/cdn/foxy-custom-field-card.js +1 -1
  15. package/dist/cdn/foxy-custom-field-form.js +1 -1
  16. package/dist/cdn/foxy-customer-card.js +1 -1
  17. package/dist/cdn/foxy-customer-form.js +1 -1
  18. package/dist/cdn/foxy-customer-portal-settings.js +1 -169
  19. package/dist/cdn/foxy-customer-portal.js +2 -2
  20. package/dist/cdn/foxy-customer.js +1 -1
  21. package/dist/cdn/foxy-customers-table.js +1 -1
  22. package/dist/cdn/foxy-discount-card.js +1 -1
  23. package/dist/cdn/foxy-donation.js +1 -1
  24. package/dist/cdn/foxy-email-template-form.js +1 -1
  25. package/dist/cdn/foxy-error-entry-card.js +1 -1
  26. package/dist/cdn/foxy-form-dialog.js +1 -1
  27. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  28. package/dist/cdn/foxy-gift-card-card.js +1 -0
  29. package/dist/cdn/foxy-gift-card-code-form.js +1 -0
  30. package/dist/cdn/foxy-gift-card-codes-form.js +1 -0
  31. package/dist/cdn/foxy-gift-card-form.js +1 -0
  32. package/dist/cdn/foxy-i18n.js +1 -1
  33. package/dist/cdn/foxy-items-form.js +1 -1
  34. package/dist/cdn/foxy-pagination.js +1 -1
  35. package/dist/cdn/foxy-payment-card.js +1 -1
  36. package/dist/cdn/foxy-payment-method-card.js +1 -1
  37. package/dist/cdn/foxy-query-builder.js +1 -1
  38. package/dist/cdn/foxy-sign-in-form.js +1 -1
  39. package/dist/cdn/foxy-spinner.js +1 -1
  40. package/dist/cdn/foxy-subscription-card.js +1 -1
  41. package/dist/cdn/foxy-subscription-form.js +3 -3
  42. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  43. package/dist/cdn/foxy-table.js +1 -1
  44. package/dist/cdn/foxy-tax-card.js +1 -1
  45. package/dist/cdn/foxy-tax-form.js +1 -1
  46. package/dist/cdn/foxy-template-config-form.js +1 -1
  47. package/dist/cdn/foxy-template-form.js +1 -1
  48. package/dist/cdn/foxy-transaction-card.js +1 -1
  49. package/dist/cdn/foxy-transactions-table.js +1 -1
  50. package/dist/cdn/foxy-user-form.js +1 -1
  51. package/dist/cdn/foxy-users-table.js +1 -1
  52. package/dist/cdn/{shared-b2330475.js → shared-00db6da0.js} +1 -1
  53. package/dist/cdn/{shared-9af7b5f0.js → shared-02945b27.js} +1 -1
  54. package/dist/cdn/{shared-b03b6d72.js → shared-07049bfe.js} +1 -1
  55. package/dist/cdn/{shared-ccea5a33.js → shared-08c63028.js} +1 -1
  56. package/dist/cdn/shared-0e4d19e2.js +1 -0
  57. package/dist/cdn/{shared-a4e6ecb0.js → shared-1497778c.js} +1 -1
  58. package/dist/cdn/{shared-f875a4f8.js → shared-1f307a03.js} +1 -1
  59. package/dist/cdn/{shared-4038cb18.js → shared-203923ef.js} +1 -1
  60. package/dist/cdn/shared-301a57fe.js +1 -0
  61. package/dist/cdn/{shared-a11160e7.js → shared-347cb5d5.js} +1 -1
  62. package/dist/cdn/{shared-0bda8ecb.js → shared-3b8cfbb1.js} +1 -1
  63. package/dist/cdn/{shared-51b5e223.js → shared-40b5267a.js} +1 -1
  64. package/dist/cdn/{shared-ff149b55.js → shared-47223541.js} +1 -1
  65. package/dist/cdn/{shared-8f7a66c4.js → shared-4dc6d228.js} +1 -1
  66. package/dist/cdn/{shared-a8d96c23.js → shared-680cb883.js} +1 -1
  67. package/dist/cdn/{shared-c6a4b2d6.js → shared-80ce089c.js} +1 -1
  68. package/dist/cdn/shared-8a5ec3cf.js +1 -0
  69. package/dist/cdn/shared-d4d7391d.js +302 -0
  70. package/dist/cdn/{shared-0fcdd1c4.js → shared-e563e7b0.js} +1 -1
  71. package/dist/cdn/{shared-cd3c902e.js → shared-e68b9c83.js} +1 -1
  72. package/dist/cdn/{shared-d9a260f0.js → shared-f7805cfe.js} +1 -1
  73. package/dist/cdn/translations/shared/en.json +178 -0
  74. package/dist/elements/private/FrequencyInput/FrequencyInput.d.ts +2 -1
  75. package/dist/elements/private/FrequencyInput/FrequencyInput.js +3 -1
  76. package/dist/elements/private/FrequencyInput/FrequencyInput.js.map +1 -1
  77. package/dist/elements/public/CollectionPage/CollectionPage.js +3 -1
  78. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  79. package/dist/elements/public/CollectionPage/types.d.ts +2 -0
  80. package/dist/elements/public/CollectionPage/types.js.map +1 -1
  81. package/dist/elements/public/CouponCard/CouponCard.js +2 -2
  82. package/dist/elements/public/CouponCard/CouponCard.js.map +1 -1
  83. package/dist/elements/public/GiftCardCard/GiftCardCard.d.ts +26 -0
  84. package/dist/elements/public/GiftCardCard/GiftCardCard.js +118 -0
  85. package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -0
  86. package/dist/elements/public/GiftCardCard/index.d.ts +5 -0
  87. package/dist/elements/public/GiftCardCard/index.js +7 -0
  88. package/dist/elements/public/GiftCardCard/index.js.map +1 -0
  89. package/dist/elements/public/GiftCardCard/types.d.ts +36 -0
  90. package/dist/elements/public/GiftCardCard/types.js +2 -0
  91. package/dist/elements/public/GiftCardCard/types.js.map +1 -0
  92. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +55 -0
  93. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +292 -0
  94. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -0
  95. package/dist/elements/public/GiftCardCodeForm/index.d.ts +10 -0
  96. package/dist/elements/public/GiftCardCodeForm/index.js +12 -0
  97. package/dist/elements/public/GiftCardCodeForm/index.js.map +1 -0
  98. package/dist/elements/public/GiftCardCodeForm/types.d.ts +40 -0
  99. package/dist/elements/public/GiftCardCodeForm/types.js +2 -0
  100. package/dist/elements/public/GiftCardCodeForm/types.js.map +1 -0
  101. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.d.ts +29 -0
  102. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js +209 -0
  103. package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js.map +1 -0
  104. package/dist/elements/public/GiftCardCodesForm/index.d.ts +8 -0
  105. package/dist/elements/public/GiftCardCodesForm/index.js +12 -0
  106. package/dist/elements/public/GiftCardCodesForm/index.js.map +1 -0
  107. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.d.ts +19 -0
  108. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js +48 -0
  109. package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js.map +1 -0
  110. package/dist/elements/public/GiftCardCodesForm/types.d.ts +16 -0
  111. package/dist/elements/public/GiftCardCodesForm/types.js +2 -0
  112. package/dist/elements/public/GiftCardCodesForm/types.js.map +1 -0
  113. package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +66 -0
  114. package/dist/elements/public/GiftCardForm/GiftCardForm.js +650 -0
  115. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -0
  116. package/dist/elements/public/GiftCardForm/currencies.d.ts +1 -0
  117. package/dist/elements/public/GiftCardForm/currencies.js +173 -0
  118. package/dist/elements/public/GiftCardForm/currencies.js.map +1 -0
  119. package/dist/elements/public/GiftCardForm/index.d.ts +18 -0
  120. package/dist/elements/public/GiftCardForm/index.js +20 -0
  121. package/dist/elements/public/GiftCardForm/index.js.map +1 -0
  122. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.d.ts +19 -0
  123. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js +98 -0
  124. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js.map +1 -0
  125. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.d.ts +33 -0
  126. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js +52 -0
  127. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js.map +1 -0
  128. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.d.ts +26 -0
  129. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js +53 -0
  130. package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js.map +1 -0
  131. package/dist/elements/public/GiftCardForm/types.d.ts +52 -0
  132. package/dist/elements/public/GiftCardForm/types.js +2 -0
  133. package/dist/elements/public/GiftCardForm/types.js.map +1 -0
  134. package/dist/elements/public/index.d.ts +4 -0
  135. package/dist/elements/public/index.defined.d.ts +4 -0
  136. package/dist/elements/public/index.defined.js +4 -0
  137. package/dist/elements/public/index.defined.js.map +1 -1
  138. package/dist/elements/public/index.js +4 -0
  139. package/dist/elements/public/index.js.map +1 -1
  140. package/dist/mixins/themeable.js +12 -0
  141. package/dist/mixins/themeable.js.map +1 -1
  142. package/dist/utils/parse-duration.d.ts +1 -1
  143. package/dist/utils/parse-duration.js +7 -3
  144. package/dist/utils/parse-duration.js.map +1 -1
  145. package/package.json +1 -1
  146. package/dist/cdn/shared-6b7602c7.js +0 -1
  147. package/dist/cdn/shared-710ed658.js +0 -134
  148. package/dist/cdn/shared-800a5471.js +0 -1
  149. package/dist/cdn/shared-87ca7818.js +0 -1
@@ -0,0 +1,40 @@
1
+ import { Renderer } from '../../../mixins/configurable';
2
+ import { GiftCardCodeForm } from './GiftCardCodeForm';
3
+ export declare type Data = {
4
+ _links: {
5
+ 'curies': [{
6
+ href: string;
7
+ }];
8
+ 'self': {
9
+ href: string;
10
+ };
11
+ 'fx:store': {
12
+ href: string;
13
+ };
14
+ 'fx:gift_card': {
15
+ href: string;
16
+ };
17
+ 'fx:gift_card_code_logs': {
18
+ href: string;
19
+ };
20
+ };
21
+ code: string;
22
+ current_balance: number;
23
+ end_date: string | null;
24
+ date_created: string | null;
25
+ date_modified: string | null;
26
+ };
27
+ export declare type Templates = {
28
+ 'code:before'?: Renderer<GiftCardCodeForm>;
29
+ 'code:after'?: Renderer<GiftCardCodeForm>;
30
+ 'current-balance:before'?: Renderer<GiftCardCodeForm>;
31
+ 'current-balance:after'?: Renderer<GiftCardCodeForm>;
32
+ 'end-date:before'?: Renderer<GiftCardCodeForm>;
33
+ 'end-date:after'?: Renderer<GiftCardCodeForm>;
34
+ 'timestamps:before'?: Renderer<GiftCardCodeForm>;
35
+ 'timestamps:after'?: Renderer<GiftCardCodeForm>;
36
+ 'delete:before'?: Renderer<GiftCardCodeForm>;
37
+ 'delete:after'?: Renderer<GiftCardCodeForm>;
38
+ 'create:before'?: Renderer<GiftCardCodeForm>;
39
+ 'create:after'?: Renderer<GiftCardCodeForm>;
40
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Renderer } from '../../../mixins/configurable';\nimport { GiftCardCodeForm } from './GiftCardCodeForm';\n\nexport type Data = {\n _links: {\n 'curies': [{ href: string }];\n 'self': { href: string };\n 'fx:store': { href: string };\n 'fx:gift_card': { href: string };\n 'fx:gift_card_code_logs': { href: string };\n };\n code: string;\n current_balance: number;\n end_date: string | null;\n date_created: string | null;\n date_modified: string | null;\n};\n\nexport type Templates = {\n 'code:before'?: Renderer<GiftCardCodeForm>;\n 'code:after'?: Renderer<GiftCardCodeForm>;\n 'current-balance:before'?: Renderer<GiftCardCodeForm>;\n 'current-balance:after'?: Renderer<GiftCardCodeForm>;\n 'end-date:before'?: Renderer<GiftCardCodeForm>;\n 'end-date:after'?: Renderer<GiftCardCodeForm>;\n 'timestamps:before'?: Renderer<GiftCardCodeForm>;\n 'timestamps:after'?: Renderer<GiftCardCodeForm>;\n 'delete:before'?: Renderer<GiftCardCodeForm>;\n 'delete:after'?: Renderer<GiftCardCodeForm>;\n 'create:before'?: Renderer<GiftCardCodeForm>;\n 'create:after'?: Renderer<GiftCardCodeForm>;\n};\n"]}
@@ -0,0 +1,29 @@
1
+ import { Data, Templates } from './types';
2
+ import { ScopedElementsMap } from '@open-wc/scoped-elements';
3
+ import { TemplateResult } from 'lit-html';
4
+ import { NucleonElement } from '../NucleonElement/NucleonElement';
5
+ declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
6
+ defaultNS: string;
7
+ } & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost> & {
8
+ styles: import("lit-element").CSSResultArray;
9
+ } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost>;
10
+ /**
11
+ * Form element for importing gift card codes (`fx:gift_card_codes`).
12
+ *
13
+ * @slot codes:before
14
+ * @slot codes:after
15
+ *
16
+ * @slot import:before
17
+ * @slot import:after
18
+ *
19
+ * @element foxy-gift-card-codes-form
20
+ * @since 1.15.0
21
+ */
22
+ export declare class GiftCardCodesForm extends Base<Data> {
23
+ static get scopedElements(): ScopedElementsMap;
24
+ templates: Templates;
25
+ render(): TemplateResult;
26
+ private __renderCodes;
27
+ private __renderImport;
28
+ }
29
+ export {};
@@ -0,0 +1,209 @@
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
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
9
+ import { classMap } from "../../../utils/class-map.js";
10
+ const NS = 'gift-card-codes-form';
11
+ const Base = ConfigurableMixin(ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS))));
12
+ /**
13
+ * Form element for importing gift card codes (`fx:gift_card_codes`).
14
+ *
15
+ * @slot codes:before
16
+ * @slot codes:after
17
+ *
18
+ * @slot import:before
19
+ * @slot import:after
20
+ *
21
+ * @element foxy-gift-card-codes-form
22
+ * @since 1.15.0
23
+ */
24
+ export class GiftCardCodesForm extends Base {
25
+ constructor() {
26
+ super(...arguments);
27
+ 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,
38
+ };
39
+ }
40
+ render() {
41
+ var _a, _b;
42
+ const { hiddenSelector, lang, ns } = this;
43
+ const isBusy = this.in('busy');
44
+ const isFail = this.in('fail');
45
+ const isSnapshot = this.in({ idle: 'snapshot' });
46
+ const isTemplate = this.in({ idle: 'template' });
47
+ const transition = 'transition-opacity duration-500';
48
+ const hidden = 'opacity-0 pointer-events-none';
49
+ return html `
50
+ <div class="relative">
51
+ <div
52
+ class=${classMap({
53
+ 'relative space-y-m': true,
54
+ [transition]: true,
55
+ [hidden]: isSnapshot,
56
+ })}
57
+ >
58
+ ${hiddenSelector.matches('codes', true) ? '' : this.__renderCodes()}
59
+ ${hiddenSelector.matches('import', true) ? '' : this.__renderImport()}
60
+ </div>
61
+
62
+ <div
63
+ class=${classMap({
64
+ 'absolute inset-0 flex flex-col items-center justify-center': true,
65
+ 'text-center text-m text-secondary leading-m': true,
66
+ [transition]: true,
67
+ [hidden]: !isSnapshot,
68
+ })}
69
+ >
70
+ <div class="mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success">
71
+ <iron-icon icon="icons:done-all" class="m-auto text-success-contrast"></iron-icon>
72
+ </div>
73
+
74
+ <foxy-i18n class="block" lang=${lang} key="import_codes_done" ns=${ns}></foxy-i18n>
75
+ </div>
76
+
77
+ <div
78
+ class=${classMap({
79
+ 'absolute inset-0 flex': true,
80
+ [transition]: true,
81
+ [hidden]: !isBusy && !isFail,
82
+ })}
83
+ >
84
+ <foxy-spinner
85
+ layout="vertical"
86
+ class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l"
87
+ state=${isFail ? 'error' : isTemplate ? 'empty' : 'busy'}
88
+ lang=${lang}
89
+ ns="${ns} ${(_b = (_a = customElements.get('foxy-spinner')) === null || _a === void 0 ? void 0 : _a.defaultNS) !== null && _b !== void 0 ? _b : ''}"
90
+ >
91
+ </foxy-spinner>
92
+ </div>
93
+ </div>
94
+ `;
95
+ }
96
+ __renderCodes() {
97
+ var _a;
98
+ const maxVisible = 16;
99
+ const codes = (_a = this.form.gift_card_codes) !== null && _a !== void 0 ? _a : [];
100
+ const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;
101
+ const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];
102
+ const items = visibleCodes.map(code => {
103
+ let href;
104
+ try {
105
+ const url = new URL(this.parent);
106
+ url.searchParams.set('code', code);
107
+ href = url.toString();
108
+ }
109
+ catch (_a) {
110
+ href = this.parent;
111
+ }
112
+ return {
113
+ value: code,
114
+ label: html `
115
+ <foxy-internal-gift-card-codes-form-list-item
116
+ group=${this.group}
117
+ href=${href}
118
+ lang=${this.lang}
119
+ ns=${this.ns}
120
+ >
121
+ </foxy-internal-gift-card-codes-form-list-item>
122
+ `,
123
+ };
124
+ });
125
+ return html `
126
+ <div>
127
+ ${this.renderTemplateOrSlot('codes:before')}
128
+
129
+ <x-group class="mb-xs" frame>
130
+ <foxy-i18n slot="header" lang=${this.lang} key="code_plural" ns=${this.ns}></foxy-i18n>
131
+
132
+ <x-editable-list
133
+ lang=${this.lang}
134
+ ns=${this.ns}
135
+ ?disabled=${!this.in('idle') || this.disabledSelector.matches('codes', true)}
136
+ ?readonly=${this.readonlySelector.matches('codes', true)}
137
+ .items=${items}
138
+ @change=${(evt) => {
139
+ const list = evt.currentTarget;
140
+ const newCodes = new Set([...hiddenCodes, ...list.items.map(item => item.value)]);
141
+ this.edit({ gift_card_codes: [...newCodes] });
142
+ }}
143
+ @paste=${(evt) => {
144
+ var _a, _b;
145
+ evt.preventDefault();
146
+ const text = (_b = (_a = evt.clipboardData) === null || _a === void 0 ? void 0 : _a.getData('text')) !== null && _b !== void 0 ? _b : '';
147
+ const pastedCodes = text
148
+ .split(' ')
149
+ .map(code => code.trim())
150
+ .filter(code => code.length > 0);
151
+ this.edit({ gift_card_codes: Array.from(new Set([...codes, ...pastedCodes])) });
152
+ }}
153
+ >
154
+ <div
155
+ class="ml-m py-s border-b border-contrast-10 font-lumo"
156
+ ?hidden=${hiddenCodes.length === 0}
157
+ >
158
+ <foxy-i18n
159
+ options=${JSON.stringify({ count: hiddenCodes.length })}
160
+ class="block text-body text-m mb-xs"
161
+ lang=${this.lang}
162
+ key="hidden_codes_header"
163
+ ns=${this.ns}
164
+ >
165
+ </foxy-i18n>
166
+
167
+ <foxy-i18n
168
+ class="block text-xs text-tertiary"
169
+ lang=${this.lang}
170
+ key="hidden_codes_explainer"
171
+ ns=${this.ns}
172
+ >
173
+ </foxy-i18n>
174
+ </div>
175
+ </x-editable-list>
176
+ </x-group>
177
+
178
+ <foxy-i18n
179
+ class="block text-xs text-tertiary leading-s"
180
+ lang=${this.lang}
181
+ key="code_import_hint"
182
+ ns=${this.ns}
183
+ >
184
+ </foxy-i18n>
185
+
186
+ ${this.renderTemplateOrSlot('codes:after')}
187
+ </div>
188
+ `;
189
+ }
190
+ __renderImport() {
191
+ return html `
192
+ <div>
193
+ ${this.renderTemplateOrSlot('import:before')}
194
+
195
+ <vaadin-button
196
+ class="w-full mb-xs"
197
+ theme="primary success"
198
+ ?disabled=${!this.in('idle') || this.disabledSelector.matches('import', true)}
199
+ @click=${this.submit}
200
+ >
201
+ <foxy-i18n ns=${this.ns} key="import" lang=${this.lang}></foxy-i18n>
202
+ </vaadin-button>
203
+
204
+ ${this.renderTemplateOrSlot('import:after')}
205
+ </div>
206
+ `;
207
+ }
208
+ }
209
+ //# sourceMappingURL=GiftCardCodesForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GiftCardCodesForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodesForm/GiftCardCodesForm.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 { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'gift-card-codes-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for importing gift card codes (`fx:gift_card_codes`).\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot import:before\n * @slot import:after\n *\n * @element foxy-gift-card-codes-form\n * @since 1.15.0\n */\nexport class GiftCardCodesForm 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 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 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.gift_card_codes ?? [];\n\n const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;\n const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];\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-gift-card-codes-form-list-item\n group=${this.group}\n href=${href}\n lang=${this.lang}\n ns=${this.ns}\n >\n </foxy-internal-gift-card-codes-form-list-item>\n `,\n };\n });\n\n return html`\n <div>\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 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 newCodes = new Set([...hiddenCodes, ...list.items.map(item => item.value)]);\n this.edit({ gift_card_codes: [...newCodes] });\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const text = evt.clipboardData?.getData('text') ?? '';\n const pastedCodes = text\n .split(' ')\n .map(code => code.trim())\n .filter(code => code.length > 0);\n\n this.edit({ gift_card_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 return html`\n <div>\n ${this.renderTemplateOrSlot('import:before')}\n\n <vaadin-button\n class=\"w-full mb-xs\"\n theme=\"primary success\"\n ?disabled=${!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"]}
@@ -0,0 +1,8 @@
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';
7
+ import { GiftCardCodesForm } from './GiftCardCodesForm';
8
+ export { GiftCardCodesForm };
@@ -0,0 +1,12 @@
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";
7
+ import { GiftCardCodesForm } from "./GiftCardCodesForm.js";
8
+ import { InternalGiftCardCodesFormListItem } from "./internal/InternalGiftCardCodesFormListItem.js";
9
+ customElements.define('foxy-gift-card-codes-form', GiftCardCodesForm);
10
+ customElements.define('foxy-internal-gift-card-codes-form-list-item', InternalGiftCardCodesFormListItem);
11
+ export { GiftCardCodesForm };
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodesForm/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,iBAAiB,EAAE,+BAA4B;AACxD,OAAO,EAAE,iCAAiC,EAAE,wDAAqD;AAEjG,cAAc,CAAC,MAAM,CAAC,2BAA2B,EAAE,iBAAiB,CAAC,CAAC;AACtE,cAAc,CAAC,MAAM,CACnB,8CAA8C,EAC9C,iCAAiC,CAClC,CAAC;AAEF,OAAO,EAAE,iBAAiB,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 { GiftCardCodesForm } from './GiftCardCodesForm';\nimport { InternalGiftCardCodesFormListItem } from './internal/InternalGiftCardCodesFormListItem';\n\ncustomElements.define('foxy-gift-card-codes-form', GiftCardCodesForm);\ncustomElements.define(\n 'foxy-internal-gift-card-codes-form-list-item',\n InternalGiftCardCodesFormListItem\n);\n\nexport { GiftCardCodesForm };\n"]}
@@ -0,0 +1,19 @@
1
+ import { TemplateResult } from 'lit-html';
2
+ import { NucleonElement } from '../../NucleonElement/NucleonElement';
3
+ declare type Data = {
4
+ _links: {
5
+ self: {
6
+ href: string;
7
+ };
8
+ };
9
+ returned_items: number;
10
+ };
11
+ declare const Base: typeof NucleonElement & {
12
+ styles: import("lit-element").CSSResultArray;
13
+ } & import("lit-element").Constructor<import("../../../../mixins/translatable").TranslatableMixinHost> & {
14
+ defaultNS: string;
15
+ };
16
+ export declare class InternalGiftCardCodesFormListItem extends Base<Data> {
17
+ render(): TemplateResult;
18
+ }
19
+ export {};
@@ -0,0 +1,48 @@
1
+ import { html } from 'lit-html';
2
+ import { ThemeableMixin } from "../../../../mixins/themeable.js";
3
+ import { TranslatableMixin } from "../../../../mixins/translatable.js";
4
+ import { NucleonElement } from "../../NucleonElement/NucleonElement.js";
5
+ const Base = TranslatableMixin(ThemeableMixin(NucleonElement));
6
+ export class InternalGiftCardCodesFormListItem extends Base {
7
+ render() {
8
+ var _a, _b;
9
+ let code;
10
+ try {
11
+ code = (_a = new URL(this.href).searchParams.get('code')) !== null && _a !== void 0 ? _a : '';
12
+ }
13
+ catch (_c) {
14
+ return html ``;
15
+ }
16
+ let statusClass = 'text-tertiary bg-contrast-5';
17
+ let statusKey;
18
+ let codeClass = 'text-body';
19
+ if (this.in('fail')) {
20
+ statusKey = 'loading_error';
21
+ }
22
+ else if (this.in('busy')) {
23
+ statusKey = 'loading_busy';
24
+ }
25
+ else if (((_b = this.data) === null || _b === void 0 ? void 0 : _b.returned_items) === 0) {
26
+ statusClass = 'text-success bg-success-10';
27
+ statusKey = 'unique';
28
+ }
29
+ else {
30
+ statusClass = 'text-error bg-error-10';
31
+ statusKey = 'duplicate';
32
+ codeClass = 'text-error';
33
+ }
34
+ return html `
35
+ <div class="flex justify-between items-center font-lumo leading-m">
36
+ <div class="text-m ${codeClass}">${code}</div>
37
+ <foxy-i18n
38
+ class="text-xs font-medium px-xs rounded ${statusClass}"
39
+ lang=${this.lang}
40
+ key=${statusKey}
41
+ ns=${this.ns}
42
+ >
43
+ </foxy-i18n>
44
+ </div>
45
+ `;
46
+ }
47
+ }
48
+ //# sourceMappingURL=InternalGiftCardCodesFormListItem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalGiftCardCodesFormListItem.js","sourceRoot":"","sources":["../../../../../src/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAkB,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,wCAAqC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,2CAAwC;AACpE,OAAO,EAAE,cAAc,EAAE,+CAA4C;AAGrE,MAAM,IAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;AAE/D,MAAM,OAAO,iCAAkC,SAAQ,IAAU;IAC/D,MAAM;;QACJ,IAAI,IAAY,CAAC;QAEjB,IAAI;YACF,IAAI,SAAG,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,mCAAI,EAAE,CAAC;SAC1D;QAAC,WAAM;YACN,OAAO,IAAI,CAAA,EAAE,CAAC;SACf;QAED,IAAI,WAAW,GAAG,6BAA6B,CAAC;QAChD,IAAI,SAAiB,CAAC;QACtB,IAAI,SAAS,GAAG,WAAW,CAAC;QAE5B,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YACnB,SAAS,GAAG,eAAe,CAAC;SAC7B;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAC1B,SAAS,GAAG,cAAc,CAAC;SAC5B;aAAM,IAAI,OAAA,IAAI,CAAC,IAAI,0CAAE,cAAc,MAAK,CAAC,EAAE;YAC1C,WAAW,GAAG,4BAA4B,CAAC;YAC3C,SAAS,GAAG,QAAQ,CAAC;SACtB;aAAM;YACL,WAAW,GAAG,wBAAwB,CAAC;YACvC,SAAS,GAAG,WAAW,CAAC;YACxB,SAAS,GAAG,YAAY,CAAC;SAC1B;QAED,OAAO,IAAI,CAAA;;6BAEc,SAAS,KAAK,IAAI;;qDAEM,WAAW;iBAC/C,IAAI,CAAC,IAAI;gBACV,SAAS;eACV,IAAI,CAAC,EAAE;;;;KAIjB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import { html, TemplateResult } from 'lit-html';\nimport { ThemeableMixin } from '../../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../../mixins/translatable';\nimport { NucleonElement } from '../../NucleonElement/NucleonElement';\n\ntype Data = { _links: { self: { href: string } }; returned_items: number };\nconst Base = TranslatableMixin(ThemeableMixin(NucleonElement));\n\nexport class InternalGiftCardCodesFormListItem extends Base<Data> {\n render(): TemplateResult {\n let code: string;\n\n try {\n code = new URL(this.href).searchParams.get('code') ?? '';\n } catch {\n return html``;\n }\n\n let statusClass = 'text-tertiary bg-contrast-5';\n let statusKey: string;\n let codeClass = 'text-body';\n\n if (this.in('fail')) {\n statusKey = 'loading_error';\n } else if (this.in('busy')) {\n statusKey = 'loading_busy';\n } else if (this.data?.returned_items === 0) {\n statusClass = 'text-success bg-success-10';\n statusKey = 'unique';\n } else {\n statusClass = 'text-error bg-error-10';\n statusKey = 'duplicate';\n codeClass = 'text-error';\n }\n\n return html`\n <div class=\"flex justify-between items-center font-lumo leading-m\">\n <div class=\"text-m ${codeClass}\">${code}</div>\n <foxy-i18n\n class=\"text-xs font-medium px-xs rounded ${statusClass}\"\n lang=${this.lang}\n key=${statusKey}\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,16 @@
1
+ import { GiftCardCodesForm } from './GiftCardCodesForm';
2
+ import { Renderer } from '../../../mixins/configurable';
3
+ export declare type Data = {
4
+ _links: {
5
+ self: {
6
+ href: string;
7
+ };
8
+ };
9
+ gift_card_codes: string[];
10
+ };
11
+ export declare type Templates = {
12
+ 'codes:before'?: Renderer<GiftCardCodesForm>;
13
+ 'codes:after'?: Renderer<GiftCardCodesForm>;
14
+ 'import:before'?: Renderer<GiftCardCodesForm>;
15
+ 'import:after'?: Renderer<GiftCardCodesForm>;
16
+ };
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodesForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import { GiftCardCodesForm } from './GiftCardCodesForm';\nimport { Renderer } from '../../../mixins/configurable';\n\nexport type Data = {\n _links: { self: { href: string } };\n gift_card_codes: string[];\n};\n\nexport type Templates = {\n 'codes:before'?: Renderer<GiftCardCodesForm>;\n 'codes:after'?: Renderer<GiftCardCodesForm>;\n 'import:before'?: Renderer<GiftCardCodesForm>;\n 'import:after'?: Renderer<GiftCardCodesForm>;\n};\n"]}
@@ -0,0 +1,66 @@
1
+ import { ScopedElementsMap } from '@open-wc/scoped-elements';
2
+ import { PropertyDeclarations, TemplateResult } from 'lit-element';
3
+ import { NucleonElement } from '../NucleonElement/NucleonElement';
4
+ import { NucleonV8N } from '../NucleonElement/types';
5
+ import { Data } from './types';
6
+ declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
7
+ defaultNS: string;
8
+ } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost> & {
9
+ styles: import("lit-element").CSSResultArray;
10
+ } & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost>;
11
+ /**
12
+ * Form element for creating or editing gift cards (`fx:gift_card`).
13
+ *
14
+ * @slot name:before
15
+ * @slot name:after
16
+ *
17
+ * @slot currency:before
18
+ * @slot currency:after
19
+ *
20
+ * @slot expires:before
21
+ * @slot expires:after
22
+ *
23
+ * @slot codes:before
24
+ * @slot codes:after
25
+ *
26
+ * @slot product-restrictions:before
27
+ * @slot product-restrictions:after
28
+ *
29
+ * @slot category-restrictions:before
30
+ * @slot category-restrictions:after
31
+ *
32
+ * @slot timestamps:before
33
+ * @slot timestamps:after
34
+ *
35
+ * @slot delete:before
36
+ * @slot delete:after
37
+ *
38
+ * @slot create:before
39
+ * @slot create:after
40
+ *
41
+ * @element foxy-gift-card-form
42
+ * @since 1.15.0
43
+ */
44
+ export declare class GiftCardForm extends Base<Data> {
45
+ static get scopedElements(): ScopedElementsMap;
46
+ static get properties(): PropertyDeclarations;
47
+ static get v8n(): NucleonV8N<Data>;
48
+ private __codesTableColumns;
49
+ private static readonly __codesQueryOptions;
50
+ private __codesTableQuery;
51
+ private __itemCategories;
52
+ render(): TemplateResult;
53
+ protected _sendGet(): Promise<Data>;
54
+ private __getErrorMessage;
55
+ private __getValidator;
56
+ private __renderName;
57
+ private __renderCurrency;
58
+ private __renderExpires;
59
+ private __renderCodes;
60
+ private __renderProductRestrictions;
61
+ private __renderCategoryRestrictions;
62
+ private __renderTimestamps;
63
+ private __renderCreate;
64
+ private __renderDelete;
65
+ }
66
+ export {};