@foxy.io/elements 1.18.0-beta.2 → 1.18.0-beta.5

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 (199) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +1 -1
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-api-browser.js +1 -1
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  12. package/dist/cdn/foxy-coupon-card.js +1 -1
  13. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  15. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  16. package/dist/cdn/foxy-coupon-form.js +1 -1
  17. package/dist/cdn/foxy-custom-field-card.js +1 -1
  18. package/dist/cdn/foxy-custom-field-form.js +1 -1
  19. package/dist/cdn/foxy-customer-api.js +1 -1
  20. package/dist/cdn/foxy-customer-card.js +1 -1
  21. package/dist/cdn/foxy-customer-form.js +1 -1
  22. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  23. package/dist/cdn/foxy-customer-portal.js +1 -1
  24. package/dist/cdn/foxy-customer.js +1 -1
  25. package/dist/cdn/foxy-customers-table.js +1 -1
  26. package/dist/cdn/foxy-discount-builder.js +1 -1
  27. package/dist/cdn/foxy-discount-card.js +1 -1
  28. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  29. package/dist/cdn/foxy-donation.js +1 -1
  30. package/dist/cdn/foxy-email-template-form.js +1 -1
  31. package/dist/cdn/foxy-error-entry-card.js +1 -1
  32. package/dist/cdn/foxy-form-dialog.js +1 -1
  33. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  34. package/dist/cdn/foxy-gift-card-card.js +1 -1
  35. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  36. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  37. package/dist/cdn/foxy-gift-card-form.js +1 -1
  38. package/dist/cdn/foxy-i18n.js +1 -1
  39. package/dist/cdn/foxy-item-card.js +1 -1
  40. package/dist/cdn/foxy-item-form.js +1 -1
  41. package/dist/cdn/foxy-item-option-card.js +1 -1
  42. package/dist/cdn/foxy-item-option-form.js +1 -1
  43. package/dist/cdn/foxy-items-form.js +1 -1
  44. package/dist/cdn/foxy-nucleon-element.js +1 -1
  45. package/dist/cdn/foxy-pagination.js +1 -1
  46. package/dist/cdn/foxy-payment-card.js +1 -1
  47. package/dist/cdn/foxy-payment-method-card.js +1 -1
  48. package/dist/cdn/foxy-query-builder.js +1 -1
  49. package/dist/cdn/foxy-report-form.js +6 -6
  50. package/dist/cdn/foxy-reports-table.js +1 -1
  51. package/dist/cdn/foxy-shipment-card.js +1 -1
  52. package/dist/cdn/foxy-sign-in-form.js +1 -1
  53. package/dist/cdn/foxy-spinner.js +2 -2
  54. package/dist/cdn/foxy-store-shipping-method-form.js +1 -150
  55. package/dist/cdn/foxy-subscription-card.js +1 -1
  56. package/dist/cdn/foxy-subscription-form.js +1 -1
  57. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  58. package/dist/cdn/foxy-swipe-actions.js +1 -1
  59. package/dist/cdn/foxy-table.js +1 -1
  60. package/dist/cdn/foxy-tax-card.js +1 -1
  61. package/dist/cdn/foxy-tax-form.js +1 -1
  62. package/dist/cdn/foxy-template-config-form.js +1 -1
  63. package/dist/cdn/foxy-template-form.js +1 -1
  64. package/dist/cdn/foxy-transaction-card.js +1 -1
  65. package/dist/cdn/foxy-transaction.js +1 -1
  66. package/dist/cdn/foxy-transactions-table.js +1 -1
  67. package/dist/cdn/foxy-user-form.js +1 -1
  68. package/dist/cdn/foxy-users-table.js +1 -1
  69. package/dist/cdn/foxy-webhook-card.js +1 -1
  70. package/dist/cdn/foxy-webhook-form.js +5 -5
  71. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  72. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  73. package/dist/cdn/{shared-75e34b5b.js → shared-023c287a.js} +1 -1
  74. package/dist/cdn/{shared-e1c1e8e2.js → shared-0479553e.js} +1 -1
  75. package/dist/cdn/{shared-32b15545.js → shared-07834676.js} +1 -1
  76. package/dist/cdn/{shared-fd001fd3.js → shared-09d39b25.js} +1 -1
  77. package/dist/cdn/{shared-12f8034b.js → shared-1009388a.js} +1 -1
  78. package/dist/cdn/{shared-99940888.js → shared-11c2efc8.js} +1 -1
  79. package/dist/cdn/{shared-59796faa.js → shared-1971bbbd.js} +1 -1
  80. package/dist/cdn/{shared-2b077e01.js → shared-19ae2188.js} +3 -3
  81. package/dist/cdn/{shared-8166ba00.js → shared-1c660ed1.js} +1 -1
  82. package/dist/cdn/{shared-30bb4828.js → shared-240700a9.js} +1 -1
  83. package/dist/cdn/{shared-d6ed2e5c.js → shared-27ef5935.js} +1 -1
  84. package/dist/cdn/{shared-2f186d21.js → shared-296f4621.js} +1 -1
  85. package/dist/cdn/{shared-e25c676a.js → shared-2a472b2d.js} +1 -1
  86. package/dist/cdn/{shared-7ed7818e.js → shared-2e0927c2.js} +1 -1
  87. package/dist/cdn/{shared-95f4cffd.js → shared-3368abe5.js} +1 -1
  88. package/dist/cdn/{shared-b772fbb1.js → shared-3a7cf739.js} +1 -1
  89. package/dist/cdn/{shared-824f6e03.js → shared-403fd4e3.js} +1 -1
  90. package/dist/cdn/{shared-2f19b670.js → shared-408341aa.js} +1 -1
  91. package/dist/cdn/{shared-9f9cdbb0.js → shared-41655ecf.js} +1 -1
  92. package/dist/cdn/{shared-4fc53390.js → shared-44f45339.js} +1 -1
  93. package/dist/cdn/{shared-0b9c755c.js → shared-4b5b7eb5.js} +1 -1
  94. package/dist/cdn/{shared-e6a7b2f1.js → shared-4c0520f6.js} +1 -1
  95. package/dist/cdn/{shared-17331dc5.js → shared-56f2ae96.js} +1 -1
  96. package/dist/cdn/{shared-d673b138.js → shared-628c7355.js} +1 -1
  97. package/dist/cdn/{shared-c5a638d1.js → shared-63e71a69.js} +1 -1
  98. package/dist/cdn/shared-6629d6b0.js +150 -0
  99. package/dist/cdn/{shared-dc73b9a5.js → shared-7f33a83a.js} +1 -1
  100. package/dist/cdn/{shared-6eeb69e7.js → shared-81b7c484.js} +1 -1
  101. package/dist/cdn/{shared-c13674cb.js → shared-833a8b4e.js} +1 -1
  102. package/dist/cdn/{shared-4473f0cf.js → shared-85bcfcde.js} +1 -1
  103. package/dist/cdn/{shared-d6dd67a5.js → shared-87176207.js} +1 -1
  104. package/dist/cdn/{shared-b52c7edf.js → shared-8a86a620.js} +1 -1
  105. package/dist/cdn/{shared-da130124.js → shared-8ec9793b.js} +1 -1
  106. package/dist/cdn/{shared-4f8fe424.js → shared-91ad37aa.js} +2 -2
  107. package/dist/cdn/{shared-6c1aab74.js → shared-977dcc25.js} +1 -1
  108. package/dist/cdn/{shared-0eb966c5.js → shared-99065f2a.js} +1 -1
  109. package/dist/cdn/shared-9b392ba8.js +1 -0
  110. package/dist/cdn/{shared-1bbd9b73.js → shared-9be1a70f.js} +1 -1
  111. package/dist/cdn/{shared-58a35351.js → shared-b15671a5.js} +1 -1
  112. package/dist/cdn/{shared-33b47806.js → shared-b4865438.js} +3 -3
  113. package/dist/cdn/{shared-2caab7af.js → shared-b4d0adff.js} +4 -4
  114. package/dist/cdn/{shared-5652560a.js → shared-b778d103.js} +1 -1
  115. package/dist/cdn/{shared-40689cd2.js → shared-c37600c8.js} +1 -1
  116. package/dist/cdn/{shared-fadcb2e1.js → shared-ca0f14c1.js} +1 -1
  117. package/dist/cdn/{shared-d539ee69.js → shared-cbb340fa.js} +1 -1
  118. package/dist/cdn/{shared-a64ead08.js → shared-cbbd7f8c.js} +1 -1
  119. package/dist/cdn/{shared-48ef8a04.js → shared-d071c963.js} +1 -1
  120. package/dist/cdn/{shared-9803aa7c.js → shared-d3bf9ac0.js} +2 -2
  121. package/dist/cdn/shared-d4d44ca4.js +1 -0
  122. package/dist/cdn/{shared-a0c6a159.js → shared-d519a301.js} +2 -2
  123. package/dist/cdn/{shared-5f411ce2.js → shared-d8b553fa.js} +1 -1
  124. package/dist/cdn/shared-d988a664.js +1 -0
  125. package/dist/cdn/shared-e66740a4.js +1 -0
  126. package/dist/cdn/{shared-f9f9ed5b.js → shared-e6f3e9f0.js} +1 -1
  127. package/dist/cdn/{shared-8936b109.js → shared-ea418c18.js} +1 -1
  128. package/dist/cdn/shared-ebb63c77.js +1 -0
  129. package/dist/cdn/{shared-e06de519.js → shared-edc7150d.js} +1 -1
  130. package/dist/cdn/{shared-f966bbc3.js → shared-f2608c7d.js} +1 -1
  131. package/dist/cdn/{shared-22ba9566.js → shared-f3b35364.js} +1 -1
  132. package/dist/cdn/shared-f4056083.js +1 -0
  133. package/dist/cdn/{shared-dbdc2a38.js → shared-f48ff40a.js} +1 -1
  134. package/dist/cdn/translations/gift-card-code-form/en.json +29 -0
  135. package/dist/cdn/translations/gift-card-form/en.json +25 -0
  136. package/dist/cdn/translations/store-shipping-method-form/en.json +8 -1
  137. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +5 -2
  138. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -1
  139. package/dist/elements/internal/InternalControl/InternalControl.js +3 -2
  140. package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -1
  141. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.d.ts +2 -0
  142. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js +12 -0
  143. package/dist/elements/public/GiftCardCodeForm/GiftCardCodeForm.js.map +1 -1
  144. package/dist/elements/public/GiftCardCodeForm/index.d.ts +5 -4
  145. package/dist/elements/public/GiftCardCodeForm/index.js +5 -4
  146. package/dist/elements/public/GiftCardCodeForm/index.js.map +1 -1
  147. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/InternalGiftCardCodeFormTransactionControl.d.ts +5 -0
  148. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/InternalGiftCardCodeFormTransactionControl.js +50 -0
  149. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/InternalGiftCardCodeFormTransactionControl.js.map +1 -0
  150. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/index.d.ts +5 -0
  151. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/index.js +7 -0
  152. package/dist/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/index.js.map +1 -0
  153. package/dist/elements/public/GiftCardForm/GiftCardForm.js +31 -0
  154. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  155. package/dist/elements/public/GiftCardForm/index.d.ts +1 -2
  156. package/dist/elements/public/GiftCardForm/index.js +1 -2
  157. package/dist/elements/public/GiftCardForm/index.js.map +1 -1
  158. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.d.ts +14 -0
  159. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js +93 -0
  160. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js.map +1 -0
  161. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.d.ts +6 -0
  162. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js +8 -0
  163. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js.map +1 -0
  164. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +2 -1
  165. package/dist/elements/public/NucleonElement/NucleonElement.js +11 -8
  166. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  167. package/dist/elements/public/ShipmentCard/types.d.ts +2 -16
  168. package/dist/elements/public/ShipmentCard/types.js.map +1 -1
  169. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.d.ts +2 -2
  170. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js +78 -32
  171. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js.map +1 -1
  172. package/dist/elements/public/index.d.ts +0 -1
  173. package/dist/elements/public/index.defined.d.ts +0 -1
  174. package/dist/elements/public/index.defined.js +0 -1
  175. package/dist/elements/public/index.defined.js.map +1 -1
  176. package/dist/elements/public/index.js +0 -1
  177. package/dist/elements/public/index.js.map +1 -1
  178. package/dist/mixins/configurable.js +16 -8
  179. package/dist/mixins/configurable.js.map +1 -1
  180. package/dist/mixins/inferrable.js +25 -23
  181. package/dist/mixins/inferrable.js.map +1 -1
  182. package/dist/mixins/themeable.js +56 -16
  183. package/dist/mixins/themeable.js.map +1 -1
  184. package/package.json +2 -2
  185. package/dist/cdn/foxy-store-shipping-method-card.js +0 -1
  186. package/dist/cdn/shared-16d10bca.js +0 -1
  187. package/dist/cdn/shared-29dd9d87.js +0 -1
  188. package/dist/cdn/shared-89dce718.js +0 -1
  189. package/dist/cdn/shared-fcdc4903.js +0 -1
  190. package/dist/cdn/translations/store-shipping-method-card/en.json +0 -15
  191. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.d.ts +0 -16
  192. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.js +0 -60
  193. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.js.map +0 -1
  194. package/dist/elements/public/StoreShippingMethodCard/index.d.ts +0 -6
  195. package/dist/elements/public/StoreShippingMethodCard/index.js +0 -8
  196. package/dist/elements/public/StoreShippingMethodCard/index.js.map +0 -1
  197. package/dist/elements/public/StoreShippingMethodCard/types.d.ts +0 -5
  198. package/dist/elements/public/StoreShippingMethodCard/types.js +0 -2
  199. package/dist/elements/public/StoreShippingMethodCard/types.js.map +0 -1
