@foxy.io/elements 1.27.0-beta.5 → 1.27.0-beta.6
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-billing-address-card.js +1 -1
- package/dist/cdn/foxy-cancellation-form.js +1 -1
- package/dist/cdn/foxy-cart-card.js +1 -1
- package/dist/cdn/foxy-cart-form.js +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-card.js +1 -0
- package/dist/cdn/foxy-coupon-code-form.js +1 -1
- package/dist/cdn/foxy-coupon-codes-form.js +1 -1
- package/dist/cdn/foxy-coupon-detail-card.js +1 -1
- package/dist/cdn/foxy-coupon-form.js +1 -1
- package/dist/cdn/foxy-custom-field-card.js +1 -1
- package/dist/cdn/foxy-custom-field-form.js +1 -1
- package/dist/cdn/foxy-customer-api.js +1 -1
- package/dist/cdn/foxy-customer-card.js +1 -1
- package/dist/cdn/foxy-customer-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
- package/dist/cdn/foxy-customer-portal-settings.js +1 -1
- package/dist/cdn/foxy-customer-portal.js +2 -2
- package/dist/cdn/foxy-customer.js +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 +2 -2
- package/dist/cdn/foxy-email-template-card.js +1 -1
- package/dist/cdn/foxy-email-template-form.js +1 -1
- package/dist/cdn/foxy-error-entry-card.js +1 -1
- package/dist/cdn/foxy-filter-attribute-card.js +1 -1
- package/dist/cdn/foxy-filter-attribute-form.js +1 -1
- package/dist/cdn/foxy-form-dialog.js +1 -1
- package/dist/cdn/foxy-generate-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-card.js +1 -1
- package/dist/cdn/foxy-gift-card-code-form.js +1 -1
- package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
- package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
- package/dist/cdn/foxy-gift-card-form.js +1 -1
- package/dist/cdn/foxy-i18n-editor.js +2 -2
- package/dist/cdn/foxy-i18n.js +1 -1
- package/dist/cdn/foxy-integration-card.js +1 -1
- package/dist/cdn/foxy-integration-form.js +1 -1
- package/dist/cdn/foxy-item-card.js +1 -1
- package/dist/cdn/foxy-item-category-card.js +1 -1
- package/dist/cdn/foxy-item-category-form.js +1 -1
- package/dist/cdn/foxy-item-form.js +3 -3
- package/dist/cdn/foxy-item-option-card.js +1 -1
- package/dist/cdn/foxy-item-option-form.js +1 -1
- package/dist/cdn/foxy-items-form.js +1 -1
- package/dist/cdn/foxy-native-integration-card.js +1 -1
- package/dist/cdn/foxy-native-integration-form.js +1 -1
- package/dist/cdn/foxy-nucleon-element.js +1 -1
- package/dist/cdn/foxy-pagination.js +1 -1
- package/dist/cdn/foxy-passkey-card.js +1 -1
- package/dist/cdn/foxy-passkey-form.js +1 -1
- package/dist/cdn/foxy-payment-card.js +1 -1
- package/dist/cdn/foxy-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
- package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
- package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
- package/dist/cdn/foxy-query-builder.js +1 -1
- package/dist/cdn/foxy-report-form.js +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 +1 -1
- 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-20c4310b.js → shared-065dbdf6.js} +1 -1
- package/dist/cdn/{shared-0f49d9c3.js → shared-07d5e225.js} +1 -1
- package/dist/cdn/{shared-82435697.js → shared-0e8dceb8.js} +1 -1
- package/dist/cdn/{shared-6ef4ce19.js → shared-1a9e80fa.js} +1 -1
- package/dist/cdn/{shared-e4e0dc11.js → shared-1d6beb48.js} +1 -1
- package/dist/cdn/shared-208e37af.js +88 -0
- package/dist/cdn/shared-29f2468c.js +6 -0
- package/dist/cdn/shared-400240f8.js +1 -0
- package/dist/cdn/{shared-9db9528b.js → shared-589e5d06.js} +15 -15
- package/dist/cdn/{shared-6be0a096.js → shared-5dbb9630.js} +1 -1
- package/dist/cdn/{shared-6350f7d9.js → shared-5e35c5a5.js} +1 -1
- package/dist/cdn/{shared-3cbcd9cb.js → shared-5f09205d.js} +1 -1
- package/dist/cdn/{shared-d15c3e2d.js → shared-61f67b16.js} +1 -1
- package/dist/cdn/shared-683145e5.js +1 -0
- package/dist/cdn/shared-6c4affb9.js +1 -0
- package/dist/cdn/{shared-4fb9d21f.js → shared-77fd8dae.js} +1 -1
- package/dist/cdn/{shared-92cdd504.js → shared-80eb1fee.js} +1 -1
- package/dist/cdn/shared-850e2ae1.js +10 -0
- package/dist/cdn/{shared-872151f5.js → shared-85979316.js} +1 -1
- package/dist/cdn/{shared-4fd17baf.js → shared-8def6325.js} +1 -1
- package/dist/cdn/{shared-18d109f5.js → shared-93812e51.js} +1 -1
- package/dist/cdn/{shared-6a998243.js → shared-9a5da74d.js} +21 -27
- package/dist/cdn/{shared-e52280d9.js → shared-b30f9b10.js} +1 -1
- package/dist/cdn/shared-bb08b5ce.js +32 -0
- package/dist/cdn/{shared-89b42eef.js → shared-bba8ae80.js} +1 -1
- package/dist/cdn/{shared-bf132324.js → shared-befe135a.js} +1 -1
- package/dist/cdn/{shared-7ff496f6.js → shared-bfa30d93.js} +1 -1
- package/dist/cdn/shared-c5f57aa8.js +1 -0
- package/dist/cdn/{shared-3277bbf5.js → shared-ca15d510.js} +1 -1
- package/dist/cdn/{shared-46454866.js → shared-cab2aa63.js} +4 -4
- package/dist/cdn/shared-cc723108.js +12 -0
- package/dist/cdn/{shared-97793410.js → shared-d04c2e0c.js} +1 -1
- package/dist/cdn/{shared-59a5edee.js → shared-da7a0bfb.js} +9 -9
- package/dist/cdn/shared-e35297c9.js +1 -0
- package/dist/cdn/{shared-8778d784.js → shared-e48fbf50.js} +1 -1
- package/dist/cdn/shared-e84be1c2.js +64 -0
- package/dist/cdn/{shared-8dd03329.js → shared-e966f1ef.js} +1 -1
- package/dist/cdn/{shared-1122a125.js → shared-fb8c09b8.js} +1 -1
- package/dist/cdn/{shared-fcaf15e5.js → shared-fd041b18.js} +1 -1
- package/dist/cdn/{shared-1b0992cc.js → shared-fda63db8.js} +5 -5
- package/dist/cdn/{shared-51ac503d.js → shared-fe7b3ed2.js} +1 -1
- package/dist/cdn/translations/coupon-code-card/en.json +11 -0
- package/dist/cdn/translations/coupon-form/en.json +522 -297
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +10 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +81 -2
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControlFilterOverlay.d.ts +11 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControlFilterOverlay.js +57 -0
- package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControlFilterOverlay.js.map +1 -0
- package/dist/elements/internal/InternalAsyncListControl/index.d.ts +1 -0
- package/dist/elements/internal/InternalAsyncListControl/index.js +3 -0
- package/dist/elements/internal/InternalAsyncListControl/index.js.map +1 -1
- package/dist/elements/internal/InternalAsyncListControl/types.d.ts +8 -0
- package/dist/elements/internal/InternalAsyncListControl/types.js +2 -0
- package/dist/elements/internal/InternalAsyncListControl/types.js.map +1 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/InternalAsyncResourceLinkListControl.d.ts +23 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/InternalAsyncResourceLinkListControl.js +224 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/InternalAsyncResourceLinkListControl.js.map +1 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/index.d.ts +8 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/index.js +10 -0
- package/dist/elements/internal/InternalAsyncResourceLinkListControl/index.js.map +1 -0
- package/dist/elements/internal/InternalForm/InternalForm.d.ts +10 -0
- package/dist/elements/internal/InternalForm/InternalForm.js +44 -0
- package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -1
- package/dist/elements/internal/InternalForm/index.d.ts +2 -0
- package/dist/elements/internal/InternalForm/index.js +2 -0
- package/dist/elements/internal/InternalForm/index.js.map +1 -1
- package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.d.ts +1 -0
- package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js +3 -0
- package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js.map +1 -1
- package/dist/elements/internal/InternalQueryBuilderControl/InternalQueryBuilderControl.d.ts +10 -0
- package/dist/elements/internal/InternalQueryBuilderControl/InternalQueryBuilderControl.js +51 -0
- package/dist/elements/internal/InternalQueryBuilderControl/InternalQueryBuilderControl.js.map +1 -0
- package/dist/elements/internal/InternalQueryBuilderControl/index.d.ts +4 -0
- package/dist/elements/internal/InternalQueryBuilderControl/index.js +6 -0
- package/dist/elements/internal/InternalQueryBuilderControl/index.js.map +1 -0
- package/dist/elements/public/CartForm/CartForm.js +81 -81
- package/dist/elements/public/CartForm/CartForm.js.map +1 -1
- package/dist/elements/public/CouponCodeCard/CouponCodeCard.d.ts +16 -0
- package/dist/elements/public/CouponCodeCard/CouponCodeCard.js +41 -0
- package/dist/elements/public/CouponCodeCard/CouponCodeCard.js.map +1 -0
- package/dist/elements/public/CouponCodeCard/index.d.ts +4 -0
- package/dist/elements/public/CouponCodeCard/index.js +6 -0
- package/dist/elements/public/CouponCodeCard/index.js.map +1 -0
- package/dist/elements/public/CouponCodeCard/types.d.ts +3 -0
- package/dist/elements/public/CouponCodeCard/types.js +2 -0
- package/dist/elements/public/CouponCodeCard/types.js.map +1 -0
- package/dist/elements/public/CouponForm/CouponForm.d.ts +65 -41
- package/dist/elements/public/CouponForm/CouponForm.js +320 -1035
- package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
- package/dist/elements/public/CouponForm/index.d.ts +15 -16
- package/dist/elements/public/CouponForm/index.js +15 -16
- package/dist/elements/public/CouponForm/index.js.map +1 -1
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.d.ts +9 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.js +49 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/InternalCouponFormBulkAddControl.js.map +1 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.d.ts +6 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.js +8 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormBulkAddControl/index.js.map +1 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/InternalCouponFormRulesControl.d.ts +7 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/InternalCouponFormRulesControl.js +141 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/InternalCouponFormRulesControl.js.map +1 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/index.d.ts +6 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/index.js +8 -0
- package/dist/elements/public/CouponForm/internal/InternalCouponFormRulesControl/index.js.map +1 -0
- package/dist/elements/public/CouponForm/types.d.ts +10 -1
- package/dist/elements/public/CouponForm/types.js.map +1 -1
- package/dist/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.js +7 -3
- package/dist/elements/public/CustomerPortalSettingsForm/CustomerPortalSettingsForm.js.map +1 -1
- package/dist/elements/public/CustomerPortalSettingsForm/toOrigin.d.ts +1 -0
- package/dist/elements/public/CustomerPortalSettingsForm/toOrigin.js +9 -0
- package/dist/elements/public/CustomerPortalSettingsForm/toOrigin.js.map +1 -0
- package/dist/elements/public/DownloadableForm/DownloadableForm.js +9 -9
- package/dist/elements/public/DownloadableForm/DownloadableForm.js.map +1 -1
- package/dist/elements/public/I18n/format/discount.js +9 -2
- package/dist/elements/public/I18n/format/discount.js.map +1 -1
- package/dist/elements/public/I18n/format/ordinal.js +6 -2
- package/dist/elements/public/I18n/format/ordinal.js.map +1 -1
- package/dist/elements/public/IntegrationForm/IntegrationForm.js +8 -6
- package/dist/elements/public/IntegrationForm/IntegrationForm.js.map +1 -1
- package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js +27 -27
- package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js.map +1 -1
- package/dist/elements/public/QueryBuilder/QueryBuilder.d.ts +4 -0
- package/dist/elements/public/QueryBuilder/QueryBuilder.js +10 -2
- package/dist/elements/public/QueryBuilder/QueryBuilder.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Group.d.ts +3 -1
- package/dist/elements/public/QueryBuilder/components/Group.js +8 -1
- package/dist/elements/public/QueryBuilder/components/Group.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.d.ts +2 -1
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.js +5 -4
- package/dist/elements/public/QueryBuilder/components/OperatorToggle.js.map +1 -1
- package/dist/elements/public/QueryBuilder/components/Rule.d.ts +3 -1
- package/dist/elements/public/QueryBuilder/components/Rule.js +2 -1
- package/dist/elements/public/QueryBuilder/components/Rule.js.map +1 -1
- package/dist/elements/public/StoreForm/StoreForm.js +7 -8
- package/dist/elements/public/StoreForm/StoreForm.js.map +1 -1
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js +28 -28
- package/dist/elements/public/TemplateSetForm/TemplateSetForm.js.map +1 -1
- package/dist/elements/public/index.d.ts +1 -0
- package/dist/elements/public/index.defined.d.ts +1 -0
- package/dist/elements/public/index.defined.js +1 -0
- package/dist/elements/public/index.defined.js.map +1 -1
- package/dist/elements/public/index.js +1 -0
- package/dist/elements/public/index.js.map +1 -1
- package/dist/mixins/inferrable.js +8 -3
- package/dist/mixins/inferrable.js.map +1 -1
- package/package.json +1 -1
- package/dist/cdn/shared-20f65e73.js +0 -1
- package/dist/cdn/shared-27c7514d.js +0 -1
- package/dist/cdn/shared-669decee.js +0 -1
- package/dist/cdn/shared-afefe2ac.js +0 -113
- package/dist/cdn/shared-b33fd700.js +0 -1
- package/dist/cdn/shared-b51b9df7.js +0 -64
- package/dist/cdn/shared-b914895b.js +0 -1
- package/dist/cdn/shared-cce18690.js +0 -1
- package/dist/cdn/shared-d04dd602.js +0 -20
- package/dist/cdn/shared-df58b901.js +0 -1
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.d.ts +0 -20
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.js +0 -99
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPage.js.map +0 -1
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.d.ts +0 -18
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.js +0 -50
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItem.js.map +0 -1
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.d.ts +0 -18
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.js +0 -53
- package/dist/elements/public/CouponForm/private/CategoryRestrictionsPageItemContent.js.map +0 -1
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
|
|
2
|
+
import { NucleonElement } from "../../public/NucleonElement/NucleonElement.js";
|
|
3
|
+
import { getResourceId } from '@foxy.io/sdk/core';
|
|
4
|
+
import { ifDefined } from 'lit-html/directives/if-defined';
|
|
5
|
+
import { classMap } from "../../../utils/class-map.js";
|
|
6
|
+
import { html } from 'lit-html';
|
|
7
|
+
import { css } from 'lit-element';
|
|
8
|
+
import memoize from 'lodash-es/memoize';
|
|
9
|
+
export class InternalAsyncResourceLinkListControl extends InternalEditableControl {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.foreignKeyForUri = null;
|
|
13
|
+
this.foreignKeyForId = null;
|
|
14
|
+
this.ownKeyForUri = null;
|
|
15
|
+
this.optionsHref = null;
|
|
16
|
+
this.linksHref = null;
|
|
17
|
+
this.embedKey = null;
|
|
18
|
+
this.ownUri = null;
|
|
19
|
+
this.limit = 20;
|
|
20
|
+
this.item = null;
|
|
21
|
+
this.__getItemRenderer = memoize((item, hasData) => {
|
|
22
|
+
return new Function('ctx', `return ctx.html\`
|
|
23
|
+
<${item !== null && item !== void 0 ? item : 'foxy-null'}
|
|
24
|
+
related=\${JSON.stringify(ctx.related)}
|
|
25
|
+
parent=\${ctx.parent}
|
|
26
|
+
infer=""
|
|
27
|
+
${hasData ? '.data=${ctx.data}' : 'href=${ctx.href}'}
|
|
28
|
+
...=\${ctx.spread(ctx.props)}
|
|
29
|
+
>
|
|
30
|
+
</${item !== null && item !== void 0 ? item : 'foxy-null'}>\``);
|
|
31
|
+
}, (...args) => args.join());
|
|
32
|
+
this.__renderItem = ctx => {
|
|
33
|
+
var _a, _b, _c, _d, _e;
|
|
34
|
+
const render = this.__getItemRenderer(this.item, !!ctx.data);
|
|
35
|
+
const wrap = (content) => html `
|
|
36
|
+
<div style="padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)">${content}</div>
|
|
37
|
+
`;
|
|
38
|
+
if (ctx.href.startsWith('foxy://'))
|
|
39
|
+
return wrap(render(ctx));
|
|
40
|
+
let linkHref;
|
|
41
|
+
const id = getResourceId((_b = (_a = ctx.data) === null || _a === void 0 ? void 0 : _a._links.self.href) !== null && _b !== void 0 ? _b : '');
|
|
42
|
+
try {
|
|
43
|
+
const url = new URL((_c = this.linksHref) !== null && _c !== void 0 ? _c : '');
|
|
44
|
+
url.searchParams.set((_d = this.foreignKeyForId) !== null && _d !== void 0 ? _d : '', String(id !== null && id !== void 0 ? id : ''));
|
|
45
|
+
url.searchParams.set('limit', '1');
|
|
46
|
+
linkHref = url.toString();
|
|
47
|
+
}
|
|
48
|
+
catch (_f) {
|
|
49
|
+
linkHref = undefined;
|
|
50
|
+
}
|
|
51
|
+
const content = html `
|
|
52
|
+
<foxy-nucleon
|
|
53
|
+
infer=""
|
|
54
|
+
href=${ifDefined(linkHref)}
|
|
55
|
+
id="link-${id}"
|
|
56
|
+
@update=${() => this.requestUpdate()}
|
|
57
|
+
>
|
|
58
|
+
${render(ctx)}
|
|
59
|
+
</foxy-nucleon>
|
|
60
|
+
`;
|
|
61
|
+
if (this.readonly)
|
|
62
|
+
return wrap(content);
|
|
63
|
+
const nucleon = this.renderRoot.querySelector(`#link-${id}`);
|
|
64
|
+
const checked = !!((_e = nucleon === null || nucleon === void 0 ? void 0 : nucleon.data) === null || _e === void 0 ? void 0 : _e.returned_items);
|
|
65
|
+
const isDisabled = this.disabled || !(nucleon === null || nucleon === void 0 ? void 0 : nucleon.in('idle')) || this.__isFetching;
|
|
66
|
+
return wrap(html `
|
|
67
|
+
<vaadin-checkbox
|
|
68
|
+
class="block"
|
|
69
|
+
?disabled=${isDisabled}
|
|
70
|
+
?checked=${checked}
|
|
71
|
+
@change=${(evt) => {
|
|
72
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
73
|
+
const target = evt.currentTarget;
|
|
74
|
+
if (target.checked) {
|
|
75
|
+
this.__insertLink((_b = (_a = ctx.data) === null || _a === void 0 ? void 0 : _a._links.self.href) !== null && _b !== void 0 ? _b : '');
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
this.__deleteLink((_h = (_g = (_f = (_d = (_c = nucleon === null || nucleon === void 0 ? void 0 : nucleon.data) === null || _c === void 0 ? void 0 : _c._embedded) === null || _d === void 0 ? void 0 : _d[(_e = this.embedKey) !== null && _e !== void 0 ? _e : '']) === null || _f === void 0 ? void 0 : _f[0]) === null || _g === void 0 ? void 0 : _g._links.self.href) !== null && _h !== void 0 ? _h : '');
|
|
79
|
+
}
|
|
80
|
+
}}
|
|
81
|
+
>
|
|
82
|
+
<div class="transition-opacity ${isDisabled ? 'opacity-50' : 'opacity-100'}">
|
|
83
|
+
${content}
|
|
84
|
+
</div>
|
|
85
|
+
</vaadin-checkbox>
|
|
86
|
+
`);
|
|
87
|
+
};
|
|
88
|
+
this.__isFetching = false;
|
|
89
|
+
}
|
|
90
|
+
static get properties() {
|
|
91
|
+
return {
|
|
92
|
+
...super.properties,
|
|
93
|
+
foreignKeyForUri: { attribute: 'foreign-key-for-uri' },
|
|
94
|
+
foreignKeyForId: { attribute: 'foreign-key-for-id' },
|
|
95
|
+
ownKeyForUri: { attribute: 'own-key-for-uri' },
|
|
96
|
+
optionsHref: { attribute: 'options-href' },
|
|
97
|
+
linksHref: { attribute: 'links-href' },
|
|
98
|
+
embedKey: { attribute: 'embed-key' },
|
|
99
|
+
ownUri: { attribute: 'own-uri' },
|
|
100
|
+
limit: { type: Number },
|
|
101
|
+
item: {},
|
|
102
|
+
__isFetching: { attribute: false },
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
static get styles() {
|
|
106
|
+
return [
|
|
107
|
+
super.styles,
|
|
108
|
+
css `vaadin-checkbox::part(label){
|
|
109
|
+
margin:0 0 0 calc(0.625em + (var(--lumo-border-radius) / 4) - 1px);
|
|
110
|
+
align-self:center;
|
|
111
|
+
}
|
|
112
|
+
`,
|
|
113
|
+
];
|
|
114
|
+
}
|
|
115
|
+
renderControl() {
|
|
116
|
+
var _a;
|
|
117
|
+
let firstHref;
|
|
118
|
+
try {
|
|
119
|
+
const url = new URL((_a = this.optionsHref) !== null && _a !== void 0 ? _a : '');
|
|
120
|
+
url.searchParams.set('limit', this.limit.toString());
|
|
121
|
+
firstHref = url.toString();
|
|
122
|
+
}
|
|
123
|
+
catch (_b) {
|
|
124
|
+
firstHref = undefined;
|
|
125
|
+
}
|
|
126
|
+
const nucleons = [
|
|
127
|
+
...this.renderRoot.querySelectorAll('foxy-nucleon'),
|
|
128
|
+
];
|
|
129
|
+
const isStatusVisible = this.__isFetching || nucleons.some(n => !n.in('idle'));
|
|
130
|
+
return html `
|
|
131
|
+
<div class="group">
|
|
132
|
+
<div
|
|
133
|
+
class=${classMap({
|
|
134
|
+
'flex justify-between transition-colors mb-xs font-medium text-s': true,
|
|
135
|
+
'text-secondary': !this.disabled && !this.readonly,
|
|
136
|
+
'text-disabled': this.disabled,
|
|
137
|
+
})}
|
|
138
|
+
>
|
|
139
|
+
<span>${this.label}</span>
|
|
140
|
+
<foxy-i18n
|
|
141
|
+
class="transition-opacity ${isStatusVisible ? 'opacity-100' : 'opacity-0'}"
|
|
142
|
+
infer=""
|
|
143
|
+
key=${this.__isFetching ? 'status_saving' : 'status_loading'}
|
|
144
|
+
>
|
|
145
|
+
</foxy-i18n>
|
|
146
|
+
</div>
|
|
147
|
+
|
|
148
|
+
<foxy-pagination first=${ifDefined(firstHref)} infer="pagination">
|
|
149
|
+
<foxy-collection-page
|
|
150
|
+
infer="card"
|
|
151
|
+
class=${classMap({
|
|
152
|
+
'block transition-colors divide-y rounded overflow-hidden': true,
|
|
153
|
+
'divide-contrast-10 ring-1 ring-inset ring-contrast-10': true,
|
|
154
|
+
})}
|
|
155
|
+
.item=${this.__renderItem}
|
|
156
|
+
>
|
|
157
|
+
</foxy-collection-page>
|
|
158
|
+
</foxy-pagination>
|
|
159
|
+
|
|
160
|
+
<div
|
|
161
|
+
class=${classMap({
|
|
162
|
+
'transition-colors mt-xs text-xs': true,
|
|
163
|
+
'text-secondary': !this.disabled && !this.readonly,
|
|
164
|
+
'text-disabled': this.disabled,
|
|
165
|
+
})}
|
|
166
|
+
?hidden=${!this.helperText}
|
|
167
|
+
>
|
|
168
|
+
${this.helperText}
|
|
169
|
+
</div>
|
|
170
|
+
|
|
171
|
+
<div
|
|
172
|
+
class="mt-xs text-xs leading-xs text-error"
|
|
173
|
+
?hidden=${!this._errorMessage || this.disabled || this.readonly}
|
|
174
|
+
>
|
|
175
|
+
${this._errorMessage}
|
|
176
|
+
</div>
|
|
177
|
+
</div>
|
|
178
|
+
`;
|
|
179
|
+
}
|
|
180
|
+
updated(changes) {
|
|
181
|
+
var _a, _b;
|
|
182
|
+
super.updated(changes);
|
|
183
|
+
if (changes.has('item'))
|
|
184
|
+
(_b = (_a = this.__getItemRenderer.cache).clear) === null || _b === void 0 ? void 0 : _b.call(_a);
|
|
185
|
+
}
|
|
186
|
+
async __insertLink(foreignUri) {
|
|
187
|
+
var _a, _b, _c, _d, _e, _f;
|
|
188
|
+
this.__isFetching = true;
|
|
189
|
+
const api = new NucleonElement.API(this);
|
|
190
|
+
const response = await api.fetch((_a = this.linksHref) !== null && _a !== void 0 ? _a : '', {
|
|
191
|
+
method: 'POST',
|
|
192
|
+
body: JSON.stringify({
|
|
193
|
+
[(_b = this.foreignKeyForUri) !== null && _b !== void 0 ? _b : '']: foreignUri,
|
|
194
|
+
[(_c = this.ownKeyForUri) !== null && _c !== void 0 ? _c : '']: this.ownUri,
|
|
195
|
+
}),
|
|
196
|
+
});
|
|
197
|
+
if (response.ok) {
|
|
198
|
+
const json = await response.json();
|
|
199
|
+
const dataResponse = await api.fetch(json._links.self.href);
|
|
200
|
+
if (dataResponse.ok) {
|
|
201
|
+
const rumour = NucleonElement.Rumour((_e = (_d = this.nucleon) === null || _d === void 0 ? void 0 : _d.group) !== null && _e !== void 0 ? _e : '');
|
|
202
|
+
const data = await dataResponse.json();
|
|
203
|
+
rumour.share({
|
|
204
|
+
related: [(_f = this.linksHref) !== null && _f !== void 0 ? _f : ''],
|
|
205
|
+
source: json._links.self.href,
|
|
206
|
+
data,
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
this.__isFetching = false;
|
|
211
|
+
}
|
|
212
|
+
async __deleteLink(linkUri) {
|
|
213
|
+
var _a, _b, _c;
|
|
214
|
+
this.__isFetching = true;
|
|
215
|
+
const api = new NucleonElement.API(this);
|
|
216
|
+
const response = await api.fetch(linkUri, { method: 'DELETE' });
|
|
217
|
+
if (response.ok) {
|
|
218
|
+
const rumour = NucleonElement.Rumour((_b = (_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.group) !== null && _b !== void 0 ? _b : '');
|
|
219
|
+
rumour.share({ related: [(_c = this.linksHref) !== null && _c !== void 0 ? _c : ''], source: linkUri, data: null });
|
|
220
|
+
}
|
|
221
|
+
this.__isFetching = false;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=InternalAsyncResourceLinkListControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalAsyncResourceLinkListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncResourceLinkListControl/InternalAsyncResourceLinkListControl.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,OAAO,OAAO,MAAM,mBAAmB,CAAC;AAExC,MAAM,OAAO,oCAAqC,SAAQ,uBAAuB;IAAjF;;QA6BE,qBAAgB,GAAkB,IAAI,CAAC;QAEvC,oBAAe,GAAkB,IAAI,CAAC;QAEtC,iBAAY,GAAkB,IAAI,CAAC;QAEnC,gBAAW,GAAkB,IAAI,CAAC;QAElC,cAAS,GAAkB,IAAI,CAAC;QAEhC,aAAQ,GAAkB,IAAI,CAAC;QAE/B,WAAM,GAAkB,IAAI,CAAC;QAE7B,UAAK,GAAG,EAAE,CAAC;QAEX,SAAI,GAAkB,IAAI,CAAC;QAEV,sBAAiB,GAAG,OAAO,CAC1C,CAAC,IAAmB,EAAE,OAAgB,EAAE,EAAE;YACxC,OAAO,IAAI,QAAQ,CACjB,KAAK,EACL;WACG,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW;;;;YAIlB,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,kBAAkB;;;YAGlD,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,WAAW,KAAK,CACb,CAAC;QACpB,CAAC,EACD,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CACzB,CAAC;QAEe,iBAAY,GAAiB,GAAG,CAAC,EAAE;;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC7D,MAAM,IAAI,GAAG,CAAC,OAAuB,EAAE,EAAE,CAAC,IAAI,CAAA;oFACkC,OAAO;KACtF,CAAC;YAEF,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7D,IAAI,QAA4B,CAAC;YACjC,MAAM,EAAE,GAAG,aAAa,aAAC,GAAG,CAAC,IAAI,0CAAE,MAAM,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;YAE3D,IAAI;gBACF,MAAM,GAAG,GAAG,IAAI,GAAG,OAAC,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAC,CAAC;gBAC1C,GAAG,CAAC,YAAY,CAAC,GAAG,OAAC,IAAI,CAAC,eAAe,mCAAI,EAAE,EAAE,MAAM,CAAC,EAAE,aAAF,EAAE,cAAF,EAAE,GAAI,EAAE,CAAC,CAAC,CAAC;gBACnE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACnC,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;aAC3B;YAAC,WAAM;gBACN,QAAQ,GAAG,SAAS,CAAC;aACtB;YAED,MAAM,OAAO,GAAG,IAAI,CAAA;;;eAGT,SAAS,CAAC,QAAQ,CAAC;mBACf,EAAE;kBACH,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;UAElC,MAAM,CAAC,GAAG,CAAC;;KAEhB,CAAC;YAEF,IAAI,IAAI,CAAC,QAAQ;gBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YAExC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,SAAS,EAAE,EAAE,CAA+B,CAAC;YAC3F,MAAM,OAAO,GAAG,CAAC,QAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,cAAc,CAAA,CAAC;YAChD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAC,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,EAAE,CAAC,MAAM,EAAC,IAAI,IAAI,CAAC,YAAY,CAAC;YAE9E,OAAO,IAAI,CAAC,IAAI,CAAA;;;oBAGA,UAAU;mBACX,OAAO;kBACR,CAAC,GAAgB,EAAE,EAAE;;gBAC7B,MAAM,MAAM,GAAG,GAAG,CAAC,aAAgC,CAAC;gBACpD,IAAI,MAAM,CAAC,OAAO,EAAE;oBAClB,IAAI,CAAC,YAAY,aAAC,GAAG,CAAC,IAAI,0CAAE,MAAM,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;iBACrD;qBAAM;oBACL,IAAI,CAAC,YAAY,+BACf,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,0CAAE,SAAS,gDAAG,IAAI,CAAC,QAAQ,mCAAI,EAAE,2CAAI,CAAC,2CAAG,MAAM,CAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAC7E,CAAC;iBACH;YACH,CAAC;;yCAEgC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa;YACtE,OAAO;;;KAGd,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iBAAY,GAAG,KAAK,CAAC;IAuH/B,CAAC;IAlPC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,gBAAgB,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE;YACtD,eAAe,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE;YACpD,YAAY,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE;YAC9C,WAAW,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;YAC1C,SAAS,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE;YACtC,QAAQ,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;YACpC,MAAM,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE;YAChC,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACvB,IAAI,EAAE,EAAE;YACR,YAAY,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SACnC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO;YACL,KAAK,CAAC,MAAM;YACZ,GAAG;;;;OAKF;SACF,CAAC;IACJ,CAAC;IAmGD,aAAa;;QACX,IAAI,SAA6B,CAAC;QAElC,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,OAAC,IAAI,CAAC,WAAW,mCAAI,EAAE,CAAC,CAAC;YAC5C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACrD,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SAC5B;QAAC,WAAM;YACN,SAAS,GAAG,SAAS,CAAC;SACvB;QAED,MAAM,QAAQ,GAAG;YACf,GAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,cAAc,CAAqC;SACzF,CAAC;QAEF,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAE/E,OAAO,IAAI,CAAA;;;kBAGG,QAAQ,CAAC;YACf,iEAAiE,EAAE,IAAI;YACvE,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC,QAAQ;SAC/B,CAAC;;kBAEM,IAAI,CAAC,KAAK;;wCAEY,eAAe,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW;;kBAEnE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB;;;;;iCAKvC,SAAS,CAAC,SAAS,CAAC;;;oBAGjC,QAAQ,CAAC;YACf,0DAA0D,EAAE,IAAI;YAChE,uDAAuD,EAAE,IAAI;SAC9D,CAAC;oBACM,IAAI,CAAC,YAAY;;;;;;kBAMnB,QAAQ,CAAC;YACf,iCAAiC,EAAE,IAAI;YACvC,gBAAgB,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAClD,eAAe,EAAE,IAAI,CAAC,QAAQ;SAC/B,CAAC;oBACQ,CAAC,IAAI,CAAC,UAAU;;YAExB,IAAI,CAAC,UAAU;;;;;oBAKP,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ;;YAE7D,IAAI,CAAC,aAAa;;;KAGzB,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAiC;;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAA,MAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAC,KAAK,mDAAK;IAClE,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,UAAkB;;QAC3C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,OAAC,IAAI,CAAC,SAAS,mCAAI,EAAE,EAAE;YACrD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAC,IAAI,CAAC,gBAAgB,mCAAI,EAAE,CAAC,EAAE,UAAU;gBACzC,OAAC,IAAI,CAAC,YAAY,mCAAI,EAAE,CAAC,EAAE,IAAI,CAAC,MAAM;aACvC,CAAC;SACH,CAAC,CAAC;QAEH,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE5D,IAAI,YAAY,CAAC,EAAE,EAAE;gBACnB,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,aAAC,IAAI,CAAC,OAAO,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC;gBAChE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC;gBAEvC,MAAM,CAAC,KAAK,CAAC;oBACX,OAAO,EAAE,OAAC,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAC;oBAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI;oBAC7B,IAAI;iBACL,CAAC,CAAC;aACJ;SACF;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,OAAe;;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,MAAM,GAAG,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,EAAE,EAAE;YACf,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,aAAC,IAAI,CAAC,OAAO,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC;YAChE,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,OAAC,IAAI,CAAC,SAAS,mCAAI,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;SAChF;QAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;CACF","sourcesContent":["import type { CSSResultArray, PropertyDeclarations } from 'lit-element';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { TemplateResult } from 'lit-html';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\nimport { css } from 'lit-element';\n\nimport memoize from 'lodash-es/memoize';\n\nexport class InternalAsyncResourceLinkListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n foreignKeyForUri: { attribute: 'foreign-key-for-uri' },\n foreignKeyForId: { attribute: 'foreign-key-for-id' },\n ownKeyForUri: { attribute: 'own-key-for-uri' },\n optionsHref: { attribute: 'options-href' },\n linksHref: { attribute: 'links-href' },\n embedKey: { attribute: 'embed-key' },\n ownUri: { attribute: 'own-uri' },\n limit: { type: Number },\n item: {},\n __isFetching: { attribute: false },\n };\n }\n\n static get styles(): CSSResultArray {\n return [\n super.styles,\n css`\n vaadin-checkbox::part(label) {\n margin: 0 0 0 calc(0.625em + (var(--lumo-border-radius) / 4) - 1px);\n align-self: center;\n }\n `,\n ];\n }\n\n foreignKeyForUri: string | null = null;\n\n foreignKeyForId: string | null = null;\n\n ownKeyForUri: string | null = null;\n\n optionsHref: string | null = null;\n\n linksHref: string | null = null;\n\n embedKey: string | null = null;\n\n ownUri: string | null = null;\n\n limit = 20;\n\n item: string | null = null;\n\n private readonly __getItemRenderer = memoize(\n (item: string | null, hasData: boolean) => {\n return new Function(\n 'ctx',\n `return ctx.html\\`\n <${item ?? 'foxy-null'}\n related=\\${JSON.stringify(ctx.related)}\n parent=\\${ctx.parent}\n infer=\"\"\n ${hasData ? '.data=${ctx.data}' : 'href=${ctx.href}'}\n ...=\\${ctx.spread(ctx.props)}\n >\n </${item ?? 'foxy-null'}>\\``\n ) as ItemRenderer;\n },\n (...args) => args.join()\n );\n\n private readonly __renderItem: ItemRenderer = ctx => {\n const render = this.__getItemRenderer(this.item, !!ctx.data);\n const wrap = (content: TemplateResult) => html`\n <div style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">${content}</div>\n `;\n\n if (ctx.href.startsWith('foxy://')) return wrap(render(ctx));\n let linkHref: string | undefined;\n const id = getResourceId(ctx.data?._links.self.href ?? '');\n\n try {\n const url = new URL(this.linksHref ?? '');\n url.searchParams.set(this.foreignKeyForId ?? '', String(id ?? ''));\n url.searchParams.set('limit', '1');\n linkHref = url.toString();\n } catch {\n linkHref = undefined;\n }\n\n const content = html`\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(linkHref)}\n id=\"link-${id}\"\n @update=${() => this.requestUpdate()}\n >\n ${render(ctx)}\n </foxy-nucleon>\n `;\n\n if (this.readonly) return wrap(content);\n\n const nucleon = this.renderRoot.querySelector(`#link-${id}`) as NucleonElement<any> | null;\n const checked = !!nucleon?.data?.returned_items;\n const isDisabled = this.disabled || !nucleon?.in('idle') || this.__isFetching;\n\n return wrap(html`\n <vaadin-checkbox\n class=\"block\"\n ?disabled=${isDisabled}\n ?checked=${checked}\n @change=${(evt: CustomEvent) => {\n const target = evt.currentTarget as CheckboxElement;\n if (target.checked) {\n this.__insertLink(ctx.data?._links.self.href ?? '');\n } else {\n this.__deleteLink(\n nucleon?.data?._embedded?.[this.embedKey ?? '']?.[0]?._links.self.href ?? ''\n );\n }\n }}\n >\n <div class=\"transition-opacity ${isDisabled ? 'opacity-50' : 'opacity-100'}\">\n ${content}\n </div>\n </vaadin-checkbox>\n `);\n };\n\n private __isFetching = false;\n\n renderControl(): TemplateResult {\n let firstHref: string | undefined;\n\n try {\n const url = new URL(this.optionsHref ?? '');\n url.searchParams.set('limit', this.limit.toString());\n firstHref = url.toString();\n } catch {\n firstHref = undefined;\n }\n\n const nucleons = [\n ...(this.renderRoot.querySelectorAll('foxy-nucleon') as NodeListOf<NucleonElement<any>>),\n ];\n\n const isStatusVisible = this.__isFetching || nucleons.some(n => !n.in('idle'));\n\n return html`\n <div class=\"group\">\n <div\n class=${classMap({\n 'flex justify-between transition-colors mb-xs font-medium text-s': true,\n 'text-secondary': !this.disabled && !this.readonly,\n 'text-disabled': this.disabled,\n })}\n >\n <span>${this.label}</span>\n <foxy-i18n\n class=\"transition-opacity ${isStatusVisible ? 'opacity-100' : 'opacity-0'}\"\n infer=\"\"\n key=${this.__isFetching ? 'status_saving' : 'status_loading'}\n >\n </foxy-i18n>\n </div>\n\n <foxy-pagination first=${ifDefined(firstHref)} infer=\"pagination\">\n <foxy-collection-page\n infer=\"card\"\n class=${classMap({\n 'block transition-colors divide-y rounded overflow-hidden': true,\n 'divide-contrast-10 ring-1 ring-inset ring-contrast-10': true,\n })}\n .item=${this.__renderItem}\n >\n </foxy-collection-page>\n </foxy-pagination>\n\n <div\n class=${classMap({\n 'transition-colors mt-xs text-xs': true,\n 'text-secondary': !this.disabled && !this.readonly,\n 'text-disabled': this.disabled,\n })}\n ?hidden=${!this.helperText}\n >\n ${this.helperText}\n </div>\n\n <div\n class=\"mt-xs text-xs leading-xs text-error\"\n ?hidden=${!this._errorMessage || this.disabled || this.readonly}\n >\n ${this._errorMessage}\n </div>\n </div>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n if (changes.has('item')) this.__getItemRenderer.cache.clear?.();\n }\n\n private async __insertLink(foreignUri: string) {\n this.__isFetching = true;\n\n const api = new NucleonElement.API(this);\n const response = await api.fetch(this.linksHref ?? '', {\n method: 'POST',\n body: JSON.stringify({\n [this.foreignKeyForUri ?? '']: foreignUri,\n [this.ownKeyForUri ?? '']: this.ownUri,\n }),\n });\n\n if (response.ok) {\n const json = await response.json();\n const dataResponse = await api.fetch(json._links.self.href);\n\n if (dataResponse.ok) {\n const rumour = NucleonElement.Rumour(this.nucleon?.group ?? '');\n const data = await dataResponse.json();\n\n rumour.share({\n related: [this.linksHref ?? ''],\n source: json._links.self.href,\n data,\n });\n }\n }\n\n this.__isFetching = false;\n }\n\n private async __deleteLink(linkUri: string) {\n this.__isFetching = true;\n\n const api = new NucleonElement.API(this);\n const response = await api.fetch(linkUri, { method: 'DELETE' });\n\n if (response.ok) {\n const rumour = NucleonElement.Rumour(this.nucleon?.group ?? '');\n rumour.share({ related: [this.linksHref ?? ''], source: linkUri, data: null });\n }\n\n this.__isFetching = false;\n }\n}\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import '@vaadin/vaadin-checkbox';
|
|
2
|
+
import '../../public/CollectionPage/index';
|
|
3
|
+
import '../../public/NucleonElement/index';
|
|
4
|
+
import '../../public/Pagination/index';
|
|
5
|
+
import '../../public/I18n/index';
|
|
6
|
+
import '../InternalEditableControl/index';
|
|
7
|
+
import { InternalAsyncResourceLinkListControl } from './InternalAsyncResourceLinkListControl';
|
|
8
|
+
export { InternalAsyncResourceLinkListControl };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import '@vaadin/vaadin-checkbox';
|
|
2
|
+
import "../../public/CollectionPage/index.js";
|
|
3
|
+
import "../../public/NucleonElement/index.js";
|
|
4
|
+
import "../../public/Pagination/index.js";
|
|
5
|
+
import "../../public/I18n/index.js";
|
|
6
|
+
import "../InternalEditableControl/index.js";
|
|
7
|
+
import { InternalAsyncResourceLinkListControl } from "./InternalAsyncResourceLinkListControl.js";
|
|
8
|
+
customElements.define('foxy-internal-async-resource-link-list-control', InternalAsyncResourceLinkListControl);
|
|
9
|
+
export { InternalAsyncResourceLinkListControl };
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncResourceLinkListControl/index.ts"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAEjC,8CAA2C;AAC3C,8CAA2C;AAC3C,0CAAuC;AACvC,oCAAiC;AAEjC,6CAA0C;AAE1C,OAAO,EAAE,oCAAoC,EAAE,kDAA+C;AAE9F,cAAc,CAAC,MAAM,CACnB,gDAAgD,EAChD,oCAAoC,CACrC,CAAC;AAEF,OAAO,EAAE,oCAAoC,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-checkbox';\n\nimport '../../public/CollectionPage/index';\nimport '../../public/NucleonElement/index';\nimport '../../public/Pagination/index';\nimport '../../public/I18n/index';\n\nimport '../InternalEditableControl/index';\n\nimport { InternalAsyncResourceLinkListControl } from './InternalAsyncResourceLinkListControl';\n\ncustomElements.define(\n 'foxy-internal-async-resource-link-list-control',\n InternalAsyncResourceLinkListControl\n);\n\nexport { InternalAsyncResourceLinkListControl };\n"]}
|
|
@@ -19,6 +19,16 @@ export declare class InternalForm<TData extends HALJSONResource> extends Base<TD
|
|
|
19
19
|
static get properties(): PropertyDeclarations;
|
|
20
20
|
/** Status message to render at the top of the form. If `null`, the message is hidden. */
|
|
21
21
|
status: null | Status;
|
|
22
|
+
/**
|
|
23
|
+
* Renders header actions when the optional header is rendered.
|
|
24
|
+
* Empty by default.
|
|
25
|
+
*/
|
|
26
|
+
renderHeaderActions(data: TData): TemplateResult | null;
|
|
27
|
+
/**
|
|
28
|
+
* Renders optional form header with ID, last update timestamp and actions list (snapshot-only).
|
|
29
|
+
* Customize which actions are rendered with `.renderHeaderActions()` method.
|
|
30
|
+
*/
|
|
31
|
+
renderHeader(): TemplateResult;
|
|
22
32
|
/**
|
|
23
33
|
* Renders form body. This is the method you should implement in your forms
|
|
24
34
|
* instead of `.render()`. If you'd like to keep the submit button and the timestamps,
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ConfigurableMixin } from "../../../mixins/configurable.js";
|
|
2
2
|
import { ThemeableMixin } from "../../../mixins/themeable.js";
|
|
3
3
|
import { NucleonElement } from "../../public/NucleonElement/NucleonElement.js";
|
|
4
|
+
import { getResourceId } from '@foxy.io/sdk/core';
|
|
4
5
|
import { classMap } from "../../../utils/class-map.js";
|
|
5
6
|
import { html } from 'lit-html';
|
|
6
7
|
const Base = ConfigurableMixin(ThemeableMixin(NucleonElement));
|
|
@@ -23,6 +24,49 @@ export class InternalForm extends Base {
|
|
|
23
24
|
status: { type: Object },
|
|
24
25
|
};
|
|
25
26
|
}
|
|
27
|
+
/**
|
|
28
|
+
* Renders header actions when the optional header is rendered.
|
|
29
|
+
* Empty by default.
|
|
30
|
+
*/
|
|
31
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
+
renderHeaderActions(data) {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Renders optional form header with ID, last update timestamp and actions list (snapshot-only).
|
|
37
|
+
* Customize which actions are rendered with `.renderHeaderActions()` method.
|
|
38
|
+
*/
|
|
39
|
+
renderHeader() {
|
|
40
|
+
const data = this.data;
|
|
41
|
+
const actions = data ? this.renderHeaderActions(data) : null;
|
|
42
|
+
const id = data ? getResourceId(data._links.self.href) : '';
|
|
43
|
+
return html `
|
|
44
|
+
<h2>
|
|
45
|
+
<span class="flex items-center gap-s leading-xs text-xxl font-medium break-all">
|
|
46
|
+
<foxy-i18n infer="header" key=${data ? 'title_existing' : 'title_new'} .options=${{ id }}>
|
|
47
|
+
</foxy-i18n>
|
|
48
|
+
${data
|
|
49
|
+
? html `
|
|
50
|
+
<foxy-copy-to-clipboard infer="header" class="text-m" text=${id}>
|
|
51
|
+
</foxy-copy-to-clipboard>
|
|
52
|
+
`
|
|
53
|
+
: ''}
|
|
54
|
+
</span>
|
|
55
|
+
${data
|
|
56
|
+
? html `
|
|
57
|
+
<foxy-i18n
|
|
58
|
+
infer="header"
|
|
59
|
+
class="text-l text-secondary"
|
|
60
|
+
key="subtitle"
|
|
61
|
+
.options=${data}
|
|
62
|
+
>
|
|
63
|
+
</foxy-i18n>
|
|
64
|
+
${actions ? html `<div class="mt-xs flex gap-m">${actions}</div>` : ''}
|
|
65
|
+
`
|
|
66
|
+
: ''}
|
|
67
|
+
</h2>
|
|
68
|
+
`;
|
|
69
|
+
}
|
|
26
70
|
/**
|
|
27
71
|
* Renders form body. This is the method you should implement in your forms
|
|
28
72
|
* instead of `.render()`. If you'd like to keep the submit button and the timestamps,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,IAAI,GAAG,iBAAiB,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,OAAO,YAA4C,SAAQ,IAAW;IAA5E;;QAWE,yFAAyF;QACzF,WAAM,GAAkB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"InternalForm.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/InternalForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { TemplateResult } from 'lit-html';\nimport type { Status } from './types';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nconst Base = ConfigurableMixin(ThemeableMixin(NucleonElement));\n\n/**\n * An internal base class for any nucleon-powered form. Renders create/delete\n * buttons and timestamps by default, displays a spinner in non-idle states.\n *\n * @element foxy-internal-form\n * @since 1.17.0\n */\nexport class InternalForm<TData extends HALJSONResource> extends Base<TData> {\n /** Validation errors with this prefix will show up at the top of the form. */\n static generalErrorPrefix = 'error:';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n status: { type: Object },\n };\n }\n\n /** Status message to render at the top of the form. If `null`, the message is hidden. */\n status: null | Status = null;\n\n /**\n * Renders header actions when the optional header is rendered.\n * Empty by default.\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n renderHeaderActions(data: TData): TemplateResult | null {\n return null;\n }\n\n /**\n * Renders optional form header with ID, last update timestamp and actions list (snapshot-only).\n * Customize which actions are rendered with `.renderHeaderActions()` method.\n */\n renderHeader(): TemplateResult {\n const data = this.data;\n const actions = data ? this.renderHeaderActions(data) : null;\n const id = data ? getResourceId(data._links.self.href) : '';\n\n return html`\n <h2>\n <span class=\"flex items-center gap-s leading-xs text-xxl font-medium break-all\">\n <foxy-i18n infer=\"header\" key=${data ? 'title_existing' : 'title_new'} .options=${{ id }}>\n </foxy-i18n>\n ${data\n ? html`\n <foxy-copy-to-clipboard infer=\"header\" class=\"text-m\" text=${id}>\n </foxy-copy-to-clipboard>\n `\n : ''}\n </span>\n ${data\n ? html`\n <foxy-i18n\n infer=\"header\"\n class=\"text-l text-secondary\"\n key=\"subtitle\"\n .options=${data}\n >\n </foxy-i18n>\n ${actions ? html`<div class=\"mt-xs flex gap-m\">${actions}</div>` : ''}\n `\n : ''}\n </h2>\n `;\n }\n\n /**\n * Renders form body. This is the method you should implement in your forms\n * instead of `.render()`. If you'd like to keep the submit button and the timestamps,\n * don't forget to add `super.renderBody()` to your template.\n */\n renderBody(): TemplateResult {\n return this.data\n ? html`\n <foxy-internal-timestamps-control infer=\"timestamps\"></foxy-internal-timestamps-control>\n <foxy-internal-delete-control infer=\"delete\"></foxy-internal-delete-control>\n `\n : html`<foxy-internal-create-control infer=\"create\"></foxy-internal-create-control>`;\n }\n\n /**\n * Renders the entire form. You should probably implement `.renderBody()`\n * instead of this method in your form to keep the spinner and the common layout features.\n */\n render(): TemplateResult {\n const isSpinnerVisible = !this.in('idle') && (!this.in({ busy: 'fetching' }) || !this.data);\n\n return html`\n <div aria-busy=${this.in('busy')} aria-live=\"polite\" class=\"relative\">\n <div\n class=${classMap({\n 'space-y-m': true,\n 'transition-opacity': true,\n 'opacity-0 pointer-events-none': isSpinnerVisible,\n })}\n >\n ${this.__generalErrors.map(err => this.__renderGeneralError(err))}\n ${this.status ? this.__renderStatus(this.status) : ''} ${this.renderBody()}\n </div>\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'flex flex-col items-center justify-center gap-m': true,\n 'transition-opacity absolute inset-0': true,\n 'opacity-0 pointer-events-none': !isSpinnerVisible,\n })}\n >\n <foxy-spinner\n layout=${this.in('fail') ? 'vertical' : 'no-label'}\n state=${this.in('fail') ? 'error' : 'busy'}\n infer=\"spinner\"\n >\n </foxy-spinner>\n ${this.href && this.in('fail')\n ? html`\n <vaadin-button theme=\"small contrast\" @click=${() => this.refresh()}>\n <foxy-i18n infer=\"spinner\" key=\"refresh\"></foxy-i18n>\n </vaadin-button>\n `\n : ''}\n </div>\n </div>\n `;\n }\n\n private get __generalErrors() {\n const prefix = (this.constructor as typeof InternalForm).generalErrorPrefix;\n return this.errors.filter(v => v.startsWith(prefix));\n }\n\n private __renderGeneralError(err: string) {\n return html`\n <foxy-i18n\n class=\"leading-xs text-body rounded bg-error-10 block\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"error\"\n key=${err.replace('error:', '')}\n >\n </foxy-i18n>\n `;\n }\n\n private __renderStatus({ key, options }: Status) {\n return html`\n <p\n data-testid=\"status\"\n class=\"leading-xs text-body rounded bg-success-10 flex items-start gap-m\"\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=${key} .options=${options}></foxy-i18n>\n <vaadin-button\n class=\"flex-shrink-0\"\n theme=\"success tertiary-inline\"\n @click=${() => (this.status = null)}\n >\n <foxy-i18n class=\"flex-1\" infer=\"status\" key=\"close\"></foxy-i18n>\n </vaadin-button>\n </p>\n `;\n }\n}\n"]}
|
|
@@ -2,6 +2,8 @@ import '@vaadin/vaadin-button';
|
|
|
2
2
|
import '../InternalTimestampsControl/index';
|
|
3
3
|
import '../InternalCreateControl/index';
|
|
4
4
|
import '../InternalDeleteControl/index';
|
|
5
|
+
import '../../public/CopyToClipboard/index';
|
|
5
6
|
import '../../public/Spinner/index';
|
|
7
|
+
import '../../public/I18n/index';
|
|
6
8
|
import { InternalForm } from './InternalForm';
|
|
7
9
|
export { InternalForm };
|
|
@@ -2,7 +2,9 @@ import '@vaadin/vaadin-button';
|
|
|
2
2
|
import "../InternalTimestampsControl/index.js";
|
|
3
3
|
import "../InternalCreateControl/index.js";
|
|
4
4
|
import "../InternalDeleteControl/index.js";
|
|
5
|
+
import "../../public/CopyToClipboard/index.js";
|
|
5
6
|
import "../../public/Spinner/index.js";
|
|
7
|
+
import "../../public/I18n/index.js";
|
|
6
8
|
import { InternalForm } from "./InternalForm.js";
|
|
7
9
|
customElements.define('foxy-internal-form', InternalForm);
|
|
8
10
|
export { InternalForm };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,+CAA4C;AAC5C,2CAAwC;AACxC,2CAAwC;AAExC,uCAAoC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,+CAA4C;AAC5C,2CAAwC;AACxC,2CAAwC;AAExC,+CAA4C;AAC5C,uCAAoC;AACpC,oCAAiC;AAEjC,OAAO,EAAE,YAAY,EAAE,0BAAuB;AAE9C,cAAc,CAAC,MAAM,CAAC,oBAAoB,EAAE,YAAY,CAAC,CAAC;AAE1D,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\n\nimport '../InternalTimestampsControl/index';\nimport '../InternalCreateControl/index';\nimport '../InternalDeleteControl/index';\n\nimport '../../public/CopyToClipboard/index';\nimport '../../public/Spinner/index';\nimport '../../public/I18n/index';\n\nimport { InternalForm } from './InternalForm';\n\ncustomElements.define('foxy-internal-form', InternalForm);\n\nexport { InternalForm };\n"]}
|
|
@@ -8,6 +8,7 @@ import { InternalEditableControl } from '../InternalEditableControl/InternalEdit
|
|
|
8
8
|
*/
|
|
9
9
|
export declare class InternalIntegerControl extends InternalEditableControl {
|
|
10
10
|
static get properties(): PropertyDeclarations;
|
|
11
|
+
showControls: boolean;
|
|
11
12
|
prefix: string | null;
|
|
12
13
|
suffix: string | null;
|
|
13
14
|
min: number | null;
|
|
@@ -10,6 +10,7 @@ import { html } from 'lit-element';
|
|
|
10
10
|
export class InternalIntegerControl extends InternalEditableControl {
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
|
+
this.showControls = false;
|
|
13
14
|
this.prefix = null;
|
|
14
15
|
this.suffix = null;
|
|
15
16
|
this.min = null;
|
|
@@ -18,6 +19,7 @@ export class InternalIntegerControl extends InternalEditableControl {
|
|
|
18
19
|
static get properties() {
|
|
19
20
|
return {
|
|
20
21
|
...super.properties,
|
|
22
|
+
showControls: { type: Boolean, attribute: 'show-controls' },
|
|
21
23
|
prefix: {},
|
|
22
24
|
suffix: {},
|
|
23
25
|
min: { type: Number },
|
|
@@ -35,6 +37,7 @@ export class InternalIntegerControl extends InternalEditableControl {
|
|
|
35
37
|
class="w-full"
|
|
36
38
|
min=${ifDefined((_a = this.min) !== null && _a !== void 0 ? _a : undefined)}
|
|
37
39
|
max=${ifDefined((_b = this.max) !== null && _b !== void 0 ? _b : undefined)}
|
|
40
|
+
?has-controls=${this.showControls}
|
|
38
41
|
?disabled=${this.disabled}
|
|
39
42
|
?readonly=${this.readonly}
|
|
40
43
|
.checkValidity=${this._checkValidity}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InternalIntegerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalIntegerControl/InternalIntegerControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAAnE;;
|
|
1
|
+
{"version":3,"file":"InternalIntegerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalIntegerControl/InternalIntegerControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC;;;;;GAKG;AACH,MAAM,OAAO,sBAAuB,SAAQ,uBAAuB;IAAnE;;QAYE,iBAAY,GAAG,KAAK,CAAC;QAErB,WAAM,GAAkB,IAAI,CAAC;QAE7B,WAAM,GAAkB,IAAI,CAAC;QAE7B,QAAG,GAAkB,IAAI,CAAC;QAE1B,QAAG,GAAkB,IAAI,CAAC;IA6B5B,CAAC;IAhDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,YAAY,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE;YAC3D,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;YACV,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACrB,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACtB,CAAC;IACJ,CAAC;IAYD,aAAa;;QACX,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK;;cAEZ,SAAS,OAAC,IAAI,CAAC,GAAG,mCAAI,SAAS,CAAC;cAChC,SAAS,OAAC,IAAI,CAAC,GAAG,mCAAI,SAAS,CAAC;wBACtB,IAAI,CAAC,YAAY;oBACrB,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,IAAI,CAAC,MAAM;;mBAET,CAAC,GAAkB,EAAE,EAAE,WAAC,OAAA,GAAG,CAAC,GAAG,KAAK,OAAO,WAAI,IAAI,CAAC,OAAO,0CAAE,MAAM,GAAE,CAAA,EAAA;kBACtE,CAAC,GAAgB,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,GAAG,CAAC,aAAoC,CAAC;YACvD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC;;UAEC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE;UAChE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAA,+CAA+C,IAAI,CAAC,MAAM,QAAQ,CAAC,CAAC,CAAC,EAAE;;KAE9F,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { IntegerFieldElement } from '@vaadin/vaadin-text-field/vaadin-integer-field';\nimport type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\n/**\n * Internal control displaying a basic integer box.\n *\n * @since 1.17.0\n * @element foxy-internal-integer-control\n */\nexport class InternalIntegerControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n showControls: { type: Boolean, attribute: 'show-controls' },\n prefix: {},\n suffix: {},\n min: { type: Number },\n max: { type: Number },\n };\n }\n\n showControls = false;\n\n prefix: string | null = null;\n\n suffix: string | null = null;\n\n min: number | null = null;\n\n max: number | null = null;\n\n renderControl(): TemplateResult {\n return html`\n <vaadin-integer-field\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n min=${ifDefined(this.min ?? undefined)}\n max=${ifDefined(this.max ?? undefined)}\n ?has-controls=${this.showControls}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${this._value}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as IntegerFieldElement;\n this._value = parseInt(field.value);\n }}\n >\n ${this.prefix ? html`<div slot=\"prefix\">${this.prefix}</div>` : ''}\n ${this.suffix ? html`<div class=\"pr-s font-medium\" slot=\"suffix\">${this.suffix}</div>` : ''}\n </vaadin-integer-field>\n `;\n }\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { PropertyDeclarations } from 'lit-element';
|
|
2
|
+
import type { TemplateResult } from 'lit-html';
|
|
3
|
+
import { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';
|
|
4
|
+
import { Operator } from '../../public/QueryBuilder/types';
|
|
5
|
+
export declare class InternalQueryBuilderControl extends InternalEditableControl {
|
|
6
|
+
static get properties(): PropertyDeclarations;
|
|
7
|
+
operators: Operator[];
|
|
8
|
+
disableOr: boolean;
|
|
9
|
+
renderControl(): TemplateResult;
|
|
10
|
+
}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { InternalEditableControl } from "../InternalEditableControl/InternalEditableControl.js";
|
|
2
|
+
import { Operator } from "../../public/QueryBuilder/types.js";
|
|
3
|
+
import { classMap } from "../../../utils/class-map.js";
|
|
4
|
+
import { html } from 'lit-html';
|
|
5
|
+
export class InternalQueryBuilderControl extends InternalEditableControl {
|
|
6
|
+
constructor() {
|
|
7
|
+
super(...arguments);
|
|
8
|
+
this.operators = Object.values(Operator);
|
|
9
|
+
this.disableOr = false;
|
|
10
|
+
}
|
|
11
|
+
static get properties() {
|
|
12
|
+
return {
|
|
13
|
+
...super.properties,
|
|
14
|
+
operators: { type: Array },
|
|
15
|
+
disableOr: { type: Boolean, attribute: 'disable-or' },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
renderControl() {
|
|
19
|
+
const { label, helperText, _errorMessage: error } = this;
|
|
20
|
+
const showError = error && !this.disabled && !this.readonly;
|
|
21
|
+
return html `
|
|
22
|
+
<section
|
|
23
|
+
class=${classMap({
|
|
24
|
+
'grid gap-xs leading-xs transition-colors': true,
|
|
25
|
+
'text-secondary hover-text-body': !this.disabled && !this.readonly,
|
|
26
|
+
'text-disabled': this.disabled,
|
|
27
|
+
'text-body': this.readonly,
|
|
28
|
+
})}
|
|
29
|
+
>
|
|
30
|
+
${label ? html `<p class="text-s font-medium">${label}</p>` : ''}
|
|
31
|
+
|
|
32
|
+
<foxy-query-builder
|
|
33
|
+
infer="query-builder"
|
|
34
|
+
.operators=${this.operators}
|
|
35
|
+
.value=${this._value}
|
|
36
|
+
?disable-or=${this.disableOr}
|
|
37
|
+
@change=${(evt) => {
|
|
38
|
+
var _a;
|
|
39
|
+
const queryBuilder = evt.currentTarget;
|
|
40
|
+
this._value = (_a = queryBuilder.value) !== null && _a !== void 0 ? _a : '';
|
|
41
|
+
}}
|
|
42
|
+
>
|
|
43
|
+
</foxy-query-builder>
|
|
44
|
+
|
|
45
|
+
${helperText ? html `<p class="text-xs">${helperText}</p>` : ''}
|
|
46
|
+
${showError ? html `<p class="text-xs text-error">${error}</p>` : ''}
|
|
47
|
+
</section>
|
|
48
|
+
`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=InternalQueryBuilderControl.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InternalQueryBuilderControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalQueryBuilderControl/InternalQueryBuilderControl.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,QAAQ,EAAE,2CAAwC;AAC3D,OAAO,EAAE,QAAQ,EAAE,oCAAiC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,OAAO,2BAA4B,SAAQ,uBAAuB;IAAxE;;QASE,cAAS,GAAe,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAEhD,cAAS,GAAG,KAAK,CAAC;IAkCpB,CAAC;IA5CC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE;SACtD,CAAC;IACJ,CAAC;IAMD,aAAa;QACX,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QACzD,MAAM,SAAS,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAE5D,OAAO,IAAI,CAAA;;gBAEC,QAAQ,CAAC;YACf,0CAA0C,EAAE,IAAI;YAChD,gCAAgC,EAAE,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ;YAClE,eAAe,EAAE,IAAI,CAAC,QAAQ;YAC9B,WAAW,EAAE,IAAI,CAAC,QAAQ;SAC3B,CAAC;;UAEA,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA,iCAAiC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;;;;uBAIhD,IAAI,CAAC,SAAS;mBAClB,IAAI,CAAC,MAAM;wBACN,IAAI,CAAC,SAAS;oBAClB,CAAC,GAAgB,EAAE,EAAE;;YAC7B,MAAM,YAAY,GAAG,GAAG,CAAC,aAA6B,CAAC;YACvD,IAAI,CAAC,MAAM,SAAG,YAAY,CAAC,KAAK,mCAAI,EAAE,CAAC;QACzC,CAAC;;;;UAID,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA,sBAAsB,UAAU,MAAM,CAAC,CAAC,CAAC,EAAE;UAC5D,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA,iCAAiC,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE;;KAEtE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { QueryBuilder } from '../../public/QueryBuilder/QueryBuilder';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { Operator } from '../../public/QueryBuilder/types';\nimport { classMap } from '../../../utils/class-map';\nimport { html } from 'lit-html';\n\nexport class InternalQueryBuilderControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n operators: { type: Array },\n disableOr: { type: Boolean, attribute: 'disable-or' },\n };\n }\n\n operators: Operator[] = Object.values(Operator);\n\n disableOr = false;\n\n renderControl(): TemplateResult {\n const { label, helperText, _errorMessage: error } = this;\n const showError = error && !this.disabled && !this.readonly;\n\n return html`\n <section\n class=${classMap({\n 'grid gap-xs leading-xs transition-colors': true,\n 'text-secondary hover-text-body': !this.disabled && !this.readonly,\n 'text-disabled': this.disabled,\n 'text-body': this.readonly,\n })}\n >\n ${label ? html`<p class=\"text-s font-medium\">${label}</p>` : ''}\n\n <foxy-query-builder\n infer=\"query-builder\"\n .operators=${this.operators}\n .value=${this._value}\n ?disable-or=${this.disableOr}\n @change=${(evt: CustomEvent) => {\n const queryBuilder = evt.currentTarget as QueryBuilder;\n this._value = queryBuilder.value ?? '';\n }}\n >\n </foxy-query-builder>\n\n ${helperText ? html`<p class=\"text-xs\">${helperText}</p>` : ''}\n ${showError ? html`<p class=\"text-xs text-error\">${error}</p>` : ''}\n </section>\n `;\n }\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import "../InternalEditableControl/index.js";
|
|
2
|
+
import "../../public/QueryBuilder/index.js";
|
|
3
|
+
import { InternalQueryBuilderControl } from "./InternalQueryBuilderControl.js";
|
|
4
|
+
customElements.define('foxy-internal-query-builder-control', InternalQueryBuilderControl);
|
|
5
|
+
export { InternalQueryBuilderControl };
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalQueryBuilderControl/index.ts"],"names":[],"mappings":"AAAA,6CAA0C;AAE1C,4CAAyC;AAEzC,OAAO,EAAE,2BAA2B,EAAE,yCAAsC;AAE5E,cAAc,CAAC,MAAM,CAAC,qCAAqC,EAAE,2BAA2B,CAAC,CAAC;AAE1F,OAAO,EAAE,2BAA2B,EAAE,CAAC","sourcesContent":["import '../InternalEditableControl/index';\n\nimport '../../public/QueryBuilder/index';\n\nimport { InternalQueryBuilderControl } from './InternalQueryBuilderControl';\n\ncustomElements.define('foxy-internal-query-builder-control', InternalQueryBuilderControl);\n\nexport { InternalQueryBuilderControl };\n"]}
|