@foxy.io/elements 1.32.0-beta.7 → 1.32.0

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 (223) 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-admin-subscription-card.js +1 -1
  5. package/dist/cdn/foxy-admin-subscription-form.js +1 -1
  6. package/dist/cdn/foxy-api-browser.js +1 -1
  7. package/dist/cdn/foxy-applied-coupon-code-card.js +1 -1
  8. package/dist/cdn/foxy-applied-coupon-code-form.js +1 -1
  9. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  10. package/dist/cdn/foxy-attribute-card.js +1 -1
  11. package/dist/cdn/foxy-attribute-form.js +1 -1
  12. package/dist/cdn/foxy-billing-address-card.js +1 -1
  13. package/dist/cdn/foxy-cancellation-form.js +1 -1
  14. package/dist/cdn/foxy-cart-card.js +1 -1
  15. package/dist/cdn/foxy-cart-form.js +1 -1
  16. package/dist/cdn/foxy-client-card.js +1 -1
  17. package/dist/cdn/foxy-client-form.js +1 -1
  18. package/dist/cdn/foxy-collection-page.js +1 -1
  19. package/dist/cdn/foxy-collection-pages.js +1 -1
  20. package/dist/cdn/foxy-copy-to-clipboard.js +1 -1
  21. package/dist/cdn/foxy-coupon-card.js +1 -1
  22. package/dist/cdn/foxy-coupon-code-card.js +1 -1
  23. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  24. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  25. package/dist/cdn/foxy-coupon-detail-card.js +1 -1
  26. package/dist/cdn/foxy-coupon-form.js +1 -1
  27. package/dist/cdn/foxy-custom-field-card.js +1 -1
  28. package/dist/cdn/foxy-custom-field-form.js +1 -1
  29. package/dist/cdn/foxy-customer-card.js +1 -1
  30. package/dist/cdn/foxy-customer-form.js +1 -1
  31. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  32. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  33. package/dist/cdn/foxy-customer-portal.js +8 -8
  34. package/dist/cdn/foxy-customer.js +1 -1
  35. package/dist/cdn/foxy-customers-table.js +1 -1
  36. package/dist/cdn/foxy-discount-builder.js +1 -1
  37. package/dist/cdn/foxy-discount-card.js +1 -1
  38. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  39. package/dist/cdn/foxy-donation.js +1 -1
  40. package/dist/cdn/foxy-downloadable-card.js +1 -1
  41. package/dist/cdn/foxy-downloadable-form.js +1 -1
  42. package/dist/cdn/foxy-email-template-card.js +1 -1
  43. package/dist/cdn/foxy-email-template-form.js +1 -1
  44. package/dist/cdn/foxy-error-entry-card.js +1 -1
  45. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  46. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  47. package/dist/cdn/foxy-form-dialog.js +1 -1
  48. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  49. package/dist/cdn/foxy-gift-card-card.js +1 -1
  50. package/dist/cdn/foxy-gift-card-code-card.js +1 -1
  51. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  52. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  53. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  54. package/dist/cdn/foxy-gift-card-form.js +1 -1
  55. package/dist/cdn/foxy-i18n-editor.js +3 -3
  56. package/dist/cdn/foxy-i18n.js +1 -1
  57. package/dist/cdn/foxy-integration-card.js +1 -1
  58. package/dist/cdn/foxy-integration-form.js +1 -1
  59. package/dist/cdn/foxy-item-card.js +1 -1
  60. package/dist/cdn/foxy-item-category-card.js +1 -1
  61. package/dist/cdn/foxy-item-category-form.js +1 -1
  62. package/dist/cdn/foxy-item-form.js +1 -1
  63. package/dist/cdn/foxy-item-option-card.js +1 -1
  64. package/dist/cdn/foxy-item-option-form.js +1 -1
  65. package/dist/cdn/foxy-items-form.js +1 -1
  66. package/dist/cdn/foxy-native-integration-card.js +1 -1
  67. package/dist/cdn/foxy-native-integration-form.js +1 -1
  68. package/dist/cdn/foxy-pagination.js +1 -1
  69. package/dist/cdn/foxy-passkey-card.js +1 -1
  70. package/dist/cdn/foxy-passkey-form.js +1 -1
  71. package/dist/cdn/foxy-payment-card-embed.js +1 -1
  72. package/dist/cdn/foxy-payment-card.js +1 -1
  73. package/dist/cdn/foxy-payment-method-card.js +1 -1
  74. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  75. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  76. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  77. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  78. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  79. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  80. package/dist/cdn/foxy-query-builder.js +1 -1
  81. package/dist/cdn/foxy-report-form.js +1 -1
  82. package/dist/cdn/foxy-reports-table.js +1 -1
  83. package/dist/cdn/foxy-shipment-card.js +1 -1
  84. package/dist/cdn/foxy-shipping-container-card.js +1 -1
  85. package/dist/cdn/foxy-shipping-drop-type-card.js +1 -1
  86. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  87. package/dist/cdn/foxy-shipping-service-card.js +1 -1
  88. package/dist/cdn/foxy-sign-in-form.js +1 -1
  89. package/dist/cdn/foxy-spinner.js +2 -2
  90. package/dist/cdn/foxy-store-card.js +1 -1
  91. package/dist/cdn/foxy-store-form.js +1 -1
  92. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  93. package/dist/cdn/foxy-subscription-card.js +1 -1
  94. package/dist/cdn/foxy-subscription-form.js +1 -1
  95. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  96. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  97. package/dist/cdn/foxy-table.js +1 -1
  98. package/dist/cdn/foxy-tax-card.js +1 -1
  99. package/dist/cdn/foxy-tax-form.js +1 -1
  100. package/dist/cdn/foxy-template-config-form.js +1 -1
  101. package/dist/cdn/foxy-template-form.js +1 -1
  102. package/dist/cdn/foxy-template-set-card.js +1 -1
  103. package/dist/cdn/foxy-template-set-form.js +1 -1
  104. package/dist/cdn/foxy-transaction-card.js +1 -1
  105. package/dist/cdn/foxy-transaction.js +1 -1
  106. package/dist/cdn/foxy-transactions-table.js +7 -7
  107. package/dist/cdn/foxy-update-payment-method-form.js +1 -1
  108. package/dist/cdn/foxy-user-card.js +1 -1
  109. package/dist/cdn/foxy-user-form.js +1 -1
  110. package/dist/cdn/foxy-user-invitation-card.js +1 -1
  111. package/dist/cdn/foxy-user-invitation-form.js +1 -1
  112. package/dist/cdn/foxy-users-table.js +1 -1
  113. package/dist/cdn/foxy-webhook-card.js +1 -1
  114. package/dist/cdn/foxy-webhook-form.js +1 -1
  115. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  116. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  117. package/dist/cdn/{shared-82c14038.js → shared-015da8ca.js} +1 -1
  118. package/dist/cdn/{shared-e23f134b.js → shared-01cbaba9.js} +1 -1
  119. package/dist/cdn/{shared-d99621f5.js → shared-08be5c32.js} +1 -1
  120. package/dist/cdn/{shared-86535307.js → shared-0b4a62e9.js} +1 -1
  121. package/dist/cdn/{shared-b8983324.js → shared-0d43de87.js} +1 -1
  122. package/dist/cdn/shared-0e83a899.js +1 -0
  123. package/dist/cdn/{shared-0905537a.js → shared-0f4472d2.js} +1 -1
  124. package/dist/cdn/{shared-55b38934.js → shared-1024aa20.js} +1 -1
  125. package/dist/cdn/{shared-9f160fc4.js → shared-1220bf7d.js} +1 -1
  126. package/dist/cdn/{shared-b211a5c1.js → shared-14bf37ae.js} +1 -1
  127. package/dist/cdn/{shared-d01bb075.js → shared-2dd497e5.js} +1 -1
  128. package/dist/cdn/{shared-9fbbe836.js → shared-30cc688f.js} +1 -1
  129. package/dist/cdn/{shared-bf34ec93.js → shared-317cb721.js} +1 -1
  130. package/dist/cdn/{shared-37d8eb8c.js → shared-3493737e.js} +1 -1
  131. package/dist/cdn/{shared-4358f1b1.js → shared-359793d4.js} +1 -1
  132. package/dist/cdn/{shared-83dd443e.js → shared-377e3168.js} +1 -1
  133. package/dist/cdn/{shared-e23ba6a5.js → shared-3a7db771.js} +1 -1
  134. package/dist/cdn/{shared-19520c9d.js → shared-3bfbd5af.js} +1 -1
  135. package/dist/cdn/{shared-315b7e61.js → shared-3ca58fb9.js} +1 -1
  136. package/dist/cdn/{shared-36a1e2b9.js → shared-455856d9.js} +2 -2
  137. package/dist/cdn/{shared-6636a5bf.js → shared-4b4c8ccf.js} +1 -1
  138. package/dist/cdn/{shared-cfa5d8f6.js → shared-4b52b410.js} +1 -1
  139. package/dist/cdn/{shared-9ecba892.js → shared-4beb6fef.js} +1 -1
  140. package/dist/cdn/{shared-a6e35e24.js → shared-4f852fd5.js} +1 -1
  141. package/dist/cdn/{shared-438ba90a.js → shared-51efaf53.js} +1 -1
  142. package/dist/cdn/{shared-17c503b1.js → shared-53443b27.js} +1 -1
  143. package/dist/cdn/{shared-2da66878.js → shared-5452fdfe.js} +1 -1
  144. package/dist/cdn/shared-54d7dfdb.js +1 -0
  145. package/dist/cdn/{shared-450227d6.js → shared-57164953.js} +1 -1
  146. package/dist/cdn/{shared-d9e5dcd8.js → shared-68f01c8d.js} +1 -1
  147. package/dist/cdn/{shared-f6dbf1f9.js → shared-6a8ccf0c.js} +1 -1
  148. package/dist/cdn/{shared-7bd9ac17.js → shared-6be8e65e.js} +1 -1
  149. package/dist/cdn/{shared-d65e8cc0.js → shared-6d7c1a2f.js} +2 -2
  150. package/dist/cdn/{shared-81dce3af.js → shared-7448fda4.js} +1 -1
  151. package/dist/cdn/{shared-ea538020.js → shared-78bfc71e.js} +1 -1
  152. package/dist/cdn/{shared-5508fdff.js → shared-81bf4ca2.js} +1 -1
  153. package/dist/cdn/{shared-9353023e.js → shared-838bd79c.js} +1 -1
  154. package/dist/cdn/{shared-20f8e346.js → shared-91321de3.js} +1 -1
  155. package/dist/cdn/{shared-6acd8127.js → shared-91500a0f.js} +1 -1
  156. package/dist/cdn/{shared-300253d2.js → shared-935adc3b.js} +1 -1
  157. package/dist/cdn/{shared-4631ca6a.js → shared-97627d50.js} +1 -1
  158. package/dist/cdn/{shared-55cad23d.js → shared-9b1b4c9d.js} +1 -1
  159. package/dist/cdn/{shared-c1ef5741.js → shared-a84befbf.js} +1 -1
  160. package/dist/cdn/{shared-4e5a4514.js → shared-ad3eea80.js} +1 -1
  161. package/dist/cdn/{shared-bafbd5de.js → shared-b14bf56d.js} +1 -1
  162. package/dist/cdn/{shared-768e7a47.js → shared-b2bc3a0e.js} +2 -2
  163. package/dist/cdn/{shared-a08d2529.js → shared-b384e653.js} +1 -1
  164. package/dist/cdn/{shared-5dc12ee6.js → shared-b3d36746.js} +1 -1
  165. package/dist/cdn/{shared-9a996ad7.js → shared-b7dc7e64.js} +5 -5
  166. package/dist/cdn/{shared-84a1b7ce.js → shared-bb9f0d8b.js} +1 -1
  167. package/dist/cdn/{shared-f5d4d7f4.js → shared-bbc53ef2.js} +1 -1
  168. package/dist/cdn/{shared-2b41da9e.js → shared-bdcf2d35.js} +1 -1
  169. package/dist/cdn/{shared-196a767a.js → shared-c24bc616.js} +1 -1
  170. package/dist/cdn/{shared-f3c77c1b.js → shared-c671d5c7.js} +1 -1
  171. package/dist/cdn/{shared-43a7fb95.js → shared-c86db2c0.js} +1 -1
  172. package/dist/cdn/{shared-c01f7219.js → shared-cacd4407.js} +1 -1
  173. package/dist/cdn/{shared-38dbd459.js → shared-ceafb6c3.js} +1 -1
  174. package/dist/cdn/{shared-dc2f3f55.js → shared-d0e0f8a1.js} +1 -1
  175. package/dist/cdn/{shared-04d5b361.js → shared-d6985b5f.js} +1 -1
  176. package/dist/cdn/{shared-b1798b31.js → shared-dbe8536b.js} +1 -1
  177. package/dist/cdn/{shared-8a54284b.js → shared-e0c93cfa.js} +1 -1
  178. package/dist/cdn/{shared-1c2aeca6.js → shared-e1dea184.js} +1 -1
  179. package/dist/cdn/{shared-85b3cc6a.js → shared-e231722c.js} +1 -1
  180. package/dist/cdn/{shared-334c421b.js → shared-e39760d5.js} +1 -1
  181. package/dist/cdn/{shared-efaf6205.js → shared-eecba1f5.js} +1 -1
  182. package/dist/cdn/{shared-1faa9f13.js → shared-f09454f9.js} +1 -1
  183. package/dist/cdn/{shared-4784c497.js → shared-fb18400f.js} +1 -1
  184. package/dist/cdn/{shared-2a819863.js → shared-fd1adc35.js} +1 -1
  185. package/dist/cdn/translations/admin-subscription-form/en.json +28 -20
  186. package/dist/cdn/translations/cart-form/en.json +28 -20
  187. package/dist/cdn/translations/coupon-code-form/en.json +11 -7
  188. package/dist/cdn/translations/coupon-form/en.json +11 -7
  189. package/dist/cdn/translations/gift-card-form/en.json +208 -201
  190. package/dist/cdn/translations/item-form/en.json +28 -20
  191. package/dist/cdn/translations/item-option-form/en.json +28 -20
  192. package/dist/cdn/translations/transaction/en.json +28 -20
  193. package/dist/elements/public/CouponCodeForm/CouponCodeForm.js +4 -1
  194. package/dist/elements/public/CouponCodeForm/CouponCodeForm.js.map +1 -1
  195. package/dist/elements/public/CouponCodeForm/index.d.ts +1 -0
  196. package/dist/elements/public/CouponCodeForm/index.js +1 -0
  197. package/dist/elements/public/CouponCodeForm/index.js.map +1 -1
  198. package/dist/elements/public/GiftCardForm/GiftCardForm.d.ts +6 -0
  199. package/dist/elements/public/GiftCardForm/GiftCardForm.js +100 -14
  200. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  201. package/dist/elements/public/GiftCardForm/index.d.ts +3 -1
  202. package/dist/elements/public/GiftCardForm/index.js +3 -1
  203. package/dist/elements/public/GiftCardForm/index.js.map +1 -1
  204. package/dist/elements/public/ItemOptionForm/ItemOptionForm.js +12 -6
  205. package/dist/elements/public/ItemOptionForm/ItemOptionForm.js.map +1 -1
  206. package/dist/elements/public/ItemOptionForm/index.d.ts +1 -0
  207. package/dist/elements/public/ItemOptionForm/index.js +1 -0
  208. package/dist/elements/public/ItemOptionForm/index.js.map +1 -1
  209. package/dist/elements/public/Transaction/Transaction.js +19 -24
  210. package/dist/elements/public/Transaction/Transaction.js.map +1 -1
  211. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/InternalTransactionCustomerControl.js +3 -5
  212. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/InternalTransactionCustomerControl.js.map +1 -1
  213. package/dist/mixins/themeable.js +0 -16
  214. package/dist/mixins/themeable.js.map +1 -1
  215. package/package.json +1 -1
  216. package/dist/cdn/shared-69015a94.js +0 -1
  217. package/dist/cdn/shared-fb3366b1.js +0 -1
  218. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.d.ts +0 -14
  219. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js +0 -94
  220. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/InternalGiftCardFormProvisioningControl.js.map +0 -1
  221. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.d.ts +0 -6
  222. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js +0 -8
  223. package/dist/elements/public/GiftCardForm/internal/InternalGiftCardFormProvisioningControl/index.js.map +0 -1
