@foxy.io/elements 1.18.0-beta.3 → 1.18.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-api-browser.js +1 -1
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-coupon-card.js +1 -1
  12. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  13. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  15. package/dist/cdn/foxy-coupon-form.js +1 -1
  16. package/dist/cdn/foxy-custom-field-card.js +1 -1
  17. package/dist/cdn/foxy-custom-field-form.js +1 -1
  18. package/dist/cdn/foxy-customer-card.js +1 -1
  19. package/dist/cdn/foxy-customer-form.js +1 -1
  20. package/dist/cdn/foxy-customer-portal.js +1 -1
  21. package/dist/cdn/foxy-customer.js +1 -1
  22. package/dist/cdn/foxy-customers-table.js +1 -1
  23. package/dist/cdn/foxy-discount-card.js +1 -1
  24. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  25. package/dist/cdn/foxy-email-template-form.js +1 -1
  26. package/dist/cdn/foxy-error-entry-card.js +1 -1
  27. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  28. package/dist/cdn/foxy-gift-card-card.js +1 -1
  29. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  30. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  31. package/dist/cdn/foxy-gift-card-form.js +1 -1
  32. package/dist/cdn/foxy-item-card.js +1 -1
  33. package/dist/cdn/foxy-item-form.js +1 -1
  34. package/dist/cdn/foxy-item-option-card.js +1 -1
  35. package/dist/cdn/foxy-item-option-form.js +1 -1
  36. package/dist/cdn/foxy-nucleon-element.js +1 -1
  37. package/dist/cdn/foxy-pagination.js +1 -1
  38. package/dist/cdn/foxy-payment-card.js +1 -1
  39. package/dist/cdn/foxy-payment-method-card.js +1 -1
  40. package/dist/cdn/foxy-report-form.js +1 -1
  41. package/dist/cdn/foxy-reports-table.js +1 -1
  42. package/dist/cdn/foxy-shipment-card.js +1 -1
  43. package/dist/cdn/foxy-sign-in-form.js +1 -1
  44. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  45. package/dist/cdn/foxy-subscription-card.js +1 -1
  46. package/dist/cdn/foxy-subscription-form.js +1 -1
  47. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  48. package/dist/cdn/foxy-table.js +1 -1
  49. package/dist/cdn/foxy-tax-card.js +1 -1
  50. package/dist/cdn/foxy-tax-form.js +1 -1
  51. package/dist/cdn/foxy-template-config-form.js +1 -1
  52. package/dist/cdn/foxy-template-form.js +1 -1
  53. package/dist/cdn/foxy-transaction-card.js +1 -1
  54. package/dist/cdn/foxy-transaction.js +1 -1
  55. package/dist/cdn/foxy-transactions-table.js +1 -1
  56. package/dist/cdn/foxy-user-form.js +1 -1
  57. package/dist/cdn/foxy-users-table.js +1 -1
  58. package/dist/cdn/foxy-webhook-card.js +1 -1
  59. package/dist/cdn/foxy-webhook-form.js +1 -1
  60. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  61. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  62. package/dist/cdn/{shared-fcbf9a41.js → shared-07731632.js} +1 -1
  63. package/dist/cdn/{shared-6af95088.js → shared-131115c9.js} +1 -1
  64. package/dist/cdn/{shared-9ef13805.js → shared-3d7a47dd.js} +1 -1
  65. package/dist/cdn/{shared-381aa7fe.js → shared-56b6461b.js} +1 -1
  66. package/dist/cdn/{shared-5482630e.js → shared-74b7ad17.js} +1 -1
  67. package/dist/cdn/shared-77fad85a.js +1 -0
  68. package/dist/cdn/{shared-5e43b817.js → shared-82b1a365.js} +1 -1
  69. package/dist/cdn/{shared-d91ed0a8.js → shared-b5195ae3.js} +1 -1
  70. package/dist/cdn/{shared-4773b634.js → shared-ba3054c3.js} +1 -1
  71. package/dist/cdn/{shared-2ca6d676.js → shared-d90d6140.js} +1 -1
  72. package/dist/cdn/{shared-68ab037d.js → shared-e3b29ffa.js} +1 -1
  73. package/dist/elements/public/NucleonElement/NucleonElement.js +2 -1
  74. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  75. package/package.json +1 -1
  76. package/dist/cdn/shared-619adfad.js +0 -1
