@foxy.io/elements 1.29.0-beta.1 → 1.29.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/foxy-access-recovery-form.js +1 -1
- package/dist/cdn/foxy-address-card.js +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-admin-subscription-card.js +1 -1
- package/dist/cdn/foxy-admin-subscription-form.js +1 -0
- package/dist/cdn/foxy-api-browser.js +1 -1
- package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
- package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-applied-tax-card.js +1 -1
- package/dist/cdn/foxy-attribute-card.js +1 -1
- package/dist/cdn/foxy-attribute-form.js +1 -1
- package/dist/cdn/foxy-billing-address-card.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-cart-card.js +1 -1
- package/dist/cdn/foxy-cart-form.js +2 -2
- package/dist/cdn/foxy-client-card.js +1 -1
- package/dist/cdn/foxy-client-form.js +1 -1
- package/dist/cdn/foxy-collection-page.js +1 -1
- package/dist/cdn/foxy-collection-pages.js +1 -1
- package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
- package/dist/cdn/foxy-coupon-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-card.js +1 -1
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-detail-card.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings-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-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-downloadable-card.js +1 -1
- package/dist/cdn/foxy-downloadable-form.js +1 -1
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-filter-attribute-card.js +1 -1
- package/dist/cdn/foxy-filter-attribute-form.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n-editor.js +1 -1
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-integration-card.js +1 -1
- package/dist/cdn/foxy-integration-form.js +1 -1
- package/dist/cdn/foxy-item-card.js +1 -1
- package/dist/cdn/foxy-item-category-card.js +1 -1
- package/dist/cdn/foxy-item-category-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +2 -2
- package/dist/cdn/foxy-item-option-card.js +1 -1
- package/dist/cdn/foxy-item-option-form.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-native-integration-card.js +1 -1
- package/dist/cdn/foxy-native-integration-form.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-passkey-card.js +1 -1
- package/dist/cdn/foxy-passkey-form.js +1 -1
- package/dist/cdn/foxy-payment-card-embed.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +2 -2
- package/dist/cdn/foxy-reports-table.js +1 -1
- package/dist/cdn/foxy-shipment-card.js +1 -1
- package/dist/cdn/foxy-shipping-container-card.js +1 -1
- package/dist/cdn/foxy-shipping-drop-type-card.js +1 -1
- package/dist/cdn/foxy-shipping-method-card.js +1 -1
- package/dist/cdn/foxy-shipping-service-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- package/dist/cdn/foxy-store-card.js +1 -1
- package/dist/cdn/foxy-store-form.js +1 -1
- package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
- package/dist/cdn/foxy-subscription-card.js +1 -1
- package/dist/cdn/foxy-subscription-form.js +1 -1
- package/dist/cdn/foxy-subscription-settings-form.js +1 -1
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-template-set-card.js +1 -1
- package/dist/cdn/foxy-template-set-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transaction.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-update-payment-method-form.js +1 -1
- package/dist/cdn/foxy-user-card.js +1 -1
- package/dist/cdn/foxy-user-form.js +1 -1
- package/dist/cdn/foxy-users-table.js +1 -1
- package/dist/cdn/foxy-webhook-card.js +1 -1
- package/dist/cdn/foxy-webhook-form.js +1 -1
- package/dist/cdn/foxy-webhook-log-card.js +1 -1
- package/dist/cdn/foxy-webhook-status-card.js +1 -1
- package/dist/cdn/{shared-5318a742.js → shared-021c7a22.js} +1 -1
- package/dist/cdn/{shared-bedfd929.js → shared-075796e2.js} +1 -1
- package/dist/cdn/{shared-39c40d76.js → shared-10325cda.js} +1 -1
- package/dist/cdn/{shared-83451a72.js → shared-10b5e78f.js} +1 -1
- package/dist/cdn/{shared-ae013b1a.js → shared-12ac8cc6.js} +1 -1
- package/dist/cdn/{shared-06119334.js → shared-1cf1e1a4.js} +1 -1
- package/dist/cdn/{shared-ee67d0e4.js → shared-2099544a.js} +1 -1
- package/dist/cdn/shared-292ba15e.js +1 -0
- package/dist/cdn/{shared-6271dae8.js → shared-2a71795e.js} +1 -1
- package/dist/cdn/{shared-704ad583.js → shared-2d723710.js} +1 -1
- package/dist/cdn/{shared-3df30d85.js → shared-2fc671cd.js} +1 -1
- package/dist/cdn/{shared-8d6749b3.js → shared-30221a16.js} +1 -1
- package/dist/cdn/{shared-64d3d924.js → shared-303b428e.js} +1 -1
- package/dist/cdn/{shared-30792d92.js → shared-339bbd50.js} +1 -1
- package/dist/cdn/{shared-9da63461.js → shared-39a33102.js} +1 -1
- package/dist/cdn/{shared-cfe1bd8c.js → shared-3e03c988.js} +1 -1
- package/dist/cdn/{shared-c5a48553.js → shared-3fa791ca.js} +1 -1
- package/dist/cdn/{shared-509a1775.js → shared-4993a79d.js} +1 -1
- package/dist/cdn/shared-4c2d43e6.js +1 -0
- package/dist/cdn/{shared-0b5eb6d1.js → shared-558bc894.js} +1 -1
- package/dist/cdn/{shared-1a6877b1.js → shared-5c05ac06.js} +1 -1
- package/dist/cdn/shared-61f4e91a.js +1 -0
- package/dist/cdn/{shared-80bfcae3.js → shared-634b670e.js} +1 -1
- package/dist/cdn/{shared-665965d3.js → shared-644ee296.js} +1 -1
- package/dist/cdn/{shared-94ddc918.js → shared-6a4e81ad.js} +1 -1
- package/dist/cdn/{shared-b4d20b03.js → shared-6e355777.js} +1 -1
- package/dist/cdn/{shared-61c0bc51.js → shared-7026fb08.js} +1 -1
- package/dist/cdn/shared-70a5fad6.js +1 -0
- package/dist/cdn/{shared-a3abd1de.js → shared-72c61f43.js} +1 -1
- package/dist/cdn/{shared-59978b05.js → shared-72f41a65.js} +1 -1
- package/dist/cdn/{shared-30e7450c.js → shared-77051754.js} +1 -1
- package/dist/cdn/{shared-cc4dabfb.js → shared-77c4acdd.js} +1 -1
- package/dist/cdn/{shared-bc409d96.js → shared-797ba64a.js} +1 -1
- package/dist/cdn/{shared-94bae3fb.js → shared-7b8ad9c1.js} +1 -1
- package/dist/cdn/shared-7ce91c80.js +1 -0
- package/dist/cdn/{shared-2ae42363.js → shared-7fd9a30f.js} +1 -1
- package/dist/cdn/{shared-9df5667e.js → shared-81d3a9ae.js} +1 -1
- package/dist/cdn/{shared-74a6f365.js → shared-876a4341.js} +1 -1
- package/dist/cdn/shared-8c1df97c.js +1 -0
- package/dist/cdn/{shared-70d41727.js → shared-8f7a31e0.js} +2 -2
- package/dist/cdn/{shared-69a37aba.js → shared-9a90a24e.js} +1 -1
- package/dist/cdn/{shared-088655e0.js → shared-a036e345.js} +1 -1
- package/dist/cdn/{shared-50db6104.js → shared-a159ccff.js} +1 -1
- package/dist/cdn/{shared-248c08ac.js → shared-a6273e4a.js} +1 -1
- package/dist/cdn/{shared-bc0421a7.js → shared-abea5e34.js} +1 -1
- package/dist/cdn/{shared-5ec4c4b3.js → shared-acdcae7e.js} +1 -1
- package/dist/cdn/{shared-4feadd89.js → shared-aefac46b.js} +1 -1
- package/dist/cdn/{shared-5860410a.js → shared-b6814728.js} +2 -2
- package/dist/cdn/{shared-1101a938.js → shared-b731dfc5.js} +1 -1
- package/dist/cdn/{shared-ddde3914.js → shared-b98b8d02.js} +1 -1
- package/dist/cdn/{shared-4f0975c8.js → shared-bdd4fbbb.js} +1 -1
- package/dist/cdn/shared-cbb0e610.js +1 -0
- package/dist/cdn/{shared-67aa8143.js → shared-cc79152c.js} +1 -1
- package/dist/cdn/{shared-c47c9449.js → shared-d464d078.js} +1 -1
- package/dist/cdn/{shared-3f0e394a.js → shared-d4810405.js} +1 -1
- package/dist/cdn/{shared-ef2b5ceb.js → shared-d6010c96.js} +1 -1
- package/dist/cdn/{shared-e5a04929.js → shared-df00a537.js} +1 -1
- package/dist/cdn/{shared-f293f1ae.js → shared-e2a61f69.js} +1 -1
- package/dist/cdn/{shared-c1b96673.js → shared-e5d37737.js} +1 -1
- package/dist/cdn/{shared-f1e4e392.js → shared-e6e84ff5.js} +1 -1
- package/dist/cdn/{shared-730e6ac7.js → shared-f1d2b5bb.js} +1 -1
- package/dist/cdn/{shared-84c5aab1.js → shared-f22f22ae.js} +1 -1
- package/dist/cdn/{shared-9ee0844c.js → shared-f5366dda.js} +1 -1
- package/dist/cdn/{shared-02d9cca5.js → shared-fa9e5c7f.js} +1 -1
- package/dist/cdn/{shared-4b7f8c12.js → shared-fb56178f.js} +1 -1
- package/dist/cdn/{shared-dfab3fb1.js → shared-fe77f6f6.js} +1 -1
- package/dist/cdn/{shared-a917b3e5.js → shared-ff63a551.js} +1 -1
- package/dist/cdn/{shared-b5cd2b39.js → shared-ffd3690b.js} +1 -1
- package/dist/cdn/translations/admin-subscription-form/en.json +1840 -0
- package/dist/cdn/translations/cart-form/en.json +1 -1
- package/dist/cdn/translations/transaction/en.json +0 -1
- package/dist/elements/internal/InternalDateControl/InternalDateControl.d.ts +4 -1
- package/dist/elements/internal/InternalDateControl/InternalDateControl.js +36 -3
- package/dist/elements/internal/InternalDateControl/InternalDateControl.js.map +1 -1
- package/dist/elements/internal/InternalDateControl/getMonthNames.d.ts +1 -0
- package/dist/elements/internal/InternalDateControl/getMonthNames.js +7 -0
- package/dist/elements/internal/InternalDateControl/getMonthNames.js.map +1 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayLongNames.d.ts +1 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayLongNames.js +8 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayLongNames.js.map +1 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayShortNames.d.ts +1 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayShortNames.js +8 -0
- package/dist/elements/internal/InternalDateControl/getWeekdayShortNames.js.map +1 -0
- package/dist/elements/internal/InternalDateControl/index.d.ts +1 -0
- package/dist/elements/internal/InternalDateControl/index.js +1 -0
- package/dist/elements/internal/InternalDateControl/index.js.map +1 -1
- package/dist/elements/internal/InternalDateControl/vaadinStyles.d.ts +1 -0
- package/dist/elements/internal/InternalDateControl/vaadinStyles.js +73 -0
- package/dist/elements/internal/InternalDateControl/vaadinStyles.js.map +1 -0
- package/dist/elements/internal/InternalForm/InternalForm.js +1 -1
- package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -1
- package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.d.ts +3 -0
- package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +128 -1
- package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -1
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +4 -1
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +93 -1
- package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.d.ts +1 -1
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js +3 -3
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js.map +1 -1
- package/dist/elements/public/AdminSubscriptionForm/AdminSubscriptionForm.d.ts +14 -0
- package/dist/elements/public/AdminSubscriptionForm/AdminSubscriptionForm.js +109 -0
- package/dist/elements/public/AdminSubscriptionForm/AdminSubscriptionForm.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/index.d.ts +13 -0
- package/dist/elements/public/AdminSubscriptionForm/index.js +15 -0
- package/dist/elements/public/AdminSubscriptionForm/index.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/InternalAdminSubscriptionFormError.d.ts +5 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/InternalAdminSubscriptionFormError.js +17 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/InternalAdminSubscriptionFormError.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/index.d.ts +3 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/index.js +5 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormError/index.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/InternalAdminSubscriptionFormLoadInCartAction.d.ts +8 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/InternalAdminSubscriptionFormLoadInCartAction.js +40 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/InternalAdminSubscriptionFormLoadInCartAction.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/index.d.ts +4 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/index.js +6 -0
- package/dist/elements/public/AdminSubscriptionForm/internal/InternalAdminSubscriptionFormLoadInCartAction/index.js.map +1 -0
- package/dist/elements/public/AdminSubscriptionForm/types.d.ts +5 -0
- package/dist/elements/public/AdminSubscriptionForm/types.js +2 -0
- package/dist/elements/public/AdminSubscriptionForm/types.js.map +1 -0
- package/dist/elements/public/CartForm/CartForm.d.ts +1 -0
- package/dist/elements/public/CartForm/CartForm.js +23 -21
- package/dist/elements/public/CartForm/CartForm.js.map +1 -1
- package/dist/elements/public/FormDialog/FormDialog.js +2 -3
- package/dist/elements/public/FormDialog/FormDialog.js.map +1 -1
- package/dist/elements/public/index.d.ts +1 -0
- package/dist/elements/public/index.defined.d.ts +1 -0
- package/dist/elements/public/index.defined.js +1 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +1 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/themeable.js +4 -0
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-55b621e8.js +0 -1
- package/dist/cdn/shared-64fcd0da.js +0 -1
- package/dist/cdn/shared-7e39ec54.js +0 -1
- package/dist/cdn/shared-963d252e.js +0 -1
- package/dist/cdn/shared-a636184a.js +0 -1
- package/dist/cdn/shared-d6b4d84f.js +0 -1
- package/dist/cdn/shared-deab9fa5.js +0 -1
|
@@ -142,11 +142,11 @@
|
|
|
142
142
|
"value_empty": "Not set",
|
|
143
143
|
"value_busy": "Loading...",
|
|
144
144
|
"value_fail": "Failed to load",
|
|
145
|
-
"placeholder": "Not set",
|
|
146
145
|
"edit": "Edit",
|
|
147
146
|
"dialog": {
|
|
148
147
|
"cancel": "Cancel",
|
|
149
148
|
"close": "Close",
|
|
149
|
+
"save": "Save",
|
|
150
150
|
"header": "Payment method",
|
|
151
151
|
"or": "or",
|
|
152
152
|
"select_previous": "Select previous",
|
|
@@ -9,6 +9,9 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
|
|
|
9
9
|
export declare class InternalDateControl extends InternalEditableControl {
|
|
10
10
|
static get properties(): PropertyDeclarations;
|
|
11
11
|
/** Date format. If `unix`, expects and outputs a UNIX timestamp (number), otherwise defaults to ISO 8601 date. */
|
|
12
|
-
format: 'unix' | null;
|
|
12
|
+
format: 'unix' | 'iso-long' | null;
|
|
13
|
+
/** Use summary item layout inside `<foxy-internal-summary-control>`. */
|
|
14
|
+
layout: 'summary-item' | 'standalone' | null;
|
|
13
15
|
renderControl(): TemplateResult;
|
|
16
|
+
private get __pickerI18n();
|
|
14
17
|
}
|
|
@@ -3,6 +3,9 @@ import { serializeDate } from "../../../utils/serialize-date.js";
|
|
|
3
3
|
import { parseDate } from "../../../utils/parse-date.js";
|
|
4
4
|
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
5
5
|
import { html } from 'lit-element';
|
|
6
|
+
import { getWeekdayShortNames } from "./getWeekdayShortNames.js";
|
|
7
|
+
import { getWeekdayLongNames } from "./getWeekdayLongNames.js";
|
|
8
|
+
import { getMonthNames } from "./getMonthNames.js";
|
|
6
9
|
/**
|
|
7
10
|
* Internal control displaying a basic date picker box.
|
|
8
11
|
*
|
|
@@ -14,19 +17,25 @@ export class InternalDateControl extends InternalEditableControl {
|
|
|
14
17
|
super(...arguments);
|
|
15
18
|
/** Date format. If `unix`, expects and outputs a UNIX timestamp (number), otherwise defaults to ISO 8601 date. */
|
|
16
19
|
this.format = null;
|
|
20
|
+
/** Use summary item layout inside `<foxy-internal-summary-control>`. */
|
|
21
|
+
this.layout = null;
|
|
17
22
|
}
|
|
18
23
|
static get properties() {
|
|
19
24
|
return {
|
|
20
25
|
...super.properties,
|
|
21
|
-
format: {
|
|
26
|
+
format: {},
|
|
27
|
+
layout: {},
|
|
22
28
|
};
|
|
23
29
|
}
|
|
24
30
|
renderControl() {
|
|
25
|
-
var _a;
|
|
31
|
+
var _a, _b;
|
|
26
32
|
let value;
|
|
27
33
|
if (this.format === 'unix') {
|
|
28
34
|
value = serializeDate(new Date(((_a = this._value) !== null && _a !== void 0 ? _a : 0) * 1000));
|
|
29
35
|
}
|
|
36
|
+
else if (this.format === 'iso-long') {
|
|
37
|
+
value = serializeDate(new Date(this._value));
|
|
38
|
+
}
|
|
30
39
|
else {
|
|
31
40
|
value = this._value;
|
|
32
41
|
}
|
|
@@ -37,17 +46,22 @@ export class InternalDateControl extends InternalEditableControl {
|
|
|
37
46
|
helper-text=${this.helperText}
|
|
38
47
|
label=${this.label}
|
|
39
48
|
class="w-full"
|
|
49
|
+
theme=${(_b = this.layout) !== null && _b !== void 0 ? _b : 'standalone'}
|
|
40
50
|
?disabled=${this.disabled}
|
|
41
51
|
?readonly=${this.readonly}
|
|
42
52
|
.checkValidity=${this._checkValidity}
|
|
43
53
|
.value=${value}
|
|
54
|
+
.i18n=${this.__pickerI18n}
|
|
44
55
|
@keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
|
|
45
56
|
@change=${(evt) => {
|
|
46
|
-
var _a, _b;
|
|
57
|
+
var _a, _b, _c, _d;
|
|
47
58
|
const field = evt.currentTarget;
|
|
48
59
|
if (this.format === 'unix') {
|
|
49
60
|
this._value = Math.floor(((_b = (_a = parseDate(field.value)) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) / 1000);
|
|
50
61
|
}
|
|
62
|
+
else if (this.format === 'iso-long') {
|
|
63
|
+
this._value = (_d = (_c = parseDate(field.value)) === null || _c === void 0 ? void 0 : _c.toISOString()) !== null && _d !== void 0 ? _d : null;
|
|
64
|
+
}
|
|
51
65
|
else {
|
|
52
66
|
this._value = field.value;
|
|
53
67
|
}
|
|
@@ -56,5 +70,24 @@ export class InternalDateControl extends InternalEditableControl {
|
|
|
56
70
|
</vaadin-date-picker>
|
|
57
71
|
`;
|
|
58
72
|
}
|
|
73
|
+
get __pickerI18n() {
|
|
74
|
+
return {
|
|
75
|
+
monthNames: getMonthNames(this.lang || 'en'),
|
|
76
|
+
weekdays: getWeekdayLongNames(this.lang || 'en'),
|
|
77
|
+
weekdaysShort: getWeekdayShortNames(this.lang || 'en'),
|
|
78
|
+
firstDayOfWeek: 0,
|
|
79
|
+
week: this.t('week'),
|
|
80
|
+
calendar: this.t('calendar'),
|
|
81
|
+
clear: this.t('clear'),
|
|
82
|
+
today: this.t('today'),
|
|
83
|
+
cancel: this.t('cancel'),
|
|
84
|
+
referenceDate: '',
|
|
85
|
+
parseDate: null,
|
|
86
|
+
formatTitle: (m, y) => m + ' ' + y,
|
|
87
|
+
formatDate: (d) => {
|
|
88
|
+
return this.t('display_value', { value: new Date(d.year, d.month, d.day) });
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
}
|
|
59
92
|
}
|
|
60
93
|
//# sourceMappingURL=InternalDateControl.js.map
|
|
@@ -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;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,uBAAuB;IAAhE;;
|
|
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';\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 format: {},\n layout: {},\n };\n }\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 renderControl(): TemplateResult {\n let value: string;\n\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;\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 ?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: new Date(d.year, d.month, d.day) });\n },\n };\n }\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getMonthNames(lang: string): string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getMonthNames.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/getMonthNames.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,CAAC,EAAE,EAAE;QAC1D,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["export function getMonthNames(lang: string): string[] {\n return new Array(12).fill(new Date()).map((date: Date, i) => {\n date.setMonth(i);\n return date.toLocaleDateString(lang, { month: 'long' });\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getWeekdayLongNames(lang: string): string[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function getWeekdayLongNames(lang) {
|
|
2
|
+
return new Array(7).fill(new Date()).map((date, i) => {
|
|
3
|
+
while (date.getDay() !== i)
|
|
4
|
+
date.setDate(date.getDate() + 1);
|
|
5
|
+
return date.toLocaleDateString(lang, { weekday: 'long' });
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getWeekdayLongNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getWeekdayLongNames.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/getWeekdayLongNames.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,CAAC,EAAE,EAAE;QACzD,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["export function getWeekdayLongNames(lang: string): string[] {\n return new Array(7).fill(new Date()).map((date: Date, i) => {\n while (date.getDay() !== i) date.setDate(date.getDate() + 1);\n return date.toLocaleDateString(lang, { weekday: 'long' });\n });\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getWeekdayShortNames(lang: string): string[];
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export function getWeekdayShortNames(lang) {
|
|
2
|
+
return new Array(7).fill(new Date()).map((date, i) => {
|
|
3
|
+
while (date.getDay() !== i)
|
|
4
|
+
date.setDate(date.getDate() + 1);
|
|
5
|
+
return date.toLocaleDateString(lang, { weekday: 'short' });
|
|
6
|
+
});
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=getWeekdayShortNames.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getWeekdayShortNames.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/getWeekdayShortNames.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAU,EAAE,CAAC,EAAE,EAAE;QACzD,OAAO,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["export function getWeekdayShortNames(lang: string): string[] {\n return new Array(7).fill(new Date()).map((date: Date, i) => {\n while (date.getDay() !== i) date.setDate(date.getDate() + 1);\n return date.toLocaleDateString(lang, { weekday: 'short' });\n });\n}\n"]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import '@vaadin/vaadin-date-picker';
|
|
2
2
|
import "../InternalEditableControl/index.js";
|
|
3
|
+
import "./vaadinStyles.js";
|
|
3
4
|
import { InternalDateControl as Control } from "./InternalDateControl.js";
|
|
4
5
|
customElements.define('foxy-internal-date-control', Control);
|
|
5
6
|
export { Control as InternalDateControl };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,6CAA0C;AAC1C,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,iCAA8B;AAEvE,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-date-picker';\nimport '../InternalEditableControl/index';\nimport { InternalDateControl as Control } from './InternalDateControl';\n\ncustomElements.define('foxy-internal-date-control', Control);\n\nexport { Control as InternalDateControl };\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,4BAA4B,CAAC;AACpC,6CAA0C;AAC1C,2BAAwB;AAExB,OAAO,EAAE,mBAAmB,IAAI,OAAO,EAAE,iCAA8B;AAEvE,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;AAE7D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-date-picker';\nimport '../InternalEditableControl/index';\nimport './vaadinStyles';\n\nimport { InternalDateControl as Control } from './InternalDateControl';\n\ncustomElements.define('foxy-internal-date-control', Control);\n\nexport { Control as InternalDateControl };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { registerStyles } from '@vaadin/vaadin-themable-mixin/register-styles';
|
|
2
|
+
import { css } from 'lit-element';
|
|
3
|
+
registerStyles('vaadin-date-picker-text-field', css `:host([theme~='summary-item'])::before{
|
|
4
|
+
display:none;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
:host([theme~='summary-item']) .vaadin-text-field-container{
|
|
8
|
+
display:grid;
|
|
9
|
+
grid-template-columns:auto 1fr;
|
|
10
|
+
grid-template-rows:repeat(3, min-content);
|
|
11
|
+
gap:0 var(--lumo-space-m);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:host([theme~='summary-item']) [part='label']{
|
|
15
|
+
font:normal var(--lumo-font-size-m) var(--lumo-font-family);
|
|
16
|
+
color:var(--lumo-body-text-color) !important;
|
|
17
|
+
grid-row:1;
|
|
18
|
+
-webkit-text-fill-color:var(--lumo-body-text-color) !important;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:host([theme~='summary-item']) [part='helper-text']{
|
|
22
|
+
font:normal var(--lumo-font-size-s) var(--lumo-font-family);
|
|
23
|
+
color:var(--lumo-secondary-text-color) !important;
|
|
24
|
+
grid-row:2;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
:host([theme~='summary-item']) [part='helper-text']::before{
|
|
28
|
+
display:none;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
:host([theme~='summary-item']) [part='error-message']{
|
|
32
|
+
font:normal var(--lumo-font-size-s) var(--lumo-font-family);
|
|
33
|
+
color:var(--lumo-error-text-color);
|
|
34
|
+
grid-row:3;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host([theme~='summary-item']) [part='error-message'],
|
|
38
|
+
:host([theme~='summary-item']) [part='helper-text'],
|
|
39
|
+
:host([theme~='summary-item']) [part='label']{
|
|
40
|
+
line-height:var(--lumo-line-height-xs);
|
|
41
|
+
grid-column:1;
|
|
42
|
+
padding:0;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
:host([theme~='summary-item']) [part='input-field']{
|
|
46
|
+
grid-column:2;
|
|
47
|
+
grid-row:1;
|
|
48
|
+
padding:0;
|
|
49
|
+
background:transparent;
|
|
50
|
+
align-self:start;
|
|
51
|
+
height:1em;
|
|
52
|
+
--lumo-icon-size-m:1rem;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([theme~='summary-item']) [part='input-field']::after,
|
|
56
|
+
:host([theme~='summary-item'][readonly]) [part='input-field'] slot[name='suffix']{
|
|
57
|
+
display:none;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:host([theme~='summary-item']) [part='value']{
|
|
61
|
+
line-height:var(--lumo-line-height-xs);
|
|
62
|
+
text-align:right;
|
|
63
|
+
min-height:auto;
|
|
64
|
+
padding:0;
|
|
65
|
+
margin-right:var(--lumo-space-xs);
|
|
66
|
+
-webkit-mask-image:none;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
:host([theme~='summary-item'][readonly]) [part='value']{
|
|
70
|
+
margin-right:0;
|
|
71
|
+
}
|
|
72
|
+
`);
|
|
73
|
+
//# sourceMappingURL=vaadinStyles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vaadinStyles.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/vaadinStyles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAC/E,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,cAAc,CACZ,+BAA+B,EAC/B,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuEF,CACF,CAAC","sourcesContent":["import { registerStyles } from '@vaadin/vaadin-themable-mixin/register-styles';\nimport { css } from 'lit-element';\n\nregisterStyles(\n 'vaadin-date-picker-text-field',\n css`\n :host([theme~='summary-item'])::before {\n display: none;\n }\n\n :host([theme~='summary-item']) .vaadin-text-field-container {\n display: grid;\n grid-template-columns: auto 1fr;\n grid-template-rows: repeat(3, min-content);\n gap: 0 var(--lumo-space-m);\n }\n\n :host([theme~='summary-item']) [part='label'] {\n font: normal var(--lumo-font-size-m) var(--lumo-font-family);\n color: var(--lumo-body-text-color) !important;\n grid-row: 1;\n -webkit-text-fill-color: var(--lumo-body-text-color) !important;\n }\n\n :host([theme~='summary-item']) [part='helper-text'] {\n font: normal var(--lumo-font-size-s) var(--lumo-font-family);\n color: var(--lumo-secondary-text-color) !important;\n grid-row: 2;\n }\n\n :host([theme~='summary-item']) [part='helper-text']::before {\n display: none;\n }\n\n :host([theme~='summary-item']) [part='error-message'] {\n font: normal var(--lumo-font-size-s) var(--lumo-font-family);\n color: var(--lumo-error-text-color);\n grid-row: 3;\n }\n\n :host([theme~='summary-item']) [part='error-message'],\n :host([theme~='summary-item']) [part='helper-text'],\n :host([theme~='summary-item']) [part='label'] {\n line-height: var(--lumo-line-height-xs);\n grid-column: 1;\n padding: 0;\n }\n\n :host([theme~='summary-item']) [part='input-field'] {\n grid-column: 2;\n grid-row: 1;\n padding: 0;\n background: transparent;\n align-self: start;\n height: 1em;\n\n --lumo-icon-size-m: 1rem;\n }\n\n :host([theme~='summary-item']) [part='input-field']::after,\n :host([theme~='summary-item'][readonly]) [part='input-field'] slot[name='suffix'] {\n display: none;\n }\n\n :host([theme~='summary-item']) [part='value'] {\n line-height: var(--lumo-line-height-xs);\n text-align: right;\n min-height: auto;\n padding: 0;\n margin-right: var(--lumo-space-xs);\n -webkit-mask-image: none;\n }\n\n :host([theme~='summary-item'][readonly]) [part='value'] {\n margin-right: 0;\n }\n `\n);\n"]}
|
|
@@ -65,7 +65,7 @@ export class InternalForm extends Base {
|
|
|
65
65
|
if (!this.href)
|
|
66
66
|
alwaysMatch.unshift('delete', 'timestamps', 'submit');
|
|
67
67
|
if (!this.in({ idle: { snapshot: 'dirty' } }))
|
|
68
|
-
alwaysMatch.unshift('undo');
|
|
68
|
+
alwaysMatch.unshift('undo', 'submit');
|
|
69
69
|
return new BooleanSelector(alwaysMatch.join(' ').trim());
|
|
70
70
|
}
|
|
71
71
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\nimport type { Status } from './types';\n\nimport { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\n/**\n * An internal base class for any nucleon-powered form. Renders create/delete\n * buttons and timestamps by default, displays a spinner in non-idle states.\n *\n * @element foxy-internal-form\n * @since 1.17.0\n */\nexport class InternalForm<TData extends HALJSONResource> extends Base<TData> {\n /** Validation errors with this prefix will show up at the top of the form. */\n static generalErrorPrefix = 'error:';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n status: { type: Object },\n };\n }\n\n /** Status message to render at the top of the form. If `null`, the message is hidden. */\n status: null | Status = null;\n\n /**\n * Renders header actions when the optional header is rendered.\n * Empty by default.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n renderHeaderActions(data: TData): TemplateResult | null {\n return null;\n }\n\n /** Getter that returns a i18n key for the optional form header title. */\n get headerTitleKey(): string {\n return 'title';\n }\n\n /** I18next options to pass to the header title translation function. */\n get headerTitleOptions(): Record<string, unknown> {\n return {\n ...this.data,\n context: this.data ? 'existing' : 'new',\n id: this.data ? getResourceId(this.data._links.self.href) : null,\n };\n }\n\n /** Getter that returns a i18n key for the optional form header subtitle. Note that subtitle is shown only when data is avaiable. */\n get headerSubtitleKey(): string {\n return 'subtitle';\n }\n\n /** I18next options to pass to the header subtitle translation function. Note that subtitle is shown only when data is avaiable. */\n get headerSubtitleOptions(): Record<string, unknown> {\n return this.data ?? {};\n }\n\n /** ID that will be written to clipboard when Copy ID button in header is clicked. */\n get headerCopyIdValue(): string | number {\n return this.data ? getResourceId(this.data._links.self.href) ?? '' : '';\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n if (this.href) alwaysMatch.unshift('create');\n if (!this.href) alwaysMatch.unshift('delete', 'timestamps', 'submit');\n if (!this.in({ idle: { snapshot: 'dirty' } })) alwaysMatch.unshift('undo');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n /**\n * Renders optional form header.\n * - Customize which actions are rendered with `.renderHeaderActions()` method.\n * - Customize the header title and subtitle with `.headerTitleKey` and `.headerSubtitleKey` getters.\n * - Customize the header title and subtitle options with `.headerTitleOptions` and `.headerSubtitleOptions` getters.\n * - To hide the header completely, add `header` to `hidden-controls` attribute.\n */\n renderHeader(): TemplateResult {\n if (this.hiddenSelector.matches('header', true)) return html``;\n\n const data = this.data;\n const actions = data ? this.renderHeaderActions(data) : null;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('header:before')}\n <h2>\n <span class=\"flex items-center gap-s leading-xs text-xl font-medium break-all\">\n <foxy-i18n\n options=${JSON.stringify(this.headerTitleOptions)}\n infer=\"header\"\n key=${this.headerTitleKey}\n >\n </foxy-i18n>\n ${data\n ? html`\n ${this.hiddenSelector.matches('header:copy-id', true)\n ? ''\n : html`\n <foxy-copy-to-clipboard\n infer=\"header copy-id\"\n class=\"text-m\"\n text=${this.headerCopyIdValue}\n >\n </foxy-copy-to-clipboard>\n `}\n ${this.hiddenSelector.matches('header:copy-json', true)\n ? ''\n : html`\n <foxy-copy-to-clipboard\n infer=\"header copy-json\"\n class=\"text-m\"\n icon=\"icons:code\"\n text=${JSON.stringify(data, null, 2)}\n >\n </foxy-copy-to-clipboard>\n `}\n `\n : ''}\n </span>\n ${data\n ? html`\n <foxy-i18n\n infer=\"header\"\n class=\"text-m text-secondary\"\n key=${this.headerSubtitleKey}\n .options=${this.headerSubtitleOptions}\n >\n </foxy-i18n>\n ${actions ? html`<div class=\"mt-xs flex gap-m\">${actions}</div>` : ''}\n `\n : ''}\n </h2>\n ${this.renderTemplateOrSlot('header:after')}\n </div>\n `;\n }\n\n /**\n * Renders form body. This is the method you should implement in your forms\n * instead of `.render()`. If you'd like to keep the submit button and the timestamps,\n * don't forget to add `super.renderBody()` to your template.\n */\n renderBody(): TemplateResult {\n const nested = ['delete', 'undo', 'submit', 'create'];\n\n return html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n\n <div class=\"flex gap-m\" ?hidden=${nested.every(v => this.hiddenSelector.matches(v, true))}>\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n\n <div class=\"w-full\"></div>\n\n <foxy-internal-undo-control infer=\"undo\"> </foxy-internal-undo-control>\n <foxy-internal-submit-control infer=\"submit\"> </foxy-internal-submit-control>\n <foxy-internal-submit-control infer=\"create\" theme=\"primary success\">\n </foxy-internal-submit-control>\n </div>\n `;\n }\n\n /**\n * Renders the entire form. You should probably implement `.renderBody()`\n * instead of this method in your form to keep the spinner and the common layout features.\n */\n render(): TemplateResult {\n const isSpinnerVisible = !this.in('idle') && (!this.in({ busy: 'fetching' }) || !this.data);\n\n return html`\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'space-y-m': true,\n 'transition-opacity': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n ${this.__generalErrors.map(err => this.__renderGeneralError(err))}\n ${this.status ? this.__renderStatus(this.status) : ''} ${this.renderBody()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'flex flex-col items-center justify-center gap-m': true,\n 'transition-opacity absolute inset-0': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('fail') ? 'vertical' : 'no-label'}\n state=${this.in('fail') ? 'error' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n ${this.href && this.in('fail')\n ? html`\n <vaadin-button theme=\"small contrast\" @click=${() => this.refresh()}>\n <foxy-i18n infer=\"spinner\" key=\"refresh\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __generalErrors() {\n const prefix = (this.constructor as typeof InternalForm).generalErrorPrefix;\n return this.errors.filter(v => v.startsWith(prefix));\n }\n\n private __renderGeneralError(err: string) {\n return html`\n <foxy-i18n\n class=\"leading-xs text-body rounded bg-error-10 block\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"error\"\n key=${err.replace('error:', '')}\n >\n </foxy-i18n>\n `;\n }\n\n private __renderStatus({ key, options }: Status) {\n if (this.hiddenSelector.matches('status', true)) return;\n return html`\n <p\n data-testid=\"status\"\n class=\"leading-xs text-body rounded bg-success-10 flex items-start gap-m\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=${key} .options=${options}></foxy-i18n>\n <vaadin-button\n class=\"flex-shrink-0\"\n theme=\"success tertiary-inline\"\n @click=${() => (this.status = null)}\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=\"close\"></foxy-i18n>\n </vaadin-button>\n </p>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,IAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,OAAO,YAA4C,SAAQ,IAAW;IAA5E;;QAWE,yFAAyF;QACzF,WAAM,GAAkB,IAAI,CAAC;IA8N/B,CAAC;IAtOC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACzB,CAAC;IACJ,CAAC;IAKD;;;OAGG;IACH,6DAA6D;IAC7D,mBAAmB,CAAC,IAAW;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,yEAAyE;IACzE,IAAI,cAAc;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,wEAAwE;IACxE,IAAI,kBAAkB;QACpB,OAAO;YACL,GAAG,IAAI,CAAC,IAAI;YACZ,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;YACvC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;SACjE,CAAC;IACJ,CAAC;IAED,oIAAoI;IACpI,IAAI,iBAAiB;QACnB,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,mIAAmI;IACnI,IAAI,qBAAqB;;QACvB,aAAO,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;IACzB,CAAC;IAED,qFAAqF;IACrF,IAAI,iBAAiB;;QACnB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,OAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,cAAc;QAChB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC;YAAE,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACrF,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;QAE/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAE7D,OAAO,IAAI,CAAA;;UAEL,IAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC;;;;wBAI5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC;;oBAE3C,IAAI,CAAC,cAAc;;;cAGzB,IAAI;YACJ,CAAC,CAAC,IAAI,CAAA;oBACA,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,CAAC;gBACnD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAA;;;;iCAIO,IAAI,CAAC,iBAAiB;;;uBAGhC;oBACH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,EAAE,IAAI,CAAC;gBACrD,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,IAAI,CAAA;;;;;iCAKO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;;;uBAGvC;iBACN;YACH,CAAC,CAAC,EAAE;;YAEN,IAAI;YACJ,CAAC,CAAC,IAAI,CAAA;;;;wBAIM,IAAI,CAAC,iBAAiB;6BACjB,IAAI,CAAC,qBAAqB;;;kBAGrC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA,iCAAiC,OAAO,QAAQ,CAAC,CAAC,CAAC,EAAE;eACtE;YACH,CAAC,CAAC,EAAE;;UAEN,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC;;KAE9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAEtD,OAAO,IAAI,CAAA;;;wCAGyB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;;;;;;;;;;KAU1F,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,MAAM,gBAAgB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE5F,OAAO,IAAI,CAAA;uBACQ,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;;kBAEpB,QAAQ,CAAC;YACf,WAAW,EAAE,IAAI;YACjB,oBAAoB,EAAE,IAAI;YAC1B,+BAA+B,EAAE,gBAAgB;SAClD,CAAC;;YAEA,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,CAAC,UAAU,EAAE;;;;;kBAKlE,QAAQ,CAAC;YACf,iDAAiD,EAAE,IAAI;YACvD,qCAAqC,EAAE,IAAI;YAC3C,+BAA+B,EAAE,CAAC,gBAAgB;SACnD,CAAC;;;qBAGS,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU;oBAC1C,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;;;;YAI1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC;YAC5B,CAAC,CAAC,IAAI,CAAA;+DAC6C,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE;;;eAGpE;YACH,CAAC,CAAC,EAAE;;;KAGX,CAAC;IACJ,CAAC;IAED,IAAY,eAAe;QACzB,MAAM,MAAM,GAAI,IAAI,CAAC,WAAmC,CAAC,kBAAkB,CAAC;QAC5E,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,oBAAoB,CAAC,GAAW;QACtC,OAAO,IAAI,CAAA;;;;;cAKD,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;;;KAGlC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,EAAE,GAAG,EAAE,OAAO,EAAU;QAC7C,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC;YAAE,OAAO;QACxD,OAAO,IAAI,CAAA;;;;;;uDAMwC,GAAG,aAAa,OAAO;;;;mBAI3D,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;;;;;KAKxC,CAAC;IACJ,CAAC;;AAxOD,8EAA8E;AACvE,+BAAkB,GAAG,QAAQ,CAAC","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\nimport type { Status } from './types';\n\nimport { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\n/**\n * An internal base class for any nucleon-powered form. Renders create/delete\n * buttons and timestamps by default, displays a spinner in non-idle states.\n *\n * @element foxy-internal-form\n * @since 1.17.0\n */\nexport class InternalForm<TData extends HALJSONResource> extends Base<TData> {\n /** Validation errors with this prefix will show up at the top of the form. */\n static generalErrorPrefix = 'error:';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n status: { type: Object },\n };\n }\n\n /** Status message to render at the top of the form. If `null`, the message is hidden. */\n status: null | Status = null;\n\n /**\n * Renders header actions when the optional header is rendered.\n * Empty by default.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n renderHeaderActions(data: TData): TemplateResult | null {\n return null;\n }\n\n /** Getter that returns a i18n key for the optional form header title. */\n get headerTitleKey(): string {\n return 'title';\n }\n\n /** I18next options to pass to the header title translation function. */\n get headerTitleOptions(): Record<string, unknown> {\n return {\n ...this.data,\n context: this.data ? 'existing' : 'new',\n id: this.data ? getResourceId(this.data._links.self.href) : null,\n };\n }\n\n /** Getter that returns a i18n key for the optional form header subtitle. Note that subtitle is shown only when data is avaiable. */\n get headerSubtitleKey(): string {\n return 'subtitle';\n }\n\n /** I18next options to pass to the header subtitle translation function. Note that subtitle is shown only when data is avaiable. */\n get headerSubtitleOptions(): Record<string, unknown> {\n return this.data ?? {};\n }\n\n /** ID that will be written to clipboard when Copy ID button in header is clicked. */\n get headerCopyIdValue(): string | number {\n return this.data ? getResourceId(this.data._links.self.href) ?? '' : '';\n }\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n if (this.href) alwaysMatch.unshift('create');\n if (!this.href) alwaysMatch.unshift('delete', 'timestamps', 'submit');\n if (!this.in({ idle: { snapshot: 'dirty' } })) alwaysMatch.unshift('undo', 'submit');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n /**\n * Renders optional form header.\n * - Customize which actions are rendered with `.renderHeaderActions()` method.\n * - Customize the header title and subtitle with `.headerTitleKey` and `.headerSubtitleKey` getters.\n * - Customize the header title and subtitle options with `.headerTitleOptions` and `.headerSubtitleOptions` getters.\n * - To hide the header completely, add `header` to `hidden-controls` attribute.\n */\n renderHeader(): TemplateResult {\n if (this.hiddenSelector.matches('header', true)) return html``;\n\n const data = this.data;\n const actions = data ? this.renderHeaderActions(data) : null;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('header:before')}\n <h2>\n <span class=\"flex items-center gap-s leading-xs text-xl font-medium break-all\">\n <foxy-i18n\n options=${JSON.stringify(this.headerTitleOptions)}\n infer=\"header\"\n key=${this.headerTitleKey}\n >\n </foxy-i18n>\n ${data\n ? html`\n ${this.hiddenSelector.matches('header:copy-id', true)\n ? ''\n : html`\n <foxy-copy-to-clipboard\n infer=\"header copy-id\"\n class=\"text-m\"\n text=${this.headerCopyIdValue}\n >\n </foxy-copy-to-clipboard>\n `}\n ${this.hiddenSelector.matches('header:copy-json', true)\n ? ''\n : html`\n <foxy-copy-to-clipboard\n infer=\"header copy-json\"\n class=\"text-m\"\n icon=\"icons:code\"\n text=${JSON.stringify(data, null, 2)}\n >\n </foxy-copy-to-clipboard>\n `}\n `\n : ''}\n </span>\n ${data\n ? html`\n <foxy-i18n\n infer=\"header\"\n class=\"text-m text-secondary\"\n key=${this.headerSubtitleKey}\n .options=${this.headerSubtitleOptions}\n >\n </foxy-i18n>\n ${actions ? html`<div class=\"mt-xs flex gap-m\">${actions}</div>` : ''}\n `\n : ''}\n </h2>\n ${this.renderTemplateOrSlot('header:after')}\n </div>\n `;\n }\n\n /**\n * Renders form body. This is the method you should implement in your forms\n * instead of `.render()`. If you'd like to keep the submit button and the timestamps,\n * don't forget to add `super.renderBody()` to your template.\n */\n renderBody(): TemplateResult {\n const nested = ['delete', 'undo', 'submit', 'create'];\n\n return html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n\n <div class=\"flex gap-m\" ?hidden=${nested.every(v => this.hiddenSelector.matches(v, true))}>\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n\n <div class=\"w-full\"></div>\n\n <foxy-internal-undo-control infer=\"undo\"> </foxy-internal-undo-control>\n <foxy-internal-submit-control infer=\"submit\"> </foxy-internal-submit-control>\n <foxy-internal-submit-control infer=\"create\" theme=\"primary success\">\n </foxy-internal-submit-control>\n </div>\n `;\n }\n\n /**\n * Renders the entire form. You should probably implement `.renderBody()`\n * instead of this method in your form to keep the spinner and the common layout features.\n */\n render(): TemplateResult {\n const isSpinnerVisible = !this.in('idle') && (!this.in({ busy: 'fetching' }) || !this.data);\n\n return html`\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'space-y-m': true,\n 'transition-opacity': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n ${this.__generalErrors.map(err => this.__renderGeneralError(err))}\n ${this.status ? this.__renderStatus(this.status) : ''} ${this.renderBody()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'flex flex-col items-center justify-center gap-m': true,\n 'transition-opacity absolute inset-0': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('fail') ? 'vertical' : 'no-label'}\n state=${this.in('fail') ? 'error' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n ${this.href && this.in('fail')\n ? html`\n <vaadin-button theme=\"small contrast\" @click=${() => this.refresh()}>\n <foxy-i18n infer=\"spinner\" key=\"refresh\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __generalErrors() {\n const prefix = (this.constructor as typeof InternalForm).generalErrorPrefix;\n return this.errors.filter(v => v.startsWith(prefix));\n }\n\n private __renderGeneralError(err: string) {\n return html`\n <foxy-i18n\n class=\"leading-xs text-body rounded bg-error-10 block\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"error\"\n key=${err.replace('error:', '')}\n >\n </foxy-i18n>\n `;\n }\n\n private __renderStatus({ key, options }: Status) {\n if (this.hiddenSelector.matches('status', true)) return;\n return html`\n <p\n data-testid=\"status\"\n class=\"leading-xs text-body rounded bg-success-10 flex items-start gap-m\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=${key} .options=${options}></foxy-i18n>\n <vaadin-button\n class=\"flex-shrink-0\"\n theme=\"success tertiary-inline\"\n @click=${() => (this.status = null)}\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=\"close\"></foxy-i18n>\n </vaadin-button>\n </p>\n `;\n }\n}\n"]}
|
|
@@ -9,12 +9,15 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
|
|
|
9
9
|
export declare class InternalFrequencyControl extends InternalEditableControl {
|
|
10
10
|
static get properties(): PropertyDeclarations;
|
|
11
11
|
static get styles(): CSSResultArray;
|
|
12
|
+
allowTwiceAMonth: boolean;
|
|
12
13
|
options: {
|
|
13
14
|
value: string;
|
|
14
15
|
label: string;
|
|
15
16
|
}[];
|
|
17
|
+
layout: 'summary-item' | 'standalone' | null;
|
|
16
18
|
max: number | null;
|
|
17
19
|
private __i18n;
|
|
18
20
|
renderControl(): TemplateResult;
|
|
19
21
|
updated(changes: Map<keyof this, unknown>): void;
|
|
22
|
+
private __renderSummaryItemLayout;
|
|
20
23
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
|
|
2
|
-
import { css, html } from 'lit-element';
|
|
2
|
+
import { css, html, svg } from 'lit-element';
|
|
3
3
|
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
4
|
+
import { classMap } from "../../../utils/class-map.js";
|
|
4
5
|
/**
|
|
5
6
|
* Internal control displaying a custom field for frequency input.
|
|
6
7
|
*
|
|
@@ -10,12 +11,14 @@ import { ifDefined } from 'lit-html/directives/if-defined';
|
|
|
10
11
|
export class InternalFrequencyControl extends InternalEditableControl {
|
|
11
12
|
constructor() {
|
|
12
13
|
super(...arguments);
|
|
14
|
+
this.allowTwiceAMonth = false;
|
|
13
15
|
this.options = [
|
|
14
16
|
{ value: 'd', label: 'day' },
|
|
15
17
|
{ value: 'w', label: 'week' },
|
|
16
18
|
{ value: 'm', label: 'month' },
|
|
17
19
|
{ value: 'y', label: 'year' },
|
|
18
20
|
];
|
|
21
|
+
this.layout = null;
|
|
19
22
|
this.max = 999;
|
|
20
23
|
this.__i18n = {
|
|
21
24
|
formatValue: inputValues => inputValues.join(''),
|
|
@@ -31,7 +34,9 @@ export class InternalFrequencyControl extends InternalEditableControl {
|
|
|
31
34
|
static get properties() {
|
|
32
35
|
return {
|
|
33
36
|
...super.properties,
|
|
37
|
+
allowTwiceAMonth: { type: Boolean, attribute: 'allow-twice-a-month' },
|
|
34
38
|
options: { attribute: false },
|
|
39
|
+
layout: {},
|
|
35
40
|
max: { type: Number },
|
|
36
41
|
};
|
|
37
42
|
}
|
|
@@ -70,11 +75,23 @@ vaadin-integer-field{
|
|
|
70
75
|
vaadin-combo-box::part(text-field){
|
|
71
76
|
padding:0;
|
|
72
77
|
}
|
|
78
|
+
|
|
79
|
+
input::-webkit-outer-spin-button,
|
|
80
|
+
input::-webkit-inner-spin-button{
|
|
81
|
+
-webkit-appearance:none;
|
|
82
|
+
margin:0;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
input{
|
|
86
|
+
-moz-appearance:textfield;
|
|
87
|
+
}
|
|
73
88
|
`,
|
|
74
89
|
];
|
|
75
90
|
}
|
|
76
91
|
renderControl() {
|
|
77
92
|
var _a, _b;
|
|
93
|
+
if (this.layout === 'summary-item')
|
|
94
|
+
return this.__renderSummaryItemLayout();
|
|
78
95
|
const value = ((_a = this._value) !== null && _a !== void 0 ? _a : '');
|
|
79
96
|
const count = parseFloat(this.__i18n.parseValue(value)[0]);
|
|
80
97
|
const items = this.options.map(({ value, label }) => ({
|
|
@@ -128,5 +145,115 @@ vaadin-combo-box::part(text-field){
|
|
|
128
145
|
if (field && field.value !== this._value)
|
|
129
146
|
field.value = ((_a = this._value) !== null && _a !== void 0 ? _a : '');
|
|
130
147
|
}
|
|
148
|
+
__renderSummaryItemLayout() {
|
|
149
|
+
var _a, _b;
|
|
150
|
+
const value = ((_a = this._value) !== null && _a !== void 0 ? _a : '');
|
|
151
|
+
const [strCount, units] = this.__i18n.parseValue(value);
|
|
152
|
+
const count = parseFloat(strCount);
|
|
153
|
+
const selection = this._value === '.5m' && !this.allowTwiceAMonth
|
|
154
|
+
? undefined
|
|
155
|
+
: this.options.find(v => v.value === units);
|
|
156
|
+
return html `
|
|
157
|
+
<div class="flex items-start gap-m leading-xs">
|
|
158
|
+
<div>
|
|
159
|
+
<label class="text-m text-body" for="input">${this.label}</label>
|
|
160
|
+
<p class="text-s text-secondary">${this.helperText}</p>
|
|
161
|
+
<p class="text-s text-error" ?hidden=${this.disabled || this.readonly}>
|
|
162
|
+
${this._errorMessage}
|
|
163
|
+
</p>
|
|
164
|
+
</div>
|
|
165
|
+
|
|
166
|
+
<div class="flex-1 flex items-center gap-xs">
|
|
167
|
+
<input
|
|
168
|
+
placeholder=${this.placeholder}
|
|
169
|
+
inputmode="numeric"
|
|
170
|
+
style="min-width: 10ch"
|
|
171
|
+
class=${classMap({
|
|
172
|
+
'w-full appearance-none text-right bg-transparent transition-colors': true,
|
|
173
|
+
'text-m rounded-s focus-outline-none': true,
|
|
174
|
+
'text-secondary': this.readonly,
|
|
175
|
+
'text-disabled': this.disabled,
|
|
176
|
+
'font-medium': !this.readonly,
|
|
177
|
+
})}
|
|
178
|
+
type="number"
|
|
179
|
+
step="1"
|
|
180
|
+
min="1"
|
|
181
|
+
max=${ifDefined((_b = this.max) !== null && _b !== void 0 ? _b : void 0)}
|
|
182
|
+
id="input"
|
|
183
|
+
.value=${value === '.5m' ? (this.allowTwiceAMonth ? 2 : '') : count}
|
|
184
|
+
?disabled=${this.disabled}
|
|
185
|
+
?readonly=${this.readonly}
|
|
186
|
+
@keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
|
|
187
|
+
@input=${(evt) => {
|
|
188
|
+
evt.stopPropagation();
|
|
189
|
+
const input = evt.currentTarget;
|
|
190
|
+
this._value = this.__i18n.formatValue([input.value, units]);
|
|
191
|
+
}}
|
|
192
|
+
/>
|
|
193
|
+
|
|
194
|
+
<div
|
|
195
|
+
class=${classMap({
|
|
196
|
+
'relative rounded-s transition-colors transition-opacity': true,
|
|
197
|
+
'focus-within-ring-2 focus-within-ring-primary-50': !this.disabled && !this.readonly,
|
|
198
|
+
'text-body hover-opacity-80 cursor-pointer': !this.disabled && !this.readonly,
|
|
199
|
+
'text-secondary': this.readonly,
|
|
200
|
+
'text-disabled': this.disabled,
|
|
201
|
+
'font-medium': !this.readonly,
|
|
202
|
+
})}
|
|
203
|
+
>
|
|
204
|
+
<div class="flex items-center gap-xs">
|
|
205
|
+
<div class="whitespace-nowrap">
|
|
206
|
+
${value === '.5m'
|
|
207
|
+
? this.t('times_a_month')
|
|
208
|
+
: selection
|
|
209
|
+
? this.t(selection.label, { count })
|
|
210
|
+
: this.t('select')}
|
|
211
|
+
</div>
|
|
212
|
+
${this.readonly
|
|
213
|
+
? ''
|
|
214
|
+
: svg `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" style="width: 1em; height: 1em; transform: scale(1.25)"><path fill-rule="evenodd" d="M10.53 3.47a.75.75 0 0 0-1.06 0L6.22 6.72a.75.75 0 0 0 1.06 1.06L10 5.06l2.72 2.72a.75.75 0 1 0 1.06-1.06l-3.25-3.25Zm-4.31 9.81 3.25 3.25a.75.75 0 0 0 1.06 0l3.25-3.25a.75.75 0 1 0-1.06-1.06L10 14.94l-2.72-2.72a.75.75 0 0 0-1.06 1.06Z" clip-rule="evenodd" /></svg>`}
|
|
215
|
+
</div>
|
|
216
|
+
|
|
217
|
+
<select
|
|
218
|
+
class=${classMap({
|
|
219
|
+
'absolute inset-0 opacity-0': true,
|
|
220
|
+
'cursor-pointer': !this.disabled && !this.readonly,
|
|
221
|
+
})}
|
|
222
|
+
id="select"
|
|
223
|
+
?disabled=${this.disabled}
|
|
224
|
+
?hidden=${this.readonly}
|
|
225
|
+
@change=${(evt) => {
|
|
226
|
+
evt.stopPropagation();
|
|
227
|
+
const value = evt.currentTarget.value;
|
|
228
|
+
if (value === 'times_a_month') {
|
|
229
|
+
this._value = '.5m';
|
|
230
|
+
}
|
|
231
|
+
else {
|
|
232
|
+
this._value = this.__i18n.formatValue([count, value]);
|
|
233
|
+
}
|
|
234
|
+
}}
|
|
235
|
+
>
|
|
236
|
+
<option value="" ?selected=${!selection} disabled hidden>${this.t('select')}</option>
|
|
237
|
+
${this.allowTwiceAMonth && (count === 2 || value === '.5m')
|
|
238
|
+
? html `
|
|
239
|
+
<option value="times_a_month" ?selected=${value === '.5m'}>
|
|
240
|
+
${this.t('times_a_month')}
|
|
241
|
+
</option>
|
|
242
|
+
`
|
|
243
|
+
: ''}
|
|
244
|
+
${this.options.map(option => html `
|
|
245
|
+
<option
|
|
246
|
+
value=${option.value}
|
|
247
|
+
?selected=${value !== '.5m' && option.value === (selection === null || selection === void 0 ? void 0 : selection.value)}
|
|
248
|
+
>
|
|
249
|
+
${this.t(option.label, { count })}
|
|
250
|
+
</option>
|
|
251
|
+
`)}
|
|
252
|
+
</select>
|
|
253
|
+
</div>
|
|
254
|
+
</div>
|
|
255
|
+
</div>
|
|
256
|
+
`;
|
|
257
|
+
}
|
|
131
258
|
}
|
|
132
259
|
//# sourceMappingURL=InternalFrequencyControl.js.map
|