@foxy.io/elements 1.24.0-beta.1 → 1.24.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 +1 -1
- package/dist/cdn/foxy-address-form.js +1 -1
- package/dist/cdn/foxy-admin-subscription-card.js +1 -1
- package/dist/cdn/foxy-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-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-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 +1 -1
- package/dist/cdn/foxy-customer.js +1 -1
- package/dist/cdn/foxy-customers-table.js +1 -1
- package/dist/cdn/foxy-discount-builder.js +1 -1
- package/dist/cdn/foxy-discount-card.js +1 -1
- package/dist/cdn/foxy-discount-detail-card.js +1 -1
- package/dist/cdn/foxy-donation.js +1 -1
- package/dist/cdn/foxy-downloadable-card.js +1 -1
- package/dist/cdn/foxy-downloadable-form.js +1 -1
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-filter-attribute-card.js +1 -0
- package/dist/cdn/foxy-filter-attribute-form.js +1 -0
- 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-passkey-card.js +1 -1
- package/dist/cdn/foxy-passkey-form.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 +1 -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 +1 -1
- package/dist/cdn/foxy-subscription-settings-form.js +1 -1
- package/dist/cdn/foxy-subscriptions-table.js +1 -1
- package/dist/cdn/foxy-table.js +1 -1
- package/dist/cdn/foxy-tax-card.js +1 -1
- package/dist/cdn/foxy-tax-form.js +1 -1
- package/dist/cdn/foxy-template-config-form.js +1 -1
- package/dist/cdn/foxy-template-form.js +1 -1
- package/dist/cdn/foxy-template-set-card.js +1 -1
- package/dist/cdn/foxy-template-set-form.js +1 -1
- package/dist/cdn/foxy-transaction-card.js +1 -1
- package/dist/cdn/foxy-transaction.js +1 -1
- package/dist/cdn/foxy-transactions-table.js +1 -1
- package/dist/cdn/foxy-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-95f9f57d.js → shared-09d4fbb8.js} +1 -1
- package/dist/cdn/{shared-2b1da608.js → shared-0a248c0d.js} +1 -1
- package/dist/cdn/{shared-1add7ad8.js → shared-17d0db7f.js} +1 -1
- package/dist/cdn/{shared-f4561476.js → shared-1b060170.js} +1 -1
- package/dist/cdn/shared-1d08a5ad.js +1 -0
- package/dist/cdn/{shared-8a671339.js → shared-1d28220a.js} +1 -1
- package/dist/cdn/{shared-daf52401.js → shared-1eac92fa.js} +1 -1
- package/dist/cdn/{shared-4f999ef4.js → shared-25f64060.js} +1 -1
- package/dist/cdn/{shared-98755831.js → shared-307262a1.js} +1 -1
- package/dist/cdn/{shared-88455d27.js → shared-31651a9c.js} +1 -1
- package/dist/cdn/{shared-a89cb472.js → shared-332f2997.js} +1 -1
- package/dist/cdn/{shared-5e5784f4.js → shared-36725fe3.js} +1 -1
- package/dist/cdn/{shared-427496b1.js → shared-379b37e6.js} +1 -1
- package/dist/cdn/{shared-b5517c1b.js → shared-39f3b48d.js} +1 -1
- package/dist/cdn/{shared-1e866f0d.js → shared-432c5183.js} +1 -1
- package/dist/cdn/{shared-6f373aa7.js → shared-4674063d.js} +1 -1
- package/dist/cdn/{shared-4c7106a1.js → shared-479ad951.js} +1 -1
- package/dist/cdn/{shared-f7fc8f00.js → shared-4904bca4.js} +1 -1
- package/dist/cdn/{shared-a8cf402a.js → shared-4b67d699.js} +1 -1
- package/dist/cdn/{shared-919a9e3e.js → shared-4bbd600d.js} +1 -1
- package/dist/cdn/{shared-4b9546a9.js → shared-4c956a8e.js} +1 -1
- package/dist/cdn/{shared-ffb7548e.js → shared-4dc58b73.js} +1 -1
- package/dist/cdn/{shared-7a5338f3.js → shared-4dee79d4.js} +1 -1
- package/dist/cdn/{shared-f7469049.js → shared-51d28e6d.js} +1 -1
- package/dist/cdn/shared-53061389.js +1 -0
- package/dist/cdn/{shared-47915d1c.js → shared-59042137.js} +1 -1
- package/dist/cdn/{shared-7996b565.js → shared-64f98a0f.js} +1 -1
- package/dist/cdn/{shared-15517503.js → shared-65318cc1.js} +1 -1
- package/dist/cdn/shared-65ba8b39.js +1 -0
- package/dist/cdn/{shared-4b870dd4.js → shared-665d6cc4.js} +1 -1
- package/dist/cdn/{shared-5816e5e2.js → shared-69a21b9d.js} +1 -1
- package/dist/cdn/{shared-14ca3629.js → shared-6abdfcf2.js} +1 -1
- package/dist/cdn/{shared-d09de321.js → shared-6dc64a17.js} +1 -1
- package/dist/cdn/shared-6f84ac3e.js +1 -0
- package/dist/cdn/{shared-5db24486.js → shared-77a4d8e8.js} +1 -1
- package/dist/cdn/{shared-58c3cfdd.js → shared-7995407d.js} +1 -1
- package/dist/cdn/shared-7f5618ba.js +1 -0
- package/dist/cdn/{shared-52d27d8c.js → shared-8474bc4a.js} +1 -1
- package/dist/cdn/{shared-8e83d3b5.js → shared-88e36564.js} +1 -1
- package/dist/cdn/{shared-ca5e1c6b.js → shared-92f27a38.js} +1 -1
- package/dist/cdn/{shared-964cc4a1.js → shared-984fcdf5.js} +3 -3
- package/dist/cdn/{shared-b7d2ce09.js → shared-9c626d58.js} +1 -1
- package/dist/cdn/{shared-1fe6fb5d.js → shared-9caffb4d.js} +1 -1
- package/dist/cdn/{shared-4fd4a4d5.js → shared-a3c73e91.js} +1 -1
- package/dist/cdn/{shared-049782e9.js → shared-a92ae606.js} +1 -1
- package/dist/cdn/{shared-fae8bf5d.js → shared-b0f534ef.js} +1 -1
- package/dist/cdn/{shared-2084b156.js → shared-b3ac59eb.js} +1 -1
- package/dist/cdn/{shared-8ed26326.js → shared-b48a83b0.js} +1 -1
- package/dist/cdn/{shared-4e03da46.js → shared-ba658670.js} +1 -1
- package/dist/cdn/{shared-67fe293e.js → shared-bafcab47.js} +1 -1
- package/dist/cdn/{shared-0b5d50ce.js → shared-bdb51db9.js} +1 -1
- package/dist/cdn/{shared-a6a5bf97.js → shared-be24dd36.js} +1 -1
- package/dist/cdn/shared-bf62a65b.js +1 -0
- package/dist/cdn/{shared-eb900735.js → shared-c2d3b32b.js} +1 -1
- package/dist/cdn/{shared-689612d6.js → shared-c4240bc6.js} +1 -1
- package/dist/cdn/{shared-63bee480.js → shared-c6c6ba69.js} +1 -1
- package/dist/cdn/{shared-de790de9.js → shared-c7f2f1ab.js} +1 -1
- package/dist/cdn/{shared-ae0df6b9.js → shared-c97e0d6e.js} +1 -1
- package/dist/cdn/{shared-bd819b5b.js → shared-cf269a17.js} +1 -1
- package/dist/cdn/{shared-5cd8b9a2.js → shared-d14c2060.js} +4 -4
- package/dist/cdn/{shared-538d1b55.js → shared-db21f6db.js} +1 -1
- package/dist/cdn/{shared-eac3b80a.js → shared-dccf0420.js} +1 -1
- package/dist/cdn/{shared-99440d56.js → shared-dfe2602a.js} +1 -1
- package/dist/cdn/{shared-d8052238.js → shared-e10052d0.js} +1 -1
- package/dist/cdn/{shared-e62effb6.js → shared-e6828dbf.js} +1 -1
- package/dist/cdn/{shared-3b92a24f.js → shared-e6997950.js} +1 -1
- package/dist/cdn/{shared-58197bb8.js → shared-e7c3b7b6.js} +1 -1
- package/dist/cdn/{shared-432ae505.js → shared-e84fa0ea.js} +1 -1
- package/dist/cdn/{shared-7f9147ce.js → shared-e8e92fe3.js} +1 -1
- package/dist/cdn/shared-fe54babe.js +1 -0
- package/dist/cdn/{shared-cf05ab20.js → shared-fef9ecc1.js} +1 -1
- package/dist/cdn/{shared-7a386999.js → shared-ff992ead.js} +1 -1
- package/dist/cdn/translations/filter-attribute-card/en.json +8 -0
- package/dist/cdn/translations/filter-attribute-form/en.json +49 -0
- package/dist/cdn/translations/item-category-form/en.json +3 -3
- package/dist/cdn/translations/transaction-card/en.json +8 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.d.ts +31 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js +113 -0
- package/dist/elements/public/FilterAttributeCard/FilterAttributeCard.js.map +1 -0
- package/dist/elements/public/FilterAttributeCard/index.d.ts +4 -0
- package/dist/elements/public/FilterAttributeCard/index.js +6 -0
- package/dist/elements/public/FilterAttributeCard/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeCard/types.d.ts +3 -0
- package/dist/elements/public/FilterAttributeCard/types.js +2 -0
- package/dist/elements/public/FilterAttributeCard/types.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.d.ts +46 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js +131 -0
- package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/index.d.ts +6 -0
- package/dist/elements/public/FilterAttributeForm/index.js +8 -0
- package/dist/elements/public/FilterAttributeForm/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.d.ts +5 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js +34 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.d.ts +5 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js +7 -0
- package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js.map +1 -0
- package/dist/elements/public/FilterAttributeForm/types.d.ts +14 -0
- package/dist/elements/public/FilterAttributeForm/types.js +2 -0
- package/dist/elements/public/FilterAttributeForm/types.js.map +1 -0
- package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.d.ts +6 -0
- package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js +45 -3
- package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js.map +1 -1
- package/dist/elements/public/ItemCategoryForm/index.d.ts +1 -0
- package/dist/elements/public/ItemCategoryForm/index.js +1 -0
- package/dist/elements/public/ItemCategoryForm/index.js.map +1 -1
- package/dist/elements/public/TransactionCard/TransactionCard.js +20 -4
- package/dist/elements/public/TransactionCard/TransactionCard.js.map +1 -1
- package/dist/elements/public/TransactionCard/types.d.ts +4 -1
- package/dist/elements/public/TransactionCard/types.js.map +1 -1
- package/dist/elements/public/index.d.ts +2 -0
- package/dist/elements/public/index.defined.d.ts +2 -0
- package/dist/elements/public/index.defined.js +2 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +2 -0
- package/dist/elements/public/index.js.map +1 -1
- package/package.json +3 -2
- package/dist/cdn/shared-12931460.js +0 -1
- package/dist/cdn/shared-509a2f52.js +0 -1
- package/dist/cdn/shared-bfdbd733.js +0 -1
- package/dist/cdn/shared-c7f56c90.js +0 -1
- package/dist/cdn/shared-e41e53c0.js +0 -1
- package/dist/cdn/shared-ff45081a.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{C as t}from"./shared-
|
|
1
|
+
import{C as t}from"./shared-c7f2f1ab.js";import{R as e}from"./shared-09d4fbb8.js";import{I as s}from"./shared-a92ae606.js";import{h as i}from"./shared-7f33a83a.js";let r,a,d,l=t=>t;const o=e(t(s));class n extends o{constructor(){super(...arguments),this.templates={},this.__renderTitle=t=>i(r||(r=l` <div data-testid="title"> ${0} <div class="font-medium truncate"> ${0}​ </div> ${0} </div> `),this.renderTemplateOrSlot("title:before"),this.data?null==t?void 0:t(this.data):"",this.renderTemplateOrSlot("title:after")),this.__renderSubtitle=t=>i(a||(a=l` <div data-testid="subtitle"> ${0} <div class="text-tertiary truncate text-s sm-text-m"> ${0}​ </div> ${0} </div> `),this.renderTemplateOrSlot("subtitle:before"),this.data?null==t?void 0:t(this.data):"",this.renderTemplateOrSlot("subtitle:after"))}renderBody(t){const e=this.hiddenSelector;return i(d||(d=l` <div class="h-s flex flex-col justify-center relative text-body text-m font-lumo leading-xs sm-h-xs sm-flex-row sm-items-center sm-justify-between"> ${0} ${0} </div> `),e.matches("title",!0)?"":this.__renderTitle(null==t?void 0:t.title),e.matches("subtitle",!0)?"":this.__renderSubtitle(null==t?void 0:t.subtitle))}}export{n as T};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
{
|
|
2
|
+
"filter-query": {
|
|
3
|
+
"add_or_clause": "Add OR clause",
|
|
4
|
+
"add_value": "Add value",
|
|
5
|
+
"date": "{{value, date}}",
|
|
6
|
+
"delete": "Delete",
|
|
7
|
+
"field": "Field",
|
|
8
|
+
"hidden": "Hidden",
|
|
9
|
+
"is_defined_false": "Not defined",
|
|
10
|
+
"is_defined_true": "Defined",
|
|
11
|
+
"name": "Name",
|
|
12
|
+
"operator_equal": "Equal",
|
|
13
|
+
"operator_greaterthan": "Greater than",
|
|
14
|
+
"operator_greaterthanorequal": "Greater than or equal",
|
|
15
|
+
"operator_in": "One of",
|
|
16
|
+
"operator_isdefined": "Is defined",
|
|
17
|
+
"operator_lessthan": "Less than",
|
|
18
|
+
"operator_lessthanorequal": "Less than or equal",
|
|
19
|
+
"operator_not": "Not equal",
|
|
20
|
+
"or": "Or",
|
|
21
|
+
"query_builder_group": "Group of filters",
|
|
22
|
+
"query_builder_rule": "Filter",
|
|
23
|
+
"range_from": "From",
|
|
24
|
+
"range_to": "To",
|
|
25
|
+
"type": "Type",
|
|
26
|
+
"type_any": "Field of unknown type",
|
|
27
|
+
"type_attribute": "Key-value resource",
|
|
28
|
+
"type_date": "Date field",
|
|
29
|
+
"type_here": "Type here...",
|
|
30
|
+
"type_number": "Numeric field",
|
|
31
|
+
"type_string": "Text field",
|
|
32
|
+
"value": "Value"
|
|
33
|
+
},
|
|
34
|
+
"filter-name": {
|
|
35
|
+
"label": "Name",
|
|
36
|
+
"placeholder": "My custom filter",
|
|
37
|
+
"helper_text": ""
|
|
38
|
+
},
|
|
39
|
+
"action": {
|
|
40
|
+
"create": "Pin to sidebar",
|
|
41
|
+
"update": "Save changes",
|
|
42
|
+
"delete": "Unpin",
|
|
43
|
+
"reset": "Reset"
|
|
44
|
+
},
|
|
45
|
+
"spinner": {
|
|
46
|
+
"loading_busy": "Loading",
|
|
47
|
+
"loading_error": "Failed to load"
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -156,7 +156,7 @@
|
|
|
156
156
|
"increase": "increase"
|
|
157
157
|
},
|
|
158
158
|
"admin-email-template-uri": {
|
|
159
|
-
"label": "
|
|
159
|
+
"label": "Message to admin",
|
|
160
160
|
"placeholder": "None (don't send)",
|
|
161
161
|
"helper_text": ""
|
|
162
162
|
},
|
|
@@ -167,12 +167,12 @@
|
|
|
167
167
|
"v8n_required": "Please enter an email"
|
|
168
168
|
},
|
|
169
169
|
"customer-email-template-uri": {
|
|
170
|
-
"label": "
|
|
170
|
+
"label": "Message to customer",
|
|
171
171
|
"placeholder": "None (don't send)",
|
|
172
172
|
"helper_text": ""
|
|
173
173
|
},
|
|
174
174
|
"gift-recipient-email-template-uri": {
|
|
175
|
-
"label": "
|
|
175
|
+
"label": "Message to gift recipient",
|
|
176
176
|
"placeholder": "None (don't send)",
|
|
177
177
|
"helper_text": ""
|
|
178
178
|
},
|
|
@@ -17,6 +17,14 @@
|
|
|
17
17
|
"transaction_summary_plural": "{{most_expensive_item.name}} and {{count_minus_one}} more",
|
|
18
18
|
"transaction_verified": "Verified",
|
|
19
19
|
"transaction_voided": "Voided",
|
|
20
|
+
"type_subscription_cancellation": "Cancellation",
|
|
21
|
+
"type_subscription_modification": "Modification",
|
|
22
|
+
"type_subscription_renewal": "Renewal",
|
|
23
|
+
"type_updateinfo": "Update",
|
|
24
|
+
"type_new_order": "Order",
|
|
25
|
+
"type_new_subscription": "Subscription",
|
|
26
|
+
"source_MIT": "This transaction was initiated by merchant",
|
|
27
|
+
"source_CIT": "This transaction was initiated by customer",
|
|
20
28
|
"spinner": {
|
|
21
29
|
"loading_busy": "Loading",
|
|
22
30
|
"loading_empty": "No data",
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PropertyDeclarations } from 'lit-element';
|
|
2
|
+
import type { TemplateResult } from 'lit-html';
|
|
3
|
+
import type { Data } from './types';
|
|
4
|
+
import { InternalCard } from '../../internal/InternalCard/InternalCard';
|
|
5
|
+
declare const Base: typeof InternalCard & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
6
|
+
defaultNS: string;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Card element displaying a saved filter in Admin. Saved filters
|
|
10
|
+
* are powered by the Bookmark attribute format that allows adding custom sidebar items
|
|
11
|
+
* to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a
|
|
12
|
+
* relative URL of the bookmarked Admin page in the value.
|
|
13
|
+
*
|
|
14
|
+
* @element foxy-filter-attribute-card
|
|
15
|
+
* @since 1.24.0
|
|
16
|
+
*/
|
|
17
|
+
export declare class FilterAttributeCard extends Base<Data> {
|
|
18
|
+
static readonly countRefreshInterval: number;
|
|
19
|
+
static readonly filterQueryKey: string;
|
|
20
|
+
static readonly filterNameKey: string;
|
|
21
|
+
static get properties(): PropertyDeclarations;
|
|
22
|
+
getCountLoaderHref: ((value: string) => string) | null;
|
|
23
|
+
private readonly __countLoaderId;
|
|
24
|
+
private __refreshTimeout;
|
|
25
|
+
disconnectedCallback(): void;
|
|
26
|
+
updated(changes: Map<keyof this, unknown>): void;
|
|
27
|
+
render(): TemplateResult;
|
|
28
|
+
private __getCountLoader;
|
|
29
|
+
private __getValueParam;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
|
+
import { InternalCard } from "../../internal/InternalCard/InternalCard.js";
|
|
3
|
+
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
4
|
+
import { classMap } from "../../../utils/class-map.js";
|
|
5
|
+
import { decode } from 'html-entities';
|
|
6
|
+
import { html } from 'lit-html';
|
|
7
|
+
const NS = 'filter-attribute-card';
|
|
8
|
+
const Base = TranslatableMixin(InternalCard, NS);
|
|
9
|
+
/**
|
|
10
|
+
* Card element displaying a saved filter in Admin. Saved filters
|
|
11
|
+
* are powered by the Bookmark attribute format that allows adding custom sidebar items
|
|
12
|
+
* to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a
|
|
13
|
+
* relative URL of the bookmarked Admin page in the value.
|
|
14
|
+
*
|
|
15
|
+
* @element foxy-filter-attribute-card
|
|
16
|
+
* @since 1.24.0
|
|
17
|
+
*/
|
|
18
|
+
export class FilterAttributeCard extends Base {
|
|
19
|
+
constructor() {
|
|
20
|
+
super(...arguments);
|
|
21
|
+
this.getCountLoaderHref = null;
|
|
22
|
+
this.__countLoaderId = 'countLoader';
|
|
23
|
+
this.__refreshTimeout = null;
|
|
24
|
+
}
|
|
25
|
+
static get properties() {
|
|
26
|
+
return {
|
|
27
|
+
...super.properties,
|
|
28
|
+
countRefreshInterval: { attribute: 'count-refresh-interval', type: Number },
|
|
29
|
+
getCountLoaderHref: { attribute: false },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
disconnectedCallback() {
|
|
33
|
+
super.disconnectedCallback();
|
|
34
|
+
if (typeof this.__refreshTimeout === 'number')
|
|
35
|
+
clearTimeout(this.__refreshTimeout);
|
|
36
|
+
}
|
|
37
|
+
updated(changes) {
|
|
38
|
+
super.updated(changes);
|
|
39
|
+
if (typeof this.__refreshTimeout !== 'number') {
|
|
40
|
+
const constructor = this.constructor;
|
|
41
|
+
const interval = constructor.countRefreshInterval;
|
|
42
|
+
this.__refreshTimeout = setTimeout(() => { var _a; return (_a = this.__getCountLoader()) === null || _a === void 0 ? void 0 : _a.refresh(); }, interval);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
render() {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
const constructor = this.constructor;
|
|
48
|
+
const count = (_b = (_a = this.__getCountLoader()) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.total_items;
|
|
49
|
+
let countUrl;
|
|
50
|
+
try {
|
|
51
|
+
if (this.data && this.getCountLoaderHref) {
|
|
52
|
+
countUrl = new URL(this.getCountLoaderHref(decode(this.data.value)));
|
|
53
|
+
countUrl.searchParams.set('limit', '1');
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (_c) {
|
|
57
|
+
countUrl = undefined;
|
|
58
|
+
}
|
|
59
|
+
return html `
|
|
60
|
+
<foxy-nucleon
|
|
61
|
+
infer=""
|
|
62
|
+
href=${ifDefined(countUrl === null || countUrl === void 0 ? void 0 : countUrl.toString())}
|
|
63
|
+
id=${this.__countLoaderId}
|
|
64
|
+
@update=${() => this.requestUpdate()}
|
|
65
|
+
>
|
|
66
|
+
</foxy-nucleon>
|
|
67
|
+
|
|
68
|
+
<div
|
|
69
|
+
class=${classMap({
|
|
70
|
+
'transition-colors flex gap-s font-medium text-m leading-xs rounded-s': true,
|
|
71
|
+
'bg-contrast-5': !this.in('fail') && !this.data,
|
|
72
|
+
'bg-error-10': this.in('fail'),
|
|
73
|
+
})}
|
|
74
|
+
>
|
|
75
|
+
<span
|
|
76
|
+
class=${classMap({
|
|
77
|
+
'transition-opacity truncate min-w-0': true,
|
|
78
|
+
'opacity-0': !this.data,
|
|
79
|
+
})}
|
|
80
|
+
>
|
|
81
|
+
${this.__getValueParam(constructor.filterNameKey) ||
|
|
82
|
+
html `<foxy-i18n infer="" key="no_name"></foxy-i18n>`}
|
|
83
|
+
</span>
|
|
84
|
+
|
|
85
|
+
<span
|
|
86
|
+
class=${classMap({
|
|
87
|
+
'transition-opacity bg-contrast-5 px-xs rounded-s': true,
|
|
88
|
+
'opacity-0': !this.data || typeof count !== 'number',
|
|
89
|
+
})}
|
|
90
|
+
>
|
|
91
|
+
${count !== null && count !== void 0 ? count : 0}
|
|
92
|
+
</span>
|
|
93
|
+
</div>
|
|
94
|
+
`;
|
|
95
|
+
}
|
|
96
|
+
__getCountLoader() {
|
|
97
|
+
return this.renderRoot.querySelector(`#${this.__countLoaderId}`);
|
|
98
|
+
}
|
|
99
|
+
__getValueParam(key) {
|
|
100
|
+
var _a, _b, _c;
|
|
101
|
+
try {
|
|
102
|
+
const url = new URL(decode((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a.value) !== null && _b !== void 0 ? _b : ''), 'https://example.com');
|
|
103
|
+
return (_c = url.searchParams.get(key)) !== null && _c !== void 0 ? _c : '';
|
|
104
|
+
}
|
|
105
|
+
catch (_d) {
|
|
106
|
+
return '';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
FilterAttributeCard.countRefreshInterval = 60000;
|
|
111
|
+
FilterAttributeCard.filterQueryKey = 'filter_query';
|
|
112
|
+
FilterAttributeCard.filterNameKey = 'filter_name';
|
|
113
|
+
//# sourceMappingURL=FilterAttributeCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterAttributeCard.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeCard/FilterAttributeCard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { TemplateResult } from 'lit-html';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalCard } from '../../internal/InternalCard/InternalCard';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { decode } from 'html-entities';\nimport { html } from 'lit-html';\n\nconst NS = 'filter-attribute-card';\nconst Base = TranslatableMixin(InternalCard, NS);\n\n/**\n * Card element displaying a saved filter in Admin. Saved filters\n * are powered by the Bookmark attribute format that allows adding custom sidebar items\n * to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a\n * relative URL of the bookmarked Admin page in the value.\n *\n * @element foxy-filter-attribute-card\n * @since 1.24.0\n */\nexport class FilterAttributeCard extends Base<Data> {\n static readonly countRefreshInterval: number = 60000;\n\n static readonly filterQueryKey: string = 'filter_query';\n\n static readonly filterNameKey: string = 'filter_name';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n countRefreshInterval: { attribute: 'count-refresh-interval', type: Number },\n getCountLoaderHref: { attribute: false },\n };\n }\n\n getCountLoaderHref: ((value: string) => string) | null = null;\n\n private readonly __countLoaderId = 'countLoader';\n\n private __refreshTimeout: NodeJS.Timeout | null = null;\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n if (typeof this.__refreshTimeout === 'number') clearTimeout(this.__refreshTimeout);\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n if (typeof this.__refreshTimeout !== 'number') {\n const constructor = this.constructor as typeof FilterAttributeCard;\n const interval = constructor.countRefreshInterval;\n this.__refreshTimeout = setTimeout(() => this.__getCountLoader()?.refresh(), interval);\n }\n }\n\n render(): TemplateResult {\n const constructor = this.constructor as typeof FilterAttributeCard;\n const count = this.__getCountLoader()?.data?.total_items;\n let countUrl: URL | undefined;\n\n try {\n if (this.data && this.getCountLoaderHref) {\n countUrl = new URL(this.getCountLoaderHref(decode(this.data.value)));\n countUrl.searchParams.set('limit', '1');\n }\n } catch {\n countUrl = undefined;\n }\n\n return html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(countUrl?.toString())}\n id=${this.__countLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <div\n class=${classMap({\n 'transition-colors flex gap-s font-medium text-m leading-xs rounded-s': true,\n 'bg-contrast-5': !this.in('fail') && !this.data,\n 'bg-error-10': this.in('fail'),\n })}\n >\n <span\n class=${classMap({\n 'transition-opacity truncate min-w-0': true,\n 'opacity-0': !this.data,\n })}\n >\n ${this.__getValueParam(constructor.filterNameKey) ||\n html`<foxy-i18n infer=\"\" key=\"no_name\"></foxy-i18n>`}\n </span>\n\n <span\n class=${classMap({\n 'transition-opacity bg-contrast-5 px-xs rounded-s': true,\n 'opacity-0': !this.data || typeof count !== 'number',\n })}\n >\n ${count ?? 0}\n </span>\n </div>\n `;\n }\n\n private __getCountLoader() {\n type AnyCollection = NucleonElement<Resource<Rels.Attributes>>;\n type Loader = Omit<AnyCollection, '_embedded'> & { _embedded: unknown };\n return this.renderRoot.querySelector<Loader>(`#${this.__countLoaderId}`);\n }\n\n private __getValueParam(key: string) {\n try {\n const url = new URL(decode(this.data?.value ?? ''), 'https://example.com');\n return url.searchParams.get(key) ?? '';\n } catch {\n return '';\n }\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import "../../internal/InternalCard/index.js";
|
|
2
|
+
import "../NucleonElement/index.js";
|
|
3
|
+
import { FilterAttributeCard } from "./FilterAttributeCard.js";
|
|
4
|
+
customElements.define('foxy-filter-attribute-card', FilterAttributeCard);
|
|
5
|
+
export { FilterAttributeCard };
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeCard/index.ts"],"names":[],"mappings":"AAAA,8CAA2C;AAC3C,oCAAiC;AAEjC,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import '../../internal/InternalCard/index';\nimport '../NucleonElement/index';\n\nimport { FilterAttributeCard } from './FilterAttributeCard';\n\ncustomElements.define('foxy-filter-attribute-card', FilterAttributeCard);\n\nexport { FilterAttributeCard };\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeCard/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport type Data = Resource<Rels.Attribute>;\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { PropertyDeclarations } from 'lit-element';
|
|
2
|
+
import type { TemplateResult } from 'lit-html';
|
|
3
|
+
import type { Option } from '../QueryBuilder/types';
|
|
4
|
+
import type { Data } from './types';
|
|
5
|
+
import { BooleanSelector } from '@foxy.io/sdk/core';
|
|
6
|
+
import { InternalForm } from '../../internal/InternalForm/InternalForm';
|
|
7
|
+
declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
|
|
8
|
+
defaultNS: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Form element for creating and editing saved filters in Admin. Saved filters
|
|
12
|
+
* are powered by the Bookmark attribute format that allows adding custom sidebar items
|
|
13
|
+
* to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a
|
|
14
|
+
* relative URL of the bookmarked Admin page in the value.
|
|
15
|
+
*
|
|
16
|
+
* @slot filter-query:before
|
|
17
|
+
* @slot filter-query:after
|
|
18
|
+
* @slot filter-name:before
|
|
19
|
+
* @slot filter-name:after
|
|
20
|
+
* @slot action:before
|
|
21
|
+
* @slot action:after
|
|
22
|
+
*
|
|
23
|
+
* @element foxy-filter-attribute-form
|
|
24
|
+
* @since 1.24.0
|
|
25
|
+
*/
|
|
26
|
+
export declare class FilterAttributeForm extends Base<Data> {
|
|
27
|
+
static readonly attributeVisibility: Data['visibility'];
|
|
28
|
+
static readonly filterQueryKey: string;
|
|
29
|
+
static readonly attributeName: string;
|
|
30
|
+
static readonly filterNameKey: string;
|
|
31
|
+
static get properties(): PropertyDeclarations;
|
|
32
|
+
/** Admin page pathname. */
|
|
33
|
+
pathname: string | null;
|
|
34
|
+
/** Filter options passed down to `QueryBuilder.options.` */
|
|
35
|
+
options: Option[];
|
|
36
|
+
private readonly __filterNameGetValue;
|
|
37
|
+
private readonly __filterNameSetValue;
|
|
38
|
+
get hiddenSelector(): BooleanSelector;
|
|
39
|
+
renderBody(): TemplateResult;
|
|
40
|
+
updated(changes: Map<keyof this, unknown>): void;
|
|
41
|
+
submit(): void;
|
|
42
|
+
private __getValueParam;
|
|
43
|
+
private __setValueParam;
|
|
44
|
+
private __handleFilterQueryChange;
|
|
45
|
+
}
|
|
46
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
import { TranslatableMixin } from "../../../mixins/translatable.js";
|
|
2
|
+
import { BooleanSelector } from '@foxy.io/sdk/core';
|
|
3
|
+
import { encode, decode } from 'html-entities';
|
|
4
|
+
import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
|
|
5
|
+
import { html } from 'lit-html';
|
|
6
|
+
const NS = 'filter-attribute-form';
|
|
7
|
+
const Base = TranslatableMixin(InternalForm, NS);
|
|
8
|
+
/**
|
|
9
|
+
* Form element for creating and editing saved filters in Admin. Saved filters
|
|
10
|
+
* are powered by the Bookmark attribute format that allows adding custom sidebar items
|
|
11
|
+
* to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a
|
|
12
|
+
* relative URL of the bookmarked Admin page in the value.
|
|
13
|
+
*
|
|
14
|
+
* @slot filter-query:before
|
|
15
|
+
* @slot filter-query:after
|
|
16
|
+
* @slot filter-name:before
|
|
17
|
+
* @slot filter-name:after
|
|
18
|
+
* @slot action:before
|
|
19
|
+
* @slot action:after
|
|
20
|
+
*
|
|
21
|
+
* @element foxy-filter-attribute-form
|
|
22
|
+
* @since 1.24.0
|
|
23
|
+
*/
|
|
24
|
+
export class FilterAttributeForm extends Base {
|
|
25
|
+
constructor() {
|
|
26
|
+
super(...arguments);
|
|
27
|
+
/** Admin page pathname. */
|
|
28
|
+
this.pathname = null;
|
|
29
|
+
/** Filter options passed down to `QueryBuilder.options.` */
|
|
30
|
+
this.options = [];
|
|
31
|
+
this.__filterNameGetValue = () => {
|
|
32
|
+
const constructor = this.constructor;
|
|
33
|
+
return this.__getValueParam(constructor.filterNameKey);
|
|
34
|
+
};
|
|
35
|
+
this.__filterNameSetValue = (v) => {
|
|
36
|
+
const constructor = this.constructor;
|
|
37
|
+
this.__setValueParam(constructor.filterNameKey, v);
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
static get properties() {
|
|
41
|
+
return {
|
|
42
|
+
...super.properties,
|
|
43
|
+
pathname: {},
|
|
44
|
+
options: { type: Array },
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
get hiddenSelector() {
|
|
48
|
+
const alwaysHidden = [];
|
|
49
|
+
const constructor = this.constructor;
|
|
50
|
+
const filterQuery = this.__getValueParam(constructor.filterQueryKey);
|
|
51
|
+
const hasData = !!this.data;
|
|
52
|
+
if (!hasData)
|
|
53
|
+
alwaysHidden.push('filter-name');
|
|
54
|
+
if (!filterQuery && !hasData)
|
|
55
|
+
alwaysHidden.push('action');
|
|
56
|
+
return new BooleanSelector(`${alwaysHidden.join(' ')} ${super.hiddenSelector}`.trim());
|
|
57
|
+
}
|
|
58
|
+
renderBody() {
|
|
59
|
+
const constructor = this.constructor;
|
|
60
|
+
return html `
|
|
61
|
+
<foxy-query-builder
|
|
62
|
+
infer="filter-query"
|
|
63
|
+
.options=${this.options}
|
|
64
|
+
.value=${this.__getValueParam(constructor.filterQueryKey)}
|
|
65
|
+
@change=${this.__handleFilterQueryChange}
|
|
66
|
+
>
|
|
67
|
+
</foxy-query-builder>
|
|
68
|
+
|
|
69
|
+
<foxy-internal-text-control
|
|
70
|
+
infer="filter-name"
|
|
71
|
+
.getValue=${this.__filterNameGetValue}
|
|
72
|
+
.setValue=${this.__filterNameSetValue}
|
|
73
|
+
>
|
|
74
|
+
</foxy-internal-text-control>
|
|
75
|
+
|
|
76
|
+
<foxy-internal-filter-attribute-form-action-control infer="action">
|
|
77
|
+
</foxy-internal-filter-attribute-form-action-control>
|
|
78
|
+
`;
|
|
79
|
+
}
|
|
80
|
+
updated(changes) {
|
|
81
|
+
var _a;
|
|
82
|
+
super.updated(changes);
|
|
83
|
+
if (typeof this.form.value === 'string') {
|
|
84
|
+
const url = new URL(decode(this.form.value), 'https://example.com');
|
|
85
|
+
url.pathname = (_a = this.pathname) !== null && _a !== void 0 ? _a : '';
|
|
86
|
+
const value = encode(url.toString().substring(url.origin.length));
|
|
87
|
+
if (value !== this.form.value)
|
|
88
|
+
this.edit({ value });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
submit() {
|
|
92
|
+
const constructor = this.constructor;
|
|
93
|
+
this.edit({
|
|
94
|
+
visibility: constructor.attributeVisibility,
|
|
95
|
+
name: constructor.attributeName,
|
|
96
|
+
});
|
|
97
|
+
super.submit();
|
|
98
|
+
}
|
|
99
|
+
__getValueParam(key) {
|
|
100
|
+
var _a, _b;
|
|
101
|
+
try {
|
|
102
|
+
const url = new URL(decode((_a = this.form.value) !== null && _a !== void 0 ? _a : ''), 'https://example.com');
|
|
103
|
+
return (_b = url.searchParams.get(key)) !== null && _b !== void 0 ? _b : '';
|
|
104
|
+
}
|
|
105
|
+
catch (_c) {
|
|
106
|
+
return '';
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
__setValueParam(key, value) {
|
|
110
|
+
var _a;
|
|
111
|
+
try {
|
|
112
|
+
const url = new URL(decode((_a = this.form.value) !== null && _a !== void 0 ? _a : ''), 'https://example.com');
|
|
113
|
+
url.searchParams.set(key, value);
|
|
114
|
+
this.edit({ value: encode(url.toString().substring(url.origin.length)) });
|
|
115
|
+
}
|
|
116
|
+
catch (_b) {
|
|
117
|
+
// ignore
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
__handleFilterQueryChange(evt) {
|
|
121
|
+
var _a;
|
|
122
|
+
const constructor = this.constructor;
|
|
123
|
+
const element = evt.currentTarget;
|
|
124
|
+
this.__setValueParam(constructor.filterQueryKey, (_a = element.value) !== null && _a !== void 0 ? _a : '');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
FilterAttributeForm.attributeVisibility = 'restricted';
|
|
128
|
+
FilterAttributeForm.filterQueryKey = 'filter_query';
|
|
129
|
+
FilterAttributeForm.attributeName = 'foxy-admin-bookmark';
|
|
130
|
+
FilterAttributeForm.filterNameKey = 'filter_name';
|
|
131
|
+
//# sourceMappingURL=FilterAttributeForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterAttributeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/FilterAttributeForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport type { Option } from '../QueryBuilder/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { encode, decode } from 'html-entities';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'filter-attribute-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating and editing saved filters in Admin. Saved filters\n * are powered by the Bookmark attribute format that allows adding custom sidebar items\n * to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a\n * relative URL of the bookmarked Admin page in the value.\n *\n * @slot filter-query:before\n * @slot filter-query:after\n * @slot filter-name:before\n * @slot filter-name:after\n * @slot action:before\n * @slot action:after\n *\n * @element foxy-filter-attribute-form\n * @since 1.24.0\n */\nexport class FilterAttributeForm extends Base<Data> {\n static readonly attributeVisibility: Data['visibility'] = 'restricted';\n\n static readonly filterQueryKey: string = 'filter_query';\n\n static readonly attributeName: string = 'foxy-admin-bookmark';\n\n static readonly filterNameKey: string = 'filter_name';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n pathname: {},\n options: { type: Array },\n };\n }\n\n /** Admin page pathname. */\n pathname: string | null = null;\n\n /** Filter options passed down to `QueryBuilder.options.` */\n options: Option[] = [];\n\n private readonly __filterNameGetValue = () => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n return this.__getValueParam(constructor.filterNameKey);\n };\n\n private readonly __filterNameSetValue = (v: string) => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n this.__setValueParam(constructor.filterNameKey, v);\n };\n\n get hiddenSelector(): BooleanSelector {\n const alwaysHidden: string[] = [];\n const constructor = this.constructor as typeof FilterAttributeForm;\n const filterQuery = this.__getValueParam(constructor.filterQueryKey);\n const hasData = !!this.data;\n\n if (!hasData) alwaysHidden.push('filter-name');\n if (!filterQuery && !hasData) alwaysHidden.push('action');\n\n return new BooleanSelector(`${alwaysHidden.join(' ')} ${super.hiddenSelector}`.trim());\n }\n\n renderBody(): TemplateResult {\n const constructor = this.constructor as typeof FilterAttributeForm;\n\n return html`\n <foxy-query-builder\n infer=\"filter-query\"\n .options=${this.options}\n .value=${this.__getValueParam(constructor.filterQueryKey)}\n @change=${this.__handleFilterQueryChange}\n >\n </foxy-query-builder>\n\n <foxy-internal-text-control\n infer=\"filter-name\"\n .getValue=${this.__filterNameGetValue}\n .setValue=${this.__filterNameSetValue}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-filter-attribute-form-action-control infer=\"action\">\n </foxy-internal-filter-attribute-form-action-control>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n if (typeof this.form.value === 'string') {\n const url = new URL(decode(this.form.value), 'https://example.com');\n url.pathname = this.pathname ?? '';\n const value = encode(url.toString().substring(url.origin.length));\n if (value !== this.form.value) this.edit({ value });\n }\n }\n\n submit(): void {\n const constructor = this.constructor as typeof FilterAttributeForm;\n\n this.edit({\n visibility: constructor.attributeVisibility,\n name: constructor.attributeName,\n });\n\n super.submit();\n }\n\n private __getValueParam(key: string) {\n try {\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n return url.searchParams.get(key) ?? '';\n } catch {\n return '';\n }\n }\n\n private __setValueParam(key: string, value: string) {\n try {\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n url.searchParams.set(key, value);\n this.edit({ value: encode(url.toString().substring(url.origin.length)) });\n } catch {\n // ignore\n }\n }\n\n private __handleFilterQueryChange(evt: CustomEvent) {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const element = evt.currentTarget as QueryBuilder;\n this.__setValueParam(constructor.filterQueryKey, element.value ?? '');\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import './internal/InternalFilterAttributeFormActionControl/index';
|
|
2
|
+
import '../../internal/InternalTextControl/index';
|
|
3
|
+
import '../../internal/InternalForm/index';
|
|
4
|
+
import '../QueryBuilder/index';
|
|
5
|
+
import { FilterAttributeForm } from './FilterAttributeForm';
|
|
6
|
+
export { FilterAttributeForm };
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import "./internal/InternalFilterAttributeFormActionControl/index.js";
|
|
2
|
+
import "../../internal/InternalTextControl/index.js";
|
|
3
|
+
import "../../internal/InternalForm/index.js";
|
|
4
|
+
import "../QueryBuilder/index.js";
|
|
5
|
+
import { FilterAttributeForm } from "./FilterAttributeForm.js";
|
|
6
|
+
customElements.define('foxy-filter-attribute-form', FilterAttributeForm);
|
|
7
|
+
export { FilterAttributeForm };
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/index.ts"],"names":[],"mappings":"AAAA,sEAAmE;AACnE,qDAAkD;AAClD,8CAA2C;AAC3C,kCAA+B;AAE/B,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import './internal/InternalFilterAttributeFormActionControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../QueryBuilder/index';\n\nimport { FilterAttributeForm } from './FilterAttributeForm';\n\ncustomElements.define('foxy-filter-attribute-form', FilterAttributeForm);\n\nexport { FilterAttributeForm };\n"]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { InternalControl } from "../../../../internal/InternalControl/InternalControl.js";
|
|
2
|
+
import { html } from 'lit-html';
|
|
3
|
+
export class InternalFilterAttributeFormActionControl extends InternalControl {
|
|
4
|
+
renderControl() {
|
|
5
|
+
const nucleon = this.nucleon;
|
|
6
|
+
const hasChanges = nucleon === null || nucleon === void 0 ? void 0 : nucleon.in({ idle: { snapshot: 'dirty' } });
|
|
7
|
+
const hasData = !!(nucleon === null || nucleon === void 0 ? void 0 : nucleon.data);
|
|
8
|
+
return html `
|
|
9
|
+
<div class="grid grid-cols-2 gap-m">
|
|
10
|
+
${hasData && hasChanges
|
|
11
|
+
? html `
|
|
12
|
+
<vaadin-button
|
|
13
|
+
theme="contrast"
|
|
14
|
+
?disabled=${this.disabled}
|
|
15
|
+
@click=${() => nucleon === null || nucleon === void 0 ? void 0 : nucleon.undo()}
|
|
16
|
+
>
|
|
17
|
+
<foxy-i18n infer="" key="reset"></foxy-i18n>
|
|
18
|
+
</vaadin-button>
|
|
19
|
+
`
|
|
20
|
+
: ''}
|
|
21
|
+
<vaadin-button
|
|
22
|
+
theme=${hasData ? (hasChanges ? 'secondary' : 'error') : 'success'}
|
|
23
|
+
class=${hasData && hasChanges ? '' : 'col-span-2'}
|
|
24
|
+
?disabled=${this.disabled}
|
|
25
|
+
@click=${() => (!hasData || hasChanges ? nucleon === null || nucleon === void 0 ? void 0 : nucleon.submit() : nucleon === null || nucleon === void 0 ? void 0 : nucleon.delete())}
|
|
26
|
+
>
|
|
27
|
+
<foxy-i18n infer="" key=${hasData ? (hasChanges ? 'update' : 'delete') : 'create'}>
|
|
28
|
+
</foxy-i18n>
|
|
29
|
+
</vaadin-button>
|
|
30
|
+
</div>
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=InternalFilterAttributeFormActionControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalFilterAttributeFormActionControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,gEAA6D;AACvF,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,wCAAyC,SAAQ,eAAe;IAC3E,aAAa;QACX,MAAM,OAAO,GAAG,IAAI,CAAC,OAAqC,CAAC;QAC3D,MAAM,UAAU,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,OAAO,GAAG,CAAC,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,CAAA,CAAC;QAEhC,OAAO,IAAI,CAAA;;UAEL,OAAO,IAAI,UAAU;YACrB,CAAC,CAAC,IAAI,CAAA;;;4BAGY,IAAI,CAAC,QAAQ;yBAChB,GAAG,EAAE,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE;;;;aAIjC;YACH,CAAC,CAAC,EAAE;;kBAEI,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;kBAC1D,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY;sBACrC,IAAI,CAAC,QAAQ;mBAChB,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,UAAU,CAAC,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,GAAG,CAAC,CAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,EAAE,CAAC;;oCAErD,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ;;;;KAItF,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { FilterAttributeForm } from '../../FilterAttributeForm';\nimport type { TemplateResult } from 'lit-html';\n\nimport { InternalControl } from '../../../../internal/InternalControl/InternalControl';\nimport { html } from 'lit-html';\n\nexport class InternalFilterAttributeFormActionControl extends InternalControl {\n renderControl(): TemplateResult {\n const nucleon = this.nucleon as FilterAttributeForm | null;\n const hasChanges = nucleon?.in({ idle: { snapshot: 'dirty' } });\n const hasData = !!nucleon?.data;\n\n return html`\n <div class=\"grid grid-cols-2 gap-m\">\n ${hasData && hasChanges\n ? html`\n <vaadin-button\n theme=\"contrast\"\n ?disabled=${this.disabled}\n @click=${() => nucleon?.undo()}\n >\n <foxy-i18n infer=\"\" key=\"reset\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n <vaadin-button\n theme=${hasData ? (hasChanges ? 'secondary' : 'error') : 'success'}\n class=${hasData && hasChanges ? '' : 'col-span-2'}\n ?disabled=${this.disabled}\n @click=${() => (!hasData || hasChanges ? nucleon?.submit() : nucleon?.delete())}\n >\n <foxy-i18n infer=\"\" key=${hasData ? (hasChanges ? 'update' : 'delete') : 'create'}>\n </foxy-i18n>\n </vaadin-button>\n </div>\n `;\n }\n}\n"]}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import '../../../../internal/InternalControl/index';
|
|
2
|
+
import '@vaadin/vaadin-button';
|
|
3
|
+
import '../../../I18n/index';
|
|
4
|
+
import { InternalFilterAttributeFormActionControl as Control } from './InternalFilterAttributeFormActionControl';
|
|
5
|
+
export { Control as InternalFilterAttributeFormActionControl };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import "../../../../internal/InternalControl/index.js";
|
|
2
|
+
import '@vaadin/vaadin-button';
|
|
3
|
+
import "../../../I18n/index.js";
|
|
4
|
+
import { InternalFilterAttributeFormActionControl as Control } from "./InternalFilterAttributeFormActionControl.js";
|
|
5
|
+
customElements.define('foxy-internal-filter-attribute-form-action-control', Control);
|
|
6
|
+
export { Control as InternalFilterAttributeFormActionControl };
|
|
7
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.ts"],"names":[],"mappings":"AAAA,uDAAoD;AACpD,OAAO,uBAAuB,CAAC;AAC/B,gCAA6B;AAE7B,OAAO,EAAE,wCAAwC,IAAI,OAAO,EAAE,sDAAmD;AAEjH,cAAc,CAAC,MAAM,CAAC,oDAAoD,EAAE,OAAO,CAAC,CAAC;AAErF,OAAO,EAAE,OAAO,IAAI,wCAAwC,EAAE,CAAC","sourcesContent":["import '../../../../internal/InternalControl/index';\nimport '@vaadin/vaadin-button';\nimport '../../../I18n/index';\n\nimport { InternalFilterAttributeFormActionControl as Control } from './InternalFilterAttributeFormActionControl';\n\ncustomElements.define('foxy-internal-filter-attribute-form-action-control', Control);\n\nexport { Control as InternalFilterAttributeFormActionControl };\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { FilterAttributeForm } from './FilterAttributeForm';
|
|
2
|
+
import type { Renderer } from '../../../mixins/configurable';
|
|
3
|
+
import type { Resource } from '@foxy.io/sdk/core';
|
|
4
|
+
import type { Rels } from '@foxy.io/sdk/backend';
|
|
5
|
+
export declare type Templates = {
|
|
6
|
+
'filter-query:before': Renderer<FilterAttributeForm>;
|
|
7
|
+
'filter-query:after': Renderer<FilterAttributeForm>;
|
|
8
|
+
'filter-name:before': Renderer<FilterAttributeForm>;
|
|
9
|
+
'filter-name:after': Renderer<FilterAttributeForm>;
|
|
10
|
+
'action:before': Renderer<FilterAttributeForm>;
|
|
11
|
+
'action:after': Renderer<FilterAttributeForm>;
|
|
12
|
+
};
|
|
13
|
+
export declare type Data = Resource<Rels.Attribute>;
|
|
14
|
+
export type { Option } from '../QueryBuilder/types';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { FilterAttributeForm } from './FilterAttributeForm';\nimport type { Renderer } from '../../../mixins/configurable';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Rels } from '@foxy.io/sdk/backend';\n\nexport type Templates = {\n 'filter-query:before': Renderer<FilterAttributeForm>;\n 'filter-query:after': Renderer<FilterAttributeForm>;\n 'filter-name:before': Renderer<FilterAttributeForm>;\n 'filter-name:after': Renderer<FilterAttributeForm>;\n 'action:before': Renderer<FilterAttributeForm>;\n 'action:after': Renderer<FilterAttributeForm>;\n};\n\nexport type Data = Resource<Rels.Attribute>;\n\nexport type { Option } from '../QueryBuilder/types';\n"]}
|