@foxy.io/elements 1.37.0-beta.2 → 1.37.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.
Files changed (64) hide show
  1. package/dist/cdn/foxy-admin-subscription-form.js +1 -1
  2. package/dist/cdn/foxy-cart-form.js +1 -1
  3. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  4. package/dist/cdn/foxy-coupon-form.js +1 -1
  5. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  6. package/dist/cdn/foxy-customer-portal.js +1 -1
  7. package/dist/cdn/foxy-customer.js +1 -1
  8. package/dist/cdn/foxy-experimental-add-to-cart-builder.js +1 -1
  9. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  10. package/dist/cdn/foxy-gift-card-form.js +1 -1
  11. package/dist/cdn/foxy-item-category-form.js +1 -1
  12. package/dist/cdn/foxy-item-form.js +1 -1
  13. package/dist/cdn/foxy-payment-method-card.js +1 -1
  14. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  15. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  16. package/dist/cdn/foxy-subscription-form.js +1 -1
  17. package/dist/cdn/foxy-tax-form.js +1 -1
  18. package/dist/cdn/foxy-template-set-form.js +1 -1
  19. package/dist/cdn/foxy-transaction.js +1 -1
  20. package/dist/cdn/foxy-update-payment-method-form.js +1 -1
  21. package/dist/cdn/foxy-webhook-form.js +1 -1
  22. package/dist/cdn/{shared-0782fee5.js → shared-2edce408.js} +1 -1
  23. package/dist/cdn/shared-79f84a95.js +1 -0
  24. package/dist/cdn/{shared-fda02728.js → shared-8df437b0.js} +1 -1
  25. package/dist/cdn/translations/admin-subscription-form/en.json +1 -1
  26. package/dist/cdn/translations/cart-form/en.json +5 -5
  27. package/dist/cdn/translations/customer/en.json +1 -1
  28. package/dist/cdn/translations/experimental-add-to-cart-builder/en.json +3 -3
  29. package/dist/cdn/translations/gift-card-code-form/en.json +2 -1
  30. package/dist/cdn/translations/gift-card-form/en.json +3 -2
  31. package/dist/cdn/translations/item-category-form/en.json +2 -2
  32. package/dist/cdn/translations/item-form/en.json +1 -1
  33. package/dist/cdn/translations/payment-method-card/en.json +2 -2
  34. package/dist/cdn/translations/transaction/en.json +1 -1
  35. package/dist/cdn/translations/update-payment-method-form/en.json +1 -1
  36. package/dist/cdn/translations/webhook-form/en.json +12 -12
  37. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.d.ts +1 -1
  38. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js +9 -7
  39. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControl.js.map +1 -1
  40. package/dist/elements/internal/InternalDateControl/InternalDateControl.d.ts +1 -0
  41. package/dist/elements/internal/InternalDateControl/InternalDateControl.js +18 -2
  42. package/dist/elements/internal/InternalDateControl/InternalDateControl.js.map +1 -1
  43. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.d.ts +2 -1
  44. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js +18 -5
  45. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js.map +1 -1
  46. package/dist/elements/public/AdminSubscriptionForm/AdminSubscriptionForm.js +10 -3
  47. package/dist/elements/public/AdminSubscriptionForm/AdminSubscriptionForm.js.map +1 -1
  48. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +4 -1
  49. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +17 -0
  50. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
  51. package/dist/elements/public/GiftCardCodeForm/types.d.ts +1 -0
  52. package/dist/elements/public/GiftCardCodeForm/types.js.map +1 -1
  53. package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +5 -0
  54. package/dist/elements/public/GiftCardForm/GiftCardForm.js +18 -8
  55. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  56. package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js +1 -1
  57. package/dist/elements/public/ItemCategoryForm/ItemCategoryForm.js.map +1 -1
  58. package/dist/elements/public/WebhookForm/WebhookForm.js +5 -3
  59. package/dist/elements/public/WebhookForm/WebhookForm.js.map +1 -1
  60. package/dist/elements/public/WebhookForm/index.d.ts +0 -1
  61. package/dist/elements/public/WebhookForm/index.js +0 -1
  62. package/dist/elements/public/WebhookForm/index.js.map +1 -1
  63. package/package.json +1 -1
  64. package/dist/cdn/shared-a72df5aa.js +0 -1
@@ -45,20 +45,20 @@
45
45
  "event_resource_subscription": "Subscription",
46
46
  "event_resource_transaction": "Transaction",
47
47
  "event_resource_customer": "Customer"
48
+ },
49
+ "url": {
50
+ "label": "Endpoint",
51
+ "placeholder": "Example: https://example.com/webhook",
52
+ "helper_text": "",
53
+ "v8n_too_long": "URL cannot exceed 1000 characters"
54
+ },
55
+ "query": {
56
+ "label": "Query",
57
+ "placeholder": "Example: zoom=items,items:options,customer",
58
+ "helper_text": "",
59
+ "v8n_too_long": "Query cannot exceed 1000 characters"
48
60
  }
49
61
  },