@@ -465,29 +465,37 @@
465
465
  "done": "Copied to clipboard"
466
466
  }
467
467
  },
468
- "name": {
469
- "label": "Name",
468
+ "general": {
469
+ "label": "",
470
470
  "helper_text": "",
471
- "placeholder": "Color",
472
- "v8n_required": "Name is required",
473
- "v8n_too_long": "Name mustn't exceed 100 characters"
471
+ "name": {
472
+ "label": "Name",
473
+ "helper_text": "",
474
+ "placeholder": "Required",
475
+ "v8n_required": "Name is required",
476
+ "v8n_too_long": "Name mustn't exceed 100 characters"
477
+ },
478
+ "value": {
479
+ "label": "Value",
480
+ "helper_text": "",
481
+ "placeholder": "Required",
482
+ "v8n_required": "Value is required",
483
+ "v8n_too_long": "Value mustn't exceed 1024 characters"
484
+ }
474
485
  },
475
- "value": {
476
- "label": "Value",
486
+ "mods": {
487
+ "label": "",
477
488
  "helper_text": "",
478
- "placeholder": "Red",
479
- "v8n_required": "Value is required",
480
- "v8n_too_long": "Value mustn't exceed 1024 characters"
481
- },
482
- "price-mod": {
483
- "label": "Price",
484
- "helper_text": "Same currency as item",
485
- "placeholder": "10"
486
- },
487
- "weight-mod": {
488
- "label": "Weight",
489
- "helper_text": "Arbitrary units",
490
- "placeholder": "5"
489
+ "price-mod": {
490
+ "label": "Price (item currency)",
491
+ "helper_text": "",
492
+ "placeholder": "0"
493
+ },
494
+ "weight-mod": {
495
+ "label": "Weight (arbitrary units)",
496
+ "helper_text": "",
497
+ "placeholder": "0"
498
+ }
491
499
  },
492
500
  "timestamps": {
493
501
  "date_created": "Created on",
@@ -49,7 +49,10 @@ export class CouponCodeForm extends Base {
49
49
  return html `
50
50
  ${this.renderHeader()}
51
51
 
52
- <foxy-internal-text-control infer="code"></foxy-internal-text-control>
52
+ <foxy-internal-summary-control infer="general">
53
+ <foxy-internal-text-control layout="summary-item" infer="code"></foxy-internal-text-control>
54
+ </foxy-internal-summary-control>
55
+
53
56
  <foxy-internal-async-list-control
54
57
  first=${ifDefined(transactions)}
55
58
  infer="transactions"
@@ -1 +1 @@
1
- {"version":3,"file":"CouponCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodeForm/CouponCodeForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,IAAU;IAA9C;;QAgBE,2BAAsB,GAAqC,IAAI,CAAC;IAoClE,CAAC;IAnDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,mBAAmB;YAC5D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,CAAC,GAAG,EAAC,IAAI,qBAAqB;SAC5D,CAAC;IACJ,CAAC;IAID,IAAI,cAAc;QAChB,MAAM,WAAW,GAAa,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;;QACR,IAAI,YAAgC,CAAC;QAErC,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,aAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,6BAA6B,EAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;YACjF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SAC/B;QAAC,WAAM;YACN,YAAY,GAAG,SAAS,CAAC;SAC1B;QAED,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,YAAY,EAAE;;;;gBAIX,SAAS,CAAC,YAAY,CAAC;;;;uBAIhB,IAAI,CAAC,sBAAsB;;;;;QAK1C,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, TransactionPageHrefGetter } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'coupon-code-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing coupon codes (`fx:coupon_code`).\n *\n * @element foxy-coupon-code-form\n * @since 1.15.0\n */\nexport class CouponCodeForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getTransactionPageHref: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ({ code: v }) => !v?.includes(' ') || 'code:v8n_has_spaces',\n ];\n }\n\n getTransactionPageHref: TransactionPageHrefGetter | null = null;\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch: string[] = [super.hiddenSelector.toString()];\n if (!this.href) alwaysMatch.unshift('transactions');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n let transactions: string | undefined;\n\n try {\n const url = new URL(this.data?._links['fx:coupon_code_transactions'].href ?? '');\n url.searchParams.set('zoom', 'items');\n transactions = url.toString();\n } catch {\n transactions = undefined;\n }\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-text-control infer=\"code\"></foxy-internal-text-control>\n <foxy-internal-async-list-control\n first=${ifDefined(transactions)}\n infer=\"transactions\"\n limit=\"5\"\n item=\"foxy-transaction-card\"\n .getPageHref=${this.getTransactionPageHref}\n hide-delete-button\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"CouponCodeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodeForm/CouponCodeForm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,kBAAkB,CAAC;AAC9B,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,IAAU;IAA9C;;QAgBE,2BAAsB,GAAqC,IAAI,CAAC;IAuClE,CAAC;IAtDC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,mBAAmB;YAC5D,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAC,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,QAAQ,CAAC,GAAG,EAAC,IAAI,qBAAqB;SAC5D,CAAC;IACJ,CAAC;IAID,IAAI,cAAc;QAChB,MAAM,WAAW,GAAa,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,WAAW,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACpD,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,UAAU;;QACR,IAAI,YAAgC,CAAC;QAErC,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,aAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,6BAA6B,EAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;YACjF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACtC,YAAY,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SAC/B;QAAC,WAAM;YACN,YAAY,GAAG,SAAS,CAAC;SAC1B;QAED,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,YAAY,EAAE;;;;;;;gBAOX,SAAS,CAAC,YAAY,CAAC;;;;uBAIhB,IAAI,CAAC,sBAAsB;;;;;QAK1C,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { Data, TransactionPageHrefGetter } from './types';\nimport type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html } from 'lit-html';\n\nconst NS = 'coupon-code-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating or editing coupon codes (`fx:coupon_code`).\n *\n * @element foxy-coupon-code-form\n * @since 1.15.0\n */\nexport class CouponCodeForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getTransactionPageHref: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ code: v }) => !!v || 'code:v8n_required',\n ({ code: v }) => !v || v.length <= 50 || 'code:v8n_too_long',\n ({ code: v }) => !v?.includes(' ') || 'code:v8n_has_spaces',\n ];\n }\n\n getTransactionPageHref: TransactionPageHrefGetter | null = null;\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch: string[] = [super.hiddenSelector.toString()];\n if (!this.href) alwaysMatch.unshift('transactions');\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderBody(): TemplateResult {\n let transactions: string | undefined;\n\n try {\n const url = new URL(this.data?._links['fx:coupon_code_transactions'].href ?? '');\n url.searchParams.set('zoom', 'items');\n transactions = url.toString();\n } catch {\n transactions = undefined;\n }\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"code\"></foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n first=${ifDefined(transactions)}\n infer=\"transactions\"\n limit=\"5\"\n item=\"foxy-transaction-card\"\n .getPageHref=${this.getTransactionPageHref}\n hide-delete-button\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
1
  import '../../internal/InternalAsyncListControl/index';
2
+ import '../../internal/InternalSummaryControl/index';
2
3
  import '../../internal/InternalTextControl/index';
3
4
  import '../../internal/InternalForm/index';
4
5
  import '../TransactionCard/index';
@@ -1,4 +1,5 @@
1
1
  import "../../internal/InternalAsyncListControl/index.js";
2
+ import "../../internal/InternalSummaryControl/index.js";
2
3
  import "../../internal/InternalTextControl/index.js";
3
4
  import "../../internal/InternalForm/index.js";
4
5
  import "../TransactionCard/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodeForm/index.ts"],"names":[],"mappings":"AAAA,0DAAuD;AACvD,qDAAkD;AAClD,8CAA2C;AAC3C,qCAAkC;AAElC,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../TransactionCard/index';\n\nimport { CouponCodeForm } from './CouponCodeForm';\n\ncustomElements.define('foxy-coupon-code-form', CouponCodeForm);\n\nexport { CouponCodeForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/CouponCodeForm/index.ts"],"names":[],"mappings":"AAAA,0DAAuD;AACvD,wDAAqD;AACrD,qDAAkD;AAClD,8CAA2C;AAC3C,qCAAkC;AAElC,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalSummaryControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../TransactionCard/index';\n\nimport { CouponCodeForm } from './CouponCodeForm';\n\ncustomElements.define('foxy-coupon-code-form', CouponCodeForm);\n\nexport { CouponCodeForm };\n"]}
@@ -17,6 +17,12 @@ export declare class GiftCardForm extends Base<Data> {
17
17
  static get v8n(): NucleonV8N<Data>;
18
18
  /** Returns a `fx:customer` Resource URL for a Customer ID. */
19
19
  getCustomerHref: (id: number | string) => string;
20
+ private readonly __provisioningMaxBalanceValueGetter;
21
+ private readonly __provisioningMaxBalanceValueSetter;
22
+ private readonly __provisioningMinBalanceValueGetter;
23
+ private readonly __provisioningMinBalanceValueSetter;
24
+ private readonly __provisioningToggleValueGetter;
25
+ private readonly __provisioningToggleValueSetter;
20
26
  private readonly __productCodeRestrictionsGetValue;
21
27
  private readonly __productCodeRestrictionsSetValue;
22
28
  private readonly __currencyCodeGetValue;
@@ -21,6 +21,55 @@ export class GiftCardForm extends Base {
21
21
  this.getCustomerHref = id => {
22
22
  return `https://api.foxycart.com/customers/${id}`;
23
23
  };
24
+ this.__provisioningMaxBalanceValueGetter = () => {
25
+ var _a;
26
+ return (_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.initial_balance_max;
27
+ };
28
+ this.__provisioningMaxBalanceValueSetter = (newMax) => {
29
+ var _a, _b;
30
+ const newMin = (_b = (_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.initial_balance_min) !== null && _b !== void 0 ? _b : newMax;
31
+ this.edit({
32
+ provisioning_config: {
33
+ allow_autoprovisioning: true,
34
+ initial_balance_min: newMin > newMax ? newMax : newMin,
35
+ initial_balance_max: newMax,
36
+ },
37
+ });
38
+ };
39
+ this.__provisioningMinBalanceValueGetter = () => {
40
+ var _a;
41
+ return (_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.initial_balance_min;
42
+ };
43
+ this.__provisioningMinBalanceValueSetter = (newMin) => {
44
+ var _a, _b;
45
+ const newMax = (_b = (_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.initial_balance_max) !== null && _b !== void 0 ? _b : newMin;
46
+ this.edit({
47
+ provisioning_config: {
48
+ allow_autoprovisioning: true,
49
+ initial_balance_min: newMin,
50
+ initial_balance_max: newMax < newMin ? newMin : newMax,
51
+ },
52
+ });
53
+ };
54
+ this.__provisioningToggleValueGetter = () => {
55
+ var _a;
56
+ return !!((_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.allow_autoprovisioning);
57
+ };
58
+ this.__provisioningToggleValueSetter = (newValue) => {
59
+ var _a, _b, _c, _d;
60
+ if (newValue) {
61
+ this.edit({
62
+ provisioning_config: {
63
+ allow_autoprovisioning: true,
64
+ initial_balance_min: (_b = (_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.initial_balance_min) !== null && _b !== void 0 ? _b : 0,
65
+ initial_balance_max: (_d = (_c = this.form.provisioning_config) === null || _c === void 0 ? void 0 : _c.initial_balance_max) !== null && _d !== void 0 ? _d : 0,
66
+ },
67
+ });
68
+ }
69
+ else {
70
+ this.edit({ provisioning_config: null });
71
+ }
72
+ };
24
73
  this.__productCodeRestrictionsGetValue = () => {
25
74
  var _a;
26
75
  return (_a = this.form.product_code_restrictions) === null || _a === void 0 ? void 0 : _a.split(',').filter(v => !!v.trim()).map(value => ({
@@ -112,10 +161,14 @@ export class GiftCardForm extends Base {
112
161
  ];
113
162
  }
114
163
  get hiddenSelector() {
164
+ var _a;
115
165
  const alwaysMatch = [super.hiddenSelector.toString()];
116
166
  if (!this.data) {
117
167
  alwaysMatch.push('codes', 'category-restrictions', 'attributes');
118
168
  }
169
+ if (!((_a = this.form.provisioning_config) === null || _a === void 0 ? void 0 : _a.allow_autoprovisioning)) {
170
+ alwaysMatch.push('provisioning:sku', 'provisioning:min-balance', 'provisioning:max-balance');
171
+ }
119
172
  return new BooleanSelector(alwaysMatch.join(' ').trim());
120
173
  }
121
174
  get headerSubtitleOptions() {
@@ -143,40 +196,73 @@ export class GiftCardForm extends Base {
143
196
  `;
144
197
  }
145
198
  renderBody() {
146
- var _a, _b, _c, _d, _e, _f, _g, _h;
199
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
147
200
  let codesUrl;
148
201
  try {
149
202
  const url = new URL((_b = (_a = this.data) === null || _a === void 0 ? void 0 : _a._links['fx:gift_card_codes'].href) !== null && _b !== void 0 ? _b : '');
150
203
  url.searchParams.set('order', 'date_created desc');
151
204
  codesUrl = url.toString();
152
205
  }
153
- catch (_j) {
206
+ catch (_l) {
154
207
  codesUrl = undefined;
155
208
  }
156
209
  return html `
157
210
  ${this.renderHeader()}
158
211
 
159
- <div class="grid grid-cols-1 sm-grid-cols-3 md-grid-cols-4 gap-m">
160
- <foxy-internal-text-control infer="name" class="md-col-span-2">
212
+ <foxy-internal-summary-control infer="general">
213
+ <foxy-internal-text-control layout="summary-item" infer="name">
161
214
  </foxy-internal-text-control>
162
215
 
163
216
  <foxy-internal-select-control
164
217
  property="currency_code"
218
+ layout="summary-item"
165
219
  infer="currency"
166
220
  .getValue=${this.__currencyCodeGetValue}
167
221
  .options=${currencies.map(value => ({
168
- label: this.t(`currency.code_${value}`),
222
+ label: this.t(`general.currency.code_${value}`),
169
223
  value,
170
224
  }))}
171
225
  >
172
226
  </foxy-internal-select-control>
173
227
 
174
- <foxy-internal-frequency-control property="expires_after" infer="expires">
228
+ <foxy-internal-frequency-control
229
+ property="expires_after"
230
+ layout="summary-item"
231
+ infer="expires"
232
+ >
175
233
  </foxy-internal-frequency-control>
176
- </div>
234
+ </foxy-internal-summary-control>
177
235
 
178
- <foxy-internal-gift-card-form-provisioning-control infer="provisioning">
179
- </foxy-internal-gift-card-form-provisioning-control>
236
+ <foxy-internal-summary-control infer="provisioning">
237
+ <foxy-internal-switch-control
238
+ infer="toggle"
239
+ .getValue=${this.__provisioningToggleValueGetter}
240
+ .setValue=${this.__provisioningToggleValueSetter}
241
+ >
242
+ </foxy-internal-switch-control>
243
+
244
+ <foxy-internal-text-control layout="summary-item" infer="sku"></foxy-internal-text-control>
245
+
246
+ <foxy-internal-number-control
247
+ layout="summary-item"
248
+ suffix=${ifDefined((_c = this.form.currency_code) === null || _c === void 0 ? void 0 : _c.toUpperCase())}
249
+ infer="min-balance"
250
+ min="0"
251
+ .getValue=${this.__provisioningMinBalanceValueGetter}
252
+ .setValue=${this.__provisioningMinBalanceValueSetter}
253
+ >
254
+ </foxy-internal-number-control>
255
+
256
+ <foxy-internal-number-control
257
+ layout="summary-item"
258
+ suffix=${ifDefined((_d = this.form.currency_code) === null || _d === void 0 ? void 0 : _d.toUpperCase())}
259
+ infer="max-balance"
260
+ min="0"
261
+ .getValue=${this.__provisioningMaxBalanceValueGetter}
262
+ .setValue=${this.__provisioningMaxBalanceValueSetter}
263
+ >
264
+ </foxy-internal-number-control>
265
+ </foxy-internal-summary-control>
180
266
 
181
267
  <foxy-internal-async-list-control
182
268
  first=${codesUrl}
@@ -206,10 +292,10 @@ export class GiftCardForm extends Base {
206
292
  foreign-key-for-uri="item_category_uri"
207
293
  foreign-key-for-id="item_category_id"
208
294
  own-key-for-uri="gift_card_uri"
209
- options-href=${ifDefined((_d = (_c = this.__storeLoader) === null || _c === void 0 ? void 0 : _c.data) === null || _d === void 0 ? void 0 : _d._links['fx:item_categories'].href)}
210
- links-href=${ifDefined((_e = this.data) === null || _e === void 0 ? void 0 : _e._links['fx:gift_card_item_categories'].href)}
295
+ options-href=${ifDefined((_f = (_e = this.__storeLoader) === null || _e === void 0 ? void 0 : _e.data) === null || _f === void 0 ? void 0 : _f._links['fx:item_categories'].href)}
296
+ links-href=${ifDefined((_g = this.data) === null || _g === void 0 ? void 0 : _g._links['fx:gift_card_item_categories'].href)}
211
297
  embed-key="fx:gift_card_item_categories"
212
- own-uri=${ifDefined((_f = this.data) === null || _f === void 0 ? void 0 : _f._links.self.href)}
298
+ own-uri=${ifDefined((_h = this.data) === null || _h === void 0 ? void 0 : _h._links.self.href)}
213
299
  infer="category-restrictions"
214
300
  limit="5"
215
301
  item="foxy-item-category-card"
@@ -217,7 +303,7 @@ export class GiftCardForm extends Base {
217
303
  </foxy-internal-async-resource-link-list-control>
218
304
 
219
305
  <foxy-internal-async-list-control
220
- first=${ifDefined((_g = this.data) === null || _g === void 0 ? void 0 : _g._links['fx:attributes'].href)}
306
+ first=${ifDefined((_j = this.data) === null || _j === void 0 ? void 0 : _j._links['fx:attributes'].href)}
221
307
  limit="5"
222
308
  infer="attributes"
223
309
  item="foxy-attribute-card"
@@ -231,7 +317,7 @@ export class GiftCardForm extends Base {
231
317
  <foxy-nucleon
232
318
  infer=""
233
319
  class="hidden"
234
- href=${ifDefined((_h = this.data) === null || _h === void 0 ? void 0 : _h._links['fx:store'].href)}
320
+ href=${ifDefined((_k = this.data) === null || _k === void 0 ? void 0 : _k._links['fx:store'].href)}
235
321
  id=${this.__storeLoaderId}
236
322
  @update=${() => this.requestUpdate()}
237
323
  >
@@ -1 +1 @@
1
- {"version":3,"file":"GiftCardForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/GiftCardForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { SwipeAction } from '../../internal/InternalAsyncListControl/types';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { Option, Type } from '../QueryBuilder/types';\nimport { html } from 'lit-element';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { currencies } from './currencies';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst NS = 'gift-card-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for creating or editing gift cards (`fx:gift_card`).\n *\n * @element foxy-gift-card-form\n * @since 1.15.0\n */\nexport class GiftCardForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getCustomerHref: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 50 || 'name:v8n_too_long',\n\n form => {\n if (form.provisioning_config?.allow_autoprovisioning) {\n if (!form.sku) return 'sku:v8n_required';\n if (form.sku.length > 200) return 'sku:v8n_too_long';\n }\n\n return true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_min;\n return typeof v === 'number' && v < 0 ? 'min-balance:v8n_negative' : true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_max;\n return typeof v === 'number' && v < 0 ? 'max-balance:v8n_negative' : true;\n },\n\n ({ product_code_restrictions: v }) => {\n return !v || v.length <= 5000 || 'product-code-restrictions:v8n_too_long';\n },\n ];\n }\n\n /** Returns a `fx:customer` Resource URL for a Customer ID. */\n getCustomerHref: (id: number | string) => string = id => {\n return `https://api.foxycart.com/customers/${id}`;\n };\n\n private readonly __productCodeRestrictionsGetValue = () => {\n return this.form.product_code_restrictions\n ?.split(',')\n .filter(v => !!v.trim())\n .map(value => ({\n value,\n label: value.startsWith('-')\n ? this.t(`product-code-restrictions.label_block`, { value: value.substring(1) })\n : this.t(`product-code-restrictions.label_allow`, { value }),\n }));\n };\n\n private readonly __productCodeRestrictionsSetValue = (newValue: Item[]) => {\n this.edit({\n product_code_restrictions: newValue\n .map(({ value, unit }) => (unit === 'block' ? `-${value}` : value))\n .filter((v, i, a) => !!v && a.indexOf(v) === i)\n .join(','),\n });\n };\n\n private readonly __currencyCodeGetValue = () => {\n return this.form.currency_code?.toLowerCase();\n };\n\n private readonly __storeLoaderId = 'storeLoader';\n\n private readonly __codesFilters: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'current_balance', path: 'current_balance', type: Type.Number },\n { label: 'end_date', path: 'end_date', type: Type.Date },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesActions: SwipeAction<Resource<Rels.GiftCardCode>>[] = [\n {\n theme: 'contrast',\n state: 'idle',\n text: 'copy_button_text',\n onClick: async data => {\n this.__codesActions[0].state = 'busy';\n this.__codesActions = [...this.__codesActions];\n\n try {\n await navigator.clipboard.writeText(data.code);\n this.__codesActions[0].state = 'end';\n } catch {\n this.__codesActions[0].state = 'error';\n } finally {\n this.__codesActions = [...this.__codesActions];\n setTimeout(() => {\n this.__codesActions[0].state = 'idle';\n this.__codesActions = [...this.__codesActions];\n }, 1000);\n }\n },\n },\n ];\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (!this.data) {\n alwaysMatch.push('codes', 'category-restrictions', 'attributes');\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n get headerSubtitleOptions(): Record<string, unknown> {\n return { id: this.headerCopyIdValue };\n }\n\n renderHeaderActions(data: Data): TemplateResult {\n return html`\n <foxy-internal-bulk-add-action-control\n parent=${data._links['fx:generate_codes'].href}\n infer=\"generate\"\n form=\"foxy-generate-codes-form\"\n .related=${[data._links['fx:gift_card_codes'].href]}\n >\n </foxy-internal-bulk-add-action-control>\n\n <foxy-internal-bulk-add-action-control\n parent=${data._links['fx:gift_card_codes'].href}\n infer=\"import\"\n form=\"foxy-gift-card-codes-form\"\n .related=${[data._links['fx:gift_card_codes'].href]}\n >\n </foxy-internal-bulk-add-action-control>\n\n ${super.renderHeaderActions(data)}\n `;\n }\n\n renderBody(): TemplateResult {\n let codesUrl: string | undefined;\n\n try {\n const url = new URL(this.data?._links['fx:gift_card_codes'].href ?? '');\n url.searchParams.set('order', 'date_created desc');\n\n codesUrl = url.toString();\n } catch {\n codesUrl = undefined;\n }\n\n return html`\n ${this.renderHeader()}\n\n <div class=\"grid grid-cols-1 sm-grid-cols-3 md-grid-cols-4 gap-m\">\n <foxy-internal-text-control infer=\"name\" class=\"md-col-span-2\">\n </foxy-internal-text-control>\n\n <foxy-internal-select-control\n property=\"currency_code\"\n infer=\"currency\"\n .getValue=${this.__currencyCodeGetValue}\n .options=${currencies.map(value => ({\n label: this.t(`currency.code_${value}`),\n value,\n }))}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-frequency-control property=\"expires_after\" infer=\"expires\">\n </foxy-internal-frequency-control>\n </div>\n\n <foxy-internal-gift-card-form-provisioning-control infer=\"provisioning\">\n </foxy-internal-gift-card-form-provisioning-control>\n\n <foxy-internal-async-list-control\n first=${codesUrl}\n limit=\"5\"\n infer=\"codes\"\n item=\"foxy-gift-card-code-card\"\n form=\"foxy-gift-card-code-form\"\n alert\n .formProps=${{ '.getCustomerHref': this.getCustomerHref }}\n .actions=${this.__codesActions}\n .filters=${this.__codesFilters}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-editable-list-control\n infer=\"product-code-restrictions\"\n .getValue=${this.__productCodeRestrictionsGetValue}\n .setValue=${this.__productCodeRestrictionsSetValue}\n .units=${[\n { label: this.t('product-code-restrictions.unit_allow'), value: 'allow' },\n { label: this.t('product-code-restrictions.unit_block'), value: 'block' },\n ]}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-async-resource-link-list-control\n foreign-key-for-uri=\"item_category_uri\"\n foreign-key-for-id=\"item_category_id\"\n own-key-for-uri=\"gift_card_uri\"\n options-href=${ifDefined(this.__storeLoader?.data?._links['fx:item_categories'].href)}\n links-href=${ifDefined(this.data?._links['fx:gift_card_item_categories'].href)}\n embed-key=\"fx:gift_card_item_categories\"\n own-uri=${ifDefined(this.data?._links.self.href)}\n infer=\"category-restrictions\"\n limit=\"5\"\n item=\"foxy-item-category-card\"\n >\n </foxy-internal-async-resource-link-list-control>\n\n <foxy-internal-async-list-control\n first=${ifDefined(this.data?._links['fx:attributes'].href)}\n limit=\"5\"\n infer=\"attributes\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n alert\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n}\n"]}
1
+ {"version":3,"file":"GiftCardForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/GiftCardForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { SwipeAction } from '../../internal/InternalAsyncListControl/types';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Item } from '../../internal/InternalEditableListControl/types';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { Option, Type } from '../QueryBuilder/types';\nimport { html } from 'lit-element';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { currencies } from './currencies';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst NS = 'gift-card-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for creating or editing gift cards (`fx:gift_card`).\n *\n * @element foxy-gift-card-form\n * @since 1.15.0\n */\nexport class GiftCardForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n getCustomerHref: { attribute: false },\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => !v || v.length <= 50 || 'name:v8n_too_long',\n\n form => {\n if (form.provisioning_config?.allow_autoprovisioning) {\n if (!form.sku) return 'sku:v8n_required';\n if (form.sku.length > 200) return 'sku:v8n_too_long';\n }\n\n return true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_min;\n return typeof v === 'number' && v < 0 ? 'min-balance:v8n_negative' : true;\n },\n\n form => {\n const v = form.provisioning_config?.initial_balance_max;\n return typeof v === 'number' && v < 0 ? 'max-balance:v8n_negative' : true;\n },\n\n ({ product_code_restrictions: v }) => {\n return !v || v.length <= 5000 || 'product-code-restrictions:v8n_too_long';\n },\n ];\n }\n\n /** Returns a `fx:customer` Resource URL for a Customer ID. */\n getCustomerHref: (id: number | string) => string = id => {\n return `https://api.foxycart.com/customers/${id}`;\n };\n\n private readonly __provisioningMaxBalanceValueGetter = () => {\n return this.form.provisioning_config?.initial_balance_max;\n };\n\n private readonly __provisioningMaxBalanceValueSetter = (newMax: number) => {\n const newMin = this.form.provisioning_config?.initial_balance_min ?? newMax;\n\n this.edit({\n provisioning_config: {\n allow_autoprovisioning: true,\n initial_balance_min: newMin > newMax ? newMax : newMin,\n initial_balance_max: newMax,\n },\n });\n };\n\n private readonly __provisioningMinBalanceValueGetter = () => {\n return this.form.provisioning_config?.initial_balance_min;\n };\n\n private readonly __provisioningMinBalanceValueSetter = (newMin: number) => {\n const newMax = this.form.provisioning_config?.initial_balance_max ?? newMin;\n\n this.edit({\n provisioning_config: {\n allow_autoprovisioning: true,\n initial_balance_min: newMin,\n initial_balance_max: newMax < newMin ? newMin : newMax,\n },\n });\n };\n\n private readonly __provisioningToggleValueGetter = () => {\n return !!this.form.provisioning_config?.allow_autoprovisioning;\n };\n\n private readonly __provisioningToggleValueSetter = (newValue: boolean) => {\n if (newValue) {\n this.edit({\n provisioning_config: {\n allow_autoprovisioning: true,\n initial_balance_min: this.form.provisioning_config?.initial_balance_min ?? 0,\n initial_balance_max: this.form.provisioning_config?.initial_balance_max ?? 0,\n },\n });\n } else {\n this.edit({ provisioning_config: null });\n }\n };\n\n private readonly __productCodeRestrictionsGetValue = () => {\n return this.form.product_code_restrictions\n ?.split(',')\n .filter(v => !!v.trim())\n .map(value => ({\n value,\n label: value.startsWith('-')\n ? this.t(`product-code-restrictions.label_block`, { value: value.substring(1) })\n : this.t(`product-code-restrictions.label_allow`, { value }),\n }));\n };\n\n private readonly __productCodeRestrictionsSetValue = (newValue: Item[]) => {\n this.edit({\n product_code_restrictions: newValue\n .map(({ value, unit }) => (unit === 'block' ? `-${value}` : value))\n .filter((v, i, a) => !!v && a.indexOf(v) === i)\n .join(','),\n });\n };\n\n private readonly __currencyCodeGetValue = () => {\n return this.form.currency_code?.toLowerCase();\n };\n\n private readonly __storeLoaderId = 'storeLoader';\n\n private readonly __codesFilters: Option[] = [\n { label: 'code', path: 'code', type: Type.String },\n { label: 'current_balance', path: 'current_balance', type: Type.Number },\n { label: 'end_date', path: 'end_date', type: Type.Date },\n { label: 'date_created', path: 'date_created', type: Type.Date },\n { label: 'date_modified', path: 'date_modified', type: Type.Date },\n ];\n\n private __codesActions: SwipeAction<Resource<Rels.GiftCardCode>>[] = [\n {\n theme: 'contrast',\n state: 'idle',\n text: 'copy_button_text',\n onClick: async data => {\n this.__codesActions[0].state = 'busy';\n this.__codesActions = [...this.__codesActions];\n\n try {\n await navigator.clipboard.writeText(data.code);\n this.__codesActions[0].state = 'end';\n } catch {\n this.__codesActions[0].state = 'error';\n } finally {\n this.__codesActions = [...this.__codesActions];\n setTimeout(() => {\n this.__codesActions[0].state = 'idle';\n this.__codesActions = [...this.__codesActions];\n }, 1000);\n }\n },\n },\n ];\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (!this.data) {\n alwaysMatch.push('codes', 'category-restrictions', 'attributes');\n }\n\n if (!this.form.provisioning_config?.allow_autoprovisioning) {\n alwaysMatch.push('provisioning:sku', 'provisioning:min-balance', 'provisioning:max-balance');\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n get headerSubtitleOptions(): Record<string, unknown> {\n return { id: this.headerCopyIdValue };\n }\n\n renderHeaderActions(data: Data): TemplateResult {\n return html`\n <foxy-internal-bulk-add-action-control\n parent=${data._links['fx:generate_codes'].href}\n infer=\"generate\"\n form=\"foxy-generate-codes-form\"\n .related=${[data._links['fx:gift_card_codes'].href]}\n >\n </foxy-internal-bulk-add-action-control>\n\n <foxy-internal-bulk-add-action-control\n parent=${data._links['fx:gift_card_codes'].href}\n infer=\"import\"\n form=\"foxy-gift-card-codes-form\"\n .related=${[data._links['fx:gift_card_codes'].href]}\n >\n </foxy-internal-bulk-add-action-control>\n\n ${super.renderHeaderActions(data)}\n `;\n }\n\n renderBody(): TemplateResult {\n let codesUrl: string | undefined;\n\n try {\n const url = new URL(this.data?._links['fx:gift_card_codes'].href ?? '');\n url.searchParams.set('order', 'date_created desc');\n\n codesUrl = url.toString();\n } catch {\n codesUrl = undefined;\n }\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"name\">\n </foxy-internal-text-control>\n\n <foxy-internal-select-control\n property=\"currency_code\"\n layout=\"summary-item\"\n infer=\"currency\"\n .getValue=${this.__currencyCodeGetValue}\n .options=${currencies.map(value => ({\n label: this.t(`general.currency.code_${value}`),\n value,\n }))}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-frequency-control\n property=\"expires_after\"\n layout=\"summary-item\"\n infer=\"expires\"\n >\n </foxy-internal-frequency-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"provisioning\">\n <foxy-internal-switch-control\n infer=\"toggle\"\n .getValue=${this.__provisioningToggleValueGetter}\n .setValue=${this.__provisioningToggleValueSetter}\n >\n </foxy-internal-switch-control>\n\n <foxy-internal-text-control layout=\"summary-item\" infer=\"sku\"></foxy-internal-text-control>\n\n <foxy-internal-number-control\n layout=\"summary-item\"\n suffix=${ifDefined(this.form.currency_code?.toUpperCase())}\n infer=\"min-balance\"\n min=\"0\"\n .getValue=${this.__provisioningMinBalanceValueGetter}\n .setValue=${this.__provisioningMinBalanceValueSetter}\n >\n </foxy-internal-number-control>\n\n <foxy-internal-number-control\n layout=\"summary-item\"\n suffix=${ifDefined(this.form.currency_code?.toUpperCase())}\n infer=\"max-balance\"\n min=\"0\"\n .getValue=${this.__provisioningMaxBalanceValueGetter}\n .setValue=${this.__provisioningMaxBalanceValueSetter}\n >\n </foxy-internal-number-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n first=${codesUrl}\n limit=\"5\"\n infer=\"codes\"\n item=\"foxy-gift-card-code-card\"\n form=\"foxy-gift-card-code-form\"\n alert\n .formProps=${{ '.getCustomerHref': this.getCustomerHref }}\n .actions=${this.__codesActions}\n .filters=${this.__codesFilters}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-editable-list-control\n infer=\"product-code-restrictions\"\n .getValue=${this.__productCodeRestrictionsGetValue}\n .setValue=${this.__productCodeRestrictionsSetValue}\n .units=${[\n { label: this.t('product-code-restrictions.unit_allow'), value: 'allow' },\n { label: this.t('product-code-restrictions.unit_block'), value: 'block' },\n ]}\n >\n </foxy-internal-editable-list-control>\n\n <foxy-internal-async-resource-link-list-control\n foreign-key-for-uri=\"item_category_uri\"\n foreign-key-for-id=\"item_category_id\"\n own-key-for-uri=\"gift_card_uri\"\n options-href=${ifDefined(this.__storeLoader?.data?._links['fx:item_categories'].href)}\n links-href=${ifDefined(this.data?._links['fx:gift_card_item_categories'].href)}\n embed-key=\"fx:gift_card_item_categories\"\n own-uri=${ifDefined(this.data?._links.self.href)}\n infer=\"category-restrictions\"\n limit=\"5\"\n item=\"foxy-item-category-card\"\n >\n </foxy-internal-async-resource-link-list-control>\n\n <foxy-internal-async-list-control\n first=${ifDefined(this.data?._links['fx:attributes'].href)}\n limit=\"5\"\n infer=\"attributes\"\n item=\"foxy-attribute-card\"\n form=\"foxy-attribute-form\"\n alert\n >\n </foxy-internal-async-list-control>\n\n ${super.renderBody()}\n\n <foxy-nucleon\n infer=\"\"\n class=\"hidden\"\n href=${ifDefined(this.data?._links['fx:store'].href)}\n id=${this.__storeLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __storeLoader() {\n type Loader = NucleonElement<Resource<Rels.Store>>;\n return this.renderRoot.querySelector<Loader>(`#${this.__storeLoaderId}`);\n }\n}\n"]}
@@ -3,7 +3,10 @@ import '../../internal/InternalBulkAddActionControl/index';
3
3
  import '../../internal/InternalEditableListControl/index';
4
4
  import '../../internal/InternalAsyncListControl/index';
5
5
  import '../../internal/InternalFrequencyControl/index';
6
+ import '../../internal/InternalSummaryControl/index';
6
7
  import '../../internal/InternalSelectControl/index';
8
+ import '../../internal/InternalSwitchControl/index';
9
+ import '../../internal/InternalNumberControl/index';
7
10
  import '../../internal/InternalTextControl/index';
8
11
  import '../../internal/InternalForm/index';
9
12
  import '../GenerateCodesForm/index';
@@ -14,6 +17,5 @@ import '../GiftCardCodeForm/index';
14
17
  import '../NucleonElement/index';
15
18
  import '../AttributeCard/index';
16
19
  import '../AttributeForm/index';
17
- import './internal/InternalGiftCardFormProvisioningControl/index';
18
20
  import { GiftCardForm } from './GiftCardForm';
19
21
  export { GiftCardForm };
@@ -3,7 +3,10 @@ import "../../internal/InternalBulkAddActionControl/index.js";
3
3
  import "../../internal/InternalEditableListControl/index.js";
4
4
  import "../../internal/InternalAsyncListControl/index.js";
5
5
  import "../../internal/InternalFrequencyControl/index.js";
6
+ import "../../internal/InternalSummaryControl/index.js";
6
7
  import "../../internal/InternalSelectControl/index.js";
8
+ import "../../internal/InternalSwitchControl/index.js";
9
+ import "../../internal/InternalNumberControl/index.js";
7
10
  import "../../internal/InternalTextControl/index.js";
8
11
  import "../../internal/InternalForm/index.js";
9
12
  import "../GenerateCodesForm/index.js";
@@ -14,7 +17,6 @@ import "../GiftCardCodeForm/index.js";
14
17
  import "../NucleonElement/index.js";
15
18
  import "../AttributeCard/index.js";
16
19
  import "../AttributeForm/index.js";
17
- import "./internal/InternalGiftCardFormProvisioningControl/index.js";
18
20
  import { GiftCardForm } from "./GiftCardForm.js";
19
21
  customElements.define('foxy-gift-card-form', GiftCardForm);
20
22
  export { GiftCardForm };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/index.ts"],"names":[],"mappings":"AAAA,sEAAmE;AACnE,8DAA2D;AAC3D,6DAA0D;AAC1D,0DAAuD;AACvD,0DAAuD;AACvD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,uCAAoC;AACpC,uCAAoC;AACpC,sCAAmC;AACnC,sCAAmC;AACnC,sCAAmC;AACnC,oCAAiC;AACjC,mCAAgC;AAChC,mCAAgC;AAEhC,qEAAkE;AAElE,OAAO,EAAE,YAAY,EAAE,0BAAuB;AAE9C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import '../../internal/InternalAsyncResourceLinkListControl/index';\nimport '../../internal/InternalBulkAddActionControl/index';\nimport '../../internal/InternalEditableListControl/index';\nimport '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalFrequencyControl/index';\nimport '../../internal/InternalSelectControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../GenerateCodesForm/index';\nimport '../GiftCardCodesForm/index';\nimport '../ItemCategoryCard/index';\nimport '../GiftCardCodeCard/index';\nimport '../GiftCardCodeForm/index';\nimport '../NucleonElement/index';\nimport '../AttributeCard/index';\nimport '../AttributeForm/index';\n\nimport './internal/InternalGiftCardFormProvisioningControl/index';\n\nimport { GiftCardForm } from './GiftCardForm';\n\ncustomElements.define('foxy-gift-card-form', GiftCardForm);\n\nexport { GiftCardForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/index.ts"],"names":[],"mappings":"AAAA,sEAAmE;AACnE,8DAA2D;AAC3D,6DAA0D;AAC1D,0DAAuD;AACvD,0DAAuD;AACvD,wDAAqD;AACrD,uDAAoD;AACpD,uDAAoD;AACpD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,uCAAoC;AACpC,uCAAoC;AACpC,sCAAmC;AACnC,sCAAmC;AACnC,sCAAmC;AACnC,oCAAiC;AACjC,mCAAgC;AAChC,mCAAgC;AAEhC,OAAO,EAAE,YAAY,EAAE,0BAAuB;AAE9C,cAAc,CAAC,MAAM,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;AAE3D,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import '../../internal/InternalAsyncResourceLinkListControl/index';\nimport '../../internal/InternalBulkAddActionControl/index';\nimport '../../internal/InternalEditableListControl/index';\nimport '../../internal/InternalAsyncListControl/index';\nimport '../../internal/InternalFrequencyControl/index';\nimport '../../internal/InternalSummaryControl/index';\nimport '../../internal/InternalSelectControl/index';\nimport '../../internal/InternalSwitchControl/index';\nimport '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport '../GenerateCodesForm/index';\nimport '../GiftCardCodesForm/index';\nimport '../ItemCategoryCard/index';\nimport '../GiftCardCodeCard/index';\nimport '../GiftCardCodeForm/index';\nimport '../NucleonElement/index';\nimport '../AttributeCard/index';\nimport '../AttributeForm/index';\n\nimport { GiftCardForm } from './GiftCardForm';\n\ncustomElements.define('foxy-gift-card-form', GiftCardForm);\n\nexport { GiftCardForm };\n"]}
@@ -20,12 +20,18 @@ export class ItemOptionForm extends TranslatableMixin(InternalForm, 'item-option
20
20
  return html `
21
21
  ${this.renderHeader()}
22
22
 
23
- <div class="grid grid-cols-2 gap-m">
24
- <foxy-internal-text-control infer="name" class="col-span-2"></foxy-internal-text-control>
25
- <foxy-internal-text-control infer="value" class="col-span-2"></foxy-internal-text-control>
26
- <foxy-internal-number-control infer="price-mod"></foxy-internal-number-control>
27
- <foxy-internal-number-control infer="weight-mod"></foxy-internal-number-control>
28
- </div>
23
+ <foxy-internal-summary-control infer="general">
24
+ <foxy-internal-text-control layout="summary-item" infer="name"></foxy-internal-text-control>
25
+ <foxy-internal-text-control layout="summary-item" infer="value">
26
+ </foxy-internal-text-control>
27
+ </foxy-internal-summary-control>
28
+
29
+ <foxy-internal-summary-control infer="mods">
30
+ <foxy-internal-number-control layout="summary-item" infer="price-mod">
31
+ </foxy-internal-number-control>
32
+ <foxy-internal-number-control layout="summary-item" infer="weight-mod">
33
+ </foxy-internal-number-control>
34
+ </foxy-internal-summary-control>
29
35
 
30
36
  ${super.renderBody()}
31
37
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"ItemOptionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionForm/ItemOptionForm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAO;IAC3F,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,mBAAmB;YAChE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB;YAC7C,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,oBAAoB;SACpE,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,YAAY,EAAE;;;;;;;;;QASnB,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\n/**\n * Form element for creating or editing item options (`fx:item_option`).\n *\n * @element foxy-item-option-form\n * @since 1.17.0\n */\nexport class ItemOptionForm extends TranslatableMixin(InternalForm, 'item-option-form')<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 100) || 'name:v8n_too_long',\n ({ value: v }) => !!v || 'value:v8n_required',\n ({ value: v }) => (!!v && v.length <= 1024) || 'value:v8n_too_long',\n ];\n }\n\n renderBody(): TemplateResult {\n return html`\n ${this.renderHeader()}\n\n <div class=\"grid grid-cols-2 gap-m\">\n <foxy-internal-text-control infer=\"name\" class=\"col-span-2\"></foxy-internal-text-control>\n <foxy-internal-text-control infer=\"value\" class=\"col-span-2\"></foxy-internal-text-control>\n <foxy-internal-number-control infer=\"price-mod\"></foxy-internal-number-control>\n <foxy-internal-number-control infer=\"weight-mod\"></foxy-internal-number-control>\n </div>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"ItemOptionForm.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionForm/ItemOptionForm.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,iBAAiB,CAAC,YAAY,EAAE,kBAAkB,CAAO;IAC3F,MAAM,KAAK,GAAG;QACZ,OAAO;YACL,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,mBAAmB;YAC3C,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,mBAAmB;YAChE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,oBAAoB;YAC7C,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,oBAAoB;SACpE,CAAC;IACJ,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,YAAY,EAAE;;;;;;;;;;;;;;;QAenB,KAAK,CAAC,UAAU,EAAE;KACrB,CAAC;IACJ,CAAC;CACF","sourcesContent":["import type { TemplateResult } from 'lit-html';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\n/**\n * Form element for creating or editing item options (`fx:item_option`).\n *\n * @element foxy-item-option-form\n * @since 1.17.0\n */\nexport class ItemOptionForm extends TranslatableMixin(InternalForm, 'item-option-form')<Data> {\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ name: v }) => !!v || 'name:v8n_required',\n ({ name: v }) => (!!v && v.length <= 100) || 'name:v8n_too_long',\n ({ value: v }) => !!v || 'value:v8n_required',\n ({ value: v }) => (!!v && v.length <= 1024) || 'value:v8n_too_long',\n ];\n }\n\n renderBody(): TemplateResult {\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-text-control layout=\"summary-item\" infer=\"name\"></foxy-internal-text-control>\n <foxy-internal-text-control layout=\"summary-item\" infer=\"value\">\n </foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"mods\">\n <foxy-internal-number-control layout=\"summary-item\" infer=\"price-mod\">\n </foxy-internal-number-control>\n <foxy-internal-number-control layout=\"summary-item\" infer=\"weight-mod\">\n </foxy-internal-number-control>\n </foxy-internal-summary-control>\n\n ${super.renderBody()}\n `;\n }\n}\n"]}
@@ -1,3 +1,4 @@
1
+ import '../../internal/InternalSummaryControl/index';
1
2
  import '../../internal/InternalNumberControl/index';
2
3
  import '../../internal/InternalTextControl/index';
3
4
  import '../../internal/InternalForm/index';
@@ -1,3 +1,4 @@
1
+ import "../../internal/InternalSummaryControl/index.js";
1
2
  import "../../internal/InternalNumberControl/index.js";
2
3
  import "../../internal/InternalTextControl/index.js";
3
4
  import "../../internal/InternalForm/index.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionForm/index.ts"],"names":[],"mappings":"AAAA,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport { ItemOptionForm } from './ItemOptionForm';\n\ncustomElements.define('foxy-item-option-form', ItemOptionForm);\n\nexport { ItemOptionForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/ItemOptionForm/index.ts"],"names":[],"mappings":"AAAA,wDAAqD;AACrD,uDAAoD;AACpD,qDAAkD;AAClD,8CAA2C;AAE3C,OAAO,EAAE,cAAc,EAAE,4BAAyB;AAElD,cAAc,CAAC,MAAM,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,CAAC","sourcesContent":["import '../../internal/InternalSummaryControl/index';\nimport '../../internal/InternalNumberControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\n\nimport { ItemOptionForm } from './ItemOptionForm';\n\ncustomElements.define('foxy-item-option-form', ItemOptionForm);\n\nexport { ItemOptionForm };\n"]}
@@ -290,32 +290,27 @@ export class Transaction extends Base {
290
290
  >
291
291
  </foxy-internal-async-list-control>
292
292
 
293
- <div
294
- class="grid gap-m sm-grid-cols-2"
295
- ?hidden=${hidden.matches('custom-fields', true) && hidden.matches('attributes', true)}
293
+ <foxy-internal-async-list-control
294
+ infer="custom-fields"
295
+ class="min-w-0"
296
+ first=${ifDefined((_l = this.data) === null || _l === void 0 ? void 0 : _l._links['fx:custom_fields'].href)}
297
+ limit="5"
298
+ form="foxy-custom-field-form"
299
+ item="foxy-custom-field-card"
300
+ alert
296
301
  >
297
- <foxy-internal-async-list-control
298
- infer="custom-fields"
299
- class="min-w-0"
300
- first=${ifDefined((_l = this.data) === null || _l === void 0 ? void 0 : _l._links['fx:custom_fields'].href)}
301
- limit="5"
302
- form="foxy-custom-field-form"
303
- item="foxy-custom-field-card"
304
- alert
305
- >
306
- </foxy-internal-async-list-control>
302
+ </foxy-internal-async-list-control>
307
303
 
308
- <foxy-internal-async-list-control
309
- infer="attributes"
310
- class="min-w-0"
311
- first=${ifDefined((_m = this.data) === null || _m === void 0 ? void 0 : _m._links['fx:attributes'].href)}
312
- limit="5"
313
- form="foxy-attribute-form"
314
- item="foxy-attribute-card"
315
- alert
316
- >
317
- </foxy-internal-async-list-control>
318
- </div>
304
+ <foxy-internal-async-list-control
305
+ infer="attributes"
306
+ class="min-w-0"
307
+ first=${ifDefined((_m = this.data) === null || _m === void 0 ? void 0 : _m._links['fx:attributes'].href)}
308
+ limit="5"
309
+ form="foxy-attribute-form"
310
+ item="foxy-attribute-card"
311
+ alert
312
+ >
313
+ </foxy-internal-async-list-control>
319
314
 
320
315
  <foxy-internal-async-list-control
321
316
  infer="shipments"