@foxy.io/elements 1.28.0 → 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 +5 -5
- 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 +57 -1
- 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-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +2 -2
- package/dist/cdn/foxy-customer.js +4 -4
- 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 +2 -2
- 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 +3 -3
- 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-nucleon-element.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-payments-api.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 +5 -5
- 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 +7 -7
- 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-c2128988.js → shared-01b2cad8.js} +1 -1
- package/dist/cdn/{shared-fad783a0.js → shared-021c7a22.js} +1 -1
- package/dist/cdn/{shared-f2335b72.js → shared-075796e2.js} +2 -2
- package/dist/cdn/{shared-fee535ca.js → shared-0b01f721.js} +1 -1
- package/dist/cdn/{shared-701157ac.js → shared-0f6e4584.js} +1 -1
- package/dist/cdn/{shared-414a0c9b.js → shared-10325cda.js} +1 -1
- package/dist/cdn/{shared-9f44b81f.js → shared-10b5e78f.js} +1 -1
- package/dist/cdn/{shared-042969fe.js → shared-12a7a15d.js} +1 -1
- package/dist/cdn/{shared-9ee719e6.js → shared-12ac8cc6.js} +1 -1
- package/dist/cdn/{shared-57e4bcb0.js → shared-1cf1e1a4.js} +1 -1
- package/dist/cdn/{shared-7004839c.js → shared-2099544a.js} +2 -2
- package/dist/cdn/{shared-cbeb8587.js → shared-24d71d01.js} +1 -1
- package/dist/cdn/shared-292ba15e.js +1 -0
- package/dist/cdn/{shared-850e441a.js → shared-2a71795e.js} +1 -1
- package/dist/cdn/{shared-c0e56e97.js → shared-2d723710.js} +1 -1
- package/dist/cdn/{shared-58095d4b.js → shared-2fc671cd.js} +1 -1
- package/dist/cdn/{shared-cfdd6c21.js → shared-30221a16.js} +1 -1
- package/dist/cdn/{shared-e4cc1191.js → shared-303b428e.js} +1 -1
- package/dist/cdn/{shared-44b101d0.js → shared-339bbd50.js} +1 -1
- package/dist/cdn/{shared-cf9c48f9.js → shared-39a33102.js} +1 -1
- package/dist/cdn/{shared-0ed41a9e.js → shared-3e03c988.js} +1 -1
- package/dist/cdn/{shared-66084f2e.js → shared-3fa791ca.js} +1 -1
- package/dist/cdn/{shared-a28c9952.js → shared-4993a79d.js} +1 -1
- package/dist/cdn/shared-4c2d43e6.js +1 -0
- package/dist/cdn/{shared-ecec6a10.js → shared-522a172d.js} +1 -1
- package/dist/cdn/{shared-f300193c.js → shared-558bc894.js} +1 -1
- package/dist/cdn/{shared-b44cf5a9.js → shared-5c05ac06.js} +1 -1
- package/dist/cdn/shared-61f4e91a.js +1 -0
- package/dist/cdn/{shared-ec696e1b.js → shared-634b670e.js} +1 -1
- package/dist/cdn/{shared-25c57c74.js → shared-644ee296.js} +1 -1
- package/dist/cdn/shared-6474675f.js +1 -0
- package/dist/cdn/{shared-24586cfb.js → shared-6a4e81ad.js} +1 -1
- package/dist/cdn/{shared-bb35ee61.js → shared-6ac0d05e.js} +1 -1
- package/dist/cdn/{shared-7063f5af.js → shared-6d645dc5.js} +1 -1
- package/dist/cdn/shared-6e355777.js +1 -0
- package/dist/cdn/shared-7026fb08.js +1 -0
- package/dist/cdn/shared-70a5fad6.js +1 -0
- package/dist/cdn/{shared-a79dbeb9.js → shared-72c61f43.js} +1 -1
- package/dist/cdn/{shared-484b31eb.js → shared-72f41a65.js} +1 -1
- package/dist/cdn/shared-77051754.js +1 -0
- package/dist/cdn/{shared-789e3185.js → shared-77c4acdd.js} +1 -1
- package/dist/cdn/{shared-1708eb3c.js → shared-797ba64a.js} +1 -1
- package/dist/cdn/shared-7b8ad9c1.js +1 -0
- package/dist/cdn/shared-7ce91c80.js +1 -0
- package/dist/cdn/{shared-b3681c71.js → shared-7fd9a30f.js} +1 -1
- package/dist/cdn/{shared-ba5c9c0b.js → shared-81d3a9ae.js} +1 -1
- package/dist/cdn/{shared-80b9cb48.js → shared-876a4341.js} +1 -1
- package/dist/cdn/shared-8c1df97c.js +1 -0
- package/dist/cdn/{shared-add044d3.js → shared-8f7a31e0.js} +2 -2
- package/dist/cdn/{shared-49d678ad.js → shared-91f5e0b3.js} +1 -1
- package/dist/cdn/{shared-059680a0.js → shared-9a90a24e.js} +1 -1
- package/dist/cdn/shared-9db46672.js +1 -0
- package/dist/cdn/{shared-23061fb2.js → shared-a036e345.js} +1 -1
- package/dist/cdn/{shared-baaa1e47.js → shared-a159ccff.js} +1 -1
- package/dist/cdn/shared-a6273e4a.js +1 -0
- package/dist/cdn/{shared-f91d5706.js → shared-abea5e34.js} +1 -1
- package/dist/cdn/{shared-ae200b9f.js → shared-acdcae7e.js} +1 -1
- package/dist/cdn/{shared-80c6f97e.js → shared-aefac46b.js} +1 -1
- package/dist/cdn/{shared-fd410dee.js → shared-b6814728.js} +2 -2
- package/dist/cdn/{shared-293f9c07.js → shared-b731dfc5.js} +1 -1
- package/dist/cdn/{shared-2782886e.js → shared-b98b8d02.js} +1 -1
- package/dist/cdn/{shared-32cac4bd.js → shared-bdd4fbbb.js} +3 -3
- package/dist/cdn/shared-c286c5ad.js +1 -0
- package/dist/cdn/shared-cbb0e610.js +1 -0
- package/dist/cdn/{shared-4761504a.js → shared-cc79152c.js} +1 -1
- package/dist/cdn/{shared-2e6bda84.js → shared-d464d078.js} +1 -1
- package/dist/cdn/shared-d4810405.js +1 -0
- package/dist/cdn/{shared-41d57c3b.js → shared-d6010c96.js} +1 -1
- package/dist/cdn/{shared-c4f5b03b.js → shared-df00a537.js} +1 -1
- package/dist/cdn/{shared-db108ddb.js → shared-e2a61f69.js} +1 -1
- package/dist/cdn/{shared-59d8b64e.js → shared-e5d37737.js} +1 -1
- package/dist/cdn/{shared-a4e0a78b.js → shared-e6e84ff5.js} +1 -1
- package/dist/cdn/{shared-fbfa45bb.js → shared-ee36b83f.js} +1 -1
- package/dist/cdn/{shared-6d1556a0.js → shared-f1d2b5bb.js} +1 -1
- package/dist/cdn/{shared-aac73acd.js → shared-f22f22ae.js} +1 -1
- package/dist/cdn/{shared-ae462b8e.js → shared-f5366dda.js} +1 -1
- package/dist/cdn/{shared-a5c48bf4.js → shared-f7a1193f.js} +1 -1
- package/dist/cdn/{shared-a05fe56c.js → shared-fa9e5c7f.js} +1 -1
- package/dist/cdn/{shared-a08d509a.js → shared-fb56178f.js} +1 -1
- package/dist/cdn/{shared-5c1e607b.js → shared-fe77f6f6.js} +1 -1
- package/dist/cdn/{shared-bba917bf.js → shared-ff63a551.js} +1 -1
- package/dist/cdn/{shared-4b209827.js → shared-ffd3690b.js} +1 -1
- package/dist/cdn/translations/address-form/en.json +3 -3
- package/dist/cdn/translations/admin-subscription-form/en.json +1840 -0
- package/dist/cdn/translations/api-browser/en.json +2 -5
- package/dist/cdn/translations/cart-form/en.json +598 -169
- package/dist/cdn/translations/customer/en.json +3 -3
- package/dist/cdn/translations/item-form/en.json +0 -1
- package/dist/cdn/translations/transaction/en.json +0 -1
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js +2 -1
- package/dist/elements/internal/InternalCalendar/InternalCalendar.js.map +1 -1
- package/dist/elements/internal/InternalCard/InternalCard.js +1 -1
- package/dist/elements/internal/InternalCard/InternalCard.js.map +1 -1
- package/dist/elements/internal/InternalControl/InternalControl.d.ts +1 -0
- package/dist/elements/internal/InternalControl/InternalControl.js +10 -7
- package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -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.d.ts +2 -0
- package/dist/elements/internal/InternalForm/InternalForm.js +26 -29
- 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 +11 -1
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js +115 -20
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js.map +1 -1
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControlForm.js +0 -4
- package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControlForm.js.map +1 -1
- package/dist/elements/internal/InternalResourcePickerControl/index.d.ts +2 -0
- package/dist/elements/internal/InternalResourcePickerControl/index.js +2 -0
- package/dist/elements/internal/InternalResourcePickerControl/index.js.map +1 -1
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.d.ts +4 -1
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js +70 -2
- package/dist/elements/internal/InternalSelectControl/InternalSelectControl.js.map +1 -1
- package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.d.ts +8 -0
- package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js +28 -0
- package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js.map +1 -0
- package/dist/elements/internal/InternalSummaryControl/index.d.ts +4 -0
- package/dist/elements/internal/InternalSummaryControl/index.js +6 -0
- package/dist/elements/internal/InternalSummaryControl/index.js.map +1 -0
- package/dist/elements/internal/InternalSwitchControl/InternalSwitchControl.d.ts +7 -0
- package/dist/elements/internal/InternalSwitchControl/InternalSwitchControl.js +75 -0
- package/dist/elements/internal/InternalSwitchControl/InternalSwitchControl.js.map +1 -0
- package/dist/elements/internal/InternalSwitchControl/index.d.ts +4 -0
- package/dist/elements/internal/InternalSwitchControl/index.js +6 -0
- package/dist/elements/internal/InternalSwitchControl/index.js.map +1 -0
- package/dist/elements/internal/InternalTextControl/InternalTextControl.d.ts +4 -1
- package/dist/elements/internal/InternalTextControl/InternalTextControl.js +74 -1
- package/dist/elements/internal/InternalTextControl/InternalTextControl.js.map +1 -1
- package/dist/elements/private/Dialog/Dialog.js +1 -1
- package/dist/elements/private/Dialog/Dialog.js.map +1 -1
- package/dist/elements/public/AddressForm/AddressForm.d.ts +1 -1
- package/dist/elements/public/AddressForm/AddressForm.js +5 -5
- package/dist/elements/public/AddressForm/AddressForm.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/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js +4 -1
- package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js.map +1 -1
- package/dist/elements/public/AttributeCard/AttributeCard.js +3 -4
- package/dist/elements/public/AttributeCard/AttributeCard.js.map +1 -1
- package/dist/elements/public/CartForm/CartForm.d.ts +18 -35
- package/dist/elements/public/CartForm/CartForm.js +265 -501
- package/dist/elements/public/CartForm/CartForm.js.map +1 -1
- package/dist/elements/public/CartForm/index.d.ts +10 -5
- package/dist/elements/public/CartForm/index.js +10 -5
- package/dist/elements/public/CartForm/index.js.map +1 -1
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/InternalCartFormAddressSummaryItem.d.ts +33 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/InternalCartFormAddressSummaryItem.js +293 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/InternalCartFormAddressSummaryItem.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/index.d.ts +7 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/index.js +9 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/index.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/style.d.ts +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/style.js +58 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/style.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/types.d.ts +11 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/types.js +2 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormAddressSummaryItem/types.js.map +1 -0
- package/dist/elements/public/CartForm/internal/{InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.d.ts → InternalCartFormCreateSessionAction/InternalCartFormCreateSessionAction.d.ts} +1 -1
- package/dist/elements/public/CartForm/internal/{InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js → InternalCartFormCreateSessionAction/InternalCartFormCreateSessionAction.js} +5 -5
- package/dist/elements/public/CartForm/internal/InternalCartFormCreateSessionAction/InternalCartFormCreateSessionAction.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormCreateSessionAction/index.d.ts +4 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormCreateSessionAction/index.js +6 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormCreateSessionAction/index.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/InternalCartFormPaymentMethodCard.d.ts +6 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/InternalCartFormPaymentMethodCard.js +35 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/InternalCartFormPaymentMethodCard.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/index.d.ts +4 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/index.js +6 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/index.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/types.d.ts +5 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/types.js +2 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodCard/types.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/InternalCartFormPaymentMethodForm.d.ts +13 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/InternalCartFormPaymentMethodForm.js +68 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/InternalCartFormPaymentMethodForm.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/index.d.ts +6 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/index.js +8 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/index.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/types.d.ts +5 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/types.js +2 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormPaymentMethodForm/types.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/InternalCartFormTotalsControl.d.ts +9 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/InternalCartFormTotalsControl.js +91 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/InternalCartFormTotalsControl.js.map +1 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/index.d.ts +5 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/index.js +7 -0
- package/dist/elements/public/CartForm/internal/InternalCartFormTotalsControl/index.js.map +1 -0
- package/dist/elements/public/CartForm/types.d.ts +11 -1
- package/dist/elements/public/CartForm/types.js.map +1 -1
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js +1 -1
- package/dist/elements/public/CustomFieldCard/TwoLineCard.js.map +1 -1
- package/dist/elements/public/FormDialog/FormDialog.d.ts +2 -0
- package/dist/elements/public/FormDialog/FormDialog.js +9 -6
- 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 +18 -6
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-004fc193.js +0 -1
- package/dist/cdn/shared-08d018f5.js +0 -1
- package/dist/cdn/shared-0da6e42c.js +0 -1
- package/dist/cdn/shared-0e038fda.js +0 -1
- package/dist/cdn/shared-1d8edd03.js +0 -1
- package/dist/cdn/shared-365c8437.js +0 -1
- package/dist/cdn/shared-421708b0.js +0 -1
- package/dist/cdn/shared-57266e2a.js +0 -1
- package/dist/cdn/shared-5cb6aca6.js +0 -1
- package/dist/cdn/shared-6740ee7a.js +0 -1
- package/dist/cdn/shared-7af96c0a.js +0 -1
- package/dist/cdn/shared-824d0804.js +0 -1
- package/dist/cdn/shared-8f0251e9.js +0 -1
- package/dist/cdn/shared-b42c6fe3.js +0 -1
- package/dist/cdn/shared-b6376c8f.js +0 -1
- package/dist/cdn/shared-d82f9e35.js +0 -1
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/InternalCartFormViewAsCustomerControl.js.map +0 -1
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.d.ts +0 -4
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js +0 -6
- package/dist/elements/public/CartForm/internal/InternalCartFormViewAsCustomerControl/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,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;IAkO/B,CAAC;IA1OC,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;;;;;;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,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,MAAM,eAAe,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;YACjE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACnE,MAAM,WAAW,GAAG,QAAQ,CAAC,EAAE,oBAAoB,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,eAAe,EAAE,CAAC,CAAC;YAE5F,OAAO,IAAI,CAAA;;UAEP,CAAC,cAAc,IAAI,eAAe;gBAClC,CAAC,CAAC,IAAI,CAAA;;;;oDAIoC,WAAW;;sDAET,WAAW;;;aAGpD;gBACH,CAAC,CAAC,EAAE;OACP,CAAC;SACH;aAAM;YACL,OAAO,IAAI,CAAA;;;;;OAKV,CAAC;SACH;IACH,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;;AA5OD,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 { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { getResourceId } from '@foxy.io/sdk/core';\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 /**\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 if (this.data) {\n const isSnapshotDirty = this.in({ idle: { snapshot: 'dirty' } });\n const isDeleteHidden = this.hiddenSelector.matches('delete', true);\n const actionClass = classMap({ 'transition-opacity': true, 'opacity-0': !isSnapshotDirty });\n\n return html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n ${!isDeleteHidden || isSnapshotDirty\n ? html`\n <div class=\"flex gap-s\">\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n <div class=\"w-full\"></div>\n <foxy-internal-undo-control class=${actionClass} infer=\"undo\">\n </foxy-internal-undo-control>\n <foxy-internal-submit-control class=${actionClass} infer=\"submit\">\n </foxy-internal-submit-control>\n </div>\n `\n : ''}\n `;\n } else {\n return html`\n <div class=\"flex\">\n <foxy-internal-submit-control infer=\"create\" theme=\"primary success\" class=\"ml-auto\">\n </foxy-internal-submit-control>\n </div>\n `;\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":"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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', '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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { css, html } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { attribute: false },\n max: { type: Number },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n `,\n ];\n }\n\n options = [\n { value: 'd', label: 'day' },\n { value: 'w', label: 'week' },\n { value: 'm', label: 'month' },\n { value: 'y', label: 'year' },\n ];\n\n max: number | null = 999;\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const normalizedValue = value.startsWith('.') ? `0${value}` : value;\n const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));\n const units = normalizedValue[normalizedValue.length - 1] ?? '';\n\n return isNaN(count) ? ['0', ''] : [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n const value = (this._value ?? '') as string;\n const count = parseFloat(this.__i18n.parseValue(value)[0] as string);\n const items = this.options.map(({ value, label }) => ({\n label: this.t(label, { count }),\n value,\n }));\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=${ifDefined(this.max || undefined)}\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${items}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.querySelector('vaadin-custom-field');\n if (field && field.value !== this._value) field.value = (this._value ?? '') as string;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"InternalFrequencyControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalFrequencyControl/InternalFrequencyControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CustomFieldElement, CustomFieldI18n } from '@vaadin/vaadin-custom-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { css, html, svg } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\n\n/**\n * Internal control displaying a custom field for frequency input.\n *\n * @since 1.17.0\n * @element foxy-internal-frequency-control\n */\nexport class InternalFrequencyControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n allowTwiceAMonth: { type: Boolean, attribute: 'allow-twice-a-month' },\n options: { attribute: false },\n layout: {},\n max: { type: Number },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n :host {\n display: block;\n }\n\n vaadin-custom-field {\n width: 100%;\n font-size: 0;\n line-height: 0;\n padding-top: 0 !important;\n }\n\n vaadin-custom-field::part(label) {\n padding-bottom: var(--lumo-space-s);\n }\n\n vaadin-custom-field::part(error-message)[aria-hidden='false'] {\n padding-top: var(--lumo-space-xs);\n }\n\n vaadin-integer-field,\n vaadin-combo-box {\n width: calc(50% - (var(--lumo-space-s) / 2));\n }\n\n vaadin-integer-field {\n margin-right: var(--lumo-space-s);\n padding: 0;\n }\n\n vaadin-combo-box::part(text-field) {\n padding: 0;\n }\n\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input {\n -moz-appearance: textfield;\n }\n `,\n ];\n }\n\n allowTwiceAMonth = false;\n\n options = [\n { value: 'd', label: 'day' },\n { value: 'w', label: 'week' },\n { value: 'm', label: 'month' },\n { value: 'y', label: 'year' },\n ];\n\n layout: 'summary-item' | 'standalone' | null = null;\n\n max: number | null = 999;\n\n private __i18n: CustomFieldI18n = {\n formatValue: inputValues => inputValues.join(''),\n parseValue: value => {\n const normalizedValue = value.startsWith('.') ? `0${value}` : value;\n const count = parseFloat(value.substring(0, Math.max(normalizedValue.length - 1, 0)));\n const units = normalizedValue[normalizedValue.length - 1] ?? '';\n\n return isNaN(count) ? ['0', ''] : [count.toString(), units];\n },\n };\n\n renderControl(): TemplateResult {\n if (this.layout === 'summary-item') return this.__renderSummaryItemLayout();\n\n const value = (this._value ?? '') as string;\n const count = parseFloat(this.__i18n.parseValue(value)[0] as string);\n const items = this.options.map(({ value, label }) => ({\n label: this.t(label, { count }),\n value,\n }));\n\n return html`\n <vaadin-custom-field\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .errorMessage=${this._errorMessage ?? ''}\n .helperText=${this.helperText}\n .label=${this.label}\n .value=${value}\n .i18n=${this.__i18n}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as CustomFieldElement;\n this._value = field.value as string;\n }}\n >\n <vaadin-integer-field\n max=${ifDefined(this.max || undefined)}\n min=\"1\"\n prevent-invalid-input\n has-controls\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-integer-field>\n\n <vaadin-combo-box\n item-value-path=\"value\"\n item-label-path=\"label\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n ?invalid=${!this._checkValidity()}\n .items=${items}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n >\n </vaadin-combo-box>\n </vaadin-custom-field>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n const field = this.renderRoot.querySelector('vaadin-custom-field');\n if (field && field.value !== this._value) field.value = (this._value ?? '') as string;\n }\n\n private __renderSummaryItemLayout() {\n const value = (this._value ?? '') as string;\n const [strCount, units] = this.__i18n.parseValue(value);\n const count = parseFloat(strCount as string);\n const selection =\n this._value === '.5m' && !this.allowTwiceAMonth\n ? undefined\n : this.options.find(v => v.value === units);\n\n return html`\n <div class=\"flex items-start gap-m leading-xs\">\n <div>\n <label class=\"text-m text-body\" for=\"input\">${this.label}</label>\n <p class=\"text-s text-secondary\">${this.helperText}</p>\n <p class=\"text-s text-error\" ?hidden=${this.disabled || this.readonly}>\n ${this._errorMessage}\n </p>\n </div>\n\n <div class=\"flex-1 flex items-center gap-xs\">\n <input\n placeholder=${this.placeholder}\n inputmode=\"numeric\"\n style=\"min-width: 10ch\"\n class=${classMap({\n 'w-full appearance-none text-right bg-transparent transition-colors': true,\n 'text-m rounded-s focus-outline-none': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'font-medium': !this.readonly,\n })}\n type=\"number\"\n step=\"1\"\n min=\"1\"\n max=${ifDefined(this.max ?? void 0)}\n id=\"input\"\n .value=${value === '.5m' ? (this.allowTwiceAMonth ? 2 : '') : count}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @input=${(evt: Event) => {\n evt.stopPropagation();\n const input = evt.currentTarget as HTMLInputElement;\n this._value = this.__i18n.formatValue([input.value, units]);\n }}\n />\n\n <div\n class=${classMap({\n 'relative rounded-s transition-colors transition-opacity': true,\n 'focus-within-ring-2 focus-within-ring-primary-50': !this.disabled && !this.readonly,\n 'text-body hover-opacity-80 cursor-pointer': !this.disabled && !this.readonly,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'font-medium': !this.readonly,\n })}\n >\n <div class=\"flex items-center gap-xs\">\n <div class=\"whitespace-nowrap\">\n ${value === '.5m'\n ? this.t('times_a_month')\n : selection\n ? this.t(selection.label, { count })\n : this.t('select')}\n </div>\n ${this.readonly\n ? ''\n : 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>`}\n </div>\n\n <select\n class=${classMap({\n 'absolute inset-0 opacity-0': true,\n 'cursor-pointer': !this.disabled && !this.readonly,\n })}\n id=\"select\"\n ?disabled=${this.disabled}\n ?hidden=${this.readonly}\n @change=${(evt: Event) => {\n evt.stopPropagation();\n const value = (evt.currentTarget as HTMLSelectElement).value;\n if (value === 'times_a_month') {\n this._value = '.5m';\n } else {\n this._value = this.__i18n.formatValue([count, value]);\n }\n }}\n >\n <option value=\"\" ?selected=${!selection} disabled hidden>${this.t('select')}</option>\n ${this.allowTwiceAMonth && (count === 2 || value === '.5m')\n ? html`\n <option value=\"times_a_month\" ?selected=${value === '.5m'}>\n ${this.t('times_a_month')}\n </option>\n `\n : ''}\n ${this.options.map(\n option =>\n html`\n <option\n value=${option.value}\n ?selected=${value !== '.5m' && option.value === selection?.value}\n >\n ${this.t(option.label, { count })}\n </option>\n `\n )}\n </select>\n </div>\n </div>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
1
|
+
import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
2
2
|
import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
|
|
3
3
|
/**
|
|
4
4
|
* Internal control displaying a basic number box.
|
|
@@ -8,9 +8,12 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class InternalNumberControl extends InternalEditableControl {
|
|
10
10
|
static get properties(): PropertyDeclarations;
|
|
11
|
+
static get styles(): CSSResultArray;
|
|
12
|
+
layout: 'summary-item' | 'standalone' | null;
|
|
11
13
|
prefix: string | null;
|
|
12
14
|
suffix: string | null;
|
|
13
15
|
min: number | null;
|
|
14
16
|
max: number | null;
|
|
15
17
|
renderControl(): TemplateResult;
|
|
18
|
+
private __renderSummaryItemLayout;
|
|
16
19
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
|
|
2
|
+
import { html, css, svg } from 'lit-element';
|
|
2
3
|
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
3
|
-
import {
|
|
4
|
+
import { classMap } from "../../../utils/class-map.js";
|
|
4
5
|
/**
|
|
5
6
|
* Internal control displaying a basic number box.
|
|
6
7
|
*
|
|
@@ -10,6 +11,7 @@ import { html } from 'lit-element';
|
|
|
10
11
|
export class InternalNumberControl extends InternalEditableControl {
|
|
11
12
|
constructor() {
|
|
12
13
|
super(...arguments);
|
|
14
|
+
this.layout = null;
|
|
13
15
|
this.prefix = null;
|
|
14
16
|
this.suffix = null;
|
|
15
17
|
this.min = null;
|
|
@@ -18,14 +20,32 @@ export class InternalNumberControl extends InternalEditableControl {
|
|
|
18
20
|
static get properties() {
|
|
19
21
|
return {
|
|
20
22
|
...super.properties,
|
|
23
|
+
layout: {},
|
|
21
24
|
prefix: {},
|
|
22
25
|
suffix: {},
|
|
23
26
|
min: { type: Number },
|
|
24
27
|
max: { type: Number },
|
|
25
28
|
};
|
|
26
29
|
}
|
|
30
|
+
static get styles() {
|
|
31
|
+
return [
|
|
32
|
+
...super.styles,
|
|
33
|
+
css `input::-webkit-outer-spin-button,
|
|
34
|
+
input::-webkit-inner-spin-button{
|
|
35
|
+
-webkit-appearance:none;
|
|
36
|
+
margin:0;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
input{
|
|
40
|
+
-moz-appearance:textfield;
|
|
41
|
+
}
|
|
42
|
+
`,
|
|
43
|
+
];
|
|
44
|
+
}
|
|
27
45
|
renderControl() {
|
|
28
46
|
var _a, _b;
|
|
47
|
+
if (this.layout === 'summary-item')
|
|
48
|
+
return this.__renderSummaryItemLayout();
|
|
29
49
|
return html `
|
|
30
50
|
<vaadin-number-field
|
|
31
51
|
error-message=${ifDefined(this._errorMessage)}
|
|
@@ -51,5 +71,77 @@ export class InternalNumberControl extends InternalEditableControl {
|
|
|
51
71
|
</vaadin-number-field>
|
|
52
72
|
`;
|
|
53
73
|
}
|
|
74
|
+
__renderSummaryItemLayout() {
|
|
75
|
+
var _a, _b;
|
|
76
|
+
const sharedTextStyles = {
|
|
77
|
+
'text-disabled': this.disabled,
|
|
78
|
+
'text-tertiary': !this.readonly && !this.disabled,
|
|
79
|
+
'font-medium': !this.readonly,
|
|
80
|
+
};
|
|
81
|
+
return html `
|
|
82
|
+
<div class="flex items-start gap-m leading-xs">
|
|
83
|
+
<div>
|
|
84
|
+
<label class="text-m text-body" for="input">${this.label}</label>
|
|
85
|
+
<p class="text-s text-secondary">${this.helperText}</p>
|
|
86
|
+
<p class="text-s text-error" ?hidden=${this.disabled || this.readonly}>
|
|
87
|
+
${this._errorMessage}
|
|
88
|
+
</p>
|
|
89
|
+
</div>
|
|
90
|
+
|
|
91
|
+
<div class="flex-1 flex items-center gap-xs">
|
|
92
|
+
<span class=${classMap({ 'text-secondary': this.readonly, ...sharedTextStyles })}>
|
|
93
|
+
${this.prefix}
|
|
94
|
+
</span>
|
|
95
|
+
|
|
96
|
+
<input
|
|
97
|
+
placeholder=${this.placeholder}
|
|
98
|
+
style="min-width: 10ch"
|
|
99
|
+
class=${classMap({
|
|
100
|
+
'w-full appearance-none text-right bg-transparent transition-colors': true,
|
|
101
|
+
'text-m rounded-s focus-outline-none': true,
|
|
102
|
+
'text-secondary': this.readonly,
|
|
103
|
+
'text-disabled': this.disabled,
|
|
104
|
+
'font-medium': !this.readonly,
|
|
105
|
+
})}
|
|
106
|
+
type="number"
|
|
107
|
+
min=${ifDefined((_a = this.min) !== null && _a !== void 0 ? _a : void 0)}
|
|
108
|
+
max=${ifDefined((_b = this.max) !== null && _b !== void 0 ? _b : void 0)}
|
|
109
|
+
id="input"
|
|
110
|
+
.value=${this._value}
|
|
111
|
+
?disabled=${this.disabled}
|
|
112
|
+
?readonly=${this.readonly}
|
|
113
|
+
@keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
|
|
114
|
+
@input=${(evt) => {
|
|
115
|
+
evt.stopPropagation();
|
|
116
|
+
this._value = evt.target.value;
|
|
117
|
+
}}
|
|
118
|
+
/>
|
|
119
|
+
|
|
120
|
+
<span class=${classMap({ 'text-secondary': this.readonly, ...sharedTextStyles })}>
|
|
121
|
+
${this.suffix}
|
|
122
|
+
</span>
|
|
123
|
+
|
|
124
|
+
<button
|
|
125
|
+
aria-label=${this.t('clear')}
|
|
126
|
+
class=${classMap({
|
|
127
|
+
'flex-shrink-0 rounded-full transition-colors': true,
|
|
128
|
+
'focus-outline-none focus-ring-2 focus-ring-primary-50': true,
|
|
129
|
+
'cursor-pointer text-tertiary hover-text-body': !this.disabled,
|
|
130
|
+
'cursor-default text-disabled': this.disabled,
|
|
131
|
+
})}
|
|
132
|
+
style="width: 1em; height: 1em;"
|
|
133
|
+
?disabled=${this.disabled}
|
|
134
|
+
?hidden=${this.readonly}
|
|
135
|
+
@click=${() => {
|
|
136
|
+
this._value = 0;
|
|
137
|
+
this.dispatchEvent(new CustomEvent('clear'));
|
|
138
|
+
}}
|
|
139
|
+
>
|
|
140
|
+
${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); margin-right: -0.16em"><path d="M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z" /></svg>`}
|
|
141
|
+
</button>
|
|
142
|
+
</div>
|
|
143
|
+
</div>
|
|
144
|
+
`;
|
|
145
|
+
}
|
|
54
146
|
}
|
|
55
147
|
//# sourceMappingURL=InternalNumberControl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalNumberControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalNumberControl/InternalNumberControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"InternalNumberControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalNumberControl/InternalNumberControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NumberFieldElement } from '@vaadin/vaadin-text-field/vaadin-number-field';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { html, css, svg } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\n\n/**\n * Internal control displaying a basic number box.\n *\n * @since 1.17.0\n * @element foxy-internal-number-control\n */\nexport class InternalNumberControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n layout: {},\n prefix: {},\n suffix: {},\n min: { type: Number },\n max: { type: Number },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n ...super.styles,\n css`\n input::-webkit-outer-spin-button,\n input::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n\n input {\n -moz-appearance: textfield;\n }\n `,\n ];\n }\n\n layout: 'summary-item' | 'standalone' | null = null;\n\n prefix: string | null = null;\n\n suffix: string | null = null;\n\n min: number | null = null;\n\n max: number | null = null;\n\n renderControl(): TemplateResult {\n if (this.layout === 'summary-item') return this.__renderSummaryItemLayout();\n\n return html`\n <vaadin-number-field\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n min=${ifDefined(this.min ?? undefined)}\n max=${ifDefined(this.max ?? undefined)}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${this._value}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as NumberFieldElement;\n this._value = parseFloat(field.value);\n }}\n >\n ${this.prefix ? html`<div slot=\"prefix\">${this.prefix}</div>` : ''}\n ${this.suffix ? html`<div class=\"pr-s font-medium\" slot=\"suffix\">${this.suffix}</div>` : ''}\n </vaadin-number-field>\n `;\n }\n\n private __renderSummaryItemLayout() {\n const sharedTextStyles = {\n 'text-disabled': this.disabled,\n 'text-tertiary': !this.readonly && !this.disabled,\n 'font-medium': !this.readonly,\n };\n return html`\n <div class=\"flex items-start gap-m leading-xs\">\n <div>\n <label class=\"text-m text-body\" for=\"input\">${this.label}</label>\n <p class=\"text-s text-secondary\">${this.helperText}</p>\n <p class=\"text-s text-error\" ?hidden=${this.disabled || this.readonly}>\n ${this._errorMessage}\n </p>\n </div>\n\n <div class=\"flex-1 flex items-center gap-xs\">\n <span class=${classMap({ 'text-secondary': this.readonly, ...sharedTextStyles })}>\n ${this.prefix}\n </span>\n\n <input\n placeholder=${this.placeholder}\n style=\"min-width: 10ch\"\n class=${classMap({\n 'w-full appearance-none text-right bg-transparent transition-colors': true,\n 'text-m rounded-s focus-outline-none': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'font-medium': !this.readonly,\n })}\n type=\"number\"\n min=${ifDefined(this.min ?? void 0)}\n max=${ifDefined(this.max ?? void 0)}\n id=\"input\"\n .value=${this._value}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @input=${(evt: Event) => {\n evt.stopPropagation();\n this._value = (evt.target as HTMLInputElement).value;\n }}\n />\n\n <span class=${classMap({ 'text-secondary': this.readonly, ...sharedTextStyles })}>\n ${this.suffix}\n </span>\n\n <button\n aria-label=${this.t('clear')}\n class=${classMap({\n 'flex-shrink-0 rounded-full transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer text-tertiary hover-text-body': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n })}\n style=\"width: 1em; height: 1em;\"\n ?disabled=${this.disabled}\n ?hidden=${this.readonly}\n @click=${() => {\n this._value = 0;\n this.dispatchEvent(new CustomEvent('clear'));\n }}\n >\n ${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); margin-right: -0.16em\"><path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" /></svg>`}\n </button>\n </div>\n </div>\n `;\n }\n}\n"]}
|
package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.d.ts
CHANGED
|
@@ -1,16 +1,26 @@
|
|
|
1
1
|
import type { PropertyDeclarations, TemplateResult } from 'lit-element';
|
|
2
|
+
import type { HALJSONResource } from '../../public/NucleonElement/types';
|
|
3
|
+
import type { FormRenderer } from '../../public/FormDialog/types';
|
|
2
4
|
import type { Option } from '../../public/QueryBuilder/types';
|
|
3
5
|
import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
|
|
6
|
+
declare type DisplayValueOptionsCb = (resource: HALJSONResource) => Record<string, unknown>;
|
|
4
7
|
export declare class InternalResourcePickerControl extends InternalEditableControl {
|
|
5
8
|
static get properties(): PropertyDeclarations;
|
|
9
|
+
getDisplayValueOptions: DisplayValueOptionsCb;
|
|
6
10
|
virtualHost: string;
|
|
11
|
+
formProps: Record<string, unknown>;
|
|
7
12
|
filters: Option[];
|
|
13
|
+
layout: 'summary-item' | 'standalone' | null;
|
|
8
14
|
first: string | null;
|
|
9
15
|
item: string | null;
|
|
16
|
+
form: string | null | FormRenderer;
|
|
10
17
|
private readonly __getItemRenderer;
|
|
11
18
|
renderControl(): TemplateResult;
|
|
12
19
|
updated(changes: Map<keyof this, unknown>): void;
|
|
20
|
+
private __renderSummaryItemLayout;
|
|
21
|
+
private __renderStandaloneLayout;
|
|
13
22
|
private __handleFetchEvent;
|
|
14
|
-
private __handleEmpty;
|
|
15
23
|
private __handleSelect;
|
|
24
|
+
private __handleEmpty;
|
|
16
25
|
}
|
|
26
|
+
export {};
|