@foxy.io/elements 1.15.0-beta.2 → 1.15.0-beta.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-coupon-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -169
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -0
- package/dist/cdn/foxy-gift-card-code-form.js +1 -0
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -0
- package/dist/cdn/foxy-gift-card-form.js +1 -0
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-nucleon-element.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +1 -1
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/shared-0032dc09.js +302 -0
- package/dist/cdn/{shared-9af7b5f0.js → shared-02945b27.js} +1 -1
- package/dist/cdn/{shared-c6a4b2d6.js → shared-05488216.js} +1 -1
- package/dist/cdn/{shared-b03b6d72.js → shared-07049bfe.js} +1 -1
- package/dist/cdn/{shared-ccea5a33.js → shared-08c63028.js} +1 -1
- package/dist/cdn/shared-09069d7c.js +1 -0
- package/dist/cdn/shared-0e4d19e2.js +1 -0
- package/dist/cdn/{shared-d3831f99.js → shared-21419f10.js} +1 -1
- package/dist/cdn/{shared-423a4840.js → shared-39e3ae67.js} +1 -1
- package/dist/cdn/{shared-51b5e223.js → shared-40b5267a.js} +1 -1
- package/dist/cdn/{shared-d9a260f0.js → shared-43abbdd9.js} +1 -1
- package/dist/cdn/{shared-fb403e1f.js → shared-448781f9.js} +1 -1
- package/dist/cdn/{shared-a8d96c23.js → shared-4cc1da27.js} +1 -1
- package/dist/cdn/{shared-8f7a66c4.js → shared-4dc6d228.js} +1 -1
- package/dist/cdn/{shared-c1dadefe.js → shared-5535f38f.js} +1 -1
- package/dist/cdn/{shared-a11160e7.js → shared-5639389e.js} +1 -1
- package/dist/cdn/shared-66633ff7.js +1 -0
- package/dist/cdn/{shared-0bda8ecb.js → shared-67ca44d2.js} +1 -1
- package/dist/cdn/{shared-30131f76.js → shared-756034e4.js} +1 -1
- package/dist/cdn/shared-7f0a9790.js +1 -0
- package/dist/cdn/shared-8a5ec3cf.js +1 -0
- package/dist/cdn/{shared-b2330475.js → shared-a23cf7c8.js} +1 -1
- package/dist/cdn/{shared-ff149b55.js → shared-b30bc42d.js} +1 -1
- package/dist/cdn/{shared-a4e6ecb0.js → shared-b9f18aaa.js} +1 -1
- package/dist/cdn/{shared-f875a4f8.js → shared-cf6751d3.js} +1 -1
- package/dist/cdn/{shared-51e28c83.js → shared-df730f90.js} +1 -1
- package/dist/cdn/{shared-4038cb18.js → shared-e209cb55.js} +1 -1
- package/dist/cdn/{shared-cd3c902e.js → shared-e68b9c83.js} +1 -1
- package/dist/cdn/translations/shared/en.json +178 -0
- package/dist/cdn/translations/shared/zh-hk.json +179 -0
- package/dist/elements/private/EditableList/EditableList.js +1 -0
- package/dist/elements/private/EditableList/EditableList.js.map +1 -1
- package/dist/elements/private/FrequencyInput/FrequencyInput.d.ts +2 -1
- package/dist/elements/private/FrequencyInput/FrequencyInput.js +3 -1
- package/dist/elements/private/FrequencyInput/FrequencyInput.js.map +1 -1
- package/dist/elements/public/CollectionPage/CollectionPage.js +3 -1
- package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
- package/dist/elements/public/CollectionPage/types.d.ts +2 -0
- package/dist/elements/public/CollectionPage/types.js.map +1 -1
- package/dist/elements/public/CouponCard/CouponCard.js +2 -2
- package/dist/elements/public/CouponCard/CouponCard.js.map +1 -1
- package/dist/elements/public/CouponCodesForm/CouponCodesForm.d.ts +2 -0
- package/dist/elements/public/CouponCodesForm/CouponCodesForm.js +7 -1
- package/dist/elements/public/CouponCodesForm/CouponCodesForm.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js +0 -2
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/GiftCardCard/GiftCardCard.d.ts +26 -0
- package/dist/elements/public/GiftCardCard/GiftCardCard.js +118 -0
- package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -0
- package/dist/elements/public/GiftCardCard/index.d.ts +5 -0
- package/dist/elements/public/GiftCardCard/index.js +7 -0
- package/dist/elements/public/GiftCardCard/index.js.map +1 -0
- package/dist/elements/public/GiftCardCard/types.d.ts +11 -0
- package/dist/elements/public/GiftCardCard/types.js +2 -0
- package/dist/elements/public/GiftCardCard/types.js.map +1 -0
- package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +55 -0
- package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +292 -0
- package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -0
- package/dist/elements/public/GiftCardCodeForm/index.d.ts +10 -0
- package/dist/elements/public/GiftCardCodeForm/index.js +12 -0
- package/dist/elements/public/GiftCardCodeForm/index.js.map +1 -0
- package/dist/elements/public/GiftCardCodeForm/types.d.ts +19 -0
- package/dist/elements/public/GiftCardCodeForm/types.js +2 -0
- package/dist/elements/public/GiftCardCodeForm/types.js.map +1 -0
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.d.ts +31 -0
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js +215 -0
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js.map +1 -0
- package/dist/elements/public/GiftCardCodesForm/index.d.ts +8 -0
- package/dist/elements/public/GiftCardCodesForm/index.js +12 -0
- package/dist/elements/public/GiftCardCodesForm/index.js.map +1 -0
- package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.d.ts +19 -0
- package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js +48 -0
- package/dist/elements/public/GiftCardCodesForm/internal/InternalGiftCardCodesFormListItem.js.map +1 -0
- package/dist/elements/public/GiftCardCodesForm/types.d.ts +16 -0
- package/dist/elements/public/GiftCardCodesForm/types.js +2 -0
- package/dist/elements/public/GiftCardCodesForm/types.js.map +1 -0
- package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +66 -0
- package/dist/elements/public/GiftCardForm/GiftCardForm.js +650 -0
- package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -0
- package/dist/elements/public/GiftCardForm/currencies.d.ts +1 -0
- package/dist/elements/public/GiftCardForm/currencies.js +173 -0
- package/dist/elements/public/GiftCardForm/currencies.js.map +1 -0
- package/dist/elements/public/GiftCardForm/index.d.ts +18 -0
- package/dist/elements/public/GiftCardForm/index.js +20 -0
- package/dist/elements/public/GiftCardForm/index.js.map +1 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.d.ts +20 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js +99 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPage.js.map +1 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.d.ts +20 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js +52 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItem.js.map +1 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.d.ts +20 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js +53 -0
- package/dist/elements/public/GiftCardForm/private/CategoryRestrictionsPageItemContent.js.map +1 -0
- package/dist/elements/public/GiftCardForm/types.d.ts +28 -0
- package/dist/elements/public/GiftCardForm/types.js +2 -0
- package/dist/elements/public/GiftCardForm/types.js.map +1 -0
- package/dist/elements/public/NucleonElement/NucleonElement.js +4 -4
- package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
- package/dist/elements/public/index.d.ts +4 -0
- package/dist/elements/public/index.defined.d.ts +4 -0
- package/dist/elements/public/index.defined.js +4 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +4 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/themeable.js +12 -0
- package/dist/mixins/themeable.js.map +1 -1
- package/dist/utils/parse-duration.d.ts +1 -1
- package/dist/utils/parse-duration.js +7 -3
- package/dist/utils/parse-duration.js.map +1 -1
- package/package.json +2 -2
- package/dist/cdn/shared-0fcdd1c4.js +0 -1
- package/dist/cdn/shared-4fa5f144.js +0 -1
- package/dist/cdn/shared-6b7602c7.js +0 -1
- package/dist/cdn/shared-710ed658.js +0 -134
- package/dist/cdn/shared-800a5471.js +0 -1
- package/dist/cdn/shared-87ca7818.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CouponCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCard/CouponCard.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,4CAAyC;AAClE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AAEpD,MAAM,EAAE,GAAG,aAAa,CAAC;AACzB,MAAM,IAAI,GAAG,cAAc,CAAC,iBAAiB,CAAC,iBAAiB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEtF;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,UAAW,SAAQ,IAAU;IAA1C;;QACE,cAAS,GAAc,EAAE,CAAC;IA8G5B,CAAC;IA5GC,MAAM;;QACJ,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAE3C,OAAO,IAAI,CAAA;;oBAEK,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;;;qBAId,QAAQ,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1E,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACjE,cAAc,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7E,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE;;;;kBAI7D,QAAQ,CAAC;YACf,8DAA8D,EAAE,IAAI;YACpE,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SACzB,CAAC;;;;oBAIQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;mBAE7E,IAAI,CAAC,IAAI;kBACV,IAAI,CAAC,EAAE,IAAI,YAAA,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,0CAAE,SAAS,mCAAI,EAAE;;;;;KAK3E,CAAC;IACJ,CAAC;IAEO,aAAa;;QACnB,MAAM,KAAK,eAAG,IAAI,CAAC,IAAI,0CAAE,sBAAsB,mCAAI,CAAC,CAAC;QACrD,MAAM,KAAK,eAAG,IAAI,CAAC,IAAI,0CAAE,sBAAsB,mCAAI,CAAC,CAAC;QAErD,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;;;gDAGH,
|
|
1
|
+
{"version":3,"file":"CouponCard.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCard/CouponCard.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'coupon-card';\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, NS)));\n\n/**\n * Basic card displaying a coupon.\n *\n * @slot title:before\n * @slot title:after\n * @slot description:before\n * @slot description:after\n * @slot status:before\n * @slot status:after\n *\n * @element foxy-coupon-card\n * @since 1.15.0\n */\nexport class CouponCard extends Base<Data> {\n templates: Templates = {};\n\n render(): TemplateResult {\n const hiddenSelector = this.hiddenSelector;\n\n return html`\n <div\n aria-busy=${this.in('busy')}\n aria-live=\"polite\"\n class=\"relative leading-m font-lumo text-m\"\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-0': !this.data })}>\n ${hiddenSelector.matches('title', true) ? '' : this.__renderTitle()}\n ${hiddenSelector.matches('description', true) ? '' : this.__renderDescription()}\n ${hiddenSelector.matches('status', true) ? '' : this.__renderStatus()}\n </div>\n\n <div\n class=${classMap({\n 'pointer-events-none absolute inset-0 flex transition-opacity': true,\n 'opacity-0': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n class=\"m-auto\"\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private __renderTitle() {\n const count = this.data?.number_of_uses_to_date ?? 0;\n const total = this.data?.number_of_uses_allowed ?? 0;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('title:before')}\n\n <div class=\"flex items-center justify-between\">\n <div class=\"font-semibold truncate\">${this.data?.name ?? html`​`}</div>\n\n <foxy-i18n\n options=${JSON.stringify({ count, total })}\n class=\"text-tertiary text-s flex-shrink-0\"\n lang=${this.lang}\n key=${total === 0 ? 'uses_count' : 'uses_to_total_count'}\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('title:after')}\n </div>\n `;\n }\n\n private __renderDescription() {\n let summary: TemplateResult | null = null;\n\n if (this.data) {\n const details = this.data.coupon_discount_details;\n const type = this.data.coupon_discount_type;\n\n summary = html`\n <foxy-i18n\n options=${JSON.stringify({ params: { details, type } })}\n lang=${this.lang}\n key=\"discount_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n `;\n }\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('description:before')}\n <div class=\"truncate text-s text-secondary\">${summary ?? html`​`}</div>\n ${this.renderTemplateOrSlot('description:after')}\n </div>\n `;\n }\n\n private __renderStatus() {\n const { start_date: start, end_date: end } = this.data ?? {};\n const type = start && end ? 'complete' : start ? 'from' : end ? 'until' : 'any';\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('status:before')}\n\n <foxy-i18n\n options=${JSON.stringify({ start, end })}\n class=\"block truncate text-s text-tertiary\"\n lang=${this.lang}\n key=\"date_range_${type}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('status:after')}\n </div>\n `;\n }\n}\n"]}
|
|
@@ -2,6 +2,7 @@ import { Data, Templates } from './types';
|
|
|
2
2
|
import { ScopedElementsMap } from '@open-wc/scoped-elements';
|
|
3
3
|
import { TemplateResult } from 'lit-html';
|
|
4
4
|
import { NucleonElement } from '../NucleonElement/NucleonElement';
|
|
5
|
+
import { NucleonV8N } from '../NucleonElement/types';
|
|
5
6
|
declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
6
7
|
defaultNS: string;
|
|
7
8
|
} & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost> & {
|
|
@@ -21,6 +22,7 @@ declare const Base: typeof NucleonElement & import("lit-element").Constructor<im
|
|
|
21
22
|
*/
|
|
22
23
|
export declare class CouponCodesForm extends Base<Data> {
|
|
23
24
|
static get scopedElements(): ScopedElementsMap;
|
|
25
|
+
static get v8n(): NucleonV8N<Data>;
|
|
24
26
|
templates: Templates;
|
|
25
27
|
render(): TemplateResult;
|
|
26
28
|
private __renderCodes;
|
|
@@ -37,6 +37,9 @@ export class CouponCodesForm extends Base {
|
|
|
37
37
|
'x-group': Group,
|
|
38
38
|
};
|
|
39
39
|
}
|
|
40
|
+
static get v8n() {
|
|
41
|
+
return [({ coupon_codes: v }) => (v && v.length > 0) || 'coupon_codes_required'];
|
|
42
|
+
}
|
|
40
43
|
render() {
|
|
41
44
|
var _a, _b;
|
|
42
45
|
const { hiddenSelector, lang, ns } = this;
|
|
@@ -188,6 +191,9 @@ export class CouponCodesForm extends Base {
|
|
|
188
191
|
`;
|
|
189
192
|
}
|
|
190
193
|
__renderImport() {
|
|
194
|
+
const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });
|
|
195
|
+
const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });
|
|
196
|
+
const isValid = isTemplateValid || isSnapshotValid;
|
|
191
197
|
return html `
|
|
192
198
|
<div>
|
|
193
199
|
${this.renderTemplateOrSlot('import:before')}
|
|
@@ -195,7 +201,7 @@ export class CouponCodesForm extends Base {
|
|
|
195
201
|
<vaadin-button
|
|
196
202
|
class="w-full mb-xs"
|
|
197
203
|
theme="primary success"
|
|
198
|
-
?disabled=${!this.in('idle') || this.disabledSelector.matches('import', true)}
|
|
204
|
+
?disabled=${!isValid || !this.in('idle') || this.disabledSelector.matches('import', true)}
|
|
199
205
|
@click=${this.submit}
|
|
200
206
|
>
|
|
201
207
|
<foxy-i18n ns=${this.ns} key="import" lang=${this.lang}></foxy-i18n>
|
|
@@ -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 { 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 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.coupon_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-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>\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({ coupon_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({ 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 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"]}
|
|
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 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\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>\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({ coupon_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({ 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 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"]}
|
|
@@ -1122,8 +1122,6 @@ export class CouponForm extends Base {
|
|
|
1122
1122
|
startDate = serializeDate(new Date(today));
|
|
1123
1123
|
endDate = serializeDate(new Date(oneMonthFromToday));
|
|
1124
1124
|
}
|
|
1125
|
-
// TODO: remove ts directive when sdk types are fixed
|
|
1126
|
-
// @ts-expect-error sdk types don't include null
|
|
1127
1125
|
this.edit({ start_date: startDate, end_date: endDate });
|
|
1128
1126
|
}
|
|
1129
1127
|
}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CouponForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponForm/CouponForm.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Data,\n RulesTierFieldParams,\n RulesTierParams,\n RulesTierSelectParams,\n RulesTierSwitchParams,\n} from './types';\nimport { Option, Type } from '../QueryBuilder/types';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { CategoryRestrictionsPage } from './private/CategoryRestrictionsPage';\nimport { Checkbox } from '../../private/Checkbox/Checkbox';\nimport { CheckboxChangeEvent } from '../../private/Checkbox/CheckboxChangeEvent';\nimport { Column } from '../Table/types';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DatePickerElement } from '@vaadin/vaadin-date-picker';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { FormDialog } from '../FormDialog';\nimport { Group } from '../../private/Group/Group';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/PropertyTable/PropertyTable';\nimport { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { live } from 'lit-html/directives/live';\nimport { operatorGreaterThanOrEqual } from '../QueryBuilder/icons/operatorGreaterThanOrEqual';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { serializeDate } from '../../../utils/serialize-date';\n\nconst NS = 'coupon-form';\nconst Base = ScopedElementsMixin(\n ThemeableMixin(ConfigurableMixin(ResponsiveMixin(TranslatableMixin(NucleonElement, NS))))\n);\n\n/**\n * Form element for creating or editing coupons (`fx:coupon`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot rules:before\n * @slot rules:after\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot usage:before\n * @slot usage:after\n *\n * @slot product-restrictions:before\n * @slot product-restrictions:after\n *\n * @slot category-restrictions:before\n * @slot category-restrictions:after\n *\n * @slot options:before\n * @slot options:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-coupon-form\n * @since 1.15.0\n */\nexport class CouponForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-date-picker': customElements.get('vaadin-date-picker'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'iron-dropdown': customElements.get('iron-dropdown'),\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-query-builder': customElements.get('foxy-query-builder'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'foxy-pagination': customElements.get('foxy-pagination'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-category-restrictions-page': CategoryRestrictionsPage,\n 'x-property-table': PropertyTable,\n 'x-editable-list': EditableList,\n 'x-checkbox': Checkbox,\n 'x-group': Group,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __codesTableQuery: { attribute: false },\n __itemCategories: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 50 || 'name_too_long',\n ];\n }\n\n private __codesTableColumns: Column<Resource<Rels.CouponCodes>>[] = [\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"code\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <vaadin-button\n theme=\"tertiary contrast\"\n class=\"p-0\"\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#code-dialog')!;\n const button = evt.currentTarget as ButtonElement;\n\n dialog.href = ctx.data._links.self.href;\n dialog.show(button);\n }}\n >\n <span class=\"font-tnum\">${ctx.data.code}</span>\n </vaadin-button>\n `,\n },\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"date_created\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_created })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n hideBelow: 'sm',\n header: c => html`<foxy-i18n lang=${c.lang} key=\"date_modified\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n header: c => html`<foxy-i18n lang=${c.lang} key=\"used_codes\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`${ctx.data.number_of_uses_to_date}`,\n },\n ];\n\n private static readonly __codesQueryOptions: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'used_codes', path: 'number_of_uses_to_date', type: Type.Number },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesTableQuery: string | null = null;\n\n private __itemCategories = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n\n return html`\n <div class=\"relative space-y-l\">\n ${hidden.matches('name', true) ? '' : this.__renderName()}\n ${hidden.matches('rules', true) ? '' : this.__renderRules()}\n ${hidden.matches('codes', true) || !this.data ? '' : this.__renderCodes()}\n ${hidden.matches('usage', true) ? '' : this.__renderUsage()}\n ${hidden.matches('product-restrictions', true) ? '' : this.__renderProductRestrictions()}\n ${hidden.matches('category-restrictions', true) || !this.data\n ? ''\n : this.__renderCategoryRestrictions()}\n ${hidden.matches('options', true) ? '' : this.__renderOptions()}\n ${hidden.matches('timestamps', true) ? '' : this.__renderTimestamps()}\n ${hidden.matches('create', true) || !!this.data ? '' : this.__renderCreate()}\n ${hidden.matches('delete', true) || !this.data ? '' : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !this.in('busy') && !this.in('fail'),\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=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Store = Resource<Rels.Store>;\n\n const coupon = await super._sendGet();\n const store = await super._fetch<Store>(coupon._links['fx:store'].href);\n const categoriesURL = new URL(store._links['fx:item_categories'].href);\n\n categoriesURL.searchParams.set('limit', '5');\n this.__itemCategories = categoriesURL.toString();\n\n return coupon;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n error-message=${this.__getErrorMessage('name')}\n helper-text=${this.t('coupon_name_helper_text')}\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n .checkValidity=${this.__getValidator('name')}\n .value=${this.form.name}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderRulesPreset() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const details = this.form.coupon_discount_details;\n const type = this.form.coupon_discount_type;\n\n const presets = [\n { type: 'quantity_amount', details: 'allunits|2-2' },\n { type: 'quantity_percentage', details: 'allunits|5-10|10-20' },\n { type: 'quantity_amount', details: 'incremental|3-5' },\n { type: 'quantity_percentage', details: 'incremental|11-10|51-15|101-20' },\n { type: 'quantity_percentage', details: 'repeat|2-100' },\n { type: 'quantity_percentage', details: 'repeat|4-50' },\n { type: 'quantity_amount', details: 'single|5-10' },\n { type: 'price_percentage', details: 'single|99.99-10' },\n ] as const;\n\n const selectedPreset = presets.find(p => p.details === details && p.type === type);\n\n return html`\n <label\n class=${classMap({\n 'whitespace-nowrap block ring-primary-50 rounded px-xs -mx-xs transition-colors': true,\n 'text-body hover-text-primary focus-within-ring-2': !isDisabled && !isReadonly,\n 'text-disabled': isDisabled,\n 'text-secondary': isReadonly,\n })}\n >\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=\"preset\" ns=${this.ns}></foxy-i18n>\n\n <span class=\"relative font-medium flex items-center\">\n <span class=\"truncate\">\n ${selectedPreset\n ? this.t('discount_summary', { params: selectedPreset })\n : this.t('custom_discount')}\n </span>\n\n <iron-icon class=\"icon-inline text-xl ml-xs -mr-xs\" icon=\"icons:expand-more\"></iron-icon>\n\n <select\n class=\"opacity-0 absolute inset-0 focus-outline-none\"\n ?disabled=${isDisabled || isReadonly}\n @change=${(evt: Event) => {\n const select = evt.currentTarget as HTMLSelectElement;\n const preset = presets[select.selectedIndex];\n\n this.edit({\n coupon_discount_details: preset?.details ?? '',\n coupon_discount_type: preset?.type ?? 'quantity_amount',\n });\n }}\n >\n ${presets.map(option => {\n return html`\n <option value=${option.details} ?selected=${option === selectedPreset}>\n ${this.t('discount_summary', { params: option })}\n </option>\n `;\n })}\n\n <option value=\"custom\" ?selected=${!selectedPreset}>\n ${this.t('custom_discount')}\n </option>\n </select>\n </span>\n </label>\n `;\n }\n\n private __renderRulesTierSelect({ label, value, options, onChange }: RulesTierSelectParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n\n return html`\n <label\n class=${classMap({\n 'h-xs whitespace-nowrap block ring-primary-50 rounded pl-s transition-colors': true,\n 'hover-bg-primary hover-text-primary-contrast focus-within-ring-2': isInteractive,\n 'bg-primary-10 text-primary': isInteractive,\n 'bg-contrast-5 text-disabled': isDisabled,\n 'bg-contrast-5 text-secondary': isReadonly && !isDisabled,\n })}\n >\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n\n <span class=\"relative leading-none font-medium flex items-center h-full\">\n <span class=\"truncate\">${this.t(options[value])}</span>\n <iron-icon class=\"icon-inline text-xl ml-xs\" icon=\"icons:expand-more\"></iron-icon>\n\n <select\n class=\"opacity-0 absolute inset-0 focus-outline-none\"\n ?disabled=${!isInteractive}\n @change=${(evt: Event) => {\n const select = evt.currentTarget as HTMLSelectElement;\n onChange(select.options[select.selectedIndex].value);\n }}\n >\n ${Object.entries(options).map(([optionValue, optionKey]) => {\n return html`\n <option value=${optionValue} ?selected=${optionValue === value}>\n ${this.t(optionKey)}\n </option>\n `;\n })}\n </select>\n </span>\n </label>\n `;\n }\n\n private __renderRulesTierSwitch({ value, options, onChange }: RulesTierSwitchParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n const name = `switch-${Math.floor(Math.random() * Math.pow(10, 10))}`;\n const dotStyle = 'width: 0.4rem; height: 0.4rem';\n\n return html`\n <div\n class=${classMap({\n 'h-xs px-xs space-x-xs flex items-center rounded transition-colors': true,\n 'hover-bg-primary hover-text-primary-contrast focus-within-ring-2': isInteractive,\n 'ring-primary-50 cursor-pointer bg-primary-10 text-primary': isInteractive,\n 'bg-contrast-5 text-disabled': isDisabled,\n 'bg-contrast-5 text-secondary': isReadonly && !isDisabled,\n })}\n @click=${(evt: Event) => {\n if (!isInteractive) return;\n\n const target = evt.currentTarget as HTMLDivElement;\n const firstInput = target.querySelector('input') as HTMLInputElement;\n\n firstInput.focus();\n onChange(value === 0 ? 1 : 0);\n }}\n >\n <div class=\"leading-none font-medium px-xs pointer-events-none\">\n ${options.map((option, optionIndex) => {\n return html`\n <label>\n <foxy-i18n\n class=${classMap({ 'sr-only': optionIndex !== value })}\n lang=${this.lang}\n key=${option}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <input\n class=\"sr-only\"\n value=${option}\n name=${name}\n type=\"radio\"\n ?disabled=${!isInteractive}\n ?checked=${optionIndex === value}\n @change=${(evt: Event) => {\n const input = evt.currentTarget as HTMLInputElement;\n if (input.checked) onChange(optionIndex);\n }}\n />\n </label>\n `;\n })}\n </div>\n\n <div class=\"flex justify-evenly h-full ${value ? 'flex-col-reverse' : 'flex-col'}\">\n <div style=${dotStyle} class=\"bg-current rounded-full\"></div>\n <div style=${dotStyle} class=\"border border-current rounded-full\"></div>\n </div>\n </div>\n `;\n }\n\n private __renderRulesTierField({ value, label, onChange }: RulesTierFieldParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n\n return html`\n <label>\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n <input\n class=${classMap({\n 'transition-colors border p-xs h-xs font-medium text-m rounded w-xl': true,\n 'ring-primary-50 text-body bg-contrast-10': isInteractive,\n 'hover-bg-contrast-20': isInteractive,\n 'focus-outline-none focus-ring-2': isInteractive,\n 'text-disabled bg-contrast-5': isDisabled,\n 'text-secondary': isReadonly && !isDisabled,\n 'border-transparent border-solid': !isReadonly,\n 'border-dashed border-contrast-30': isReadonly,\n })}\n type=\"number\"\n min=\"0\"\n ?disabled=${!isInteractive}\n .value=${value}\n @input=${(evt: InputEvent) => {\n const input = evt.currentTarget as HTMLInputElement;\n onChange(input.value);\n }}\n />\n </label>\n `;\n }\n\n private __renderRulesTier(params: RulesTierParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const tier = params.tier ?? '0-0';\n const sign = tier.includes('+') ? '+' : '-';\n const [from, adjustment] = tier.split(/[-+]/).map(v => parseFloat(v));\n\n return html`\n <div\n aria-label=${this.t('tier')}\n class=${classMap({\n 'flex items-start justify-between rounded-t-l rounded-b-l': true,\n 'border border-contrast-10': true,\n 'border-dashed': !params.tier,\n })}\n >\n <div\n class=${classMap({\n 'transition-colors flex flex-wrap items-center gap-s p-s': true,\n 'text-tertiary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_if\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierSwitch({\n options: ['total', 'quantity'],\n value: params.source === 'price' ? 0 : 1,\n onChange: i => params.onChange({ source: i ? 'quantity' : 'price' }),\n })}\n\n <div class=\"h-s w-s\">${operatorGreaterThanOrEqual}</div>\n\n ${this.__renderRulesTierField({\n label: 'from',\n value: String(from),\n onChange: v => params.onChange({ tier: `${v}${sign}${adjustment}` }),\n })}\n\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_then\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierSwitch({\n options: ['reduce', 'increase'],\n value: sign === '-' ? 0 : 1,\n onChange: i => params.onChange({ tier: `${from}${i ? '+' : '-'}${adjustment}` }),\n })}\n\n <!---->\n\n ${this.__renderRulesTierSelect({\n options: {\n incremental: 'tier_incremental',\n allunits: 'tier_allunits',\n repeat: 'tier_repeat',\n single: 'tier_single',\n },\n value: params.method,\n label: 'target',\n onChange: v => params.onChange({ method: v }),\n })}\n\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_by\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierField({\n label: 'adjustment',\n value: String(adjustment),\n onChange: v => params.onChange({ tier: `${from}${sign}${v}` }),\n })}\n\n <!---->\n\n ${this.__renderRulesTierSwitch({\n value: params.units === 'percentage' ? 0 : 1,\n options: ['%', '¤'],\n onChange: i => params.onChange({ units: i ? 'amount' : 'percentage' }),\n })}\n </div>\n\n ${params.tier\n ? html`\n <button\n aria-label=${this.t('delete')}\n class=${classMap({\n 'w-s h-s m-s flex-shrink-0 rounded transition-colors ring-primary-50': true,\n 'text-tertiary hover-text-secondary focus-outline-none focus-ring-2': !isDisabled,\n 'text-disabled cursor-default': isDisabled,\n })}\n ?disabled=${isDisabled}\n ?hidden=${isReadonly}\n @click=${() => params.onDelete()}\n >\n <iron-icon icon=\"lumo:cross\"></iron-icon>\n </button>\n `\n : ''}\n </div>\n `;\n }\n\n private __renderRulesUrlParameter() {\n const name = this.form.name ?? '';\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const details = this.form.coupon_discount_details ?? '';\n const urlParameter = `discount_${type}=${encodeURIComponent(`${name}{${details}}`)}`;\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n return html`\n <div class=\"text-xs flex space-x-xs leading-m\">\n <span\n class=${classMap({\n 'flex-shrink-0 transition-colors': true,\n 'text-tertiary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n lang=${this.lang} key=\"url_parameter\" ns=${this.ns}></foxy-i18n>:\n </span>\n\n <code\n class=${classMap({\n 'bg-contrast-5 transition-colors monospace truncate rounded px-xs': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n ${urlParameter}\n </code>\n\n <button\n class=${classMap({\n 'flex-shrink-0 transition-colors font-medium rounded px-xs': true,\n 'ring-primary-50 bg-primary-10 text-primary': !isDisabled,\n 'text-disabled bg-contrast-5': isDisabled,\n 'focus-outline-none focus-ring-2': !isDisabled,\n 'hover-bg-primary hover-text-primary-contrast': !isDisabled,\n })}\n ?disabled=${isDisabled}\n @click=${({ currentTarget }: { currentTarget: HTMLButtonElement }) => {\n navigator.clipboard\n .writeText(urlParameter)\n .then(() => (currentTarget.textContent = this.t('copied')))\n .catch(() => (currentTarget.textContent = this.t('error')))\n .then(() => setTimeout(() => (currentTarget.textContent = this.t('copy')), 2000));\n }}\n >\n ${this.t('copy')}\n </button>\n </div>\n `;\n }\n\n private __renderRulesDescription() {\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const details = this.form.coupon_discount_details ?? '';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n return html`\n <div class=\"text-xs leading-m\">\n <span class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-tertiary'}\">\n <foxy-i18n lang=${this.lang} key=\"description\" ns=${this.ns}></foxy-i18n>:\n </span>\n\n <foxy-i18n\n options=${JSON.stringify({ params: { details, type } })}\n class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n lang=${this.lang}\n key=\"discount_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n `;\n }\n\n private __renderRules() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n const details = this.form.coupon_discount_details ?? '';\n const tiers = details.split('|').filter(v => !!v.trim());\n const method = (/[-+]/.test(tiers[0]) ? null : tiers.shift()) ?? 'single';\n\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const [source, units] = type.split('_');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('rules:before')}\n\n <div>\n <div class=\"flex items-center justify-between space-x-m text-s mb-xs\">\n <foxy-i18n\n class=${classMap({\n 'transition-colors font-medium flex-1': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"rule_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"min-w-0\">${this.__renderRulesPreset()}</div>\n </div>\n\n <div class=\"space-y-s\">\n ${repeat([...tiers, undefined], (tier, tierIndex) => {\n const onChange = (changedParams: Partial<RulesTierParams>) => {\n const newMethod = changedParams.method ?? method;\n const newSource = changedParams.source ?? source;\n const newUnits = changedParams.units ?? units;\n const newTier = changedParams.tier;\n const newTiers = [...tiers];\n\n if (newTier) {\n const newTierIndex = tier ? tierIndex : newTiers.length;\n const oldTiersCount = tier ? 1 : 0;\n newTiers.splice(newTierIndex, oldTiersCount, newTier);\n }\n\n this.edit({\n coupon_discount_details: `${newMethod}|${newTiers.join('|')}`,\n coupon_discount_type: `${newSource}_${newUnits}` as Data['coupon_discount_type'],\n });\n };\n\n const onDelete = () => {\n const newTiers = tiers.filter((_, i) => i !== tierIndex);\n this.edit({ coupon_discount_details: `${method}|${newTiers.join('|')}` });\n };\n\n return this.__renderRulesTier({ source, method, units, tier, onChange, onDelete });\n })}\n </div>\n\n <div class=\"space-y-xs mt-m\">\n ${this.__renderRulesUrlParameter()} ${this.__renderRulesDescription()}\n </div>\n </div>\n\n ${this.renderTemplateOrSlot('rules:after')}\n </div>\n `;\n }\n\n private __renderCodes() {\n const { disabledSelector, group, data, lang, ns } = this;\n\n const isDisabled = !this.in('idle') || disabledSelector.matches('codes', true);\n const filters = this.__codesTableQuery;\n const url = new URL(data!._links['fx:coupon_codes'].href);\n\n new URLSearchParams(filters ?? '').forEach((value, name) => url.searchParams.set(name, value));\n url.searchParams.set('limit', '5');\n\n const filterButtonLabel = filters === null ? 'filter' : 'clear_filters';\n const filterButtonIcon = `icons:${filters === null ? 'filter-list' : 'clear'}`;\n\n return html`\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:generate:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:generate:form').toString()}\n hiddencontrols=\"save-button ${this.hiddenSelector.zoom('codes:generate:form').toString()}\"\n related=${JSON.stringify([url.toString()])}\n header=\"generate\"\n parent=${data?._links['fx:generate_codes'].href ?? ''}\n group=${group}\n lang=${lang}\n form=\"foxy-generate-codes-form\"\n ns=${ns}\n id=\"generate-codes-dialog\"\n alert\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:form').toString()}\n hiddencontrols=${this.hiddenSelector.zoom('codes:form').toString()}\n header=\"code\"\n parent=${url.toString()}\n group=${group}\n lang=${lang}\n form=\"foxy-coupon-code-form\"\n ns=${ns}\n id=\"code-dialog\"\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:import:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:import:form').toString()}\n hiddencontrols=\"save-button ${this.hiddenSelector.zoom('codes:generate:form').toString()}\"\n header=\"import\"\n parent=${data!._links['fx:coupon_codes'].href}\n group=${group}\n lang=${lang}\n form=\"foxy-coupon-codes-form\"\n ns=${ns}\n id=\"import-dialog\"\n >\n </foxy-form-dialog>\n\n <div>\n ${this.renderTemplateOrSlot('codes:before')}\n\n <div class=\"flex items-center justify-between mb-xs space-x-s\">\n <foxy-i18n\n class=\"text-s font-medium text-secondary leading-none flex-1\"\n lang=${lang}\n key=\"code_plural\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <vaadin-button\n theme=\"success tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#generate-codes-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"generate\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n theme=\"contrast tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#import-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"import\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:open-in-browser\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n theme=\"contrast ${filters === null ? 'tertiary' : ''} small\"\n ?disabled=${isDisabled}\n @click=${() => (this.__codesTableQuery = filters === null ? '' : null)}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=${filterButtonLabel} ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=${filterButtonIcon}></iron-icon>\n </vaadin-button>\n </div>\n\n <foxy-query-builder\n class=\"bg-contrast-5 rounded-tl-l rounded-tr-s rounded-b-l p-m mb-s\"\n lang=${lang}\n ns=${ns}\n ?disabled=${isDisabled}\n ?hidden=${filters === null}\n .options=${CouponForm.__codesQueryOptions}\n .value=${filters}\n @change=${(evt: CustomEvent) => {\n const queryBuilder = evt.currentTarget as QueryBuilder;\n this.__codesTableQuery = queryBuilder.value;\n }}\n >\n </foxy-query-builder>\n\n <foxy-pagination first=${url.toString()} lang=${lang} ns=${ns} ?disabled=${isDisabled}>\n <foxy-table\n class=\"px-m mb-s border border-contrast-10 rounded-t-l rounded-b-l\"\n group=${group}\n lang=${lang}\n ns=${ns}\n .columns=${this.__codesTableColumns}\n >\n </foxy-table>\n </foxy-pagination>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderUsage() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('usage', true);\n const isReadonly = this.readonlySelector.matches('usage', true);\n const usesPerCoupon = this.form.number_of_uses_allowed ?? 0;\n const usesPerCustomer = this.form.number_of_uses_allowed_per_customer ?? 0;\n const usesPerCouponCode = this.form.number_of_uses_allowed_per_code ?? 0;\n\n return html`\n ${this.renderTemplateOrSlot('usage:before')}\n\n <div class=\"space-y-s\">\n <div class=\"grid gap-m grid-cols-3\">\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_coupon')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCoupon || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_coupon_code')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCouponCode || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed_per_code: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_customer')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCustomer || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed_per_customer: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n </div>\n\n <div\n class=${classMap({\n 'transition-colors text-xs leading-s': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCoupon })}\n lang=${this.lang}\n key=\"uses_per_coupon_summary${usesPerCoupon ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCouponCode })}\n lang=${this.lang}\n key=\"uses_per_coupon_code_summary${usesPerCouponCode ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCustomer })}\n lang=${this.lang}\n key=\"uses_per_customer_summary${usesPerCustomer ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </div>\n\n ${this.renderTemplateOrSlot('usage:after')}\n `;\n }\n\n private __renderProductRestrictions() {\n const scope = 'product-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const restrictions = this.form.product_code_restrictions ?? '';\n\n const groups = [\n { header: 'allow', items: [] as { label?: string; value: string }[] },\n { header: 'block', items: [] as { label?: string; value: string }[] },\n ];\n\n if (restrictions) {\n restrictions.split(',').forEach(value => {\n const isBlocklistValue = value.startsWith('-');\n const target = isBlocklistValue ? 1 : 0;\n const label = isBlocklistValue ? value.substring(1) : value;\n\n groups[target].items.push({ label, value });\n });\n }\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('product-restrictions:before')}\n\n <div class=\"space-y-s\">\n <x-group frame>\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-secondary'}\n slot=\"header\"\n lang=${this.lang}\n key=\"product_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"grid sm-grid-cols-2 bg-contrast-10\" style=\"gap: 1px\">\n ${groups.map((group, index) => {\n return html`\n <x-group class=\"bg-base pt-m\">\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-tertiary'}\n slot=\"header\"\n lang=${this.lang}\n key=${group.header}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-editable-list\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .items=${group.items}\n @change=${(evt: CustomEvent) => {\n const newItemsByGroup = [\n index === 0 ? (evt.currentTarget as EditableList).items : groups[0].items,\n index === 1 ? (evt.currentTarget as EditableList).items : groups[1].items,\n ];\n\n const newSanitizedItemsByGroup = newItemsByGroup\n .map(list => list.map(v => v.value.replace(/^[\\s-]*/, '').trimEnd()))\n .map(list => list.filter(v => !!v))\n .map(list => Array.from(new Set(list)));\n\n const newRestrictions = newSanitizedItemsByGroup[0]\n .concat(newSanitizedItemsByGroup[1].map(v => `-${v}`))\n .join(',');\n\n this.edit({ product_code_restrictions: newRestrictions });\n }}\n >\n </x-editable-list>\n </x-group>\n `;\n })}\n </div>\n </x-group>\n\n <foxy-i18n\n class=${classMap({\n 'block text-xs leading-s transition-colors': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"product_restrictions_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('product-restrictions:after')}\n </div>\n `;\n }\n\n private __renderCategoryRestrictions() {\n const scope = 'category-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n\n return html`\n ${this.renderTemplateOrSlot('category-restrictions:before')}\n\n <div class=\"space-y-xs\">\n <foxy-pagination\n first=${this.__itemCategories}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n >\n <foxy-i18n\n class=\"block text-s font-medium text-secondary leading-none mb-s\"\n lang=${this.lang}\n key=\"category_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-category-restrictions-page\n coupon-item-categories=${ifDefined(this.data?._links['fx:coupon_item_categories'].href)}\n coupon=${this.href}\n class=\"border border-contrast-10 rounded-t-l rounded-b-l mb-s\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n >\n </x-category-restrictions-page>\n </foxy-pagination>\n\n <foxy-i18n\n class=\"block text-xs leading-s text-tertiary\"\n lang=${this.lang}\n key=\"category_restrictions_helper_text\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('category-restrictions:after')}\n `;\n }\n\n private __renderOptions() {\n type Option = { param: keyof Data; label?: string; flip?: boolean };\n\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('options', true);\n const isReadonly = this.readonlySelector.matches('options', true);\n const options: Option[] = [\n { param: 'multiple_codes_allowed' },\n { param: 'combinable' },\n { param: 'exclude_category_discounts', label: 'combine_with_category_discounts', flip: true },\n { param: 'exclude_line_item_discounts', label: 'combine_with_line_discounts', flip: true },\n { param: 'is_taxable', label: 'apply_taxes_before_coupon' },\n ];\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('options:before')}\n\n <x-group frame>\n <foxy-i18n\n class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n slot=\"header\"\n lang=${this.lang}\n key=\"option_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${options.map(option => {\n const value = this.form[option.param];\n const label = option.label ?? option.param;\n const color = isDisabled ? 'text-disabled' : 'text-secondary';\n\n return html`\n <x-checkbox\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n ?checked=${option.flip ? !value : value}\n class=\"m-m\"\n @change=${(evt: CheckboxChangeEvent) => {\n this.edit({ [option.param]: option.flip ? !evt.detail : evt.detail });\n }}\n >\n <div class=\"flex flex-col\">\n <foxy-i18n lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n <foxy-i18n\n class=\"transition-colors text-xs leading-s ${color}\"\n lang=${this.lang}\n key=\"${label}_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </x-checkbox>\n\n <div style=\"margin-left: calc(1.125rem + (var(--lumo-space-m) * 2))\">\n <div class=\"border-b border-contrast-10\"></div>\n </div>\n `;\n })}\n\n <x-checkbox\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n ?checked=${this.form.start_date || this.form.end_date}\n class=\"m-m\"\n @change=${(evt: Event) => {\n if (evt instanceof CheckboxChangeEvent) {\n let startDate: string | null = null;\n let endDate: string | null = null;\n\n if (evt.detail) {\n const today = Date.now();\n const oneMonthFromToday = new Date(today).setMonth(new Date().getMonth() + 1);\n\n startDate = serializeDate(new Date(today));\n endDate = serializeDate(new Date(oneMonthFromToday));\n }\n\n // TODO: remove ts directive when sdk types are fixed\n // @ts-expect-error sdk types don't include null\n this.edit({ start_date: startDate, end_date: endDate });\n }\n }}\n >\n <div class=\"flex flex-col\">\n <foxy-i18n lang=${this.lang} key=\"set_time_constraints\" ns=${this.ns}></foxy-i18n>\n <foxy-i18n\n class=\"text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n lang=${this.lang}\n key=\"set_time_constraints_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.form.start_date || this.form.end_date\n ? html`\n <div class=\"grid grid-cols-2 gap-m mt-m\" slot=\"content\">\n ${(['start_date', 'end_date'] as const).map(property => {\n const formValue = this.form[property];\n const pickerValue = formValue ? serializeDate(new Date(formValue)) : '';\n\n return html`\n <vaadin-date-picker\n placeholder=${this.t('select')}\n label=${this.t(property)}\n clear-button-visible\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .value=${live(pickerValue)}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as DatePickerElement;\n this.edit({ [property]: field.value });\n }}\n >\n </vaadin-date-picker>\n `;\n })}\n </div>\n `\n : ''}\n </x-checkbox>\n </x-group>\n\n ${this.renderTemplateOrSlot('options:after')}\n </div>\n `;\n }\n\n private __renderTimestamps() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate() {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete() {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"CouponForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponForm/CouponForm.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Data,\n RulesTierFieldParams,\n RulesTierParams,\n RulesTierSelectParams,\n RulesTierSwitchParams,\n} from './types';\nimport { Option, Type } from '../QueryBuilder/types';\nimport { PropertyDeclarations, TemplateResult, html } from 'lit-element';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { CategoryRestrictionsPage } from './private/CategoryRestrictionsPage';\nimport { Checkbox } from '../../private/Checkbox/Checkbox';\nimport { CheckboxChangeEvent } from '../../private/Checkbox/CheckboxChangeEvent';\nimport { Column } from '../Table/types';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DatePickerElement } from '@vaadin/vaadin-date-picker';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { FormDialog } from '../FormDialog';\nimport { Group } from '../../private/Group/Group';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/PropertyTable/PropertyTable';\nimport { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { live } from 'lit-html/directives/live';\nimport { operatorGreaterThanOrEqual } from '../QueryBuilder/icons/operatorGreaterThanOrEqual';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { serializeDate } from '../../../utils/serialize-date';\n\nconst NS = 'coupon-form';\nconst Base = ScopedElementsMixin(\n ThemeableMixin(ConfigurableMixin(ResponsiveMixin(TranslatableMixin(NucleonElement, NS))))\n);\n\n/**\n * Form element for creating or editing coupons (`fx:coupon`).\n *\n * @slot name:before\n * @slot name:after\n *\n * @slot rules:before\n * @slot rules:after\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot usage:before\n * @slot usage:after\n *\n * @slot product-restrictions:before\n * @slot product-restrictions:after\n *\n * @slot category-restrictions:before\n * @slot category-restrictions:after\n *\n * @slot options:before\n * @slot options:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-coupon-form\n * @since 1.15.0\n */\nexport class CouponForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-date-picker': customElements.get('vaadin-date-picker'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'iron-dropdown': customElements.get('iron-dropdown'),\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-query-builder': customElements.get('foxy-query-builder'),\n 'foxy-form-dialog': customElements.get('foxy-form-dialog'),\n 'foxy-pagination': customElements.get('foxy-pagination'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-table': customElements.get('foxy-table'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-category-restrictions-page': CategoryRestrictionsPage,\n 'x-property-table': PropertyTable,\n 'x-editable-list': EditableList,\n 'x-checkbox': Checkbox,\n 'x-group': Group,\n };\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n __codesTableQuery: { attribute: false },\n __itemCategories: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name_required',\n ({ name: v }) => !v || v.length <= 50 || 'name_too_long',\n ];\n }\n\n private __codesTableColumns: Column<Resource<Rels.CouponCodes>>[] = [\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"code\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <vaadin-button\n theme=\"tertiary contrast\"\n class=\"p-0\"\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#code-dialog')!;\n const button = evt.currentTarget as ButtonElement;\n\n dialog.href = ctx.data._links.self.href;\n dialog.show(button);\n }}\n >\n <span class=\"font-tnum\">${ctx.data.code}</span>\n </vaadin-button>\n `,\n },\n {\n header: ctx => html`<foxy-i18n lang=${ctx.lang} key=\"date_created\" ns=${ctx.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_created })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n hideBelow: 'sm',\n header: c => html`<foxy-i18n lang=${c.lang} key=\"date_modified\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`\n <foxy-i18n\n options=${JSON.stringify({ value: ctx.data.date_modified })}\n class=\"text-tertiary\"\n lang=${ctx.lang}\n key=\"date\"\n ns=${ctx.ns}\n >\n </foxy-i18n>\n `,\n },\n {\n header: c => html`<foxy-i18n lang=${c.lang} key=\"used_codes\" ns=${c.ns}></foxy-i18n>`,\n cell: ctx => html`${ctx.data.number_of_uses_to_date}`,\n },\n ];\n\n private static readonly __codesQueryOptions: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'used_codes', path: 'number_of_uses_to_date', type: Type.Number },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesTableQuery: string | null = null;\n\n private __itemCategories = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n\n return html`\n <div class=\"relative space-y-l\">\n ${hidden.matches('name', true) ? '' : this.__renderName()}\n ${hidden.matches('rules', true) ? '' : this.__renderRules()}\n ${hidden.matches('codes', true) || !this.data ? '' : this.__renderCodes()}\n ${hidden.matches('usage', true) ? '' : this.__renderUsage()}\n ${hidden.matches('product-restrictions', true) ? '' : this.__renderProductRestrictions()}\n ${hidden.matches('category-restrictions', true) || !this.data\n ? ''\n : this.__renderCategoryRestrictions()}\n ${hidden.matches('options', true) ? '' : this.__renderOptions()}\n ${hidden.matches('timestamps', true) ? '' : this.__renderTimestamps()}\n ${hidden.matches('create', true) || !!this.data ? '' : this.__renderCreate()}\n ${hidden.matches('delete', true) || !this.data ? '' : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !this.in('busy') && !this.in('fail'),\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=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Store = Resource<Rels.Store>;\n\n const coupon = await super._sendGet();\n const store = await super._fetch<Store>(coupon._links['fx:store'].href);\n const categoriesURL = new URL(store._links['fx:item_categories'].href);\n\n categoriesURL.searchParams.set('limit', '5');\n this.__itemCategories = categoriesURL.toString();\n\n return coupon;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderName() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('name:before')}\n\n <vaadin-text-field\n error-message=${this.__getErrorMessage('name')}\n helper-text=${this.t('coupon_name_helper_text')}\n data-testid=\"name\"\n class=\"w-full\"\n label=${this.t('name')}\n .checkValidity=${this.__getValidator('name')}\n .value=${this.form.name}\n ?disabled=${this.in('busy') || this.disabledSelector.matches('name', true)}\n ?readonly=${this.readonlySelector.matches('name', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newName = (evt.currentTarget as TextFieldElement).value;\n this.edit({ name: newName });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('name:after')}\n </div>\n `;\n }\n\n private __renderRulesPreset() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const details = this.form.coupon_discount_details;\n const type = this.form.coupon_discount_type;\n\n const presets = [\n { type: 'quantity_amount', details: 'allunits|2-2' },\n { type: 'quantity_percentage', details: 'allunits|5-10|10-20' },\n { type: 'quantity_amount', details: 'incremental|3-5' },\n { type: 'quantity_percentage', details: 'incremental|11-10|51-15|101-20' },\n { type: 'quantity_percentage', details: 'repeat|2-100' },\n { type: 'quantity_percentage', details: 'repeat|4-50' },\n { type: 'quantity_amount', details: 'single|5-10' },\n { type: 'price_percentage', details: 'single|99.99-10' },\n ] as const;\n\n const selectedPreset = presets.find(p => p.details === details && p.type === type);\n\n return html`\n <label\n class=${classMap({\n 'whitespace-nowrap block ring-primary-50 rounded px-xs -mx-xs transition-colors': true,\n 'text-body hover-text-primary focus-within-ring-2': !isDisabled && !isReadonly,\n 'text-disabled': isDisabled,\n 'text-secondary': isReadonly,\n })}\n >\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=\"preset\" ns=${this.ns}></foxy-i18n>\n\n <span class=\"relative font-medium flex items-center\">\n <span class=\"truncate\">\n ${selectedPreset\n ? this.t('discount_summary', { params: selectedPreset })\n : this.t('custom_discount')}\n </span>\n\n <iron-icon class=\"icon-inline text-xl ml-xs -mr-xs\" icon=\"icons:expand-more\"></iron-icon>\n\n <select\n class=\"opacity-0 absolute inset-0 focus-outline-none\"\n ?disabled=${isDisabled || isReadonly}\n @change=${(evt: Event) => {\n const select = evt.currentTarget as HTMLSelectElement;\n const preset = presets[select.selectedIndex];\n\n this.edit({\n coupon_discount_details: preset?.details ?? '',\n coupon_discount_type: preset?.type ?? 'quantity_amount',\n });\n }}\n >\n ${presets.map(option => {\n return html`\n <option value=${option.details} ?selected=${option === selectedPreset}>\n ${this.t('discount_summary', { params: option })}\n </option>\n `;\n })}\n\n <option value=\"custom\" ?selected=${!selectedPreset}>\n ${this.t('custom_discount')}\n </option>\n </select>\n </span>\n </label>\n `;\n }\n\n private __renderRulesTierSelect({ label, value, options, onChange }: RulesTierSelectParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n\n return html`\n <label\n class=${classMap({\n 'h-xs whitespace-nowrap block ring-primary-50 rounded pl-s transition-colors': true,\n 'hover-bg-primary hover-text-primary-contrast focus-within-ring-2': isInteractive,\n 'bg-primary-10 text-primary': isInteractive,\n 'bg-contrast-5 text-disabled': isDisabled,\n 'bg-contrast-5 text-secondary': isReadonly && !isDisabled,\n })}\n >\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n\n <span class=\"relative leading-none font-medium flex items-center h-full\">\n <span class=\"truncate\">${this.t(options[value])}</span>\n <iron-icon class=\"icon-inline text-xl ml-xs\" icon=\"icons:expand-more\"></iron-icon>\n\n <select\n class=\"opacity-0 absolute inset-0 focus-outline-none\"\n ?disabled=${!isInteractive}\n @change=${(evt: Event) => {\n const select = evt.currentTarget as HTMLSelectElement;\n onChange(select.options[select.selectedIndex].value);\n }}\n >\n ${Object.entries(options).map(([optionValue, optionKey]) => {\n return html`\n <option value=${optionValue} ?selected=${optionValue === value}>\n ${this.t(optionKey)}\n </option>\n `;\n })}\n </select>\n </span>\n </label>\n `;\n }\n\n private __renderRulesTierSwitch({ value, options, onChange }: RulesTierSwitchParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n const name = `switch-${Math.floor(Math.random() * Math.pow(10, 10))}`;\n const dotStyle = 'width: 0.4rem; height: 0.4rem';\n\n return html`\n <div\n class=${classMap({\n 'h-xs px-xs space-x-xs flex items-center rounded transition-colors': true,\n 'hover-bg-primary hover-text-primary-contrast focus-within-ring-2': isInteractive,\n 'ring-primary-50 cursor-pointer bg-primary-10 text-primary': isInteractive,\n 'bg-contrast-5 text-disabled': isDisabled,\n 'bg-contrast-5 text-secondary': isReadonly && !isDisabled,\n })}\n @click=${(evt: Event) => {\n if (!isInteractive) return;\n\n const target = evt.currentTarget as HTMLDivElement;\n const firstInput = target.querySelector('input') as HTMLInputElement;\n\n firstInput.focus();\n onChange(value === 0 ? 1 : 0);\n }}\n >\n <div class=\"leading-none font-medium px-xs pointer-events-none\">\n ${options.map((option, optionIndex) => {\n return html`\n <label>\n <foxy-i18n\n class=${classMap({ 'sr-only': optionIndex !== value })}\n lang=${this.lang}\n key=${option}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <input\n class=\"sr-only\"\n value=${option}\n name=${name}\n type=\"radio\"\n ?disabled=${!isInteractive}\n ?checked=${optionIndex === value}\n @change=${(evt: Event) => {\n const input = evt.currentTarget as HTMLInputElement;\n if (input.checked) onChange(optionIndex);\n }}\n />\n </label>\n `;\n })}\n </div>\n\n <div class=\"flex justify-evenly h-full ${value ? 'flex-col-reverse' : 'flex-col'}\">\n <div style=${dotStyle} class=\"bg-current rounded-full\"></div>\n <div style=${dotStyle} class=\"border border-current rounded-full\"></div>\n </div>\n </div>\n `;\n }\n\n private __renderRulesTierField({ value, label, onChange }: RulesTierFieldParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const isInteractive = !isDisabled && !isReadonly;\n\n return html`\n <label>\n <foxy-i18n class=\"sr-only\" lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n <input\n class=${classMap({\n 'transition-colors border p-xs h-xs font-medium text-m rounded w-xl': true,\n 'ring-primary-50 text-body bg-contrast-10': isInteractive,\n 'hover-bg-contrast-20': isInteractive,\n 'focus-outline-none focus-ring-2': isInteractive,\n 'text-disabled bg-contrast-5': isDisabled,\n 'text-secondary': isReadonly && !isDisabled,\n 'border-transparent border-solid': !isReadonly,\n 'border-dashed border-contrast-30': isReadonly,\n })}\n type=\"number\"\n min=\"0\"\n ?disabled=${!isInteractive}\n .value=${value}\n @input=${(evt: InputEvent) => {\n const input = evt.currentTarget as HTMLInputElement;\n onChange(input.value);\n }}\n />\n </label>\n `;\n }\n\n private __renderRulesTier(params: RulesTierParams) {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n const isReadonly = this.readonlySelector.matches('rules', true);\n const tier = params.tier ?? '0-0';\n const sign = tier.includes('+') ? '+' : '-';\n const [from, adjustment] = tier.split(/[-+]/).map(v => parseFloat(v));\n\n return html`\n <div\n aria-label=${this.t('tier')}\n class=${classMap({\n 'flex items-start justify-between rounded-t-l rounded-b-l': true,\n 'border border-contrast-10': true,\n 'border-dashed': !params.tier,\n })}\n >\n <div\n class=${classMap({\n 'transition-colors flex flex-wrap items-center gap-s p-s': true,\n 'text-tertiary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_if\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierSwitch({\n options: ['total', 'quantity'],\n value: params.source === 'price' ? 0 : 1,\n onChange: i => params.onChange({ source: i ? 'quantity' : 'price' }),\n })}\n\n <div class=\"h-s w-s\">${operatorGreaterThanOrEqual}</div>\n\n ${this.__renderRulesTierField({\n label: 'from',\n value: String(from),\n onChange: v => params.onChange({ tier: `${v}${sign}${adjustment}` }),\n })}\n\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_then\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierSwitch({\n options: ['reduce', 'increase'],\n value: sign === '-' ? 0 : 1,\n onChange: i => params.onChange({ tier: `${from}${i ? '+' : '-'}${adjustment}` }),\n })}\n\n <!---->\n\n ${this.__renderRulesTierSelect({\n options: {\n incremental: 'tier_incremental',\n allunits: 'tier_allunits',\n repeat: 'tier_repeat',\n single: 'tier_single',\n },\n value: params.method,\n label: 'target',\n onChange: v => params.onChange({ method: v }),\n })}\n\n <foxy-i18n\n class=\"uppercase text-s font-semibold\"\n lang=${this.lang}\n key=\"tier_by\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.__renderRulesTierField({\n label: 'adjustment',\n value: String(adjustment),\n onChange: v => params.onChange({ tier: `${from}${sign}${v}` }),\n })}\n\n <!---->\n\n ${this.__renderRulesTierSwitch({\n value: params.units === 'percentage' ? 0 : 1,\n options: ['%', '¤'],\n onChange: i => params.onChange({ units: i ? 'amount' : 'percentage' }),\n })}\n </div>\n\n ${params.tier\n ? html`\n <button\n aria-label=${this.t('delete')}\n class=${classMap({\n 'w-s h-s m-s flex-shrink-0 rounded transition-colors ring-primary-50': true,\n 'text-tertiary hover-text-secondary focus-outline-none focus-ring-2': !isDisabled,\n 'text-disabled cursor-default': isDisabled,\n })}\n ?disabled=${isDisabled}\n ?hidden=${isReadonly}\n @click=${() => params.onDelete()}\n >\n <iron-icon icon=\"lumo:cross\"></iron-icon>\n </button>\n `\n : ''}\n </div>\n `;\n }\n\n private __renderRulesUrlParameter() {\n const name = this.form.name ?? '';\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const details = this.form.coupon_discount_details ?? '';\n const urlParameter = `discount_${type}=${encodeURIComponent(`${name}{${details}}`)}`;\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n return html`\n <div class=\"text-xs flex space-x-xs leading-m\">\n <span\n class=${classMap({\n 'flex-shrink-0 transition-colors': true,\n 'text-tertiary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n lang=${this.lang} key=\"url_parameter\" ns=${this.ns}></foxy-i18n>:\n </span>\n\n <code\n class=${classMap({\n 'bg-contrast-5 transition-colors monospace truncate rounded px-xs': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n ${urlParameter}\n </code>\n\n <button\n class=${classMap({\n 'flex-shrink-0 transition-colors font-medium rounded px-xs': true,\n 'ring-primary-50 bg-primary-10 text-primary': !isDisabled,\n 'text-disabled bg-contrast-5': isDisabled,\n 'focus-outline-none focus-ring-2': !isDisabled,\n 'hover-bg-primary hover-text-primary-contrast': !isDisabled,\n })}\n ?disabled=${isDisabled}\n @click=${({ currentTarget }: { currentTarget: HTMLButtonElement }) => {\n navigator.clipboard\n .writeText(urlParameter)\n .then(() => (currentTarget.textContent = this.t('copied')))\n .catch(() => (currentTarget.textContent = this.t('error')))\n .then(() => setTimeout(() => (currentTarget.textContent = this.t('copy')), 2000));\n }}\n >\n ${this.t('copy')}\n </button>\n </div>\n `;\n }\n\n private __renderRulesDescription() {\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const details = this.form.coupon_discount_details ?? '';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n return html`\n <div class=\"text-xs leading-m\">\n <span class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-tertiary'}\">\n <foxy-i18n lang=${this.lang} key=\"description\" ns=${this.ns}></foxy-i18n>:\n </span>\n\n <foxy-i18n\n options=${JSON.stringify({ params: { details, type } })}\n class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n lang=${this.lang}\n key=\"discount_summary\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n `;\n }\n\n private __renderRules() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('rules', true);\n\n const details = this.form.coupon_discount_details ?? '';\n const tiers = details.split('|').filter(v => !!v.trim());\n const method = (/[-+]/.test(tiers[0]) ? null : tiers.shift()) ?? 'single';\n\n const type = this.form.coupon_discount_type ?? 'quantity_amount';\n const [source, units] = type.split('_');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('rules:before')}\n\n <div>\n <div class=\"flex items-center justify-between space-x-m text-s mb-xs\">\n <foxy-i18n\n class=${classMap({\n 'transition-colors font-medium flex-1': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"rule_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"min-w-0\">${this.__renderRulesPreset()}</div>\n </div>\n\n <div class=\"space-y-s\">\n ${repeat([...tiers, undefined], (tier, tierIndex) => {\n const onChange = (changedParams: Partial<RulesTierParams>) => {\n const newMethod = changedParams.method ?? method;\n const newSource = changedParams.source ?? source;\n const newUnits = changedParams.units ?? units;\n const newTier = changedParams.tier;\n const newTiers = [...tiers];\n\n if (newTier) {\n const newTierIndex = tier ? tierIndex : newTiers.length;\n const oldTiersCount = tier ? 1 : 0;\n newTiers.splice(newTierIndex, oldTiersCount, newTier);\n }\n\n this.edit({\n coupon_discount_details: `${newMethod}|${newTiers.join('|')}`,\n coupon_discount_type: `${newSource}_${newUnits}` as Data['coupon_discount_type'],\n });\n };\n\n const onDelete = () => {\n const newTiers = tiers.filter((_, i) => i !== tierIndex);\n this.edit({ coupon_discount_details: `${method}|${newTiers.join('|')}` });\n };\n\n return this.__renderRulesTier({ source, method, units, tier, onChange, onDelete });\n })}\n </div>\n\n <div class=\"space-y-xs mt-m\">\n ${this.__renderRulesUrlParameter()} ${this.__renderRulesDescription()}\n </div>\n </div>\n\n ${this.renderTemplateOrSlot('rules:after')}\n </div>\n `;\n }\n\n private __renderCodes() {\n const { disabledSelector, group, data, lang, ns } = this;\n\n const isDisabled = !this.in('idle') || disabledSelector.matches('codes', true);\n const filters = this.__codesTableQuery;\n const url = new URL(data!._links['fx:coupon_codes'].href);\n\n new URLSearchParams(filters ?? '').forEach((value, name) => url.searchParams.set(name, value));\n url.searchParams.set('limit', '5');\n\n const filterButtonLabel = filters === null ? 'filter' : 'clear_filters';\n const filterButtonIcon = `icons:${filters === null ? 'filter-list' : 'clear'}`;\n\n return html`\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:generate:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:generate:form').toString()}\n hiddencontrols=\"save-button ${this.hiddenSelector.zoom('codes:generate:form').toString()}\"\n related=${JSON.stringify([url.toString()])}\n header=\"generate\"\n parent=${data?._links['fx:generate_codes'].href ?? ''}\n group=${group}\n lang=${lang}\n form=\"foxy-generate-codes-form\"\n ns=${ns}\n id=\"generate-codes-dialog\"\n alert\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:form').toString()}\n hiddencontrols=${this.hiddenSelector.zoom('codes:form').toString()}\n header=\"code\"\n parent=${url.toString()}\n group=${group}\n lang=${lang}\n form=\"foxy-coupon-code-form\"\n ns=${ns}\n id=\"code-dialog\"\n >\n </foxy-form-dialog>\n\n <foxy-form-dialog\n disabledcontrols=${disabledSelector.zoom('codes:import:form').toString()}\n readonlycontrols=${this.readonlySelector.zoom('codes:import:form').toString()}\n hiddencontrols=\"save-button ${this.hiddenSelector.zoom('codes:generate:form').toString()}\"\n header=\"import\"\n parent=${data!._links['fx:coupon_codes'].href}\n group=${group}\n lang=${lang}\n form=\"foxy-coupon-codes-form\"\n ns=${ns}\n id=\"import-dialog\"\n >\n </foxy-form-dialog>\n\n <div>\n ${this.renderTemplateOrSlot('codes:before')}\n\n <div class=\"flex items-center justify-between mb-xs space-x-s\">\n <foxy-i18n\n class=\"text-s font-medium text-secondary leading-none flex-1\"\n lang=${lang}\n key=\"code_plural\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <vaadin-button\n theme=\"success tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#generate-codes-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"generate\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:add\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n theme=\"contrast tertiary small\"\n ?disabled=${isDisabled}\n @click=${(evt: CustomEvent) => {\n const dialog = this.renderRoot.querySelector<FormDialog>('#import-dialog');\n const button = evt.currentTarget as ButtonElement;\n dialog?.show(button);\n }}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=\"import\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:open-in-browser\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n theme=\"contrast ${filters === null ? 'tertiary' : ''} small\"\n ?disabled=${isDisabled}\n @click=${() => (this.__codesTableQuery = filters === null ? '' : null)}\n >\n <foxy-i18n class=\"text-s\" lang=${lang} key=${filterButtonLabel} ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=${filterButtonIcon}></iron-icon>\n </vaadin-button>\n </div>\n\n <foxy-query-builder\n class=\"bg-contrast-5 rounded-tl-l rounded-tr-s rounded-b-l p-m mb-s\"\n lang=${lang}\n ns=${ns}\n ?disabled=${isDisabled}\n ?hidden=${filters === null}\n .options=${CouponForm.__codesQueryOptions}\n .value=${filters}\n @change=${(evt: CustomEvent) => {\n const queryBuilder = evt.currentTarget as QueryBuilder;\n this.__codesTableQuery = queryBuilder.value;\n }}\n >\n </foxy-query-builder>\n\n <foxy-pagination first=${url.toString()} lang=${lang} ns=${ns} ?disabled=${isDisabled}>\n <foxy-table\n class=\"px-m mb-s border border-contrast-10 rounded-t-l rounded-b-l\"\n group=${group}\n lang=${lang}\n ns=${ns}\n .columns=${this.__codesTableColumns}\n >\n </foxy-table>\n </foxy-pagination>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderUsage() {\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('usage', true);\n const isReadonly = this.readonlySelector.matches('usage', true);\n const usesPerCoupon = this.form.number_of_uses_allowed ?? 0;\n const usesPerCustomer = this.form.number_of_uses_allowed_per_customer ?? 0;\n const usesPerCouponCode = this.form.number_of_uses_allowed_per_code ?? 0;\n\n return html`\n ${this.renderTemplateOrSlot('usage:before')}\n\n <div class=\"space-y-s\">\n <div class=\"grid gap-m grid-cols-3\">\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_coupon')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCoupon || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_coupon_code')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCouponCode || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed_per_code: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n <vaadin-integer-field\n placeholder=${this.t('unlimited')}\n label=${this.t('uses_per_customer')}\n class=\"w-full\"\n min=\"0\"\n prevent-invalid-input\n has-controls\n .value=${usesPerCustomer || ''}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ number_of_uses_allowed_per_customer: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n </div>\n\n <div\n class=${classMap({\n 'transition-colors text-xs leading-s': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n >\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCoupon })}\n lang=${this.lang}\n key=\"uses_per_coupon_summary${usesPerCoupon ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCouponCode })}\n lang=${this.lang}\n key=\"uses_per_coupon_code_summary${usesPerCouponCode ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n options=${JSON.stringify({ count: usesPerCustomer })}\n lang=${this.lang}\n key=\"uses_per_customer_summary${usesPerCustomer ? '' : '_0'}\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </div>\n\n ${this.renderTemplateOrSlot('usage:after')}\n `;\n }\n\n private __renderProductRestrictions() {\n const scope = 'product-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n const restrictions = this.form.product_code_restrictions ?? '';\n\n const groups = [\n { header: 'allow', items: [] as { label?: string; value: string }[] },\n { header: 'block', items: [] as { label?: string; value: string }[] },\n ];\n\n if (restrictions) {\n restrictions.split(',').forEach(value => {\n const isBlocklistValue = value.startsWith('-');\n const target = isBlocklistValue ? 1 : 0;\n const label = isBlocklistValue ? value.substring(1) : value;\n\n groups[target].items.push({ label, value });\n });\n }\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('product-restrictions:before')}\n\n <div class=\"space-y-s\">\n <x-group frame>\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-secondary'}\n slot=\"header\"\n lang=${this.lang}\n key=\"product_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <div class=\"grid sm-grid-cols-2 bg-contrast-10\" style=\"gap: 1px\">\n ${groups.map((group, index) => {\n return html`\n <x-group class=\"bg-base pt-m\">\n <foxy-i18n\n class=${isDisabled ? 'text-disabled' : 'text-tertiary'}\n slot=\"header\"\n lang=${this.lang}\n key=${group.header}\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-editable-list\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .items=${group.items}\n @change=${(evt: CustomEvent) => {\n const newItemsByGroup = [\n index === 0 ? (evt.currentTarget as EditableList).items : groups[0].items,\n index === 1 ? (evt.currentTarget as EditableList).items : groups[1].items,\n ];\n\n const newSanitizedItemsByGroup = newItemsByGroup\n .map(list => list.map(v => v.value.replace(/^[\\s-]*/, '').trimEnd()))\n .map(list => list.filter(v => !!v))\n .map(list => Array.from(new Set(list)));\n\n const newRestrictions = newSanitizedItemsByGroup[0]\n .concat(newSanitizedItemsByGroup[1].map(v => `-${v}`))\n .join(',');\n\n this.edit({ product_code_restrictions: newRestrictions });\n }}\n >\n </x-editable-list>\n </x-group>\n `;\n })}\n </div>\n </x-group>\n\n <foxy-i18n\n class=${classMap({\n 'block text-xs leading-s transition-colors': true,\n 'text-secondary': !isDisabled,\n 'text-disabled': isDisabled,\n })}\n lang=${this.lang}\n key=\"product_restrictions_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('product-restrictions:after')}\n </div>\n `;\n }\n\n private __renderCategoryRestrictions() {\n const scope = 'category-restrictions';\n const isDisabled = !this.in('idle') || this.disabledSelector.matches(scope, true);\n const isReadonly = this.readonlySelector.matches(scope, true);\n\n return html`\n ${this.renderTemplateOrSlot('category-restrictions:before')}\n\n <div class=\"space-y-xs\">\n <foxy-pagination\n first=${this.__itemCategories}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n >\n <foxy-i18n\n class=\"block text-s font-medium text-secondary leading-none mb-s\"\n lang=${this.lang}\n key=\"category_restrictions\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <x-category-restrictions-page\n coupon-item-categories=${ifDefined(this.data?._links['fx:coupon_item_categories'].href)}\n coupon=${this.href}\n class=\"border border-contrast-10 rounded-t-l rounded-b-l mb-s\"\n group=${this.group}\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n >\n </x-category-restrictions-page>\n </foxy-pagination>\n\n <foxy-i18n\n class=\"block text-xs leading-s text-tertiary\"\n lang=${this.lang}\n key=\"category_restrictions_helper_text\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.renderTemplateOrSlot('category-restrictions:after')}\n `;\n }\n\n private __renderOptions() {\n type Option = { param: keyof Data; label?: string; flip?: boolean };\n\n const isDisabled = !this.in('idle') || this.disabledSelector.matches('options', true);\n const isReadonly = this.readonlySelector.matches('options', true);\n const options: Option[] = [\n { param: 'multiple_codes_allowed' },\n { param: 'combinable' },\n { param: 'exclude_category_discounts', label: 'combine_with_category_discounts', flip: true },\n { param: 'exclude_line_item_discounts', label: 'combine_with_line_discounts', flip: true },\n { param: 'is_taxable', label: 'apply_taxes_before_coupon' },\n ];\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('options:before')}\n\n <x-group frame>\n <foxy-i18n\n class=\"transition-colors ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n slot=\"header\"\n lang=${this.lang}\n key=\"option_plural\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${options.map(option => {\n const value = this.form[option.param];\n const label = option.label ?? option.param;\n const color = isDisabled ? 'text-disabled' : 'text-secondary';\n\n return html`\n <x-checkbox\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n ?checked=${option.flip ? !value : value}\n class=\"m-m\"\n @change=${(evt: CheckboxChangeEvent) => {\n this.edit({ [option.param]: option.flip ? !evt.detail : evt.detail });\n }}\n >\n <div class=\"flex flex-col\">\n <foxy-i18n lang=${this.lang} key=${label} ns=${this.ns}></foxy-i18n>\n <foxy-i18n\n class=\"transition-colors text-xs leading-s ${color}\"\n lang=${this.lang}\n key=\"${label}_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </x-checkbox>\n\n <div style=\"margin-left: calc(1.125rem + (var(--lumo-space-m) * 2))\">\n <div class=\"border-b border-contrast-10\"></div>\n </div>\n `;\n })}\n\n <x-checkbox\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n ?checked=${this.form.start_date || this.form.end_date}\n class=\"m-m\"\n @change=${(evt: Event) => {\n if (evt instanceof CheckboxChangeEvent) {\n let startDate: string | null = null;\n let endDate: string | null = null;\n\n if (evt.detail) {\n const today = Date.now();\n const oneMonthFromToday = new Date(today).setMonth(new Date().getMonth() + 1);\n\n startDate = serializeDate(new Date(today));\n endDate = serializeDate(new Date(oneMonthFromToday));\n }\n\n this.edit({ start_date: startDate, end_date: endDate });\n }\n }}\n >\n <div class=\"flex flex-col\">\n <foxy-i18n lang=${this.lang} key=\"set_time_constraints\" ns=${this.ns}></foxy-i18n>\n <foxy-i18n\n class=\"text-xs leading-s ${isDisabled ? 'text-disabled' : 'text-secondary'}\"\n lang=${this.lang}\n key=\"set_time_constraints_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n\n ${this.form.start_date || this.form.end_date\n ? html`\n <div class=\"grid grid-cols-2 gap-m mt-m\" slot=\"content\">\n ${(['start_date', 'end_date'] as const).map(property => {\n const formValue = this.form[property];\n const pickerValue = formValue ? serializeDate(new Date(formValue)) : '';\n\n return html`\n <vaadin-date-picker\n placeholder=${this.t('select')}\n label=${this.t(property)}\n clear-button-visible\n ?disabled=${isDisabled}\n ?readonly=${isReadonly}\n .value=${live(pickerValue)}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as DatePickerElement;\n this.edit({ [property]: field.value });\n }}\n >\n </vaadin-date-picker>\n `;\n })}\n </div>\n `\n : ''}\n </x-checkbox>\n </x-group>\n\n ${this.renderTemplateOrSlot('options:after')}\n </div>\n `;\n }\n\n private __renderTimestamps() {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate() {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isBusy = this.in('busy');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${isBusy || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${this.submit}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete() {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
|