@foxy.io/elements 1.49.0 → 1.50.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/foxy-admin-subscription-form.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-cart-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-experimental-add-to-cart-builder.js +1 -1
- package/dist/cdn/foxy-filter-attribute-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +1 -1
- package/dist/cdn/foxy-native-integration-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +15 -15
- package/dist/cdn/foxy-store-form.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +1 -1
- package/dist/cdn/foxy-subscription-settings-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-transaction.js +1 -1
- package/dist/cdn/shared-200aa12d.js +1 -0
- package/dist/cdn/shared-2a84ee72.js +1 -0
- package/dist/cdn/{shared-4bafbc5f.js → shared-986bcd05.js} +1 -1
- package/dist/cdn/{shared-4ffaa9b7.js → shared-ddc1c32f.js} +1 -1
- package/dist/cdn/shared-e6c743bd.js +1 -0
- package/dist/cdn/shared-f05c924a.js +1 -0
- package/dist/cdn/translations/admin-subscription-form/en.json +4 -0
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js +4 -3
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js.map +1 -1
- package/dist/elements/internal/InternalDateControl/InternalDateControl.js +2 -1
- package/dist/elements/internal/InternalDateControl/InternalDateControl.js.map +1 -1
- package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js +1 -0
- package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormStatusActionForm/InternalAdminSubscriptionFormStatusActionForm.d.ts +1 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormStatusActionForm/InternalAdminSubscriptionFormStatusActionForm.js +28 -9
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormStatusActionForm/InternalAdminSubscriptionFormStatusActionForm.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js +1 -1
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js +2 -2
- package/dist/elements/public/PaymentsApiPaymentMethodForm/PaymentsApiPaymentMethodForm.js.map +1 -1
- package/dist/elements/public/ReportForm/utils.js +16 -15
- package/dist/elements/public/ReportForm/utils.js.map +1 -1
- package/dist/utils/parse-date.js +2 -1
- package/dist/utils/parse-date.js.map +1 -1
- package/dist/utils/safe-date.d.ts +1 -0
- package/dist/utils/safe-date.js +9 -0
- package/dist/utils/safe-date.js.map +1 -0
- package/package.json +1 -1
- package/dist/cdn/shared-5078246e.js +0 -1
- package/dist/cdn/shared-af688fe3.js +0 -1
- package/dist/cdn/shared-f0fa0a88.js +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./shared-b0453b08.js";import"./shared-18e301f2.js";import"./shared-591ee1bf.js";import"./shared-26b55da2.js";import{_ as e}from"./shared-8f9014ff.js";import{R as l,T as a,a as n}from"./shared-328aa161.js";import{C as t}from"./shared-41c9c53f.js";import{s as r,h as o,c as s,L as i}from"./shared-ba5c42c7.js";import{I as u}from"./shared-930e68b7.js";import{O as d,T as v}from"./shared-8874ec69.js";import{o as c}from"./shared-63c32024.js";import{c as p}from"./shared-4e709717.js";import{r as h}from"./shared-5fd5805c.js";import{i as f}from"./shared-53e42a77.js";import{s as b}from"./shared-2061be9a.js";import{p as g}from"./shared-
|
|
1
|
+
import"./shared-b0453b08.js";import"./shared-18e301f2.js";import"./shared-591ee1bf.js";import"./shared-26b55da2.js";import{_ as e}from"./shared-8f9014ff.js";import{R as l,T as a,a as n}from"./shared-328aa161.js";import{C as t}from"./shared-41c9c53f.js";import{s as r,h as o,c as s,L as i}from"./shared-ba5c42c7.js";import{I as u}from"./shared-930e68b7.js";import{O as d,T as v}from"./shared-8874ec69.js";import{o as c}from"./shared-63c32024.js";import{c as p}from"./shared-4e709717.js";import{r as h}from"./shared-5fd5805c.js";import{i as f}from"./shared-53e42a77.js";import{s as b}from"./shared-2061be9a.js";import{p as g}from"./shared-200aa12d.js";let y;const m=r(y||(y=(e=>e)`
|
|
2
2
|
<svg class="w-full h-full" viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
3
3
|
<path d="M26.4 14.7399C26.4 15.2922 25.9523 15.7399 25.4 15.7399H10.6C10.0477 15.7399 9.60001 15.2922 9.60001 14.7399V14.2C9.60001 13.6477 10.0477 13.2 10.6 13.2H25.4C25.9523 13.2 26.4 13.6477 26.4 14.2V14.7399ZM26.4 21.8C26.4 22.3523 25.9523 22.8 25.4 22.8H10.6C10.0477 22.8 9.60001 22.3523 9.60001 21.8V21.2601C9.60001 20.7078 10.0477 20.2601 10.6 20.2601H25.4C25.9523 20.2601 26.4 20.7078 26.4 21.2601V21.8Z" class="fill-current"/>
|
|
4
4
|
</svg>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function e(e,t,s){const n=new Date;return n.setFullYear(e,t,s),n.setHours(0,0,0,0),n}export{e as s};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./shared-fc6e64a4.js";import{I as e}from"./shared-9a454e09.js";import{x as t}from"./shared-328aa161.js";import{c as a,h as r}from"./shared-ba5c42c7.js";import{_ as o}from"./shared-8f9014ff.js";import{s as i}from"./shared-2061be9a.js";import{p as l}from"./shared-200aa12d.js";import{i as s}from"./shared-53e42a77.js";import{s as n}from"./shared-e6c743bd.js";let m;function h(e){return new Array(7).fill(new Date).map(((t,a)=>{for(;t.getDay()!==a;)t.setDate(t.getDate()+1);return t.toLocaleDateString(e,{weekday:"short"})}))}function u(e){return new Array(7).fill(new Date).map(((t,a)=>{for(;t.getDay()!==a;)t.setDate(t.getDate()+1);return t.toLocaleDateString(e,{weekday:"long"})}))}t("vaadin-date-picker-text-field",a(m||(m=(e=>e)`:host([theme~=summary-item])::before{display:none}:host([theme~=summary-item]) .vaadin-text-field-container{display:grid;grid-template-columns:auto 1fr;grid-template-rows:repeat(3,min-content);gap:0 var(--lumo-space-m)}:host([theme~=summary-item]) [part=label]{font:normal var(--lumo-font-size-m) var(--lumo-font-family);color:var(--lumo-body-text-color)!important;grid-row:1;-webkit-text-fill-color:var(--lumo-body-text-color)!important}:host([theme~=summary-item]) [part=helper-text]{font:normal var(--lumo-font-size-s) var(--lumo-font-family);color:var(--lumo-secondary-text-color)!important;grid-row:2}:host([theme~=summary-item]) [part=helper-text]::before{display:none}:host([theme~=summary-item]) [part=error-message]{font:normal var(--lumo-font-size-s) var(--lumo-font-family);color:var(--lumo-error-text-color);grid-row:3}:host([theme~=summary-item]) [part=error-message],:host([theme~=summary-item]) [part=helper-text],:host([theme~=summary-item]) [part=label]{line-height:var(--lumo-line-height-xs);grid-column:1;padding:0}:host([theme~=summary-item]) [part=input-field]{grid-column:2;grid-row:1;padding:0;background:0 0;align-self:start;height:1em;--lumo-icon-size-m:1rem}:host([theme~=summary-item]) [part=input-field]::after,:host([theme~=summary-item][readonly]) [part=input-field] slot[name=suffix]{display:none}:host([theme~=summary-item]) [part=value]{line-height:var(--lumo-line-height-xs);text-align:right;min-height:auto;padding:0;margin-right:var(--lumo-space-xs);-webkit-mask-image:none}:host([theme~=summary-item][readonly]) [part=value]{margin-right:0}:host([theme~=summary-item]) [part=clear-button]{transform:scale(1.5)}:host([has-value]) slot[name=suffix]{display:none}`)));let d,p=e=>e;customElements.define("foxy-internal-date-control",class extends e{constructor(){super(...arguments),this.hideClearButton=!1,this.format=null,this.layout=null,this.min=null}static get properties(){return o(o({},super.properties),{},{hideClearButton:{type:Boolean,attribute:"hide-clear-button",reflect:!0},format:{},layout:{},min:{}})}renderControl(){var e,t,a,o;let n;return n="0000-00-00"!==this._value&&this._value?"unix"===this.format?i(new Date(1e3*(null!==(e=this._value)&&void 0!==e?e:0))):"iso-long"===this.format?i(new Date(this._value)):(null!==(t=this._value)&&void 0!==t?t:"").substring(0,10):"",r(d||(d=p` <vaadin-date-picker error-message="${0}" placeholder="${0}" helper-text="${0}" label="${0}" class="w-full" theme="${0}" min="${0}" ?clear-button-visible="${0}" ?disabled="${0}" ?readonly="${0}" .checkValidity="${0}" .value="${0}" .i18n="${0}" @keydown="${0}" @change="${0}"> </vaadin-date-picker> `),s(this._errorMessage),this.placeholder,this.helperText,this.label,null!==(a=this.layout)&&void 0!==a?a:"standalone",s(null!==(o=this.min)&&void 0!==o?o:void 0),!this.hideClearButton,this.disabled,this.readonly,this._checkValidity,n,this.__pickerI18n,(e=>{var t;return"Enter"===e.key&&(null===(t=this.nucleon)||void 0===t?void 0:t.submit())}),(e=>{var t,a,r,o;const i=e.currentTarget;"unix"===this.format?this._value=Math.floor((null!==(a=null===(t=l(i.value))||void 0===t?void 0:t.getTime())&&void 0!==a?a:0)/1e3):"iso-long"===this.format?this._value=null!==(o=null===(r=l(i.value))||void 0===r?void 0:r.toISOString())&&void 0!==o?o:null:this._value=i.value}))}get __pickerI18n(){return{monthNames:(e=this.lang||"en",new Array(12).fill(null).map(((t,a)=>new Date(2e3,a,1).toLocaleDateString(e,{month:"long"})))),weekdays:u(this.lang||"en"),weekdaysShort:h(this.lang||"en"),firstDayOfWeek:0,week:this.t("week"),calendar:this.t("calendar"),clear:this.t("clear"),today:this.t("today"),cancel:this.t("cancel"),referenceDate:"",parseDate:null,formatTitle:(e,t)=>e+" "+t,formatDate:e=>this.t("display_value",{value:n(e.year,e.month,e.day)})};var e}});
|
|
@@ -37,10 +37,13 @@
|
|
|
37
37
|
"cancel": "Close",
|
|
38
38
|
"cancel_title": "Cancel this subscription",
|
|
39
39
|
"cancel_subtitle": "Cancelling subscriptions in Foxy works by setting the end date. You can select any date in the future, starting from tomorrow.",
|
|
40
|
+
"cancel_subtitle_future": "Cancelling subscriptions in Foxy works by setting the end date. You can select any date in the future, beginning from the start date.",
|
|
40
41
|
"cancel_why_not_today_title": "Why can't I select today as the end date?",
|
|
41
42
|
"cancel_why_not_today_text": "Same-day cancellations may disrupt billing due to ongoing payment processing. Advance notice ensures that all transactions are completed before cancellation.",
|
|
43
|
+
"cancel_why_not_today_text_future": "Subscriptions that haven't started yet won't be processed until their start date. Therefore, the earliest end date you can select is the start date.",
|
|
42
44
|
"cancel_whats_next_title": "What happens next?",
|
|
43
45
|
"cancel_whats_next_text": "The subscription will remain active and all payments will be processed as usual until the end date. On the end date, the subscription will be cancelled and no further payments will be taken. If the end date is the same as a normal renewal date, no payments will be taken, but the subscription will simply be cancelled.",
|
|
46
|
+
"cancel_whats_next_text_future": "The subscription will not be processed until the start date. On the end date, the subscription will be cancelled and no payments will be taken. If the end date is the same as the start date, no payments will be taken, but the subscription will simply be cancelled.",
|
|
44
47
|
"cancel_how_to_reactivate_title": "Can I reactivate this subscription later?",
|
|
45
48
|
"cancel_how_to_reactivate_text": "Yes, you will be able to clear the pending cancellation before the end date, or reactivate the subscription after the end date on this page.",
|
|
46
49
|
"cancel_submit": "Cancel this subscription",
|
|
@@ -55,6 +58,7 @@
|
|
|
55
58
|
"label": "Cancel this subscription",
|
|
56
59
|
"helper_text": "",
|
|
57
60
|
"placeholder": "Select",
|
|
61
|
+
"option_start_date": "On start date",
|
|
58
62
|
"option_tomorrow": "Tomorrow",
|
|
59
63
|
"option_next_transaction_date": "On next renewal date",
|
|
60
64
|
"option_custom_date": "On specific date"
|
|
@@ -2,6 +2,7 @@ import { LitElement, html } from 'lit-element';
|
|
|
2
2
|
import { ThemeableMixin } from "../../../mixins/themeable.js";
|
|
3
3
|
import { classMap } from "../../../utils/class-map.js";
|
|
4
4
|
import { parseDate } from "../../../utils/parse-date.js";
|
|
5
|
+
import { safeDate } from "../../../utils/safe-date.js";
|
|
5
6
|
import { serializeDate } from "../../../utils/serialize-date.js";
|
|
6
7
|
export class InternalCalendar extends ThemeableMixin(LitElement) {
|
|
7
8
|
constructor() {
|
|
@@ -86,7 +87,7 @@ export class InternalCalendar extends ThemeableMixin(LitElement) {
|
|
|
86
87
|
__renderMonth(month, year) {
|
|
87
88
|
var _a, _b, _c;
|
|
88
89
|
const lang = this.lang || navigator.language;
|
|
89
|
-
const date =
|
|
90
|
+
const date = safeDate(year, month, 1);
|
|
90
91
|
const items = [];
|
|
91
92
|
for (let i = 0; i < 7; ++i) {
|
|
92
93
|
const weekdayDate = new Date();
|
|
@@ -126,7 +127,7 @@ export class InternalCalendar extends ThemeableMixin(LitElement) {
|
|
|
126
127
|
`;
|
|
127
128
|
}
|
|
128
129
|
__renderDate(date, month, year, checked = false) {
|
|
129
|
-
const disabled = this.disabled || this.readonly || !this.checkAvailability(
|
|
130
|
+
const disabled = this.disabled || this.readonly || !this.checkAvailability(safeDate(year, month, date));
|
|
130
131
|
return html `
|
|
131
132
|
<label
|
|
132
133
|
class=${classMap({
|
|
@@ -146,7 +147,7 @@ export class InternalCalendar extends ThemeableMixin(LitElement) {
|
|
|
146
147
|
class="sr-only"
|
|
147
148
|
?disabled=${this.readonly || this.disabled || disabled}
|
|
148
149
|
@change=${() => {
|
|
149
|
-
this.__valueAsDate =
|
|
150
|
+
this.__valueAsDate = safeDate(year, month, date);
|
|
150
151
|
this.dispatchEvent(new CustomEvent('change'));
|
|
151
152
|
}}
|
|
152
153
|
/>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalCalendar.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalCalendar/InternalCalendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\nimport { parseDate } from '../../../utils/parse-date';\nimport { serializeDate } from '../../../utils/serialize-date';\n\nexport class InternalCalendar extends ThemeableMixin(LitElement) {\n static get properties(): PropertyDeclarations {\n return {\n checkAvailability: { attribute: false },\n readonly: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n value: { type: String },\n start: { type: String },\n lang: { type: String },\n };\n }\n\n checkAvailability: (date: Date) => boolean = () => true;\n\n readonly = false;\n\n disabled = false;\n\n value = '';\n\n start = '';\n\n lang = '';\n\n render(): TemplateResult {\n const thisMonth = new Date(this.__startAsDate ?? this.__valueAsDate ?? Date.now());\n const prevMonth = new Date(thisMonth);\n const nextMonth = new Date(thisMonth);\n const lang = this.lang || navigator.language;\n\n prevMonth.setMonth(prevMonth.getMonth() - 1);\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n\n return html`\n <div class=\"text-m text-body font-lumo leading-m\">\n <div class=\"grid p-xs\" style=\"grid-template: auto / max-content auto max-content\">\n <vaadin-button\n data-testid=\"prev\"\n aria-label=${prevMonth.toLocaleString(lang, { year: 'numeric', month: 'long' })}\n theme=\"icon tertiary\"\n class=\"px-xs\"\n ?disabled=${this.disabled}\n @click=${this.__handlePrevButtonClick}\n >\n <iron-icon icon=\"icons:chevron-left\"></iron-icon>\n </vaadin-button>\n\n <span\n data-testid=\"month\"\n class=${classMap({\n 'text-center self-center font-medium': true,\n 'text-disabled': this.disabled,\n })}\n >\n ${thisMonth.toLocaleDateString(lang, { month: 'long', year: 'numeric' })}\n </span>\n\n <vaadin-button\n data-testid=\"next\"\n aria-label=${nextMonth.toLocaleString(lang, { year: 'numeric', month: 'long' })}\n theme=\"icon tertiary\"\n class=\"px-xs\"\n ?disabled=${this.disabled}\n @click=${this.__handleNextButtonClick}\n >\n <iron-icon icon=\"icons:chevron-right\"></iron-icon>\n </vaadin-button>\n </div>\n\n ${this.__renderMonth(thisMonth.getMonth(), thisMonth.getFullYear())}\n </div>\n `;\n }\n\n private get __valueAsDate(): Date | null {\n return parseDate(this.value);\n }\n\n private set __valueAsDate(value: Date | null) {\n this.value = value ? serializeDate(value) : '';\n }\n\n private get __startAsDate(): Date | null {\n return parseDate(this.start);\n }\n\n private set __startAsDate(value: Date | null) {\n this.start = value ? serializeDate(value) : '';\n }\n\n private __renderMonth(month: number, year: number) {\n const lang = this.lang || navigator.language;\n const date = new Date(year, month, 1, 0, 0, 0, 0);\n const items: TemplateResult[] = [];\n\n for (let i = 0; i < 7; ++i) {\n const weekdayDate = new Date();\n while (weekdayDate.getDay() !== i) weekdayDate.setDate(weekdayDate.getDate() + 1);\n\n items.push(html`\n <span\n class=${classMap({\n 'self-center text-xxs uppercase font-medium tracking-wider': true,\n 'text-secondary': !this.disabled,\n 'text-disabled': this.disabled,\n })}\n >\n ${weekdayDate.toLocaleString(lang, { weekday: 'short' })}\n </span>\n `);\n }\n\n while (date.getMonth() === month) {\n const checked =\n date.getFullYear() === this.__valueAsDate?.getFullYear() &&\n date.getMonth() === this.__valueAsDate?.getMonth() &&\n date.getDate() === this.__valueAsDate?.getDate();\n\n items.push(html`\n <div style=\"grid-column: ${date.getDay() + 1}\" data-testclass=\"day-of-month\">\n ${this.__renderDate(date.getDate(), month, year, checked)}\n </div>\n `);\n\n date.setDate(date.getDate() + 1);\n }\n\n return html`\n <form\n data-testid=\"grid\"\n class=\"grid gap-s p-s text-center\"\n style=\"grid-template: auto / repeat(7, 1fr);\"\n >\n ${items}\n </form>\n `;\n }\n\n private __renderDate(date: number, month: number, year: number, checked = false) {\n const disabled =\n this.disabled || this.readonly || !this.checkAvailability(new Date(year, month, date));\n\n return html`\n <label\n class=${classMap({\n 'relative flex w-m h-m items-center justify-center rounded-s': true,\n 'font-tnum text-l select-none leading-none': true,\n 'cursor-pointer focus-within-ring-2 focus-within-ring-primary-50': !disabled,\n 'bg-contrast-5 hover-bg-contrast-10': !checked && !disabled,\n 'bg-primary text-primary-contrast': checked && !disabled,\n 'border border-dashed border-contrast-20 text-disabled': !checked && disabled,\n 'border border-dashed border-primary text-primary': checked && disabled,\n })}\n >\n <input\n name=\"date\"\n type=\"radio\"\n value=${date}\n class=\"sr-only\"\n ?disabled=${this.readonly || this.disabled || disabled}\n @change=${() => {\n this.__valueAsDate = new Date(year, month, date);\n this.dispatchEvent(new CustomEvent('change'));\n }}\n />\n\n ${date}\n </label>\n `;\n }\n\n private __handlePrevButtonClick() {\n const currentStart = this.__startAsDate ?? new Date();\n this.__startAsDate = new Date(currentStart.setMonth(currentStart.getMonth() - 1));\n }\n\n private __handleNextButtonClick() {\n const currentStart = this.__startAsDate ?? new Date();\n this.__startAsDate = new Date(currentStart.setMonth(currentStart.getMonth() + 1));\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalCalendar.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalCalendar/InternalCalendar.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { classMap } from '../../../utils/class-map';\nimport { parseDate } from '../../../utils/parse-date';\nimport { safeDate } from '../../../utils/safe-date';\nimport { serializeDate } from '../../../utils/serialize-date';\n\nexport class InternalCalendar extends ThemeableMixin(LitElement) {\n static get properties(): PropertyDeclarations {\n return {\n checkAvailability: { attribute: false },\n readonly: { type: Boolean, reflect: true },\n disabled: { type: Boolean, reflect: true },\n value: { type: String },\n start: { type: String },\n lang: { type: String },\n };\n }\n\n checkAvailability: (date: Date) => boolean = () => true;\n\n readonly = false;\n\n disabled = false;\n\n value = '';\n\n start = '';\n\n lang = '';\n\n render(): TemplateResult {\n const thisMonth = new Date(this.__startAsDate ?? this.__valueAsDate ?? Date.now());\n const prevMonth = new Date(thisMonth);\n const nextMonth = new Date(thisMonth);\n const lang = this.lang || navigator.language;\n\n prevMonth.setMonth(prevMonth.getMonth() - 1);\n nextMonth.setMonth(nextMonth.getMonth() + 1);\n\n return html`\n <div class=\"text-m text-body font-lumo leading-m\">\n <div class=\"grid p-xs\" style=\"grid-template: auto / max-content auto max-content\">\n <vaadin-button\n data-testid=\"prev\"\n aria-label=${prevMonth.toLocaleString(lang, { year: 'numeric', month: 'long' })}\n theme=\"icon tertiary\"\n class=\"px-xs\"\n ?disabled=${this.disabled}\n @click=${this.__handlePrevButtonClick}\n >\n <iron-icon icon=\"icons:chevron-left\"></iron-icon>\n </vaadin-button>\n\n <span\n data-testid=\"month\"\n class=${classMap({\n 'text-center self-center font-medium': true,\n 'text-disabled': this.disabled,\n })}\n >\n ${thisMonth.toLocaleDateString(lang, { month: 'long', year: 'numeric' })}\n </span>\n\n <vaadin-button\n data-testid=\"next\"\n aria-label=${nextMonth.toLocaleString(lang, { year: 'numeric', month: 'long' })}\n theme=\"icon tertiary\"\n class=\"px-xs\"\n ?disabled=${this.disabled}\n @click=${this.__handleNextButtonClick}\n >\n <iron-icon icon=\"icons:chevron-right\"></iron-icon>\n </vaadin-button>\n </div>\n\n ${this.__renderMonth(thisMonth.getMonth(), thisMonth.getFullYear())}\n </div>\n `;\n }\n\n private get __valueAsDate(): Date | null {\n return parseDate(this.value);\n }\n\n private set __valueAsDate(value: Date | null) {\n this.value = value ? serializeDate(value) : '';\n }\n\n private get __startAsDate(): Date | null {\n return parseDate(this.start);\n }\n\n private set __startAsDate(value: Date | null) {\n this.start = value ? serializeDate(value) : '';\n }\n\n private __renderMonth(month: number, year: number) {\n const lang = this.lang || navigator.language;\n const date = safeDate(year, month, 1);\n const items: TemplateResult[] = [];\n\n for (let i = 0; i < 7; ++i) {\n const weekdayDate = new Date();\n while (weekdayDate.getDay() !== i) weekdayDate.setDate(weekdayDate.getDate() + 1);\n\n items.push(html`\n <span\n class=${classMap({\n 'self-center text-xxs uppercase font-medium tracking-wider': true,\n 'text-secondary': !this.disabled,\n 'text-disabled': this.disabled,\n })}\n >\n ${weekdayDate.toLocaleString(lang, { weekday: 'short' })}\n </span>\n `);\n }\n\n while (date.getMonth() === month) {\n const checked =\n date.getFullYear() === this.__valueAsDate?.getFullYear() &&\n date.getMonth() === this.__valueAsDate?.getMonth() &&\n date.getDate() === this.__valueAsDate?.getDate();\n\n items.push(html`\n <div style=\"grid-column: ${date.getDay() + 1}\" data-testclass=\"day-of-month\">\n ${this.__renderDate(date.getDate(), month, year, checked)}\n </div>\n `);\n\n date.setDate(date.getDate() + 1);\n }\n\n return html`\n <form\n data-testid=\"grid\"\n class=\"grid gap-s p-s text-center\"\n style=\"grid-template: auto / repeat(7, 1fr);\"\n >\n ${items}\n </form>\n `;\n }\n\n private __renderDate(date: number, month: number, year: number, checked = false) {\n const disabled =\n this.disabled || this.readonly || !this.checkAvailability(safeDate(year, month, date));\n\n return html`\n <label\n class=${classMap({\n 'relative flex w-m h-m items-center justify-center rounded-s': true,\n 'font-tnum text-l select-none leading-none': true,\n 'cursor-pointer focus-within-ring-2 focus-within-ring-primary-50': !disabled,\n 'bg-contrast-5 hover-bg-contrast-10': !checked && !disabled,\n 'bg-primary text-primary-contrast': checked && !disabled,\n 'border border-dashed border-contrast-20 text-disabled': !checked && disabled,\n 'border border-dashed border-primary text-primary': checked && disabled,\n })}\n >\n <input\n name=\"date\"\n type=\"radio\"\n value=${date}\n class=\"sr-only\"\n ?disabled=${this.readonly || this.disabled || disabled}\n @change=${() => {\n this.__valueAsDate = safeDate(year, month, date);\n this.dispatchEvent(new CustomEvent('change'));\n }}\n />\n\n ${date}\n </label>\n `;\n }\n\n private __handlePrevButtonClick() {\n const currentStart = this.__startAsDate ?? new Date();\n this.__startAsDate = new Date(currentStart.setMonth(currentStart.getMonth() - 1));\n }\n\n private __handleNextButtonClick() {\n const currentStart = this.__startAsDate ?? new Date();\n this.__startAsDate = new Date(currentStart.setMonth(currentStart.getMonth() + 1));\n }\n}\n"]}
|
|
@@ -6,6 +6,7 @@ import { html } from 'lit-element';
|
|
|
6
6
|
import { getWeekdayShortNames } from "./getWeekdayShortNames.js";
|
|
7
7
|
import { getWeekdayLongNames } from "./getWeekdayLongNames.js";
|
|
8
8
|
import { getMonthNames } from "./getMonthNames.js";
|
|
9
|
+
import { safeDate } from "../../../utils/safe-date.js";
|
|
9
10
|
/**
|
|
10
11
|
* Internal control displaying a basic date picker box.
|
|
11
12
|
*
|
|
@@ -98,7 +99,7 @@ export class InternalDateControl extends InternalEditableControl {
|
|
|
98
99
|
parseDate: null,
|
|
99
100
|
formatTitle: (m, y) => m + ' ' + y,
|
|
100
101
|
formatDate: (d) => {
|
|
101
|
-
return this.t('display_value', { value:
|
|
102
|
+
return this.t('display_value', { value: safeDate(d.year, d.month, d.day) });
|
|
102
103
|
},
|
|
103
104
|
};
|
|
104
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalDateControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/InternalDateControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,aAAa,EAAE,yCAAsC;AAC9D,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,kCAA+B;AAC9D,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAC5D,OAAO,EAAE,aAAa,EAAE,2BAAwB;
|
|
1
|
+
{"version":3,"file":"InternalDateControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/InternalDateControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult, PropertyDeclarations } from 'lit-element';\nimport type { DatePickerElement } from '@vaadin/vaadin-date-picker';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { serializeDate } from '../../../utils/serialize-date';\nimport { parseDate } from '../../../utils/parse-date';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\nimport { getWeekdayShortNames } from './getWeekdayShortNames';\nimport { getWeekdayLongNames } from './getWeekdayLongNames';\nimport { getMonthNames } from './getMonthNames';\nimport { safeDate } from '../../../utils/safe-date';\n\n/**\n * Internal control displaying a basic date picker box.\n *\n * @since 1.17.0\n * @element foxy-internal-date-control\n */\nexport class InternalDateControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n hideClearButton: { type: Boolean, attribute: 'hide-clear-button', reflect: true },\n format: {},\n layout: {},\n min: {},\n };\n }\n\n /** When true, hides Clear button. */\n hideClearButton = false;\n\n /** Date format. If `unix`, expects and outputs a UNIX timestamp (number), otherwise defaults to ISO 8601 date. */\n format: 'unix' | 'iso-long' | null = null;\n\n /** Use summary item layout inside `<foxy-internal-summary-control>`. */\n layout: 'summary-item' | 'standalone' | null = null;\n\n /** Minimum date, YYYY-MM-DD. */\n min: string | null = null;\n\n renderControl(): TemplateResult {\n let value: string;\n\n if (this._value === '0000-00-00' || !this._value) {\n value = '';\n } else {\n if (this.format === 'unix') {\n value = serializeDate(new Date(((this._value as number) ?? 0) * 1000));\n } else if (this.format === 'iso-long') {\n value = serializeDate(new Date(this._value as string));\n } else {\n value = ((this._value as string | null) ?? '').substring(0, 10);\n }\n }\n\n return html`\n <vaadin-date-picker\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n theme=${this.layout ?? 'standalone'}\n min=${ifDefined(this.min ?? void 0)}\n ?clear-button-visible=${!this.hideClearButton}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${value}\n .i18n=${this.__pickerI18n}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as DatePickerElement;\n\n if (this.format === 'unix') {\n this._value = Math.floor((parseDate(field.value)?.getTime() ?? 0) / 1000);\n } else if (this.format === 'iso-long') {\n this._value = parseDate(field.value)?.toISOString() ?? null;\n } else {\n this._value = field.value;\n }\n }}\n >\n </vaadin-date-picker>\n `;\n }\n\n private get __pickerI18n() {\n return {\n monthNames: getMonthNames(this.lang || 'en'),\n weekdays: getWeekdayLongNames(this.lang || 'en'),\n weekdaysShort: getWeekdayShortNames(this.lang || 'en'),\n firstDayOfWeek: 0,\n week: this.t('week'),\n calendar: this.t('calendar'),\n clear: this.t('clear'),\n today: this.t('today'),\n cancel: this.t('cancel'),\n referenceDate: '',\n parseDate: null,\n formatTitle: (m: string, y: string) => m + ' ' + y,\n formatDate: (d: { day: number; month: number; year: number }) => {\n return this.t('display_value', { value: safeDate(d.year, d.month, d.day) });\n },\n };\n }\n}\n"]}
|
package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalEditableListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalEditableListControl/InternalEditableListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Item, Option, Unit } from './types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { html, css } from 'lit-element';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { spread } from '@open-wc/lit-helpers';\nimport { live } from 'lit-html/directives/live';\n\nexport class InternalEditableListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n inputParams: { attribute: false },\n simpleValue: { type: Boolean, attribute: 'simple-value' },\n options: { type: Array },\n layout: {},\n units: { type: Array },\n range: {},\n __isErrorVisible: { attribute: false },\n __newItem: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n ...super.styles,\n css`\n div:has(> select) {\n position: relative;\n }\n\n div:has(> select)::after {\n content: ' ';\n position: absolute;\n top: 50%;\n margin-top: -2px;\n right: 10px;\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n border-top: 5px solid currentColor;\n }\n `,\n ];\n }\n\n inputParams: Record<string, unknown> = {};\n\n simpleValue = false;\n\n options: Option[] = [];\n\n layout: 'standalone' | 'summary-item' | null = null;\n\n units: Unit[] = [];\n\n range: null | 'optional' = null;\n\n private __isErrorVisible = false;\n\n private __newItem = '';\n\n render(): TemplateResult {\n const isSummaryItem = this.layout === 'summary-item';\n const isInteractive = !this.disabled && !this.readonly;\n\n const deleteButtonClass = classMap({\n 'w-xs h-xs rounded-s transition-colors flex-shrink-0': true,\n 'focus-outline-none focus-ring-2 ring-inset ring-error-50': true,\n 'text-tertiary hover-bg-error-10 hover-text-error': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n 'flex items-center justify-center': !this.readonly,\n 'hidden': this.readonly,\n 'mr-xs': !isSummaryItem,\n });\n\n const itemClass = classMap({\n 'transition-colors flex items-center': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'border border-contrast-10 rounded-s': isSummaryItem,\n 'h-m': !isSummaryItem,\n });\n\n const isAddButtonDisabled = this.disabled || !this.__newItem;\n\n const addItem = (split = false) => {\n const newValue = [...this._value];\n const splitBy = split && this.__newItem.includes(',') ? ',' : '\\n';\n const unit = this.renderRoot.querySelector('select')?.value;\n\n this.__newItem\n .split(splitBy)\n .map(code => code.trim())\n .filter(code => code.length > 0)\n .forEach(value => {\n if (!newValue.some(item => item.value === value)) {\n newValue.push({ value, unit });\n }\n });\n\n this._value = newValue;\n this.__newItem = '';\n };\n\n return html`\n <div class=\"mb-s\" ?hidden=${!this.label && !this.helperText}>\n <div class=${classMap({ 'font-medium text-l': !isSummaryItem })}>${this.label}</div>\n <div\n class=${classMap({\n 'text-secondary': true,\n 'text-xs': isSummaryItem,\n 'text-s': !isSummaryItem,\n })}\n ?hidden=${!this.helperText}\n >\n ${this.helperText}\n </div>\n </div>\n\n <div\n class=${classMap({\n 'bg-contrast-5 rounded': !isSummaryItem,\n 'mt-s': isSummaryItem,\n })}\n >\n <ol\n class=${classMap({\n 'transition-colors font-medium': true,\n 'divide-y divide-contrast-10': !isSummaryItem,\n 'flex flex-wrap gap-s': isSummaryItem,\n })}\n >\n ${repeat(\n this._value,\n item => item.value,\n (item, index) => {\n return html`\n <li\n class=${itemClass}\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <div class=\"flex-1 mr-s\">${item.label ?? item.value}</div>\n\n <button\n aria-label=${this.t('delete')}\n class=${deleteButtonClass}\n ?disabled=${this.disabled}\n @click=${() => {\n this._value = this._value.filter((_, i) => i !== index);\n }}\n >\n <iron-icon icon=\"lumo:cross\" class=\"icon-inline text-xl\"></iron-icon>\n </button>\n </li>\n `;\n }\n )}\n </ol>\n\n <div\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n class=${classMap({\n 'transition-colors h-m flex items-center gap-xs': true,\n 'focus-within-ring-2 focus-within-ring-primary-50': !isSummaryItem,\n 'bg-contrast-5 hover-bg-contrast-10': !isSummaryItem && isInteractive,\n 'bg-contrast-5': !isSummaryItem && this.disabled,\n 'flex': !this.readonly,\n 'hidden': this.readonly,\n 'rounded-s border border-contrast-10': isSummaryItem,\n 'mt-s': isSummaryItem && this._value.length > 0,\n 'rounded': !isSummaryItem && this._value.length === 0,\n 'rounded-b': !isSummaryItem && this._value.length > 0,\n })}\n >\n ${this.range\n ? html`\n <foxy-i18n infer=\"\" class=\"text-disabled font-medium\" key=\"range_from\"> </foxy-i18n>\n\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'bg-transparent appearance-none h-m font-medium focus-outline-none': true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem.split('..')[0] ?? '')}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n const newFrom = (evt.currentTarget as HTMLInputElement).value.trim();\n const oldTo = this.__newItem.split('..')[1] ?? '';\n this.__newItem = oldTo ? `${newFrom}..${oldTo}` : newFrom;\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const newFrom = evt.clipboardData?.getData('text') ?? '';\n const oldTo = this.__newItem.split('..')[1] ?? '';\n this.__newItem = oldTo ? `${newFrom}..${oldTo}` : newFrom;\n\n addItem();\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n }}\n />\n\n <foxy-i18n infer=\"\" class=\"text-disabled font-medium\" key=\"range_to\"></foxy-i18n>\n\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'bg-transparent appearance-none h-m font-medium focus-outline-none': true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem.split('..')[1] ?? '')}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n const newTo = (evt.currentTarget as HTMLInputElement).value.trim();\n const oldFrom = this.__newItem.split('..')[0] ?? '';\n this.__newItem = oldFrom ? `${oldFrom}..${newTo}` : newTo;\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const newTo = evt.clipboardData?.getData('text') ?? '';\n const oldFrom = this.__newItem.split('..')[0] ?? '';\n this.__newItem = oldFrom ? `${oldFrom}..${newTo}` : newTo;\n\n addItem();\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n }}\n />\n `\n : html`\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'w-full bg-transparent appearance-none h-m font-medium focus-outline-none':\n true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n this.__newItem = (evt.currentTarget as HTMLInputElement).value.trim();\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n this.__newItem = evt.clipboardData?.getData('text') ?? '';\n if (this.__newItem.includes('\\n') || this.__newItem.includes(','))\n addItem(true);\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n }}\n />\n `}\n\n <div\n class=${classMap({\n 'relative': true,\n 'hover-text-base focus-within-text-primary-contrast': !this.disabled,\n 'text-disabled': this.disabled,\n })}\n ?hidden=${this.units.length === 0}\n >\n <select\n style=\"min-width: 8rem\"\n class=${classMap({\n 'transition-colors rounded-s mx-xs px-s': true,\n 'bg-contrast-5 appearance-none h-xs font-medium focus-outline-none': true,\n 'hover-bg-contrast focus-bg-primary': !this.disabled,\n })}\n ?disabled=${this.disabled}\n >\n ${this.units.map(({ label, value }) => {\n return html`<option value=${value}>${label ?? value}</option>`;\n })}\n </select>\n </div>\n\n <datalist id=\"list\">\n ${this.options.map(({ label, value }) => {\n if (this._value.some(item => item.value === value)) return;\n return html`<option value=${value}>${label ?? value}</option>`;\n })}\n </datalist>\n\n <div class=\"mr-xs ml-auto\" ?hidden=${!this.__newItem}>\n <button\n aria-label=${this.t('submit')}\n class=${classMap({\n 'w-xs h-xs flex-shrink-0 ring-inset ring-success-50 focus-outline-none': true,\n 'flex items-center justify-center rounded-s transition-colors': true,\n 'bg-contrast-5 text-disabled cursor-default': isAddButtonDisabled,\n 'bg-contrast-5 text-body cursor-pointer': !isAddButtonDisabled,\n 'hover-bg-success hover-text-success-contrast': !isAddButtonDisabled,\n 'focus-ring-2': !isAddButtonDisabled,\n })}\n ?disabled=${isAddButtonDisabled}\n @click=${addItem}\n >\n <iron-icon icon=\"lumo:plus\" class=\"icon-inline text-l\"></iron-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div\n class=${classMap({\n 'mt-s leading-xs text-error': true,\n 'text-xs': isSummaryItem,\n 'text-s': !isSummaryItem,\n })}\n ?hidden=${!this.__isErrorVisible || !this._errorMessage || this.disabled || this.readonly}\n >\n ${this._errorMessage}\n </div>\n `;\n }\n\n protected get _value(): Item[] {\n const value = super._value;\n if (this.simpleValue) return ((value as string[]) ?? []).map(value => ({ value }));\n return (value ?? []) as Item[];\n }\n\n protected set _value(newValue: Item[]) {\n if (this.simpleValue) {\n super._value = newValue.map(({ value }) => value);\n } else {\n super._value = newValue;\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalEditableListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalEditableListControl/InternalEditableListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { Item, Option, Unit } from './types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { html, css } from 'lit-element';\nimport { classMap } from '../../../utils/class-map';\nimport { repeat } from 'lit-html/directives/repeat';\nimport { spread } from '@open-wc/lit-helpers';\nimport { live } from 'lit-html/directives/live';\n\nexport class InternalEditableListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n inputParams: { attribute: false },\n simpleValue: { type: Boolean, attribute: 'simple-value' },\n options: { type: Array },\n layout: {},\n units: { type: Array },\n range: {},\n __isErrorVisible: { attribute: false },\n __newItem: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n ...super.styles,\n css`\n div:has(> select) {\n position: relative;\n }\n\n div:has(> select)::after {\n content: ' ';\n position: absolute;\n top: 50%;\n margin-top: -2px;\n right: 10px;\n width: 0;\n height: 0;\n border-left: 5px solid transparent;\n border-right: 5px solid transparent;\n border-top: 5px solid currentColor;\n }\n `,\n ];\n }\n\n inputParams: Record<string, unknown> = {};\n\n simpleValue = false;\n\n options: Option[] = [];\n\n layout: 'standalone' | 'summary-item' | null = null;\n\n units: Unit[] = [];\n\n range: null | 'optional' = null;\n\n private __isErrorVisible = false;\n\n private __newItem = '';\n\n render(): TemplateResult {\n const isSummaryItem = this.layout === 'summary-item';\n const isInteractive = !this.disabled && !this.readonly;\n\n const deleteButtonClass = classMap({\n 'w-xs h-xs rounded-s transition-colors flex-shrink-0': true,\n 'focus-outline-none focus-ring-2 ring-inset ring-error-50': true,\n 'text-tertiary hover-bg-error-10 hover-text-error': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n 'flex items-center justify-center': !this.readonly,\n 'hidden': this.readonly,\n 'mr-xs': !isSummaryItem,\n });\n\n const itemClass = classMap({\n 'transition-colors flex items-center': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'border border-contrast-10 rounded-s': isSummaryItem,\n 'h-m': !isSummaryItem,\n });\n\n const isAddButtonDisabled = this.disabled || !this.__newItem;\n\n const addItem = (split = false) => {\n const newValue = [...this._value];\n const splitBy = split && this.__newItem.includes(',') ? ',' : '\\n';\n const unit = this.renderRoot.querySelector('select')?.value;\n\n this.__newItem\n .split(splitBy)\n .map(code => code.trim())\n .filter(code => code.length > 0)\n .forEach(value => {\n if (!newValue.some(item => item.value === value)) {\n newValue.push({ value, unit });\n }\n });\n\n this._value = newValue;\n this.__newItem = '';\n };\n\n return html`\n <div class=\"mb-s\" ?hidden=${!this.label && !this.helperText}>\n <div class=${classMap({ 'font-medium text-l': !isSummaryItem })}>${this.label}</div>\n <div\n class=${classMap({\n 'text-secondary': true,\n 'text-xs': isSummaryItem,\n 'text-s': !isSummaryItem,\n })}\n ?hidden=${!this.helperText}\n >\n ${this.helperText}\n </div>\n </div>\n\n <div\n class=${classMap({\n 'bg-contrast-5 rounded': !isSummaryItem,\n 'mt-s': isSummaryItem,\n })}\n >\n <ol\n class=${classMap({\n 'transition-colors font-medium': true,\n 'divide-y divide-contrast-10': !isSummaryItem,\n 'flex flex-wrap gap-s': isSummaryItem,\n })}\n >\n ${repeat(\n this._value,\n item => item.value,\n (item, index) => {\n return html`\n <li\n class=${itemClass}\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <div class=\"flex-1 mr-s\">${item.label ?? item.value}</div>\n\n <button\n aria-label=${this.t('delete')}\n class=${deleteButtonClass}\n ?disabled=${this.disabled}\n @click=${() => {\n this._value = this._value.filter((_, i) => i !== index);\n }}\n >\n <iron-icon icon=\"lumo:cross\" class=\"icon-inline text-xl\"></iron-icon>\n </button>\n </li>\n `;\n }\n )}\n </ol>\n\n <div\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n class=${classMap({\n 'transition-colors h-m flex items-center gap-xs': true,\n 'focus-within-ring-2 focus-within-ring-primary-50': !isSummaryItem,\n 'bg-contrast-5 hover-bg-contrast-10': !isSummaryItem && isInteractive,\n 'bg-contrast-5': !isSummaryItem && this.disabled,\n 'flex': !this.readonly,\n 'hidden': this.readonly,\n 'rounded-s border border-contrast-10': isSummaryItem,\n 'mt-s': isSummaryItem && this._value.length > 0,\n 'rounded': !isSummaryItem && this._value.length === 0,\n 'rounded-b': !isSummaryItem && this._value.length > 0,\n })}\n >\n ${this.range\n ? html`\n <foxy-i18n infer=\"\" class=\"text-disabled font-medium\" key=\"range_from\"> </foxy-i18n>\n\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'bg-transparent appearance-none h-m font-medium focus-outline-none': true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem.split('..')[0] ?? '')}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n const newFrom = (evt.currentTarget as HTMLInputElement).value.trim();\n const oldTo = this.__newItem.split('..')[1] ?? '';\n this.__newItem = oldTo ? `${newFrom}..${oldTo}` : newFrom;\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const newFrom = evt.clipboardData?.getData('text') ?? '';\n const oldTo = this.__newItem.split('..')[1] ?? '';\n this.__newItem = oldTo ? `${newFrom}..${oldTo}` : newFrom;\n\n addItem();\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n }}\n />\n\n <foxy-i18n infer=\"\" class=\"text-disabled font-medium\" key=\"range_to\"></foxy-i18n>\n\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'bg-transparent appearance-none h-m font-medium focus-outline-none': true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem.split('..')[1] ?? '')}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n const newTo = (evt.currentTarget as HTMLInputElement).value.trim();\n const oldFrom = this.__newItem.split('..')[0] ?? '';\n this.__newItem = oldFrom ? `${oldFrom}..${newTo}` : newTo;\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const newTo = evt.clipboardData?.getData('text') ?? '';\n const oldFrom = this.__newItem.split('..')[0] ?? '';\n this.__newItem = oldFrom ? `${oldFrom}..${newTo}` : newTo;\n\n addItem();\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n }}\n />\n `\n : html`\n <input\n placeholder=${this.placeholder}\n class=${classMap({\n 'w-full bg-transparent appearance-none h-m font-medium focus-outline-none':\n true,\n 'text-disabled': this.disabled,\n })}\n list=\"list\"\n ...=${spread(this.inputParams)}\n .value=${live(this.__newItem)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && addItem()}\n @change=${(evt: Event) => evt.stopPropagation()}\n @input=${(evt: InputEvent) => {\n this.__newItem = (evt.currentTarget as HTMLInputElement).value.trim();\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n this.__newItem = evt.clipboardData?.getData('text') ?? '';\n if (this.__newItem.includes('\\n') || this.__newItem.includes(','))\n addItem(true);\n }}\n @blur=${() => {\n this.__isErrorVisible = true;\n addItem();\n }}\n />\n `}\n\n <div\n class=${classMap({\n 'relative': true,\n 'hover-text-base focus-within-text-primary-contrast': !this.disabled,\n 'text-disabled': this.disabled,\n })}\n ?hidden=${this.units.length === 0}\n >\n <select\n style=\"min-width: 8rem\"\n class=${classMap({\n 'transition-colors rounded-s mx-xs px-s': true,\n 'bg-contrast-5 appearance-none h-xs font-medium focus-outline-none': true,\n 'hover-bg-contrast focus-bg-primary': !this.disabled,\n })}\n ?disabled=${this.disabled}\n >\n ${this.units.map(({ label, value }) => {\n return html`<option value=${value}>${label ?? value}</option>`;\n })}\n </select>\n </div>\n\n <datalist id=\"list\">\n ${this.options.map(({ label, value }) => {\n if (this._value.some(item => item.value === value)) return;\n return html`<option value=${value}>${label ?? value}</option>`;\n })}\n </datalist>\n\n <div class=\"mr-xs ml-auto\" ?hidden=${!this.__newItem}>\n <button\n aria-label=${this.t('submit')}\n class=${classMap({\n 'w-xs h-xs flex-shrink-0 ring-inset ring-success-50 focus-outline-none': true,\n 'flex items-center justify-center rounded-s transition-colors': true,\n 'bg-contrast-5 text-disabled cursor-default': isAddButtonDisabled,\n 'bg-contrast-5 text-body cursor-pointer': !isAddButtonDisabled,\n 'hover-bg-success hover-text-success-contrast': !isAddButtonDisabled,\n 'focus-ring-2': !isAddButtonDisabled,\n })}\n ?disabled=${isAddButtonDisabled}\n @click=${addItem}\n >\n <iron-icon icon=\"lumo:plus\" class=\"icon-inline text-l\"></iron-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div\n class=${classMap({\n 'mt-s leading-xs text-error': true,\n 'text-xs': isSummaryItem,\n 'text-s': !isSummaryItem,\n })}\n ?hidden=${!this.__isErrorVisible || !this._errorMessage || this.disabled || this.readonly}\n >\n ${this._errorMessage}\n </div>\n `;\n }\n\n protected get _value(): Item[] {\n const value = super._value;\n if (this.simpleValue) return ((value as string[]) ?? []).map(value => ({ value }));\n return (value ?? []) as Item[];\n }\n\n protected set _value(newValue: Item[]) {\n if (this.simpleValue) {\n super._value = newValue.map(({ value }) => value);\n } else {\n super._value = newValue;\n }\n }\n}\n"]}
|
|
@@ -6,6 +6,7 @@ import { InternalForm } from '../../../../internal/InternalForm/InternalForm';
|
|
|
6
6
|
export declare class InternalAdminSubscriptionFormStatusActionForm extends InternalForm<Data> {
|
|
7
7
|
static get v8n(): NucleonV8N<Data, InternalAdminSubscriptionFormStatusActionForm>;
|
|
8
8
|
private readonly __endDatePresetOptions;
|
|
9
|
+
private readonly __endDatePresetOptionsForFutureSubs;
|
|
9
10
|
private readonly __endDatePresetGetValue;
|
|
10
11
|
private readonly __endDatePresetSetValue;
|
|
11
12
|
private readonly __endDateGetValue;
|
|
@@ -11,8 +11,14 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
11
11
|
{ value: 'next_transaction_date', label: 'option_next_transaction_date' },
|
|
12
12
|
{ value: 'custom_date', label: 'option_custom_date' },
|
|
13
13
|
]);
|
|
14
|
+
this.__endDatePresetOptionsForFutureSubs = JSON.stringify([
|
|
15
|
+
{ value: 'start_date', label: 'option_start_date' },
|
|
16
|
+
{ value: 'next_transaction_date', label: 'option_next_transaction_date' },
|
|
17
|
+
{ value: 'custom_date', label: 'option_custom_date' },
|
|
18
|
+
]);
|
|
14
19
|
this.__endDatePresetGetValue = () => { var _a; return (_a = this.form.end_date_preset) !== null && _a !== void 0 ? _a : 'next_transaction_date'; };
|
|
15
20
|
this.__endDatePresetSetValue = (newValue) => {
|
|
21
|
+
var _a, _b;
|
|
16
22
|
this.edit({ end_date_preset: newValue });
|
|
17
23
|
if (newValue === 'tomorrow') {
|
|
18
24
|
const tomorrowDate = new Date();
|
|
@@ -20,6 +26,9 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
20
26
|
tomorrowDate.setHours(0, 0, 0, 0);
|
|
21
27
|
this.edit({ end_date: serializeDate(tomorrowDate) });
|
|
22
28
|
}
|
|
29
|
+
else if (newValue === 'start_date') {
|
|
30
|
+
this.edit({ end_date: (_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.start_date) !== null && _b !== void 0 ? _b : '' });
|
|
31
|
+
}
|
|
23
32
|
else if (newValue === 'next_transaction_date') {
|
|
24
33
|
this.edit({ end_date: this.form.next_transaction_date });
|
|
25
34
|
}
|
|
@@ -66,7 +75,7 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
66
75
|
return new BooleanSelector(alwaysMatch.join(' ').trim());
|
|
67
76
|
}
|
|
68
77
|
renderBody() {
|
|
69
|
-
var _a;
|
|
78
|
+
var _a, _b;
|
|
70
79
|
const tomorrowDate = new Date();
|
|
71
80
|
tomorrowDate.setDate(tomorrowDate.getDate() + 1);
|
|
72
81
|
tomorrowDate.setHours(0, 0, 0, 0);
|
|
@@ -76,6 +85,9 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
76
85
|
const icon = isActive
|
|
77
86
|
? svg `<svg class="text-error" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 2rem; height: 2rem;"><path stroke-linecap="round" stroke-linejoin="round" d="M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z" /></svg>`
|
|
78
87
|
: svg `<svg class="text-success" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 2rem; height: 2rem;"><path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99" /></svg>`;
|
|
88
|
+
const startDate = this.data ? parseDate(this.data.start_date) : null;
|
|
89
|
+
const isFutureSubscription = !!startDate && startDate > new Date();
|
|
90
|
+
const datePickerMin = serializeDate(new Date(Math.max(tomorrowDate.getTime(), (_b = startDate === null || startDate === void 0 ? void 0 : startDate.getTime()) !== null && _b !== void 0 ? _b : tomorrowDate.getTime())));
|
|
79
91
|
return html `
|
|
80
92
|
<foxy-internal-summary-control infer="" label="" helper-text="">
|
|
81
93
|
<div class="text-center flex flex-col items-center bg-transparent">
|
|
@@ -84,7 +96,8 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
84
96
|
<foxy-i18n infer="" key="${action}_title"></foxy-i18n>
|
|
85
97
|
</p>
|
|
86
98
|
<p class="text-secondary leading-s">
|
|
87
|
-
<foxy-i18n infer="" key="${action}_subtitle"
|
|
99
|
+
<foxy-i18n infer="" key="${action}_subtitle${isFutureSubscription ? '_future' : ''}">
|
|
100
|
+
</foxy-i18n>
|
|
88
101
|
</p>
|
|
89
102
|
</div>
|
|
90
103
|
</foxy-internal-summary-control>
|
|
@@ -93,7 +106,9 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
93
106
|
${isActive
|
|
94
107
|
? html `
|
|
95
108
|
<foxy-internal-select-control
|
|
96
|
-
options=${
|
|
109
|
+
options=${isFutureSubscription
|
|
110
|
+
? this.__endDatePresetOptionsForFutureSubs
|
|
111
|
+
: this.__endDatePresetOptions}
|
|
97
112
|
layout="summary-item"
|
|
98
113
|
infer="end-date-preset"
|
|
99
114
|
.getValue=${this.__endDatePresetGetValue}
|
|
@@ -104,7 +119,7 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
104
119
|
<foxy-internal-date-control
|
|
105
120
|
layout="summary-item"
|
|
106
121
|
infer="end-date"
|
|
107
|
-
min=${
|
|
122
|
+
min=${datePickerMin}
|
|
108
123
|
hide-clear-button
|
|
109
124
|
.getValue=${this.__endDateGetValue}
|
|
110
125
|
>
|
|
@@ -114,7 +129,7 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
114
129
|
<foxy-internal-date-control
|
|
115
130
|
layout="summary-item"
|
|
116
131
|
infer="next-transaction-date"
|
|
117
|
-
min=${
|
|
132
|
+
min=${datePickerMin}
|
|
118
133
|
hide-clear-button
|
|
119
134
|
.getValue=${this.__nextTransactionDateGetValue}
|
|
120
135
|
>
|
|
@@ -125,8 +140,8 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
125
140
|
<foxy-internal-summary-control infer="" label="" helper-text="">
|
|
126
141
|
${isActive
|
|
127
142
|
? [
|
|
128
|
-
this.__renderFaq('cancel_why_not_today', svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="text-error flex-shrink-0" style="width: 1.25em; height: 1.25em;"><path d="M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z" /><path fill-rule="evenodd" d="M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z" clip-rule="evenodd" /></svg
|
|
129
|
-
this.__renderFaq('cancel_whats_next', svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="text-error flex-shrink-0" style="width: 1.25em; height: 1.25em;"><path d="M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z" /></svg
|
|
143
|
+
this.__renderFaq('cancel_why_not_today', svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="text-error flex-shrink-0" style="width: 1.25em; height: 1.25em;"><path d="M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z" /><path fill-rule="evenodd" d="M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z" clip-rule="evenodd" /></svg>`, isFutureSubscription ? '_future' : ''),
|
|
144
|
+
this.__renderFaq('cancel_whats_next', svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="text-error flex-shrink-0" style="width: 1.25em; height: 1.25em;"><path d="M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z" /></svg>`, isFutureSubscription ? '_future' : ''),
|
|
130
145
|
this.__renderFaq('cancel_how_to_reactivate', svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="text-error flex-shrink-0" style="width: 1.25em; height: 1.25em;"><path d="M6.111 11.89A5.5 5.5 0 1 1 15.501 8 .75.75 0 0 0 17 8a7 7 0 1 0-11.95 4.95.75.75 0 0 0 1.06-1.06Z" /><path d="M8.232 6.232a2.5 2.5 0 0 0 0 3.536.75.75 0 1 1-1.06 1.06A4 4 0 1 1 14 8a.75.75 0 0 1-1.5 0 2.5 2.5 0 0 0-4.268-1.768Z" /><path d="M10.766 7.51a.75.75 0 0 0-1.37.365l-.492 6.861a.75.75 0 0 0 1.204.65l1.043-.799.985 3.678a.75.75 0 0 0 1.45-.388l-.978-3.646 1.292.204a.75.75 0 0 0 .74-1.16l-3.874-5.764Z" /></svg>`),
|
|
131
146
|
]
|
|
132
147
|
: [
|
|
@@ -165,7 +180,7 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
165
180
|
delete edits.end_date_preset;
|
|
166
181
|
return super._sendPatch(edits);
|
|
167
182
|
}
|
|
168
|
-
__renderFaq(prefix, icon) {
|
|
183
|
+
__renderFaq(prefix, icon, textSuffix = '') {
|
|
169
184
|
return html `
|
|
170
185
|
<div
|
|
171
186
|
class="bg-transparent flex leading-xs"
|
|
@@ -175,7 +190,11 @@ export class InternalAdminSubscriptionFormStatusActionForm extends InternalForm
|
|
|
175
190
|
<p class="grid">
|
|
176
191
|
<foxy-i18n class="leading-m text-s font-medium" infer="" key="${prefix}_title">
|
|
177
192
|
</foxy-i18n>
|
|
178
|
-
<foxy-i18n
|
|
193
|
+
<foxy-i18n
|
|
194
|
+
class="leading-xs text-secondary text-xs"
|
|
195
|
+
infer=""
|
|
196
|
+
key="${prefix}_text${textSuffix}"
|
|
197
|
+
>
|
|
179
198
|
</foxy-i18n>
|
|
180
199
|
</p>
|
|
181
200
|
</div>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalAdminSubscriptionFormStatusActionForm.js","sourceRoot":"","sources":["../../../../../../src/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormStatusActionForm/InternalAdminSubscriptionFormStatusActionForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SVGTemplateResult, TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../../../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { serializeDate } from '../../../../../utils/serialize-date';\nimport { InternalForm } from '../../../../internal/InternalForm/InternalForm';\nimport { parseDate } from '../../../../../utils/parse-date';\nimport { html, svg } from 'lit-html';\n\nexport class InternalAdminSubscriptionFormStatusActionForm extends InternalForm<Data> {\n static get v8n(): NucleonV8N<Data, InternalAdminSubscriptionFormStatusActionForm> {\n return [\n ({ next_transaction_date, end_date }, host) => {\n if (host.data?.is_active) {\n if (!end_date || end_date === '0000-00-00') return 'end-date:v8n_required';\n } else {\n if (!next_transaction_date) return 'next-transaction-date:v8n_required';\n }\n\n return true;\n },\n ];\n }\n\n private readonly __endDatePresetOptions = JSON.stringify([\n { value: 'tomorrow', label: 'option_tomorrow' },\n { value: 'next_transaction_date', label: 'option_next_transaction_date' },\n { value: 'custom_date', label: 'option_custom_date' },\n ]);\n\n private readonly __endDatePresetGetValue = () =>\n this.form.end_date_preset ?? 'next_transaction_date';\n\n private readonly __endDatePresetSetValue = (newValue: string) => {\n this.edit({ end_date_preset: newValue });\n\n if (newValue === 'tomorrow') {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n this.edit({ end_date: serializeDate(tomorrowDate) });\n } else if (newValue === 'next_transaction_date') {\n this.edit({ end_date: this.form.next_transaction_date });\n } else {\n this.edit({ end_date: '' });\n }\n };\n\n private readonly __endDateGetValue = () => {\n return this.form.end_date_preset ? this.form.end_date : this.form.next_transaction_date;\n };\n\n private readonly __nextTransactionDateGetValue = () => {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n\n const tomorrow = serializeDate(tomorrowDate);\n if (!this.form.next_transaction_date) return tomorrow;\n\n const currentNextDate = parseDate(this.form.next_transaction_date.substring(0, 10));\n if (!currentNextDate || currentNextDate < tomorrowDate) return tomorrow;\n\n return this.form.next_transaction_date;\n };\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = [super.readonlySelector.toString()];\n if (this.form.end_date_preset !== 'custom_date') alwaysMatch.push('end-date');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n\n const isActive = !!this.data?.is_active;\n const action = isActive ? 'cancel' : 'reactivate';\n const color = isActive ? 'bg-error-10' : 'bg-success-10';\n const icon = isActive\n ? svg`<svg class=\"text-error\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" style=\"width: 2rem; height: 2rem;\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z\" /></svg>`\n : svg`<svg class=\"text-success\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" style=\"width: 2rem; height: 2rem;\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\" /></svg>`;\n\n return html`\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n <div class=\"text-center flex flex-col items-center bg-transparent\">\n <div class=\"rounded-full ${color} p-m mb-s mx-auto\">${icon}</div>\n <p class=\"font-medium text-xl leading-m\">\n <foxy-i18n infer=\"\" key=\"${action}_title\"></foxy-i18n>\n </p>\n <p class=\"text-secondary leading-s\">\n <foxy-i18n infer=\"\" key=\"${action}_subtitle\"></foxy-i18n>\n </p>\n </div>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n ${isActive\n ? html`\n <foxy-internal-select-control\n options=${this.__endDatePresetOptions}\n layout=\"summary-item\"\n infer=\"end-date-preset\"\n .getValue=${this.__endDatePresetGetValue}\n .setValue=${this.__endDatePresetSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-date-control\n layout=\"summary-item\"\n infer=\"end-date\"\n min=${serializeDate(tomorrowDate)}\n hide-clear-button\n .getValue=${this.__endDateGetValue}\n >\n </foxy-internal-date-control>\n `\n : html`\n <foxy-internal-date-control\n layout=\"summary-item\"\n infer=\"next-transaction-date\"\n min=${serializeDate(tomorrowDate)}\n hide-clear-button\n .getValue=${this.__nextTransactionDateGetValue}\n >\n </foxy-internal-date-control>\n `}\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n ${isActive\n ? [\n this.__renderFaq(\n 'cancel_why_not_today',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z\" /><path fill-rule=\"evenodd\" d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\" clip-rule=\"evenodd\" /></svg>`\n ),\n this.__renderFaq(\n 'cancel_whats_next',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z\" /></svg>`\n ),\n this.__renderFaq(\n 'cancel_how_to_reactivate',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M6.111 11.89A5.5 5.5 0 1 1 15.501 8 .75.75 0 0 0 17 8a7 7 0 1 0-11.95 4.95.75.75 0 0 0 1.06-1.06Z\" /><path d=\"M8.232 6.232a2.5 2.5 0 0 0 0 3.536.75.75 0 1 1-1.06 1.06A4 4 0 1 1 14 8a.75.75 0 0 1-1.5 0 2.5 2.5 0 0 0-4.268-1.768Z\" /><path d=\"M10.766 7.51a.75.75 0 0 0-1.37.365l-.492 6.861a.75.75 0 0 0 1.204.65l1.043-.799.985 3.678a.75.75 0 0 0 1.45-.388l-.978-3.646 1.292.204a.75.75 0 0 0 .74-1.16l-3.874-5.764Z\" /></svg>`\n ),\n ]\n : [\n this.__renderFaq(\n 'reactivate_why_not_today',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-success flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z\" /><path fill-rule=\"evenodd\" d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\" clip-rule=\"evenodd\" /></svg>`\n ),\n this.__renderFaq(\n 'reactivate_whats_next',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-success flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z\" /></svg>`\n ),\n ]}\n </foxy-internal-summary-control>\n\n <vaadin-button\n theme=\"primary ${isActive ? 'error' : 'success'} large\"\n class=\"w-full\"\n ?disabled=${this.disabled}\n @click=${() => this.submit()}\n >\n <foxy-i18n infer=\"\" key=\"${action}_submit\"></foxy-i18n>\n </vaadin-button>\n `;\n }\n\n submit(): void {\n if (this.data?.is_active) {\n if (this.__endDatePresetGetValue() === 'next_transaction_date') {\n this.edit({ end_date: this.form.next_transaction_date });\n }\n } else {\n this.edit({\n next_transaction_date: this.__nextTransactionDateGetValue(),\n is_active: true,\n end_date: '0000-00-00',\n });\n }\n\n super.submit();\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n delete edits.end_date_preset;\n return super._sendPatch(edits);\n }\n\n private __renderFaq(prefix: string, icon: SVGTemplateResult) {\n return html`\n <div\n class=\"bg-transparent flex leading-xs\"\n style=\"gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n ${icon}\n <p class=\"grid\">\n <foxy-i18n class=\"leading-m text-s font-medium\" infer=\"\" key=\"${prefix}_title\">\n </foxy-i18n>\n <foxy-i18n class=\"leading-xs text-secondary text-xs\" infer=\"\" key=\"${prefix}_text\">\n </foxy-i18n>\n </p>\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalAdminSubscriptionFormStatusActionForm.js","sourceRoot":"","sources":["../../../../../../src/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormStatusActionForm/InternalAdminSubscriptionFormStatusActionForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { SVGTemplateResult, TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../../../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { serializeDate } from '../../../../../utils/serialize-date';\nimport { InternalForm } from '../../../../internal/InternalForm/InternalForm';\nimport { parseDate } from '../../../../../utils/parse-date';\nimport { html, svg } from 'lit-html';\n\nexport class InternalAdminSubscriptionFormStatusActionForm extends InternalForm<Data> {\n static get v8n(): NucleonV8N<Data, InternalAdminSubscriptionFormStatusActionForm> {\n return [\n ({ next_transaction_date, end_date }, host) => {\n if (host.data?.is_active) {\n if (!end_date || end_date === '0000-00-00') return 'end-date:v8n_required';\n } else {\n if (!next_transaction_date) return 'next-transaction-date:v8n_required';\n }\n\n return true;\n },\n ];\n }\n\n private readonly __endDatePresetOptions = JSON.stringify([\n { value: 'tomorrow', label: 'option_tomorrow' },\n { value: 'next_transaction_date', label: 'option_next_transaction_date' },\n { value: 'custom_date', label: 'option_custom_date' },\n ]);\n\n private readonly __endDatePresetOptionsForFutureSubs = JSON.stringify([\n { value: 'start_date', label: 'option_start_date' },\n { value: 'next_transaction_date', label: 'option_next_transaction_date' },\n { value: 'custom_date', label: 'option_custom_date' },\n ]);\n\n private readonly __endDatePresetGetValue = () =>\n this.form.end_date_preset ?? 'next_transaction_date';\n\n private readonly __endDatePresetSetValue = (newValue: string) => {\n this.edit({ end_date_preset: newValue });\n\n if (newValue === 'tomorrow') {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n this.edit({ end_date: serializeDate(tomorrowDate) });\n } else if (newValue === 'start_date') {\n this.edit({ end_date: this.data?.start_date ?? '' });\n } else if (newValue === 'next_transaction_date') {\n this.edit({ end_date: this.form.next_transaction_date });\n } else {\n this.edit({ end_date: '' });\n }\n };\n\n private readonly __endDateGetValue = () => {\n return this.form.end_date_preset ? this.form.end_date : this.form.next_transaction_date;\n };\n\n private readonly __nextTransactionDateGetValue = () => {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n\n const tomorrow = serializeDate(tomorrowDate);\n if (!this.form.next_transaction_date) return tomorrow;\n\n const currentNextDate = parseDate(this.form.next_transaction_date.substring(0, 10));\n if (!currentNextDate || currentNextDate < tomorrowDate) return tomorrow;\n\n return this.form.next_transaction_date;\n };\n\n get readonlySelector(): BooleanSelector {\n const alwaysMatch = [super.readonlySelector.toString()];\n if (this.form.end_date_preset !== 'custom_date') alwaysMatch.push('end-date');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n const tomorrowDate = new Date();\n tomorrowDate.setDate(tomorrowDate.getDate() + 1);\n tomorrowDate.setHours(0, 0, 0, 0);\n\n const isActive = !!this.data?.is_active;\n const action = isActive ? 'cancel' : 'reactivate';\n const color = isActive ? 'bg-error-10' : 'bg-success-10';\n const icon = isActive\n ? svg`<svg class=\"text-error\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" style=\"width: 2rem; height: 2rem;\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z\" /></svg>`\n : svg`<svg class=\"text-success\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" style=\"width: 2rem; height: 2rem;\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99\" /></svg>`;\n\n const startDate = this.data ? parseDate(this.data.start_date) : null;\n const isFutureSubscription = !!startDate && startDate > new Date();\n const datePickerMin = serializeDate(\n new Date(Math.max(tomorrowDate.getTime(), startDate?.getTime() ?? tomorrowDate.getTime()))\n );\n\n return html`\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n <div class=\"text-center flex flex-col items-center bg-transparent\">\n <div class=\"rounded-full ${color} p-m mb-s mx-auto\">${icon}</div>\n <p class=\"font-medium text-xl leading-m\">\n <foxy-i18n infer=\"\" key=\"${action}_title\"></foxy-i18n>\n </p>\n <p class=\"text-secondary leading-s\">\n <foxy-i18n infer=\"\" key=\"${action}_subtitle${isFutureSubscription ? '_future' : ''}\">\n </foxy-i18n>\n </p>\n </div>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n ${isActive\n ? html`\n <foxy-internal-select-control\n options=${isFutureSubscription\n ? this.__endDatePresetOptionsForFutureSubs\n : this.__endDatePresetOptions}\n layout=\"summary-item\"\n infer=\"end-date-preset\"\n .getValue=${this.__endDatePresetGetValue}\n .setValue=${this.__endDatePresetSetValue}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-date-control\n layout=\"summary-item\"\n infer=\"end-date\"\n min=${datePickerMin}\n hide-clear-button\n .getValue=${this.__endDateGetValue}\n >\n </foxy-internal-date-control>\n `\n : html`\n <foxy-internal-date-control\n layout=\"summary-item\"\n infer=\"next-transaction-date\"\n min=${datePickerMin}\n hide-clear-button\n .getValue=${this.__nextTransactionDateGetValue}\n >\n </foxy-internal-date-control>\n `}\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"\" label=\"\" helper-text=\"\">\n ${isActive\n ? [\n this.__renderFaq(\n 'cancel_why_not_today',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z\" /><path fill-rule=\"evenodd\" d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\" clip-rule=\"evenodd\" /></svg>`,\n isFutureSubscription ? '_future' : ''\n ),\n this.__renderFaq(\n 'cancel_whats_next',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z\" /></svg>`,\n isFutureSubscription ? '_future' : ''\n ),\n this.__renderFaq(\n 'cancel_how_to_reactivate',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-error flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M6.111 11.89A5.5 5.5 0 1 1 15.501 8 .75.75 0 0 0 17 8a7 7 0 1 0-11.95 4.95.75.75 0 0 0 1.06-1.06Z\" /><path d=\"M8.232 6.232a2.5 2.5 0 0 0 0 3.536.75.75 0 1 1-1.06 1.06A4 4 0 1 1 14 8a.75.75 0 0 1-1.5 0 2.5 2.5 0 0 0-4.268-1.768Z\" /><path d=\"M10.766 7.51a.75.75 0 0 0-1.37.365l-.492 6.861a.75.75 0 0 0 1.204.65l1.043-.799.985 3.678a.75.75 0 0 0 1.45-.388l-.978-3.646 1.292.204a.75.75 0 0 0 .74-1.16l-3.874-5.764Z\" /></svg>`\n ),\n ]\n : [\n this.__renderFaq(\n 'reactivate_why_not_today',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-success flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M5.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H6a.75.75 0 0 1-.75-.75V12ZM6 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H6ZM7.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H8a.75.75 0 0 1-.75-.75V12ZM8 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H8ZM9.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V10ZM10 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H10ZM9.25 14a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H10a.75.75 0 0 1-.75-.75V14ZM12 9.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V10a.75.75 0 0 0-.75-.75H12ZM11.25 12a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H12a.75.75 0 0 1-.75-.75V12ZM12 13.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V14a.75.75 0 0 0-.75-.75H12ZM13.25 10a.75.75 0 0 1 .75-.75h.01a.75.75 0 0 1 .75.75v.01a.75.75 0 0 1-.75.75H14a.75.75 0 0 1-.75-.75V10ZM14 11.25a.75.75 0 0 0-.75.75v.01c0 .414.336.75.75.75h.01a.75.75 0 0 0 .75-.75V12a.75.75 0 0 0-.75-.75H14Z\" /><path fill-rule=\"evenodd\" d=\"M5.75 2a.75.75 0 0 1 .75.75V4h7V2.75a.75.75 0 0 1 1.5 0V4h.25A2.75 2.75 0 0 1 18 6.75v8.5A2.75 2.75 0 0 1 15.25 18H4.75A2.75 2.75 0 0 1 2 15.25v-8.5A2.75 2.75 0 0 1 4.75 4H5V2.75A.75.75 0 0 1 5.75 2Zm-1 5.5c-.69 0-1.25.56-1.25 1.25v6.5c0 .69.56 1.25 1.25 1.25h10.5c.69 0 1.25-.56 1.25-1.25v-6.5c0-.69-.56-1.25-1.25-1.25H4.75Z\" clip-rule=\"evenodd\" /></svg>`\n ),\n this.__renderFaq(\n 'reactivate_whats_next',\n svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" class=\"text-success flex-shrink-0\" style=\"width: 1.25em; height: 1.25em;\"><path d=\"M3.288 4.818A1.5 1.5 0 0 0 1 6.095v7.81a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905c.155-.096.285-.213.389-.344v2.973a1.5 1.5 0 0 0 2.288 1.276l6.323-3.905a1.5 1.5 0 0 0 0-2.552l-6.323-3.906A1.5 1.5 0 0 0 10 6.095v2.972a1.506 1.506 0 0 0-.389-.343L3.288 4.818Z\" /></svg>`\n ),\n ]}\n </foxy-internal-summary-control>\n\n <vaadin-button\n theme=\"primary ${isActive ? 'error' : 'success'} large\"\n class=\"w-full\"\n ?disabled=${this.disabled}\n @click=${() => this.submit()}\n >\n <foxy-i18n infer=\"\" key=\"${action}_submit\"></foxy-i18n>\n </vaadin-button>\n `;\n }\n\n submit(): void {\n if (this.data?.is_active) {\n if (this.__endDatePresetGetValue() === 'next_transaction_date') {\n this.edit({ end_date: this.form.next_transaction_date });\n }\n } else {\n this.edit({\n next_transaction_date: this.__nextTransactionDateGetValue(),\n is_active: true,\n end_date: '0000-00-00',\n });\n }\n\n super.submit();\n }\n\n protected async _sendPatch(edits: Partial<Data>): Promise<Data> {\n delete edits.end_date_preset;\n return super._sendPatch(edits);\n }\n\n private __renderFaq(prefix: string, icon: SVGTemplateResult, textSuffix = '') {\n return html`\n <div\n class=\"bg-transparent flex leading-xs\"\n style=\"gap: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n ${icon}\n <p class=\"grid\">\n <foxy-i18n class=\"leading-m text-s font-medium\" infer=\"\" key=\"${prefix}_title\">\n </foxy-i18n>\n <foxy-i18n\n class=\"leading-xs text-secondary text-xs\"\n infer=\"\"\n key=\"${prefix}_text${textSuffix}\"\n >\n </foxy-i18n>\n </p>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -84,7 +84,7 @@ export class CouponForm extends Base {
|
|
|
84
84
|
};
|
|
85
85
|
this.__productCodeRestrictionsGetValue = () => {
|
|
86
86
|
var _a;
|
|
87
|
-
return (_a = this.form.product_code_restrictions) === null || _a === void 0 ? void 0 : _a.split(',').
|
|
87
|
+
return (_a = this.form.product_code_restrictions) === null || _a === void 0 ? void 0 : _a.split(',').map(v => v.trim()).filter(v => v.length > 0).map(value => ({
|
|
88
88
|
value,
|
|
89
89
|
label: value.startsWith('-')
|
|
90
90
|
? this.t(`product-code-restrictions.label_block`, { value: value.substring(1) })
|