@foxy.io/elements 1.15.0-beta.5 → 1.15.0-beta.6
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 +2 -2
- 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-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +2 -2
- 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-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-items-form.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-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- 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-4cc1da27.js → shared-06e64d75.js} +1 -1
- package/dist/cdn/shared-11708514.js +1 -0
- package/dist/cdn/{shared-5639389e.js → shared-20b9ce70.js} +1 -1
- package/dist/cdn/{shared-0032dc09.js → shared-25e67340.js} +2 -2
- package/dist/cdn/shared-3be96355.js +1 -0
- package/dist/cdn/shared-5272c758.js +1 -0
- package/dist/cdn/shared-805d18a2.js +1 -0
- package/dist/cdn/shared-940a4826.js +1 -0
- package/dist/cdn/{shared-67ca44d2.js → shared-a7095b6a.js} +1 -1
- package/dist/cdn/{shared-b30bc42d.js → shared-ffb27563.js} +1 -1
- package/dist/cdn/translations/shared/en.json +3 -1
- package/dist/elements/public/CouponCard/CouponCard.js +3 -3
- package/dist/elements/public/CouponCard/CouponCard.js.map +1 -1
- package/dist/elements/public/CouponCodesForm/types.d.ts +3 -2
- package/dist/elements/public/CouponCodesForm/types.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js +3 -1
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.d.ts +4 -0
- package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js +32 -0
- package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js.map +1 -1
- package/dist/elements/public/GiftCardCard/GiftCardCard.js +6 -29
- package/dist/elements/public/GiftCardCard/GiftCardCard.js.map +1 -1
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.d.ts +6 -0
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js +45 -1
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js.map +1 -1
- package/dist/elements/public/GiftCardCodesForm/index.d.ts +1 -0
- package/dist/elements/public/GiftCardCodesForm/index.js +1 -0
- package/dist/elements/public/GiftCardCodesForm/index.js.map +1 -1
- package/dist/elements/public/GiftCardCodesForm/types.d.ts +3 -2
- package/dist/elements/public/GiftCardCodesForm/types.js.map +1 -1
- package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +3 -2
- package/dist/elements/public/GiftCardForm/GiftCardForm.js +29 -13
- package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
- package/dist/elements/public/I18n/format/index.js +2 -0
- package/dist/elements/public/I18n/format/index.js.map +1 -1
- package/dist/elements/public/I18n/format/relative.d.ts +6 -0
- package/dist/elements/public/I18n/format/relative.js +15 -0
- package/dist/elements/public/I18n/format/relative.js.map +1 -0
- package/package.json +2 -2
- package/dist/cdn/shared-05488216.js +0 -1
- package/dist/cdn/shared-0e4d19e2.js +0 -1
- package/dist/cdn/shared-43abbdd9.js +0 -1
- package/dist/cdn/shared-8a5ec3cf.js +0 -1
- package/dist/cdn/shared-cf6751d3.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-36629ded.js";import"./shared-bb824ab4.js";import"./shared-b30bc42d.js";import"./shared-0ced76a0.js";import"./shared-60126eee.js";import"./shared-46ee137f.js";import"./shared-cf6751d3.js";import"./shared-9221e6b2.js";import"./foxy-generate-codes-form.js";import"./foxy-coupon-codes-form.js";import"./foxy-coupon-code-form.js";import{T as e,o as t}from"./shared-08c63028.js";import"./foxy-pagination.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./foxy-i18n.js";import{_ as s,h as i}from"./shared-63eaded9.js";import{C as n,a as r}from"./shared-40b5267a.js";import{C as o}from"./shared-df730f90.js";import{N as a}from"./shared-39e3ae67.js";import{S as l,T as d,a as c,R as u}from"./shared-e68b9c83.js";import{i as m}from"./shared-6d45a07b.js";import{c as h}from"./shared-4e709717.js";import{E as p}from"./shared-09069d7c.js";import{G as g}from"./shared-02945b27.js";import{P as y}from"./shared-4dc6d228.js";import{l as f}from"./shared-07134f93.js";import{r as $}from"./shared-b710881a.js";import{s as x}from"./shared-2061be9a.js";import"./shared-df573cea.js";import"./shared-ff79f3f9.js";import"./shared-ec861f31.js";import"./shared-4cc1da27.js";import"./shared-0032dc09.js";import"./shared-f0a83bd6.js";import"./shared-5535f38f.js";import"./shared-0e4d19e2.js";import"./shared-b0f0e8b5.js";import"./shared-756034e4.js";import"./shared-66633ff7.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-a23cf7c8.js";import"./foxy-nucleon-element.js";let _,b=e=>e;class v extends(o(l(d(c(a))))){constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"x-checkbox":n}}static get properties(){return s(s({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){return i(_||(_=b` <div class="h-full flex items-center"> <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" @change="${0}"> <slot></slot> </x-checkbox> </div> `),!this.in("idle")||this.disabled,this.readonly,!!this.data,(e=>{e.detail?(this.edit({item_category_uri:this.itemCategory,coupon_uri:this.coupon}),this.submit()):this.delete()}))}}let S,k=e=>e;class w extends(o(l(d(c(a))))){constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item-content":v}}static get properties(){return s(s({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){var e;const t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:coupon_item_categories"][0],s=t?void 0:this.href,n=t?t._links.self.href:void 0;return i(S||(S=k` <x-category-restrictions-page-item-content item-category="${0}" coupon="${0}" parent="${0}" class="h-full" group="${0}" href="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> <slot></slot> </x-category-restrictions-page-item-content> `),this.itemCategory,this.coupon,m(s),this.group,m(n),this.lang,this.ns,!this.in("idle")||this.disabled,this.readonly)}}let T,j,C,R=e=>e;class O extends(o(l(d(c(a))))){constructor(){super(...arguments),this.couponItemCategories="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item":w}}static get properties(){return s(s({},super.properties),{},{couponItemCategories:{type:String,attribute:"coupon-item-categories"},coupon:{type:String}})}render(){var e,t,s,n,r;const o=null!==(t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:item_categories"])&&void 0!==t?t:[];let a=20;try{const e=parseInt(null!==(s=new URL(this.href).searchParams.get("limit"))&&void 0!==s?s:"");isNaN(e)||(a=e)}catch(e){}return i(T||(T=R` <div class="relative"> <div class="relative divide-y divide-contrast-10 ml-m"> ${0} </div> <div class="${0}"> <foxy-spinner layout="vertical" state="${0}" class="m-auto p-m bg-base rounded-t-l rounded-b-l shadow-xs" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),new Array(a).fill(0).map(((e,t)=>{const s=o[t];let n;if(s)try{const e=new URL(this.couponItemCategories),t=new URL(s._links.self.href).pathname.split("/").pop();e.searchParams.set("item_category_id",t),e.searchParams.set("limit","1"),n=e.toString()}catch(e){}return n?i(C||(C=R` <x-category-restrictions-page-item item-category="${0}" coupon="${0}" class="h-l" group="${0}" href="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> ${0} </x-category-restrictions-page-item> `),s._links.self.href,this.coupon,this.group,n,this.lang,this.ns,!this.in("idle")||this.disabled,this.readonly,null==s?void 0:s.name):i(j||(j=R`<div class="h-l"></div>`))})),h({"pointer-events-none absolute inset-0 flex transition-opacity":!0,"opacity-0":!!this.data}),this.in("fail")?"error":this.in({idle:"template"})?"empty":"busy",this.lang,this.ns,null!==(r=null===(n=customElements.get("foxy-spinner"))||void 0===n?void 0:n.defaultNS)&&void 0!==r?r:"")}}let E,q,D,N,P,U,I,z,J,M,Q,L,F,G,V,W,A,B,H,K,X,Y,Z,ee,te,se,ie,ne,re,oe,ae,le,de,ce,ue=e=>e;const me=l(d(o(u(c(a,"coupon-form")))));class he extends me{constructor(){super(...arguments),this.__codesTableColumns=[{header:e=>i(E||(E=ue`<foxy-i18n lang="${0}" key="code" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(q||(q=ue` <vaadin-button theme="tertiary contrast" class="p-0" @click="${0}"> <span class="font-tnum">${0}</span> </vaadin-button> `),(t=>{const s=this.renderRoot.querySelector("#code-dialog"),i=t.currentTarget;s.href=e.data._links.self.href,s.show(i)}),e.data.code)},{header:e=>i(D||(D=ue`<foxy-i18n lang="${0}" key="date_created" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(N||(N=ue` <foxy-i18n options="${0}" class="text-tertiary" lang="${0}" key="date" ns="${0}"> </foxy-i18n> `),JSON.stringify({value:e.data.date_created}),e.lang,e.ns)},{hideBelow:"sm",header:e=>i(P||(P=ue`<foxy-i18n lang="${0}" key="date_modified" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(U||(U=ue` <foxy-i18n options="${0}" class="text-tertiary" lang="${0}" key="date" ns="${0}"> </foxy-i18n> `),JSON.stringify({value:e.data.date_modified}),e.lang,e.ns)},{header:e=>i(I||(I=ue`<foxy-i18n lang="${0}" key="used_codes" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(z||(z=ue`${0}`),e.data.number_of_uses_to_date)}],this.__codesTableQuery=null,this.__itemCategories=""}static get scopedElements(){return{"vaadin-integer-field":customElements.get("vaadin-integer-field"),"vaadin-date-picker":customElements.get("vaadin-date-picker"),"vaadin-text-field":customElements.get("vaadin-text-field"),"vaadin-button":customElements.get("vaadin-button"),"iron-dropdown":customElements.get("iron-dropdown"),"iron-icon":customElements.get("iron-icon"),"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"foxy-query-builder":customElements.get("foxy-query-builder"),"foxy-form-dialog":customElements.get("foxy-form-dialog"),"foxy-pagination":customElements.get("foxy-pagination"),"foxy-spinner":customElements.get("foxy-spinner"),"foxy-table":customElements.get("foxy-table"),"foxy-i18n":customElements.get("foxy-i18n"),"x-category-restrictions-page":O,"x-property-table":y,"x-editable-list":p,"x-checkbox":n,"x-group":g}}static get properties(){return s(s({},super.properties),{},{__codesTableQuery:{attribute:!1},__itemCategories:{attribute:!1}})}static get v8n(){return[({name:e})=>!!e||"name_required",({name:e})=>!e||e.length<=50||"name_too_long"]}render(){var e,t;const s=this.hiddenSelector;return i(J||(J=ue` <div class="relative space-y-l"> ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} <div data-testid="spinner" class="${0}"> <foxy-spinner layout="vertical" class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l" state="${0}" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),s.matches("name",!0)?"":this.__renderName(),s.matches("rules",!0)?"":this.__renderRules(),s.matches("codes",!0)||!this.data?"":this.__renderCodes(),s.matches("usage",!0)?"":this.__renderUsage(),s.matches("product-restrictions",!0)?"":this.__renderProductRestrictions(),s.matches("category-restrictions",!0)||!this.data?"":this.__renderCategoryRestrictions(),s.matches("options",!0)?"":this.__renderOptions(),s.matches("timestamps",!0)?"":this.__renderTimestamps(),s.matches("create",!0)||this.data?"":this.__renderCreate(),s.matches("delete",!0)||!this.data?"":this.__renderDelete(),h({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!this.in("busy")&&!this.in("fail")}),this.in("fail")?"error":this.in("busy")?"busy":"empty",this.lang,this.ns,null!==(t=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"")}async _sendGet(){const e=await super._sendGet(),t=await super._fetch(e._links["fx:store"].href),s=new URL(t._links["fx:item_categories"].href);return s.searchParams.set("limit","5"),this.__itemCategories=s.toString(),e}__getErrorMessage(e){const t=this.errors.find((t=>t.startsWith(e)));return t?this.t(t.replace(e,"v8n")).toString():""}__getValidator(e){return()=>!this.errors.some((t=>t.startsWith(e)))}__renderName(){return i(M||(M=ue` <div> ${0} <vaadin-text-field error-message="${0}" helper-text="${0}" data-testid="name" class="w-full" label="${0}" .checkValidity="${0}" .value="${0}" ?disabled="${0}" ?readonly="${0}" required @keydown="${0}" @input="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot("name:before"),this.__getErrorMessage("name"),this.t("coupon_name_helper_text"),this.t("name"),this.__getValidator("name"),this.form.name,this.in("busy")||this.disabledSelector.matches("name",!0),this.readonlySelector.matches("name",!0),(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget.value;this.edit({name:t})}),this.renderTemplateOrSlot("name:after"))}__renderRulesPreset(){const e=!this.in("idle")||this.disabledSelector.matches("rules",!0),t=this.readonlySelector.matches("rules",!0),s=this.form.coupon_discount_details,n=this.form.coupon_discount_type,r=[{type:"quantity_amount",details:"allunits|2-2"},{type:"quantity_percentage",details:"allunits|5-10|10-20"},{type:"quantity_amount",details:"incremental|3-5"},{type:"quantity_percentage",details:"incremental|11-10|51-15|101-20"},{type:"quantity_percentage",details:"repeat|2-100"},{type:"quantity_percentage",details:"repeat|4-50"},{type:"quantity_amount",details:"single|5-10"},{type:"price_percentage",details:"single|99.99-10"}],o=r.find((e=>e.details===s&&e.type===n));return i(Q||(Q=ue` <label class="${0}"> <foxy-i18n class="sr-only" lang="${0}" key="preset" ns="${0}"></foxy-i18n> <span class="relative font-medium flex items-center"> <span class="truncate"> ${0} </span> <iron-icon class="icon-inline text-xl ml-xs -mr-xs" icon="icons:expand-more"></iron-icon> <select class="opacity-0 absolute inset-0 focus-outline-none" ?disabled="${0}" @change="${0}"> ${0} <option value="custom" ?selected="${0}"> ${0} </option> </select> </span> </label> `),h({"whitespace-nowrap block ring-primary-50 rounded px-xs -mx-xs transition-colors":!0,"text-body hover-text-primary focus-within-ring-2":!e&&!t,"text-disabled":e,"text-secondary":t}),this.lang,this.ns,o?this.t("discount_summary",{params:o}):this.t("custom_discount"),e||t,(e=>{var t,s;const i=e.currentTarget,n=r[i.selectedIndex];this.edit({coupon_discount_details:null!==(t=null==n?void 0:n.details)&&void 0!==t?t:"",coupon_discount_type:null!==(s=null==n?void 0:n.type)&&void 0!==s?s:"quantity_amount"})}),r.map((e=>i(L||(L=ue` <option value="${0}" ?selected="${0}"> ${0} </option> `),e.details,e===o,this.t("discount_summary",{params:e})))),!o,this.t("custom_discount"))}__renderRulesTierSelect({label:e,value:t,options:s,onChange:n}){const r=!this.in("idle")||this.disabledSelector.matches("rules",!0),o=this.readonlySelector.matches("rules",!0),a=!r&&!o;return i(F||(F=ue` <label class="${0}"> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <span class="relative leading-none font-medium flex items-center h-full"> <span class="truncate">${0}</span> <iron-icon class="icon-inline text-xl ml-xs" icon="icons:expand-more"></iron-icon> <select class="opacity-0 absolute inset-0 focus-outline-none" ?disabled="${0}" @change="${0}"> ${0} </select> </span> </label> `),h({"h-xs whitespace-nowrap block ring-primary-50 rounded pl-s transition-colors":!0,"hover-bg-primary hover-text-primary-contrast focus-within-ring-2":a,"bg-primary-10 text-primary":a,"bg-contrast-5 text-disabled":r,"bg-contrast-5 text-secondary":o&&!r}),this.lang,e,this.ns,this.t(s[t]),!a,(e=>{const t=e.currentTarget;n(t.options[t.selectedIndex].value)}),Object.entries(s).map((([e,s])=>i(G||(G=ue` <option value="${0}" ?selected="${0}"> ${0} </option> `),e,e===t,this.t(s)))))}__renderRulesTierSwitch({value:e,options:t,onChange:s}){const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=!n&&!r,a=`switch-${Math.floor(Math.random()*Math.pow(10,10))}`,l="width: 0.4rem; height: 0.4rem";return i(V||(V=ue` <div class="${0}" @click="${0}"> <div class="leading-none font-medium px-xs pointer-events-none"> ${0} </div> <div class="flex justify-evenly h-full ${0}"> <div style="${0}" class="bg-current rounded-full"></div> <div style="${0}" class="border border-current rounded-full"></div> </div> </div> `),h({"h-xs px-xs space-x-xs flex items-center rounded transition-colors":!0,"hover-bg-primary hover-text-primary-contrast focus-within-ring-2":o,"ring-primary-50 cursor-pointer bg-primary-10 text-primary":o,"bg-contrast-5 text-disabled":n,"bg-contrast-5 text-secondary":r&&!n}),(t=>{if(!o)return;t.currentTarget.querySelector("input").focus(),s(0===e?1:0)}),t.map(((t,n)=>i(W||(W=ue` <label> <foxy-i18n class="${0}" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <input class="sr-only" value="${0}" name="${0}" type="radio" ?disabled="${0}" ?checked="${0}" @change="${0}"> </label> `),h({"sr-only":n!==e}),this.lang,t,this.ns,t,a,!o,n===e,(e=>{e.currentTarget.checked&&s(n)})))),e?"flex-col-reverse":"flex-col",l,l)}__renderRulesTierField({value:e,label:t,onChange:s}){const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=!n&&!r;return i(A||(A=ue` <label> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <input class="${0}" type="number" min="0" ?disabled="${0}" .value="${0}" @input="${0}"> </label> `),this.lang,t,this.ns,h({"transition-colors border p-xs h-xs font-medium text-m rounded w-xl":!0,"ring-primary-50 text-body bg-contrast-10":o,"hover-bg-contrast-20":o,"focus-outline-none focus-ring-2":o,"text-disabled bg-contrast-5":n,"text-secondary":r&&!n,"border-transparent border-solid":!r,"border-dashed border-contrast-30":r}),!o,e,(e=>{const t=e.currentTarget;s(t.value)}))}__renderRulesTier(e){var s;const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=null!==(s=e.tier)&&void 0!==s?s:"0-0",a=o.includes("+")?"+":"-",[l,d]=o.split(/[-+]/).map((e=>parseFloat(e)));return i(B||(B=ue` <div aria-label="${0}" class="${0}"> <div class="${0}"> <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_if" ns="${0}"> </foxy-i18n> ${0} <div class="h-s w-s">${0}</div> ${0} <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_then" ns="${0}"> </foxy-i18n> ${0} ${0} <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_by" ns="${0}"> </foxy-i18n> ${0} ${0} </div> ${0} </div> `),this.t("tier"),h({"flex items-start justify-between rounded-t-l rounded-b-l":!0,"border border-contrast-10":!0,"border-dashed":!e.tier}),h({"transition-colors flex flex-wrap items-center gap-s p-s":!0,"text-tertiary":!n,"text-disabled":n}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["total","quantity"],value:"price"===e.source?0:1,onChange:t=>e.onChange({source:t?"quantity":"price"})}),t,this.__renderRulesTierField({label:"from",value:String(l),onChange:t=>e.onChange({tier:`${t}${a}${d}`})}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["reduce","increase"],value:"-"===a?0:1,onChange:t=>e.onChange({tier:`${l}${t?"+":"-"}${d}`})}),this.__renderRulesTierSelect({options:{incremental:"tier_incremental",allunits:"tier_allunits",repeat:"tier_repeat",single:"tier_single"},value:e.method,label:"target",onChange:t=>e.onChange({method:t})}),this.lang,this.ns,this.__renderRulesTierField({label:"adjustment",value:String(d),onChange:t=>e.onChange({tier:`${l}${a}${t}`})}),this.__renderRulesTierSwitch({value:"percentage"===e.units?0:1,options:["%","¤"],onChange:t=>e.onChange({units:t?"amount":"percentage"})}),e.tier?i(H||(H=ue` <button aria-label="${0}" class="${0}" ?disabled="${0}" ?hidden="${0}" @click="${0}"> <iron-icon icon="lumo:cross"></iron-icon> </button> `),this.t("delete"),h({"w-s h-s m-s flex-shrink-0 rounded transition-colors ring-primary-50":!0,"text-tertiary hover-text-secondary focus-outline-none focus-ring-2":!n,"text-disabled cursor-default":n}),n,r,(()=>e.onDelete())):"")}__renderRulesUrlParameter(){var e,t,s;const n=null!==(e=this.form.name)&&void 0!==e?e:"",r=null!==(t=this.form.coupon_discount_type)&&void 0!==t?t:"quantity_amount",o=null!==(s=this.form.coupon_discount_details)&&void 0!==s?s:"",a=`discount_${r}=${encodeURIComponent(`${n}{${o}}`)}`,l=!this.in("idle")||this.disabledSelector.matches("rules",!0);return i(K||(K=ue` <div class="text-xs flex space-x-xs leading-m"> <span class="${0}"> <foxy-i18n lang="${0}" key="url_parameter" ns="${0}"></foxy-i18n>: </span> <code class="${0}"> ${0} </code> <button class="${0}" ?disabled="${0}" @click="${0}"> ${0} </button> </div> `),h({"flex-shrink-0 transition-colors":!0,"text-tertiary":!l,"text-disabled":l}),this.lang,this.ns,h({"bg-contrast-5 transition-colors monospace truncate rounded px-xs":!0,"text-secondary":!l,"text-disabled":l}),a,h({"flex-shrink-0 transition-colors font-medium rounded px-xs":!0,"ring-primary-50 bg-primary-10 text-primary":!l,"text-disabled bg-contrast-5":l,"focus-outline-none focus-ring-2":!l,"hover-bg-primary hover-text-primary-contrast":!l}),l,(({currentTarget:e})=>{navigator.clipboard.writeText(a).then((()=>e.textContent=this.t("copied"))).catch((()=>e.textContent=this.t("error"))).then((()=>setTimeout((()=>e.textContent=this.t("copy")),2e3)))}),this.t("copy"))}__renderRulesDescription(){var e,t;const s=null!==(e=this.form.coupon_discount_type)&&void 0!==e?e:"quantity_amount",n=null!==(t=this.form.coupon_discount_details)&&void 0!==t?t:"",r=!this.in("idle")||this.disabledSelector.matches("rules",!0);return i(X||(X=ue` <div class="text-xs leading-m"> <span class="transition-colors ${0}"> <foxy-i18n lang="${0}" key="description" ns="${0}"></foxy-i18n>: </span> <foxy-i18n options="${0}" class="transition-colors ${0}" lang="${0}" key="discount_summary" ns="${0}"> </foxy-i18n> </div> `),r?"text-disabled":"text-tertiary",this.lang,this.ns,JSON.stringify({params:{details:n,type:s}}),r?"text-disabled":"text-secondary",this.lang,this.ns)}__renderRules(){var e,t,s;const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=(null!==(e=this.form.coupon_discount_details)&&void 0!==e?e:"").split("|").filter((e=>!!e.trim())),o=null!==(t=/[-+]/.test(r[0])?null:r.shift())&&void 0!==t?t:"single",a=null!==(s=this.form.coupon_discount_type)&&void 0!==s?s:"quantity_amount",[l,d]=a.split("_");return i(Y||(Y=ue` <div> ${0} <div> <div class="flex items-center justify-between space-x-m text-s mb-xs"> <foxy-i18n class="${0}" lang="${0}" key="rule_plural" ns="${0}"> </foxy-i18n> <div class="min-w-0">${0}</div> </div> <div class="space-y-s"> ${0} </div> <div class="space-y-xs mt-m"> ${0} ${0} </div> </div> ${0} </div> `),this.renderTemplateOrSlot("rules:before"),h({"transition-colors font-medium flex-1":!0,"text-secondary":!n,"text-disabled":n}),this.lang,this.ns,this.__renderRulesPreset(),$([...r,void 0],((e,t)=>this.__renderRulesTier({source:l,method:o,units:d,tier:e,onChange:s=>{var i,n,a;const c=null!==(i=s.method)&&void 0!==i?i:o,u=null!==(n=s.source)&&void 0!==n?n:l,m=null!==(a=s.units)&&void 0!==a?a:d,h=s.tier,p=[...r];if(h){const s=e?t:p.length,i=e?1:0;p.splice(s,i,h)}this.edit({coupon_discount_details:`${c}|${p.join("|")}`,coupon_discount_type:`${u}_${m}`})},onDelete:()=>{const e=r.filter(((e,s)=>s!==t));this.edit({coupon_discount_details:`${o}|${e.join("|")}`})}}))),this.__renderRulesUrlParameter(),this.__renderRulesDescription(),this.renderTemplateOrSlot("rules:after"))}__renderCodes(){var e;const{disabledSelector:t,group:s,data:n,lang:r,ns:o}=this,a=!this.in("idle")||t.matches("codes",!0),l=this.__codesTableQuery,d=new URL(n._links["fx:coupon_codes"].href);new URLSearchParams(null!=l?l:"").forEach(((e,t)=>d.searchParams.set(t,e))),d.searchParams.set("limit","5");const c=null===l?"filter":"clear_filters",u="icons:"+(null===l?"filter-list":"clear");return i(Z||(Z=ue` <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="save-button ${0}" related="${0}" header="generate" parent="${0}" group="${0}" lang="${0}" form="foxy-generate-codes-form" ns="${0}" id="generate-codes-dialog" alert> </foxy-form-dialog> <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" header="code" parent="${0}" group="${0}" lang="${0}" form="foxy-coupon-code-form" ns="${0}" id="code-dialog"> </foxy-form-dialog> <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="save-button ${0}" header="import" parent="${0}" group="${0}" lang="${0}" form="foxy-coupon-codes-form" ns="${0}" id="import-dialog"> </foxy-form-dialog> <div> ${0} <div class="flex items-center justify-between mb-xs space-x-s"> <foxy-i18n class="text-s font-medium text-secondary leading-none flex-1" lang="${0}" key="code_plural" ns="${0}"> </foxy-i18n> <vaadin-button theme="success tertiary small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="generate" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="icons:add"></iron-icon> </vaadin-button> <vaadin-button theme="contrast tertiary small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="import" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="icons:open-in-browser"></iron-icon> </vaadin-button> <vaadin-button theme="contrast ${0} small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="${0}"></iron-icon> </vaadin-button> </div> <foxy-query-builder class="bg-contrast-5 rounded-tl-l rounded-tr-s rounded-b-l p-m mb-s" lang="${0}" ns="${0}" ?disabled="${0}" ?hidden="${0}" .options="${0}" .value="${0}" @change="${0}"> </foxy-query-builder> <foxy-pagination first="${0}" lang="${0}" ns="${0}" ?disabled="${0}"> <foxy-table class="px-m mb-s border border-contrast-10 rounded-t-l rounded-b-l" group="${0}" lang="${0}" ns="${0}" .columns="${0}"> </foxy-table> </foxy-pagination> ${0} </div> `),t.zoom("codes:generate:form").toString(),this.readonlySelector.zoom("codes:generate:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),JSON.stringify([d.toString()]),null!==(e=null==n?void 0:n._links["fx:generate_codes"].href)&&void 0!==e?e:"",s,r,o,t.zoom("codes:form").toString(),this.readonlySelector.zoom("codes:form").toString(),this.hiddenSelector.zoom("codes:form").toString(),d.toString(),s,r,o,t.zoom("codes:import:form").toString(),this.readonlySelector.zoom("codes:import:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),n._links["fx:coupon_codes"].href,s,r,o,this.renderTemplateOrSlot("codes:before"),r,o,a,(e=>{const t=this.renderRoot.querySelector("#generate-codes-dialog"),s=e.currentTarget;null==t||t.show(s)}),r,o,a,(e=>{const t=this.renderRoot.querySelector("#import-dialog"),s=e.currentTarget;null==t||t.show(s)}),r,o,null===l?"tertiary":"",a,(()=>this.__codesTableQuery=null===l?"":null),r,c,o,u,r,o,a,null===l,he.__codesQueryOptions,l,(e=>{const t=e.currentTarget;this.__codesTableQuery=t.value}),d.toString(),r,o,a,s,r,o,this.__codesTableColumns,this.renderTemplateOrSlot("codes:after"))}__renderUsage(){var e,t,s;const n=!this.in("idle")||this.disabledSelector.matches("usage",!0),r=this.readonlySelector.matches("usage",!0),o=null!==(e=this.form.number_of_uses_allowed)&&void 0!==e?e:0,a=null!==(t=this.form.number_of_uses_allowed_per_customer)&&void 0!==t?t:0,l=null!==(s=this.form.number_of_uses_allowed_per_code)&&void 0!==s?s:0;return i(ee||(ee=ue` ${0} <div class="space-y-s"> <div class="grid gap-m grid-cols-3"> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> </div> <div class="${0}"> <foxy-i18n options="${0}" lang="${0}" key="uses_per_coupon_summary${0}" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="uses_per_coupon_code_summary${0}" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="uses_per_customer_summary${0}" ns="${0}"> </foxy-i18n> </div> </div> ${0} `),this.renderTemplateOrSlot("usage:before"),this.t("unlimited"),this.t("uses_per_coupon"),o||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed:parseInt(t.value)})}),this.t("unlimited"),this.t("uses_per_coupon_code"),l||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed_per_code:parseInt(t.value)})}),this.t("unlimited"),this.t("uses_per_customer"),a||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed_per_customer:parseInt(t.value)})}),h({"transition-colors text-xs leading-s":!0,"text-secondary":!n,"text-disabled":n}),JSON.stringify({count:o}),this.lang,o?"":"_0",this.ns,JSON.stringify({count:l}),this.lang,l?"":"_0",this.ns,JSON.stringify({count:a}),this.lang,a?"":"_0",this.ns,this.renderTemplateOrSlot("usage:after"))}__renderProductRestrictions(){var e;const t="product-restrictions",s=!this.in("idle")||this.disabledSelector.matches(t,!0),n=this.readonlySelector.matches(t,!0),r=null!==(e=this.form.product_code_restrictions)&&void 0!==e?e:"",o=[{header:"allow",items:[]},{header:"block",items:[]}];return r&&r.split(",").forEach((e=>{const t=e.startsWith("-"),s=t?1:0,i=t?e.substring(1):e;o[s].items.push({label:i,value:e})})),i(te||(te=ue` <div> ${0} <div class="space-y-s"> <x-group frame> <foxy-i18n class="${0}" slot="header" lang="${0}" key="product_restrictions" ns="${0}"> </foxy-i18n> <div class="grid sm-grid-cols-2 bg-contrast-10" style="gap:1px"> ${0} </div> </x-group> <foxy-i18n class="${0}" lang="${0}" key="product_restrictions_explainer" ns="${0}"> </foxy-i18n> </div> ${0} </div> `),this.renderTemplateOrSlot("product-restrictions:before"),s?"text-disabled":"text-secondary",this.lang,this.ns,o.map(((e,t)=>i(se||(se=ue` <x-group class="bg-base pt-m"> <foxy-i18n class="${0}" slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-editable-list lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}" .items="${0}" @change="${0}"> </x-editable-list> </x-group> `),s?"text-disabled":"text-tertiary",this.lang,e.header,this.ns,this.lang,this.ns,s,n,e.items,(e=>{const s=[0===t?e.currentTarget.items:o[0].items,1===t?e.currentTarget.items:o[1].items].map((e=>e.map((e=>e.value.replace(/^[\s-]*/,"").trimEnd())))).map((e=>e.filter((e=>!!e)))).map((e=>Array.from(new Set(e)))),i=s[0].concat(s[1].map((e=>`-${e}`))).join(",");this.edit({product_code_restrictions:i})})))),h({"block text-xs leading-s transition-colors":!0,"text-secondary":!s,"text-disabled":s}),this.lang,this.ns,this.renderTemplateOrSlot("product-restrictions:after"))}__renderCategoryRestrictions(){var e;const t="category-restrictions",s=!this.in("idle")||this.disabledSelector.matches(t,!0),n=this.readonlySelector.matches(t,!0);return i(ie||(ie=ue` ${0} <div class="space-y-xs"> <foxy-pagination first="${0}" lang="${0}" ns="${0}" ?disabled="${0}"> <foxy-i18n class="block text-s font-medium text-secondary leading-none mb-s" lang="${0}" key="category_restrictions" ns="${0}"> </foxy-i18n> <x-category-restrictions-page coupon-item-categories="${0}" coupon="${0}" class="border border-contrast-10 rounded-t-l rounded-b-l mb-s" group="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> </x-category-restrictions-page> </foxy-pagination> <foxy-i18n class="block text-xs leading-s text-tertiary" lang="${0}" key="category_restrictions_helper_text" ns="${0}"> </foxy-i18n> </div> ${0} `),this.renderTemplateOrSlot("category-restrictions:before"),this.__itemCategories,this.lang,this.ns,s,this.lang,this.ns,m(null===(e=this.data)||void 0===e?void 0:e._links["fx:coupon_item_categories"].href),this.href,this.group,this.lang,this.ns,s,n,this.lang,this.ns,this.renderTemplateOrSlot("category-restrictions:after"))}__renderOptions(){const e=!this.in("idle")||this.disabledSelector.matches("options",!0),t=this.readonlySelector.matches("options",!0);return i(ne||(ne=ue` <div> ${0} <x-group frame> <foxy-i18n class="transition-colors ${0}" slot="header" lang="${0}" key="option_plural" ns="${0}"> </foxy-i18n> ${0} <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" class="m-m" @change="${0}"> <div class="flex flex-col"> <foxy-i18n lang="${0}" key="set_time_constraints" ns="${0}"></foxy-i18n> <foxy-i18n class="text-xs leading-s ${0}" lang="${0}" key="set_time_constraints_explainer" ns="${0}"> </foxy-i18n> </div> ${0} </x-checkbox> </x-group> ${0} </div> `),this.renderTemplateOrSlot("options:before"),e?"text-disabled":"text-secondary",this.lang,this.ns,[{param:"multiple_codes_allowed"},{param:"combinable"},{param:"exclude_category_discounts",label:"combine_with_category_discounts",flip:!0},{param:"exclude_line_item_discounts",label:"combine_with_line_discounts",flip:!0},{param:"is_taxable",label:"apply_taxes_before_coupon"}].map((s=>{var n;const r=this.form[s.param],o=null!==(n=s.label)&&void 0!==n?n:s.param,a=e?"text-disabled":"text-secondary";return i(re||(re=ue` <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" class="m-m" @change="${0}"> <div class="flex flex-col"> <foxy-i18n lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <foxy-i18n class="transition-colors text-xs leading-s ${0}" lang="${0}" key="${0}_explainer" ns="${0}"> </foxy-i18n> </div> </x-checkbox> <div style="margin-left:calc(1.125rem + (var(--lumo-space-m) * 2))"> <div class="border-b border-contrast-10"></div> </div> `),e,t,s.flip?!r:r,(e=>{this.edit({[s.param]:s.flip?!e.detail:e.detail})}),this.lang,o,this.ns,a,this.lang,o,this.ns)})),e,t,this.form.start_date||this.form.end_date,(e=>{if(e instanceof r){let t=null,s=null;if(e.detail){const e=Date.now(),i=new Date(e).setMonth((new Date).getMonth()+1);t=x(new Date(e)),s=x(new Date(i))}this.edit({start_date:t,end_date:s})}}),this.lang,this.ns,e?"text-disabled":"text-secondary",this.lang,this.ns,this.form.start_date||this.form.end_date?i(oe||(oe=ue` <div class="grid grid-cols-2 gap-m mt-m" slot="content"> ${0} </div> `),["start_date","end_date"].map((s=>{const n=this.form[s],r=n?x(new Date(n)):"";return i(ae||(ae=ue` <vaadin-date-picker placeholder="${0}" label="${0}" clear-button-visible ?disabled="${0}" ?readonly="${0}" .value="${0}" @change="${0}"> </vaadin-date-picker> `),this.t("select"),this.t(s),e,t,f(r),(e=>{const t=e.currentTarget;this.edit({[s]:t.value})}))}))):"",this.renderTemplateOrSlot("options:after"))}__renderTimestamps(){return i(le||(le=ue` <div> ${0} <x-property-table data-testid="timestamps" .items="${0}"> </x-property-table> ${0} </div> `),this.renderTemplateOrSlot("timestamps:before"),["date_modified","date_created"].map((e=>{var t;return{name:this.t(e),value:(null===(t=this.data)||void 0===t?void 0:t[e])?this.t("date",{value:new Date(this.data[e])}):""}})),this.renderTemplateOrSlot("timestamps:after"))}__renderCreate(){const e=this.in({idle:{template:{clean:"invalid"}}}),t=this.in({idle:{template:{dirty:"invalid"}}}),s=this.in({idle:{snapshot:{clean:"invalid"}}}),n=this.in({idle:{snapshot:{dirty:"invalid"}}}),r=e||t||(s||n),o=this.in("busy");return i(de||(de=ue` <div> ${0} <vaadin-button data-testid="create" class="w-full" theme="primary success" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" key="create" lang="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("create:before"),o||r||this.disabledSelector.matches("create",!0),this.submit,this.ns,this.lang,this.renderTemplateOrSlot("create:after"))}__renderDelete(){return i(ce||(ce=ue` <div> <foxy-internal-confirm-dialog data-testid="confirm" message="delete_prompt" confirm="delete" cancel="cancel" header="delete" theme="primary error" lang="${0}" ns="${0}" id="confirm" @hide="${0}"> </foxy-internal-confirm-dialog> ${0} <vaadin-button data-testid="delete" theme="primary error" class="w-full" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" key="delete" lang="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.lang,this.ns,(e=>!e.detail.cancelled&&this.delete()),this.renderTemplateOrSlot("delete:before"),this.in("busy")||this.disabledSelector.matches("delete",!0),(e=>{this.renderRoot.querySelector("#confirm").show(e.currentTarget)}),this.ns,this.lang,this.renderTemplateOrSlot("delete:after"))}}he.__codesQueryOptions=[{label:"code",path:"code",type:e.String},{label:"used_codes",path:"number_of_uses_to_date",type:e.Number},{label:"date_created",path:"date_created",type:e.Date},{label:"date_modified",path:"date_modified",type:e.Date}],customElements.define("foxy-coupon-form",he);export{he as CouponForm};
|
|
1
|
+
import"./shared-36629ded.js";import"./shared-bb824ab4.js";import"./shared-ffb27563.js";import"./shared-0ced76a0.js";import"./shared-60126eee.js";import"./shared-46ee137f.js";import"./shared-5272c758.js";import"./shared-9221e6b2.js";import"./foxy-generate-codes-form.js";import"./foxy-coupon-codes-form.js";import"./foxy-coupon-code-form.js";import{T as e,o as t}from"./shared-08c63028.js";import"./foxy-pagination.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./shared-11708514.js";import{_ as s,h as i}from"./shared-63eaded9.js";import{C as n,a as r}from"./shared-40b5267a.js";import{C as o}from"./shared-df730f90.js";import{N as a}from"./shared-39e3ae67.js";import{S as l,T as d,a as c,R as u}from"./shared-e68b9c83.js";import{i as h}from"./shared-6d45a07b.js";import{c as m}from"./shared-4e709717.js";import{E as p}from"./shared-09069d7c.js";import{G as g}from"./shared-02945b27.js";import{P as f}from"./shared-4dc6d228.js";import{l as y}from"./shared-07134f93.js";import{r as $}from"./shared-b710881a.js";import{s as x}from"./shared-2061be9a.js";import"./shared-df573cea.js";import"./shared-ff79f3f9.js";import"./shared-ec861f31.js";import"./shared-06e64d75.js";import"./shared-25e67340.js";import"./shared-f0a83bd6.js";import"./shared-5535f38f.js";import"./shared-b0f0e8b5.js";import"./shared-756034e4.js";import"./shared-66633ff7.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-a23cf7c8.js";import"./foxy-nucleon-element.js";let _,b=e=>e;class v extends(o(l(d(c(a))))){constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"x-checkbox":n}}static get properties(){return s(s({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){return i(_||(_=b` <div class="h-full flex items-center"> <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" @change="${0}"> <slot></slot> </x-checkbox> </div> `),!this.in("idle")||this.disabled,this.readonly,!!this.data,(e=>{e.detail?(this.edit({item_category_uri:this.itemCategory,coupon_uri:this.coupon}),this.submit()):this.delete()}))}}let S,k=e=>e;class w extends(o(l(d(c(a))))){constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item-content":v}}static get properties(){return s(s({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){var e;const t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:coupon_item_categories"][0],s=t?void 0:this.href,n=t?t._links.self.href:void 0;return i(S||(S=k` <x-category-restrictions-page-item-content item-category="${0}" coupon="${0}" parent="${0}" class="h-full" group="${0}" href="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> <slot></slot> </x-category-restrictions-page-item-content> `),this.itemCategory,this.coupon,h(s),this.group,h(n),this.lang,this.ns,!this.in("idle")||this.disabled,this.readonly)}}let T,j,C,R=e=>e;class O extends(o(l(d(c(a))))){constructor(){super(...arguments),this.couponItemCategories="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item":w}}static get properties(){return s(s({},super.properties),{},{couponItemCategories:{type:String,attribute:"coupon-item-categories"},coupon:{type:String}})}render(){var e,t,s,n,r;const o=null!==(t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:item_categories"])&&void 0!==t?t:[];let a=20;try{const e=parseInt(null!==(s=new URL(this.href).searchParams.get("limit"))&&void 0!==s?s:"");isNaN(e)||(a=e)}catch(e){}return i(T||(T=R` <div class="relative"> <div class="relative divide-y divide-contrast-10 ml-m"> ${0} </div> <div class="${0}"> <foxy-spinner layout="vertical" state="${0}" class="m-auto p-m bg-base rounded-t-l rounded-b-l shadow-xs" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),new Array(a).fill(0).map(((e,t)=>{const s=o[t];let n;if(s)try{const e=new URL(this.couponItemCategories),t=new URL(s._links.self.href).pathname.split("/").pop();e.searchParams.set("item_category_id",t),e.searchParams.set("limit","1"),n=e.toString()}catch(e){}return n?i(C||(C=R` <x-category-restrictions-page-item item-category="${0}" coupon="${0}" class="h-l" group="${0}" href="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> ${0} </x-category-restrictions-page-item> `),s._links.self.href,this.coupon,this.group,n,this.lang,this.ns,!this.in("idle")||this.disabled,this.readonly,null==s?void 0:s.name):i(j||(j=R`<div class="h-l"></div>`))})),m({"pointer-events-none absolute inset-0 flex transition-opacity":!0,"opacity-0":!!this.data}),this.in("fail")?"error":this.in({idle:"template"})?"empty":"busy",this.lang,this.ns,null!==(r=null===(n=customElements.get("foxy-spinner"))||void 0===n?void 0:n.defaultNS)&&void 0!==r?r:"")}}let E,q,D,N,P,U,I,z,J,M,Q,L,F,G,V,W,A,B,H,K,X,Y,Z,ee,te,se,ie,ne,re,oe,ae,le,de,ce,ue=e=>e;const he=l(d(o(u(c(a,"coupon-form")))));class me extends he{constructor(){super(...arguments),this.__codesTableColumns=[{header:e=>i(E||(E=ue`<foxy-i18n lang="${0}" key="code" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(q||(q=ue` <vaadin-button theme="tertiary contrast" class="p-0" @click="${0}"> <span class="font-tnum">${0}</span> </vaadin-button> `),(t=>{const s=this.renderRoot.querySelector("#code-dialog"),i=t.currentTarget;s.href=e.data._links.self.href,s.show(i)}),e.data.code)},{header:e=>i(D||(D=ue`<foxy-i18n lang="${0}" key="date_created" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(N||(N=ue` <foxy-i18n options="${0}" class="text-tertiary" lang="${0}" key="date" ns="${0}"> </foxy-i18n> `),JSON.stringify({value:e.data.date_created}),e.lang,e.ns)},{hideBelow:"sm",header:e=>i(P||(P=ue`<foxy-i18n lang="${0}" key="date_modified" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(U||(U=ue` <foxy-i18n options="${0}" class="text-tertiary" lang="${0}" key="date" ns="${0}"> </foxy-i18n> `),JSON.stringify({value:e.data.date_modified}),e.lang,e.ns)},{header:e=>i(I||(I=ue`<foxy-i18n lang="${0}" key="used_codes" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>i(z||(z=ue`${0}`),e.data.number_of_uses_to_date)}],this.__codesTableQuery=null,this.__itemCategories=""}static get scopedElements(){return{"vaadin-integer-field":customElements.get("vaadin-integer-field"),"vaadin-date-picker":customElements.get("vaadin-date-picker"),"vaadin-text-field":customElements.get("vaadin-text-field"),"vaadin-button":customElements.get("vaadin-button"),"iron-dropdown":customElements.get("iron-dropdown"),"iron-icon":customElements.get("iron-icon"),"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"foxy-query-builder":customElements.get("foxy-query-builder"),"foxy-form-dialog":customElements.get("foxy-form-dialog"),"foxy-pagination":customElements.get("foxy-pagination"),"foxy-spinner":customElements.get("foxy-spinner"),"foxy-table":customElements.get("foxy-table"),"foxy-i18n":customElements.get("foxy-i18n"),"x-category-restrictions-page":O,"x-property-table":f,"x-editable-list":p,"x-checkbox":n,"x-group":g}}static get properties(){return s(s({},super.properties),{},{__codesTableQuery:{attribute:!1},__itemCategories:{attribute:!1}})}static get v8n(){return[({name:e})=>!!e||"name_required",({name:e})=>!e||e.length<=50||"name_too_long"]}render(){var e,t;const s=this.hiddenSelector;return i(J||(J=ue` <div class="relative space-y-l"> ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} ${0} <div data-testid="spinner" class="${0}"> <foxy-spinner layout="vertical" class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l" state="${0}" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),s.matches("name",!0)?"":this.__renderName(),s.matches("rules",!0)?"":this.__renderRules(),s.matches("codes",!0)||!this.data?"":this.__renderCodes(),s.matches("usage",!0)?"":this.__renderUsage(),s.matches("product-restrictions",!0)?"":this.__renderProductRestrictions(),s.matches("category-restrictions",!0)||!this.data?"":this.__renderCategoryRestrictions(),s.matches("options",!0)?"":this.__renderOptions(),s.matches("timestamps",!0)?"":this.__renderTimestamps(),s.matches("create",!0)||this.data?"":this.__renderCreate(),s.matches("delete",!0)||!this.data?"":this.__renderDelete(),m({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!this.in("busy")&&!this.in("fail")}),this.in("fail")?"error":this.in("busy")?"busy":"empty",this.lang,this.ns,null!==(t=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"")}async _sendGet(){const e=await super._sendGet(),t=await super._fetch(e._links["fx:store"].href),s=new URL(t._links["fx:item_categories"].href);return s.searchParams.set("limit","5"),this.__itemCategories=s.toString(),e}__getErrorMessage(e){const t=this.errors.find((t=>t.startsWith(e)));return t?this.t(t.replace(e,"v8n")).toString():""}__getValidator(e){return()=>!this.errors.some((t=>t.startsWith(e)))}__renderName(){return i(M||(M=ue` <div> ${0} <vaadin-text-field error-message="${0}" helper-text="${0}" data-testid="name" class="w-full" label="${0}" .checkValidity="${0}" .value="${0}" ?disabled="${0}" ?readonly="${0}" required @keydown="${0}" @input="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot("name:before"),this.__getErrorMessage("name"),this.t("coupon_name_helper_text"),this.t("name"),this.__getValidator("name"),this.form.name,this.in("busy")||this.disabledSelector.matches("name",!0),this.readonlySelector.matches("name",!0),(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget.value;this.edit({name:t})}),this.renderTemplateOrSlot("name:after"))}__renderRulesPreset(){const e=!this.in("idle")||this.disabledSelector.matches("rules",!0),t=this.readonlySelector.matches("rules",!0),s=this.form.coupon_discount_details,n=this.form.coupon_discount_type,r=[{type:"quantity_amount",details:"allunits|2-2"},{type:"quantity_percentage",details:"allunits|5-10|10-20"},{type:"quantity_amount",details:"incremental|3-5"},{type:"quantity_percentage",details:"incremental|11-10|51-15|101-20"},{type:"quantity_percentage",details:"repeat|2-100"},{type:"quantity_percentage",details:"repeat|4-50"},{type:"quantity_amount",details:"single|5-10"},{type:"price_percentage",details:"single|99.99-10"}],o=r.find((e=>e.details===s&&e.type===n));return i(Q||(Q=ue` <label class="${0}"> <foxy-i18n class="sr-only" lang="${0}" key="preset" ns="${0}"></foxy-i18n> <span class="relative font-medium flex items-center"> <span class="truncate"> ${0} </span> <iron-icon class="icon-inline text-xl ml-xs -mr-xs" icon="icons:expand-more"></iron-icon> <select class="opacity-0 absolute inset-0 focus-outline-none" ?disabled="${0}" @change="${0}"> ${0} <option value="custom" ?selected="${0}"> ${0} </option> </select> </span> </label> `),m({"whitespace-nowrap block ring-primary-50 rounded px-xs -mx-xs transition-colors":!0,"text-body hover-text-primary focus-within-ring-2":!e&&!t,"text-disabled":e,"text-secondary":t}),this.lang,this.ns,o?this.t("discount_summary",{params:o}):this.t("custom_discount"),e||t,(e=>{var t,s;const i=e.currentTarget,n=r[i.selectedIndex];this.edit({coupon_discount_details:null!==(t=null==n?void 0:n.details)&&void 0!==t?t:"",coupon_discount_type:null!==(s=null==n?void 0:n.type)&&void 0!==s?s:"quantity_amount"})}),r.map((e=>i(L||(L=ue` <option value="${0}" ?selected="${0}"> ${0} </option> `),e.details,e===o,this.t("discount_summary",{params:e})))),!o,this.t("custom_discount"))}__renderRulesTierSelect({label:e,value:t,options:s,onChange:n}){const r=!this.in("idle")||this.disabledSelector.matches("rules",!0),o=this.readonlySelector.matches("rules",!0),a=!r&&!o;return i(F||(F=ue` <label class="${0}"> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <span class="relative leading-none font-medium flex items-center h-full"> <span class="truncate">${0}</span> <iron-icon class="icon-inline text-xl ml-xs" icon="icons:expand-more"></iron-icon> <select class="opacity-0 absolute inset-0 focus-outline-none" ?disabled="${0}" @change="${0}"> ${0} </select> </span> </label> `),m({"h-xs whitespace-nowrap block ring-primary-50 rounded pl-s transition-colors":!0,"hover-bg-primary hover-text-primary-contrast focus-within-ring-2":a,"bg-primary-10 text-primary":a,"bg-contrast-5 text-disabled":r,"bg-contrast-5 text-secondary":o&&!r}),this.lang,e,this.ns,this.t(s[t]),!a,(e=>{const t=e.currentTarget;n(t.options[t.selectedIndex].value)}),Object.entries(s).map((([e,s])=>i(G||(G=ue` <option value="${0}" ?selected="${0}"> ${0} </option> `),e,e===t,this.t(s)))))}__renderRulesTierSwitch({value:e,options:t,onChange:s}){const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=!n&&!r,a=`switch-${Math.floor(Math.random()*Math.pow(10,10))}`,l="width: 0.4rem; height: 0.4rem";return i(V||(V=ue` <div class="${0}" @click="${0}"> <div class="leading-none font-medium px-xs pointer-events-none"> ${0} </div> <div class="flex justify-evenly h-full ${0}"> <div style="${0}" class="bg-current rounded-full"></div> <div style="${0}" class="border border-current rounded-full"></div> </div> </div> `),m({"h-xs px-xs space-x-xs flex items-center rounded transition-colors":!0,"hover-bg-primary hover-text-primary-contrast focus-within-ring-2":o,"ring-primary-50 cursor-pointer bg-primary-10 text-primary":o,"bg-contrast-5 text-disabled":n,"bg-contrast-5 text-secondary":r&&!n}),(t=>{if(!o)return;t.currentTarget.querySelector("input").focus(),s(0===e?1:0)}),t.map(((t,n)=>i(W||(W=ue` <label> <foxy-i18n class="${0}" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <input class="sr-only" value="${0}" name="${0}" type="radio" ?disabled="${0}" ?checked="${0}" @change="${0}"> </label> `),m({"sr-only":n!==e}),this.lang,t,this.ns,t,a,!o,n===e,(e=>{e.currentTarget.checked&&s(n)})))),e?"flex-col-reverse":"flex-col",l,l)}__renderRulesTierField({value:e,label:t,onChange:s}){const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=!n&&!r;return i(A||(A=ue` <label> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <input class="${0}" type="number" min="0" ?disabled="${0}" .value="${0}" @input="${0}"> </label> `),this.lang,t,this.ns,m({"transition-colors border p-xs h-xs font-medium text-m rounded w-xl":!0,"ring-primary-50 text-body bg-contrast-10":o,"hover-bg-contrast-20":o,"focus-outline-none focus-ring-2":o,"text-disabled bg-contrast-5":n,"text-secondary":r&&!n,"border-transparent border-solid":!r,"border-dashed border-contrast-30":r}),!o,e,(e=>{const t=e.currentTarget;s(t.value)}))}__renderRulesTier(e){var s;const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),o=null!==(s=e.tier)&&void 0!==s?s:"0-0",a=o.includes("+")?"+":"-",[l,d]=o.split(/[-+]/).map((e=>parseFloat(e)));return i(B||(B=ue` <div aria-label="${0}" class="${0}"> <div class="${0}"> <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_if" ns="${0}"> </foxy-i18n> ${0} <div class="h-s w-s">${0}</div> ${0} <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_then" ns="${0}"> </foxy-i18n> ${0} ${0} <foxy-i18n class="uppercase text-s font-semibold" lang="${0}" key="tier_by" ns="${0}"> </foxy-i18n> ${0} ${0} </div> ${0} </div> `),this.t("tier"),m({"flex items-start justify-between rounded-t-l rounded-b-l":!0,"border border-contrast-10":!0,"border-dashed":!e.tier}),m({"transition-colors flex flex-wrap items-center gap-s p-s":!0,"text-tertiary":!n,"text-disabled":n}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["total","quantity"],value:"price"===e.source?0:1,onChange:t=>e.onChange({source:t?"quantity":"price"})}),t,this.__renderRulesTierField({label:"from",value:String(l),onChange:t=>e.onChange({tier:`${t}${a}${d}`})}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["reduce","increase"],value:"-"===a?0:1,onChange:t=>e.onChange({tier:`${l}${t?"+":"-"}${d}`})}),this.__renderRulesTierSelect({options:{incremental:"tier_incremental",allunits:"tier_allunits",repeat:"tier_repeat",single:"tier_single"},value:e.method,label:"target",onChange:t=>e.onChange({method:t})}),this.lang,this.ns,this.__renderRulesTierField({label:"adjustment",value:String(d),onChange:t=>e.onChange({tier:`${l}${a}${t}`})}),this.__renderRulesTierSwitch({value:"percentage"===e.units?0:1,options:["%","¤"],onChange:t=>e.onChange({units:t?"amount":"percentage"})}),e.tier?i(H||(H=ue` <button aria-label="${0}" class="${0}" ?disabled="${0}" ?hidden="${0}" @click="${0}"> <iron-icon icon="lumo:cross"></iron-icon> </button> `),this.t("delete"),m({"w-s h-s m-s flex-shrink-0 rounded transition-colors ring-primary-50":!0,"text-tertiary hover-text-secondary focus-outline-none focus-ring-2":!n,"text-disabled cursor-default":n}),n,r,(()=>e.onDelete())):"")}__renderRulesUrlParameter(){var e,t,s;const n=null!==(e=this.form.name)&&void 0!==e?e:"",r=null!==(t=this.form.coupon_discount_type)&&void 0!==t?t:"quantity_amount",o=null!==(s=this.form.coupon_discount_details)&&void 0!==s?s:"",a=`discount_${r}=${encodeURIComponent(`${n}{${o}}`)}`,l=!this.in("idle")||this.disabledSelector.matches("rules",!0);return i(K||(K=ue` <div class="text-xs flex space-x-xs leading-m"> <span class="${0}"> <foxy-i18n lang="${0}" key="url_parameter" ns="${0}"></foxy-i18n>: </span> <code class="${0}"> ${0} </code> <button class="${0}" ?disabled="${0}" @click="${0}"> ${0} </button> </div> `),m({"flex-shrink-0 transition-colors":!0,"text-tertiary":!l,"text-disabled":l}),this.lang,this.ns,m({"bg-contrast-5 transition-colors monospace truncate rounded px-xs":!0,"text-secondary":!l,"text-disabled":l}),a,m({"flex-shrink-0 transition-colors font-medium rounded px-xs":!0,"ring-primary-50 bg-primary-10 text-primary":!l,"text-disabled bg-contrast-5":l,"focus-outline-none focus-ring-2":!l,"hover-bg-primary hover-text-primary-contrast":!l}),l,(({currentTarget:e})=>{navigator.clipboard.writeText(a).then((()=>e.textContent=this.t("copied"))).catch((()=>e.textContent=this.t("error"))).then((()=>setTimeout((()=>e.textContent=this.t("copy")),2e3)))}),this.t("copy"))}__renderRulesDescription(){var e,t;const s=null!==(e=this.form.coupon_discount_type)&&void 0!==e?e:"quantity_amount",n=null!==(t=this.form.coupon_discount_details)&&void 0!==t?t:"",r=!this.in("idle")||this.disabledSelector.matches("rules",!0);return i(X||(X=ue` <div class="text-xs leading-m"> <span class="transition-colors ${0}"> <foxy-i18n lang="${0}" key="description" ns="${0}"></foxy-i18n>: </span> <foxy-i18n options="${0}" class="transition-colors ${0}" lang="${0}" key="discount_summary" ns="${0}"> </foxy-i18n> </div> `),r?"text-disabled":"text-tertiary",this.lang,this.ns,JSON.stringify({params:{details:n,type:s}}),r?"text-disabled":"text-secondary",this.lang,this.ns)}__renderRules(){var e,t,s;const n=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=(null!==(e=this.form.coupon_discount_details)&&void 0!==e?e:"").split("|").filter((e=>!!e.trim())),o=null!==(t=/[-+]/.test(r[0])?null:r.shift())&&void 0!==t?t:"single",a=null!==(s=this.form.coupon_discount_type)&&void 0!==s?s:"quantity_amount",[l,d]=a.split("_");return i(Y||(Y=ue` <div> ${0} <div> <div class="flex items-center justify-between space-x-m text-s mb-xs"> <foxy-i18n class="${0}" lang="${0}" key="rule_plural" ns="${0}"> </foxy-i18n> <div class="min-w-0">${0}</div> </div> <div class="space-y-s"> ${0} </div> <div class="space-y-xs mt-m"> ${0} ${0} </div> </div> ${0} </div> `),this.renderTemplateOrSlot("rules:before"),m({"transition-colors font-medium flex-1":!0,"text-secondary":!n,"text-disabled":n}),this.lang,this.ns,this.__renderRulesPreset(),$([...r,void 0],((e,t)=>this.__renderRulesTier({source:l,method:o,units:d,tier:e,onChange:s=>{var i,n,a;const c=null!==(i=s.method)&&void 0!==i?i:o,u=null!==(n=s.source)&&void 0!==n?n:l,h=null!==(a=s.units)&&void 0!==a?a:d,m=s.tier,p=[...r];if(m){const s=e?t:p.length,i=e?1:0;p.splice(s,i,m)}this.edit({coupon_discount_details:`${c}|${p.join("|")}`,coupon_discount_type:`${u}_${h}`})},onDelete:()=>{const e=r.filter(((e,s)=>s!==t));this.edit({coupon_discount_details:`${o}|${e.join("|")}`})}}))),this.__renderRulesUrlParameter(),this.__renderRulesDescription(),this.renderTemplateOrSlot("rules:after"))}__renderCodes(){var e;const{disabledSelector:t,group:s,data:n,lang:r,ns:o}=this,a=!this.in("idle")||t.matches("codes",!0),l=this.__codesTableQuery,d=new URL(n._links["fx:coupon_codes"].href);new URLSearchParams(null!=l?l:"").forEach(((e,t)=>d.searchParams.set(t,e))),d.searchParams.set("limit","5");const c=null===l?"filter":"clear_filters",u="icons:"+(null===l?"filter-list":"clear");return i(Z||(Z=ue` <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="save-button current-balance ${0}" related="${0}" header="generate" parent="${0}" group="${0}" lang="${0}" form="foxy-generate-codes-form" ns="${0}" id="generate-codes-dialog" alert> </foxy-form-dialog> <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" header="code" parent="${0}" group="${0}" lang="${0}" form="foxy-coupon-code-form" ns="${0}" id="code-dialog"> </foxy-form-dialog> <foxy-form-dialog disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="save-button ${0}" header="import" parent="${0}" group="${0}" lang="${0}" form="foxy-coupon-codes-form" ns="${0}" id="import-dialog"> </foxy-form-dialog> <div> ${0} <div class="flex items-center justify-between mb-xs space-x-s"> <foxy-i18n class="text-s font-medium text-secondary leading-none flex-1" lang="${0}" key="code_plural" ns="${0}"> </foxy-i18n> <vaadin-button theme="success tertiary small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="generate" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="icons:add"></iron-icon> </vaadin-button> <vaadin-button theme="contrast tertiary small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="import" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="icons:open-in-browser"></iron-icon> </vaadin-button> <vaadin-button theme="contrast ${0} small" ?disabled="${0}" @click="${0}"> <foxy-i18n class="text-s" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <iron-icon class="icon-inline text-s" icon="${0}"></iron-icon> </vaadin-button> </div> <foxy-query-builder class="bg-contrast-5 rounded-tl-l rounded-tr-s rounded-b-l p-m mb-s" lang="${0}" ns="${0}" ?disabled="${0}" ?hidden="${0}" .options="${0}" .value="${0}" @change="${0}"> </foxy-query-builder> <foxy-pagination first="${0}" lang="${0}" ns="${0}" ?disabled="${0}"> <foxy-table class="px-m mb-s border border-contrast-10 rounded-t-l rounded-b-l" group="${0}" lang="${0}" ns="${0}" .columns="${0}"> </foxy-table> </foxy-pagination> ${0} </div> `),t.zoom("codes:generate:form").toString(),this.readonlySelector.zoom("codes:generate:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),JSON.stringify([d.toString()]),null!==(e=null==n?void 0:n._links["fx:generate_codes"].href)&&void 0!==e?e:"",s,r,o,t.zoom("codes:form").toString(),this.readonlySelector.zoom("codes:form").toString(),this.hiddenSelector.zoom("codes:form").toString(),d.toString(),s,r,o,t.zoom("codes:import:form").toString(),this.readonlySelector.zoom("codes:import:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),n._links["fx:coupon_codes"].href,s,r,o,this.renderTemplateOrSlot("codes:before"),r,o,a,(e=>{const t=this.renderRoot.querySelector("#generate-codes-dialog"),s=e.currentTarget;null==t||t.show(s)}),r,o,a,(e=>{const t=this.renderRoot.querySelector("#import-dialog"),s=e.currentTarget;null==t||t.show(s)}),r,o,null===l?"tertiary":"",a,(()=>this.__codesTableQuery=null===l?"":null),r,c,o,u,r,o,a,null===l,me.__codesQueryOptions,l,(e=>{const t=e.currentTarget;this.__codesTableQuery=t.value}),d.toString(),r,o,a,s,r,o,this.__codesTableColumns,this.renderTemplateOrSlot("codes:after"))}__renderUsage(){var e,t,s;const n=!this.in("idle")||this.disabledSelector.matches("usage",!0),r=this.readonlySelector.matches("usage",!0),o=null!==(e=this.form.number_of_uses_allowed)&&void 0!==e?e:0,a=null!==(t=this.form.number_of_uses_allowed_per_customer)&&void 0!==t?t:0,l=null!==(s=this.form.number_of_uses_allowed_per_code)&&void 0!==s?s:0;return i(ee||(ee=ue` ${0} <div class="space-y-s"> <div class="grid gap-m grid-cols-3"> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> <vaadin-integer-field placeholder="${0}" label="${0}" class="w-full" min="0" prevent-invalid-input has-controls .value="${0}" ?disabled="${0}" ?readonly="${0}" @change="${0}"> </vaadin-integer-field> </div> <div class="${0}"> <foxy-i18n options="${0}" lang="${0}" key="uses_per_coupon_summary${0}" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="uses_per_coupon_code_summary${0}" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="uses_per_customer_summary${0}" ns="${0}"> </foxy-i18n> </div> </div> ${0} `),this.renderTemplateOrSlot("usage:before"),this.t("unlimited"),this.t("uses_per_coupon"),o||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed:parseInt(t.value)})}),this.t("unlimited"),this.t("uses_per_coupon_code"),l||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed_per_code:parseInt(t.value)})}),this.t("unlimited"),this.t("uses_per_customer"),a||"",n,r,(e=>{const t=e.currentTarget;this.edit({number_of_uses_allowed_per_customer:parseInt(t.value)})}),m({"transition-colors text-xs leading-s":!0,"text-secondary":!n,"text-disabled":n}),JSON.stringify({count:o}),this.lang,o?"":"_0",this.ns,JSON.stringify({count:l}),this.lang,l?"":"_0",this.ns,JSON.stringify({count:a}),this.lang,a?"":"_0",this.ns,this.renderTemplateOrSlot("usage:after"))}__renderProductRestrictions(){var e;const t="product-restrictions",s=!this.in("idle")||this.disabledSelector.matches(t,!0),n=this.readonlySelector.matches(t,!0),r=null!==(e=this.form.product_code_restrictions)&&void 0!==e?e:"",o=[{header:"allow",items:[]},{header:"block",items:[]}];return r&&r.split(",").forEach((e=>{const t=e.startsWith("-"),s=t?1:0,i=t?e.substring(1):e;o[s].items.push({label:i,value:e})})),i(te||(te=ue` <div> ${0} <div class="space-y-s"> <x-group frame> <foxy-i18n class="${0}" slot="header" lang="${0}" key="product_restrictions" ns="${0}"> </foxy-i18n> <div class="grid sm-grid-cols-2 bg-contrast-10" style="gap:1px"> ${0} </div> </x-group> <foxy-i18n class="${0}" lang="${0}" key="product_restrictions_explainer" ns="${0}"> </foxy-i18n> </div> ${0} </div> `),this.renderTemplateOrSlot("product-restrictions:before"),s?"text-disabled":"text-secondary",this.lang,this.ns,o.map(((e,t)=>i(se||(se=ue` <x-group class="bg-base pt-m"> <foxy-i18n class="${0}" slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-editable-list lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}" .items="${0}" @change="${0}"> </x-editable-list> </x-group> `),s?"text-disabled":"text-tertiary",this.lang,e.header,this.ns,this.lang,this.ns,s,n,e.items,(e=>{const s=[0===t?e.currentTarget.items:o[0].items,1===t?e.currentTarget.items:o[1].items].map((e=>e.map((e=>e.value.replace(/^[\s-]*/,"").trimEnd())))).map((e=>e.filter((e=>!!e)))).map((e=>Array.from(new Set(e)))),i=s[0].concat(s[1].map((e=>`-${e}`))).join(",");this.edit({product_code_restrictions:i})})))),m({"block text-xs leading-s transition-colors":!0,"text-secondary":!s,"text-disabled":s}),this.lang,this.ns,this.renderTemplateOrSlot("product-restrictions:after"))}__renderCategoryRestrictions(){var e;const t="category-restrictions",s=!this.in("idle")||this.disabledSelector.matches(t,!0),n=this.readonlySelector.matches(t,!0);return i(ie||(ie=ue` ${0} <div class="space-y-xs"> <foxy-pagination first="${0}" lang="${0}" ns="${0}" ?disabled="${0}"> <foxy-i18n class="block text-s font-medium text-secondary leading-none mb-s" lang="${0}" key="category_restrictions" ns="${0}"> </foxy-i18n> <x-category-restrictions-page coupon-item-categories="${0}" coupon="${0}" class="border border-contrast-10 rounded-t-l rounded-b-l mb-s" group="${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}"> </x-category-restrictions-page> </foxy-pagination> <foxy-i18n class="block text-xs leading-s text-tertiary" lang="${0}" key="category_restrictions_helper_text" ns="${0}"> </foxy-i18n> </div> ${0} `),this.renderTemplateOrSlot("category-restrictions:before"),this.__itemCategories,this.lang,this.ns,s,this.lang,this.ns,h(null===(e=this.data)||void 0===e?void 0:e._links["fx:coupon_item_categories"].href),this.href,this.group,this.lang,this.ns,s,n,this.lang,this.ns,this.renderTemplateOrSlot("category-restrictions:after"))}__renderOptions(){const e=!this.in("idle")||this.disabledSelector.matches("options",!0),t=this.readonlySelector.matches("options",!0);return i(ne||(ne=ue` <div> ${0} <x-group frame> <foxy-i18n class="transition-colors ${0}" slot="header" lang="${0}" key="option_plural" ns="${0}"> </foxy-i18n> ${0} <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" class="m-m" @change="${0}"> <div class="flex flex-col"> <foxy-i18n lang="${0}" key="set_time_constraints" ns="${0}"></foxy-i18n> <foxy-i18n class="text-xs leading-s ${0}" lang="${0}" key="set_time_constraints_explainer" ns="${0}"> </foxy-i18n> </div> ${0} </x-checkbox> </x-group> ${0} </div> `),this.renderTemplateOrSlot("options:before"),e?"text-disabled":"text-secondary",this.lang,this.ns,[{param:"multiple_codes_allowed"},{param:"combinable"},{param:"exclude_category_discounts",label:"combine_with_category_discounts",flip:!0},{param:"exclude_line_item_discounts",label:"combine_with_line_discounts",flip:!0},{param:"is_taxable",label:"apply_taxes_before_coupon"}].map((s=>{var n;const r=this.form[s.param],o=null!==(n=s.label)&&void 0!==n?n:s.param,a=e?"text-disabled":"text-secondary";return i(re||(re=ue` <x-checkbox ?disabled="${0}" ?readonly="${0}" ?checked="${0}" class="m-m" @change="${0}"> <div class="flex flex-col"> <foxy-i18n lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <foxy-i18n class="transition-colors text-xs leading-s ${0}" lang="${0}" key="${0}_explainer" ns="${0}"> </foxy-i18n> </div> </x-checkbox> <div style="margin-left:calc(1.125rem + (var(--lumo-space-m) * 2))"> <div class="border-b border-contrast-10"></div> </div> `),e,t,s.flip?!r:r,(e=>{this.edit({[s.param]:s.flip?!e.detail:e.detail})}),this.lang,o,this.ns,a,this.lang,o,this.ns)})),e,t,this.form.start_date||this.form.end_date,(e=>{if(e instanceof r){let t=null,s=null;if(e.detail){const e=Date.now(),i=new Date(e).setMonth((new Date).getMonth()+1);t=x(new Date(e)),s=x(new Date(i))}this.edit({start_date:t,end_date:s})}}),this.lang,this.ns,e?"text-disabled":"text-secondary",this.lang,this.ns,this.form.start_date||this.form.end_date?i(oe||(oe=ue` <div class="grid grid-cols-2 gap-m mt-m" slot="content"> ${0} </div> `),["start_date","end_date"].map((s=>{const n=this.form[s],r=n?x(new Date(n)):"";return i(ae||(ae=ue` <vaadin-date-picker placeholder="${0}" label="${0}" clear-button-visible ?disabled="${0}" ?readonly="${0}" .value="${0}" @change="${0}"> </vaadin-date-picker> `),this.t("select"),this.t(s),e,t,y(r),(e=>{const t=e.currentTarget;this.edit({[s]:t.value})}))}))):"",this.renderTemplateOrSlot("options:after"))}__renderTimestamps(){return i(le||(le=ue` <div> ${0} <x-property-table data-testid="timestamps" .items="${0}"> </x-property-table> ${0} </div> `),this.renderTemplateOrSlot("timestamps:before"),["date_modified","date_created"].map((e=>{var t;return{name:this.t(e),value:(null===(t=this.data)||void 0===t?void 0:t[e])?this.t("date",{value:new Date(this.data[e])}):""}})),this.renderTemplateOrSlot("timestamps:after"))}__renderCreate(){const e=this.in({idle:{template:{clean:"invalid"}}}),t=this.in({idle:{template:{dirty:"invalid"}}}),s=this.in({idle:{snapshot:{clean:"invalid"}}}),n=this.in({idle:{snapshot:{dirty:"invalid"}}}),r=e||t||(s||n),o=this.in("busy");return i(de||(de=ue` <div> ${0} <vaadin-button data-testid="create" class="w-full" theme="primary success" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" key="create" lang="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("create:before"),o||r||this.disabledSelector.matches("create",!0),this.submit,this.ns,this.lang,this.renderTemplateOrSlot("create:after"))}__renderDelete(){return i(ce||(ce=ue` <div> <foxy-internal-confirm-dialog data-testid="confirm" message="delete_prompt" confirm="delete" cancel="cancel" header="delete" theme="primary error" lang="${0}" ns="${0}" id="confirm" @hide="${0}"> </foxy-internal-confirm-dialog> ${0} <vaadin-button data-testid="delete" theme="primary error" class="w-full" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" key="delete" lang="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.lang,this.ns,(e=>!e.detail.cancelled&&this.delete()),this.renderTemplateOrSlot("delete:before"),this.in("busy")||this.disabledSelector.matches("delete",!0),(e=>{this.renderRoot.querySelector("#confirm").show(e.currentTarget)}),this.ns,this.lang,this.renderTemplateOrSlot("delete:after"))}}me.__codesQueryOptions=[{label:"code",path:"code",type:e.String},{label:"used_codes",path:"number_of_uses_to_date",type:e.Number},{label:"date_created",path:"date_created",type:e.Date},{label:"date_modified",path:"date_modified",type:e.Date}],customElements.define("foxy-coupon-form",me);export{me as CouponForm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-9221e6b2.js";import"./foxy-spinner.js";import{h as e}from"./shared-63eaded9.js";import{a as r}from"./shared-e68b9c83.js";import{T as s}from"./shared-e209cb55.js";import"./shared-46ee137f.js";import"./shared-ff79f3f9.js";import"./shared-60126eee.js";import"./
|
|
1
|
+
import"./shared-9221e6b2.js";import"./foxy-spinner.js";import{h as e}from"./shared-63eaded9.js";import{a as r}from"./shared-e68b9c83.js";import{T as s}from"./shared-e209cb55.js";import"./shared-46ee137f.js";import"./shared-ff79f3f9.js";import"./shared-60126eee.js";import"./shared-11708514.js";import"./shared-5535f38f.js";import"./shared-df730f90.js";import"./shared-6d45a07b.js";import"./shared-39e3ae67.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-756034e4.js";import"./shared-4e709717.js";let a,t,d=e=>e;class o extends(r(s,"custom-field-card")){render(){return super.render({title:r=>e(a||(a=d`${0}`),r.name),subtitle:r=>e(t||(t=d`${0}`),r.value)})}}customElements.define("foxy-custom-field-card",o);export{o as CustomFieldCard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-bb824ab4.js";import"./shared-16f72e27.js";import"./shared-0ced76a0.js";import"./shared-
|
|
1
|
+
import"./shared-bb824ab4.js";import"./shared-16f72e27.js";import"./shared-0ced76a0.js";import"./shared-5272c758.js";import"./shared-9221e6b2.js";import"./foxy-spinner.js";import"./shared-11708514.js";import{h as e}from"./shared-63eaded9.js";import{C as t}from"./shared-df730f90.js";import{N as i}from"./shared-39e3ae67.js";import"./shared-46ee137f.js";import"./shared-df573cea.js";import"./shared-f0a83bd6.js";import{a as s,T as r,S as a}from"./shared-e68b9c83.js";import{c as d}from"./shared-4e709717.js";import"./shared-25e67340.js";import"./shared-66633ff7.js";import"./shared-06e64d75.js";import"./shared-36629ded.js";import"./shared-ec861f31.js";import{m as n}from"./shared-5535f38f.js";import{P as l}from"./shared-4dc6d228.js";import{i as o}from"./shared-6d45a07b.js";import"./shared-ff79f3f9.js";import"./shared-60126eee.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-756034e4.js";import"./shared-b0f0e8b5.js";let h,m,c,f,p,_,u=e=>e;const b=s(t(r(a(i))),"custom-field-form");class v extends b{constructor(){super(...arguments),this.templates={},this.__getValidator=n((e=>()=>!this.errors.some((t=>t.startsWith(e))))),this.__bindField=n((e=>t=>{const i=t.target;this.edit({[e]:i.value})})),this.__maybeRenderTextField=({field:t})=>{var i,s;const r=t.replace(/_/,"-");return this.hiddenSelector.matches(r)?"":e(h||(h=u` <div> ${0} <vaadin-text-field class="w-full" label="${0}" value="${0}" error-message="${0}" data-testid="${0}" .checkValidity="${0}" ?disabled="${0}" ?readonly="${0}" @input="${0}" @keydown="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot(`${r}:before`),this.t(t).toString(),o(null===(s=null===(i=this.form)||void 0===i?void 0:i[t])||void 0===s?void 0:s.toString()),this.__getErrorMessage(t),t,this.__getValidator(t),!this.in("idle")||this.disabledSelector.matches(r),this.readonlySelector.matches(r),this.__bindField(t),this.__handleKeyDown,this.renderTemplateOrSlot(`${r}:after`))},this.__renderVisibility=()=>{const{disabledSelector:t,form:i,lang:s,ns:r}=this,a=!this.in("idle")||t.matches("visibility",!0);return e(m||(m=u` <div data-testid="visibility"> ${0} <vaadin-checkbox ?disabled="${0}" ?checked="${0}" @change="${0}"> <foxy-i18n lang="${0}" key="show_on_receipt" ns="${0}"></foxy-i18n> </vaadin-checkbox> ${0} </div> `),this.renderTemplateOrSlot("visibility:before"),a,!i.is_hidden,(e=>{const t=e.currentTarget;this.edit({is_hidden:!t.checked})}),s,r,this.renderTemplateOrSlot("visibility:after"))},this.__renderTimestamps=()=>{const t=["date_modified","date_created"].map((e=>{var t;return{name:this.t(e),value:(null===(t=this.data)||void 0===t?void 0:t[e])?this.t("date",{value:new Date(this.data[e])}):""}}));return e(c||(c=u` <div> ${0} <x-property-table .items="${0}" data-testid="timestamps"></x-property-table> ${0} </div> `),this.renderTemplateOrSlot("timestamps:before"),t,this.renderTemplateOrSlot("timestamps:after"))},this.__renderDelete=()=>e(f||(f=u` <div> ${0} <vaadin-button class="w-full" data-testid="delete" theme="error primary" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" lang="${0}" key="delete"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("delete:before"),!this.in("idle")||this.disabledSelector.matches("delete",!0),this.__handleDeleteClick,this.ns,this.lang,this.renderTemplateOrSlot("delete:after")),this.__renderCreate=()=>{const t=this.in({idle:{template:{dirty:"valid"}}}),i=this.in({idle:{snapshot:{dirty:"valid"}}}),s=t||i;return e(p||(p=u` <div> ${0} <vaadin-button data-testid="create" class="w-full" theme="success primary" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" lang="${0}" key="create"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("create:before"),!this.in("idle")||!s||this.disabledSelector.matches("create",!0),(()=>this.submit()),this.ns,this.lang,this.renderTemplateOrSlot("create:after"))}}static get scopedElements(){return{"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"vaadin-text-field":customElements.get("vaadin-text-field"),"vaadin-checkbox":customElements.get("vaadin-checkbox"),"x-property-table":l,"vaadin-button":customElements.get("vaadin-button"),"foxy-i18n":customElements.get("foxy-i18n"),"foxy-spinner":customElements.get("foxy-spinner")}}static get v8n(){return[({value:e})=>e&&e.length>0||"value_required",({value:e})=>e&&e.length<=1e3||"value_too_long",({name:e})=>e&&e.length>0||"name_required",({name:e})=>e&&e.length<=500||"name_too_long"]}render(){const{hiddenSelector:t,data:i,lang:s,ns:r}=this,a=this.in("busy"),n=this.in("fail");return e(_||(_=u` <foxy-internal-confirm-dialog data-testid="confirm" message="delete_prompt" confirm="delete" cancel="cancel" header="delete" theme="primary error" lang="${0}" ns="${0}" id="confirm" @hide="${0}"> </foxy-internal-confirm-dialog> <div class="relative" aria-busy="${0}" aria-live="polite"> <div class="grid grid-cols-1 gap-l"> ${0} ${0} ${0} ${0} ${0} ${0} </div> <div data-testid="spinner" class="${0}"> <foxy-spinner layout="vertical" class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l" state="${0}" lang="${0}" ns="${0}"> </foxy-spinner> </div> </div> `),s,r,this.__handleConfirmHide,this.in("busy"),this.__maybeRenderTextField({field:"name"}),this.__maybeRenderTextField({field:"value"}),t.matches("visibility",!0)?"":this.__renderVisibility(),t.matches("timestamps",!0)||!i?"":this.__renderTimestamps(),t.matches("delete",!0)||!i?"":this.__renderDelete(),t.matches("create",!0)||i?"":this.__renderCreate(),d({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!a&&!n}),n?"error":a?"busy":"empty",s,r)}disconnectedCallback(){var e,t,i,s;super.disconnectedCallback(),null===(t=(e=this.__bindField.cache).clear)||void 0===t||t.call(e),null===(s=(i=this.__getValidator.cache).clear)||void 0===s||s.call(i)}get __confirmDialog(){return this.renderRoot.querySelector("#confirm")}__getErrorMessage(e){const t=this.errors.find((t=>t.startsWith(e)));return t?this.t(t.replace(e,"v8n")).toString():""}__handleKeyDown(e){"Enter"===e.key&&this.submit()}__handleDeleteClick(e){this.__confirmDialog.show(e.currentTarget)}__handleConfirmHide(e){e.detail.cancelled||this.delete()}}customElements.define("foxy-custom-field-form",v);export{v as CustomFieldForm};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-9221e6b2.js";import"./foxy-spinner.js";import"./
|
|
1
|
+
import"./shared-9221e6b2.js";import"./foxy-spinner.js";import"./shared-11708514.js";import{h as e}from"./shared-63eaded9.js";import{C as t}from"./shared-df730f90.js";import{N as s}from"./shared-39e3ae67.js";import{T as a,a as r}from"./shared-e68b9c83.js";import{c as i}from"./shared-4e709717.js";import"./shared-46ee137f.js";import"./shared-ff79f3f9.js";import"./shared-60126eee.js";import"./shared-5535f38f.js";import"./shared-6d45a07b.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-756034e4.js";let d,o,n,l,m,h,p,c=e=>e;const f=a(t(r(s,"customer-card")));class v extends f{constructor(){super(...arguments),this.templates={}}render(){var t,s;const a=this.hiddenSelector;return e(d||(d=c` <div aria-busy="${0}" aria-live="polite" class="relative leading-m font-lumo text-m"> <div class="${0}"> ${0} ${0} </div> <div class="${0}"> <foxy-spinner data-testid="spinner" state="${0}" class="m-auto" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),this.in("busy"),i({"leading-xs transition-opacity":!0,"opacity-0":!this.data}),a.matches("name",!0)?"":this.__renderName(),a.matches("email",!0)?"":this.__renderEmail(),i({"pointer-events-none absolute inset-0 flex transition-opacity":!0,"opacity-0":!!this.data}),this.in("fail")?"error":this.in({idle:"template"})?"empty":"busy",this.lang,this.ns,null!==(s=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==s?s:"")}__renderName(){var t,s;const a=this.data,r=`${null!==(t=null==a?void 0:a.first_name)&&void 0!==t?t:""} ${null!==(s=null==a?void 0:a.last_name)&&void 0!==s?s:""}`.trim()||"–",i=a?e(o||(o=c`${0}`),r):e(n||(n=c`​`));return e(l||(l=c` <div data-testid="name"> ${0} <div class="font-semibold text-body truncate">${0}</div> ${0} </div> `),this.renderTemplateOrSlot("name:before"),i,this.renderTemplateOrSlot("name:after"))}__renderEmail(){var t;const s=this.data,a=`${null!==(t=null==s?void 0:s.email)&&void 0!==t?t:""}`.trim()||"–",r=s?e(m||(m=c`${0}`),a):e(h||(h=c`​`));return e(p||(p=c` <div data-testid="email"> ${0} <div class="text-tertiary truncate">${0}</div> ${0} </div> `),this.renderTemplateOrSlot("email:before"),r,this.renderTemplateOrSlot("email:after"))}}customElements.define("foxy-customer-card",v);export{v as CustomerCard};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./shared-bb824ab4.js";import"./shared-0ced76a0.js";import"./shared-
|
|
1
|
+
import"./shared-bb824ab4.js";import"./shared-0ced76a0.js";import"./shared-5272c758.js";import"./shared-9221e6b2.js";import"./foxy-spinner.js";import"./shared-11708514.js";import{h as e}from"./shared-63eaded9.js";import{C as t}from"./shared-df730f90.js";import"./foxy-nucleon-element.js";import"./shared-46ee137f.js";import"./shared-df573cea.js";import"./shared-f0a83bd6.js";import{R as i,T as s,S as a,a as r}from"./shared-e68b9c83.js";import{c as d}from"./shared-4e709717.js";import"./shared-25e67340.js";import"./shared-66633ff7.js";import"./shared-06e64d75.js";import"./shared-36629ded.js";import"./shared-ec861f31.js";import{m as o}from"./shared-5535f38f.js";import{P as n}from"./shared-4dc6d228.js";import{i as l}from"./shared-6d45a07b.js";import{v as m}from"./shared-b738ee96.js";import{N as h}from"./shared-39e3ae67.js";import"./shared-ff79f3f9.js";import"./shared-60126eee.js";import"./shared-7f0a9790.js";import"./shared-7684cb05.js";import"./shared-756034e4.js";import"./shared-b0f0e8b5.js";let c,f,p,u,v=e=>e;const _=i(t(s(a(r(h,"customer-form")))));class b extends _{constructor(){super(...arguments),this.templates={},this.__getValidator=o((e=>()=>!this.errors.some((t=>t.startsWith(e))))),this.__maybeRenderTextField=({field:t})=>{var i,s;const a=t.replace(/_/,"-"),r=this.errors.find((e=>e.startsWith(t)));return this.hiddenSelector.matches(a,!0)?"":e(c||(c=v` <div> ${0} <vaadin-text-field class="w-full" label="${0}" value="${0}" error-message="${0}" data-testid="${0}" .checkValidity="${0}" ?disabled="${0}" ?readonly="${0}" @input="${0}" @keydown="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot(`${a}:before`),this.t(t).toString(),l(null===(s=null===(i=this.form)||void 0===i?void 0:i[t])||void 0===s?void 0:s.toString()),r?this.t(r.replace(t,"v8n")).toString():"",a,this.__getValidator(t),!this.in("idle")||this.disabledSelector.matches(a,!0),this.readonlySelector.matches(a,!0),(e=>this.edit({[t]:e.target.value})),(e=>"Enter"===e.key&&this.submit()),this.renderTemplateOrSlot(`${a}:after`))},this.__renderTimestamps=()=>e(f||(f=v` <div> ${0} <x-property-table data-testid="timestamps" .items="${0}"> </x-property-table> ${0} </div> `),this.renderTemplateOrSlot("timestamps:before"),["date_modified","date_created"].map((e=>{var t;return{name:this.t(e),value:(null===(t=this.data)||void 0===t?void 0:t[e])?this.t("date",{value:new Date(this.data[e])}):""}})),this.renderTemplateOrSlot("timestamps:after")),this.__renderAction=t=>{const{disabledSelector:i,href:s,lang:a,ns:r}=this,d=this.in({idle:{template:{dirty:"valid"}}}),o=this.in({idle:{snapshot:{dirty:"valid"}}}),n=!this.in("idle")||i.matches(t,!0),l=d||o;return e(p||(p=v` <div> ${0} <vaadin-button class="w-full" theme="${0}" data-testid="${0}" ?disabled="${0}" @click="${0}"> <foxy-i18n ns="${0}" key="${0}" lang="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot(`${t}:before`),this.in("idle")?"primary "+(s?"error":"success"):"",t,this.in({idle:"template"})&&!l||n,(e=>{if("delete"===t){this.renderRoot.querySelector("#confirm").show(e.currentTarget)}else this.submit()}),r,t,a,this.renderTemplateOrSlot(`${t}:after`))}}static get scopedElements(){return{"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"vaadin-text-field":customElements.get("vaadin-text-field"),"x-property-table":n,"vaadin-button":customElements.get("vaadin-button"),"foxy-spinner":customElements.get("foxy-spinner"),"foxy-i18n":customElements.get("foxy-i18n")}}static get v8n(){return[({first_name:e})=>!e||e.length<=50||"first_name_too_long",({last_name:e})=>!e||e.length<=50||"last_name_too_long",({tax_id:e})=>!e||e.length<=50||"tax_id_too_long",({email:e})=>e&&e.length>0||"email_required",({email:e})=>e&&e.length<=100||"email_too_long",({email:e})=>e&&m(e)||"email_invalid_email"]}render(){var t,i;const{hiddenSelector:s,href:a,lang:r,ns:o}=this,n=a?"delete":"create",l=this.in("busy"),m=this.in("fail");return e(u||(u=v` <foxy-internal-confirm-dialog message="delete_prompt" confirm="delete" cancel="cancel" header="delete" theme="primary error" lang="${0}" ns="${0}" id="confirm" data-testid="confirm" @hide="${0}"> </foxy-internal-confirm-dialog> <div data-testid="wrapper" aria-busy="${0}" aria-live="polite" class="space-y-l relative"> <div class="grid grid-cols-1 sm-grid-cols-2 gap-m"> ${0} ${0} ${0} ${0} </div> ${0} ${0} <div data-testid="spinner" class="${0}"> <foxy-spinner layout="vertical" class="m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l" state="${0}" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> </div> `),r,o,(e=>{e.detail.cancelled||this.delete()}),l,this.__maybeRenderTextField({field:"first_name"}),this.__maybeRenderTextField({field:"last_name"}),this.__maybeRenderTextField({field:"email"}),this.__maybeRenderTextField({field:"tax_id"}),s.matches("timestamps",!0)||!a?"":this.__renderTimestamps(),s.matches(n)?"":this.__renderAction(n),d({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!l&&!m}),m?"error":l?"busy":"empty",r,o,null!==(i=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==i?i:"")}disconnectedCallback(){var e,t;super.disconnectedCallback(),null===(t=(e=this.__getValidator.cache).clear)||void 0===t||t.call(e)}}customElements.define("foxy-customer-form",b);export{b as CustomerForm};
|