50
- "url": {
51
- "label": "Endpoint",
52
- "placeholder": "Example: https://example.com/webhook",
53
- "helper_text": "",
54
- "v8n_too_long": "URL cannot exceed 1000 characters"
55
- },
56
- "query": {
57
- "label": "Query",
58
- "placeholder": "Example: zoom=items,items:options,customer",
59
- "helper_text": "",
60
- "v8n_too_long": "Query cannot exceed 1000 characters"
61
- },
62
62
  "statuses": {
63
63
  "label": "Runs",
64
64
  "pagination": {
@@ -49,6 +49,7 @@ export declare class InternalAsyncListControl extends InternalEditableControl {
49
49
  hideCreateButton: boolean;
50
50
  /** If set, renders list items as <a> tags. */
51
51
  getPageHref: ((itemHref: string, item: unknown) => string | null) | null;
52
+ filter: string | null;
52
53
  private __deletionConfimationCallback;
53
54
  private __cachedCardRenderer;
54
55
  private __activeBulkAction;
@@ -58,7 +59,6 @@ export declare class InternalAsyncListControl extends InternalEditableControl {
58
59
  private __totalItems;
59
60
  private __selection;
60
61
  private __itemRenderer;
61
- private __filter;
62
62
  render(): TemplateResult;
63
63
  renderControl(): TemplateResult;
64
64
  private get __cardRenderer();
@@ -48,6 +48,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
48
48
  this.hideCreateButton = false;
49
49
  /** If set, renders list items as <a> tags. */
50
50
  this.getPageHref = null;
51
+ this.filter = null;
51
52
  this.__deletionConfimationCallback = null;
52
53
  this.__cachedCardRenderer = null;
53
54
  this.__activeBulkAction = null;
@@ -186,7 +187,6 @@ export class InternalAsyncListControl extends InternalEditableControl {
186
187
  </foxy-swipe-actions>
187
188
  `;
188
189
  };
189
- this.__filter = '';
190
190
  }
191
191
  static get properties() {
192
192
  return {
@@ -212,7 +212,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
212
212
  actions: { attribute: false },
213
213
  bulkActions: { attribute: false },
214
214
  filters: { type: Array },
215
- __filter: { attribute: false },
215
+ filter: {},
216
216
  __selection: { attribute: false },
217
217
  __totalItems: { attribute: false },
218
218
  __isSelecting: { attribute: false },
@@ -376,6 +376,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
376
376
  return this.renderRoot.querySelector('#form');
377
377
  }
378
378
  __renderActions() {
379
+ var _a;
379
380
  return [
380
381
  this.filters.length > 0 && !this.__isSelecting
381
382
  ? html `
@@ -384,7 +385,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
384
385
  .positionTarget=${this.renderRoot.querySelector('#filters')}
385
386
  .model=${{
386
387
  options: this.filters,
387
- value: this.__filter,
388
+ value: (_a = this.filter) !== null && _a !== void 0 ? _a : '',
388
389
  lang: this.lang,
389
390
  ns: this.ns,
390
391
  }}
@@ -392,7 +393,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
392
393
  @vaadin-overlay-close=${() => (this.__isFilterVisible = false)}
393
394
  @search=${(evt) => {
394
395
  var _a;
395
- this.__filter = (_a = evt.detail) !== null && _a !== void 0 ? _a : '';
396
+ this.filter = (_a = evt.detail) !== null && _a !== void 0 ? _a : '';
396
397
  }}
397
398
  >
398
399
  </foxy-internal-async-list-control-filter-overlay>
@@ -404,6 +405,7 @@ export class InternalAsyncListControl extends InternalEditableControl {
404
405
  @click=${() => (this.__isFilterVisible = !this.__isFilterVisible)}
405
406
  >
406
407
  <foxy-i18n infer="pagination" key="search_button_text"></foxy-i18n>
408
+ ${this.filter ? html `<span>(${this.filter.split('&').length})</span>` : ''}
407
409
  </vaadin-button>
408
410
  `
409
411
  : '',
@@ -503,19 +505,19 @@ export class InternalAsyncListControl extends InternalEditableControl {
503
505
  ].filter(v => !!v);
504
506
  }
505
507
  __renderContent() {
506
- var _a;
508
+ var _a, _b;
507
509
  const helperText = this.helperText;
508
510
  const isDetails = this.layout === 'details';
509
511
  const label = this.label;
510
512
  let first;
511
513
  try {
512
514
  const url = new URL((_a = this.first) !== null && _a !== void 0 ? _a : '');
513
- const filter = new URLSearchParams(this.__filter);
515
+ const filter = new URLSearchParams((_b = this.filter) !== null && _b !== void 0 ? _b : '');
514
516
  url.searchParams.set('limit', String(this.limit));
515
517
  filter.forEach((value, key) => url.searchParams.set(key, value));
516
518
  first = url.toString();
517
519
  }
518
- catch (_b) {
520
+ catch (_c) {
519
521
  first = undefined;
520
522
  }
521
523
  return html `
@@ -1 +1 @@
1
- {"version":3,"file":"InternalAsyncListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/InternalAsyncListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CollectionPage, NucleonElement } from '../../public/index';\nimport type { BulkAction, SwipeAction } from './types';\nimport type { InternalSummaryControl } from '../InternalSummaryControl/InternalSummaryControl';\nimport type { InternalConfirmDialog } from '../InternalConfirmDialog';\nimport type { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { UpdateEvent } from '../../public/NucleonElement/UpdateEvent';\nimport type { FormDialog } from '../../index';\nimport type { Option } from '../../public/QueryBuilder/types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { render } from 'lit-html';\nimport { html } from 'lit-element';\n\nexport class InternalAsyncListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n keepDialogOpenOnDelete: { type: Boolean, attribute: 'keep-dialog-open-on-delete' },\n keepDialogOpenOnPost: { type: Boolean, attribute: 'keep-dialog-open-on-post' },\n hideDeleteButton: { type: Boolean, attribute: 'hide-delete-button' },\n hideCreateButton: { type: Boolean, attribute: 'hide-create-button' },\n createPageHref: { attribute: 'create-page-href' },\n getPageHref: { attribute: false },\n related: { type: Array },\n layout: {},\n first: {},\n limit: { type: Number },\n form: {},\n formProps: { type: Object, attribute: 'form-props' },\n item: {},\n itemProps: { type: Object, attribute: 'item-props' },\n wide: { type: Boolean },\n open: { type: Boolean },\n hideWhenEmpty: { type: Boolean, attribute: 'hide-when-empty' },\n alert: { type: Boolean },\n actions: { attribute: false },\n bulkActions: { attribute: false },\n filters: { type: Array },\n __filter: { attribute: false },\n __selection: { attribute: false },\n __totalItems: { attribute: false },\n __isSelecting: { attribute: false },\n __notification: { attribute: false },\n __isFilterVisible: { attribute: false },\n __activeBulkAction: { attribute: false },\n };\n }\n\n /** If true, FormDialog won't automatically close after the associated form deletes the resource. */\n keepDialogOpenOnDelete = false;\n\n /** If true, FormDialog won't automatically close after the associated form creates a resource. */\n keepDialogOpenOnPost = false;\n\n /** If provided, renders Create button as a link to this page. */\n createPageHref: string | null = null;\n\n /** Bulk actions that appear when one or more items are selected. */\n bulkActions = [] as BulkAction[];\n\n /** Same as the `related` property of `NucleonElement`. */\n related = [] as string[];\n\n /** When set to `details`, makes the entire control collapsible. */\n layout: 'details' | null = null;\n\n /** Swipe actions. */\n actions = [] as SwipeAction[];\n\n /** Query parameters to apply to the `first` URL. */\n filters = [] as Option[];\n\n /** Limit query parameter to apply to the `first` URL. */\n limit = 20;\n\n /** URI of the first page of the hAPI collection to display. */\n first: string | null = null;\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = null;\n\n /** Props to pass through to the form rendered by `FormDialog`. */\n formProps: Record<string, unknown> = {};\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = null;\n\n /** Props to pass through to the `CollectionPage` rendering items. */\n itemProps: Record<string, unknown> = {};\n\n /** Same as the `wide` property of `FormDialog`. */\n wide = false;\n\n /** Visually hides the control when the collection is empty or loading. */\n hideWhenEmpty = false;\n\n /** Same as the `open` property of `InternalSummaryControl`. */\n open = false;\n\n /** Same as the `alert` property of `FormDialog`. */\n alert = false;\n\n /** Hides Delete Swipe Action if true. */\n hideDeleteButton = false;\n\n /** Hides Create button if true. */\n hideCreateButton = false;\n\n /** If set, renders list items as <a> tags. */\n getPageHref: ((itemHref: string, item: unknown) => string | null) | null = null;\n\n private __deletionConfimationCallback: (() => void) | null = null;\n\n private __cachedCardRenderer: {\n item: InternalAsyncListControl['item'];\n render: ItemRenderer;\n } | null = null;\n\n private __activeBulkAction: BulkAction | null = null;\n\n private __isFilterVisible = false;\n\n private __notification: { key: string; theme?: string } | null = null;\n\n private __isSelecting = false;\n\n private __totalItems = 0;\n\n private __selection: HALJSONResource[] = [];\n\n private __itemRenderer: ItemRenderer = ctx => {\n const item = this.__cardRenderer(ctx);\n const readonlyItem = html`<div class=\"bg-contrast-5\">${item}</div>`;\n\n if (!ctx.data) return readonlyItem;\n\n if (this.__isSelecting) {\n return html`\n <vaadin-checkbox\n class=${classMap({ 'block w-full': true, 'bg-contrast-5': this.layout === 'details' })}\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n data-async-list-control\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n ?checked=${this.__selection.find(v => v._links.self.href === ctx.data!._links.self.href)}\n @change=${(evt: CustomEvent) => {\n if ((evt.currentTarget as CheckboxElement).checked) {\n this.__selection = [...this.__selection, ctx.data!];\n } else {\n this.__selection = this.__selection.filter(\n v => v._links.self.href !== ctx.data!._links.self.href\n );\n }\n }}\n >\n ${this.__cardRenderer(ctx)}\n </vaadin-checkbox>\n `;\n }\n\n const href = this.getPageHref?.(ctx.href, ctx.data);\n if (typeof href !== 'string' && !this.form) return readonlyItem;\n\n const isDisabled = this.disabledSelector.matches('card', true);\n const card = this.__cardRenderer(ctx);\n let clickableItem: TemplateResult;\n\n const wrapperClass = classMap({\n 'rounded-t': this.layout !== 'details' && !ctx.previous,\n 'rounded-b': !ctx.next,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'text-left w-full block bg-contrast-5 transition-colors': true,\n 'hover-bg-contrast-10': !isDisabled,\n });\n\n if (this.getPageHref) {\n if (isDisabled) {\n clickableItem = html`<div class=${wrapperClass}>${card}</div>`;\n } else {\n const href = this.getPageHref(ctx.href, ctx.data);\n clickableItem = html`<a class=${wrapperClass} href=${href}>${card}</a>`;\n }\n } else {\n const handleClick = (evt: Event) => {\n const clickEvent = new CustomEvent<string>('itemclick', {\n cancelable: true,\n composed: true,\n bubbles: true,\n detail: ctx.href,\n });\n\n if (this.dispatchEvent(clickEvent)) {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.__dialog;\n\n dialog.header = 'header_update';\n dialog.href = ctx.href;\n dialog.show(button);\n }\n };\n\n clickableItem = html`\n <button ?disabled=${isDisabled} class=${wrapperClass} @click=${handleClick}>${card}</button>\n `;\n }\n\n if ((this.hideDeleteButton && !this.actions.length) || this.readonly) return clickableItem;\n\n return html`\n <foxy-swipe-actions class=\"block\">\n ${clickableItem}\n ${this.actions.map(action => {\n return html`\n <vaadin-button\n data-testclass=\"action\"\n theme=${action.theme}\n class=\"h-full rounded-none relative\"\n slot=\"action\"\n ?disabled=${this.disabled}\n @click=${() => action.onClick(ctx.data!)}\n >\n <foxy-i18n\n class=${classMap({\n 'transition-opacity': true,\n 'opacity-0': action.state !== 'idle',\n })}\n infer=\"\"\n key=${action.text}\n >\n </foxy-i18n>\n <div\n class=${classMap({\n 'absolute inset-0 flex items-center justify-center transition-opacity': true,\n 'opacity-0': action.state === 'idle',\n })}\n >\n <foxy-spinner layout=\"no-label\" infer=\"spinner\" state=${action.state}>\n </foxy-spinner>\n </div>\n </vaadin-button>\n `;\n })}\n ${this.hideDeleteButton\n ? ''\n : html`\n <vaadin-button\n theme=\"primary error\"\n class=\"h-full rounded-none\"\n slot=\"action\"\n @click=${(evt: CustomEvent) => {\n const button = evt.currentTarget as HTMLElement;\n const confirm = this.renderRoot.querySelector(\n '#confirm'\n ) as InternalConfirmDialog;\n\n confirm.show(button);\n\n this.__deletionConfimationCallback = () => {\n const cardButton = button.parentElement!.firstElementChild!;\n const card = cardButton.querySelector<NucleonElement<any>>('[href]');\n\n card?.delete();\n this.__deletionConfimationCallback = null;\n };\n }}\n >\n <foxy-i18n infer=\"\" key=\"delete_button_text\"></foxy-i18n>\n </vaadin-button>\n `}\n </foxy-swipe-actions>\n `;\n };\n\n private __filter = '';\n\n render(): TemplateResult {\n const hidden = this.hideWhenEmpty && !this.__totalItems;\n return html`<div class=${classMap({ hidden })}>${super.render()}</div>`;\n }\n\n renderControl(): TemplateResult {\n const actions = this.__renderActions();\n const content = this.__renderContent();\n\n return html`\n ${this.form && !this.__isSelecting\n ? html`\n <foxy-form-dialog\n parent=${ifDefined(this.first ?? void 0)}\n infer=\"dialog\"\n id=\"form\"\n ?wide=${this.wide}\n ?alert=${this.alert}\n ?keep-open-on-post=${this.keepDialogOpenOnPost}\n ?keep-open-on-delete=${this.keepDialogOpenOnDelete}\n .related=${this.related}\n .props=${this.formProps}\n .form=${this.form as any}\n >\n </foxy-form-dialog>\n `\n : ''}\n ${this.hideDeleteButton || this.readonly || this.__isSelecting\n ? ''\n : html`\n <foxy-internal-confirm-dialog\n message=\"delete_message\"\n confirm=\"delete_confirm\"\n cancel=\"delete_cancel\"\n header=\"delete_header\"\n theme=\"error\"\n infer=\"\"\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n ${this.layout === 'details'\n ? html`\n <foxy-internal-summary-control\n layout=\"details\"\n count=${ifDefined(this.open ? void 0 : `${this.__totalItems}`)}\n infer=\"\"\n ?open=${this.open}\n @toggle=${(evt: CustomEvent) => {\n const summary = evt.currentTarget as InternalSummaryControl;\n this.open = summary.open;\n if (!evt.composed && !evt.bubbles) this.dispatchEvent(new CustomEvent('toggle'));\n }}\n >\n ${actions.length\n ? html`\n <div class=\"flex gap-s\">\n <foxy-i18n\n infer=\"\"\n class=\"mr-auto text-tertiary\"\n key=\"total_items\"\n .options=${{ count: this.__totalItems }}\n >\n </foxy-i18n>\n ${actions}\n </div>\n `\n : ''}\n <div class=\"p-0 bg-transparent\">${content}</div>\n </foxy-internal-summary-control>\n `\n : html`\n <div class=\"flex gap-s items-center justify-between font-medium\">\n <span class=\"text-body mr-auto text-l\">\n ${this.label && this.label !== 'label' ? this.label : ''}\n </span>\n ${actions}\n </div>\n\n <div\n class=\"text-secondary text-s\"\n ?hidden=${!this.helperText || this.helperText === 'helper_text'}\n >\n ${this.helperText}\n </div>\n\n ${content}\n `}\n\n <div\n class=\"mt-s text-s leading-xs text-error\"\n ?hidden=${!this._errorMessage || this.disabled || this.readonly || this.__isSelecting}\n >\n ${this._errorMessage}\n </div>\n\n <vaadin-notification\n position=\"bottom-end\"\n duration=\"3000\"\n theme=${ifDefined(this.__notification?.theme)}\n .renderer=${(root: HTMLElement) => {\n if (!root.firstElementChild) root.innerHTML = '<span></span>';\n\n const theme = this.__notification?.theme;\n const layout = html`\n <foxy-i18n\n style=\"color: var(--lumo-${theme ? `${theme}-contrast` : 'body-text'}-color)\"\n lang=${this.lang}\n key=${this.__notification?.key}\n ns=\"${this.ns} pagination\"\n >\n </foxy-i18n>\n `;\n\n render(layout, root.firstElementChild!);\n }}\n >\n </vaadin-notification>\n `;\n }\n\n private get __cardRenderer() {\n const item = this.item;\n\n if (this.__cachedCardRenderer?.item !== item) {\n this.__cachedCardRenderer = {\n item: item,\n render:\n typeof item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`\n <${item}\n related=\\${JSON.stringify(ctx.related)}\n parent=\\${ctx.parent}\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"\"\n href=\\${ctx.href}\n ...=\\${ctx.spread(ctx.props)}\n >\n </${item}>\\``\n ) as ItemRenderer)\n : ctx => html`\n <div style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">\n ${item?.(ctx)}\n </div>\n `,\n };\n }\n\n return this.__cachedCardRenderer.render;\n }\n\n private get __dialog() {\n return this.renderRoot.querySelector('#form') as FormDialog;\n }\n\n private __renderActions() {\n return [\n this.filters.length > 0 && !this.__isSelecting\n ? html`\n <foxy-internal-async-list-control-filter-overlay\n .noVerticalOverlap=${true}\n .positionTarget=${this.renderRoot.querySelector('#filters')}\n .model=${{\n options: this.filters,\n value: this.__filter,\n lang: this.lang,\n ns: this.ns,\n }}\n ?opened=${this.__isFilterVisible}\n @vaadin-overlay-close=${() => (this.__isFilterVisible = false)}\n @search=${(evt: CustomEvent<string | undefined>) => {\n this.__filter = evt.detail ?? '';\n }}\n >\n </foxy-internal-async-list-control-filter-overlay>\n\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n id=\"filters\"\n ?disabled=${this.disabled}\n @click=${() => (this.__isFilterVisible = !this.__isFilterVisible)}\n >\n <foxy-i18n infer=\"pagination\" key=\"search_button_text\"></foxy-i18n>\n </vaadin-button>\n `\n : '',\n\n this.bulkActions.length > 0 && this.first\n ? html`\n ${this.__selection.length > 0\n ? this.bulkActions.map(action => {\n const nPrefix = `${action.name}_bulk_action_notification`;\n const cPrefix = `${action.name}_bulk_action_caption`;\n const isActive = this.__activeBulkAction?.name === action.name;\n\n return html`\n <vaadin-button\n data-testclass=\"bulk-action\"\n theme=\"tertiary-inline\"\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n @click=${async () => {\n this.__activeBulkAction = action;\n\n try {\n await action.onClick(this.__selection);\n this.__selection = [];\n this.__isSelecting = false;\n this.__notification = { key: `${nPrefix}_done`, theme: 'success' };\n } catch {\n this.__notification = { key: `${nPrefix}_fail`, theme: 'error' };\n } finally {\n this.__activeBulkAction = null;\n this.renderRoot.querySelector('vaadin-notification')?.open();\n }\n }}\n >\n <foxy-i18n\n infer=\"pagination\"\n key=\"${cPrefix}_${isActive ? 'busy' : 'idle'}\"\n .options=${{ count: this.__selection.length }}\n >\n </foxy-i18n>\n </vaadin-button>\n `;\n })\n : ''}\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n @click=${() => {\n this.__isSelecting = !this.__isSelecting;\n this.__selection = [];\n }}\n >\n <foxy-i18n\n infer=\"pagination\"\n key=${this.__isSelecting ? 'cancel_button_text' : 'select_button_text'}\n >\n </foxy-i18n>\n </vaadin-button>\n `\n : '',\n\n (!this.form && !this.createPageHref) ||\n this.readonly ||\n this.hideCreateButton ||\n this.__isSelecting\n ? ''\n : this.createPageHref && !this.disabled\n ? html`\n <a\n class=\"rounded-s text-primary group focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=${this.createPageHref}\n >\n <foxy-i18n\n class=\"transition-opacity group-hover-opacity-80\"\n infer=\"\"\n key=\"create_button_text\"\n >\n </foxy-i18n>\n </a>\n `\n : html`\n <vaadin-button\n theme=\"tertiary-inline\"\n ?disabled=${this.disabled}\n @click=${(evt: Event) => {\n evt.preventDefault();\n evt.stopPropagation();\n\n const dialog = this.__dialog;\n const button = evt.currentTarget as HTMLButtonElement;\n\n dialog.header = 'header_create';\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <foxy-i18n infer=\"pagination\" key=\"create_button_text\"></foxy-i18n>\n </vaadin-button>\n `,\n ].filter(v => !!v);\n }\n\n private __renderContent() {\n const helperText = this.helperText;\n const isDetails = this.layout === 'details';\n const label = this.label;\n\n let first: string | undefined;\n\n try {\n const url = new URL(this.first ?? '');\n const filter = new URLSearchParams(this.__filter);\n\n url.searchParams.set('limit', String(this.limit));\n filter.forEach((value, key) => url.searchParams.set(key, value));\n first = url.toString();\n } catch {\n first = undefined;\n }\n\n return html`\n <foxy-pagination\n first=${ifDefined(first)}\n infer=\"pagination\"\n class=${classMap({ hidden: isDetails && this.__totalItems === 0 })}\n >\n <foxy-collection-page\n class=${classMap({\n 'grid grid-cols-1 overflow-hidden': true,\n 'rounded': !isDetails,\n 'mt-s':\n !isDetails &&\n ((!!label && label !== 'label') || (!!helperText && helperText !== 'helper_text')),\n })}\n style=\"gap: 1px\"\n infer=\"card\"\n .related=${this.related}\n .props=${this.itemProps}\n .item=${this.__itemRenderer}\n @update=${(evt: UpdateEvent) => {\n const page = evt.currentTarget as CollectionPage<any>;\n this.__totalItems = parseInt(page.data?.total_items ?? 0);\n }}\n >\n </foxy-collection-page>\n </foxy-pagination>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalAsyncListControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncListControl/InternalAsyncListControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { CollectionPage, NucleonElement } from '../../public/index';\nimport type { BulkAction, SwipeAction } from './types';\nimport type { InternalSummaryControl } from '../InternalSummaryControl/InternalSummaryControl';\nimport type { InternalConfirmDialog } from '../InternalConfirmDialog';\nimport type { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { CheckboxElement } from '@vaadin/vaadin-checkbox';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { UpdateEvent } from '../../public/NucleonElement/UpdateEvent';\nimport type { FormDialog } from '../../index';\nimport type { Option } from '../../public/QueryBuilder/types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { classMap } from '../../../utils/class-map';\nimport { render } from 'lit-html';\nimport { html } from 'lit-element';\n\nexport class InternalAsyncListControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n keepDialogOpenOnDelete: { type: Boolean, attribute: 'keep-dialog-open-on-delete' },\n keepDialogOpenOnPost: { type: Boolean, attribute: 'keep-dialog-open-on-post' },\n hideDeleteButton: { type: Boolean, attribute: 'hide-delete-button' },\n hideCreateButton: { type: Boolean, attribute: 'hide-create-button' },\n createPageHref: { attribute: 'create-page-href' },\n getPageHref: { attribute: false },\n related: { type: Array },\n layout: {},\n first: {},\n limit: { type: Number },\n form: {},\n formProps: { type: Object, attribute: 'form-props' },\n item: {},\n itemProps: { type: Object, attribute: 'item-props' },\n wide: { type: Boolean },\n open: { type: Boolean },\n hideWhenEmpty: { type: Boolean, attribute: 'hide-when-empty' },\n alert: { type: Boolean },\n actions: { attribute: false },\n bulkActions: { attribute: false },\n filters: { type: Array },\n filter: {},\n __selection: { attribute: false },\n __totalItems: { attribute: false },\n __isSelecting: { attribute: false },\n __notification: { attribute: false },\n __isFilterVisible: { attribute: false },\n __activeBulkAction: { attribute: false },\n };\n }\n\n /** If true, FormDialog won't automatically close after the associated form deletes the resource. */\n keepDialogOpenOnDelete = false;\n\n /** If true, FormDialog won't automatically close after the associated form creates a resource. */\n keepDialogOpenOnPost = false;\n\n /** If provided, renders Create button as a link to this page. */\n createPageHref: string | null = null;\n\n /** Bulk actions that appear when one or more items are selected. */\n bulkActions = [] as BulkAction[];\n\n /** Same as the `related` property of `NucleonElement`. */\n related = [] as string[];\n\n /** When set to `details`, makes the entire control collapsible. */\n layout: 'details' | null = null;\n\n /** Swipe actions. */\n actions = [] as SwipeAction[];\n\n /** Query parameters to apply to the `first` URL. */\n filters = [] as Option[];\n\n /** Limit query parameter to apply to the `first` URL. */\n limit = 20;\n\n /** URI of the first page of the hAPI collection to display. */\n first: string | null = null;\n\n /** Same as the `form` property of `FormDialog`. If set, will open a dialog on item click. */\n form: FormDialog['form'] = null;\n\n /** Props to pass through to the form rendered by `FormDialog`. */\n formProps: Record<string, unknown> = {};\n\n /** Same as the `item` property of `CollectionPage`. */\n item: CollectionPage<any>['item'] = null;\n\n /** Props to pass through to the `CollectionPage` rendering items. */\n itemProps: Record<string, unknown> = {};\n\n /** Same as the `wide` property of `FormDialog`. */\n wide = false;\n\n /** Visually hides the control when the collection is empty or loading. */\n hideWhenEmpty = false;\n\n /** Same as the `open` property of `InternalSummaryControl`. */\n open = false;\n\n /** Same as the `alert` property of `FormDialog`. */\n alert = false;\n\n /** Hides Delete Swipe Action if true. */\n hideDeleteButton = false;\n\n /** Hides Create button if true. */\n hideCreateButton = false;\n\n /** If set, renders list items as <a> tags. */\n getPageHref: ((itemHref: string, item: unknown) => string | null) | null = null;\n\n filter: string | null = null;\n\n private __deletionConfimationCallback: (() => void) | null = null;\n\n private __cachedCardRenderer: {\n item: InternalAsyncListControl['item'];\n render: ItemRenderer;\n } | null = null;\n\n private __activeBulkAction: BulkAction | null = null;\n\n private __isFilterVisible = false;\n\n private __notification: { key: string; theme?: string } | null = null;\n\n private __isSelecting = false;\n\n private __totalItems = 0;\n\n private __selection: HALJSONResource[] = [];\n\n private __itemRenderer: ItemRenderer = ctx => {\n const item = this.__cardRenderer(ctx);\n const readonlyItem = html`<div class=\"bg-contrast-5\">${item}</div>`;\n\n if (!ctx.data) return readonlyItem;\n\n if (this.__isSelecting) {\n return html`\n <vaadin-checkbox\n class=${classMap({ 'block w-full': true, 'bg-contrast-5': this.layout === 'details' })}\n style=\"padding-left: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n data-async-list-control\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n ?checked=${this.__selection.find(v => v._links.self.href === ctx.data!._links.self.href)}\n @change=${(evt: CustomEvent) => {\n if ((evt.currentTarget as CheckboxElement).checked) {\n this.__selection = [...this.__selection, ctx.data!];\n } else {\n this.__selection = this.__selection.filter(\n v => v._links.self.href !== ctx.data!._links.self.href\n );\n }\n }}\n >\n ${this.__cardRenderer(ctx)}\n </vaadin-checkbox>\n `;\n }\n\n const href = this.getPageHref?.(ctx.href, ctx.data);\n if (typeof href !== 'string' && !this.form) return readonlyItem;\n\n const isDisabled = this.disabledSelector.matches('card', true);\n const card = this.__cardRenderer(ctx);\n let clickableItem: TemplateResult;\n\n const wrapperClass = classMap({\n 'rounded-t': this.layout !== 'details' && !ctx.previous,\n 'rounded-b': !ctx.next,\n 'focus-outline-none focus-ring-2 focus-ring-inset focus-ring-primary-50': true,\n 'text-left w-full block bg-contrast-5 transition-colors': true,\n 'hover-bg-contrast-10': !isDisabled,\n });\n\n if (this.getPageHref) {\n if (isDisabled) {\n clickableItem = html`<div class=${wrapperClass}>${card}</div>`;\n } else {\n const href = this.getPageHref(ctx.href, ctx.data);\n clickableItem = html`<a class=${wrapperClass} href=${href}>${card}</a>`;\n }\n } else {\n const handleClick = (evt: Event) => {\n const clickEvent = new CustomEvent<string>('itemclick', {\n cancelable: true,\n composed: true,\n bubbles: true,\n detail: ctx.href,\n });\n\n if (this.dispatchEvent(clickEvent)) {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.__dialog;\n\n dialog.header = 'header_update';\n dialog.href = ctx.href;\n dialog.show(button);\n }\n };\n\n clickableItem = html`\n <button ?disabled=${isDisabled} class=${wrapperClass} @click=${handleClick}>${card}</button>\n `;\n }\n\n if ((this.hideDeleteButton && !this.actions.length) || this.readonly) return clickableItem;\n\n return html`\n <foxy-swipe-actions class=\"block\">\n ${clickableItem}\n ${this.actions.map(action => {\n return html`\n <vaadin-button\n data-testclass=\"action\"\n theme=${action.theme}\n class=\"h-full rounded-none relative\"\n slot=\"action\"\n ?disabled=${this.disabled}\n @click=${() => action.onClick(ctx.data!)}\n >\n <foxy-i18n\n class=${classMap({\n 'transition-opacity': true,\n 'opacity-0': action.state !== 'idle',\n })}\n infer=\"\"\n key=${action.text}\n >\n </foxy-i18n>\n <div\n class=${classMap({\n 'absolute inset-0 flex items-center justify-center transition-opacity': true,\n 'opacity-0': action.state === 'idle',\n })}\n >\n <foxy-spinner layout=\"no-label\" infer=\"spinner\" state=${action.state}>\n </foxy-spinner>\n </div>\n </vaadin-button>\n `;\n })}\n ${this.hideDeleteButton\n ? ''\n : html`\n <vaadin-button\n theme=\"primary error\"\n class=\"h-full rounded-none\"\n slot=\"action\"\n @click=${(evt: CustomEvent) => {\n const button = evt.currentTarget as HTMLElement;\n const confirm = this.renderRoot.querySelector(\n '#confirm'\n ) as InternalConfirmDialog;\n\n confirm.show(button);\n\n this.__deletionConfimationCallback = () => {\n const cardButton = button.parentElement!.firstElementChild!;\n const card = cardButton.querySelector<NucleonElement<any>>('[href]');\n\n card?.delete();\n this.__deletionConfimationCallback = null;\n };\n }}\n >\n <foxy-i18n infer=\"\" key=\"delete_button_text\"></foxy-i18n>\n </vaadin-button>\n `}\n </foxy-swipe-actions>\n `;\n };\n\n render(): TemplateResult {\n const hidden = this.hideWhenEmpty && !this.__totalItems;\n return html`<div class=${classMap({ hidden })}>${super.render()}</div>`;\n }\n\n renderControl(): TemplateResult {\n const actions = this.__renderActions();\n const content = this.__renderContent();\n\n return html`\n ${this.form && !this.__isSelecting\n ? html`\n <foxy-form-dialog\n parent=${ifDefined(this.first ?? void 0)}\n infer=\"dialog\"\n id=\"form\"\n ?wide=${this.wide}\n ?alert=${this.alert}\n ?keep-open-on-post=${this.keepDialogOpenOnPost}\n ?keep-open-on-delete=${this.keepDialogOpenOnDelete}\n .related=${this.related}\n .props=${this.formProps}\n .form=${this.form as any}\n >\n </foxy-form-dialog>\n `\n : ''}\n ${this.hideDeleteButton || this.readonly || this.__isSelecting\n ? ''\n : html`\n <foxy-internal-confirm-dialog\n message=\"delete_message\"\n confirm=\"delete_confirm\"\n cancel=\"delete_cancel\"\n header=\"delete_header\"\n theme=\"error\"\n infer=\"\"\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => {\n if (!evt.detail.cancelled) this.__deletionConfimationCallback?.();\n }}\n >\n </foxy-internal-confirm-dialog>\n `}\n ${this.layout === 'details'\n ? html`\n <foxy-internal-summary-control\n layout=\"details\"\n count=${ifDefined(this.open ? void 0 : `${this.__totalItems}`)}\n infer=\"\"\n ?open=${this.open}\n @toggle=${(evt: CustomEvent) => {\n const summary = evt.currentTarget as InternalSummaryControl;\n this.open = summary.open;\n if (!evt.composed && !evt.bubbles) this.dispatchEvent(new CustomEvent('toggle'));\n }}\n >\n ${actions.length\n ? html`\n <div class=\"flex gap-s\">\n <foxy-i18n\n infer=\"\"\n class=\"mr-auto text-tertiary\"\n key=\"total_items\"\n .options=${{ count: this.__totalItems }}\n >\n </foxy-i18n>\n ${actions}\n </div>\n `\n : ''}\n <div class=\"p-0 bg-transparent\">${content}</div>\n </foxy-internal-summary-control>\n `\n : html`\n <div class=\"flex gap-s items-center justify-between font-medium\">\n <span class=\"text-body mr-auto text-l\">\n ${this.label && this.label !== 'label' ? this.label : ''}\n </span>\n ${actions}\n </div>\n\n <div\n class=\"text-secondary text-s\"\n ?hidden=${!this.helperText || this.helperText === 'helper_text'}\n >\n ${this.helperText}\n </div>\n\n ${content}\n `}\n\n <div\n class=\"mt-s text-s leading-xs text-error\"\n ?hidden=${!this._errorMessage || this.disabled || this.readonly || this.__isSelecting}\n >\n ${this._errorMessage}\n </div>\n\n <vaadin-notification\n position=\"bottom-end\"\n duration=\"3000\"\n theme=${ifDefined(this.__notification?.theme)}\n .renderer=${(root: HTMLElement) => {\n if (!root.firstElementChild) root.innerHTML = '<span></span>';\n\n const theme = this.__notification?.theme;\n const layout = html`\n <foxy-i18n\n style=\"color: var(--lumo-${theme ? `${theme}-contrast` : 'body-text'}-color)\"\n lang=${this.lang}\n key=${this.__notification?.key}\n ns=\"${this.ns} pagination\"\n >\n </foxy-i18n>\n `;\n\n render(layout, root.firstElementChild!);\n }}\n >\n </vaadin-notification>\n `;\n }\n\n private get __cardRenderer() {\n const item = this.item;\n\n if (this.__cachedCardRenderer?.item !== item) {\n this.__cachedCardRenderer = {\n item: item,\n render:\n typeof item === 'string'\n ? (new Function(\n 'ctx',\n `return ctx.html\\`\n <${item}\n related=\\${JSON.stringify(ctx.related)}\n parent=\\${ctx.parent}\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n infer=\"\"\n href=\\${ctx.href}\n ...=\\${ctx.spread(ctx.props)}\n >\n </${item}>\\``\n ) as ItemRenderer)\n : ctx => html`\n <div style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\">\n ${item?.(ctx)}\n </div>\n `,\n };\n }\n\n return this.__cachedCardRenderer.render;\n }\n\n private get __dialog() {\n return this.renderRoot.querySelector('#form') as FormDialog;\n }\n\n private __renderActions() {\n return [\n this.filters.length > 0 && !this.__isSelecting\n ? html`\n <foxy-internal-async-list-control-filter-overlay\n .noVerticalOverlap=${true}\n .positionTarget=${this.renderRoot.querySelector('#filters')}\n .model=${{\n options: this.filters,\n value: this.filter ?? '',\n lang: this.lang,\n ns: this.ns,\n }}\n ?opened=${this.__isFilterVisible}\n @vaadin-overlay-close=${() => (this.__isFilterVisible = false)}\n @search=${(evt: CustomEvent<string | undefined>) => {\n this.filter = evt.detail ?? '';\n }}\n >\n </foxy-internal-async-list-control-filter-overlay>\n\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n id=\"filters\"\n ?disabled=${this.disabled}\n @click=${() => (this.__isFilterVisible = !this.__isFilterVisible)}\n >\n <foxy-i18n infer=\"pagination\" key=\"search_button_text\"></foxy-i18n>\n ${this.filter ? html`<span>(${this.filter.split('&').length})</span>` : ''}\n </vaadin-button>\n `\n : '',\n\n this.bulkActions.length > 0 && this.first\n ? html`\n ${this.__selection.length > 0\n ? this.bulkActions.map(action => {\n const nPrefix = `${action.name}_bulk_action_notification`;\n const cPrefix = `${action.name}_bulk_action_caption`;\n const isActive = this.__activeBulkAction?.name === action.name;\n\n return html`\n <vaadin-button\n data-testclass=\"bulk-action\"\n theme=\"tertiary-inline\"\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n @click=${async () => {\n this.__activeBulkAction = action;\n\n try {\n await action.onClick(this.__selection);\n this.__selection = [];\n this.__isSelecting = false;\n this.__notification = { key: `${nPrefix}_done`, theme: 'success' };\n } catch {\n this.__notification = { key: `${nPrefix}_fail`, theme: 'error' };\n } finally {\n this.__activeBulkAction = null;\n this.renderRoot.querySelector('vaadin-notification')?.open();\n }\n }}\n >\n <foxy-i18n\n infer=\"pagination\"\n key=\"${cPrefix}_${isActive ? 'busy' : 'idle'}\"\n .options=${{ count: this.__selection.length }}\n >\n </foxy-i18n>\n </vaadin-button>\n `;\n })\n : ''}\n <vaadin-button\n theme=\"tertiary-inline contrast\"\n ?disabled=${this.disabled || !!this.__activeBulkAction}\n @click=${() => {\n this.__isSelecting = !this.__isSelecting;\n this.__selection = [];\n }}\n >\n <foxy-i18n\n infer=\"pagination\"\n key=${this.__isSelecting ? 'cancel_button_text' : 'select_button_text'}\n >\n </foxy-i18n>\n </vaadin-button>\n `\n : '',\n\n (!this.form && !this.createPageHref) ||\n this.readonly ||\n this.hideCreateButton ||\n this.__isSelecting\n ? ''\n : this.createPageHref && !this.disabled\n ? html`\n <a\n class=\"rounded-s text-primary group focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=${this.createPageHref}\n >\n <foxy-i18n\n class=\"transition-opacity group-hover-opacity-80\"\n infer=\"\"\n key=\"create_button_text\"\n >\n </foxy-i18n>\n </a>\n `\n : html`\n <vaadin-button\n theme=\"tertiary-inline\"\n ?disabled=${this.disabled}\n @click=${(evt: Event) => {\n evt.preventDefault();\n evt.stopPropagation();\n\n const dialog = this.__dialog;\n const button = evt.currentTarget as HTMLButtonElement;\n\n dialog.header = 'header_create';\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <foxy-i18n infer=\"pagination\" key=\"create_button_text\"></foxy-i18n>\n </vaadin-button>\n `,\n ].filter(v => !!v);\n }\n\n private __renderContent() {\n const helperText = this.helperText;\n const isDetails = this.layout === 'details';\n const label = this.label;\n\n let first: string | undefined;\n\n try {\n const url = new URL(this.first ?? '');\n const filter = new URLSearchParams(this.filter ?? '');\n\n url.searchParams.set('limit', String(this.limit));\n filter.forEach((value, key) => url.searchParams.set(key, value));\n first = url.toString();\n } catch {\n first = undefined;\n }\n\n return html`\n <foxy-pagination\n first=${ifDefined(first)}\n infer=\"pagination\"\n class=${classMap({ hidden: isDetails && this.__totalItems === 0 })}\n >\n <foxy-collection-page\n class=${classMap({\n 'grid grid-cols-1 overflow-hidden': true,\n 'rounded': !isDetails,\n 'mt-s':\n !isDetails &&\n ((!!label && label !== 'label') || (!!helperText && helperText !== 'helper_text')),\n })}\n style=\"gap: 1px\"\n infer=\"card\"\n .related=${this.related}\n .props=${this.itemProps}\n .item=${this.__itemRenderer}\n @update=${(evt: UpdateEvent) => {\n const page = evt.currentTarget as CollectionPage<any>;\n this.__totalItems = parseInt(page.data?.total_items ?? 0);\n }}\n >\n </foxy-collection-page>\n </foxy-pagination>\n `;\n }\n}\n"]}
@@ -14,4 +14,5 @@ export declare class InternalDateControl extends InternalEditableControl {
14
14
  layout: 'summary-item' | 'standalone' | null;
15
15
  renderControl(): TemplateResult;
16
16
  private get __pickerI18n();
17
+ private __toApiDate;
17
18
  }
@@ -60,13 +60,14 @@ export class InternalDateControl extends InternalEditableControl {
60
60
  clear-button-visible
61
61
  @keydown=${(evt) => { var _a; return evt.key === 'Enter' && ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.submit()); }}
62
62
  @change=${(evt) => {
63
- var _a, _b, _c, _d;
63
+ var _a, _b;
64
64
  const field = evt.currentTarget;
65
65
  if (this.format === 'unix') {
66
66
  this._value = Math.floor(((_b = (_a = parseDate(field.value)) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) / 1000);
67
67
  }
68
68
  else if (this.format === 'iso-long') {
69
- this._value = (_d = (_c = parseDate(field.value)) === null || _c === void 0 ? void 0 : _c.toISOString()) !== null && _d !== void 0 ? _d : null;
69
+ const parsedDate = parseDate(field.value);
70
+ this._value = parsedDate ? this.__toApiDate(parsedDate) : null;
70
71
  }
71
72
  else {
72
73
  this._value = field.value;
@@ -95,5 +96,20 @@ export class InternalDateControl extends InternalEditableControl {
95
96
  },
96
97
  };
97
98
  }
99
+ __toApiDate(date) {
100
+ return date
101
+ .toLocaleString('en-US', {
102
+ timeZone: 'America/Los_Angeles',
103
+ timeZoneName: 'longOffset',
104
+ year: 'numeric',
105
+ month: '2-digit',
106
+ day: '2-digit',
107
+ hour: '2-digit',
108
+ minute: '2-digit',
109
+ second: '2-digit',
110
+ hour12: false,
111
+ })
112
+ .replace(/(\d+)\/(\d+)\/(\d+),\s(\d+):(\d+):(\d+) GMT([+-])(\d+):(\d+)/, '$3-$1-$2T$4:$5:$6$7$8$9');
113
+ }
98
114
  }
99
115
  //# sourceMappingURL=InternalDateControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalDateControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/InternalDateControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { TemplateResult, PropertyDeclarations } from 'lit-element';\nimport type { DatePickerElement } from '@vaadin/vaadin-date-picker';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { serializeDate } from '../../../utils/serialize-date';\nimport { parseDate } from '../../../utils/parse-date';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\nimport { getWeekdayShortNames } from './getWeekdayShortNames';\nimport { getWeekdayLongNames } from './getWeekdayLongNames';\nimport { getMonthNames } from './getMonthNames';\n\n/**\n * Internal control displaying a basic date picker box.\n *\n * @since 1.17.0\n * @element foxy-internal-date-control\n */\nexport class InternalDateControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n format: {},\n layout: {},\n };\n }\n\n /** Date format. If `unix`, expects and outputs a UNIX timestamp (number), otherwise defaults to ISO 8601 date. */\n format: 'unix' | 'iso-long' | null = null;\n\n /** Use summary item layout inside `<foxy-internal-summary-control>`. */\n layout: 'summary-item' | 'standalone' | null = null;\n\n renderControl(): TemplateResult {\n let value: string;\n\n if (this._value === '0000-00-00' || !this._value) {\n value = '';\n } else {\n if (this.format === 'unix') {\n value = serializeDate(new Date(((this._value as number) ?? 0) * 1000));\n } else if (this.format === 'iso-long') {\n value = serializeDate(new Date(this._value as string));\n } else {\n value = this._value as string;\n }\n }\n\n return html`\n <vaadin-date-picker\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n theme=${this.layout ?? 'standalone'}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${value}\n .i18n=${this.__pickerI18n}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as DatePickerElement;\n\n if (this.format === 'unix') {\n this._value = Math.floor((parseDate(field.value)?.getTime() ?? 0) / 1000);\n } else if (this.format === 'iso-long') {\n this._value = parseDate(field.value)?.toISOString() ?? null;\n } else {\n this._value = field.value;\n }\n }}\n >\n </vaadin-date-picker>\n `;\n }\n\n private get __pickerI18n() {\n return {\n monthNames: getMonthNames(this.lang || 'en'),\n weekdays: getWeekdayLongNames(this.lang || 'en'),\n weekdaysShort: getWeekdayShortNames(this.lang || 'en'),\n firstDayOfWeek: 0,\n week: this.t('week'),\n calendar: this.t('calendar'),\n clear: this.t('clear'),\n today: this.t('today'),\n cancel: this.t('cancel'),\n referenceDate: '',\n parseDate: null,\n formatTitle: (m: string, y: string) => m + ' ' + y,\n formatDate: (d: { day: number; month: number; year: number }) => {\n return this.t('display_value', { value: new Date(d.year, d.month, d.day) });\n },\n };\n }\n}\n"]}
1
+ {"version":3,"file":"InternalDateControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalDateControl/InternalDateControl.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,8DAA2D;AAC7F,OAAO,EAAE,aAAa,EAAE,yCAAsC;AAC9D,OAAO,EAAE,SAAS,EAAE,qCAAkC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,oBAAoB,EAAE,kCAA+B;AAC9D,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAC5D,OAAO,EAAE,aAAa,EAAE,2BAAwB;AAEhD;;;;;GAKG;AACH,MAAM,OAAO,mBAAoB,SAAQ,uBAAuB;IAAhE;;QASE,kHAAkH;QAClH,WAAM,GAA+B,IAAI,CAAC;QAE1C,wEAAwE;QACxE,WAAM,GAAyC,IAAI,CAAC;IAuFtD,CAAC;IAnGC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,MAAM,EAAE,EAAE;YACV,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAQD,aAAa;;QACX,IAAI,KAAa,CAAC;QAElB,IAAI,IAAI,CAAC,MAAM,KAAK,YAAY,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAChD,KAAK,GAAG,EAAE,CAAC;SACZ;aAAM;YACL,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC1B,KAAK,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,OAAE,IAAI,CAAC,MAAiB,mCAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;aACxE;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;gBACrC,KAAK,GAAG,aAAa,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC,CAAC;aACxD;iBAAM;gBACL,KAAK,GAAG,IAAI,CAAC,MAAgB,CAAC;aAC/B;SACF;QAED,OAAO,IAAI,CAAA;;wBAES,SAAS,CAAC,IAAI,CAAC,aAAa,CAAC;sBAC/B,IAAI,CAAC,WAAW;sBAChB,IAAI,CAAC,UAAU;gBACrB,IAAI,CAAC,KAAK;;gBAEV,MAAA,IAAI,CAAC,MAAM,mCAAI,YAAY;oBACvB,IAAI,CAAC,QAAQ;oBACb,IAAI,CAAC,QAAQ;yBACR,IAAI,CAAC,cAAc;iBAC3B,KAAK;gBACN,IAAI,CAAC,YAAY;;mBAEd,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,aAAkC,CAAC;YAErD,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE;gBAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,0CAAE,OAAO,qCAAM,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;aAC3E;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;gBACrC,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC1C,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;aAChE;iBAAM;gBACL,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;aAC3B;QACH,CAAC;;;KAGJ,CAAC;IACJ,CAAC;IAED,IAAY,YAAY;QACtB,OAAO;YACL,UAAU,EAAE,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAC5C,QAAQ,EAAE,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YAChD,aAAa,EAAE,oBAAoB,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;YACtD,cAAc,EAAE,CAAC;YACjB,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YACtB,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;YACxB,aAAa,EAAE,EAAE;YACjB,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC;YAClD,UAAU,EAAE,CAAC,CAA+C,EAAE,EAAE;gBAC9D,OAAO,IAAI,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC9E,CAAC;SACF,CAAC;IACJ,CAAC;IAEO,WAAW,CAAC,IAAU;QAC5B,OAAO,IAAI;aACR,cAAc,CAAC,OAAO,EAAE;YACvB,QAAQ,EAAE,qBAAqB;YAC/B,YAAY,EAAE,YAAY;YAC1B,IAAI,EAAE,SAAS;YACf,KAAK,EAAE,SAAS;YAChB,GAAG,EAAE,SAAS;YACd,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,KAAK;SACd,CAAC;aACD,OAAO,CACN,8DAA8D,EAC9D,yBAAyB,CAC1B,CAAC;IACN,CAAC;CACF","sourcesContent":["import type { TemplateResult, PropertyDeclarations } from 'lit-element';\nimport type { DatePickerElement } from '@vaadin/vaadin-date-picker';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { serializeDate } from '../../../utils/serialize-date';\nimport { parseDate } from '../../../utils/parse-date';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-element';\n\nimport { getWeekdayShortNames } from './getWeekdayShortNames';\nimport { getWeekdayLongNames } from './getWeekdayLongNames';\nimport { getMonthNames } from './getMonthNames';\n\n/**\n * Internal control displaying a basic date picker box.\n *\n * @since 1.17.0\n * @element foxy-internal-date-control\n */\nexport class InternalDateControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n format: {},\n layout: {},\n };\n }\n\n /** Date format. If `unix`, expects and outputs a UNIX timestamp (number), otherwise defaults to ISO 8601 date. */\n format: 'unix' | 'iso-long' | null = null;\n\n /** Use summary item layout inside `<foxy-internal-summary-control>`. */\n layout: 'summary-item' | 'standalone' | null = null;\n\n renderControl(): TemplateResult {\n let value: string;\n\n if (this._value === '0000-00-00' || !this._value) {\n value = '';\n } else {\n if (this.format === 'unix') {\n value = serializeDate(new Date(((this._value as number) ?? 0) * 1000));\n } else if (this.format === 'iso-long') {\n value = serializeDate(new Date(this._value as string));\n } else {\n value = this._value as string;\n }\n }\n\n return html`\n <vaadin-date-picker\n error-message=${ifDefined(this._errorMessage)}\n placeholder=${this.placeholder}\n helper-text=${this.helperText}\n label=${this.label}\n class=\"w-full\"\n theme=${this.layout ?? 'standalone'}\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .value=${value}\n .i18n=${this.__pickerI18n}\n clear-button-visible\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.nucleon?.submit()}\n @change=${(evt: CustomEvent) => {\n const field = evt.currentTarget as DatePickerElement;\n\n if (this.format === 'unix') {\n this._value = Math.floor((parseDate(field.value)?.getTime() ?? 0) / 1000);\n } else if (this.format === 'iso-long') {\n const parsedDate = parseDate(field.value);\n this._value = parsedDate ? this.__toApiDate(parsedDate) : null;\n } else {\n this._value = field.value;\n }\n }}\n >\n </vaadin-date-picker>\n `;\n }\n\n private get __pickerI18n() {\n return {\n monthNames: getMonthNames(this.lang || 'en'),\n weekdays: getWeekdayLongNames(this.lang || 'en'),\n weekdaysShort: getWeekdayShortNames(this.lang || 'en'),\n firstDayOfWeek: 0,\n week: this.t('week'),\n calendar: this.t('calendar'),\n clear: this.t('clear'),\n today: this.t('today'),\n cancel: this.t('cancel'),\n referenceDate: '',\n parseDate: null,\n formatTitle: (m: string, y: string) => m + ' ' + y,\n formatDate: (d: { day: number; month: number; year: number }) => {\n return this.t('display_value', { value: new Date(d.year, d.month, d.day) });\n },\n };\n }\n\n private __toApiDate(date: Date): string {\n return date\n .toLocaleString('en-US', {\n timeZone: 'America/Los_Angeles',\n timeZoneName: 'longOffset',\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: false,\n })\n .replace(\n /(\\d+)\\/(\\d+)\\/(\\d+),\\s(\\d+):(\\d+):(\\d+) GMT([+-])(\\d+):(\\d+)/,\n '$3-$1-$2T$4:$5:$6$7$8$9'\n );\n }\n}\n"]}
@@ -9,7 +9,7 @@ export declare class InternalResourcePickerControl extends InternalEditableContr
9
9
  getDisplayValueOptions: DisplayValueOptionsCb;
10
10
  showCopyIdButton: boolean;
11
11
  virtualHost: string;
12
- getItemUrl: ((href: string) => string) | null;
12
+ getItemUrl: ((href: string, data: unknown | null) => string) | null;
13
13
  formProps: Record<string, unknown>;
14
14
  filters: Option[];
15
15
  layout: 'summary-item' | 'standalone' | null;
@@ -25,5 +25,6 @@ export declare class InternalResourcePickerControl extends InternalEditableContr
25
25
  private __handleFetchEvent;
26
26
  private __handleSelect;
27
27
  private __handleEmpty;
28
+ private get __valueLoader();
28
29
  }
29
30
  export {};
@@ -157,9 +157,11 @@ export class InternalResourcePickerControl extends InternalEditableControl {
157
157
  `;
158
158
  }
159
159
  __renderStandaloneLayout() {
160
- var _a, _b, _c;
161
- const selectionUrl = typeof this._value === 'string' ? (_a = this.getItemUrl) === null || _a === void 0 ? void 0 : _a.call(this, this._value) : void 0;
160
+ var _a, _b, _c, _d, _e;
161
+ const valueLoader = this.__valueLoader;
162
162
  const selectionId = typeof this._value === 'string' ? getResourceId(this._value) : void 0;
163
+ const selectionUrl = typeof this._value === 'string'
164
+ ? (_a = this.getItemUrl) === null || _a === void 0 ? void 0 : _a.call(this, this._value, (_b = valueLoader === null || valueLoader === void 0 ? void 0 : valueLoader.data) !== null && _b !== void 0 ? _b : null) : void 0;
163
165
  return html `
164
166
  <div class="block group">
165
167
  <div
@@ -223,9 +225,16 @@ export class InternalResourcePickerControl extends InternalEditableControl {
223
225
  }}
224
226
  >
225
227
  <div class=${classMap({ 'transition-opacity': true, 'opacity-50': this.disabled })}>
226
- ${this.__getItemRenderer(this.item)({
228
+ <foxy-nucleon
229
+ class="block"
230
+ infer=""
231
+ href=${ifDefined(this._value || void 0)}
232
+ id="valueLoader"
233
+ @update=${() => this.requestUpdate()}
234
+ >
235
+ ${this.__getItemRenderer(this.item)({
227
236
  html,
228
- data: null,
237
+ data: (_c = valueLoader === null || valueLoader === void 0 ? void 0 : valueLoader.data) !== null && _c !== void 0 ? _c : null,
229
238
  href: this._value || '',
230
239
  related: [],
231
240
  parent: '',
@@ -241,10 +250,11 @@ export class InternalResourcePickerControl extends InternalEditableControl {
241
250
  templates: this.templates,
242
251
  previous: null,
243
252
  next: null,
244
- group: (_c = (_b = this.nucleon) === null || _b === void 0 ? void 0 : _b.group) !== null && _c !== void 0 ? _c : '',
253
+ group: (_e = (_d = this.nucleon) === null || _d === void 0 ? void 0 : _d.group) !== null && _e !== void 0 ? _e : '',
245
254
  lang: this.lang,
246
255
  ns: this.ns,
247
256
  })}
257
+ </foxy-nucleon>
248
258
  </div>
249
259
  </button>
250
260
 
@@ -284,5 +294,8 @@ export class InternalResourcePickerControl extends InternalEditableControl {
284
294
  message: 'Resource selected.',
285
295
  }));
286
296
  }
297
+ get __valueLoader() {
298
+ return this.renderRoot.querySelector('#valueLoader');
299
+ }
287
300
  }
288
301
  //# sourceMappingURL=InternalResourcePickerControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"InternalResourcePickerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport type { FormRenderer } from '../../public/FormDialog/types';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { FormDialog } from '../../public/FormDialog/FormDialog';\nimport type { Option } from '../../public/QueryBuilder/types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { FetchEvent } from '../../public/NucleonElement/FetchEvent';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, svg } from 'lit-html';\nimport { classMap } from '../../../utils/class-map';\nimport { uniqueId } from 'lodash-es';\nimport { spread } from '@open-wc/lit-helpers';\n\nimport memoize from 'lodash-es/memoize';\n\ntype DisplayValueOptionsCb = (resource: HALJSONResource) => Record<string, unknown>;\n\nexport class InternalResourcePickerControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getDisplayValueOptions: { attribute: false },\n showCopyIdButton: { type: Boolean, attribute: 'show-copy-id-button' },\n virtualHost: {},\n getItemUrl: { attribute: false },\n formProps: { type: Object },\n filters: { type: Array },\n layout: {},\n first: {},\n item: {},\n form: {},\n };\n }\n\n getDisplayValueOptions: DisplayValueOptionsCb = resource => ({ resource });\n\n showCopyIdButton = false;\n\n virtualHost = uniqueId('internal-resource-picker-control-');\n\n getItemUrl: ((href: string) => string) | null = null;\n\n formProps: Record<string, unknown> = {};\n\n filters: Option[] = [];\n\n layout: 'summary-item' | 'standalone' | null = null;\n\n first: string | null = null;\n\n item: string | null = null;\n\n form: string | null | FormRenderer = null;\n\n private readonly __getItemRenderer = memoize((item: string | null) => {\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=\"card\"\n href=$\\{ctx.href}\n ...=\\${ctx.spread(ctx.props)}\n >\n </${item ?? 'foxy-null'}>\\``\n ) as ItemRenderer;\n });\n\n renderControl(): TemplateResult {\n const dialogProps = {\n ...this.formProps,\n '.selectionProps': { '.filters': this.filters, '.first': this.first, '.item': this.item },\n };\n\n return html`\n <foxy-form-dialog\n parent=\"foxy://${this.virtualHost}/select\"\n header=\"header\"\n infer=\"dialog\"\n alert\n .props=${dialogProps}\n .form=${this.form ?? 'foxy-internal-resource-picker-control-form'}\n @fetch=${this.__handleFetchEvent}\n >\n </foxy-form-dialog>\n\n ${this.layout === 'summary-item'\n ? this.__renderSummaryItemLayout()\n : this.__renderStandaloneLayout()}\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 __clear(): void {\n this._value = '';\n this.dispatchEvent(new CustomEvent('clear'));\n }\n\n private __renderSummaryItemLayout() {\n const resource = this.renderRoot.querySelector<NucleonElement<any>>('#value');\n const onClick = (evt: Event) => {\n if (this.disabled || this.readonly) return;\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.renderRoot.querySelector('foxy-form-dialog') as FormDialog;\n\n dialog.href = '';\n dialog.show(button);\n };\n\n return html`\n <div class=\"flex items-start leading-xs gap-m\">\n <div class=\"flex-1\">\n <div class=\"text-m text-body whitespace-nowrap\">${this.label}</div>\n <div class=\"text-s text-secondary\">${this.helperText}</div>\n <div class=\"text-s text-error\" ?hidden=${this.disabled || this.readonly}>\n ${this._errorMessage}\n </div>\n </div>\n\n <div class=\"flex items-center gap-xs\">\n <button\n aria-label=${this.t('select')}\n class=${classMap({\n 'text-right min-w-0 transition-colors transition-opacity': true,\n 'rounded-s focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'cursor-pointer text-body hover-opacity-80': !this.disabled && !this.readonly,\n 'font-medium': !this.readonly,\n })}\n ?disabled=${this.disabled || this.readonly}\n @click=${onClick}\n >\n <div class=\"truncate min-w-0\">\n ${this._value\n ? html`\n <foxy-i18n\n infer=\"\"\n key=\"value\"\n .options=${resource?.data\n ? this.getDisplayValueOptions(resource.data)\n : { context: resource?.in('fail') ? 'fail' : 'busy' }}\n >\n </foxy-i18n>\n `\n : this.placeholder}\n </div>\n </button>\n\n <button\n aria-label=${this.t('clear')}\n class=${classMap({\n 'rounded-full transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer text-tertiary hover-text-body': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n })}\n style=\"width: 1em; height: 1em;\"\n ?disabled=${this.disabled}\n ?hidden=${this.readonly || !this._value}\n @click=${this.__clear}\n >\n ${svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width: 1em; height: 1em; transform: scale(1.25); margin-right: -0.16em\"><path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" /></svg>`}\n </button>\n </div>\n </div>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this._value || void 0)}\n id=\"value\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __renderStandaloneLayout() {\n const selectionUrl = typeof this._value === 'string' ? this.getItemUrl?.(this._value) : void 0;\n const selectionId = typeof this._value === 'string' ? getResourceId(this._value) : void 0;\n\n return html`\n <div class=\"block group\">\n <div\n class=${classMap({\n 'flex items-center gap-s transition-colors font-medium': true,\n 'text-disabled': this.disabled,\n })}\n >\n <span class=\"mr-auto text-l\">${this.label}</span>\n ${selectionUrl\n ? html`\n <a\n class=\"text-body rounded transition-opacity hover-opacity-90 focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=${selectionUrl}\n >\n <foxy-i18n infer=\"\" key=\"view\"></foxy-i18n>\n </a>\n `\n : ''}\n ${this.showCopyIdButton && selectionId !== null\n ? html`\n <foxy-copy-to-clipboard\n layout=\"text\"\n theme=\"contrast tertiary-inline\"\n infer=\"copy-id\"\n text=${selectionId}\n >\n </foxy-copy-to-clipboard>\n `\n : ''}\n ${this.readonly || !this._value\n ? ''\n : html`\n <vaadin-button\n theme=\"error tertiary-inline\"\n ?disabled=${this.disabled}\n @click=${this.__clear}\n >\n <foxy-i18n infer=\"\" key=\"clear\"></foxy-i18n>\n </vaadin-button>\n `}\n </div>\n\n <div class=\"text-secondary text-s\" ?hidden=${!this.helperText}>${this.helperText}</div>\n\n <button\n class=${classMap({\n 'block w-full bg-contrast-5 rounded text-left transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer hover-bg-contrast-10': !this.disabled && !this.readonly,\n 'cursor-default': this.disabled || this.readonly,\n 'mt-s': !!this.label || !!this.helperText,\n })}\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n ?disabled=${this.disabled || this.readonly}\n @click=${(evt: MouseEvent) => {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.renderRoot.querySelector('foxy-form-dialog') as FormDialog;\n\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-50': this.disabled })}>\n ${this.__getItemRenderer(this.item)({\n html,\n data: null,\n href: (this._value as string | undefined) || '',\n related: [],\n parent: '',\n props: {},\n spread: spread,\n simplifyNsLoading: this.simplifyNsLoading,\n disabled: this.disabled,\n disabledControls: this.disabledControls,\n readonly: this.readonly,\n readonlyControls: this.readonlyControls,\n hidden: this.hidden,\n hiddenControls: this.hiddenControls,\n templates: this.templates,\n previous: null,\n next: null,\n group: this.nucleon?.group ?? '',\n lang: this.lang,\n ns: this.ns,\n })}\n </div>\n </button>\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 private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n\n const { url, method } = event.request;\n\n if (url === `foxy://${this.virtualHost}/select` && method === 'POST') {\n return event.respondWith(this.__handleSelect(event.request));\n }\n\n if (url === `foxy://${this.virtualHost}/empty` && method === 'GET') {\n return event.respondWith(this.__handleEmpty());\n }\n }\n\n private async __handleSelect(request: Request): Promise<Response> {\n const body = (await request.clone().json()) as { selection: string };\n this._value = body.selection;\n return new Response(\n JSON.stringify({\n _links: { self: { href: `foxy://${this.virtualHost}/empty` } },\n message: 'Resource selected.',\n })\n );\n }\n\n private async __handleEmpty(): Promise<Response> {\n return new Response(\n JSON.stringify({\n _links: { self: { href: `foxy://${this.virtualHost}/empty` } },\n message: 'Resource selected.',\n })\n );\n }\n}\n"]}
1
+ {"version":3,"file":"InternalResourcePickerControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { HALJSONResource } from '../../public/NucleonElement/types';\nimport type { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport type { FormRenderer } from '../../public/FormDialog/types';\nimport type { ItemRenderer } from '../../public/CollectionPage/types';\nimport type { FormDialog } from '../../public/FormDialog/FormDialog';\nimport type { Option } from '../../public/QueryBuilder/types';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { getResourceId } from '@foxy.io/sdk/core';\nimport { FetchEvent } from '../../public/NucleonElement/FetchEvent';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, svg } from 'lit-html';\nimport { classMap } from '../../../utils/class-map';\nimport { uniqueId } from 'lodash-es';\nimport { spread } from '@open-wc/lit-helpers';\n\nimport memoize from 'lodash-es/memoize';\n\ntype DisplayValueOptionsCb = (resource: HALJSONResource) => Record<string, unknown>;\n\nexport class InternalResourcePickerControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getDisplayValueOptions: { attribute: false },\n showCopyIdButton: { type: Boolean, attribute: 'show-copy-id-button' },\n virtualHost: {},\n getItemUrl: { attribute: false },\n formProps: { type: Object },\n filters: { type: Array },\n layout: {},\n first: {},\n item: {},\n form: {},\n };\n }\n\n getDisplayValueOptions: DisplayValueOptionsCb = resource => ({ resource });\n\n showCopyIdButton = false;\n\n virtualHost = uniqueId('internal-resource-picker-control-');\n\n getItemUrl: ((href: string, data: unknown | null) => string) | null = null;\n\n formProps: Record<string, unknown> = {};\n\n filters: Option[] = [];\n\n layout: 'summary-item' | 'standalone' | null = null;\n\n first: string | null = null;\n\n item: string | null = null;\n\n form: string | null | FormRenderer = null;\n\n private readonly __getItemRenderer = memoize((item: string | null) => {\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=\"card\"\n href=$\\{ctx.href}\n ...=\\${ctx.spread(ctx.props)}\n >\n </${item ?? 'foxy-null'}>\\``\n ) as ItemRenderer;\n });\n\n renderControl(): TemplateResult {\n const dialogProps = {\n ...this.formProps,\n '.selectionProps': { '.filters': this.filters, '.first': this.first, '.item': this.item },\n };\n\n return html`\n <foxy-form-dialog\n parent=\"foxy://${this.virtualHost}/select\"\n header=\"header\"\n infer=\"dialog\"\n alert\n .props=${dialogProps}\n .form=${this.form ?? 'foxy-internal-resource-picker-control-form'}\n @fetch=${this.__handleFetchEvent}\n >\n </foxy-form-dialog>\n\n ${this.layout === 'summary-item'\n ? this.__renderSummaryItemLayout()\n : this.__renderStandaloneLayout()}\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 __clear(): void {\n this._value = '';\n this.dispatchEvent(new CustomEvent('clear'));\n }\n\n private __renderSummaryItemLayout() {\n const resource = this.renderRoot.querySelector<NucleonElement<any>>('#value');\n const onClick = (evt: Event) => {\n if (this.disabled || this.readonly) return;\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.renderRoot.querySelector('foxy-form-dialog') as FormDialog;\n\n dialog.href = '';\n dialog.show(button);\n };\n\n return html`\n <div class=\"flex items-start leading-xs gap-m\">\n <div class=\"flex-1\">\n <div class=\"text-m text-body whitespace-nowrap\">${this.label}</div>\n <div class=\"text-s text-secondary\">${this.helperText}</div>\n <div class=\"text-s text-error\" ?hidden=${this.disabled || this.readonly}>\n ${this._errorMessage}\n </div>\n </div>\n\n <div class=\"flex items-center gap-xs\">\n <button\n aria-label=${this.t('select')}\n class=${classMap({\n 'text-right min-w-0 transition-colors transition-opacity': true,\n 'rounded-s focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'text-secondary': this.readonly,\n 'text-disabled': this.disabled,\n 'cursor-pointer text-body hover-opacity-80': !this.disabled && !this.readonly,\n 'font-medium': !this.readonly,\n })}\n ?disabled=${this.disabled || this.readonly}\n @click=${onClick}\n >\n <div class=\"truncate min-w-0\">\n ${this._value\n ? html`\n <foxy-i18n\n infer=\"\"\n key=\"value\"\n .options=${resource?.data\n ? this.getDisplayValueOptions(resource.data)\n : { context: resource?.in('fail') ? 'fail' : 'busy' }}\n >\n </foxy-i18n>\n `\n : this.placeholder}\n </div>\n </button>\n\n <button\n aria-label=${this.t('clear')}\n class=${classMap({\n 'rounded-full transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer text-tertiary hover-text-body': !this.disabled,\n 'cursor-default text-disabled': this.disabled,\n })}\n style=\"width: 1em; height: 1em;\"\n ?disabled=${this.disabled}\n ?hidden=${this.readonly || !this._value}\n @click=${this.__clear}\n >\n ${svg`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 20 20\" fill=\"currentColor\" style=\"width: 1em; height: 1em; transform: scale(1.25); margin-right: -0.16em\"><path d=\"M6.28 5.22a.75.75 0 0 0-1.06 1.06L8.94 10l-3.72 3.72a.75.75 0 1 0 1.06 1.06L10 11.06l3.72 3.72a.75.75 0 1 0 1.06-1.06L11.06 10l3.72-3.72a.75.75 0 0 0-1.06-1.06L10 8.94 6.28 5.22Z\" /></svg>`}\n </button>\n </div>\n </div>\n\n <foxy-nucleon\n infer=\"\"\n href=${ifDefined(this._value || void 0)}\n id=\"value\"\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private __renderStandaloneLayout() {\n const valueLoader = this.__valueLoader;\n const selectionId = typeof this._value === 'string' ? getResourceId(this._value) : void 0;\n const selectionUrl =\n typeof this._value === 'string'\n ? this.getItemUrl?.(this._value, valueLoader?.data ?? null)\n : void 0;\n\n return html`\n <div class=\"block group\">\n <div\n class=${classMap({\n 'flex items-center gap-s transition-colors font-medium': true,\n 'text-disabled': this.disabled,\n })}\n >\n <span class=\"mr-auto text-l\">${this.label}</span>\n ${selectionUrl\n ? html`\n <a\n class=\"text-body rounded transition-opacity hover-opacity-90 focus-outline-none focus-ring-2 focus-ring-primary-50\"\n href=${selectionUrl}\n >\n <foxy-i18n infer=\"\" key=\"view\"></foxy-i18n>\n </a>\n `\n : ''}\n ${this.showCopyIdButton && selectionId !== null\n ? html`\n <foxy-copy-to-clipboard\n layout=\"text\"\n theme=\"contrast tertiary-inline\"\n infer=\"copy-id\"\n text=${selectionId}\n >\n </foxy-copy-to-clipboard>\n `\n : ''}\n ${this.readonly || !this._value\n ? ''\n : html`\n <vaadin-button\n theme=\"error tertiary-inline\"\n ?disabled=${this.disabled}\n @click=${this.__clear}\n >\n <foxy-i18n infer=\"\" key=\"clear\"></foxy-i18n>\n </vaadin-button>\n `}\n </div>\n\n <div class=\"text-secondary text-s\" ?hidden=${!this.helperText}>${this.helperText}</div>\n\n <button\n class=${classMap({\n 'block w-full bg-contrast-5 rounded text-left transition-colors': true,\n 'focus-outline-none focus-ring-2 focus-ring-primary-50': true,\n 'cursor-pointer hover-bg-contrast-10': !this.disabled && !this.readonly,\n 'cursor-default': this.disabled || this.readonly,\n 'mt-s': !!this.label || !!this.helperText,\n })}\n style=\"padding: calc(0.625em + (var(--lumo-border-radius) / 4) - 1px)\"\n ?disabled=${this.disabled || this.readonly}\n @click=${(evt: MouseEvent) => {\n const button = evt.currentTarget as HTMLButtonElement;\n const dialog = this.renderRoot.querySelector('foxy-form-dialog') as FormDialog;\n\n dialog.href = '';\n dialog.show(button);\n }}\n >\n <div class=${classMap({ 'transition-opacity': true, 'opacity-50': this.disabled })}>\n <foxy-nucleon\n class=\"block\"\n infer=\"\"\n href=${ifDefined(this._value || void 0)}\n id=\"valueLoader\"\n @update=${() => this.requestUpdate()}\n >\n ${this.__getItemRenderer(this.item)({\n html,\n data: valueLoader?.data ?? null,\n href: (this._value as string | undefined) || '',\n related: [],\n parent: '',\n props: {},\n spread: spread,\n simplifyNsLoading: this.simplifyNsLoading,\n disabled: this.disabled,\n disabledControls: this.disabledControls,\n readonly: this.readonly,\n readonlyControls: this.readonlyControls,\n hidden: this.hidden,\n hiddenControls: this.hiddenControls,\n templates: this.templates,\n previous: null,\n next: null,\n group: this.nucleon?.group ?? '',\n lang: this.lang,\n ns: this.ns,\n })}\n </foxy-nucleon>\n </div>\n </button>\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 private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n\n const { url, method } = event.request;\n\n if (url === `foxy://${this.virtualHost}/select` && method === 'POST') {\n return event.respondWith(this.__handleSelect(event.request));\n }\n\n if (url === `foxy://${this.virtualHost}/empty` && method === 'GET') {\n return event.respondWith(this.__handleEmpty());\n }\n }\n\n private async __handleSelect(request: Request): Promise<Response> {\n const body = (await request.clone().json()) as { selection: string };\n this._value = body.selection;\n return new Response(\n JSON.stringify({\n _links: { self: { href: `foxy://${this.virtualHost}/empty` } },\n message: 'Resource selected.',\n })\n );\n }\n\n private async __handleEmpty(): Promise<Response> {\n return new Response(\n JSON.stringify({\n _links: { self: { href: `foxy://${this.virtualHost}/empty` } },\n message: 'Resource selected.',\n })\n );\n }\n\n private get __valueLoader() {\n type Loader = NucleonElement<any>;\n return this.renderRoot.querySelector<Loader>('#valueLoader');\n }\n}\n"]}
@@ -49,17 +49,24 @@ export class AdminSubscriptionForm extends Base {
49
49
  </foxy-internal-admin-subscription-form-error>
50
50
 
51
51
  <foxy-internal-summary-control infer="general">
52
- <foxy-internal-date-control layout="summary-item" infer="start-date">
52
+ <foxy-internal-date-control format="iso-long" layout="summary-item" infer="start-date">
53
53
  </foxy-internal-date-control>
54
+
54
55
  <foxy-internal-frequency-control
55
56
  layout="summary-item"
56
57
  infer="frequency"
57
58
  allow-twice-a-month
58
59
  >
59
60
  </foxy-internal-frequency-control>
60
- <foxy-internal-date-control layout="summary-item" infer="next-transaction-date">
61
+
62
+ <foxy-internal-date-control
63
+ format="iso-long"
64
+ layout="summary-item"
65
+ infer="next-transaction-date"
66
+ >
61
67
  </foxy-internal-date-control>
62
- <foxy-internal-date-control layout="summary-item" infer="end-date">
68
+
69
+ <foxy-internal-date-control format="iso-long" layout="summary-item" infer="end-date">
63
70
  </foxy-internal-date-control>
64
71
  </foxy-internal-summary-control>
65
72