@@ -215,6 +215,31 @@
215
215
  "week_plural": "Weeks",
216
216
  "year": "Year",
217
217
  "year_plural": "Years",
218
+ "provisioning": {
219
+ "toggle": {
220
+ "label": "Provisioning",
221
+ "text": "Allow customers to buy this gift card",
222
+ "helper_text": ""
223
+ },
224
+ "sku": {
225
+ "label": "SKU",
226
+ "placeholder": "E.g. 100-usd",
227
+ "helper_text": "You'll use this value to add this gift card to a customer's online cart.",
228
+ "v8n_required": "SKU is required for auto-provisioning"
229
+ },
230
+ "min-balance": {
231
+ "label": "Min balance",
232
+ "placeholder": "0",
233
+ "helper_text": "Customers won't be able to load this card with a balance less than this value.",
234
+ "v8n_negative": "Please enter a positive number"
235
+ },
236
+ "max-balance": {
237
+ "label": "Max balance",
238
+ "placeholder": "0",
239
+ "helper_text": "Customers won't be able to load this card with a balance greater than this value.",
240
+ "v8n_negative": "Please enter a positive number"
241
+ }
242
+ },
218
243
  "copy-to-clipboard": {
219
244
  "click_to_copy": "Click to copy",
220
245
  "copying": "Copying",
@@ -14,7 +14,8 @@
14
14
  "shipping-drop-type-uri": {
15
15
  "label": "Drop Type",
16
16
  "placeholder": "Select pickup",
17
- "helper_text": ""
17
+ "helper_text": "",
18
+ "required": "Please select a drop type."
18
19
  },
19
20
  "destinations": {
20
21
  "label": "Destinations",
@@ -40,6 +41,12 @@
40
41
  "helper_text": "If using account specific rates, enter your shipping account id here.",
41
42
  "too_long": "Account ID must be 50 characters or less."
42
43
  },
44
+ "endpoint": {
45
+ "label": "Endpoint URL",
46
+ "placeholder": "https://example.com/rates",
47
+ "helper_text": "Enter a URL that we'll poll for shipping rates.",
48
+ "required": "Please enter a valid endpoint URL."
49
+ },
43
50
  "password": {
44
51
  "label": "Password",
45
52
  "placeholder": "N/A",
@@ -64,6 +64,7 @@ export class InternalAsyncComboBoxControl extends InternalEditableControl {
64
64
  .selectedItem=${this.selectedItem}
65
65
  .value=${this._value}
66
66
  @change=${(evt) => {
67
+ evt.stopPropagation();
67
68
  const comboBox = evt.currentTarget;
68
69
  this._value = comboBox.value;
69
70
  if (this._value === comboBox.value) {
@@ -83,8 +84,10 @@ export class InternalAsyncComboBoxControl extends InternalEditableControl {
83
84
  if (changes.has('first')) {
84
85
  const comboBox = this.renderRoot.querySelector('vaadin-combo-box');
85
86
  // this forces reload
86
- comboBox.size = 0;
87
- comboBox.size = 1;
87
+ if (comboBox) {
88
+ comboBox.size = 0;
89
+ comboBox.size = 1;
90
+ }
88
91
  }
89
92
  }
90
93
  get _value() {
@@ -1 +1 @@
1
- {"version":3,"file":"InternalAsyncComboBoxControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComboBoxDataProvider, ComboBoxElement, ComboBoxItem } from '@vaadin/vaadin-combo-box';\nimport type { TemplateResult } from 'lit-html';\n\nimport { PropertyDeclarations } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { API } from '../../public/NucleonElement/API';\n\n/**\n * Internal control displaying a combo box where items are loaded from\n * a hAPI collection.\n *\n * @since 1.17.0\n * @element foxy-internal-async-combo-box-control\n */\nexport class InternalAsyncComboBoxControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n itemLabelPath: { type: String, attribute: 'item-label-path' },\n itemValuePath: { type: String, attribute: 'item-value-path' },\n selectedItem: { attribute: false },\n first: { type: String },\n };\n }\n\n /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */\n itemLabelPath: string | null = null;\n\n /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */\n itemValuePath: string | null = null;\n\n selectedItem: ComboBoxItem | string | undefined = undefined;\n\n /** URL of the first page of the hAPI collection serving as a source for items. */\n first: string | null = null;\n\n renderControl(): TemplateResult {\n const dataProvider: ComboBoxDataProvider = async (params, callback) => {\n if (!this.first) return callback([], 0);\n\n const url = new URL(this.first);\n url.searchParams.set('offset', String(params.page * params.pageSize));\n url.searchParams.set('limit', String(params.pageSize));\n\n if (params.filter && this.itemLabelPath) {\n url.searchParams.set(this.itemLabelPath, `*${params.filter}*`);\n }\n\n const response = await new API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n\n const json = await response.json();\n const items = Array.from(Object.values(json._embedded))[0] as unknown[];\n\n callback(items, json.total_items);\n };\n\n return html`\n <vaadin-combo-box\n item-value-path=${ifDefined(this.itemValuePath ?? undefined)}\n item-label-path=${ifDefined(this.itemLabelPath ?? undefined)}\n error-message=${ifDefined(this._errorMessage)}\n item-id-path=\"_links.self.href\"\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .dataProvider=${dataProvider}\n .selectedItem=${this.selectedItem}\n .value=${this._value}\n @change=${(evt: CustomEvent) => {\n const comboBox = evt.currentTarget as ComboBoxElement;\n this._value = comboBox.value;\n\n if (this._value === comboBox.value) {\n this.selectedItem = comboBox.selectedItem;\n this.dispatchEvent(new CustomEvent('selected-item-changed'));\n } else {\n comboBox.value = this._value;\n }\n }}\n >\n </vaadin-combo-box>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (changes.has('first')) {\n const comboBox = this.renderRoot.querySelector('vaadin-combo-box') as ComboBoxElement;\n\n // this forces reload\n comboBox.size = 0;\n comboBox.size = 1;\n }\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalAsyncComboBoxControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ComboBoxDataProvider, ComboBoxElement, ComboBoxItem } from '@vaadin/vaadin-combo-box';\nimport type { TemplateResult } from 'lit-html';\n\nimport { PropertyDeclarations } from 'lit-element';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nimport { InternalEditableControl } from '../InternalEditableControl/InternalEditableControl';\nimport { API } from '../../public/NucleonElement/API';\n\n/**\n * Internal control displaying a combo box where items are loaded from\n * a hAPI collection.\n *\n * @since 1.17.0\n * @element foxy-internal-async-combo-box-control\n */\nexport class InternalAsyncComboBoxControl extends InternalEditableControl {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n itemLabelPath: { type: String, attribute: 'item-label-path' },\n itemValuePath: { type: String, attribute: 'item-value-path' },\n selectedItem: { attribute: false },\n first: { type: String },\n };\n }\n\n /** Same as `itemLabelPath` property of Vaadin's `ComboBoxElement`. */\n itemLabelPath: string | null = null;\n\n /** Same as `itemValuePath` property of Vaadin's `ComboBoxElement`. */\n itemValuePath: string | null = null;\n\n selectedItem: ComboBoxItem | string | undefined = undefined;\n\n /** URL of the first page of the hAPI collection serving as a source for items. */\n first: string | null = null;\n\n renderControl(): TemplateResult {\n const dataProvider: ComboBoxDataProvider = async (params, callback) => {\n if (!this.first) return callback([], 0);\n\n const url = new URL(this.first);\n url.searchParams.set('offset', String(params.page * params.pageSize));\n url.searchParams.set('limit', String(params.pageSize));\n\n if (params.filter && this.itemLabelPath) {\n url.searchParams.set(this.itemLabelPath, `*${params.filter}*`);\n }\n\n const response = await new API(this).fetch(url.toString());\n if (!response.ok) throw new Error(await response.text());\n\n const json = await response.json();\n const items = Array.from(Object.values(json._embedded))[0] as unknown[];\n\n callback(items, json.total_items);\n };\n\n return html`\n <vaadin-combo-box\n item-value-path=${ifDefined(this.itemValuePath ?? undefined)}\n item-label-path=${ifDefined(this.itemLabelPath ?? undefined)}\n error-message=${ifDefined(this._errorMessage)}\n item-id-path=\"_links.self.href\"\n helper-text=${this.helperText}\n placeholder=${this.placeholder}\n label=${this.label}\n class=\"w-full\"\n ?disabled=${this.disabled}\n ?readonly=${this.readonly}\n .checkValidity=${this._checkValidity}\n .dataProvider=${dataProvider}\n .selectedItem=${this.selectedItem}\n .value=${this._value}\n @change=${(evt: CustomEvent) => {\n evt.stopPropagation();\n\n const comboBox = evt.currentTarget as ComboBoxElement;\n this._value = comboBox.value;\n\n if (this._value === comboBox.value) {\n this.selectedItem = comboBox.selectedItem;\n this.dispatchEvent(new CustomEvent('selected-item-changed'));\n } else {\n comboBox.value = this._value;\n }\n }}\n >\n </vaadin-combo-box>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (changes.has('first')) {\n const comboBox = this.renderRoot.querySelector<ComboBoxElement>('vaadin-combo-box');\n\n // this forces reload\n if (comboBox) {\n comboBox.size = 0;\n comboBox.size = 1;\n }\n }\n }\n\n protected get _value(): string {\n return (super._value as string | undefined) ?? '';\n }\n\n protected set _value(newValue: string) {\n super._value = newValue as unknown | undefined;\n }\n}\n"]}
@@ -37,9 +37,10 @@ export class InternalControl extends ConfigurableMixin(TranslatableMixin(Themeab
37
37
  return super.inferFromElement(key, element);
38
38
  }
39
39
  applyInferredProperties(context) {
40
- var _a;
40
+ var _a, _b;
41
41
  super.applyInferredProperties(context);
42
- this.nucleon = (_a = context.get('nucleon')) !== null && _a !== void 0 ? _a : null;
42
+ this.disabled = ((_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.in('idle')) === false || super.disabled;
43
+ this.nucleon = (_b = context.get('nucleon')) !== null && _b !== void 0 ? _b : null;
43
44
  }
44
45
  updated(changes) {
45
46
  super.updated(changes);
@@ -1 +1 @@
1
- {"version":3,"file":"InternalControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalControl/InternalControl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB,CACpD,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAC/D;IAFD;;QAcE,wDAAwD;QACxD,YAAO,GAA+B,IAAI,CAAC;IA6C7C,CAAC;IAzDC,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAKD,gBAAgB,CAAC,GAAW,EAAE,OAAoB;QAChD,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,YAAY,cAAc;YAAE,OAAO,OAAO,CAAC;QAC3E,OAAO,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,uBAAuB,CAAC,OAA6B;;QACnD,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,SAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAqC,mCAAI,IAAI,CAAC;IACrF,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,gBAAgB,GAAG,IAAI,CAAA;sBACb,IAAI,CAAC,KAAK;sBACV,IAAI,CAAC,KAAK;OACzB,CAAC;YAEF,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;QACzE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;KACnD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { html, LitElement } from 'lit-element';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { render } from 'lit-html';\n\n/**\n * An internal base class for any control in a Nucleon form. That control can be as simple as a text field bound\n * to a property or as complex as a query builder, and it infers property values from the\n * parent Nucleon/Configurable/Translatable element, saving the need to manually calculate\n * and bind properties in Lit templates. Each control renders before and after slots in the regular DOM + its\n * own layout in the shadow DOM. When hidden via `hiddencontrols` in the parent,\n * uses `display: none` to hide itself.\n *\n * @element foxy-internal-control\n * @since 1.17.0\n */\nexport class InternalControl extends ConfigurableMixin(\n TranslatableMixin(ThemeableMixin(InferrableMixin(LitElement)))\n) {\n static get inferredProperties(): string[] {\n return [...super.inferredProperties, 'nucleon'];\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n nucleon: { attribute: false },\n };\n }\n\n /** NucleonElement instance this control is bound to. */\n nucleon: NucleonElement<any> | null = null;\n\n inferFromElement(key: string, element: HTMLElement): unknown | undefined {\n if (key === 'nucleon' && element instanceof NucleonElement) return element;\n return super.inferFromElement(key, element);\n }\n\n applyInferredProperties(context: Map<string, unknown>): void {\n super.applyInferredProperties(context);\n this.nucleon = (context.get('nucleon') as NucleonElement<any> | undefined) ?? null;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (typeof this.infer === 'string') {\n const lightDomTemplate = html`\n <slot name=\"${this.infer}:before\" slot=\"before\"></slot>\n <slot name=\"${this.infer}:after\" slot=\"after\"></slot>\n `;\n\n render(lightDomTemplate, this);\n }\n }\n\n /**\n * Renders the control itself. In most cases, you will need to implement\n * this method instead of `.render()` in your class to keep the before and after templates/slots.\n */\n renderControl(): TemplateResult {\n return html``;\n }\n\n /**\n * Renders the control (if visible) and the before/after templates/slots.\n * You should probably implement `.renderControl()` method instead of this one in your class.\n */\n render(): TemplateResult {\n if (this.hidden) return html``;\n\n return html`\n ${this.renderTemplateOrSlot('before', this.nucleon)} ${this.renderControl()}\n ${this.renderTemplateOrSlot('after', this.nucleon)}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"InternalControl.js","sourceRoot":"","sources":["../../../../src/elements/internal/InternalControl/InternalControl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,cAAc,EAAE,sDAAmD;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC;;;;;;;;;;GAUG;AACH,MAAM,OAAO,eAAgB,SAAQ,iBAAiB,CACpD,iBAAiB,CAAC,cAAc,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAC/D;IAFD;;QAcE,wDAAwD;QACxD,YAAO,GAA+B,IAAI,CAAC;IA+C7C,CAAC;IA3DC,MAAM,KAAK,kBAAkB;QAC3B,OAAO,CAAC,GAAG,KAAK,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAKD,gBAAgB,CAAC,GAAW,EAAE,OAAoB;QAChD,IAAI,GAAG,KAAK,SAAS,IAAI,OAAO,YAAY,cAAc;YAAE,OAAO,OAAO,CAAC;QAC3E,OAAO,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,uBAAuB,CAAC,OAA6B;;QACnD,KAAK,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC,QAAQ,GAAG,OAAA,IAAI,CAAC,OAAO,0CAAE,EAAE,CAAC,MAAM,OAAM,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC;QACrE,IAAI,CAAC,OAAO,SAAI,OAAO,CAAC,GAAG,CAAC,SAAS,CAAqC,mCAAI,IAAI,CAAC;IACrF,CAAC;IAED,OAAO,CAAC,OAAiC;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YAClC,MAAM,gBAAgB,GAAG,IAAI,CAAA;sBACb,IAAI,CAAC,KAAK;sBACV,IAAI,CAAC,KAAK;OACzB,CAAC;YAEF,MAAM,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;SAChC;IACH,CAAC;IAED;;;OAGG;IACH,aAAa;QACX,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,MAAM;QACJ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAA,EAAE,CAAC;QAE/B,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE;QACzE,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;KACnD,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { html, LitElement } from 'lit-element';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { NucleonElement } from '../../public/NucleonElement/NucleonElement';\nimport { render } from 'lit-html';\n\n/**\n * An internal base class for any control in a Nucleon form. That control can be as simple as a text field bound\n * to a property or as complex as a query builder, and it infers property values from the\n * parent Nucleon/Configurable/Translatable element, saving the need to manually calculate\n * and bind properties in Lit templates. Each control renders before and after slots in the regular DOM + its\n * own layout in the shadow DOM. When hidden via `hiddencontrols` in the parent,\n * uses `display: none` to hide itself.\n *\n * @element foxy-internal-control\n * @since 1.17.0\n */\nexport class InternalControl extends ConfigurableMixin(\n TranslatableMixin(ThemeableMixin(InferrableMixin(LitElement)))\n) {\n static get inferredProperties(): string[] {\n return [...super.inferredProperties, 'nucleon'];\n }\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n nucleon: { attribute: false },\n };\n }\n\n /** NucleonElement instance this control is bound to. */\n nucleon: NucleonElement<any> | null = null;\n\n inferFromElement(key: string, element: HTMLElement): unknown | undefined {\n if (key === 'nucleon' && element instanceof NucleonElement) return element;\n return super.inferFromElement(key, element);\n }\n\n applyInferredProperties(context: Map<string, unknown>): void {\n super.applyInferredProperties(context);\n\n this.disabled = this.nucleon?.in('idle') === false || super.disabled;\n this.nucleon = (context.get('nucleon') as NucleonElement<any> | undefined) ?? null;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n\n if (typeof this.infer === 'string') {\n const lightDomTemplate = html`\n <slot name=\"${this.infer}:before\" slot=\"before\"></slot>\n <slot name=\"${this.infer}:after\" slot=\"after\"></slot>\n `;\n\n render(lightDomTemplate, this);\n }\n }\n\n /**\n * Renders the control itself. In most cases, you will need to implement\n * this method instead of `.render()` in your class to keep the before and after templates/slots.\n */\n renderControl(): TemplateResult {\n return html``;\n }\n\n /**\n * Renders the control (if visible) and the before/after templates/slots.\n * You should probably implement `.renderControl()` method instead of this one in your class.\n */\n render(): TemplateResult {\n if (this.hidden) return html``;\n\n return html`\n ${this.renderTemplateOrSlot('before', this.nucleon)} ${this.renderControl()}\n ${this.renderTemplateOrSlot('after', this.nucleon)}\n `;\n }\n}\n"]}
@@ -40,6 +40,7 @@ export declare class GiftCardCodeForm extends Base<Data> {
40
40
  private get __isCodeHidden();
41
41
  private get __isCurrentBalanceHidden();
42
42
  private get __isEndDateHidden();
43
+ private get __isTransactionHidden();
43
44
  private get __isTimestampsHidden();
44
45
  private get __isCreateHidden();
45
46
  private get __isDeleteHidden();
@@ -48,6 +49,7 @@ export declare class GiftCardCodeForm extends Base<Data> {
48
49
  private __renderCode;
49
50
  private __renderCurrentBalance;
50
51
  private __renderEndDate;
52
+ private __renderTransaction;
51
53
  private __renderTimestamps;
52
54
  private __renderCreate;
53
55
  private __renderDelete;
@@ -43,6 +43,7 @@ export class GiftCardCodeForm extends Base {
43
43
  'vaadin-date-picker': customElements.get('vaadin-date-picker'),
44
44
  'vaadin-text-field': customElements.get('vaadin-text-field'),
45
45
  'vaadin-button': customElements.get('vaadin-button'),
46
+ 'foxy-internal-gift-card-code-form-transaction-control': customElements.get('foxy-internal-gift-card-code-form-transaction-control'),
46
47
  'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),
47
48
  'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),
48
49
  'foxy-spinner': customElements.get('foxy-spinner'),
@@ -65,6 +66,7 @@ export class GiftCardCodeForm extends Base {
65
66
  ${this.__isCodeHidden ? null : this.__renderCode()}
66
67
  ${this.__isCurrentBalanceHidden ? null : this.__renderCurrentBalance()}
67
68
  ${this.__isEndDateHidden ? null : this.__renderEndDate()}
69
+ ${this.__isTransactionHidden ? null : this.__renderTransaction()}
68
70
  ${this.__isTimestampsHidden ? null : this.__renderTimestamps()}
69
71
  ${this.__isCreateHidden ? null : this.__renderCreate()}
70
72
  ${this.__isDeleteHidden ? null : this.__renderDelete()}
@@ -97,6 +99,10 @@ export class GiftCardCodeForm extends Base {
97
99
  get __isEndDateHidden() {
98
100
  return this.hiddenSelector.matches('end-date', true);
99
101
  }
102
+ get __isTransactionHidden() {
103
+ var _a;
104
+ return !((_a = this.form._links) === null || _a === void 0 ? void 0 : _a['fx:provisioned_by_transaction_detail_id']);
105
+ }
100
106
  get __isTimestampsHidden() {
101
107
  if (this.hiddenSelector.matches('timestamps', true))
102
108
  return true;
@@ -203,6 +209,12 @@ export class GiftCardCodeForm extends Base {
203
209
  </div>
204
210
  `;
205
211
  }
212
+ __renderTransaction() {
213
+ return html `
214
+ <foxy-internal-gift-card-code-form-transaction-control infer="transaction">
215
+ </foxy-internal-gift-card-code-form-transaction-control>
216
+ `;
217
+ }
206
218
  __renderTimestamps() {
207
219
  return html `
208
220
  <div>
@@ -1 +1 @@
1
- {"version":3,"file":"GiftCardCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/GiftCardCodeForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/index';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'gift-card-code-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for creating or editing gift card codes (`fx:gift_card_code`).\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot end-date:before\n * @slot end-date:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-gift-card-code-form\n * @since 1.15.0\n */\nexport class GiftCardCodeForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-number-field': customElements.get('vaadin-number-field'),\n 'vaadin-date-picker': customElements.get('vaadin-date-picker'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-property-table': PropertyTable,\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code_required',\n ({ code: v }) => !v || v.length <= 50 || 'code_too_long',\n ({ current_balance: v }) => !!v || 'current_balance_required',\n ({ current_balance: v }) => !v || !isNaN(v) || 'current_balance_required',\n ];\n }\n\n templates: Templates = {};\n\n render(): TemplateResult {\n return html`\n <div class=\"relative space-y-m\">\n ${this.__isCodeHidden ? null : this.__renderCode()}\n ${this.__isCurrentBalanceHidden ? null : this.__renderCurrentBalance()}\n ${this.__isEndDateHidden ? null : this.__renderEndDate()}\n ${this.__isTimestampsHidden ? null : this.__renderTimestamps()}\n ${this.__isCreateHidden ? null : this.__renderCreate()}\n ${this.__isDeleteHidden ? null : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': this.in('idle'),\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private get __isCodeHidden(): boolean {\n return this.hiddenSelector.matches('code', true);\n }\n\n private get __isCurrentBalanceHidden(): boolean {\n return this.hiddenSelector.matches('current-balance', true);\n }\n\n private get __isEndDateHidden(): boolean {\n return this.hiddenSelector.matches('end-date', true);\n }\n\n private get __isTimestampsHidden(): boolean {\n if (this.hiddenSelector.matches('timestamps', true)) return true;\n return !this.data;\n }\n\n private get __isCreateHidden(): boolean {\n if (this.hiddenSelector.matches('create', true)) return true;\n return !!this.data;\n }\n\n private get __isDeleteHidden(): boolean {\n if (this.hiddenSelector.matches('delete', true)) return true;\n return !this.data;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderCode(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('code:before')}\n\n <vaadin-text-field\n data-testid=\"code\"\n class=\"w-full\"\n label=${this.t('code')}\n .checkValidity=${this.__getValidator('code')}\n .errorMessage=${this.__getErrorMessage('code')}\n .value=${this.form.code}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('code', true)}\n ?readonly=${this.readonlySelector.matches('code', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newCode = (evt.currentTarget as TextFieldElement).value;\n this.edit({ code: newCode });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('code:after')}\n </div>\n `;\n }\n\n private __renderCurrentBalance(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('current-balance:before')}\n\n <vaadin-number-field\n data-testid=\"current-balance\"\n class=\"w-full\"\n label=${this.t('current_balance')}\n min=\"0\"\n .checkValidity=${this.__getValidator('current_balance')}\n .errorMessage=${this.__getErrorMessage('current_balance')}\n .value=${this.form.current_balance}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('current-balance', true)}\n ?readonly=${this.readonlySelector.matches('current-balance', true)}\n prevent-invalid-input\n has-controls\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const newCurrentBalance = (evt.currentTarget as TextFieldElement).value;\n this.edit({ current_balance: parseFloat(newCurrentBalance) });\n }}\n >\n </vaadin-number-field>\n\n ${this.renderTemplateOrSlot('current-balance:after')}\n </div>\n `;\n }\n\n private __renderEndDate(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('end-date:before')}\n\n <vaadin-date-picker\n data-testid=\"end-date\"\n class=\"w-full\"\n label=${this.t('end_date')}\n min=\"0\"\n .checkValidity=${this.__getValidator('end_date')}\n .errorMessage=${this.__getErrorMessage('end_date')}\n .value=${this.form.end_date}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('end-date', true)}\n ?readonly=${this.readonlySelector.matches('end-date', true)}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const newEndDate = (evt.currentTarget as TextFieldElement).value;\n this.edit({ end_date: newEndDate });\n }}\n >\n </vaadin-date-picker>\n\n ${this.renderTemplateOrSlot('end-date:after')}\n </div>\n `;\n }\n\n private __renderTimestamps(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate(): TemplateResult {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isIdle = this.in('idle');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${!isIdle || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete(): TemplateResult {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"GiftCardCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/GiftCardCodeForm.ts"],"names":[],"mappings":"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","sourcesContent":["import { Data, Templates } from './types';\nimport { ScopedElementsMap, ScopedElementsMixin } from '@open-wc/scoped-elements';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ButtonElement } from '@vaadin/vaadin-button';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { DialogHideEvent } from '../../private/Dialog/DialogHideEvent';\nimport { InternalConfirmDialog } from '../../internal/InternalConfirmDialog/InternalConfirmDialog';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { NucleonV8N } from '../NucleonElement/types';\nimport { PropertyTable } from '../../private/index';\nimport { TextFieldElement } from '@vaadin/vaadin-text-field';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst NS = 'gift-card-code-form';\nconst Base = ConfigurableMixin(\n ThemeableMixin(ScopedElementsMixin(TranslatableMixin(NucleonElement, NS)))\n);\n\n/**\n * Form element for creating or editing gift card codes (`fx:gift_card_code`).\n *\n * @slot code:before\n * @slot code:after\n *\n * @slot current-balance:before\n * @slot current-balance:after\n *\n * @slot end-date:before\n * @slot end-date:after\n *\n * @slot timestamps:before\n * @slot timestamps:after\n *\n * @slot delete:before\n * @slot delete:after\n *\n * @slot create:before\n * @slot create:after\n *\n * @element foxy-gift-card-code-form\n * @since 1.15.0\n */\nexport class GiftCardCodeForm extends Base<Data> {\n static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-number-field': customElements.get('vaadin-number-field'),\n 'vaadin-date-picker': customElements.get('vaadin-date-picker'),\n 'vaadin-text-field': customElements.get('vaadin-text-field'),\n 'vaadin-button': customElements.get('vaadin-button'),\n\n 'foxy-internal-gift-card-code-form-transaction-control': customElements.get(\n 'foxy-internal-gift-card-code-form-transaction-control'\n ),\n\n 'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),\n 'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),\n 'foxy-spinner': customElements.get('foxy-spinner'),\n 'foxy-i18n': customElements.get('foxy-i18n'),\n\n 'x-property-table': PropertyTable,\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code_required',\n ({ code: v }) => !v || v.length <= 50 || 'code_too_long',\n ({ current_balance: v }) => !!v || 'current_balance_required',\n ({ current_balance: v }) => !v || !isNaN(v) || 'current_balance_required',\n ];\n }\n\n templates: Templates = {};\n\n render(): TemplateResult {\n return html`\n <div class=\"relative space-y-m\">\n ${this.__isCodeHidden ? null : this.__renderCode()}\n ${this.__isCurrentBalanceHidden ? null : this.__renderCurrentBalance()}\n ${this.__isEndDateHidden ? null : this.__renderEndDate()}\n ${this.__isTransactionHidden ? null : this.__renderTransaction()}\n ${this.__isTimestampsHidden ? null : this.__renderTimestamps()}\n ${this.__isCreateHidden ? null : this.__renderCreate()}\n ${this.__isDeleteHidden ? null : this.__renderDelete()}\n\n <div\n data-testid=\"spinner\"\n class=${classMap({\n 'transition duration-500 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': this.in('idle'),\n })}\n >\n <foxy-spinner\n layout=\"vertical\"\n class=\"m-auto p-m bg-base shadow-xs rounded-t-l rounded-b-l\"\n state=${this.in('fail') ? 'error' : this.in('busy') ? 'busy' : 'empty'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n private get __isCodeHidden(): boolean {\n return this.hiddenSelector.matches('code', true);\n }\n\n private get __isCurrentBalanceHidden(): boolean {\n return this.hiddenSelector.matches('current-balance', true);\n }\n\n private get __isEndDateHidden(): boolean {\n return this.hiddenSelector.matches('end-date', true);\n }\n\n private get __isTransactionHidden(): boolean {\n return !this.form._links?.['fx:provisioned_by_transaction_detail_id'];\n }\n\n private get __isTimestampsHidden(): boolean {\n if (this.hiddenSelector.matches('timestamps', true)) return true;\n return !this.data;\n }\n\n private get __isCreateHidden(): boolean {\n if (this.hiddenSelector.matches('create', true)) return true;\n return !!this.data;\n }\n\n private get __isDeleteHidden(): boolean {\n if (this.hiddenSelector.matches('delete', true)) return true;\n return !this.data;\n }\n\n private __getErrorMessage(prefix: string) {\n const error = this.errors.find(err => err.startsWith(prefix));\n return error ? this.t(error.replace(prefix, 'v8n')).toString() : '';\n }\n\n private __getValidator(prefix: string) {\n return () => !this.errors.some(err => err.startsWith(prefix));\n }\n\n private __renderCode(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('code:before')}\n\n <vaadin-text-field\n data-testid=\"code\"\n class=\"w-full\"\n label=${this.t('code')}\n .checkValidity=${this.__getValidator('code')}\n .errorMessage=${this.__getErrorMessage('code')}\n .value=${this.form.code}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('code', true)}\n ?readonly=${this.readonlySelector.matches('code', true)}\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @input=${(evt: CustomEvent) => {\n const newCode = (evt.currentTarget as TextFieldElement).value;\n this.edit({ code: newCode });\n }}\n >\n </vaadin-text-field>\n\n ${this.renderTemplateOrSlot('code:after')}\n </div>\n `;\n }\n\n private __renderCurrentBalance(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('current-balance:before')}\n\n <vaadin-number-field\n data-testid=\"current-balance\"\n class=\"w-full\"\n label=${this.t('current_balance')}\n min=\"0\"\n .checkValidity=${this.__getValidator('current_balance')}\n .errorMessage=${this.__getErrorMessage('current_balance')}\n .value=${this.form.current_balance}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('current-balance', true)}\n ?readonly=${this.readonlySelector.matches('current-balance', true)}\n prevent-invalid-input\n has-controls\n required\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const newCurrentBalance = (evt.currentTarget as TextFieldElement).value;\n this.edit({ current_balance: parseFloat(newCurrentBalance) });\n }}\n >\n </vaadin-number-field>\n\n ${this.renderTemplateOrSlot('current-balance:after')}\n </div>\n `;\n }\n\n private __renderEndDate(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('end-date:before')}\n\n <vaadin-date-picker\n data-testid=\"end-date\"\n class=\"w-full\"\n label=${this.t('end_date')}\n min=\"0\"\n .checkValidity=${this.__getValidator('end_date')}\n .errorMessage=${this.__getErrorMessage('end_date')}\n .value=${this.form.end_date}\n ?disabled=${!this.in('idle') || this.disabledSelector.matches('end-date', true)}\n ?readonly=${this.readonlySelector.matches('end-date', true)}\n @keydown=${(evt: KeyboardEvent) => evt.key === 'Enter' && this.submit()}\n @change=${(evt: CustomEvent) => {\n const newEndDate = (evt.currentTarget as TextFieldElement).value;\n this.edit({ end_date: newEndDate });\n }}\n >\n </vaadin-date-picker>\n\n ${this.renderTemplateOrSlot('end-date:after')}\n </div>\n `;\n }\n\n private __renderTransaction(): TemplateResult {\n return html`\n <foxy-internal-gift-card-code-form-transaction-control infer=\"transaction\">\n </foxy-internal-gift-card-code-form-transaction-control>\n `;\n }\n\n private __renderTimestamps(): TemplateResult {\n return html`\n <div>\n ${this.renderTemplateOrSlot('timestamps:before')}\n\n <x-property-table\n data-testid=\"timestamps\"\n .items=${(['date_modified', 'date_created'] as const).map(field => ({\n name: this.t(field),\n value: this.data?.[field]\n ? this.t('date', { value: new Date(this.data[field] as string) })\n : '',\n }))}\n >\n </x-property-table>\n\n ${this.renderTemplateOrSlot('timestamps:after')}\n </div>\n `;\n }\n\n private __renderCreate(): TemplateResult {\n const isCleanTemplateInvalid = this.in({ idle: { template: { clean: 'invalid' } } });\n const isDirtyTemplateInvalid = this.in({ idle: { template: { dirty: 'invalid' } } });\n const isCleanSnapshotInvalid = this.in({ idle: { snapshot: { clean: 'invalid' } } });\n const isDirtySnapshotInvalid = this.in({ idle: { snapshot: { dirty: 'invalid' } } });\n const isTemplateInvalid = isCleanTemplateInvalid || isDirtyTemplateInvalid;\n const isSnaphotInvalid = isCleanSnapshotInvalid || isDirtySnapshotInvalid;\n const isInvalid = isTemplateInvalid || isSnaphotInvalid;\n const isIdle = this.in('idle');\n\n return html`\n <div>\n ${this.renderTemplateOrSlot('create:before')}\n\n <vaadin-button\n data-testid=\"create\"\n class=\"w-full\"\n theme=\"primary success\"\n ?disabled=${!isIdle || isInvalid || this.disabledSelector.matches('create', true)}\n @click=${() => this.submit()}\n >\n <foxy-i18n ns=${this.ns} key=\"create\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('create:after')}\n </div>\n `;\n }\n\n private __renderDelete(): TemplateResult {\n return html`\n <div>\n <foxy-internal-confirm-dialog\n data-testid=\"confirm\"\n message=\"delete_prompt\"\n confirm=\"delete\"\n cancel=\"cancel\"\n header=\"delete\"\n theme=\"primary error\"\n lang=${this.lang}\n ns=${this.ns}\n id=\"confirm\"\n @hide=${(evt: DialogHideEvent) => !evt.detail.cancelled && this.delete()}\n >\n </foxy-internal-confirm-dialog>\n\n ${this.renderTemplateOrSlot('delete:before')}\n\n <vaadin-button\n data-testid=\"delete\"\n theme=\"primary error\"\n class=\"w-full\"\n ?disabled=${this.in('busy') || this.disabledSelector.matches('delete', true)}\n @click=${(evt: CustomEvent) => {\n const confirm = this.renderRoot.querySelector('#confirm') as InternalConfirmDialog;\n confirm.show(evt.currentTarget as ButtonElement);\n }}\n >\n <foxy-i18n ns=${this.ns} key=\"delete\" lang=${this.lang}></foxy-i18n>\n </vaadin-button>\n\n ${this.renderTemplateOrSlot('delete:after')}\n </div>\n `;\n }\n}\n"]}
@@ -1,10 +1,11 @@
1
- import '../../internal/InternalConfirmDialog/index';
2
- import '../../internal/InternalSandbox/index';
3
- import '../Spinner/index';
4
- import '../I18n/index';
5
1
  import '@vaadin/vaadin-text-field/vaadin-number-field';
6
2
  import '@vaadin/vaadin-text-field/vaadin-text-field';
7
3
  import '@vaadin/vaadin-date-picker';
8
4
  import '@vaadin/vaadin-button';
5
+ import '../../internal/InternalConfirmDialog/index';
6
+ import '../../internal/InternalSandbox/index';
7
+ import '../Spinner/index';
8
+ import '../I18n/index';
9
+ import './internal/InternalGiftCardCodeFormTransactionControl/index';
9
10
  import { GiftCardCodeForm } from './GiftCardCodeForm';
10
11
  export { GiftCardCodeForm };
@@ -1,11 +1,12 @@
1
- import "../../internal/InternalConfirmDialog/index.js";
2
- import "../../internal/InternalSandbox/index.js";
3
- import "../Spinner/index.js";
4
- import "../I18n/index.js";
5
1
  import '@vaadin/vaadin-text-field/vaadin-number-field';
6
2
  import '@vaadin/vaadin-text-field/vaadin-text-field';
7
3
  import '@vaadin/vaadin-date-picker';
8
4
  import '@vaadin/vaadin-button';
5
+ import "../../internal/InternalConfirmDialog/index.js";
6
+ import "../../internal/InternalSandbox/index.js";
7
+ import "../Spinner/index.js";
8
+ import "../I18n/index.js";
9
+ import "./internal/InternalGiftCardCodeFormTransactionControl/index.js";
9
10
  import { GiftCardCodeForm } from "./GiftCardCodeForm.js";
10
11
  customElements.define('foxy-gift-card-code-form', GiftCardCodeForm);
11
12
  export { GiftCardCodeForm };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/index.ts"],"names":[],"mappings":"AAAA,uDAAoD;AACpD,iDAA8C;AAC9C,6BAA0B;AAC1B,0BAAuB;AACvB,OAAO,+CAA+C,CAAC;AACvD,OAAO,6CAA6C,CAAC;AACrD,OAAO,4BAA4B,CAAC;AACpC,OAAO,uBAAuB,CAAC;AAE/B,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,cAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import '../../internal/InternalConfirmDialog/index';\nimport '../../internal/InternalSandbox/index';\nimport '../Spinner/index';\nimport '../I18n/index';\nimport '@vaadin/vaadin-text-field/vaadin-number-field';\nimport '@vaadin/vaadin-text-field/vaadin-text-field';\nimport '@vaadin/vaadin-date-picker';\nimport '@vaadin/vaadin-button';\n\nimport { GiftCardCodeForm } from './GiftCardCodeForm';\n\ncustomElements.define('foxy-gift-card-code-form', GiftCardCodeForm);\n\nexport { GiftCardCodeForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardCodeForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,+CAA+C,CAAC;AACvD,OAAO,6CAA6C,CAAC;AACrD,OAAO,4BAA4B,CAAC;AACpC,OAAO,uBAAuB,CAAC;AAE/B,uDAAoD;AACpD,iDAA8C;AAE9C,6BAA0B;AAC1B,0BAAuB;AAEvB,wEAAqE;AAErE,OAAO,EAAE,gBAAgB,EAAE,8BAA2B;AAEtD,cAAc,CAAC,MAAM,CAAC,0BAA0B,EAAE,gBAAgB,CAAC,CAAC;AAEpE,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-text-field/vaadin-number-field';\nimport '@vaadin/vaadin-text-field/vaadin-text-field';\nimport '@vaadin/vaadin-date-picker';\nimport '@vaadin/vaadin-button';\n\nimport '../../internal/InternalConfirmDialog/index';\nimport '../../internal/InternalSandbox/index';\n\nimport '../Spinner/index';\nimport '../I18n/index';\n\nimport './internal/InternalGiftCardCodeFormTransactionControl/index';\n\nimport { GiftCardCodeForm } from './GiftCardCodeForm';\n\ncustomElements.define('foxy-gift-card-code-form', GiftCardCodeForm);\n\nexport { GiftCardCodeForm };\n"]}
@@ -0,0 +1,5 @@
1
+ import type { TemplateResult } from 'lit-html';
2
+ import { InternalControl } from '../../../../internal/InternalControl/InternalControl';
3
+ export declare class InternalGiftCardCodeFormTransactionControl extends InternalControl {
4
+ renderControl(): TemplateResult;
5
+ }
@@ -0,0 +1,50 @@
1
+ import { InternalControl } from "../../../../internal/InternalControl/InternalControl.js";
2
+ import { ifDefined } from 'lit-html/directives/if-defined';
3
+ import { html } from 'lit-html';
4
+ import { classMap } from "../../../../../utils/class-map.js";
5
+ export class InternalGiftCardCodeFormTransactionControl extends InternalControl {
6
+ renderControl() {
7
+ var _a, _b, _c;
8
+ let href;
9
+ try {
10
+ const url = new URL((_c = (_b = (_a = this.nucleon) === null || _a === void 0 ? void 0 : _a.form._links) === null || _b === void 0 ? void 0 : _b['fx:provisioned_by_transaction_detail_id'].href) !== null && _c !== void 0 ? _c : '');
11
+ url.searchParams.set('zoom', 'items');
12
+ href = url.toString();
13
+ }
14
+ catch (_d) {
15
+ href = undefined;
16
+ }
17
+ return html `
18
+ <div class="space-y-s">
19
+ <foxy-i18n infer="" class="text-s font-medium text-secondary leading-none" key="title">
20
+ </foxy-i18n>
21
+
22
+ <button
23
+ title=${this.t('click_action')}
24
+ class=${classMap({
25
+ 'rounded-t-l rounded-b-l block w-full text-left p-m': true,
26
+ 'ring-1 ring-contrast-10 transition-colors focus-outline-none': true,
27
+ 'hover-bg-contrast-5 focus-ring-2 focus-ring-primary-50': !this.disabled,
28
+ })}
29
+ ?disabled=${this.disabled}
30
+ @click=${() => {
31
+ const event = new CustomEvent('navigation', {
32
+ composed: true,
33
+ bubbles: true,
34
+ detail: href,
35
+ });
36
+ this.dispatchEvent(event);
37
+ }}
38
+ >
39
+ <foxy-transaction-card
40
+ infer="transaction-card"
41
+ class="w-full -my-xs"
42
+ href=${ifDefined(href)}
43
+ >
44
+ </foxy-transaction-card>
45
+ </button>
46
+ </div>
47
+ `;
48
+ }
49
+ }
50
+ //# sourceMappingURL=InternalGiftCardCodeFormTransactionControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InternalGiftCardCodeFormTransactionControl.js","sourceRoot":"","sources":["../../../../../../src/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/InternalGiftCardCodeFormTransactionControl.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,gEAA6D;AACvF,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,0CAAuC;AAE1D,MAAM,OAAO,0CAA2C,SAAQ,eAAe;IAC7E,aAAa;;QACX,IAAI,IAAwB,CAAC;QAE7B,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,mBACjB,IAAI,CAAC,OAAO,0CAAE,IAAI,CAAC,MAAM,0CAAG,yCAAyC,EAAE,IAAI,mCAAI,EAAE,CAClF,CAAC;YACF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SACvB;QAAC,WAAM;YACN,IAAI,GAAG,SAAS,CAAC;SAClB;QAED,OAAO,IAAI,CAAA;;;;;;kBAMG,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;kBACtB,QAAQ,CAAC;YACf,oDAAoD,EAAE,IAAI;YAC1D,8DAA8D,EAAE,IAAI;YACpE,wDAAwD,EAAE,CAAC,IAAI,CAAC,QAAQ;SACzE,CAAC;sBACU,IAAI,CAAC,QAAQ;mBAChB,GAAG,EAAE;YACZ,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE;gBAC1C,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,IAAI;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;;;;;mBAKQ,SAAS,CAAC,IAAI,CAAC;;;;;KAK7B,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\n\nimport { InternalControl } from '../../../../internal/InternalControl/InternalControl';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\nimport { classMap } from '../../../../../utils/class-map';\n\nexport class InternalGiftCardCodeFormTransactionControl extends InternalControl {\n renderControl(): TemplateResult {\n let href: string | undefined;\n\n try {\n const url = new URL(\n this.nucleon?.form._links?.['fx:provisioned_by_transaction_detail_id'].href ?? ''\n );\n url.searchParams.set('zoom', 'items');\n href = url.toString();\n } catch {\n href = undefined;\n }\n\n return html`\n <div class=\"space-y-s\">\n <foxy-i18n infer=\"\" class=\"text-s font-medium text-secondary leading-none\" key=\"title\">\n </foxy-i18n>\n\n <button\n title=${this.t('click_action')}\n class=${classMap({\n 'rounded-t-l rounded-b-l block w-full text-left p-m': true,\n 'ring-1 ring-contrast-10 transition-colors focus-outline-none': true,\n 'hover-bg-contrast-5 focus-ring-2 focus-ring-primary-50': !this.disabled,\n })}\n ?disabled=${this.disabled}\n @click=${() => {\n const event = new CustomEvent('navigation', {\n composed: true,\n bubbles: true,\n detail: href,\n });\n\n this.dispatchEvent(event);\n }}\n >\n <foxy-transaction-card\n infer=\"transaction-card\"\n class=\"w-full -my-xs\"\n href=${ifDefined(href)}\n >\n </foxy-transaction-card>\n </button>\n </div>\n `;\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ import '../../../../internal/InternalControl/index';
2
+ import '../../../TransactionCard/index';
3
+ import '../../../I18n/index';
4
+ import { InternalGiftCardCodeFormTransactionControl } from './InternalGiftCardCodeFormTransactionControl';
5
+ export { InternalGiftCardCodeFormTransactionControl };
@@ -0,0 +1,7 @@
1
+ import "../../../../internal/InternalControl/index.js";
2
+ import "../../../TransactionCard/index.js";
3
+ import "../../../I18n/index.js";
4
+ import { InternalGiftCardCodeFormTransactionControl } from "./InternalGiftCardCodeFormTransactionControl.js";
5
+ customElements.define('foxy-internal-gift-card-code-form-transaction-control', InternalGiftCardCodeFormTransactionControl);
6
+ export { InternalGiftCardCodeFormTransactionControl };
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/elements/public/GiftCardCodeForm/internal/InternalGiftCardCodeFormTransactionControl/index.ts"],"names":[],"mappings":"AAAA,uDAAoD;AAEpD,2CAAwC;AACxC,gCAA6B;AAE7B,OAAO,EAAE,0CAA0C,EAAE,wDAAqD;AAE1G,cAAc,CAAC,MAAM,CACnB,uDAAuD,EACvD,0CAA0C,CAC3C,CAAC;AAEF,OAAO,EAAE,0CAA0C,EAAE,CAAC","sourcesContent":["import '../../../../internal/InternalControl/index';\n\nimport '../../../TransactionCard/index';\nimport '../../../I18n/index';\n\nimport { InternalGiftCardCodeFormTransactionControl } from './InternalGiftCardCodeFormTransactionControl';\n\ncustomElements.define(\n 'foxy-internal-gift-card-code-form-transaction-control',\n InternalGiftCardCodeFormTransactionControl\n);\n\nexport { InternalGiftCardCodeFormTransactionControl };\n"]}
@@ -140,6 +140,7 @@ export class GiftCardForm extends Base {
140
140
  'vaadin-combo-box': customElements.get('vaadin-combo-box'),
141
141
  'vaadin-button': customElements.get('vaadin-button'),
142
142
  'iron-icon': customElements.get('iron-icon'),
143
+ 'foxy-internal-gift-card-form-provisioning-control': customElements.get('foxy-internal-gift-card-form-provisioning-control'),
143
144
  'foxy-internal-confirm-dialog': customElements.get('foxy-internal-confirm-dialog'),
144
145
  'foxy-internal-sandbox': customElements.get('foxy-internal-sandbox'),
145
146
  'foxy-query-builder': customElements.get('foxy-query-builder'),
@@ -166,6 +167,32 @@ export class GiftCardForm extends Base {
166
167
  return [
167
168
  ({ name: v }) => !!v || 'name_required',
168
169
  ({ name: v }) => !v || v.length <= 50 || 'name_too_long',
170
+ form => {
171
+ var _a;
172
+ if ((_a = form.provisioning_config) === null || _a === void 0 ? void 0 : _a.allow_autoprovisioning) {
173
+ if (!form.sku)
174
+ return 'sku:v8n_required';
175
+ if (form.sku.length > 200)
176
+ return 'sku:v8n_too_long';
177
+ }
178
+ return true;
179
+ },
180
+ form => {
181
+ var _a;
182
+ if ((_a = form.provisioning_config) === null || _a === void 0 ? void 0 : _a.allow_autoprovisioning) {
183
+ if (form.provisioning_config.initial_balance_min <= 0)
184
+ return 'min-balance:v8n_negative';
185
+ }
186
+ return true;
187
+ },
188
+ form => {
189
+ var _a;
190
+ if ((_a = form.provisioning_config) === null || _a === void 0 ? void 0 : _a.allow_autoprovisioning) {
191
+ if (form.provisioning_config.initial_balance_max <= 0)
192
+ return 'max-balance:v8n_negative';
193
+ }
194
+ return true;
195
+ },
169
196
  ];
170
197
  }
171
198
  render() {
@@ -185,6 +212,10 @@ export class GiftCardForm extends Base {
185
212
  ${isExpiresHidden ? '' : this.__renderExpires()}
186
213
  </div>
187
214
  `}
215
+
216
+ <foxy-internal-gift-card-form-provisioning-control infer="provisioning">
217
+ </foxy-internal-gift-card-form-provisioning-control>
218
+
188
219
  ${hidden.matches('codes', true) || !this.data ? '' : this.__renderCodes()}
189
220
  ${hidden.matches('product-restrictions', true) ? '' : this.__renderProductRestrictions()}
190
221
  ${hidden.matches('category-restrictions', true) || !this.data