@foxy.io/elements 1.22.0-beta.1 → 1.22.0-beta.3
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 +3 -85
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-admin-subscription-card.js +1 -1
- 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-cancellation-form.js +1 -1
- package/dist/cdn/foxy-cart-card.js +1 -1
- package/dist/cdn/foxy-cart-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-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.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +11 -11
- package/dist/cdn/foxy-customer.js +2 -2
- 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-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-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-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 +1 -1
- 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-nucleon-element.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-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 +1 -1
- package/dist/cdn/foxy-reports-table.js +1 -1
- package/dist/cdn/foxy-shipment-card.js +2 -1
- package/dist/cdn/foxy-shipping-method-card.js +1 -1
- package/dist/cdn/foxy-sign-in-form.js +1 -1
- package/dist/cdn/foxy-spinner.js +2 -2
- package/dist/cdn/foxy-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 +4 -4
- 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-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-a2d07dc8.js → shared-00d2cbe9.js} +1 -1
- package/dist/cdn/{shared-577cab08.js → shared-01dd0fd6.js} +1 -1
- package/dist/cdn/shared-095ad002.js +1 -0
- package/dist/cdn/{shared-9227d2e5.js → shared-10f92654.js} +1 -1
- package/dist/cdn/{shared-6fb007df.js → shared-14f0cf8e.js} +2 -2
- package/dist/cdn/{shared-9be9d167.js → shared-1bd28b9c.js} +1 -1
- package/dist/cdn/{shared-fac390a7.js → shared-26390fea.js} +3 -3
- package/dist/cdn/{shared-eed6272b.js → shared-2a9718a9.js} +1 -1
- package/dist/cdn/{shared-959c976b.js → shared-2b1c3f7a.js} +1 -1
- package/dist/cdn/{shared-9a11f821.js → shared-2bae351a.js} +1 -1
- package/dist/cdn/{shared-14202046.js → shared-308e67f3.js} +1 -1
- package/dist/cdn/shared-349bbd7e.js +1 -0
- package/dist/cdn/shared-394981eb.js +82 -0
- package/dist/cdn/{shared-9cfb3149.js → shared-3a329baf.js} +1 -1
- package/dist/cdn/{shared-0e0632a7.js → shared-3c20c295.js} +1 -1
- package/dist/cdn/{shared-63ed0be3.js → shared-445dda5a.js} +1 -1
- package/dist/cdn/{shared-2cdd9cfd.js → shared-468eb208.js} +2 -2
- package/dist/cdn/{shared-bee7a953.js → shared-46c6d1e6.js} +1 -1
- package/dist/cdn/{shared-97da5c82.js → shared-493b8bc1.js} +1 -1
- package/dist/cdn/shared-509a2f52.js +1 -0
- package/dist/cdn/{shared-412affb4.js → shared-50c6daa1.js} +1 -1
- package/dist/cdn/{shared-1a1f739c.js → shared-53af541e.js} +1 -1
- package/dist/cdn/{shared-01af9591.js → shared-5897f089.js} +1 -1
- package/dist/cdn/{shared-0d2ac2bf.js → shared-5a09ad7e.js} +1 -1
- package/dist/cdn/{shared-5db24a3c.js → shared-5a445ebd.js} +1 -1
- package/dist/cdn/{shared-d5e7c2d0.js → shared-5c5d13bd.js} +1 -1
- package/dist/cdn/shared-5cf7e764.js +64 -0
- package/dist/cdn/{shared-e6b54b51.js → shared-5ec39f11.js} +1 -1
- package/dist/cdn/{shared-bd87e451.js → shared-643791c8.js} +1 -1
- package/dist/cdn/shared-64657919.js +1 -0
- package/dist/cdn/shared-67790b63.js +1 -0
- package/dist/cdn/{shared-fe74f52a.js → shared-685ca959.js} +1 -1
- package/dist/cdn/{shared-4e34cfb5.js → shared-6860c8d1.js} +1 -1
- package/dist/cdn/{shared-4ce1c116.js → shared-698c9002.js} +1 -1
- package/dist/cdn/{shared-2ab995c2.js → shared-7163796c.js} +1 -1
- package/dist/cdn/shared-7f47c677.js +1 -0
- package/dist/cdn/{shared-889ec003.js → shared-83a12835.js} +1 -1
- package/dist/cdn/{shared-711b1d11.js → shared-87405fc7.js} +3 -3
- package/dist/cdn/{shared-4d441506.js → shared-8db9452f.js} +1 -1
- package/dist/cdn/shared-98755831.js +15 -0
- package/dist/cdn/{shared-22e7642d.js → shared-9e18688d.js} +1 -1
- package/dist/cdn/shared-9eeb2bec.js +1 -0
- package/dist/cdn/{shared-d2b2c3c3.js → shared-a19ce620.js} +1 -1
- package/dist/cdn/{shared-727058e8.js → shared-a306168b.js} +1 -1
- package/dist/cdn/{shared-1f4510ea.js → shared-a6deb2a4.js} +1 -1
- package/dist/cdn/{shared-e3ab56d1.js → shared-a89cb472.js} +1 -1
- package/dist/cdn/{shared-4f037e43.js → shared-a8cf402a.js} +1 -1
- package/dist/cdn/{shared-b0508df4.js → shared-aa5785d9.js} +1 -1
- package/dist/cdn/{shared-4af5329d.js → shared-aa678ec4.js} +1 -1
- package/dist/cdn/{shared-3f04827e.js → shared-b2d6bbad.js} +1 -1
- package/dist/cdn/{shared-75e78c70.js → shared-b5517c1b.js} +1 -1
- package/dist/cdn/{shared-e9975921.js → shared-b590adb2.js} +1 -1
- package/dist/cdn/{shared-758859b5.js → shared-bd819b5b.js} +1 -1
- package/dist/cdn/shared-bfdbd733.js +1 -0
- package/dist/cdn/shared-c5fe5675.js +1 -0
- package/dist/cdn/shared-c7f56c90.js +1 -0
- package/dist/cdn/shared-ca5e1c6b.js +1 -0
- package/dist/cdn/{shared-3945506e.js → shared-ccfb87fb.js} +1 -1
- package/dist/cdn/{shared-ec5bb132.js → shared-cf49ce0c.js} +1 -1
- package/dist/cdn/{shared-45a9193f.js → shared-d7b778b7.js} +1 -1
- package/dist/cdn/shared-daf52401.js +1 -0
- package/dist/cdn/shared-de790de9.js +1 -0
- package/dist/cdn/{shared-1c2b06d9.js → shared-dfe7652e.js} +1 -1
- package/dist/cdn/shared-e41e53c0.js +1 -0
- package/dist/cdn/{shared-bb8287f7.js → shared-e6d3d6f5.js} +1 -1
- package/dist/cdn/shared-eb900735.js +1 -0
- package/dist/cdn/{shared-febaf6ac.js → shared-f42077ab.js} +1 -1
- package/dist/cdn/{shared-3d5adeab.js → shared-f628a723.js} +1 -1
- package/dist/cdn/shared-f8bcab5c.js +1 -0
- package/dist/cdn/{shared-b5a6dea8.js → shared-fad30ff5.js} +1 -1
- package/dist/cdn/shared-ffb6c2d3.js +1 -0
- package/dist/cdn/translations/coupon-code-form/en.json +1 -0
- package/dist/cdn/translations/coupon-form/en.json +45 -0
- package/dist/cdn/translations/customer-portal/en.json +69 -10
- package/dist/cdn/translations/generate-codes-form/en.json +1 -0
- package/dist/cdn/translations/gift-card-code-form/en.json +1 -0
- package/dist/cdn/translations/subscription-form/en.json +7 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +2 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +22 -10
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js +17 -6
- package/dist/elements/internal/InternalEditableListControl/InternalEditableListControl.js.map +1 -1
- package/dist/elements/internal/InternalEditableListControl/index.d.ts +2 -0
- package/dist/elements/internal/InternalEditableListControl/index.js +2 -0
- package/dist/elements/internal/InternalEditableListControl/index.js.map +1 -1
- package/dist/elements/private/Dialog/Dialog.d.ts +3 -0
- package/dist/elements/private/Dialog/Dialog.js +24 -3
- package/dist/elements/private/Dialog/Dialog.js.map +1 -1
- package/dist/elements/private/Dialog/DialogWindow.d.ts +11 -3
- package/dist/elements/private/Dialog/DialogWindow.js +15 -1
- package/dist/elements/private/Dialog/DialogWindow.js.map +1 -1
- package/dist/elements/public/CouponCodeForm/CouponCodeForm.js +1 -0
- package/dist/elements/public/CouponCodeForm/CouponCodeForm.js.map +1 -1
- package/dist/elements/public/CouponCodesForm/CouponCodesForm.js +9 -5
- package/dist/elements/public/CouponCodesForm/CouponCodesForm.js.map +1 -1
- package/dist/elements/public/CouponForm/CouponForm.d.ts +3 -0
- package/dist/elements/public/CouponForm/CouponForm.js +70 -0
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/CouponForm/index.d.ts +1 -0
- package/dist/elements/public/CouponForm/index.js +1 -0
- package/dist/elements/public/CouponForm/index.js.map +1 -1
- package/dist/elements/public/CouponForm/types.d.ts +5 -1
- package/dist/elements/public/CouponForm/types.js.map +1 -1
- package/dist/elements/public/CustomerCard/CustomerCard.js +13 -2
- package/dist/elements/public/CustomerCard/CustomerCard.js.map +1 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +8 -8
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +1 -1
- package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
- package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js +1 -0
- package/dist/elements/public/GenerateCodesForm/GenerateCodesForm.js.map +1 -1
- package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +1 -0
- package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js +9 -5
- package/dist/elements/public/GiftCardCodesForm/GiftCardCodesForm.js.map +1 -1
- package/dist/elements/public/QueryBuilder/QueryBuilder.d.ts +1 -1
- package/dist/elements/public/QueryBuilder/QueryBuilder.js +4 -1
- package/dist/elements/public/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/BooleanValue.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/BooleanValue.js +3 -1
- package/dist/elements/public/QueryBuilder/components/BooleanValue.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Group.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/Group.js +6 -0
- package/dist/elements/public/QueryBuilder/components/Group.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Input.d.ts +2 -1
- package/dist/elements/public/QueryBuilder/components/Input.js +15 -4
- package/dist/elements/public/QueryBuilder/components/Input.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/IsDefinedValue.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/IsDefinedValue.js +2 -0
- package/dist/elements/public/QueryBuilder/components/IsDefinedValue.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/ListValue.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/ListValue.js +6 -1
- package/dist/elements/public/QueryBuilder/components/ListValue.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Name.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/Name.js +2 -0
- package/dist/elements/public/QueryBuilder/components/Name.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.js +2 -2
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Path.d.ts +3 -1
- package/dist/elements/public/QueryBuilder/components/Path.js +3 -1
- package/dist/elements/public/QueryBuilder/components/Path.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/RangeValue.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/RangeValue.js +5 -1
- package/dist/elements/public/QueryBuilder/components/RangeValue.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Rule.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/Rule.js +31 -11
- package/dist/elements/public/QueryBuilder/components/Rule.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Select.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/Select.js +27 -7
- package/dist/elements/public/QueryBuilder/components/Select.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/SingleValue.d.ts +2 -0
- package/dist/elements/public/QueryBuilder/components/SingleValue.js +3 -2
- package/dist/elements/public/QueryBuilder/components/SingleValue.js.map +1 -1
- package/dist/elements/public/ShipmentCard/ShipmentCard.d.ts +0 -1
- package/dist/elements/public/ShipmentCard/ShipmentCard.js +18 -19
- package/dist/elements/public/ShipmentCard/ShipmentCard.js.map +1 -1
- package/dist/elements/public/ShipmentCard/index.d.ts +2 -1
- package/dist/elements/public/ShipmentCard/index.js +2 -1
- package/dist/elements/public/ShipmentCard/index.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.d.ts +3 -1
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js +43 -6
- package/dist/elements/public/SubscriptionForm/SubscriptionForm.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/index.d.ts +1 -0
- package/dist/elements/public/SubscriptionForm/index.js +1 -0
- package/dist/elements/public/SubscriptionForm/index.js.map +1 -1
- package/dist/elements/public/SubscriptionForm/types.d.ts +1 -0
- package/dist/elements/public/SubscriptionForm/types.js.map +1 -1
- package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js +2 -2
- package/dist/elements/public/SubscriptionsTable/SubscriptionsTable.js.map +1 -1
- package/dist/elements/public/TransactionCard/TransactionCard.js +9 -2
- package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/elements/public/TransactionsTable/TransactionsTable.js +3 -3
- package/dist/elements/public/TransactionsTable/TransactionsTable.js.map +1 -1
- package/dist/mixins/themeable.js +8 -0
- package/dist/mixins/themeable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-11438c42.js +0 -1
- package/dist/cdn/shared-146d31e3.js +0 -1
- package/dist/cdn/shared-17e8a23b.js +0 -1
- package/dist/cdn/shared-1e7e13c1.js +0 -1
- package/dist/cdn/shared-38b37888.js +0 -1
- package/dist/cdn/shared-399a781f.js +0 -1
- package/dist/cdn/shared-531bb690.js +0 -1
- package/dist/cdn/shared-606449c3.js +0 -1
- package/dist/cdn/shared-67546e10.js +0 -1
- package/dist/cdn/shared-955db6b4.js +0 -1
- package/dist/cdn/shared-97a723fa.js +0 -1
- package/dist/cdn/shared-9c898ce5.js +0 -64
- package/dist/cdn/shared-a5364194.js +0 -1
- package/dist/cdn/shared-a8ced8bf.js +0 -1
- package/dist/cdn/shared-b22c63cc.js +0 -1
- package/dist/cdn/shared-bd52f4a0.js +0 -1
- package/dist/cdn/shared-dc91f7ae.js +0 -1
- package/dist/cdn/shared-dcdb6ea1.js +0 -15
- package/dist/cdn/shared-efa137cd.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GiftCardCodesForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodesForm/GiftCardCodesForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { Group } from '../../private/Group/Group';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'gift-card-codes-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for importing gift card codes (`fx:gift_card_codes`).\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot import:before\n * @slot import:after\n *\n * @element foxy-gift-card-codes-form\n * @since 1.15.0\n */\nexport class GiftCardCodesForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-editable-list': EditableList,\n 'x-group': Group,\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ gift_card_codes: v }) => (v && v.length > 0) || 'gift_card_codes_required',\n ({ current_balance: v }) => !v || v >= 0 || 'current_balance_negative',\n ];\n }\n\n templates: Templates = {};\n\n render(): TemplateResult {\n const { hiddenSelector, lang, ns } = this;\n\n const isBusy = this.in('busy');\n const isFail = this.in('fail');\n const isSnapshot = this.in({ idle: 'snapshot' });\n const isTemplate = this.in({ idle: 'template' });\n\n const transition = 'transition-opacity duration-500';\n const hidden = 'opacity-0 pointer-events-none';\n\n return html`\n <div class=\"relative\">\n <div\n class=${classMap({\n 'relative space-y-m': true,\n [transition]: true,\n [hidden]: isSnapshot,\n })}\n >\n ${hiddenSelector.matches('codes', true) ? '' : this.__renderCodes()}\n ${hiddenSelector.matches('current-balance', true) ? '' : this.__renderCurrentBalance()}\n ${hiddenSelector.matches('import', true) ? '' : this.__renderImport()}\n </div>\n\n <div\n class=${classMap({\n 'absolute inset-0 flex flex-col items-center justify-center': true,\n 'text-center text-m text-secondary leading-m': true,\n [transition]: true,\n [hidden]: !isSnapshot,\n })}\n >\n <div class=\"mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success\">\n <iron-icon icon=\"icons:done-all\" class=\"m-auto text-success-contrast\"></iron-icon>\n </div>\n\n <foxy-i18n class=\"block\" lang=${lang} key=\"import_codes_done\" ns=${ns}></foxy-i18n>\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'absolute inset-0 flex': true,\n [transition]: true,\n [hidden]: !isBusy && !isFail,\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${isFail ? 'error' : isTemplate ? 'empty' : 'busy'}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')) : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderCodes() {\n const maxVisible = 16;\n const codes = this.form.gift_card_codes ?? [];\n\n const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;\n const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];\n\n const items = visibleCodes.map(code => {\n let href: string;\n\n try {\n const url = new URL(this.parent);\n url.searchParams.set('code', code);\n href = url.toString();\n } catch {\n href = this.parent;\n }\n\n return {\n value: code,\n label: html`\n <foxy-internal-gift-card-codes-form-list-item\n group=${this.group}\n href=${href}\n lang=${this.lang}\n ns=${this.ns}\n >\n </foxy-internal-gift-card-codes-form-list-item>\n `,\n };\n });\n\n return html`\n <div data-testid=\"codes\">\n ${this.renderTemplateOrSlot('codes:before')}\n\n <x-group class=\"mb-xs\" frame>\n <foxy-i18n slot=\"header\" lang=${this.lang} key=\"code_plural\" ns=${this.ns}></foxy-i18n>\n\n <x-editable-list\n data-testid=\"codes:list\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('codes', true)}\n ?readonly=${this.readonlySelector.matches('codes', true)}\n .items=${items}\n @change=${(evt: CustomEvent) => {\n const list = evt.currentTarget as EditableList;\n const newCodes = new Set([...hiddenCodes, ...list.items.map(item => item.value)]);\n this.edit({ gift_card_codes: [...newCodes] });\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n\n const text = evt.clipboardData?.getData('text') ?? '';\n const pastedCodes = text\n .split(/\\s/)\n .map(code => code.trim())\n .filter(code => code.length > 0);\n\n this.edit({ gift_card_codes: Array.from(new Set([...codes, ...pastedCodes])) });\n }}\n >\n <div\n class=\"ml-m py-s border-b border-contrast-10 font-lumo\"\n ?hidden=${hiddenCodes.length === 0}\n >\n <foxy-i18n\n options=${JSON.stringify({ count: hiddenCodes.length })}\n class=\"block text-body text-m mb-xs\"\n lang=${this.lang}\n key=\"hidden_codes_header\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary\"\n lang=${this.lang}\n key=\"hidden_codes_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </x-editable-list>\n </x-group>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary leading-s\"\n lang=${this.lang}\n key=\"code_import_hint\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderCurrentBalance() {\n const isTemplate = this.in({ idle: 'template' });\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('current-balance:before')}\n\n <vaadin-integer-field\n error-message=${this.__getErrorMessage('current_balance')}\n data-testid=\"current-balance\"\n label=${this.t('balance')}\n class=\"w-full\"\n min=\"0\"\n ?disabled=${!isTemplate || this.disabledSelector.matches('current-balance', true)}\n ?readonly=${this.readonlySelector.matches('current-balance', true)}\n prevent-invalid-input\n has-controls\n .checkValidity=${this.__getValidator('current_balance')}\n .value=${isTemplate ? this.form.current_balance ?? 0 : ''}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ current_balance: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n ${this.renderTemplateOrSlot('current-balance:after')}\n </div>\n `;\n }\n\n private __renderImport() {\n const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });\n const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });\n const isValid = isTemplateValid || isSnapshotValid;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('import:before')}\n\n <vaadin-button\n data-testid=\"import\"\n class=\"w-full mb-xs\"\n theme=\"primary success\"\n ?disabled=${!isValid || !this.in('idle') || this.disabledSelector.matches('import', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} key=\"import\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('import:after')}\n </div>\n `;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"GiftCardCodesForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodesForm/GiftCardCodesForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { EditableList } from '../../private/EditableList/EditableList';\nimport { Group } from '../../private/Group/Group';\nimport { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'gift-card-codes-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for importing gift card codes (`fx:gift_card_codes`).\n *\n * @slot codes:before\n * @slot codes:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot import:before\n * @slot import:after\n *\n * @element foxy-gift-card-codes-form\n * @since 1.15.0\n */\nexport class GiftCardCodesForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-integer-field': customElements.get('vaadin-integer-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n 'iron-icon': customElements.get('iron-icon'),\n\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-editable-list': EditableList,\n 'x-group': Group,\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ gift_card_codes: v }) => (v && v.length > 0) || 'gift_card_codes_required',\n ({ current_balance: v }) => !v || v >= 0 || 'current_balance_negative',\n ];\n }\n\n templates: Templates = {};\n\n render(): TemplateResult {\n const { hiddenSelector, lang, ns } = this;\n\n const isBusy = this.in('busy');\n const isFail = this.in('fail');\n const isSnapshot = this.in({ idle: 'snapshot' });\n const isTemplate = this.in({ idle: 'template' });\n\n const transition = 'transition-opacity duration-500';\n const hidden = 'opacity-0 pointer-events-none';\n\n return html`\n <div class=\"relative\">\n <div\n class=${classMap({\n 'relative space-y-m': true,\n [transition]: true,\n [hidden]: isSnapshot,\n })}\n >\n ${hiddenSelector.matches('codes', true) ? '' : this.__renderCodes()}\n ${hiddenSelector.matches('current-balance', true) ? '' : this.__renderCurrentBalance()}\n ${hiddenSelector.matches('import', true) ? '' : this.__renderImport()}\n </div>\n\n <div\n class=${classMap({\n 'absolute inset-0 flex flex-col items-center justify-center': true,\n 'text-center text-m text-secondary leading-m': true,\n [transition]: true,\n [hidden]: !isSnapshot,\n })}\n >\n <div class=\"mx-auto flex mb-m w-l h-l rounded-t-l rounded-b-l bg-success\">\n <iron-icon icon=\"icons:done-all\" class=\"m-auto text-success-contrast\"></iron-icon>\n </div>\n\n <foxy-i18n class=\"block\" lang=${lang} key=\"import_codes_done\" ns=${ns}></foxy-i18n>\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'absolute inset-0 flex': true,\n [transition]: true,\n [hidden]: !isBusy && !isFail,\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${isFail ? 'error' : isTemplate ? 'empty' : 'busy'}\n lang=${lang}\n ns=\"${ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')) : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderCodes() {\n const maxVisible = 16;\n const codes = this.form.gift_card_codes ?? [];\n\n const visibleCodes = codes.length > maxVisible ? codes.slice(-maxVisible) : codes;\n const hiddenCodes = codes.length > maxVisible ? codes.slice(0, -maxVisible) : [];\n const parse = (value: string) => {\n return value\n .split(/\\s/)\n .map(code => code.trim())\n .filter(code => code.length > 0);\n };\n\n const items = visibleCodes.map(code => {\n let href: string;\n\n try {\n const url = new URL(this.parent);\n url.searchParams.set('code', code);\n href = url.toString();\n } catch {\n href = this.parent;\n }\n\n return {\n value: code,\n label: html`\n <foxy-internal-gift-card-codes-form-list-item\n group=${this.group}\n href=${href}\n lang=${this.lang}\n ns=${this.ns}\n >\n </foxy-internal-gift-card-codes-form-list-item>\n `,\n };\n });\n\n return html`\n <div data-testid=\"codes\">\n ${this.renderTemplateOrSlot('codes:before')}\n\n <x-group class=\"mb-xs\" frame>\n <foxy-i18n slot=\"header\" lang=${this.lang} key=\"code_plural\" ns=${this.ns}></foxy-i18n>\n\n <x-editable-list\n data-testid=\"codes:list\"\n lang=${this.lang}\n ns=${this.ns}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('codes', true)}\n ?readonly=${this.readonlySelector.matches('codes', true)}\n .items=${items}\n @change=${(evt: CustomEvent) => {\n const list = evt.currentTarget as EditableList;\n const codes = list.items.reduce<string[]>((p, c) => [...p, ...parse(c.value)], []);\n const newCodes = new Set([...hiddenCodes, ...codes]);\n this.edit({ gift_card_codes: [...newCodes] });\n }}\n @paste=${(evt: ClipboardEvent) => {\n evt.preventDefault();\n const text = evt.clipboardData?.getData('text') ?? '';\n const pastedCodes = parse(text);\n this.edit({ gift_card_codes: Array.from(new Set([...codes, ...pastedCodes])) });\n }}\n >\n <div\n class=\"ml-m py-s border-b border-contrast-10 font-lumo\"\n ?hidden=${hiddenCodes.length === 0}\n >\n <foxy-i18n\n options=${JSON.stringify({ count: hiddenCodes.length })}\n class=\"block text-body text-m mb-xs\"\n lang=${this.lang}\n key=\"hidden_codes_header\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary\"\n lang=${this.lang}\n key=\"hidden_codes_explainer\"\n ns=${this.ns}\n >\n </foxy-i18n>\n </div>\n </x-editable-list>\n </x-group>\n\n <foxy-i18n\n class=\"block text-xs text-tertiary leading-s\"\n lang=${this.lang}\n key=\"code_import_hint\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('codes:after')}\n </div>\n `;\n }\n\n private __renderCurrentBalance() {\n const isTemplate = this.in({ idle: 'template' });\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('current-balance:before')}\n\n <vaadin-integer-field\n error-message=${this.__getErrorMessage('current_balance')}\n data-testid=\"current-balance\"\n label=${this.t('balance')}\n class=\"w-full\"\n min=\"0\"\n ?disabled=${!isTemplate || this.disabledSelector.matches('current-balance', true)}\n ?readonly=${this.readonlySelector.matches('current-balance', true)}\n prevent-invalid-input\n has-controls\n .checkValidity=${this.__getValidator('current_balance')}\n .value=${isTemplate ? this.form.current_balance ?? 0 : ''}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this.edit({ current_balance: parseInt(field.value) });\n }}\n >\n </vaadin-integer-field>\n\n ${this.renderTemplateOrSlot('current-balance:after')}\n </div>\n `;\n }\n\n private __renderImport() {\n const isTemplateValid = this.in({ idle: { template: { dirty: 'valid' } } });\n const isSnapshotValid = this.in({ idle: { snapshot: { dirty: 'valid' } } });\n const isValid = isTemplateValid || isSnapshotValid;\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('import:before')}\n\n <vaadin-button\n data-testid=\"import\"\n class=\"w-full mb-xs\"\n theme=\"primary success\"\n ?disabled=${!isValid || !this.in('idle') || this.disabledSelector.matches('import', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} key=\"import\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('import:after')}\n </div>\n `;\n }\n}\n"]}
|
|
@@ -6,7 +6,7 @@ declare const Base: typeof LitElement & import("lit-element").Constructor<import
|
|
|
6
6
|
defaultNS: string;
|
|
7
7
|
} & {
|
|
8
8
|
styles: CSSResultArray;
|
|
9
|
-
}
|
|
9
|
+
} & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost>;
|
|
10
10
|
/**
|
|
11
11
|
* UI component for creating Foxy hAPI filters visually. Compatible with
|
|
12
12
|
* Backend API, Customer API or any other API using the same format as described
|
|
@@ -8,8 +8,9 @@ import { parse } from "./utils/parse.js";
|
|
|
8
8
|
import { stringify } from "./utils/stringify.js";
|
|
9
9
|
import { styles } from "./styles.js";
|
|
10
10
|
import { InferrableMixin } from "../../../mixins/inferrable.js";
|
|
11
|
+
import { ConfigurableMixin } from "../../../mixins/configurable.js";
|
|
11
12
|
const NS = 'query-builder';
|
|
12
|
-
const Base = ResponsiveMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS)));
|
|
13
|
+
const Base = ConfigurableMixin(ResponsiveMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS))));
|
|
13
14
|
/**
|
|
14
15
|
* UI component for creating Foxy hAPI filters visually. Compatible with
|
|
15
16
|
* Backend API, Customer API or any other API using the same format as described
|
|
@@ -40,6 +41,8 @@ class QueryBuilder extends Base {
|
|
|
40
41
|
var _a, _b;
|
|
41
42
|
return Group({
|
|
42
43
|
parsedValues: parse((_a = this.value) !== null && _a !== void 0 ? _a : ''),
|
|
44
|
+
disabled: this.disabled,
|
|
45
|
+
readonly: this.readonly,
|
|
43
46
|
options: (_b = this.options) !== null && _b !== void 0 ? _b : [],
|
|
44
47
|
t: this.t.bind(this),
|
|
45
48
|
onChange: newValue => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/elements/public/QueryBuilder/QueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAU,IAAI,EAAE,mBAAgB;AAEjD,OAAO,EAAE,KAAK,EAAE,8BAA2B;AAC3C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,KAAK,EAAE,yBAAsB;AACtC,OAAO,EAAE,SAAS,EAAE,6BAA0B;AAC9C,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,eAAe,EAAE,sCAAmC;
|
|
1
|
+
{"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/elements/public/QueryBuilder/QueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAU,IAAI,EAAE,mBAAgB;AAEjD,OAAO,EAAE,KAAK,EAAE,8BAA2B;AAC3C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,KAAK,EAAE,yBAAsB;AACtC,OAAO,EAAE,SAAS,EAAE,6BAA0B;AAC9C,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,IAAI,GAAG,iBAAiB,CAC5B,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CACpF,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,YAAa,SAAQ,IAAI;IAA/B;;QAsBE,gCAAgC;QAChC,YAAO,GAAoB,IAAI,CAAC;QAEhC,2CAA2C;QAC3C,UAAK,GAAkB,IAAI,CAAC;IAe9B,CAAC;IA/BC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAQD,MAAM;;QACJ,OAAO,KAAK,CAAC;YACX,YAAY,EAAE,KAAK,OAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,QAAE,IAAI,CAAC,OAAO,mCAAI,EAAE;YAC3B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;AAvCD,uEAAuE;AACvD,wBAAW,GAAG,KAAM,SAAQ,WAAiB;CAAG,CAAC;AAEjE,2DAA2D;AAC3C,qBAAQ,GAAG,QAAQ,CAAC;AAEpC,6DAA6D;AAC7C,iBAAI,GAAG,IAAI,CAAC;AAmC9B,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { CSSResultArray, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { Operator, Option, Type } from './types';\n\nimport { Group } from './components/Group';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { parse } from './utils/parse';\nimport { stringify } from './utils/stringify';\nimport { styles } from './styles';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\n\nconst NS = 'query-builder';\nconst Base = ConfigurableMixin(\n ResponsiveMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS)))\n);\n\n/**\n * UI component for creating Foxy hAPI filters visually. Compatible with\n * Backend API, Customer API or any other API using the same format as described\n * in our [docs](https://api.foxy.io/docs/cheat-sheet).\n *\n * @element foxy-query-builder\n * @since 1.12.0\n */\nclass QueryBuilder extends Base {\n /** QueryBuilder dispatches this event on itself when value changes. */\n static readonly ChangeEvent = class extends CustomEvent<void> {};\n\n /** Operator dictionary for use in autocomplete options. */\n static readonly Operator = Operator;\n\n /** Field type dictionary for use in autocomplete options. */\n static readonly Type = Type;\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n value: { type: String },\n };\n }\n\n static get styles(): CSSResultArray {\n return [super.styles, styles];\n }\n\n /** Autocomplete suggestions. */\n options: Option[] | null = null;\n\n /** Current value as hAPI filter string. */\n value: string | null = null;\n\n render(): TemplateResult {\n return Group({\n parsedValues: parse(this.value ?? ''),\n disabled: this.disabled,\n readonly: this.readonly,\n options: this.options ?? [],\n t: this.t.bind(this),\n onChange: newValue => {\n this.value = stringify(newValue);\n this.dispatchEvent(new QueryBuilder.ChangeEvent('change'));\n },\n });\n }\n}\n\nexport { QueryBuilder };\n"]}
|
|
@@ -3,6 +3,8 @@ import { I18n } from '../../I18n/I18n';
|
|
|
3
3
|
import { TemplateResult } from 'lit-html';
|
|
4
4
|
export declare type BooleanValueParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
readonly: boolean;
|
|
7
|
+
disabled: boolean;
|
|
6
8
|
option: Option | null;
|
|
7
9
|
t: I18n['t'];
|
|
8
10
|
onChange: (newValue: ParsedValue) => void;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Select } from "./Select.js";
|
|
2
2
|
export function BooleanValue(params) {
|
|
3
3
|
var _a, _b, _c, _d, _e, _f;
|
|
4
|
-
const { parsedValue, option, t, onChange } = params;
|
|
4
|
+
const { parsedValue, option, readonly, disabled, t, onChange } = params;
|
|
5
5
|
const falseLabel = (_c = (_b = (_a = option === null || option === void 0 ? void 0 : option.list) === null || _a === void 0 ? void 0 : _a.find(v => v.value === 'false')) === null || _b === void 0 ? void 0 : _b.label) !== null && _c !== void 0 ? _c : 'false';
|
|
6
6
|
const trueLabel = (_f = (_e = (_d = option === null || option === void 0 ? void 0 : option.list) === null || _d === void 0 ? void 0 : _d.find(v => v.value === 'true')) === null || _e === void 0 ? void 0 : _e.label) !== null && _f !== void 0 ? _f : 'true';
|
|
7
7
|
const list = [
|
|
@@ -9,6 +9,8 @@ export function BooleanValue(params) {
|
|
|
9
9
|
{ label: falseLabel, value: 'false' },
|
|
10
10
|
];
|
|
11
11
|
return Select({
|
|
12
|
+
disabled,
|
|
13
|
+
readonly,
|
|
12
14
|
value: parsedValue.value,
|
|
13
15
|
label: 'value',
|
|
14
16
|
list,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BooleanValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/BooleanValue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,oBAAiB;
|
|
1
|
+
{"version":3,"file":"BooleanValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/BooleanValue.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAYlC,MAAM,UAAU,YAAY,CAAC,MAA0B;;IACrD,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAExE,MAAM,UAAU,qBAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,2CAAG,KAAK,mCAAI,OAAO,CAAC;IAClF,MAAM,SAAS,qBAAG,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,IAAI,0CAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,2CAAG,KAAK,mCAAI,MAAM,CAAC;IAC/E,MAAM,IAAI,GAAG;QACX,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;QACnC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE;KACtC,CAAC;IAEF,OAAO,MAAM,CAAC;QACZ,QAAQ;QACR,QAAQ;QACR,KAAK,EAAE,WAAW,CAAC,KAAK;QACxB,KAAK,EAAE,OAAO;QACd,IAAI;QACJ,CAAC;QACD,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,GAAG,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;KACpE,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Option, ParsedValue } from '../types';\n\nimport { I18n } from '../../I18n/I18n';\nimport { Select } from './Select';\nimport { TemplateResult } from 'lit-html';\n\nexport type BooleanValueParams = {\n parsedValue: ParsedValue;\n readonly: boolean;\n disabled: boolean;\n option: Option | null;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function BooleanValue(params: BooleanValueParams): TemplateResult {\n const { parsedValue, option, readonly, disabled, t, onChange } = params;\n\n const falseLabel = option?.list?.find(v => v.value === 'false')?.label ?? 'false';\n const trueLabel = option?.list?.find(v => v.value === 'true')?.label ?? 'true';\n const list = [\n { label: trueLabel, value: 'true' },\n { label: falseLabel, value: 'false' },\n ];\n\n return Select({\n disabled,\n readonly,\n value: parsedValue.value,\n label: 'value',\n list,\n t,\n onChange: newValue => onChange({ ...parsedValue, value: newValue }),\n });\n}\n"]}
|
|
@@ -3,6 +3,8 @@ import { TemplateResult } from 'lit-html';
|
|
|
3
3
|
import { I18n } from '../../I18n/I18n';
|
|
4
4
|
export declare type GroupParams = {
|
|
5
5
|
parsedValues: (ParsedValue | ParsedValue[])[];
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
readonly: boolean;
|
|
6
8
|
options: Option[];
|
|
7
9
|
t: I18n['t'];
|
|
8
10
|
isNested?: boolean;
|
|
@@ -24,6 +24,8 @@ export function Group(params) {
|
|
|
24
24
|
Rule({
|
|
25
25
|
isFullSize: !params.isNested && params.parsedValues.length === 0,
|
|
26
26
|
isNested: params.isNested,
|
|
27
|
+
disabled: params.disabled,
|
|
28
|
+
readonly: params.readonly,
|
|
27
29
|
options: params.options,
|
|
28
30
|
parsedValue: { path: '', operator: null, value: '' },
|
|
29
31
|
t: params.t,
|
|
@@ -39,6 +41,8 @@ export function Group(params) {
|
|
|
39
41
|
${Group({
|
|
40
42
|
parsedValues: rule,
|
|
41
43
|
isNested: true,
|
|
44
|
+
disabled: params.disabled,
|
|
45
|
+
readonly: params.readonly,
|
|
42
46
|
options: params.options,
|
|
43
47
|
t: params.t,
|
|
44
48
|
onChange: newRule => {
|
|
@@ -57,6 +61,8 @@ export function Group(params) {
|
|
|
57
61
|
Rule({
|
|
58
62
|
parsedValue: rule,
|
|
59
63
|
isNested: params.isNested,
|
|
64
|
+
disabled: params.disabled,
|
|
65
|
+
readonly: params.readonly,
|
|
60
66
|
options: params.options,
|
|
61
67
|
t: params.t,
|
|
62
68
|
onChange: newValue => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Group.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,IAAI,EAAE,kBAAe;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"Group.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Group.ts"],"names":[],"mappings":"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","sourcesContent":["import { Option, ParsedValue } from '../types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { I18n } from '../../I18n/I18n';\nimport { Rule } from './Rule';\nimport { repeat } from 'lit-html/directives/repeat';\n\nexport type GroupParams = {\n parsedValues: (ParsedValue | ParsedValue[])[];\n disabled: boolean;\n readonly: boolean;\n options: Option[];\n t: I18n['t'];\n isNested?: boolean;\n onChange: (newValue: (ParsedValue | ParsedValue[])[]) => void;\n};\n\nexport function Group(params: GroupParams): TemplateResult {\n const andDivider = html`<div class=\"h-xs\"></div>`;\n\n const orDivider = html`\n <div class=\"flex items-center h-s\">\n <div class=\"w-m text-center leading-none uppercase font-medium text-xs text-contrast-30\">\n ${params.t('or')}\n </div>\n\n <div class=\"flex-1 border-t border-contrast-20\"></div>\n <div class=\"w-m ml-s flex-shrink-0\"></div>\n <div class=\"hidden sm-block w-m flex-shrink-0\"></div>\n </div>\n `;\n\n return html`\n <div aria-label=${params.t('query_builder_group')}>\n ${repeat(\n [...params.parsedValues, null],\n (rule, ruleIndex) => String(ruleIndex),\n (rule, ruleIndex) => {\n const divider = ruleIndex > 0 ? (params.isNested ? orDivider : andDivider) : '';\n\n if (rule === null) {\n return [\n divider,\n Rule({\n isFullSize: !params.isNested && params.parsedValues.length === 0,\n isNested: params.isNested,\n disabled: params.disabled,\n readonly: params.readonly,\n options: params.options,\n parsedValue: { path: '', operator: null, value: '' },\n t: params.t,\n onChange: newValue => params.onChange([...params.parsedValues, newValue]),\n }),\n ];\n }\n\n if (Array.isArray(rule)) {\n return [\n divider,\n html`\n <div class=\"bg-contrast-10 rounded-t-l rounded-b-l p-s -m-s\">\n ${Group({\n parsedValues: rule,\n isNested: true,\n disabled: params.disabled,\n readonly: params.readonly,\n options: params.options,\n t: params.t,\n onChange: newRule => {\n const newValue = [...params.parsedValues];\n const typedNewRule = newRule as ParsedValue[];\n newValue[ruleIndex] = newRule.length > 1 ? typedNewRule : typedNewRule[0];\n params.onChange(newValue);\n },\n })}\n </div>\n `,\n ];\n }\n\n return [\n divider,\n Rule({\n parsedValue: rule,\n isNested: params.isNested,\n disabled: params.disabled,\n readonly: params.readonly,\n options: params.options,\n t: params.t,\n onChange: newValue => {\n const newParsedValues = [...params.parsedValues];\n newParsedValues[ruleIndex] = newValue;\n params.onChange(newParsedValues);\n },\n onDelete: () => {\n const newParsedValues = params.parsedValues.filter((_, i) => i !== ruleIndex);\n params.onChange(newParsedValues);\n },\n onConvert: () => {\n const newValue = [...params.parsedValues];\n newValue[ruleIndex] = [rule, { ...rule, operator: null, value: '' }];\n params.onChange(newValue);\n },\n }),\n ];\n }\n )}\n </div>\n `;\n}\n"]}
|
|
@@ -19,7 +19,12 @@ export function Input(params) {
|
|
|
19
19
|
? html `
|
|
20
20
|
<div
|
|
21
21
|
aria-hidden="true"
|
|
22
|
-
class
|
|
22
|
+
class=${classMap({
|
|
23
|
+
'absolute inset-0 h-m px-s font-medium flex items-center': true,
|
|
24
|
+
'text-body': !params.disabled && !params.readonly,
|
|
25
|
+
'text-disabled': params.disabled,
|
|
26
|
+
'text-secondary': params.readonly,
|
|
27
|
+
})}
|
|
23
28
|
>
|
|
24
29
|
<div class="truncate">${params.t(params.displayValue)}</div>
|
|
25
30
|
</div>
|
|
@@ -29,7 +34,10 @@ export function Input(params) {
|
|
|
29
34
|
<input
|
|
30
35
|
placeholder=${normalizedValue || params.type === 'date' ? '' : params.t(params.label)}
|
|
31
36
|
class=${classMap({
|
|
32
|
-
'bg-base
|
|
37
|
+
'bg-base relative flex h-m px-s font-medium w-full': true,
|
|
38
|
+
'text-body': !params.disabled && !params.readonly,
|
|
39
|
+
'text-disabled': params.disabled,
|
|
40
|
+
'text-secondary': params.readonly,
|
|
33
41
|
'flex max-w-full whitespace-nowrap': true,
|
|
34
42
|
'focus-outline-none': true,
|
|
35
43
|
'opacity-0 focus-opacity-100': hasDisplayValue,
|
|
@@ -38,7 +46,7 @@ export function Input(params) {
|
|
|
38
46
|
type=${params.type}
|
|
39
47
|
max=${ifDefined(params.type === 'date' ? '9999-12-31' : '')}
|
|
40
48
|
.value=${normalizedValue}
|
|
41
|
-
?disabled=${params.disabled}
|
|
49
|
+
?disabled=${params.disabled || params.readonly}
|
|
42
50
|
@input=${(evt) => {
|
|
43
51
|
const input = evt.currentTarget;
|
|
44
52
|
try {
|
|
@@ -59,6 +67,9 @@ export function Input(params) {
|
|
|
59
67
|
'font-tnum text-xs font-medium border border-current mr-s px-xs rounded-s': true,
|
|
60
68
|
'inline-block': !!normalizedValue || params.type === 'date',
|
|
61
69
|
'sr-only': !normalizedValue && params.type !== 'date',
|
|
70
|
+
'text-body': !params.disabled && !params.readonly,
|
|
71
|
+
'text-disabled': params.disabled,
|
|
72
|
+
'text-secondary': params.readonly,
|
|
62
73
|
})}
|
|
63
74
|
>
|
|
64
75
|
${params.t(params.label)}
|
|
@@ -71,7 +82,7 @@ export function Input(params) {
|
|
|
71
82
|
</datalist>
|
|
72
83
|
`
|
|
73
84
|
: ''}
|
|
74
|
-
${params.disabled
|
|
85
|
+
${params.disabled || params.readonly
|
|
75
86
|
? ''
|
|
76
87
|
: html `
|
|
77
88
|
<div
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,QAAQ,EAAE,uCAAoC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,4CAAyC;
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Input.ts"],"names":[],"mappings":"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","sourcesContent":["import { TemplateResult, html } from 'lit-html';\n\nimport { I18n } from '../../I18n/I18n';\nimport { classMap } from '../../../../utils/class-map';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { serializeDateUTC } from '../../../../utils/serialize-date';\n\nexport type InputParams = {\n t: I18n['t'];\n id?: string;\n list?: { label: string; value: string }[];\n type: string;\n label: string;\n value: string;\n disabled: boolean;\n readonly: boolean;\n displayValue?: string;\n onChange: (newValue: string) => void;\n};\n\nexport function Input(params: InputParams): TemplateResult {\n const id = params.id ?? String(Math.floor(Math.random() * Math.pow(10, 8)));\n const listId = `${id}-list`;\n const hasDisplayValue = !!params.displayValue;\n\n let normalizedValue = params.value;\n\n if (params.type === 'date') {\n const date = new Date(params.value);\n normalizedValue = isNaN(date.getTime()) ? '' : serializeDateUTC(date);\n }\n\n return html`\n <label class=\"relative flex items-center cursor-text group text-tertiary\">\n <div class=\"relative flex-1 min-w-0 overflow-hidden\">\n ${hasDisplayValue\n ? html`\n <div\n aria-hidden=\"true\"\n class=${classMap({\n 'absolute inset-0 h-m px-s font-medium flex items-center': true,\n 'text-body': !params.disabled && !params.readonly,\n 'text-disabled': params.disabled,\n 'text-secondary': params.readonly,\n })}\n >\n <div class=\"truncate\">${params.t(params.displayValue!)}</div>\n </div>\n `\n : ''}\n\n <input\n placeholder=${normalizedValue || params.type === 'date' ? '' : params.t(params.label)}\n class=${classMap({\n 'bg-base relative flex h-m px-s font-medium w-full': true,\n 'text-body': !params.disabled && !params.readonly,\n 'text-disabled': params.disabled,\n 'text-secondary': params.readonly,\n 'flex max-w-full whitespace-nowrap': true, // ugh safari\n 'focus-outline-none': true,\n 'opacity-0 focus-opacity-100': hasDisplayValue,\n })}\n list=${ifDefined(params.list ? listId : undefined)}\n type=${params.type}\n max=${ifDefined(params.type === 'date' ? '9999-12-31' : '')}\n .value=${normalizedValue}\n ?disabled=${params.disabled || params.readonly}\n @input=${(evt: Event) => {\n const input = evt.currentTarget as HTMLInputElement;\n\n try {\n const valueAsDate = input.valueAsDate as Date;\n if (valueAsDate.getFullYear() > 9999) valueAsDate.setFullYear(9999);\n params.onChange(valueAsDate.toISOString());\n } catch {\n params.onChange(input.value);\n }\n }}\n />\n </div>\n\n <span\n class=${classMap({\n 'font-tnum text-xs font-medium border border-current mr-s px-xs rounded-s': true,\n 'inline-block': !!normalizedValue || params.type === 'date',\n 'sr-only': !normalizedValue && params.type !== 'date',\n 'text-body': !params.disabled && !params.readonly,\n 'text-disabled': params.disabled,\n 'text-secondary': params.readonly,\n })}\n >\n ${params.t(params.label)}\n </span>\n\n ${params.list\n ? html`\n <datalist id=${listId}>\n ${params.list.map(\n ({ label, value }) => html`<option value=${value}>${params.t(label)}</option>`\n )}\n </datalist>\n `\n : ''}\n ${params.disabled || params.readonly\n ? ''\n : html`\n <div\n class=\"absolute inset-0 transition-colors bg-transparent group-hover-bg-contrast-5 pointer-events-none\"\n ></div>\n `}\n </label>\n `;\n}\n"]}
|
|
@@ -3,6 +3,8 @@ import { ParsedValue } from '../types';
|
|
|
3
3
|
import { TemplateResult } from 'lit-html';
|
|
4
4
|
export declare type IsDefinedValueParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
readonly: boolean;
|
|
7
|
+
disabled: boolean;
|
|
6
8
|
t: I18n['t'];
|
|
7
9
|
onChange: (newValue: ParsedValue) => void;
|
|
8
10
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IsDefinedValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/IsDefinedValue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,oBAAiB;
|
|
1
|
+
{"version":3,"file":"IsDefinedValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/IsDefinedValue.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAWlC,MAAM,UAAU,cAAc,CAAC,MAA4B;IACzD,OAAO,MAAM,CAAC;QACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,KAAK;QAC/B,KAAK,EAAE,OAAO;QACd,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE;YAC3C,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;SAC9C;QACD,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;KAClF,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { I18n } from '../../I18n/I18n';\nimport { ParsedValue } from '../types';\nimport { Select } from './Select';\nimport { TemplateResult } from 'lit-html';\n\nexport type IsDefinedValueParams = {\n parsedValue: ParsedValue;\n readonly: boolean;\n disabled: boolean;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function IsDefinedValue(params: IsDefinedValueParams): TemplateResult {\n return Select({\n readonly: params.readonly,\n disabled: params.disabled,\n value: params.parsedValue.value,\n label: 'value',\n list: [\n { label: 'is_defined_true', value: 'true' },\n { label: 'is_defined_false', value: 'false' },\n ],\n t: params.t,\n onChange: newValue => params.onChange({ ...params.parsedValue, value: newValue }),\n });\n}\n"]}
|
|
@@ -3,6 +3,8 @@ import { TemplateResult } from 'lit-html';
|
|
|
3
3
|
import { I18n } from '../../I18n/I18n';
|
|
4
4
|
export declare type ListValueParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
disabled: boolean;
|
|
7
|
+
readonly: boolean;
|
|
6
8
|
option: Option | null;
|
|
7
9
|
t: I18n['t'];
|
|
8
10
|
onChange: (newValue: ParsedValue) => void;
|
|
@@ -10,9 +10,12 @@ export function ListValue(params) {
|
|
|
10
10
|
const optionType = (_c = (_b = params.option) === null || _b === void 0 ? void 0 : _b.type) !== null && _c !== void 0 ? _c : Type.Any;
|
|
11
11
|
const type = optionType === Type.Number ? 'number' : optionType === Type.Date ? 'date' : 'text';
|
|
12
12
|
const list = (_d = params.option) === null || _d === void 0 ? void 0 : _d.list;
|
|
13
|
+
const displayedValues = [...splitValue.filter(value => !!value)];
|
|
14
|
+
if (!params.readonly)
|
|
15
|
+
displayedValues.push(null);
|
|
13
16
|
return html `
|
|
14
17
|
<div class="bg-contrast-10 grid grid-cols-1 gap-1px">
|
|
15
|
-
${repeat(
|
|
18
|
+
${repeat(displayedValues, (value, index) => index, (value, index) => {
|
|
16
19
|
var _a;
|
|
17
20
|
return html `
|
|
18
21
|
<div class="bg-base">
|
|
@@ -22,6 +25,8 @@ export function ListValue(params) {
|
|
|
22
25
|
t: params.t,
|
|
23
26
|
value: value !== null && value !== void 0 ? value : '',
|
|
24
27
|
label: value ? String(index + 1) : 'add_value',
|
|
28
|
+
disabled: params.disabled,
|
|
29
|
+
readonly: params.readonly,
|
|
25
30
|
clearable: true,
|
|
26
31
|
displayValue: (_a = list === null || list === void 0 ? void 0 : list.find(item => item.value === value)) === null || _a === void 0 ? void 0 : _a.label,
|
|
27
32
|
onChange: newValue => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ListValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/ListValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,IAAI,EAAE,oBAAiB;AACrD,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"ListValue.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/ListValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,IAAI,EAAE,oBAAiB;AACrD,OAAO,EAAkB,IAAI,EAAE,MAAM,UAAU,CAAC;AAGhD,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAChC,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAWpD,MAAM,UAAU,SAAS,CAAC,MAAuB;;IAC/C,MAAM,KAAK,GAAG,OAAA,MAAM,CAAC,MAAM,0CAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnD,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,UAAU,eAAG,MAAM,CAAC,MAAM,0CAAE,IAAI,mCAAI,IAAI,CAAC,GAAG,CAAC;IACnD,MAAM,IAAI,GAAG,UAAU,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAChG,MAAM,IAAI,SAAG,MAAM,CAAC,MAAM,0CAAE,IAAI,CAAC;IACjC,MAAM,eAAe,GAAsB,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpF,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEjD,OAAO,IAAI,CAAA;;QAEL,MAAM,CACN,eAAe,EACf,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,EACvB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;;QAAC,OAAA,IAAI,CAAA;;cAEhB,KAAK,CAAC;YACN,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,IAAI;YACV,CAAC,EAAE,MAAM,CAAC,CAAC;YACX,KAAK,EAAE,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,EAAE;YAClB,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW;YAC9C,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,SAAS,EAAE,IAAI;YACf,YAAY,QAAE,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,2CAAG,KAAK;YAC7D,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,QAAQ,EAAE;oBACZ,UAAU,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;iBAC9B;qBAAM;oBACL,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC7B;gBAED,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC1E,CAAC;SACF,CAAC;;SAEL,CAAA;KAAA,CACF;;GAEJ,CAAC;AACJ,CAAC","sourcesContent":["import { Option, ParsedValue, Type } from '../types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { I18n } from '../../I18n/I18n';\nimport { Input } from './Input';\nimport { Select } from './Select';\nimport { repeat } from 'lit-html/directives/repeat';\n\nexport type ListValueParams = {\n parsedValue: ParsedValue;\n disabled: boolean;\n readonly: boolean;\n option: Option | null;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function ListValue(params: ListValueParams): TemplateResult {\n const Field = params.option?.list ? Select : Input;\n const splitValue = params.parsedValue.value.split(',');\n const optionType = params.option?.type ?? Type.Any;\n const type = optionType === Type.Number ? 'number' : optionType === Type.Date ? 'date' : 'text';\n const list = params.option?.list;\n const displayedValues: (string | null)[] = [...splitValue.filter(value => !!value)];\n\n if (!params.readonly) displayedValues.push(null);\n\n return html`\n <div class=\"bg-contrast-10 grid grid-cols-1 gap-1px\">\n ${repeat(\n displayedValues,\n (value, index) => index,\n (value, index) => html`\n <div class=\"bg-base\">\n ${Field({\n type: type,\n list: list,\n t: params.t,\n value: value ?? '',\n label: value ? String(index + 1) : 'add_value',\n disabled: params.disabled,\n readonly: params.readonly,\n clearable: true,\n displayValue: list?.find(item => item.value === value)?.label,\n onChange: newValue => {\n if (newValue) {\n splitValue[index] = newValue;\n } else {\n splitValue.splice(index, 1);\n }\n\n params.onChange({ ...params.parsedValue, value: splitValue.join(',') });\n },\n })}\n </div>\n `\n )}\n </div>\n `;\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Name.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,mBAAgB;
|
|
1
|
+
{"version":3,"file":"Name.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Name.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAYhC,MAAM,UAAU,IAAI,CAAC,MAAkB;;IACrC,OAAO,KAAK,CAAC;QACX,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,KAAK,QAAE,MAAM,CAAC,WAAW,CAAC,IAAI,mCAAI,EAAE;QACpC,KAAK,EAAE,MAAM;QACb,IAAI,EAAE,MAAM;QACZ,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC/E,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { I18n } from '../../I18n/I18n';\nimport { Input } from './Input';\nimport { ParsedValue } from '../types';\nimport { TemplateResult } from 'lit-html';\n\nexport type NameParams = {\n parsedValue: ParsedValue;\n readonly: boolean;\n disabled: boolean;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function Name(params: NameParams): TemplateResult {\n return Input({\n disabled: params.disabled,\n readonly: params.readonly,\n value: params.parsedValue.name ?? '',\n label: 'name',\n type: 'text',\n t: params.t,\n onChange: newName => params.onChange({ ...params.parsedValue, name: newName }),\n });\n}\n"]}
|
|
@@ -3,6 +3,8 @@ import { TemplateResult } from 'lit-html';
|
|
|
3
3
|
import { I18n } from '../../I18n/I18n';
|
|
4
4
|
export declare type OperatorToggleParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
readonly: boolean;
|
|
7
|
+
disabled: boolean;
|
|
6
8
|
option: Option | null;
|
|
7
9
|
t: I18n['t'];
|
|
8
10
|
onChange: (newValue: ParsedValue) => void;
|
|
@@ -33,14 +33,14 @@ export function OperatorToggle(params) {
|
|
|
33
33
|
: params.parsedValue.name
|
|
34
34
|
? Object.values(Operator)
|
|
35
35
|
: Object.values(Operator).filter(v => v !== Operator.IsDefined);
|
|
36
|
-
const isDisabled = operatorsForType.length === 0 || !params.parsedValue.path;
|
|
36
|
+
const isDisabled = params.disabled || params.readonly || operatorsForType.length === 0 || !params.parsedValue.path;
|
|
37
37
|
return html `
|
|
38
38
|
<button
|
|
39
39
|
title=${params.t(`operator_${operator !== null && operator !== void 0 ? operator : 'equal'}`)}
|
|
40
40
|
class=${classMap({
|
|
41
41
|
'flex items-center justify-center w-m h-m transition-colors': true,
|
|
42
42
|
'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,
|
|
43
|
-
'text-
|
|
43
|
+
'text-disabled cursor-default': isDisabled,
|
|
44
44
|
'hover-bg-contrast-5': !isDisabled,
|
|
45
45
|
})}
|
|
46
46
|
?disabled=${isDisabled}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperatorToggle.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/OperatorToggle.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,0BAAuB;AAExC,OAAO,EAAE,QAAQ,EAAuB,IAAI,EAAE,oBAAiB;AAC/D,OAAO,EAAqC,IAAI,EAAE,MAAM,UAAU,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,uCAAoC;
|
|
1
|
+
{"version":3,"file":"OperatorToggle.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/OperatorToggle.ts"],"names":[],"mappings":"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","sourcesContent":["import * as icons from '../icons/index';\n\nimport { Operator, Option, ParsedValue, Type } from '../types';\nimport { SVGTemplateResult, TemplateResult, html } from 'lit-html';\n\nimport { I18n } from '../../I18n/I18n';\nimport { classMap } from '../../../../utils/class-map';\n\nexport type OperatorToggleParams = {\n parsedValue: ParsedValue;\n readonly: boolean;\n disabled: boolean;\n option: Option | null;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function OperatorToggle(params: OperatorToggleParams): TemplateResult {\n const operator = params.parsedValue.operator;\n\n const operatorToIcon: Record<string, SVGTemplateResult> = {\n [Operator.GreaterThan]: icons.operatorGreaterThan,\n [Operator.GreaterThanOrEqual]: icons.operatorGreaterThanOrEqual,\n [Operator.In]: icons.operatorIn,\n [Operator.IsDefined]: icons.operatorIsDefined,\n [Operator.LessThan]: icons.operatorLessThan,\n [Operator.LessThanOrEqual]: icons.operatorLessThanOrEqual,\n [Operator.Not]: icons.operatorNot,\n };\n\n const operatorsByType = {\n [Type.Attribute]: [Operator.In, Operator.Not, Operator.IsDefined],\n [Type.Boolean]: [],\n [Type.String]: [Operator.In, Operator.Not],\n [Type.Number]: [\n Operator.In,\n Operator.Not,\n Operator.GreaterThan,\n Operator.LessThan,\n Operator.GreaterThanOrEqual,\n Operator.LessThanOrEqual,\n ],\n [Type.Date]: [Operator.In, Operator.Not],\n [Type.Any]: Object.values(Operator),\n };\n\n const operatorsForType = params.option\n ? operatorsByType[params.option.type]\n : params.parsedValue.name\n ? Object.values(Operator)\n : Object.values(Operator).filter(v => v !== Operator.IsDefined);\n\n const isDisabled =\n params.disabled || params.readonly || operatorsForType.length === 0 || !params.parsedValue.path;\n\n return html`\n <button\n title=${params.t(`operator_${operator ?? 'equal'}`)}\n class=${classMap({\n 'flex items-center justify-center w-m h-m transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'text-disabled cursor-default': isDisabled,\n 'hover-bg-contrast-5': !isDisabled,\n })}\n ?disabled=${isDisabled}\n @click=${() => {\n const newOperatorIndex = operator ? operatorsForType.indexOf(operator) : -1;\n const newOperator = operatorsForType[newOperatorIndex + 1] ?? null;\n\n params.onChange({\n ...params.parsedValue,\n operator: newOperator,\n value: params.parsedValue.value,\n });\n }}\n >\n <div aria-hidden=\"true\">${operator ? operatorToIcon[operator] : icons.operatorEqual}</div>\n </button>\n `;\n}\n"]}
|
|
@@ -3,9 +3,11 @@ import { I18n } from '../../I18n/I18n';
|
|
|
3
3
|
import { TemplateResult } from 'lit-html';
|
|
4
4
|
export declare type PathParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
readonly: boolean;
|
|
7
|
+
disabled: boolean;
|
|
6
8
|
options: Option[];
|
|
7
9
|
option: Option | null;
|
|
8
10
|
t: I18n['t'];
|
|
9
11
|
onChange: (newValue: ParsedValue) => void;
|
|
10
12
|
};
|
|
11
|
-
export declare function Path({ parsedValue,
|
|
13
|
+
export declare function Path({ parsedValue, disabled, readonly, options, option, t, onChange, }: PathParams): TemplateResult;
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { Input } from "./Input.js";
|
|
2
|
-
export function Path({ parsedValue,
|
|
2
|
+
export function Path({ parsedValue, disabled, readonly, options, option, t, onChange, }) {
|
|
3
3
|
return Input({
|
|
4
4
|
displayValue: option === null || option === void 0 ? void 0 : option.label,
|
|
5
|
+
disabled,
|
|
6
|
+
readonly,
|
|
5
7
|
value: parsedValue.path,
|
|
6
8
|
label: 'field',
|
|
7
9
|
list: options.map(option => ({ ...option, value: option.path })),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,mBAAgB;
|
|
1
|
+
{"version":3,"file":"Path.js","sourceRoot":"","sources":["../../../../../src/elements/public/QueryBuilder/components/Path.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,EAAE,mBAAgB;AAahC,MAAM,UAAU,IAAI,CAAC,EACnB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,MAAM,EACN,CAAC,EACD,QAAQ,GACG;IACX,OAAO,KAAK,CAAC;QACX,YAAY,EAAE,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,KAAK;QAC3B,QAAQ;QACR,QAAQ;QACR,KAAK,EAAE,WAAW,CAAC,IAAI;QACvB,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAChE,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM;QACV,CAAC,EAAE,CAAC;QACJ,QAAQ,EAAE,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;KAC5E,CAAC,CAAC;AACL,CAAC","sourcesContent":["import { Option, ParsedValue } from '../types';\n\nimport { I18n } from '../../I18n/I18n';\nimport { Input } from './Input';\nimport { TemplateResult } from 'lit-html';\n\nexport type PathParams = {\n parsedValue: ParsedValue;\n readonly: boolean;\n disabled: boolean;\n options: Option[];\n option: Option | null;\n t: I18n['t'];\n onChange: (newValue: ParsedValue) => void;\n};\n\nexport function Path({\n parsedValue,\n disabled,\n readonly,\n options,\n option,\n t,\n onChange,\n}: PathParams): TemplateResult {\n return Input({\n displayValue: option?.label,\n disabled,\n readonly,\n value: parsedValue.path,\n label: 'field',\n list: options.map(option => ({ ...option, value: option.path })),\n type: 'text',\n id: 'path',\n t: t,\n onChange: newPath => onChange({ operator: null, value: '', path: newPath }),\n });\n}\n"]}
|
|
@@ -3,6 +3,8 @@ import { TemplateResult } from 'lit-html';
|
|
|
3
3
|
import { I18n } from '../../I18n/I18n';
|
|
4
4
|
export declare type RangeValueParams = {
|
|
5
5
|
parsedValue: ParsedValue;
|
|
6
|
+
readonly: boolean;
|
|
7
|
+
disabled: boolean;
|
|
6
8
|
option: Option | null;
|
|
7
9
|
t: I18n['t'];
|
|
8
10
|
onChange: (newValue: ParsedValue) => void;
|