@@ -1 +1 @@
1
- import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-f2639daf.js";import"./shared-71acf673.js";import"./shared-412670b8.js";import"./shared-3e3c07ac.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-generate-codes-form.js";import"./foxy-coupon-codes-form.js";import"./foxy-copy-to-clipboard.js";import"./foxy-coupon-code-form.js";import{T as e}from"./shared-872ceacf.js";import"./foxy-pagination.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./shared-2f0efb2c.js";import{_ as t}from"./shared-ca0f14c1.js";import{h as s}from"./shared-dc73b9a5.js";import{C as i,a}from"./shared-ff1d9854.js";import{C as r}from"./shared-85d45495.js";import{N as n}from"./shared-619adfad.js";import{S as o,T as l,a as d,R as c}from"./shared-f31044b8.js";import{i as u}from"./shared-9803aa7c.js";import{c as m}from"./shared-4e709717.js";import{E as h}from"./shared-37b61010.js";import{G as p}from"./shared-189dfb49.js";import{P as f}from"./shared-fd595d0a.js";import{l as y}from"./shared-22ba9566.js";import{o as g}from"./shared-f9f9ed5b.js";import{r as $}from"./shared-a0c6a159.js";import{s as x}from"./shared-2061be9a.js";import"./shared-084b6372.js";import"./shared-91b86bae.js";import"./shared-c63ba384.js";import"./shared-ec7cfc23.js";import"./shared-11f0daea.js";import"./shared-4560425c.js";import"./shared-23fd456c.js";import"./shared-3a7cf739.js";import"./shared-99940888.js";import"./shared-4c0520f6.js";import"./shared-6f89d2e0.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-d91ed0a8.js";import"./foxy-nucleon-element.js";let _,b=e=>e;const v=r(o(l(n)));class S extends v{constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"x-checkbox":i}}static get properties(){return t(t({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){return s(_||(_=b` <div class="h-full flex items-center"> <x-checkbox data-testid="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 k,w=e=>e;const T=r(o(l(n)));class j extends T{constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item-content":S}}static get properties(){return t(t({},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],i=t?void 0:this.href,a=t?t._links.self.href:void 0;return s(k||(k=w` <x-category-restrictions-page-item-content item-category="${0}" data-testid="content" coupon="${0}" parent="${0}" class="h-full" group="${0}" href="${0}" ?disabled="${0}" ?readonly="${0}"> <slot></slot> </x-category-restrictions-page-item-content> `),this.itemCategory,this.coupon,u(i),this.group,u(a),!this.in("idle")||this.disabled,this.readonly)}}let C,R,E,O=e=>e;const q=r(o(l(d(n))));class N extends q{constructor(){super(...arguments),this.couponItemCategories="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item":j}}static get properties(){return t(t({},super.properties),{},{couponItemCategories:{type:String,attribute:"coupon-item-categories"},coupon:{type:String}})}render(){var e,t,i,a,r;const n=null!==(t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:item_categories"])&&void 0!==t?t:[];let o=20;try{const e=parseInt(null!==(i=new URL(this.href).searchParams.get("limit"))&&void 0!==i?i:"");isNaN(e)||(o=e)}catch(e){}return s(C||(C=O` <div class="relative"> <div class="relative divide-y divide-contrast-10 ml-m"> ${0} </div> <div data-testid="spinner" 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(o).fill(0).map(((e,t)=>{const i=n[t];let a;if(i)try{const e=new URL(this.couponItemCategories),t=new URL(i._links.self.href).pathname.split("/").pop();e.searchParams.set("item_category_id",t),e.searchParams.set("limit","1"),a=e.toString()}catch(e){}return a?s(E||(E=O` <x-category-restrictions-page-item data-testclass="item" item-category="${0}" coupon="${0}" class="h-l" group="${0}" href="${0}" ?disabled="${0}" ?readonly="${0}"> ${0} </x-category-restrictions-page-item> `),i._links.self.href,this.coupon,this.group,a,!this.in("idle")||this.disabled,this.readonly,null==i?void 0:i.name):s(R||(R=O`<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===(a=customElements.get("foxy-spinner"))||void 0===a?void 0:a.defaultNS)&&void 0!==r?r:"")}}let D,P,U,I,z,J,M,Q,L,F,G,V,W,A,B,H,K,X,Y,Z,ee,te,se,ie,ae,re,ne,oe,le,de,ce,ue,me,he,pe=e=>e;const fe=o(l(r(c(d(n,"coupon-form")))));class ye extends fe{constructor(){super(...arguments),this.__codesTableColumns=[{header:e=>s(D||(D=pe`<foxy-i18n lang="${0}" key="code" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>{const t=!this.in("idle")||this.disabledSelector.matches("codes",!0);return s(P||(P=pe` <div class="flex items-center gap-xs"> <vaadin-button theme="tertiary-inline contrast" class="p-0" ?disabled="${0}" @click="${0}"> <span class="font-tnum">${0}</span> </vaadin-button> <foxy-copy-to-clipboard ?disabled="${0}" text="${0}" lang="${0}" ns="${0} copy-to-clipboard"> </foxy-copy-to-clipboard> </div> `),t,(t=>{const s=this.renderRoot.querySelector("#code-dialog"),i=t.currentTarget;s.href=e.data._links.self.href,s.show(i)}),e.data.code,t,e.data.code,e.lang,e.ns)}},{header:e=>s(U||(U=pe`<foxy-i18n lang="${0}" key="date_created" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(I||(I=pe` <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=>s(z||(z=pe`<foxy-i18n lang="${0}" key="date_modified" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(J||(J=pe` <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=>s(M||(M=pe`<foxy-i18n lang="${0}" key="used_codes" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(Q||(Q=pe`${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-copy-to-clipboard":customElements.get("foxy-copy-to-clipboard"),"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":N,"x-property-table":f,"x-editable-list":h,"x-checkbox":i,"x-group":p}}static get properties(){return t(t({},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 i=this.hiddenSelector;return s(L||(L=pe` <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> `),i.matches("name",!0)?"":this.__renderName(),i.matches("rules",!0)?"":this.__renderRules(),i.matches("codes",!0)||!this.data?"":this.__renderCodes(),i.matches("usage",!0)?"":this.__renderUsage(),i.matches("product-restrictions",!0)?"":this.__renderProductRestrictions(),i.matches("category-restrictions",!0)||!this.data?"":this.__renderCategoryRestrictions(),i.matches("options",!0)?"":this.__renderOptions(),i.matches("timestamps",!0)?"":this.__renderTimestamps(),i.matches("create",!0)||this.data?"":this.__renderCreate(),i.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("idle")}),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 s(F||(F=pe` <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("idle")||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),i=this.readonlySelector.matches("rules",!0),a=this.form.coupon_discount_details,r=this.form.coupon_discount_type,n=[{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=n.find((e=>e.details===a&&e.type===r));return s(G||(G=pe` <label data-testid="rules:preset" 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 data-testclass="interactive editable" data-testid="rules:preset: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&&!i,"text-disabled":e,"text-secondary":i}),this.lang,this.ns,o?this.t("discount_summary",{params:t(t({},o),{},{ns:this.ns})}):this.t("custom_discount"),e||i,(e=>{var t,s;const i=e.currentTarget,a=n[i.selectedIndex];this.edit({coupon_discount_details:null!==(t=null==a?void 0:a.details)&&void 0!==t?t:"",coupon_discount_type:null!==(s=null==a?void 0:a.type)&&void 0!==s?s:"quantity_amount"})}),n.map((e=>s(V||(V=pe` <option value="${0}" ?selected="${0}"> ${0} </option> `),e.details,e===o,this.t("discount_summary",{params:t(t({},e),{},{ns:this.ns})})))),!o,this.t("custom_discount"))}__renderRulesTierSelect({label:e,value:t,options:i,onChange:a}){const r=!this.in("idle")||this.disabledSelector.matches("rules",!0),n=this.readonlySelector.matches("rules",!0),o=!r&&!n;return s(W||(W=pe` <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 data-testclass="interactive editable" 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":o,"bg-primary-10 text-primary":o,"bg-contrast-5 text-disabled":r,"bg-contrast-5 text-secondary":n&&!r}),this.lang,e,this.ns,this.t(i[t]),!o,(e=>{const t=e.currentTarget;a(t.options[t.selectedIndex].value)}),Object.entries(i).map((([e,i])=>s(A||(A=pe` <option value="${0}" ?selected="${0}"> ${0} </option> `),e,e===t,this.t(i)))))}__renderRulesTierSwitch({value:e,options:t,onChange:i}){const a=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),n=!a&&!r,o=`switch-${Math.floor(Math.random()*Math.pow(10,10))}`,l="width: 0.4rem; height: 0.4rem";return s(B||(B=pe` <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":n,"ring-primary-50 cursor-pointer bg-primary-10 text-primary":n,"bg-contrast-5 text-disabled":a,"bg-contrast-5 text-secondary":r&&!a}),(t=>{if(!n)return;t.currentTarget.querySelector("input").focus(),i(0===e?1:0)}),t.map(((t,a)=>s(H||(H=pe` <label> <foxy-i18n class="${0}" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <input data-testclass="interactive editable" class="sr-only" value="${0}" name="${0}" type="radio" ?disabled="${0}" ?checked="${0}" @change="${0}"> </label> `),m({"sr-only":a!==e}),this.lang,t,this.ns,t,o,!n,a===e,(e=>{e.currentTarget.checked&&i(a)})))),e?"flex-col-reverse":"flex-col",l,l)}__renderRulesTierField({value:e,label:t,onChange:i}){const a=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),n=!a&&!r;return s(K||(K=pe` <label> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <input data-testclass="interactive editable" 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":n,"hover-bg-contrast-20":n,"focus-outline-none focus-ring-2":n,"text-disabled bg-contrast-5":a,"text-secondary":r&&!a,"border-transparent border-solid":!r,"border-dashed border-contrast-30":r}),!n,e,(e=>{const t=e.currentTarget;i(t.value)}))}__renderRulesTier(e){var t;const i=!this.in("idle")||this.disabledSelector.matches("rules",!0),a=this.readonlySelector.matches("rules",!0),r=null!==(t=e.tier)&&void 0!==t?t:"0-0",n=r.includes("+")?"+":"-",[o,l]=r.split(/[-+]/).map((e=>parseFloat(e)));return s(X||(X=pe` <div data-testclass="rules:tier" 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":!i,"text-disabled":i}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["total","quantity"],value:"price"===e.source?0:1,onChange:t=>e.onChange({source:t?"quantity":"price"})}),g,this.__renderRulesTierField({label:"from",value:String(o),onChange:t=>e.onChange({tier:`${t}${n}${l}`})}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["reduce","increase"],value:"-"===n?0:1,onChange:t=>e.onChange({tier:`${o}${t?"+":"-"}${l}`})}),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(l),onChange:t=>e.onChange({tier:`${o}${n}${t}`})}),this.__renderRulesTierSwitch({value:"percentage"===e.units?0:1,options:["%","¤"],onChange:t=>e.onChange({units:t?"amount":"percentage"})}),e.tier?s(Y||(Y=pe` <button data-testclass="interactive" 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":!i,"text-disabled cursor-default":i}),i,a,(()=>e.onDelete())):"")}__renderRulesUrlParameter(){var e,t,i;const a=null!==(e=this.form.name)&&void 0!==e?e:"",r=null!==(t=this.form.coupon_discount_type)&&void 0!==t?t:"quantity_amount",n=null!==(i=this.form.coupon_discount_details)&&void 0!==i?i:"",o=`discount_${r}=${encodeURIComponent(`${a}{${n}}`)}`,l=!this.in("idle")||this.disabledSelector.matches("rules",!0);return s(Z||(Z=pe` <div data-testid="rules:url" class="text-xs flex space-x-xs"> <span class="${0}"> <foxy-i18n lang="${0}" key="url_parameter" ns="${0}"></foxy-i18n>&#58; </span> <code class="${0}"> ${0} </code> <foxy-copy-to-clipboard data-testid="rules:url:copy" text="${0}" lang="${0}" ns="${0} copy-to-clipboard" ?disabled="${0}"> </foxy-copy-to-clipboard> </div> `),m({"flex-shrink-0 transition-colors":!0,"text-tertiary":!l,"text-disabled":l}),this.lang,this.ns,m({"bg-contrast-5 transition-colors font-lumo truncate rounded px-xs":!0,"text-secondary":!l,"text-disabled":l}),o,o,this.lang,this.ns,l)}__renderRulesDescription(){var e,t;const i=null!==(e=this.form.coupon_discount_type)&&void 0!==e?e:"quantity_amount",a=null!==(t=this.form.coupon_discount_details)&&void 0!==t?t:"",r=!this.in("idle")||this.disabledSelector.matches("rules",!0);return s(ee||(ee=pe` <div data-testid="rules:description" class="text-xs leading-m"> <span class="transition-colors ${0}"> <foxy-i18n lang="${0}" key="description" ns="${0}"></foxy-i18n>&#58; </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:a,type:i,ns:this.ns}}),r?"text-disabled":"text-secondary",this.lang,this.ns)}__renderRules(){var e,t,i;const a=!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())),n=null!==(t=/[-+]/.test(r[0])?null:r.shift())&&void 0!==t?t:"single",o="repeat"===n?[r[0]]:[...r,void 0],l=null!==(i=this.form.coupon_discount_type)&&void 0!==i?i:"quantity_amount",[d,c]=l.split("_");return s(te||(te=pe` <div data-testid="rules"> ${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":!a,"text-disabled":a}),this.lang,this.ns,this.__renderRulesPreset(),$(o,((e,t)=>this.__renderRulesTier({source:d,method:n,units:c,tier:e,onChange:s=>{var i,a,o;const l=null!==(i=s.method)&&void 0!==i?i:n,u=null!==(a=s.source)&&void 0!==a?a:d,m=null!==(o=s.units)&&void 0!==o?o:c,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:`${l}|${p.join("|")}`,coupon_discount_type:`${u}_${m}`})},onDelete:()=>{const e=r.filter(((e,s)=>s!==t));this.edit({coupon_discount_details:`${n}|${e.join("|")}`})}}))),this.__renderRulesUrlParameter(),this.__renderRulesDescription(),this.renderTemplateOrSlot("rules:after"))}__renderCodes(){var e,t,i,a,r;const{disabledSelector:n,group:o,data:l,lang:d,ns:c}=this,u=!this.in("idle")||n.matches("codes",!0),m=this.__codesTableQuery,h=new URL(l._links["fx:coupon_codes"].href);new URLSearchParams(null!=m?m:"").forEach(((e,t)=>h.searchParams.set(t,e))),h.searchParams.set("limit","5");const p=null===m?"filter":"clear_filters",f="icons:"+(null===m?"filter-list":"clear");return s(se||(se=pe` <div data-testid="codes"> <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 .related="${0}"> </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> ${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 data-testid="codes:generate-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 data-testid="codes:import-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 data-testid="codes:filter-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} ${0}" ?disabled="${0}" ?hidden="${0}" .options="${0}" .value="${0}" @change="${0}"> </foxy-query-builder> <foxy-pagination first="${0}" lang="${0}" ns="${0} ${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> `),n.zoom("codes:generate:form").toString(),this.readonlySelector.zoom("codes:generate:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),JSON.stringify([h.toString()]),null!==(e=null==l?void 0:l._links["fx:generate_codes"].href)&&void 0!==e?e:"",o,d,c,[h.toString()],n.zoom("codes:form").toString(),this.readonlySelector.zoom("codes:form").toString(),this.hiddenSelector.zoom("codes:form").toString(),h.toString(),o,d,c,n.zoom("codes:import:form").toString(),this.readonlySelector.zoom("codes:import:form").toString(),this.hiddenSelector.zoom("codes:import:form").toString(),l._links["fx:coupon_codes"].href,o,d,c,this.renderTemplateOrSlot("codes:before"),d,c,u,(e=>{const t=this.renderRoot.querySelector("#generate-codes-dialog"),s=e.currentTarget;null==t||t.show(s)}),d,c,u,(e=>{const t=this.renderRoot.querySelector("#import-dialog"),s=e.currentTarget;null==t||t.show(s)}),d,c,null===m?"tertiary":"",u,(()=>this.__codesTableQuery=null===m?"":null),d,p,c,f,d,c,null!==(i=null===(t=customElements.get("foxy-query-builder"))||void 0===t?void 0:t.defaultNS)&&void 0!==i?i:"",u,null===m,ye.__codesQueryOptions,m,(e=>{const t=e.currentTarget;this.__codesTableQuery=t.value}),h.toString(),d,c,null!==(r=null===(a=customElements.get("foxy-pagination"))||void 0===a?void 0:a.defaultNS)&&void 0!==r?r:"",u,o,d,c,this.__codesTableColumns,this.renderTemplateOrSlot("codes:after"))}__renderUsage(){var e,t,i;const a=!this.in("idle")||this.disabledSelector.matches("usage",!0),r=this.readonlySelector.matches("usage",!0),n=null!==(e=this.form.number_of_uses_allowed)&&void 0!==e?e:0,o=null!==(t=this.form.number_of_uses_allowed_per_customer)&&void 0!==t?t:0,l=null!==(i=this.form.number_of_uses_allowed_per_code)&&void 0!==i?i:0;return s(ie||(ie=pe` <div data-testid="usage"> ${0} <div class="space-y-s"> <div class="grid gap-m grid-cols-3"> <vaadin-integer-field placeholder="${0}" data-testid="usage:per-coupon" 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}" data-testid="usage:per-coupon-code" 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}" data-testid="usage:per-customer" 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} </div> `),this.renderTemplateOrSlot("usage:before"),this.t("unlimited"),this.t("uses_per_coupon"),n||"",a,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||"",a,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"),o||"",a,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":!a,"text-disabled":a}),JSON.stringify({count:n}),this.lang,n?"":"_0",this.ns,JSON.stringify({count:l}),this.lang,l?"":"_0",this.ns,JSON.stringify({count:o}),this.lang,o?"":"_0",this.ns,this.renderTemplateOrSlot("usage:after"))}__renderProductRestrictions(){var e;const t="product-restrictions",i=!this.in("idle")||this.disabledSelector.matches(t,!0),a=this.readonlySelector.matches(t,!0),r=null!==(e=this.form.product_code_restrictions)&&void 0!==e?e:"",n=[{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;n[s].items.push({label:i,value:e})})),s(ae||(ae=pe` <div data-testid="product-restrictions"> ${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"),i?"text-disabled":"text-secondary",this.lang,this.ns,n.map(((e,t)=>s(re||(re=pe` <x-group class="bg-base pt-m"> <foxy-i18n class="${0}" slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-editable-list data-testid="product-restrictions:${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}" .items="${0}" @change="${0}"> </x-editable-list> </x-group> `),i?"text-disabled":"text-tertiary",this.lang,e.header,this.ns,e.header,this.lang,this.ns,i,a,e.items,(e=>{const s=[0===t?e.currentTarget.items:n[0].items,1===t?e.currentTarget.items:n[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":!i,"text-disabled":i}),this.lang,this.ns,this.renderTemplateOrSlot("product-restrictions:after"))}__renderCategoryRestrictions(){var e,t,i;const a="category-restrictions",r=!this.in("idle")||this.disabledSelector.matches(a,!0),n=this.readonlySelector.matches(a,!0);return s(ne||(ne=pe` <div data-testid="category-restrictions"> ${0} <div class="space-y-xs"> <foxy-pagination first="${0}" lang="${0}" ns="${0} ${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}" data-testid="category-restrictions:page" 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} </div> `),this.renderTemplateOrSlot("category-restrictions:before"),this.__itemCategories,this.lang,this.ns,null!==(t=null===(e=customElements.get("foxy-pagination"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"",r,this.lang,this.ns,u(null===(i=this.data)||void 0===i?void 0:i._links["fx:coupon_item_categories"].href),this.href,this.group,this.lang,this.ns,r,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 s(oe||(oe=pe` <div data-testid="options"> ${0} <x-group frame> <foxy-i18n class="transition-colors ${0}" slot="header" lang="${0}" key="option_plural" ns="${0}"> </foxy-i18n> ${0} <x-checkbox data-testclass="inputs" data-testid="options:dates" ?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((i=>{var a;const r=this.form[i.param],n=null!==(a=i.label)&&void 0!==a?a:i.param,o=e?"text-disabled":"text-secondary";return s(le||(le=pe` <x-checkbox data-testclass="inputs" data-testid="options:${0}" ?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> `),i.param.replace(/_/g,"-"),e,t,i.flip?!r:r,(e=>{this.edit({[i.param]:i.flip?!e.detail:e.detail})}),this.lang,n,this.ns,o,this.lang,n,this.ns)})),e,t,this.form.start_date||this.form.end_date,(e=>{if(e instanceof a){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?s(de||(de=pe` <div class="grid grid-cols-2 gap-m mt-m" slot="content"> ${0} </div> `),["start_date","end_date"].map((i=>{const a=this.form[i],r=a?x(new Date(a)):"";return s(ce||(ce=pe` <vaadin-date-picker data-testclass="inputs" data-testid="options:${0}" placeholder="${0}" label="${0}" clear-button-visible ?disabled="${0}" ?readonly="${0}" .value="${0}" @change="${0}"> </vaadin-date-picker> `),i.replace("_","-"),this.t("select"),this.t(i),e,t,y(r),(e=>{const t=e.currentTarget;this.edit({[i]:t.value})}))}))):"",this.renderTemplateOrSlot("options:after"))}__renderTimestamps(){return s(ue||(ue=pe` <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"}}}),i=this.in({idle:{snapshot:{clean:"invalid"}}}),a=this.in({idle:{snapshot:{dirty:"invalid"}}}),r=e||t||(i||a),n=this.in("idle");return s(me||(me=pe` <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"),!n||r||this.disabledSelector.matches("create",!0),this.submit,this.ns,this.lang,this.renderTemplateOrSlot("create:after"))}__renderDelete(){return s(he||(he=pe` <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("idle")||this.disabledSelector.matches("delete",!0),(e=>{this.renderRoot.querySelector("#confirm").show(e.currentTarget)}),this.ns,this.lang,this.renderTemplateOrSlot("delete:after"))}}ye.__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",ye);export{ye as CouponForm};
1
+ import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-f2639daf.js";import"./shared-71acf673.js";import"./shared-412670b8.js";import"./shared-3e3c07ac.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-generate-codes-form.js";import"./foxy-coupon-codes-form.js";import"./foxy-copy-to-clipboard.js";import"./foxy-coupon-code-form.js";import{T as e}from"./shared-872ceacf.js";import"./foxy-pagination.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./shared-2f0efb2c.js";import{_ as t}from"./shared-ca0f14c1.js";import{h as s}from"./shared-dc73b9a5.js";import{C as i,a}from"./shared-ff1d9854.js";import{C as r}from"./shared-85d45495.js";import{N as n}from"./shared-77fad85a.js";import{S as o,T as l,a as d,R as c}from"./shared-f31044b8.js";import{i as u}from"./shared-9803aa7c.js";import{c as m}from"./shared-4e709717.js";import{E as h}from"./shared-37b61010.js";import{G as p}from"./shared-189dfb49.js";import{P as f}from"./shared-fd595d0a.js";import{l as y}from"./shared-22ba9566.js";import{o as g}from"./shared-f9f9ed5b.js";import{r as $}from"./shared-a0c6a159.js";import{s as x}from"./shared-2061be9a.js";import"./shared-084b6372.js";import"./shared-91b86bae.js";import"./shared-c63ba384.js";import"./shared-ec7cfc23.js";import"./shared-11f0daea.js";import"./shared-4560425c.js";import"./shared-23fd456c.js";import"./shared-3a7cf739.js";import"./shared-99940888.js";import"./shared-4c0520f6.js";import"./shared-6f89d2e0.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-b5195ae3.js";import"./foxy-nucleon-element.js";let _,b=e=>e;const v=r(o(l(n)));class S extends v{constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"x-checkbox":i}}static get properties(){return t(t({},super.properties),{},{itemCategory:{type:String,attribute:"item-category"},coupon:{type:String}})}render(){return s(_||(_=b` <div class="h-full flex items-center"> <x-checkbox data-testid="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 k,w=e=>e;const T=r(o(l(n)));class j extends T{constructor(){super(...arguments),this.itemCategory="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item-content":S}}static get properties(){return t(t({},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],i=t?void 0:this.href,a=t?t._links.self.href:void 0;return s(k||(k=w` <x-category-restrictions-page-item-content item-category="${0}" data-testid="content" coupon="${0}" parent="${0}" class="h-full" group="${0}" href="${0}" ?disabled="${0}" ?readonly="${0}"> <slot></slot> </x-category-restrictions-page-item-content> `),this.itemCategory,this.coupon,u(i),this.group,u(a),!this.in("idle")||this.disabled,this.readonly)}}let C,R,E,O=e=>e;const q=r(o(l(d(n))));class N extends q{constructor(){super(...arguments),this.couponItemCategories="",this.coupon=""}static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-category-restrictions-page-item":j}}static get properties(){return t(t({},super.properties),{},{couponItemCategories:{type:String,attribute:"coupon-item-categories"},coupon:{type:String}})}render(){var e,t,i,a,r;const n=null!==(t=null===(e=this.data)||void 0===e?void 0:e._embedded["fx:item_categories"])&&void 0!==t?t:[];let o=20;try{const e=parseInt(null!==(i=new URL(this.href).searchParams.get("limit"))&&void 0!==i?i:"");isNaN(e)||(o=e)}catch(e){}return s(C||(C=O` <div class="relative"> <div class="relative divide-y divide-contrast-10 ml-m"> ${0} </div> <div data-testid="spinner" 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(o).fill(0).map(((e,t)=>{const i=n[t];let a;if(i)try{const e=new URL(this.couponItemCategories),t=new URL(i._links.self.href).pathname.split("/").pop();e.searchParams.set("item_category_id",t),e.searchParams.set("limit","1"),a=e.toString()}catch(e){}return a?s(E||(E=O` <x-category-restrictions-page-item data-testclass="item" item-category="${0}" coupon="${0}" class="h-l" group="${0}" href="${0}" ?disabled="${0}" ?readonly="${0}"> ${0} </x-category-restrictions-page-item> `),i._links.self.href,this.coupon,this.group,a,!this.in("idle")||this.disabled,this.readonly,null==i?void 0:i.name):s(R||(R=O`<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===(a=customElements.get("foxy-spinner"))||void 0===a?void 0:a.defaultNS)&&void 0!==r?r:"")}}let D,P,U,I,z,J,M,Q,L,F,G,V,W,A,B,H,K,X,Y,Z,ee,te,se,ie,ae,re,ne,oe,le,de,ce,ue,me,he,pe=e=>e;const fe=o(l(r(c(d(n,"coupon-form")))));class ye extends fe{constructor(){super(...arguments),this.__codesTableColumns=[{header:e=>s(D||(D=pe`<foxy-i18n lang="${0}" key="code" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>{const t=!this.in("idle")||this.disabledSelector.matches("codes",!0);return s(P||(P=pe` <div class="flex items-center gap-xs"> <vaadin-button theme="tertiary-inline contrast" class="p-0" ?disabled="${0}" @click="${0}"> <span class="font-tnum">${0}</span> </vaadin-button> <foxy-copy-to-clipboard ?disabled="${0}" text="${0}" lang="${0}" ns="${0} copy-to-clipboard"> </foxy-copy-to-clipboard> </div> `),t,(t=>{const s=this.renderRoot.querySelector("#code-dialog"),i=t.currentTarget;s.href=e.data._links.self.href,s.show(i)}),e.data.code,t,e.data.code,e.lang,e.ns)}},{header:e=>s(U||(U=pe`<foxy-i18n lang="${0}" key="date_created" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(I||(I=pe` <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=>s(z||(z=pe`<foxy-i18n lang="${0}" key="date_modified" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(J||(J=pe` <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=>s(M||(M=pe`<foxy-i18n lang="${0}" key="used_codes" ns="${0}"></foxy-i18n>`),e.lang,e.ns),cell:e=>s(Q||(Q=pe`${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-copy-to-clipboard":customElements.get("foxy-copy-to-clipboard"),"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":N,"x-property-table":f,"x-editable-list":h,"x-checkbox":i,"x-group":p}}static get properties(){return t(t({},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 i=this.hiddenSelector;return s(L||(L=pe` <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> `),i.matches("name",!0)?"":this.__renderName(),i.matches("rules",!0)?"":this.__renderRules(),i.matches("codes",!0)||!this.data?"":this.__renderCodes(),i.matches("usage",!0)?"":this.__renderUsage(),i.matches("product-restrictions",!0)?"":this.__renderProductRestrictions(),i.matches("category-restrictions",!0)||!this.data?"":this.__renderCategoryRestrictions(),i.matches("options",!0)?"":this.__renderOptions(),i.matches("timestamps",!0)?"":this.__renderTimestamps(),i.matches("create",!0)||this.data?"":this.__renderCreate(),i.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("idle")}),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 s(F||(F=pe` <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("idle")||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),i=this.readonlySelector.matches("rules",!0),a=this.form.coupon_discount_details,r=this.form.coupon_discount_type,n=[{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=n.find((e=>e.details===a&&e.type===r));return s(G||(G=pe` <label data-testid="rules:preset" 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 data-testclass="interactive editable" data-testid="rules:preset: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&&!i,"text-disabled":e,"text-secondary":i}),this.lang,this.ns,o?this.t("discount_summary",{params:t(t({},o),{},{ns:this.ns})}):this.t("custom_discount"),e||i,(e=>{var t,s;const i=e.currentTarget,a=n[i.selectedIndex];this.edit({coupon_discount_details:null!==(t=null==a?void 0:a.details)&&void 0!==t?t:"",coupon_discount_type:null!==(s=null==a?void 0:a.type)&&void 0!==s?s:"quantity_amount"})}),n.map((e=>s(V||(V=pe` <option value="${0}" ?selected="${0}"> ${0} </option> `),e.details,e===o,this.t("discount_summary",{params:t(t({},e),{},{ns:this.ns})})))),!o,this.t("custom_discount"))}__renderRulesTierSelect({label:e,value:t,options:i,onChange:a}){const r=!this.in("idle")||this.disabledSelector.matches("rules",!0),n=this.readonlySelector.matches("rules",!0),o=!r&&!n;return s(W||(W=pe` <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 data-testclass="interactive editable" 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":o,"bg-primary-10 text-primary":o,"bg-contrast-5 text-disabled":r,"bg-contrast-5 text-secondary":n&&!r}),this.lang,e,this.ns,this.t(i[t]),!o,(e=>{const t=e.currentTarget;a(t.options[t.selectedIndex].value)}),Object.entries(i).map((([e,i])=>s(A||(A=pe` <option value="${0}" ?selected="${0}"> ${0} </option> `),e,e===t,this.t(i)))))}__renderRulesTierSwitch({value:e,options:t,onChange:i}){const a=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),n=!a&&!r,o=`switch-${Math.floor(Math.random()*Math.pow(10,10))}`,l="width: 0.4rem; height: 0.4rem";return s(B||(B=pe` <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":n,"ring-primary-50 cursor-pointer bg-primary-10 text-primary":n,"bg-contrast-5 text-disabled":a,"bg-contrast-5 text-secondary":r&&!a}),(t=>{if(!n)return;t.currentTarget.querySelector("input").focus(),i(0===e?1:0)}),t.map(((t,a)=>s(H||(H=pe` <label> <foxy-i18n class="${0}" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <input data-testclass="interactive editable" class="sr-only" value="${0}" name="${0}" type="radio" ?disabled="${0}" ?checked="${0}" @change="${0}"> </label> `),m({"sr-only":a!==e}),this.lang,t,this.ns,t,o,!n,a===e,(e=>{e.currentTarget.checked&&i(a)})))),e?"flex-col-reverse":"flex-col",l,l)}__renderRulesTierField({value:e,label:t,onChange:i}){const a=!this.in("idle")||this.disabledSelector.matches("rules",!0),r=this.readonlySelector.matches("rules",!0),n=!a&&!r;return s(K||(K=pe` <label> <foxy-i18n class="sr-only" lang="${0}" key="${0}" ns="${0}"></foxy-i18n> <input data-testclass="interactive editable" 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":n,"hover-bg-contrast-20":n,"focus-outline-none focus-ring-2":n,"text-disabled bg-contrast-5":a,"text-secondary":r&&!a,"border-transparent border-solid":!r,"border-dashed border-contrast-30":r}),!n,e,(e=>{const t=e.currentTarget;i(t.value)}))}__renderRulesTier(e){var t;const i=!this.in("idle")||this.disabledSelector.matches("rules",!0),a=this.readonlySelector.matches("rules",!0),r=null!==(t=e.tier)&&void 0!==t?t:"0-0",n=r.includes("+")?"+":"-",[o,l]=r.split(/[-+]/).map((e=>parseFloat(e)));return s(X||(X=pe` <div data-testclass="rules:tier" 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":!i,"text-disabled":i}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["total","quantity"],value:"price"===e.source?0:1,onChange:t=>e.onChange({source:t?"quantity":"price"})}),g,this.__renderRulesTierField({label:"from",value:String(o),onChange:t=>e.onChange({tier:`${t}${n}${l}`})}),this.lang,this.ns,this.__renderRulesTierSwitch({options:["reduce","increase"],value:"-"===n?0:1,onChange:t=>e.onChange({tier:`${o}${t?"+":"-"}${l}`})}),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(l),onChange:t=>e.onChange({tier:`${o}${n}${t}`})}),this.__renderRulesTierSwitch({value:"percentage"===e.units?0:1,options:["%","¤"],onChange:t=>e.onChange({units:t?"amount":"percentage"})}),e.tier?s(Y||(Y=pe` <button data-testclass="interactive" 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":!i,"text-disabled cursor-default":i}),i,a,(()=>e.onDelete())):"")}__renderRulesUrlParameter(){var e,t,i;const a=null!==(e=this.form.name)&&void 0!==e?e:"",r=null!==(t=this.form.coupon_discount_type)&&void 0!==t?t:"quantity_amount",n=null!==(i=this.form.coupon_discount_details)&&void 0!==i?i:"",o=`discount_${r}=${encodeURIComponent(`${a}{${n}}`)}`,l=!this.in("idle")||this.disabledSelector.matches("rules",!0);return s(Z||(Z=pe` <div data-testid="rules:url" class="text-xs flex space-x-xs"> <span class="${0}"> <foxy-i18n lang="${0}" key="url_parameter" ns="${0}"></foxy-i18n>&#58; </span> <code class="${0}"> ${0} </code> <foxy-copy-to-clipboard data-testid="rules:url:copy" text="${0}" lang="${0}" ns="${0} copy-to-clipboard" ?disabled="${0}"> </foxy-copy-to-clipboard> </div> `),m({"flex-shrink-0 transition-colors":!0,"text-tertiary":!l,"text-disabled":l}),this.lang,this.ns,m({"bg-contrast-5 transition-colors font-lumo truncate rounded px-xs":!0,"text-secondary":!l,"text-disabled":l}),o,o,this.lang,this.ns,l)}__renderRulesDescription(){var e,t;const i=null!==(e=this.form.coupon_discount_type)&&void 0!==e?e:"quantity_amount",a=null!==(t=this.form.coupon_discount_details)&&void 0!==t?t:"",r=!this.in("idle")||this.disabledSelector.matches("rules",!0);return s(ee||(ee=pe` <div data-testid="rules:description" class="text-xs leading-m"> <span class="transition-colors ${0}"> <foxy-i18n lang="${0}" key="description" ns="${0}"></foxy-i18n>&#58; </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:a,type:i,ns:this.ns}}),r?"text-disabled":"text-secondary",this.lang,this.ns)}__renderRules(){var e,t,i;const a=!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())),n=null!==(t=/[-+]/.test(r[0])?null:r.shift())&&void 0!==t?t:"single",o="repeat"===n?[r[0]]:[...r,void 0],l=null!==(i=this.form.coupon_discount_type)&&void 0!==i?i:"quantity_amount",[d,c]=l.split("_");return s(te||(te=pe` <div data-testid="rules"> ${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":!a,"text-disabled":a}),this.lang,this.ns,this.__renderRulesPreset(),$(o,((e,t)=>this.__renderRulesTier({source:d,method:n,units:c,tier:e,onChange:s=>{var i,a,o;const l=null!==(i=s.method)&&void 0!==i?i:n,u=null!==(a=s.source)&&void 0!==a?a:d,m=null!==(o=s.units)&&void 0!==o?o:c,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:`${l}|${p.join("|")}`,coupon_discount_type:`${u}_${m}`})},onDelete:()=>{const e=r.filter(((e,s)=>s!==t));this.edit({coupon_discount_details:`${n}|${e.join("|")}`})}}))),this.__renderRulesUrlParameter(),this.__renderRulesDescription(),this.renderTemplateOrSlot("rules:after"))}__renderCodes(){var e,t,i,a,r;const{disabledSelector:n,group:o,data:l,lang:d,ns:c}=this,u=!this.in("idle")||n.matches("codes",!0),m=this.__codesTableQuery,h=new URL(l._links["fx:coupon_codes"].href);new URLSearchParams(null!=m?m:"").forEach(((e,t)=>h.searchParams.set(t,e))),h.searchParams.set("limit","5");const p=null===m?"filter":"clear_filters",f="icons:"+(null===m?"filter-list":"clear");return s(se||(se=pe` <div data-testid="codes"> <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 .related="${0}"> </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> ${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 data-testid="codes:generate-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 data-testid="codes:import-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 data-testid="codes:filter-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} ${0}" ?disabled="${0}" ?hidden="${0}" .options="${0}" .value="${0}" @change="${0}"> </foxy-query-builder> <foxy-pagination first="${0}" lang="${0}" ns="${0} ${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> `),n.zoom("codes:generate:form").toString(),this.readonlySelector.zoom("codes:generate:form").toString(),this.hiddenSelector.zoom("codes:generate:form").toString(),JSON.stringify([h.toString()]),null!==(e=null==l?void 0:l._links["fx:generate_codes"].href)&&void 0!==e?e:"",o,d,c,[h.toString()],n.zoom("codes:form").toString(),this.readonlySelector.zoom("codes:form").toString(),this.hiddenSelector.zoom("codes:form").toString(),h.toString(),o,d,c,n.zoom("codes:import:form").toString(),this.readonlySelector.zoom("codes:import:form").toString(),this.hiddenSelector.zoom("codes:import:form").toString(),l._links["fx:coupon_codes"].href,o,d,c,this.renderTemplateOrSlot("codes:before"),d,c,u,(e=>{const t=this.renderRoot.querySelector("#generate-codes-dialog"),s=e.currentTarget;null==t||t.show(s)}),d,c,u,(e=>{const t=this.renderRoot.querySelector("#import-dialog"),s=e.currentTarget;null==t||t.show(s)}),d,c,null===m?"tertiary":"",u,(()=>this.__codesTableQuery=null===m?"":null),d,p,c,f,d,c,null!==(i=null===(t=customElements.get("foxy-query-builder"))||void 0===t?void 0:t.defaultNS)&&void 0!==i?i:"",u,null===m,ye.__codesQueryOptions,m,(e=>{const t=e.currentTarget;this.__codesTableQuery=t.value}),h.toString(),d,c,null!==(r=null===(a=customElements.get("foxy-pagination"))||void 0===a?void 0:a.defaultNS)&&void 0!==r?r:"",u,o,d,c,this.__codesTableColumns,this.renderTemplateOrSlot("codes:after"))}__renderUsage(){var e,t,i;const a=!this.in("idle")||this.disabledSelector.matches("usage",!0),r=this.readonlySelector.matches("usage",!0),n=null!==(e=this.form.number_of_uses_allowed)&&void 0!==e?e:0,o=null!==(t=this.form.number_of_uses_allowed_per_customer)&&void 0!==t?t:0,l=null!==(i=this.form.number_of_uses_allowed_per_code)&&void 0!==i?i:0;return s(ie||(ie=pe` <div data-testid="usage"> ${0} <div class="space-y-s"> <div class="grid gap-m grid-cols-3"> <vaadin-integer-field placeholder="${0}" data-testid="usage:per-coupon" 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}" data-testid="usage:per-coupon-code" 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}" data-testid="usage:per-customer" 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} </div> `),this.renderTemplateOrSlot("usage:before"),this.t("unlimited"),this.t("uses_per_coupon"),n||"",a,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||"",a,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"),o||"",a,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":!a,"text-disabled":a}),JSON.stringify({count:n}),this.lang,n?"":"_0",this.ns,JSON.stringify({count:l}),this.lang,l?"":"_0",this.ns,JSON.stringify({count:o}),this.lang,o?"":"_0",this.ns,this.renderTemplateOrSlot("usage:after"))}__renderProductRestrictions(){var e;const t="product-restrictions",i=!this.in("idle")||this.disabledSelector.matches(t,!0),a=this.readonlySelector.matches(t,!0),r=null!==(e=this.form.product_code_restrictions)&&void 0!==e?e:"",n=[{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;n[s].items.push({label:i,value:e})})),s(ae||(ae=pe` <div data-testid="product-restrictions"> ${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"),i?"text-disabled":"text-secondary",this.lang,this.ns,n.map(((e,t)=>s(re||(re=pe` <x-group class="bg-base pt-m"> <foxy-i18n class="${0}" slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-editable-list data-testid="product-restrictions:${0}" lang="${0}" ns="${0}" ?disabled="${0}" ?readonly="${0}" .items="${0}" @change="${0}"> </x-editable-list> </x-group> `),i?"text-disabled":"text-tertiary",this.lang,e.header,this.ns,e.header,this.lang,this.ns,i,a,e.items,(e=>{const s=[0===t?e.currentTarget.items:n[0].items,1===t?e.currentTarget.items:n[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":!i,"text-disabled":i}),this.lang,this.ns,this.renderTemplateOrSlot("product-restrictions:after"))}__renderCategoryRestrictions(){var e,t,i;const a="category-restrictions",r=!this.in("idle")||this.disabledSelector.matches(a,!0),n=this.readonlySelector.matches(a,!0);return s(ne||(ne=pe` <div data-testid="category-restrictions"> ${0} <div class="space-y-xs"> <foxy-pagination first="${0}" lang="${0}" ns="${0} ${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}" data-testid="category-restrictions:page" 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} </div> `),this.renderTemplateOrSlot("category-restrictions:before"),this.__itemCategories,this.lang,this.ns,null!==(t=null===(e=customElements.get("foxy-pagination"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"",r,this.lang,this.ns,u(null===(i=this.data)||void 0===i?void 0:i._links["fx:coupon_item_categories"].href),this.href,this.group,this.lang,this.ns,r,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 s(oe||(oe=pe` <div data-testid="options"> ${0} <x-group frame> <foxy-i18n class="transition-colors ${0}" slot="header" lang="${0}" key="option_plural" ns="${0}"> </foxy-i18n> ${0} <x-checkbox data-testclass="inputs" data-testid="options:dates" ?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((i=>{var a;const r=this.form[i.param],n=null!==(a=i.label)&&void 0!==a?a:i.param,o=e?"text-disabled":"text-secondary";return s(le||(le=pe` <x-checkbox data-testclass="inputs" data-testid="options:${0}" ?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> `),i.param.replace(/_/g,"-"),e,t,i.flip?!r:r,(e=>{this.edit({[i.param]:i.flip?!e.detail:e.detail})}),this.lang,n,this.ns,o,this.lang,n,this.ns)})),e,t,this.form.start_date||this.form.end_date,(e=>{if(e instanceof a){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?s(de||(de=pe` <div class="grid grid-cols-2 gap-m mt-m" slot="content"> ${0} </div> `),["start_date","end_date"].map((i=>{const a=this.form[i],r=a?x(new Date(a)):"";return s(ce||(ce=pe` <vaadin-date-picker data-testclass="inputs" data-testid="options:${0}" placeholder="${0}" label="${0}" clear-button-visible ?disabled="${0}" ?readonly="${0}" .value="${0}" @change="${0}"> </vaadin-date-picker> `),i.replace("_","-"),this.t("select"),this.t(i),e,t,y(r),(e=>{const t=e.currentTarget;this.edit({[i]:t.value})}))}))):"",this.renderTemplateOrSlot("options:after"))}__renderTimestamps(){return s(ue||(ue=pe` <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"}}}),i=this.in({idle:{snapshot:{clean:"invalid"}}}),a=this.in({idle:{snapshot:{dirty:"invalid"}}}),r=e||t||(i||a),n=this.in("idle");return s(me||(me=pe` <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"),!n||r||this.disabledSelector.matches("create",!0),this.submit,this.ns,this.lang,this.renderTemplateOrSlot("create:after"))}__renderDelete(){return s(he||(he=pe` <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("idle")||this.disabledSelector.matches("delete",!0),(e=>{this.renderRoot.querySelector("#confirm").show(e.currentTarget)}),this.ns,this.lang,this.renderTemplateOrSlot("delete:after"))}}ye.__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",ye);export{ye as CouponForm};
@@ -1 +1 @@
1
- import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-2ca6d676.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-2f0efb2c.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-619adfad.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let a,d,t=r=>r;class o extends(s(e,"custom-field-card")){render(){return super.render({title:s=>r(a||(a=t`${0}`),s.name),subtitle:s=>r(d||(d=t`${0}`),s.value)})}}customElements.define("foxy-custom-field-card",o);export{o as CustomFieldCard};
1
+ import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-d90d6140.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-2f0efb2c.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-77fad85a.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let a,d,t=r=>r;class o extends(s(e,"custom-field-card")){render(){return super.render({title:s=>r(a||(a=t`${0}`),s.name),subtitle:s=>r(d||(d=t`${0}`),s.value)})}}customElements.define("foxy-custom-field-card",o);export{o as CustomFieldCard};
@@ -1 +1 @@
1
- import"./shared-c7280a24.js";import"./shared-80b90eec.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as i}from"./shared-619adfad.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{a as s,T as a,S as r}from"./shared-f31044b8.js";import{c as d}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{m as n}from"./shared-3a7cf739.js";import{P as l}from"./shared-fd595d0a.js";import{i as o}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./shared-ca0f14c1.js";import"./shared-412670b8.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-23fd456c.js";import"./shared-99940888.js";let h,c,m,f,p,u,_=e=>e;const b=s(t(a(r(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 a=t.replace(/_/,"-");return this.hiddenSelector.matches(a)?"":e(h||(h=_` <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(),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(a),this.readonlySelector.matches(a),this.__bindField(t),this.__handleKeyDown,this.renderTemplateOrSlot(`${a}:after`))},this.__renderVisibility=()=>{const{disabledSelector:t,form:i,lang:s,ns:a}=this,r=!this.in("idle")||t.matches("visibility",!0);return e(c||(c=_` <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"),r,!i.is_hidden,(e=>{const t=e.currentTarget;this.edit({is_hidden:!t.checked})}),s,a,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(m||(m=_` <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=_` <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=_` <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(){var t,i;const{hiddenSelector:s,data:a,lang:r,ns:n}=this,l=this.in("busy"),o=this.in("fail");return e(u||(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} ${0}"> </foxy-spinner> </div> </div> `),r,n,this.__handleConfirmHide,this.in("busy"),this.__maybeRenderTextField({field:"name"}),this.__maybeRenderTextField({field:"value"}),s.matches("visibility",!0)?"":this.__renderVisibility(),s.matches("timestamps",!0)||!a?"":this.__renderTimestamps(),s.matches("delete",!0)||!a?"":this.__renderDelete(),s.matches("create",!0)||a?"":this.__renderCreate(),d({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!l&&!o}),o?"error":l?"busy":"empty",r,n,null!==(i=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==i?i:"")}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
+ import"./shared-c7280a24.js";import"./shared-80b90eec.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as i}from"./shared-77fad85a.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{a as s,T as a,S as r}from"./shared-f31044b8.js";import{c as d}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{m as n}from"./shared-3a7cf739.js";import{P as l}from"./shared-fd595d0a.js";import{i as o}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./shared-ca0f14c1.js";import"./shared-412670b8.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-23fd456c.js";import"./shared-99940888.js";let h,c,m,f,p,u,_=e=>e;const b=s(t(a(r(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 a=t.replace(/_/,"-");return this.hiddenSelector.matches(a)?"":e(h||(h=_` <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(),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(a),this.readonlySelector.matches(a),this.__bindField(t),this.__handleKeyDown,this.renderTemplateOrSlot(`${a}:after`))},this.__renderVisibility=()=>{const{disabledSelector:t,form:i,lang:s,ns:a}=this,r=!this.in("idle")||t.matches("visibility",!0);return e(c||(c=_` <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"),r,!i.is_hidden,(e=>{const t=e.currentTarget;this.edit({is_hidden:!t.checked})}),s,a,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(m||(m=_` <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=_` <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=_` <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(){var t,i;const{hiddenSelector:s,data:a,lang:r,ns:n}=this,l=this.in("busy"),o=this.in("fail");return e(u||(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} ${0}"> </foxy-spinner> </div> </div> `),r,n,this.__handleConfirmHide,this.in("busy"),this.__maybeRenderTextField({field:"name"}),this.__maybeRenderTextField({field:"value"}),s.matches("visibility",!0)?"":this.__renderVisibility(),s.matches("timestamps",!0)||!a?"":this.__renderTimestamps(),s.matches("delete",!0)||!a?"":this.__renderDelete(),s.matches("create",!0)||a?"":this.__renderCreate(),d({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!l&&!o}),o?"error":l?"busy":"empty",r,n,null!==(i=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==i?i:"")}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-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as a}from"./shared-619adfad.js";import{T as s,a as r}from"./shared-f31044b8.js";import{c as i}from"./shared-4e709717.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-9803aa7c.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let d,o,n,l,m,c,h,p=e=>e;const v=s(t(r(a,"customer-card")));class f extends v{constructor(){super(...arguments),this.templates={}}render(){var t,a;const s=this.hiddenSelector;return e(d||(d=p` <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}),s.matches("name",!0)?"":this.__renderName(),s.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!==(a=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==a?a:"")}__renderName(){var t,a;const s=this.data,r=`${null!==(t=null==s?void 0:s.first_name)&&void 0!==t?t:""} ${null!==(a=null==s?void 0:s.last_name)&&void 0!==a?a:""}`.trim()||"–",i=s?e(o||(o=p`${0}`),r):e(n||(n=p`&ZeroWidthSpace;`));return e(l||(l=p` <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 a=this.data,s=`${null!==(t=null==a?void 0:a.email)&&void 0!==t?t:""}`.trim()||"–",r=a?e(m||(m=p`${0}`),s):e(c||(c=p`&ZeroWidthSpace;`));return e(h||(h=p` <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",f);export{f as CustomerCard};
1
+ import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as a}from"./shared-77fad85a.js";import{T as s,a as r}from"./shared-f31044b8.js";import{c as i}from"./shared-4e709717.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-9803aa7c.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let d,o,n,l,m,c,h,p=e=>e;const v=s(t(r(a,"customer-card")));class f extends v{constructor(){super(...arguments),this.templates={}}render(){var t,a;const s=this.hiddenSelector;return e(d||(d=p` <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}),s.matches("name",!0)?"":this.__renderName(),s.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!==(a=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==a?a:"")}__renderName(){var t,a;const s=this.data,r=`${null!==(t=null==s?void 0:s.first_name)&&void 0!==t?t:""} ${null!==(a=null==s?void 0:s.last_name)&&void 0!==a?a:""}`.trim()||"–",i=s?e(o||(o=p`${0}`),r):e(n||(n=p`&ZeroWidthSpace;`));return e(l||(l=p` <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 a=this.data,s=`${null!==(t=null==a?void 0:a.email)&&void 0!==t?t:""}`.trim()||"–",r=a?e(m||(m=p`${0}`),s):e(c||(c=p`&ZeroWidthSpace;`));return e(h||(h=p` <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",f);export{f as CustomerCard};
@@ -1 +1 @@
1
- import"./shared-c7280a24.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import"./foxy-nucleon-element.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{R as i,T as s,S as a,a as r}from"./shared-f31044b8.js";import{c as d}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{m as o}from"./shared-3a7cf739.js";import{P as n}from"./shared-fd595d0a.js";import{i as l}from"./shared-9803aa7c.js";import{v as m}from"./shared-b738ee96.js";import{N as h}from"./shared-619adfad.js";import"./shared-91b86bae.js";import"./shared-ca0f14c1.js";import"./shared-412670b8.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-23fd456c.js";import"./shared-99940888.js";let c,p,f,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(p||(p=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(f||(f=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};
1
+ import"./shared-c7280a24.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import"./foxy-nucleon-element.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{R as i,T as s,S as a,a as r}from"./shared-f31044b8.js";import{c as d}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{m as o}from"./shared-3a7cf739.js";import{P as n}from"./shared-fd595d0a.js";import{i as l}from"./shared-9803aa7c.js";import{v as m}from"./shared-b738ee96.js";import{N as h}from"./shared-77fad85a.js";import"./shared-91b86bae.js";import"./shared-ca0f14c1.js";import"./shared-412670b8.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-23fd456c.js";import"./shared-99940888.js";let c,p,f,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(p||(p=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(f||(f=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};
@@ -1,4 +1,4 @@
1
- import"./foxy-customer.js";import"./shared-71acf673.js";import"./shared-412670b8.js";import"./shared-3e3c07ac.js";import"./shared-e1c1e8e2.js";import"./foxy-access-recovery-form.js";import"./foxy-payment-method-card.js";import"./foxy-transactions-table.js";import"./foxy-subscription-card.js";import"./foxy-subscription-form.js";import"./foxy-collection-pages.js";import"./foxy-collection-page.js";import"./foxy-sign-in-form.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import{_ as e,I as t,k as s}from"./shared-ca0f14c1.js";import{h as r,L as o,c as i}from"./shared-dc73b9a5.js";import{A as n}from"./shared-023c287a.js";import"./shared-9be1a70f.js";import{C as a}from"./shared-c7c8d1b6.js";import{a as l,T as d,R as c}from"./shared-f31044b8.js";import{A as m}from"./shared-9b392ba8.js";import{c as h}from"./shared-4e709717.js";import{C as u}from"./shared-85d45495.js";import{N as p}from"./shared-619adfad.js";import{B as f}from"./shared-3a7cf739.js";import{i as g}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./foxy-attribute-card.js";import"./shared-2f0efb2c.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./foxy-attribute-form.js";import"./shared-23fd456c.js";import"./shared-084b6372.js";import"./shared-c7280a24.js";import"./shared-9ef81b37.js";import"./shared-6f89d2e0.js";import"./shared-4560425c.js";import"./shared-11f0daea.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import"./shared-99940888.js";import"./shared-ec7cfc23.js";import"./shared-189dfb49.js";import"./shared-fd595d0a.js";import"./foxy-customer-form.js";import"./foxy-nucleon-element.js";import"./shared-b738ee96.js";import"./foxy-address-card.js";import"./shared-a48a9dfc.js";import"./foxy-address-form.js";import"./foxy-table.js";import"./shared-d91ed0a8.js";import"./shared-5e43b817.js";import"./shared-6ce2acfa.js";import"./shared-0eb966c5.js";import"./foxy-cancellation-form.js";import"./shared-74a27421.js";import"./shared-2061be9a.js";import"./shared-daa454bf.js";import"./shared-60c862aa.js";import"./shared-fcbf9a41.js";import"./shared-a0c6a159.js";import"./shared-c0fb5a33.js";import"./shared-a2a1193d.js";import"./shared-80b90eec.js";let $,y,v=e=>e;class b extends(l(d(a),"customer-portal")){constructor(){super(...arguments),this.group=""}static get properties(){return e(e({},super.properties),{},{group:{type:String}})}render(){return this.api.storage.getItem(n.SESSION)?r($||($=v` <foxy-internal-customer-portal-logged-in-view disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" customer="${0}" group="${0}" class="h-full" lang="${0}" href="${0}" ns="${0}" .templates="${0}"> </foxy-internal-customer-portal-logged-in-view> `),this.disabledSelector.toString(),this.readonlySelector.toString(),this.hiddenSelector.toString(),this.base,this.group,this.lang,new URL("./customer_portal_settings",this.base).toString(),this.ns,this.templates):r(y||(y=v` <foxy-internal-customer-portal-logged-out-view disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" group="${0}" class="h-full" lang="${0}" ns="${0}" .templates="${0}"> </foxy-internal-customer-portal-logged-out-view> `),this.disabledSelector.toString(),this.readonlySelector.toString(),this.hiddenSelector.toString(),this.group,this.lang,this.ns,this.templates)}}let S,x,_=e=>e;const j=c(d(l(t(o))));let T,w,O,k,E=e=>e;class R extends(d(o)){constructor(){super(...arguments),this.disabled=!1,this.href="",this.icon=""}static get properties(){return e(e({},super.properties),{},{disabled:{type:Boolean},href:{type:String},icon:{type:String}})}render(){const e=h({"flex-auto font-medium tracking-wide text-s rounded-s transition-colors":!0,"hover-text-primary hover-cursor-pointer":!this.disabled,"focus-outline-none focus-ring-2 ring-primary-50 ring-offset-2":!this.disabled,"text-disabled cursor-default":this.disabled}),t=r(T||(T=E` ${0} <slot></slot> `),this.icon?r(w||(w=E`<iron-icon icon="${0}" class="icon-inline"></iron-icon>`),this.icon):"");return this.disabled?r(O||(O=E`<button class="${0}" disabled="disabled">${0}</button>`),e,t):r(k||(k=E` <a class="${0}" href="${0}" rel="nofollow noopener">${0}</a> `),e,this.href,t)}}let z,N,A,F,I,H,U,q,L,P,C=e=>e;const D=d(u(l(p)));let V,B,J,W,G,K,M,Q,X,Y,Z=e=>e;const ee=d(u(l(t(o))));const te=["html"],se=["html"];let re,oe,ie,ne,ae,le,de,ce,me,he,ue,pe,fe=e=>e;const ge=l(u(d(t(o))));let $e,ye,ve,be=e=>e;const Se=u(d(l(t(o),"customer-portal")));customElements.define("foxy-internal-customer-portal-logged-in-view",class extends D{constructor(){var e;super(...arguments),e=this,this.templates={},this.customer="",this.loggingOutState="idle",this.loggingOutStateResetTimeout=null,this.__renderHeaderActionsSignOut=()=>{var t,s,o,i,n;const a="customer:header:actions:sign-out",l=this.loggingOutState,d=this.disabledSelector.matches(a)||!(null===(t=this.__customerElement)||void 0===t?void 0:t.in({idle:"snapshot"}))||"idle"!==l,c={"border-radius":"100%",padding:"var(--lumo-space-xs)",display:"flex",margin:"0",cursor:d?"default":"pointer"};return r(z||(z=C` <div style="display:flex;margin-left:var(--lumo-space-m)"> ${0} <vaadin-button data-testid="sign-out" aria-label="${0}" style="${0}" theme="icon" ?disabled="${0}" @click="${0}"> ${0} </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot(`${a}:before`),this.t("sign_out").toString(),Object.entries(c).reduce(((e,[t,s])=>`${e}${t}:${s};`),""),d,(async function(){try{e.loggingOutState="busy",await new m(e).fetch("foxy://customer-api/session",{method:"DELETE"}),e.loggingOutState="idle"}catch(t){e.loggingOutState="fail",e.loggingOutStateResetTimeout=setTimeout((()=>{e.loggingOutState="idle",e.loggingOutStateResetTimeout=null}),1e3)}}),"idle"===l?r(N||(N=C`<iron-icon icon="icons:exit-to-app"></iron-icon>`)):r(A||(A=C` <foxy-spinner layout="no-label" state="${0}" style="margin:auto" lang="${0}" ns="${0}"> </foxy-spinner> `),"fail"===l?"error":"busy",this.lang,[this.ns,null!==(o=null===(s=customElements.get("foxy-customer"))||void 0===s?void 0:s.defaultNS)&&void 0!==o?o:"",null!==(n=null===(i=customElements.get("foxy-spinner"))||void 0===i?void 0:i.defaultNS)&&void 0!==n?n:""].join(" ")),this.renderTemplateOrSlot(`${a}:after`))},this.__renderSubscriptions=(e,t)=>{const s="customer:subscriptions";return e(F||(F=C`
1
+ import"./foxy-customer.js";import"./shared-71acf673.js";import"./shared-412670b8.js";import"./shared-3e3c07ac.js";import"./shared-e1c1e8e2.js";import"./foxy-access-recovery-form.js";import"./foxy-payment-method-card.js";import"./foxy-transactions-table.js";import"./foxy-subscription-card.js";import"./foxy-subscription-form.js";import"./foxy-collection-pages.js";import"./foxy-collection-page.js";import"./foxy-sign-in-form.js";import"./foxy-form-dialog.js";import"./foxy-spinner.js";import{_ as e,I as t,k as s}from"./shared-ca0f14c1.js";import{h as r,L as o,c as i}from"./shared-dc73b9a5.js";import{A as n}from"./shared-023c287a.js";import"./shared-9be1a70f.js";import{C as a}from"./shared-c7c8d1b6.js";import{a as l,T as d,R as c}from"./shared-f31044b8.js";import{A as m}from"./shared-9b392ba8.js";import{c as h}from"./shared-4e709717.js";import{C as u}from"./shared-85d45495.js";import{N as p}from"./shared-77fad85a.js";import{B as f}from"./shared-3a7cf739.js";import{i as g}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./foxy-attribute-card.js";import"./shared-2f0efb2c.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./foxy-attribute-form.js";import"./shared-23fd456c.js";import"./shared-084b6372.js";import"./shared-c7280a24.js";import"./shared-9ef81b37.js";import"./shared-6f89d2e0.js";import"./shared-4560425c.js";import"./shared-11f0daea.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import"./shared-99940888.js";import"./shared-ec7cfc23.js";import"./shared-189dfb49.js";import"./shared-fd595d0a.js";import"./foxy-customer-form.js";import"./foxy-nucleon-element.js";import"./shared-b738ee96.js";import"./foxy-address-card.js";import"./shared-a48a9dfc.js";import"./foxy-address-form.js";import"./foxy-table.js";import"./shared-b5195ae3.js";import"./shared-82b1a365.js";import"./shared-6ce2acfa.js";import"./shared-0eb966c5.js";import"./foxy-cancellation-form.js";import"./shared-74a27421.js";import"./shared-2061be9a.js";import"./shared-daa454bf.js";import"./shared-60c862aa.js";import"./shared-07731632.js";import"./shared-a0c6a159.js";import"./shared-c0fb5a33.js";import"./shared-a2a1193d.js";import"./shared-80b90eec.js";let $,y,v=e=>e;class b extends(l(d(a),"customer-portal")){constructor(){super(...arguments),this.group=""}static get properties(){return e(e({},super.properties),{},{group:{type:String}})}render(){return this.api.storage.getItem(n.SESSION)?r($||($=v` <foxy-internal-customer-portal-logged-in-view disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" customer="${0}" group="${0}" class="h-full" lang="${0}" href="${0}" ns="${0}" .templates="${0}"> </foxy-internal-customer-portal-logged-in-view> `),this.disabledSelector.toString(),this.readonlySelector.toString(),this.hiddenSelector.toString(),this.base,this.group,this.lang,new URL("./customer_portal_settings",this.base).toString(),this.ns,this.templates):r(y||(y=v` <foxy-internal-customer-portal-logged-out-view disabledcontrols="${0}" readonlycontrols="${0}" hiddencontrols="${0}" group="${0}" class="h-full" lang="${0}" ns="${0}" .templates="${0}"> </foxy-internal-customer-portal-logged-out-view> `),this.disabledSelector.toString(),this.readonlySelector.toString(),this.hiddenSelector.toString(),this.group,this.lang,this.ns,this.templates)}}let S,x,_=e=>e;const j=c(d(l(t(o))));let T,w,O,k,E=e=>e;class R extends(d(o)){constructor(){super(...arguments),this.disabled=!1,this.href="",this.icon=""}static get properties(){return e(e({},super.properties),{},{disabled:{type:Boolean},href:{type:String},icon:{type:String}})}render(){const e=h({"flex-auto font-medium tracking-wide text-s rounded-s transition-colors":!0,"hover-text-primary hover-cursor-pointer":!this.disabled,"focus-outline-none focus-ring-2 ring-primary-50 ring-offset-2":!this.disabled,"text-disabled cursor-default":this.disabled}),t=r(T||(T=E` ${0} <slot></slot> `),this.icon?r(w||(w=E`<iron-icon icon="${0}" class="icon-inline"></iron-icon>`),this.icon):"");return this.disabled?r(O||(O=E`<button class="${0}" disabled="disabled">${0}</button>`),e,t):r(k||(k=E` <a class="${0}" href="${0}" rel="nofollow noopener">${0}</a> `),e,this.href,t)}}let z,N,A,F,I,H,U,q,L,P,C=e=>e;const D=d(u(l(p)));let V,B,J,W,G,K,M,Q,X,Y,Z=e=>e;const ee=d(u(l(t(o))));const te=["html"],se=["html"];let re,oe,ie,ne,ae,le,de,ce,me,he,ue,pe,fe=e=>e;const ge=l(u(d(t(o))));let $e,ye,ve,be=e=>e;const Se=u(d(l(t(o),"customer-portal")));customElements.define("foxy-internal-customer-portal-logged-in-view",class extends D{constructor(){var e;super(...arguments),e=this,this.templates={},this.customer="",this.loggingOutState="idle",this.loggingOutStateResetTimeout=null,this.__renderHeaderActionsSignOut=()=>{var t,s,o,i,n;const a="customer:header:actions:sign-out",l=this.loggingOutState,d=this.disabledSelector.matches(a)||!(null===(t=this.__customerElement)||void 0===t?void 0:t.in({idle:"snapshot"}))||"idle"!==l,c={"border-radius":"100%",padding:"var(--lumo-space-xs)",display:"flex",margin:"0",cursor:d?"default":"pointer"};return r(z||(z=C` <div style="display:flex;margin-left:var(--lumo-space-m)"> ${0} <vaadin-button data-testid="sign-out" aria-label="${0}" style="${0}" theme="icon" ?disabled="${0}" @click="${0}"> ${0} </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot(`${a}:before`),this.t("sign_out").toString(),Object.entries(c).reduce(((e,[t,s])=>`${e}${t}:${s};`),""),d,(async function(){try{e.loggingOutState="busy",await new m(e).fetch("foxy://customer-api/session",{method:"DELETE"}),e.loggingOutState="idle"}catch(t){e.loggingOutState="fail",e.loggingOutStateResetTimeout=setTimeout((()=>{e.loggingOutState="idle",e.loggingOutStateResetTimeout=null}),1e3)}}),"idle"===l?r(N||(N=C`<iron-icon icon="icons:exit-to-app"></iron-icon>`)):r(A||(A=C` <foxy-spinner layout="no-label" state="${0}" style="margin:auto" lang="${0}" ns="${0}"> </foxy-spinner> `),"fail"===l?"error":"busy",this.lang,[this.ns,null!==(o=null===(s=customElements.get("foxy-customer"))||void 0===s?void 0:s.defaultNS)&&void 0!==o?o:"",null!==(n=null===(i=customElements.get("foxy-spinner"))||void 0===i?void 0:i.defaultNS)&&void 0!==n?n:""].join(" ")),this.renderTemplateOrSlot(`${a}:after`))},this.__renderSubscriptions=(e,t)=>{const s="customer:subscriptions";return e(F||(F=C`
2
2
  ${0}
3
3
 
4
4
  <foxy-internal-customer-portal-subscriptions
@@ -1,4 +1,4 @@
1
- import"./shared-3e3c07ac.js";import"./shared-412670b8.js";import{h as t}from"./shared-91b86bae.js";import"./shared-71acf673.js";import"./shared-e1c1e8e2.js";import"./foxy-payment-method-card.js";import"./foxy-subscription-form.js";import"./foxy-form-dialog.js";import"./foxy-transactions-table.js";import"./foxy-collection-pages.js";import"./foxy-collection-page.js";import"./foxy-attribute-card.js";import"./foxy-attribute-form.js";import"./foxy-customer-form.js";import"./foxy-address-card.js";import"./foxy-address-form.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./shared-2f0efb2c.js";import{k as e}from"./shared-ca0f14c1.js";import{L as s,h as a,c as r}from"./shared-dc73b9a5.js";import{C as o}from"./shared-85d45495.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{w as h,S as i,T as d,a as n}from"./shared-f31044b8.js";import{c as l}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import{S as m}from"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{G as c}from"./shared-189dfb49.js";import{N as v}from"./shared-619adfad.js";import{S as p}from"./shared-5e43b817.js";import{i as g}from"./shared-9803aa7c.js";import"./shared-9ef81b37.js";import"./shared-0eb966c5.js";import"./shared-3a7cf739.js";import"./foxy-nucleon-element.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./foxy-cancellation-form.js";import"./shared-74a27421.js";import"./shared-2061be9a.js";import"./shared-23fd456c.js";import"./shared-99940888.js";import"./shared-daa454bf.js";import"./shared-60c862aa.js";import"./shared-023c287a.js";import"./shared-9be1a70f.js";import"./shared-fcbf9a41.js";import"./shared-d91ed0a8.js";import"./shared-6ce2acfa.js";import"./shared-a0c6a159.js";import"./shared-fd595d0a.js";import"./shared-b738ee96.js";import"./shared-a48a9dfc.js";let z,f,u,b=t=>t;class $ extends s{constructor(){super(...arguments),this.value=0,this.size=0}static get properties(){return{value:{type:Number},size:{type:Number}}}static get styles(){return h.styles}render(){const t=[],e=[];for(let s=0;s<this.size;++s)t.push(a(z||(z=b` <button id="tab-${0}" role="tab" class="${0}" aria-controls="panel-${0}" aria-selected="${0}" @click="${0}" @keydown="${0}"> <slot name="tab-${0}"></slot> </button> `),s,l({"text-l font-semibold px-s rounded focus-outline-none focus-shadow-outline":!0,"text-tertiary hover-text-body focus-text-body":this.value!==s}),s,this.value===s,(()=>this.value=s),this.__handleKeyDown,s)),e.push(a(f||(f=b` <slot id="panel-${0}" role="tabpanel" name="panel-${0}" class="${0}" aria-hidden="${0}" aria-labelledby="tab-${0}"> </slot> `),s,s,l({hidden:this.value!==s}),this.value!==s,s));return a(u||(u=b` <div role="tablist" aria-orientation="horizontal" class="-mx-s mb-s">${0}</div> ${0} `),t,e)}__handleKeyDown(t){if(t.key.startsWith("Arrow")){t.preventDefault();const e=t.target;let s=null;"ArrowRight"===t.key||"ArrowDown"===t.key?s=e.nextElementSibling:"ArrowLeft"!==t.key&&"ArrowUp"!==t.key||(s=e.previousElementSibling),null==s||s.click(),null==s||s.focus()}}}
1
+ import"./shared-3e3c07ac.js";import"./shared-412670b8.js";import{h as t}from"./shared-91b86bae.js";import"./shared-71acf673.js";import"./shared-e1c1e8e2.js";import"./foxy-payment-method-card.js";import"./foxy-subscription-form.js";import"./foxy-form-dialog.js";import"./foxy-transactions-table.js";import"./foxy-collection-pages.js";import"./foxy-collection-page.js";import"./foxy-attribute-card.js";import"./foxy-attribute-form.js";import"./foxy-customer-form.js";import"./foxy-address-card.js";import"./foxy-address-form.js";import"./foxy-spinner.js";import"./foxy-table.js";import"./shared-2f0efb2c.js";import{k as e}from"./shared-ca0f14c1.js";import{L as s,h as a,c as r}from"./shared-dc73b9a5.js";import{C as o}from"./shared-85d45495.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{w as h,S as i,T as d,a as n}from"./shared-f31044b8.js";import{c as l}from"./shared-4e709717.js";import"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import{S as m}from"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{G as c}from"./shared-189dfb49.js";import{N as v}from"./shared-77fad85a.js";import{S as p}from"./shared-82b1a365.js";import{i as g}from"./shared-9803aa7c.js";import"./shared-9ef81b37.js";import"./shared-0eb966c5.js";import"./shared-3a7cf739.js";import"./foxy-nucleon-element.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./foxy-cancellation-form.js";import"./shared-74a27421.js";import"./shared-2061be9a.js";import"./shared-23fd456c.js";import"./shared-99940888.js";import"./shared-daa454bf.js";import"./shared-60c862aa.js";import"./shared-023c287a.js";import"./shared-9be1a70f.js";import"./shared-07731632.js";import"./shared-b5195ae3.js";import"./shared-6ce2acfa.js";import"./shared-a0c6a159.js";import"./shared-fd595d0a.js";import"./shared-b738ee96.js";import"./shared-a48a9dfc.js";let z,f,u,b=t=>t;class $ extends s{constructor(){super(...arguments),this.value=0,this.size=0}static get properties(){return{value:{type:Number},size:{type:Number}}}static get styles(){return h.styles}render(){const t=[],e=[];for(let s=0;s<this.size;++s)t.push(a(z||(z=b` <button id="tab-${0}" role="tab" class="${0}" aria-controls="panel-${0}" aria-selected="${0}" @click="${0}" @keydown="${0}"> <slot name="tab-${0}"></slot> </button> `),s,l({"text-l font-semibold px-s rounded focus-outline-none focus-shadow-outline":!0,"text-tertiary hover-text-body focus-text-body":this.value!==s}),s,this.value===s,(()=>this.value=s),this.__handleKeyDown,s)),e.push(a(f||(f=b` <slot id="panel-${0}" role="tabpanel" name="panel-${0}" class="${0}" aria-hidden="${0}" aria-labelledby="tab-${0}"> </slot> `),s,s,l({hidden:this.value!==s}),this.value!==s,s));return a(u||(u=b` <div role="tablist" aria-orientation="horizontal" class="-mx-s mb-s">${0}</div> ${0} `),t,e)}__handleKeyDown(t){if(t.key.startsWith("Arrow")){t.preventDefault();const e=t.target;let s=null;"ArrowRight"===t.key||"ArrowDown"===t.key?s=e.nextElementSibling:"ArrowLeft"!==t.key&&"ArrowUp"!==t.key||(s=e.previousElementSibling),null==s||s.click(),null==s||s.focus()}}}
2
2
  /**
3
3
  @license
4
4
  Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
@@ -1 +1 @@
1
- import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{T as s}from"./shared-d91ed0a8.js";import{a}from"./shared-f31044b8.js";import{h as e}from"./shared-dc73b9a5.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./foxy-nucleon-element.js";import"./shared-619adfad.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,n,o,r,d=s=>s;class m extends(a(s,"customers-table")){constructor(){super(...arguments),this.columns=[m.nameColumn,m.idColumn,m.dateColumn,m.emailColumn]}}m.nameColumn={cell:s=>e(t||(t=d` <span data-testclass="names">${0} ${0}</span> `),s.data.first_name,s.data.last_name)},m.idColumn={hideBelow:"md",cell:s=>e(n||(n=d` <span role="presentation" class="text-m text-tertiary">ID&nbsp;</span> <span data-testclass="ids" class="text-m text-secondary font-tnum">${0}</span> `),s.data.id)},m.dateColumn={hideBelow:"md",cell:s=>e(o||(o=d` <span class="text-m text-secondary font-tnum"> <foxy-i18n data-testclass="i18n" lang="${0}" key="date_created" ns="${0}"> </foxy-i18n> <foxy-i18n data-testclass="dates i18n" lang="${0}" key="date" ns="${0}" .options="${0}"> </foxy-i18n> </span> `),s.lang,s.ns,s.lang,s.ns,{value:s.data.date_created})},m.emailColumn={cell:s=>e(r||(r=d`<span data-testclass="emails" class="text-m text-secondary">${0}</span>`),s.data.email)},m.__ns="customers-table",customElements.define("foxy-customers-table",m);export{m as CustomersTable};
1
+ import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{T as s}from"./shared-b5195ae3.js";import{a}from"./shared-f31044b8.js";import{h as e}from"./shared-dc73b9a5.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./foxy-nucleon-element.js";import"./shared-77fad85a.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,n,o,r,m=s=>s;class d extends(a(s,"customers-table")){constructor(){super(...arguments),this.columns=[d.nameColumn,d.idColumn,d.dateColumn,d.emailColumn]}}d.nameColumn={cell:s=>e(t||(t=m` <span data-testclass="names">${0} ${0}</span> `),s.data.first_name,s.data.last_name)},d.idColumn={hideBelow:"md",cell:s=>e(n||(n=m` <span role="presentation" class="text-m text-tertiary">ID&nbsp;</span> <span data-testclass="ids" class="text-m text-secondary font-tnum">${0}</span> `),s.data.id)},d.dateColumn={hideBelow:"md",cell:s=>e(o||(o=m` <span class="text-m text-secondary font-tnum"> <foxy-i18n data-testclass="i18n" lang="${0}" key="date_created" ns="${0}"> </foxy-i18n> <foxy-i18n data-testclass="dates i18n" lang="${0}" key="date" ns="${0}" .options="${0}"> </foxy-i18n> </span> `),s.lang,s.ns,s.lang,s.ns,{value:s.data.date_created})},d.emailColumn={cell:s=>e(r||(r=m`<span data-testclass="emails" class="text-m text-secondary">${0}</span>`),s.data.email)},d.__ns="customers-table",customElements.define("foxy-customers-table",d);export{d as CustomersTable};
@@ -1 +1 @@
1
- import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-2ca6d676.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-619adfad.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,a,i=r=>r;class c extends(s(e,"discount-card")){constructor(){super(...arguments),this.__currencyDisplay="",this.__currency=""}render(){return super.render({title:s=>r(t||(t=i`${0} &bull; ${0}`),s.name,s.code),subtitle:s=>r(a||(a=i` <foxy-i18n options="${0}" lang="${0}" key="price" ns="${0}"> </foxy-i18n> `),JSON.stringify({currencyDisplay:this.__currencyDisplay,amount:`${Math.abs(s.amount)} ${this.__currency}`}),this.lang,this.ns)})}async _sendGet(){const r=await super._sendGet(),[s,e]=await Promise.all([super._fetch(r._links["fx:transaction"].href),super._fetch(r._links["fx:store"].href)]);return this.__currency=s.currency_code,this.__currencyDisplay=e.use_international_currency_symbol?"code":"symbol",r}}customElements.define("foxy-discount-card",c);export{c as DiscountCard};
1
+ import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-d90d6140.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-77fad85a.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,a,i=r=>r;class c extends(s(e,"discount-card")){constructor(){super(...arguments),this.__currencyDisplay="",this.__currency=""}render(){return super.render({title:s=>r(t||(t=i`${0} &bull; ${0}`),s.name,s.code),subtitle:s=>r(a||(a=i` <foxy-i18n options="${0}" lang="${0}" key="price" ns="${0}"> </foxy-i18n> `),JSON.stringify({currencyDisplay:this.__currencyDisplay,amount:`${Math.abs(s.amount)} ${this.__currency}`}),this.lang,this.ns)})}async _sendGet(){const r=await super._sendGet(),[s,e]=await Promise.all([super._fetch(r._links["fx:transaction"].href),super._fetch(r._links["fx:store"].href)]);return this.__currency=s.currency_code,this.__currencyDisplay=e.use_international_currency_symbol?"code":"symbol",r}}customElements.define("foxy-discount-card",c);export{c as DiscountCard};
@@ -1 +1 @@
1
- import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-2ca6d676.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-619adfad.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,a,c=r=>r;const i=s(e,"discount-detail-card");class n extends i{constructor(){super(...arguments),this.__currencyDisplay="",this.__currency=""}render(){return super.render({title:s=>r(t||(t=c`${0}`),s.name),subtitle:s=>{let e;try{e=Math.abs(s.amount_per).toLocaleString(this.lang||"en",{maximumFractionDigits:2,minimumFractionDigits:2,currencyDisplay:this.__currencyDisplay,currency:this.__currency,style:"currency"})}catch(r){e="--"}return r(a||(a=c` <span class="${0}">${0}</span> `),s.amount_per>0?"text-success":"text-error",e)}})}async _sendGet(){const r=await super._sendGet(),[s,e]=await Promise.all([super._fetch(r._links["fx:transaction"].href),super._fetch(r._links["fx:store"].href)]);return this.__currency=s.currency_code,this.__currencyDisplay=e.use_international_currency_symbol?"code":"symbol",r}}customElements.define("foxy-discount-detail-card",n);export{n as DiscountDetailCard};
1
+ import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as r}from"./shared-dc73b9a5.js";import{a as s}from"./shared-f31044b8.js";import{T as e}from"./shared-d90d6140.js";import"./shared-3e3c07ac.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-85d45495.js";import"./shared-9803aa7c.js";import"./shared-77fad85a.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";import"./shared-4e709717.js";let t,a,c=r=>r;const i=s(e,"discount-detail-card");class n extends i{constructor(){super(...arguments),this.__currencyDisplay="",this.__currency=""}render(){return super.render({title:s=>r(t||(t=c`${0}`),s.name),subtitle:s=>{let e;try{e=Math.abs(s.amount_per).toLocaleString(this.lang||"en",{maximumFractionDigits:2,minimumFractionDigits:2,currencyDisplay:this.__currencyDisplay,currency:this.__currency,style:"currency"})}catch(r){e="--"}return r(a||(a=c` <span class="${0}">${0}</span> `),s.amount_per>0?"text-success":"text-error",e)}})}async _sendGet(){const r=await super._sendGet(),[s,e]=await Promise.all([super._fetch(r._links["fx:transaction"].href),super._fetch(r._links["fx:store"].href)]);return this.__currency=s.currency_code,this.__currencyDisplay=e.use_international_currency_symbol?"code":"symbol",r}}customElements.define("foxy-discount-detail-card",n);export{n as DiscountDetailCard};
@@ -1 +1 @@
1
- import"./shared-c7280a24.js";import"./shared-23fd456c.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{_ as e}from"./shared-ca0f14c1.js";import{c as t,h as a}from"./shared-dc73b9a5.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{S as i,T as s,a as r}from"./shared-f31044b8.js";import{c as n}from"./shared-4e709717.js";import{C as o,b as d}from"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{G as l}from"./shared-189dfb49.js";import{P as c}from"./shared-fd595d0a.js";import{C as h}from"./shared-85d45495.js";import{N as m}from"./shared-619adfad.js";import{i as p}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-3a7cf739.js";import"./shared-99940888.js";import"./shared-4c0520f6.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";let f,u,$,v,y,_,b,x,g=e=>e;const j=i(s(h(r(m,"email-template-form"))));class S extends j{constructor(){super(...arguments),this.templates={},this.__cacheState="idle",this.__contentChoice="default"}static get properties(){return e(e({},super.properties),{},{__cacheState:{attribute:!1},__contentChoice:{attribute:!1}})}static get styles(){return[...super.styles,t(f||(f=g`#cached-content::part(input-field){max-height:15em}`))]}static get scopedElements(){return{"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"foxy-spinner":customElements.get("foxy-spinner"),"foxy-i18n":customElements.get("foxy-i18n"),"vaadin-text-field":customElements.get("vaadin-text-field"),"vaadin-text-area":customElements.get("vaadin-text-area"),"vaadin-button":customElements.get("vaadin-button"),"x-property-table":c,"x-choice":o,"x-group":l}}render(){var e,t;const{hiddenSelector:i,href:s,lang:r,ns:o}=this,d=s?"delete":"create",l=this.in("busy"),c=this.in("fail");return a(u||(u=g` <div class="space-y-m"> ${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> `),i.matches("description",!0)?"":this.__renderDescription(),i.matches("content",!0)?"":this.__renderContent(),i.matches("timestamps",!0)||!s?"":this.__renderTimestamps(),i.matches(d)?"":this.__renderAction(d),n({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!l&&!c}),c?"error":l?"busy":"empty",r,o,null!==(t=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"")}__renderDescription(){var e,t;const i="description";return a($||($=g` <div> ${0} <vaadin-text-field data-testid="${0}" class="w-full mb-s" label="${0}" ?disabled="${0}" ?readonly="${0}" .value="${0}" @keydown="${0}" @input="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot(`${i}:before`),i,this.t(i),!this.in("idle")||this.disabledSelector.matches(i),this.readonlySelector.matches(i),null!==(t=null===(e=this.form)||void 0===e?void 0:e.description)&&void 0!==t?t:"",(e=>"Enter"===e.key&&this.submit()),(e=>{this.edit({description:e.currentTarget.value})}),this.renderTemplateOrSlot(`${i}:after`))}__renderContent(){return a(v||(v=g` <div data-testid="content"> ${0} <div class="space-y-l"> ${0} ${0} </div> ${0} </div> `),this.renderTemplateOrSlot("content:before"),this.__renderContentVariant("content_text_url","content_text","text_template"),this.__renderContentVariant("content_html_url","content_html","html_template"),this.renderTemplateOrSlot("content:after"))}__renderContentVariant(e,t,i){var s;const r=!this.in("idle")||this.disabledSelector.matches("content",!0),o=this.readonlySelector.matches("content",!0),l=this.form[e]?"url":this.form[t]?"clipboard":this.__contentChoice;return a(y||(y=g` <x-group frame> <foxy-i18n class="${0}" lang="${0}" slot="header" key="${0}" ns="${0}"> </foxy-i18n> <x-choice data-testid="${0}-type" .value="${0}" .items="${0}" ?readonly="${0}" ?disabled="${0}" @change="${0}"> ${0} <div slot="url" ?hidden="${0}"> <div class="flex items-center mt-0 mb-m"> <vaadin-text-field data-testid="${0}-url" value="${0}" class="mr-s flex-grow" ?readonly="${0}" ?disabled="${0}" @keydown="${0}" @input="${0}"> </vaadin-text-field> <vaadin-button data-testid="${0}-cache" class="relative" ?disabled="${0}" ?hidden="${0}" @click="${0}"> <foxy-i18n class="${0}" lang="${0}" key="cache" ns="${0}"> </foxy-i18n> <div class="${0}"> <foxy-spinner layout="no-label" class="m-auto" state="${0}" lang="${0}" ns="${0}"> </foxy-spinner> </div> </vaadin-button> </div> </div> <div slot="clipboard" ?hidden="${0}"> <vaadin-text-area data-testid="${0}-clipboard" id="cached-content" class="w-full mb-m" ?readonly="${0}" ?disabled="${0}" .value="${0}" @input="${0}"> </vaadin-text-area> </div> </x-choice> </x-group> `),n({"transition-colors":!0,"text-disabled":r}),this.lang,i,this.ns,t.replace("_","-"),l,["default","url","clipboard"],o,r,(a=>{a instanceof d&&(this.edit({[t]:"",[e]:""}),this.__contentChoice=a.detail)}),["default","url","clipboard"].map((e=>a(_||(_=g` <div slot="${0}-label" class="py-s leading-s"> <foxy-i18n class="block" lang="${0}" key="template_${0}" ns="${0}"> </foxy-i18n> <foxy-i18n class="block text-s opacity-70" lang="${0}" key="template_${0}_explainer" ns="${0}"> </foxy-i18n> </div> `),e,this.lang,e,this.ns,this.lang,e,this.ns))),"url"!==l,t.replace("_","-"),p(this.form[e]),o,r,(e=>"Enter"===e.key&&this.submit()),(a=>{const i=a.currentTarget.value;this.edit({[t]:"",[e]:i})}),t.replace("_","-"),r||"busy"===this.__cacheState,o||this.form[e]!==(null===(s=this.data)||void 0===s?void 0:s[e]),this.__cache,n({"relative transition-opacity":!0,"opacity-0":"idle"!==this.__cacheState}),this.lang,this.ns,n({"absolute inset-0 flex transition-opacity":!0,"opacity-0":"idle"===this.__cacheState}),"fail"===this.__cacheState?"error":"busy",this.lang,this.ns,"clipboard"!==l,t.replace("_","-"),o,r,this.form[t],(a=>{const i=a.currentTarget.value;this.edit({[t]:i,[e]:""})}))}__renderTimestamps(){const e="timestamps";return a(b||(b=g` <div> ${0} <x-property-table data-testid="timestamps" .items="${0}"> </x-property-table> ${0} </div> `),this.renderTemplateOrSlot(`${e}: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(`${e}:after`))}__renderAction(e){const{disabledSelector:t,href:i,lang:s,ns:r}=this,n=this.in({idle:{template:{dirty:"valid"}}}),o=this.in({idle:{snapshot:{dirty:"valid"}}}),d=!this.in("idle")||t.matches(e,!0),l=n||o;return a(x||(x=g` <div> ${0} <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> <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(`${e}:before`),s,r,(e=>{e.detail.cancelled||this.delete()}),this.in("idle")?"primary "+(i?"error":"success"):"",e,this.in({idle:"template"})&&!l||d,(t=>{if("delete"===e){this.renderRoot.querySelector("#confirm").show(t.currentTarget)}else this.submit()}),r,e,s,this.renderTemplateOrSlot(`${e}:after`))}async __cache(){var e,t;this.__cacheState="busy";try{const a=null!==(t=null===(e=this.data)||void 0===e?void 0:e._links["fx:cache"].href)&&void 0!==t?t:"",i=await new S.API(this).fetch(a,{method:"POST"});this.__cacheState=i.ok?"idle":"fail"}catch(e){this.__cacheState="fail"}}}customElements.define("foxy-email-template-form",S);export{S as EmailTemplateForm};
1
+ import"./shared-c7280a24.js";import"./shared-23fd456c.js";import"./shared-71acf673.js";import"./shared-9ef81b37.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{_ as e}from"./shared-ca0f14c1.js";import{c as t,h as a}from"./shared-dc73b9a5.js";import"./shared-3e3c07ac.js";import"./shared-084b6372.js";import"./shared-4560425c.js";import{S as i,T as s,a as r}from"./shared-f31044b8.js";import{c as n}from"./shared-4e709717.js";import{C as o,b as d}from"./shared-11f0daea.js";import"./shared-6f89d2e0.js";import"./shared-ec7cfc23.js";import"./shared-901ca702.js";import"./shared-fe68657a.js";import"./shared-c63ba384.js";import{G as l}from"./shared-189dfb49.js";import{P as c}from"./shared-fd595d0a.js";import{C as h}from"./shared-85d45495.js";import{N as m}from"./shared-77fad85a.js";import{i as p}from"./shared-9803aa7c.js";import"./shared-91b86bae.js";import"./shared-412670b8.js";import"./shared-3a7cf739.js";import"./shared-99940888.js";import"./shared-4c0520f6.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";let f,u,$,v,y,_,b,x,g=e=>e;const j=i(s(h(r(m,"email-template-form"))));class S extends j{constructor(){super(...arguments),this.templates={},this.__cacheState="idle",this.__contentChoice="default"}static get properties(){return e(e({},super.properties),{},{__cacheState:{attribute:!1},__contentChoice:{attribute:!1}})}static get styles(){return[...super.styles,t(f||(f=g`#cached-content::part(input-field){max-height:15em}`))]}static get scopedElements(){return{"foxy-internal-confirm-dialog":customElements.get("foxy-internal-confirm-dialog"),"foxy-internal-sandbox":customElements.get("foxy-internal-sandbox"),"foxy-spinner":customElements.get("foxy-spinner"),"foxy-i18n":customElements.get("foxy-i18n"),"vaadin-text-field":customElements.get("vaadin-text-field"),"vaadin-text-area":customElements.get("vaadin-text-area"),"vaadin-button":customElements.get("vaadin-button"),"x-property-table":c,"x-choice":o,"x-group":l}}render(){var e,t;const{hiddenSelector:i,href:s,lang:r,ns:o}=this,d=s?"delete":"create",l=this.in("busy"),c=this.in("fail");return a(u||(u=g` <div class="space-y-m"> ${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> `),i.matches("description",!0)?"":this.__renderDescription(),i.matches("content",!0)?"":this.__renderContent(),i.matches("timestamps",!0)||!s?"":this.__renderTimestamps(),i.matches(d)?"":this.__renderAction(d),n({"transition duration-500 ease-in-out absolute inset-0 flex":!0,"opacity-0 pointer-events-none":!l&&!c}),c?"error":l?"busy":"empty",r,o,null!==(t=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==t?t:"")}__renderDescription(){var e,t;const i="description";return a($||($=g` <div> ${0} <vaadin-text-field data-testid="${0}" class="w-full mb-s" label="${0}" ?disabled="${0}" ?readonly="${0}" .value="${0}" @keydown="${0}" @input="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot(`${i}:before`),i,this.t(i),!this.in("idle")||this.disabledSelector.matches(i),this.readonlySelector.matches(i),null!==(t=null===(e=this.form)||void 0===e?void 0:e.description)&&void 0!==t?t:"",(e=>"Enter"===e.key&&this.submit()),(e=>{this.edit({description:e.currentTarget.value})}),this.renderTemplateOrSlot(`${i}:after`))}__renderContent(){return a(v||(v=g` <div data-testid="content"> ${0} <div class="space-y-l"> ${0} ${0} </div> ${0} </div> `),this.renderTemplateOrSlot("content:before"),this.__renderContentVariant("content_text_url","content_text","text_template"),this.__renderContentVariant("content_html_url","content_html","html_template"),this.renderTemplateOrSlot("content:after"))}__renderContentVariant(e,t,i){var s;const r=!this.in("idle")||this.disabledSelector.matches("content",!0),o=this.readonlySelector.matches("content",!0),l=this.form[e]?"url":this.form[t]?"clipboard":this.__contentChoice;return a(y||(y=g` <x-group frame> <foxy-i18n class="${0}" lang="${0}" slot="header" key="${0}" ns="${0}"> </foxy-i18n> <x-choice data-testid="${0}-type" .value="${0}" .items="${0}" ?readonly="${0}" ?disabled="${0}" @change="${0}"> ${0} <div slot="url" ?hidden="${0}"> <div class="flex items-center mt-0 mb-m"> <vaadin-text-field data-testid="${0}-url" value="${0}" class="mr-s flex-grow" ?readonly="${0}" ?disabled="${0}" @keydown="${0}" @input="${0}"> </vaadin-text-field> <vaadin-button data-testid="${0}-cache" class="relative" ?disabled="${0}" ?hidden="${0}" @click="${0}"> <foxy-i18n class="${0}" lang="${0}" key="cache" ns="${0}"> </foxy-i18n> <div class="${0}"> <foxy-spinner layout="no-label" class="m-auto" state="${0}" lang="${0}" ns="${0}"> </foxy-spinner> </div> </vaadin-button> </div> </div> <div slot="clipboard" ?hidden="${0}"> <vaadin-text-area data-testid="${0}-clipboard" id="cached-content" class="w-full mb-m" ?readonly="${0}" ?disabled="${0}" .value="${0}" @input="${0}"> </vaadin-text-area> </div> </x-choice> </x-group> `),n({"transition-colors":!0,"text-disabled":r}),this.lang,i,this.ns,t.replace("_","-"),l,["default","url","clipboard"],o,r,(a=>{a instanceof d&&(this.edit({[t]:"",[e]:""}),this.__contentChoice=a.detail)}),["default","url","clipboard"].map((e=>a(_||(_=g` <div slot="${0}-label" class="py-s leading-s"> <foxy-i18n class="block" lang="${0}" key="template_${0}" ns="${0}"> </foxy-i18n> <foxy-i18n class="block text-s opacity-70" lang="${0}" key="template_${0}_explainer" ns="${0}"> </foxy-i18n> </div> `),e,this.lang,e,this.ns,this.lang,e,this.ns))),"url"!==l,t.replace("_","-"),p(this.form[e]),o,r,(e=>"Enter"===e.key&&this.submit()),(a=>{const i=a.currentTarget.value;this.edit({[t]:"",[e]:i})}),t.replace("_","-"),r||"busy"===this.__cacheState,o||this.form[e]!==(null===(s=this.data)||void 0===s?void 0:s[e]),this.__cache,n({"relative transition-opacity":!0,"opacity-0":"idle"!==this.__cacheState}),this.lang,this.ns,n({"absolute inset-0 flex transition-opacity":!0,"opacity-0":"idle"===this.__cacheState}),"fail"===this.__cacheState?"error":"busy",this.lang,this.ns,"clipboard"!==l,t.replace("_","-"),o,r,this.form[t],(a=>{const i=a.currentTarget.value;this.edit({[t]:i,[e]:""})}))}__renderTimestamps(){const e="timestamps";return a(b||(b=g` <div> ${0} <x-property-table data-testid="timestamps" .items="${0}"> </x-property-table> ${0} </div> `),this.renderTemplateOrSlot(`${e}: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(`${e}:after`))}__renderAction(e){const{disabledSelector:t,href:i,lang:s,ns:r}=this,n=this.in({idle:{template:{dirty:"valid"}}}),o=this.in({idle:{snapshot:{dirty:"valid"}}}),d=!this.in("idle")||t.matches(e,!0),l=n||o;return a(x||(x=g` <div> ${0} <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> <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(`${e}:before`),s,r,(e=>{e.detail.cancelled||this.delete()}),this.in("idle")?"primary "+(i?"error":"success"):"",e,this.in({idle:"template"})&&!l||d,(t=>{if("delete"===e){this.renderRoot.querySelector("#confirm").show(t.currentTarget)}else this.submit()}),r,e,s,this.renderTemplateOrSlot(`${e}:after`))}async __cache(){var e,t;this.__cacheState="busy";try{const a=null!==(t=null===(e=this.data)||void 0===e?void 0:e._links["fx:cache"].href)&&void 0!==t?t:"",i=await new S.API(this).fetch(a,{method:"POST"});this.__cacheState=i.ok?"idle":"fail"}catch(e){this.__cacheState="fail"}}}customElements.define("foxy-email-template-form",S);export{S as EmailTemplateForm};
@@ -1 +1 @@
1
- import{k as e,_ as s}from"./shared-ca0f14c1.js";import{L as t,c as r,h as a}from"./shared-dc73b9a5.js";import{T as i,a as n,S as o}from"./shared-f31044b8.js";import{c as l}from"./shared-4e709717.js";import{G as d}from"./shared-189dfb49.js";import"./foxy-nucleon-element.js";import{N as c}from"./shared-619adfad.js";import"./shared-3a7cf739.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let p,u,m,f=e=>e;class x extends(i(t)){constructor(){super(...arguments),this.data=[]}static get properties(){return{data:{type:Array}}}static get styles(){return[super.styles,r(p||(p=f`dd,dt{display:inline-block;overflow:hidden;vertical-align:top;overflow-wrap:anywhere}dt{min-width:calc(5 * var(--lumo-size-l));padding-right:.5em}dd{max-width:calc(15 * var(--lumo-size-l));min-width:calc(10 * var(--lumo-size-l))}`))]}render(){return a(u||(u=f` <dl class="space-y-s"> ${0} </dl> `),this.data.map((e=>{const s=String(e[1]).trim();return a(m||(m=f` <div> <dt class="text-secondary truncate">${0}</dt> <dd class="${0}">${0}</dd> </div> `),e[0],l({"text-tertiary":!s}),s||"–")})))}}let y,h,g=e=>e;const v=["_links","_embedded"],$=n(i(o(c)));class _ extends ${static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-data-list":x}}render(){if(this.in({idle:"snapshot"})){const s=this.data,t=e(s,v);return a(y||(y=g` <x-data-list aria-live="polite" aria-busy="false" class="leading-s text-s" data="${0}"> </x-data-list> `),JSON.stringify(Array.from(Object.entries(t))))}const s=this.in("busy");return a(h||(h=g` <div aria-live="polite" aria-busy="${0}" data-testid="wrapper" class="flex justify-center"> <foxy-spinner data-testid="spinner" layout="horizontal" state="${0}" lang="${0}" ns="${0}"> </foxy-spinner> </div> `),s,this.in("fail")?"error":s?"busy":"empty",this.lang,this.ns)}}let b,j,w,k,S,E,O,N,T,z=e=>e;const G=n(i(o(c)),"error-entry-card");class J extends G{constructor(){super(...arguments),this.open=!1}static get scopedElements(){return{"x-resource-viewer":_,"foxy-spinner":customElements.get("foxy-spinner"),"x-data-list":x,"iron-icon":customElements.get("iron-icon"),"foxy-i18n":customElements.get("foxy-i18n"),"x-group":d}}static get properties(){return s(s({},super.properties),{},{open:{type:Boolean,reflect:!0}})}render(){var e,s;const t=this.data,r=this.in("busy");if(t){const{hide_error:e}=t,{open:s}=this;return a(b||(b=z` <details aria-busy="${0}" aria-live="polite" class="text-body w-full" ?open="${0}" @toggle="${0}"> <summary class="rounded-s ring-offset-4 ring-offset-base ring-primary-50 focus-outline-none focus-ring-2"> <div style="padding-left:calc(var(--lumo-space-xs) + var(--lumo-space-s) - 1px)" class="${0}"> ${0} </div> </summary> ${0} </details> `),r,s,this.__handleToggle,l({"border-l-2 leading-s relative cursor-pointer":!0,"border-contrast":e&&!s,"border-primary":!e,"border-error":e&&s,"h-l":!s}),this.__renderSummary(t),s?this.__renderDetails(t):"")}return a(j||(j=z` <div aria-busy="${0}" aria-live="polite" style="padding-left:calc(var(--lumo-space-xs) + var(--lumo-space-s) - 1px)" class="flex items-center justify-center border-l-2 leading-s relative border-contrast-10 h-l"> <foxy-spinner data-testid="spinner" layout="horizontal" state="${0}" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> `),r,r?"busy":this.in("fail")?"error":"empty",this.lang,this.ns,null!==(s=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==s?s:"")}__renderGetOrPostValues(e,s){const t=e||s,r=new URLSearchParams(this.__decodeHtml(t));return a(w||(w=z` <div class="relative leading-xs pt-s"> <div class="absolute font-semibold right-0 text-tertiary text-xs top-0 mt-s">${0}</div> <x-data-list data="${0}"></x-data-list> </div> `),e?"GET":"POST",JSON.stringify(Array.from(r.entries())))}__renderReferrer(e){return a(k||(k=z` <span class="text-secondary">Navigated from</span> <a target="_blank" class="font-semibold text-primary hover-underline" href="${0}" rel="nofollow noopener noreferrer"> ${0} </a> `),e,e)}__renderSummary(e){return a(S||(S=z` <div class="text-s absolute right-0 top-0 text-tertiary"> <iron-icon icon="icons:expand-${0}"></iron-icon> </div> <div class="text-s mb-xs ${0}"> <foxy-i18n options="${0}" lang="${0}" key="date" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="time" ns="${0}"> </foxy-i18n> </div> <p class="${0} overflow-hidden font-medium"> ${0} </p> `),this.open?"less":"more",e.hide_error?"text-error":"text-primary",JSON.stringify({value:e.date_created}),this.lang,this.ns,JSON.stringify({value:e.date_created}),this.lang,this.ns,this.open?"":"truncate",e.error_message)}__renderDetails(e){return a(E||(E=z` <div class="space-y-m pt-m"> <x-group frame> <foxy-i18n slot="header" lang="${0}" key="request" ns="${0}"></foxy-i18n> <div class="mx-xs p-s text-s divide-y divide-contrast-10 space-y-s"> <p> <span class="block font-semibold">${0}</span> ${0} </p> ${0} </div> </x-group> <x-group frame> <foxy-i18n slot="header" lang="${0}" key="client" ns="${0}"></foxy-i18n> <div class="text-s flex flex-col mx-xs p-s"> <span class="font-semibold"> ${0} ${0} </span> ${0} </div> </x-group> ${0} </div> `),this.lang,this.ns,e.url,e.referrer?this.__renderReferrer(e.referrer):"",e.get_values||e.post_values?this.__renderGetOrPostValues(e.get_values,e.post_values):"",this.lang,this.ns,e.ip_address,e.ip_country?a(O||(O=z`<span class="text-tertiary"> • </span>${0}`),e.ip_country):"",e.user_agent?a(N||(N=z`<span class="text-secondary">${0}</span>`),e.user_agent):"",Object.entries(e._links).map((([e,s])=>["self","fx:store","curies"].includes(e)?"":a(T||(T=z` <x-group frame> <foxy-i18n slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-resource-viewer class="p-s mx-xs" href="${0}" lang="${0}" ns="${0}"> </x-resource-viewer> </x-group> `),this.lang,e.substr(3),this.ns,s.href,this.lang,this.ns))))}__handleToggle(e){var s;const t=e.target;t.open&&!1===(null===(s=this.data)||void 0===s?void 0:s.hide_error)&&(this.edit({hide_error:!0}),this.submit()),this.open=t.open}__decodeHtml(e){const s=document.createElement("textarea");return s.innerHTML=e,s.value}}customElements.define("foxy-error-entry-card",J);export{J as ErrorEntryCard};
1
+ import{k as e,_ as s}from"./shared-ca0f14c1.js";import{L as t,c as r,h as a}from"./shared-dc73b9a5.js";import{T as i,a as n,S as o}from"./shared-f31044b8.js";import{c as l}from"./shared-4e709717.js";import{G as d}from"./shared-189dfb49.js";import"./foxy-nucleon-element.js";import{N as c}from"./shared-77fad85a.js";import"./shared-3a7cf739.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let p,u,m,f=e=>e;class x extends(i(t)){constructor(){super(...arguments),this.data=[]}static get properties(){return{data:{type:Array}}}static get styles(){return[super.styles,r(p||(p=f`dd,dt{display:inline-block;overflow:hidden;vertical-align:top;overflow-wrap:anywhere}dt{min-width:calc(5 * var(--lumo-size-l));padding-right:.5em}dd{max-width:calc(15 * var(--lumo-size-l));min-width:calc(10 * var(--lumo-size-l))}`))]}render(){return a(u||(u=f` <dl class="space-y-s"> ${0} </dl> `),this.data.map((e=>{const s=String(e[1]).trim();return a(m||(m=f` <div> <dt class="text-secondary truncate">${0}</dt> <dd class="${0}">${0}</dd> </div> `),e[0],l({"text-tertiary":!s}),s||"–")})))}}let y,h,g=e=>e;const v=["_links","_embedded"],$=n(i(o(c)));class _ extends ${static get scopedElements(){return{"foxy-spinner":customElements.get("foxy-spinner"),"x-data-list":x}}render(){if(this.in({idle:"snapshot"})){const s=this.data,t=e(s,v);return a(y||(y=g` <x-data-list aria-live="polite" aria-busy="false" class="leading-s text-s" data="${0}"> </x-data-list> `),JSON.stringify(Array.from(Object.entries(t))))}const s=this.in("busy");return a(h||(h=g` <div aria-live="polite" aria-busy="${0}" data-testid="wrapper" class="flex justify-center"> <foxy-spinner data-testid="spinner" layout="horizontal" state="${0}" lang="${0}" ns="${0}"> </foxy-spinner> </div> `),s,this.in("fail")?"error":s?"busy":"empty",this.lang,this.ns)}}let b,j,w,k,S,E,O,N,T,z=e=>e;const G=n(i(o(c)),"error-entry-card");class J extends G{constructor(){super(...arguments),this.open=!1}static get scopedElements(){return{"x-resource-viewer":_,"foxy-spinner":customElements.get("foxy-spinner"),"x-data-list":x,"iron-icon":customElements.get("iron-icon"),"foxy-i18n":customElements.get("foxy-i18n"),"x-group":d}}static get properties(){return s(s({},super.properties),{},{open:{type:Boolean,reflect:!0}})}render(){var e,s;const t=this.data,r=this.in("busy");if(t){const{hide_error:e}=t,{open:s}=this;return a(b||(b=z` <details aria-busy="${0}" aria-live="polite" class="text-body w-full" ?open="${0}" @toggle="${0}"> <summary class="rounded-s ring-offset-4 ring-offset-base ring-primary-50 focus-outline-none focus-ring-2"> <div style="padding-left:calc(var(--lumo-space-xs) + var(--lumo-space-s) - 1px)" class="${0}"> ${0} </div> </summary> ${0} </details> `),r,s,this.__handleToggle,l({"border-l-2 leading-s relative cursor-pointer":!0,"border-contrast":e&&!s,"border-primary":!e,"border-error":e&&s,"h-l":!s}),this.__renderSummary(t),s?this.__renderDetails(t):"")}return a(j||(j=z` <div aria-busy="${0}" aria-live="polite" style="padding-left:calc(var(--lumo-space-xs) + var(--lumo-space-s) - 1px)" class="flex items-center justify-center border-l-2 leading-s relative border-contrast-10 h-l"> <foxy-spinner data-testid="spinner" layout="horizontal" state="${0}" lang="${0}" ns="${0} ${0}"> </foxy-spinner> </div> `),r,r?"busy":this.in("fail")?"error":"empty",this.lang,this.ns,null!==(s=null===(e=customElements.get("foxy-spinner"))||void 0===e?void 0:e.defaultNS)&&void 0!==s?s:"")}__renderGetOrPostValues(e,s){const t=e||s,r=new URLSearchParams(this.__decodeHtml(t));return a(w||(w=z` <div class="relative leading-xs pt-s"> <div class="absolute font-semibold right-0 text-tertiary text-xs top-0 mt-s">${0}</div> <x-data-list data="${0}"></x-data-list> </div> `),e?"GET":"POST",JSON.stringify(Array.from(r.entries())))}__renderReferrer(e){return a(k||(k=z` <span class="text-secondary">Navigated from</span> <a target="_blank" class="font-semibold text-primary hover-underline" href="${0}" rel="nofollow noopener noreferrer"> ${0} </a> `),e,e)}__renderSummary(e){return a(S||(S=z` <div class="text-s absolute right-0 top-0 text-tertiary"> <iron-icon icon="icons:expand-${0}"></iron-icon> </div> <div class="text-s mb-xs ${0}"> <foxy-i18n options="${0}" lang="${0}" key="date" ns="${0}"> </foxy-i18n> <foxy-i18n options="${0}" lang="${0}" key="time" ns="${0}"> </foxy-i18n> </div> <p class="${0} overflow-hidden font-medium"> ${0} </p> `),this.open?"less":"more",e.hide_error?"text-error":"text-primary",JSON.stringify({value:e.date_created}),this.lang,this.ns,JSON.stringify({value:e.date_created}),this.lang,this.ns,this.open?"":"truncate",e.error_message)}__renderDetails(e){return a(E||(E=z` <div class="space-y-m pt-m"> <x-group frame> <foxy-i18n slot="header" lang="${0}" key="request" ns="${0}"></foxy-i18n> <div class="mx-xs p-s text-s divide-y divide-contrast-10 space-y-s"> <p> <span class="block font-semibold">${0}</span> ${0} </p> ${0} </div> </x-group> <x-group frame> <foxy-i18n slot="header" lang="${0}" key="client" ns="${0}"></foxy-i18n> <div class="text-s flex flex-col mx-xs p-s"> <span class="font-semibold"> ${0} ${0} </span> ${0} </div> </x-group> ${0} </div> `),this.lang,this.ns,e.url,e.referrer?this.__renderReferrer(e.referrer):"",e.get_values||e.post_values?this.__renderGetOrPostValues(e.get_values,e.post_values):"",this.lang,this.ns,e.ip_address,e.ip_country?a(O||(O=z`<span class="text-tertiary"> • </span>${0}`),e.ip_country):"",e.user_agent?a(N||(N=z`<span class="text-secondary">${0}</span>`),e.user_agent):"",Object.entries(e._links).map((([e,s])=>["self","fx:store","curies"].includes(e)?"":a(T||(T=z` <x-group frame> <foxy-i18n slot="header" lang="${0}" key="${0}" ns="${0}"> </foxy-i18n> <x-resource-viewer class="p-s mx-xs" href="${0}" lang="${0}" ns="${0}"> </x-resource-viewer> </x-group> `),this.lang,e.substr(3),this.ns,s.href,this.lang,this.ns))))}__handleToggle(e){var s;const t=e.target;t.open&&!1===(null===(s=this.data)||void 0===s?void 0:s.hide_error)&&(this.edit({hide_error:!0}),this.submit()),this.open=t.open}__decodeHtml(e){const s=document.createElement("textarea");return s.innerHTML=e,s.value}}customElements.define("foxy-error-entry-card",J);export{J as ErrorEntryCard};
@@ -1 +1 @@
1
- import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-71acf673.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as r}from"./shared-619adfad.js";import{T as s,a}from"./shared-f31044b8.js";import{c as i}from"./shared-4e709717.js";import"./shared-084b6372.js";import"./shared-91b86bae.js";import"./shared-3e3c07ac.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-9803aa7c.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let n,l,d,o,c,h,m=e=>e;const u=t(s(a(r,"generate-codes-form")));class f extends u{constructor(){super(...arguments),this.templates={}}static get v8n(){return[({number_of_codes:e})=>e&&e>0||"number_of_codes_required",({current_balance:e})=>!e||e>=0||"current_balance_negative",({length:e})=>e&&e>0||"length_required"]}render(){var t,r;const{hiddenSelector:s,lang:a,ns:l}=this,d=this.in("busy"),o=this.in("fail"),c=this.in({idle:"snapshot"}),h=this.in({idle:"template"}),u="transition-opacity duration-500",f="opacity-0 pointer-events-none";return e(n||(n=m` <div aria-busy="${0}" aria-live="polite" class="relative"> <div class="${0}"> ${0} ${0} ${0} ${0} ${0} </div> <div class="${0}"> <div class="mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success"> <iron-icon icon="icons:done-all" class="m-auto text-success-contrast"></iron-icon> </div> <foxy-i18n class="block" lang="${0}" key="generate_codes_done" ns="${0}"></foxy-i18n> </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} ${0}"> </foxy-spinner> </div> </div> `),d,i({"grid grid-cols-2 gap-m":!0,[u]:!0,[f]:c}),s.matches("length",!0)?"":this.__renderLength(),s.matches("number-of-codes",!0)?"":this.__renderNumberOfCodes(),s.matches("current-balance",!0)?"":this.__renderCurrentBalance(),s.matches("prefix",!0)?"":this.__renderPrefix(),s.matches("generate",!0)?"":this.__renderGenerate(),i({"absolute inset-0 flex flex-col items-center justify-center":!0,"text-center text-m text-secondary leading-m":!0,[u]:!0,[f]:!c}),a,l,i({"absolute inset-0 flex":!0,[u]:!0,[f]:!d&&!o}),o?"error":h?"empty":"busy",a,l,null!==(r=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==r?r:"")}__getErrorMessage(e){const t=this.errors.find((t=>t.startsWith(e)));return t?this.t(t.replace(e,"v8n")):""}__getValidator(e){return()=>!this.errors.some((t=>t.startsWith(e)))}__renderLength(){const t=this.in({idle:"template"});return e(l||(l=m` <div> ${0} <vaadin-integer-field error-message="${0}" data-testid="length" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("length:before"),this.__getErrorMessage("length"),this.t("length"),!t||this.disabledSelector.matches("length",!0),this.readonlySelector.matches("length",!0),this.__getValidator("length"),t?this.form.length:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({length:parseInt(t.value)})}),this.renderTemplateOrSlot("length:after"))}__renderNumberOfCodes(){const t=this.in({idle:"template"});return e(d||(d=m` <div> ${0} <vaadin-integer-field error-message="${0}" data-testid="number-of-codes" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("number-of-codes:before"),this.__getErrorMessage("number_of_codes"),this.t("number_of_codes"),!t||this.disabledSelector.matches("number-of-codes",!0),this.readonlySelector.matches("number-of-codes",!0),this.__getValidator("number_of_codes"),t?this.form.number_of_codes:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({number_of_codes:parseInt(t.value)})}),this.renderTemplateOrSlot("number-of-codes:after"))}__renderCurrentBalance(){var t;const r=this.in({idle:"template"});return e(o||(o=m` <div class="col-span-2"> ${0} <vaadin-integer-field error-message="${0}" data-testid="current-balance" label="${0}" class="w-full" min="0" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("current-balance:before"),this.__getErrorMessage("current_balance"),this.t("balance"),!r||this.disabledSelector.matches("current-balance",!0),this.readonlySelector.matches("current-balance",!0),this.__getValidator("current_balance"),r?null!==(t=this.form.current_balance)&&void 0!==t?t:0:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({current_balance:parseInt(t.value)})}),this.renderTemplateOrSlot("current-balance:after"))}__renderPrefix(){const t=this.in({idle:"template"});return e(c||(c=m` <div class="col-span-2"> ${0} <vaadin-text-field helper-text="${0}" data-testid="prefix" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" clear-button-visible .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot("prefix:before"),this.t("leave_empty_for_random_codes"),this.t("prefix"),!t||this.disabledSelector.matches("prefix",!0),this.readonlySelector.matches("prefix",!0),t?this.form.prefix:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({prefix:t.value})}),this.renderTemplateOrSlot("prefix:after"))}__renderGenerate(){const t=this.in({idle:{template:{dirty:"valid"}}});return e(h||(h=m` <div class="col-span-2 mt-m"> ${0} <vaadin-button data-testid="generate" class="w-full" theme="success primary" ?disabled="${0}" @click="${0}"> <foxy-i18n lang="${0}" key="generate" ns="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("generate:before"),!t||this.disabledSelector.matches("generate",!0),(()=>this.submit()),this.lang,this.ns,this.renderTemplateOrSlot("generate:after"))}}customElements.define("foxy-generate-codes-form",f);export{f as GenerateCodesForm};
1
+ import"./shared-901ca702.js";import"./shared-c7280a24.js";import"./shared-fe68657a.js";import"./shared-71acf673.js";import"./shared-e1c1e8e2.js";import"./foxy-spinner.js";import"./shared-2f0efb2c.js";import{h as e}from"./shared-dc73b9a5.js";import{C as t}from"./shared-85d45495.js";import{N as r}from"./shared-77fad85a.js";import{T as s,a}from"./shared-f31044b8.js";import{c as i}from"./shared-4e709717.js";import"./shared-084b6372.js";import"./shared-91b86bae.js";import"./shared-3e3c07ac.js";import"./shared-412670b8.js";import"./shared-ca0f14c1.js";import"./shared-3a7cf739.js";import"./shared-9803aa7c.js";import"./shared-9b392ba8.js";import"./shared-7684cb05.js";import"./shared-4c0520f6.js";let n,l,d,o,c,h,m=e=>e;const u=t(s(a(r,"generate-codes-form")));class f extends u{constructor(){super(...arguments),this.templates={}}static get v8n(){return[({number_of_codes:e})=>e&&e>0||"number_of_codes_required",({current_balance:e})=>!e||e>=0||"current_balance_negative",({length:e})=>e&&e>0||"length_required"]}render(){var t,r;const{hiddenSelector:s,lang:a,ns:l}=this,d=this.in("busy"),o=this.in("fail"),c=this.in({idle:"snapshot"}),h=this.in({idle:"template"}),u="transition-opacity duration-500",f="opacity-0 pointer-events-none";return e(n||(n=m` <div aria-busy="${0}" aria-live="polite" class="relative"> <div class="${0}"> ${0} ${0} ${0} ${0} ${0} </div> <div class="${0}"> <div class="mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success"> <iron-icon icon="icons:done-all" class="m-auto text-success-contrast"></iron-icon> </div> <foxy-i18n class="block" lang="${0}" key="generate_codes_done" ns="${0}"></foxy-i18n> </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} ${0}"> </foxy-spinner> </div> </div> `),d,i({"grid grid-cols-2 gap-m":!0,[u]:!0,[f]:c}),s.matches("length",!0)?"":this.__renderLength(),s.matches("number-of-codes",!0)?"":this.__renderNumberOfCodes(),s.matches("current-balance",!0)?"":this.__renderCurrentBalance(),s.matches("prefix",!0)?"":this.__renderPrefix(),s.matches("generate",!0)?"":this.__renderGenerate(),i({"absolute inset-0 flex flex-col items-center justify-center":!0,"text-center text-m text-secondary leading-m":!0,[u]:!0,[f]:!c}),a,l,i({"absolute inset-0 flex":!0,[u]:!0,[f]:!d&&!o}),o?"error":h?"empty":"busy",a,l,null!==(r=null===(t=customElements.get("foxy-spinner"))||void 0===t?void 0:t.defaultNS)&&void 0!==r?r:"")}__getErrorMessage(e){const t=this.errors.find((t=>t.startsWith(e)));return t?this.t(t.replace(e,"v8n")):""}__getValidator(e){return()=>!this.errors.some((t=>t.startsWith(e)))}__renderLength(){const t=this.in({idle:"template"});return e(l||(l=m` <div> ${0} <vaadin-integer-field error-message="${0}" data-testid="length" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("length:before"),this.__getErrorMessage("length"),this.t("length"),!t||this.disabledSelector.matches("length",!0),this.readonlySelector.matches("length",!0),this.__getValidator("length"),t?this.form.length:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({length:parseInt(t.value)})}),this.renderTemplateOrSlot("length:after"))}__renderNumberOfCodes(){const t=this.in({idle:"template"});return e(d||(d=m` <div> ${0} <vaadin-integer-field error-message="${0}" data-testid="number-of-codes" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("number-of-codes:before"),this.__getErrorMessage("number_of_codes"),this.t("number_of_codes"),!t||this.disabledSelector.matches("number-of-codes",!0),this.readonlySelector.matches("number-of-codes",!0),this.__getValidator("number_of_codes"),t?this.form.number_of_codes:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({number_of_codes:parseInt(t.value)})}),this.renderTemplateOrSlot("number-of-codes:after"))}__renderCurrentBalance(){var t;const r=this.in({idle:"template"});return e(o||(o=m` <div class="col-span-2"> ${0} <vaadin-integer-field error-message="${0}" data-testid="current-balance" label="${0}" class="w-full" min="0" ?disabled="${0}" ?readonly="${0}" prevent-invalid-input has-controls .checkValidity="${0}" .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-integer-field> ${0} </div> `),this.renderTemplateOrSlot("current-balance:before"),this.__getErrorMessage("current_balance"),this.t("balance"),!r||this.disabledSelector.matches("current-balance",!0),this.readonlySelector.matches("current-balance",!0),this.__getValidator("current_balance"),r?null!==(t=this.form.current_balance)&&void 0!==t?t:0:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({current_balance:parseInt(t.value)})}),this.renderTemplateOrSlot("current-balance:after"))}__renderPrefix(){const t=this.in({idle:"template"});return e(c||(c=m` <div class="col-span-2"> ${0} <vaadin-text-field helper-text="${0}" data-testid="prefix" label="${0}" class="w-full" min="1" ?disabled="${0}" ?readonly="${0}" clear-button-visible .value="${0}" @keydown="${0}" @change="${0}"> </vaadin-text-field> ${0} </div> `),this.renderTemplateOrSlot("prefix:before"),this.t("leave_empty_for_random_codes"),this.t("prefix"),!t||this.disabledSelector.matches("prefix",!0),this.readonlySelector.matches("prefix",!0),t?this.form.prefix:"",(e=>"Enter"===e.key&&this.submit()),(e=>{const t=e.currentTarget;this.edit({prefix:t.value})}),this.renderTemplateOrSlot("prefix:after"))}__renderGenerate(){const t=this.in({idle:{template:{dirty:"valid"}}});return e(h||(h=m` <div class="col-span-2 mt-m"> ${0} <vaadin-button data-testid="generate" class="w-full" theme="success primary" ?disabled="${0}" @click="${0}"> <foxy-i18n lang="${0}" key="generate" ns="${0}"></foxy-i18n> </vaadin-button> ${0} </div> `),this.renderTemplateOrSlot("generate:before"),!t||this.disabledSelector.matches("generate",!0),(()=>this.submit()),this.lang,this.ns,this.renderTemplateOrSlot("generate:after"))}}customElements.define("foxy-generate-codes-form",f);export{f as GenerateCodesForm};