@foxy.io/elements 1.32.0-beta.1 → 1.32.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +2 -2
  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 +1 -1
  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 +1 -1
  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 -64
  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-8fc527b7.js → shared-011d6240.js} +1 -1
  118. package/dist/cdn/{shared-c98881c7.js → shared-045bd59c.js} +1 -1
  119. package/dist/cdn/{shared-e709057b.js → shared-08c637a9.js} +1 -1
  120. package/dist/cdn/{shared-f893763a.js → shared-08e42e78.js} +1 -1
  121. package/dist/cdn/{shared-6f0504e2.js → shared-0a24f318.js} +1 -1
  122. package/dist/cdn/{shared-f67f6fc5.js → shared-0e44bfff.js} +1 -1
  123. package/dist/cdn/{shared-d3044c4c.js → shared-0f261023.js} +1 -1
  124. package/dist/cdn/{shared-9092b5db.js → shared-1c169878.js} +1 -1
  125. package/dist/cdn/{shared-9e360643.js → shared-1cd2db2d.js} +1 -1
  126. package/dist/cdn/{shared-f998f9c8.js → shared-1cfea4b6.js} +1 -1
  127. package/dist/cdn/{shared-11694c05.js → shared-24c7c37f.js} +1 -1
  128. package/dist/cdn/{shared-374e6faa.js → shared-25324930.js} +1 -1
  129. package/dist/cdn/{shared-c508d5dc.js → shared-26425c01.js} +1 -1
  130. package/dist/cdn/{shared-6b8c2a83.js → shared-30b4c05b.js} +1 -1
  131. package/dist/cdn/{shared-c5647b62.js → shared-3491d10e.js} +1 -1
  132. package/dist/cdn/{shared-40af05b3.js → shared-34c84b9f.js} +1 -1
  133. package/dist/cdn/{shared-74eedbe6.js → shared-37cf92bd.js} +1 -1
  134. package/dist/cdn/{shared-aaf72aad.js → shared-3a066450.js} +1 -1
  135. package/dist/cdn/{shared-185dffc3.js → shared-45bef1ac.js} +1 -1
  136. package/dist/cdn/{shared-8a3fd383.js → shared-45ecb912.js} +1 -1
  137. package/dist/cdn/{shared-ca0847b0.js → shared-4a86d1ca.js} +1 -1
  138. package/dist/cdn/{shared-adcfd50a.js → shared-4d543043.js} +1 -1
  139. package/dist/cdn/{shared-c4f15ea3.js → shared-4e1b5fa3.js} +1 -1
  140. package/dist/cdn/{shared-b726120d.js → shared-4efc6bb8.js} +1 -1
  141. package/dist/cdn/{shared-acd33590.js → shared-51bb937b.js} +1 -1
  142. package/dist/cdn/{shared-1a30f25e.js → shared-537d2efe.js} +1 -1
  143. package/dist/cdn/{shared-f8368b97.js → shared-55bc51c8.js} +1 -1
  144. package/dist/cdn/{shared-2bc0d0cd.js → shared-56d1eae5.js} +1 -1
  145. package/dist/cdn/{shared-c9346893.js → shared-57cc81b4.js} +1 -1
  146. package/dist/cdn/{shared-f5547471.js → shared-5ff1affd.js} +1 -1
  147. package/dist/cdn/shared-620dccaa.js +1 -0
  148. package/dist/cdn/{shared-4903b2e3.js → shared-64d9ac2a.js} +1 -1
  149. package/dist/cdn/shared-73c1d31e.js +1 -0
  150. package/dist/cdn/{shared-df51ee50.js → shared-783f6e58.js} +1 -1
  151. package/dist/cdn/{shared-193bb806.js → shared-787e52c4.js} +1 -1
  152. package/dist/cdn/{shared-5c35d93a.js → shared-838cc86b.js} +1 -1
  153. package/dist/cdn/{shared-92192fe1.js → shared-85989cf3.js} +1 -1
  154. package/dist/cdn/{shared-65479601.js → shared-8a8bfd72.js} +1 -1
  155. package/dist/cdn/{shared-7c15c149.js → shared-8b9ae780.js} +1 -1
  156. package/dist/cdn/{shared-482ba043.js → shared-8f3fdf8b.js} +5 -5
  157. package/dist/cdn/{shared-9a59aab2.js → shared-906fe068.js} +1 -1
  158. package/dist/cdn/{shared-15100be0.js → shared-91560256.js} +1 -1
  159. package/dist/cdn/{shared-2e090291.js → shared-9411a937.js} +1 -1
  160. package/dist/cdn/{shared-d4a1658e.js → shared-978aaaf2.js} +1 -1
  161. package/dist/cdn/shared-97e1f413.js +1 -0
  162. package/dist/cdn/{shared-97cfdcdb.js → shared-9de0a899.js} +1 -1
  163. package/dist/cdn/{shared-8b5e05df.js → shared-9e94c56d.js} +1 -1
  164. package/dist/cdn/{shared-19df2a73.js → shared-9ef03974.js} +1 -1
  165. package/dist/cdn/{shared-bc023a29.js → shared-a4b0ccf4.js} +1 -1
  166. package/dist/cdn/{shared-8a73d1aa.js → shared-ac6e1790.js} +1 -1
  167. package/dist/cdn/{shared-60209b2d.js → shared-b6ab5711.js} +1 -1
  168. package/dist/cdn/{shared-745f340a.js → shared-b74187e9.js} +1 -1
  169. package/dist/cdn/{shared-c538157f.js → shared-be093279.js} +1 -1
  170. package/dist/cdn/{shared-86a9b27a.js → shared-c40a4b0c.js} +1 -1
  171. package/dist/cdn/{shared-5c846a3b.js → shared-c6b69d4e.js} +1 -1
  172. package/dist/cdn/{shared-8da3186f.js → shared-c7ffb9f2.js} +2 -2
  173. package/dist/cdn/{shared-28ebee50.js → shared-c89f7ad5.js} +1 -1
  174. package/dist/cdn/{shared-239062b0.js → shared-c9f3f8d3.js} +1 -1
  175. package/dist/cdn/{shared-addddf0e.js → shared-d713c00f.js} +1 -1
  176. package/dist/cdn/{shared-562d466d.js → shared-d8cd61ed.js} +1 -1
  177. package/dist/cdn/{shared-7ceceb4c.js → shared-de45ad84.js} +1 -1
  178. package/dist/cdn/{shared-5513e830.js → shared-e1850e5f.js} +1 -1
  179. package/dist/cdn/{shared-6e1b5baf.js → shared-e3647540.js} +1 -1
  180. package/dist/cdn/{shared-9d309e97.js → shared-ed9c9bab.js} +1 -1
  181. package/dist/cdn/{shared-dfe41029.js → shared-eff5dcb0.js} +1 -1
  182. package/dist/cdn/{shared-913e1955.js → shared-f0d70be1.js} +1 -1
  183. package/dist/cdn/shared-f1b29592.js +64 -0
  184. package/dist/cdn/{shared-91d8985f.js → shared-f97ed2ff.js} +1 -1
  185. package/dist/cdn/translations/cart-form/en.json +79 -68
  186. package/dist/cdn/translations/coupon-form/en.json +8 -52
  187. package/dist/elements/internal/InternalArrayMapControl/InternalArrayMapControl.d.ts +12 -0
  188. package/dist/elements/internal/InternalArrayMapControl/InternalArrayMapControl.js +277 -0
  189. package/dist/elements/internal/InternalArrayMapControl/InternalArrayMapControl.js.map +1 -0
  190. package/dist/elements/internal/InternalArrayMapControl/index.d.ts +4 -0
  191. package/dist/elements/internal/InternalArrayMapControl/index.js +6 -0
  192. package/dist/elements/internal/InternalArrayMapControl/index.js.map +1 -0
  193. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.d.ts +3 -0
  194. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js +51 -16
  195. package/dist/elements/internal/InternalResourcePickerControl/InternalResourcePickerControl.js.map +1 -1
  196. package/dist/elements/internal/InternalResourcePickerControl/index.d.ts +2 -0
  197. package/dist/elements/internal/InternalResourcePickerControl/index.js +2 -0
  198. package/dist/elements/internal/InternalResourcePickerControl/index.js.map +1 -1
  199. package/dist/elements/public/CartForm/CartForm.d.ts +2 -0
  200. package/dist/elements/public/CartForm/CartForm.js +15 -11
  201. package/dist/elements/public/CartForm/CartForm.js.map +1 -1
  202. package/dist/elements/public/CopyToClipboard/CopyToClipboard.d.ts +7 -1
  203. package/dist/elements/public/CopyToClipboard/CopyToClipboard.js +60 -30
  204. package/dist/elements/public/CopyToClipboard/CopyToClipboard.js.map +1 -1
  205. package/dist/elements/public/CouponForm/CouponForm.d.ts +2 -3
  206. package/dist/elements/public/CouponForm/CouponForm.js +51 -25
  207. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  208. package/dist/elements/public/CouponForm/index.d.ts +1 -0
  209. package/dist/elements/public/CouponForm/index.js +1 -0
  210. package/dist/elements/public/CouponForm/index.js.map +1 -1
  211. package/dist/elements/public/QueryBuilder/utils/parse.js +3 -1
  212. package/dist/elements/public/QueryBuilder/utils/parse.js.map +1 -1
  213. package/dist/elements/public/QueryBuilder/utils/stringify.js +10 -3
  214. package/dist/elements/public/QueryBuilder/utils/stringify.js.map +1 -1
  215. package/dist/elements/public/Transaction/index.d.ts +1 -0
  216. package/dist/elements/public/Transaction/index.js +1 -0
  217. package/dist/elements/public/Transaction/index.js.map +1 -1
  218. package/dist/mixins/themeable.js +4 -0
  219. package/dist/mixins/themeable.js.map +1 -1
  220. package/package.json +1 -1
  221. package/dist/cdn/shared-492da078.js +0 -1
  222. package/dist/cdn/shared-5e09e162.js +0 -1
  223. package/dist/cdn/shared-7275324b.js +0 -1
@@ -18,6 +18,8 @@ export class CartForm extends Base {
18
18
  super(...arguments);
19
19
  /** Payment Card Embed configuration URL. The form will append template set parameter on its own. */
20
20
  this.paymentCardEmbedUrl = null;
21
+ /** When configured, Customer section will include a link generated by this function. */
22
+ this.getCustomerPageUrl = null;
21
23
  /** URL of the `fx:item_categories` collection for the store. */
22
24
  this.itemCategories = null;
23
25
  /** URL of the `fx:template_sets` collection for the store. */
@@ -118,6 +120,7 @@ export class CartForm extends Base {
118
120
  return {
119
121
  ...super.properties,
120
122
  paymentCardEmbedUrl: { attribute: 'payment-card-embed-url' },
123
+ getCustomerPageUrl: { attribute: false },
121
124
  itemCategories: { attribute: 'item-categories' },
122
125
  templateSets: { attribute: 'template-sets' },
123
126
  localeCodes: { attribute: 'locale-codes' },
@@ -197,16 +200,6 @@ export class CartForm extends Base {
197
200
  >
198
201
  </foxy-internal-select-control>
199
202
 
200
- <foxy-internal-resource-picker-control
201
- layout="summary-item"
202
- first=${ifDefined((_c = this.customers) !== null && _c !== void 0 ? _c : void 0)}
203
- infer="customer-uri"
204
- item="foxy-customer-card"
205
- .setValue=${this.__customerUriSetValue}
206
- .filters=${this.__customerUriOptions}
207
- >
208
- </foxy-internal-resource-picker-control>
209
-
210
203
  <foxy-internal-text-control layout="summary-item" infer="customer-email">
211
204
  </foxy-internal-text-control>
212
205
  </foxy-internal-summary-control>
@@ -224,7 +217,7 @@ export class CartForm extends Base {
224
217
  .formProps=${{
225
218
  'item-categories': this.itemCategories,
226
219
  'locale-codes': this.localeCodes,
227
- 'store': (_d = this.data) === null || _d === void 0 ? void 0 : _d._links['fx:store'].href,
220
+ 'store': (_c = this.data) === null || _c === void 0 ? void 0 : _c._links['fx:store'].href,
228
221
  }}
229
222
  >
230
223
  </foxy-internal-async-list-control>
@@ -243,6 +236,17 @@ export class CartForm extends Base {
243
236
  >
244
237
  </foxy-internal-async-list-control>
245
238
 
239
+ <foxy-internal-resource-picker-control
240
+ first=${ifDefined((_d = this.customers) !== null && _d !== void 0 ? _d : void 0)}
241
+ infer="customer-uri"
242
+ item="foxy-customer-card"
243
+ show-copy-id-button
244
+ .getItemUrl=${this.getCustomerPageUrl}
245
+ .setValue=${this.__customerUriSetValue}
246
+ .filters=${this.__customerUriOptions}
247
+ >
248
+ </foxy-internal-resource-picker-control>
249
+
246
250
  <foxy-internal-summary-control infer="billing">
247
251
  <foxy-internal-resource-picker-control
248
252
  placeholder=${this.__paymentMethodUriPlaceholder}
@@ -1 +1 @@
1
- {"version":3,"file":"CartForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CartForm/CartForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Option } from '../QueryBuilder/types';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { Type } from '../QueryBuilder/types';\nimport { html } from 'lit-html';\n\nconst NS = 'cart-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for creating or editing carts (`fx:cart`).\n *\n * @element foxy-cart-form\n * @since 1.21.0\n */\nexport class CartForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n paymentCardEmbedUrl: { attribute: 'payment-card-embed-url' },\n itemCategories: { attribute: 'item-categories' },\n templateSets: { attribute: 'template-sets' },\n localeCodes: { attribute: 'locale-codes' },\n languages: {},\n customers: {},\n countries: {},\n regions: {},\n coupons: {},\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ billing_first_name: v }) => !v || v.length <= 50 || 'billing-first-name:v8n_too_long',\n ({ billing_last_name: v }) => !v || v.length <= 50 || 'billing-last-name:v8n_too_long',\n ({ billing_state: v }) => !v || v.length <= 50 || 'billing-state:v8n_too_long',\n ({ billing_city: v }) => !v || v.length <= 50 || 'billing-city:v8n_too_long',\n ({ billing_phone: v }) => !v || v.length <= 50 || 'billing-phone:v8n_too_long',\n ({ billing_company: v }) => !v || v.length <= 50 || 'billing-company:v8n_too_long',\n ({ billing_address2: v }) => !v || v.length <= 100 || 'billing-address-two:v8n_too_long',\n ({ billing_address1: v }) => !v || v.length <= 100 || 'billing-address-one:v8n_too_long',\n ({ billing_postal_code: v }) => !v || v.length <= 50 || 'billing-postal-code:v8n_too_long',\n ({ shipping_first_name: v }) => !v || v.length <= 50 || 'shipping-first-name:v8n_too_long',\n ({ shipping_last_name: v }) => !v || v.length <= 50 || 'shipping-last-name:v8n_too_long',\n ({ shipping_state: v }) => !v || v.length <= 50 || 'shipping-state:v8n_too_long',\n ({ shipping_city: v }) => !v || v.length <= 50 || 'shipping-city:v8n_too_long',\n ({ shipping_phone: v }) => !v || v.length <= 50 || 'shipping-phone:v8n_too_long',\n ({ shipping_company: v }) => !v || v.length <= 50 || 'shipping-company:v8n_too_long',\n ({ shipping_address2: v }) => !v || v.length <= 100 || 'shipping-address-two:v8n_too_long',\n ({ shipping_address1: v }) => !v || v.length <= 100 || 'shipping-address-one:v8n_too_long',\n ({ shipping_postal_code: v }) => !v || v.length <= 50 || 'shipping-postal-code:v8n_too_long',\n ];\n }\n\n /** Payment Card Embed configuration URL. The form will append template set parameter on its own. */\n paymentCardEmbedUrl: string | null = null;\n\n /** URL of the `fx:item_categories` collection for the store. */\n itemCategories: string | null = null;\n\n /** URL of the `fx:template_sets` collection for the store. */\n templateSets: string | null = null;\n\n /** URL of the `fx:locale_codes` property helper. */\n localeCodes: string | null = null;\n\n /** URL of the `fx:languages` property helper. */\n languages: string | null = null;\n\n /** URL of the `fx:customers` collection for the store. */\n customers: string | null = null;\n\n /** URL of the `fx:countries` property helper. */\n countries: string | null = null;\n\n /** URL of the `fx:regions` property helper. */\n regions: string | null = null;\n\n /** URL of the `fx:coupons` collection for the store. */\n coupons: string | null = null;\n\n private readonly __languagesLoaderId = 'languagesLoader';\n\n private readonly __customerLoaderId = 'customerLoader';\n\n private readonly __paymentMethodUriGetDisplayValueOptions = (\n payments: Resource<Rels.Payments>\n ) => {\n const payment = payments?._embedded?.['fx:payments']?.[0] ?? null;\n const ccExpMonth = payment?.cc_exp_month;\n const ccExpYear = payment?.cc_exp_year;\n const ccLast4 = payment?.cc_number_masked?.replace(/x/g, '');\n const ccType = payment?.cc_type;\n\n return {\n cc_exp_month: ccExpMonth ?? '',\n cc_exp_year: ccExpYear ?? '',\n cc_last4: ccLast4 ?? '',\n cc_type: ccType ?? '',\n context: ccLast4 && ccExpMonth && ccExpYear && ccType ? '' : 'empty',\n };\n };\n\n private readonly __paymentMethodUriSetValue = (transactionUrl: string) => {\n try {\n // TODO use links instead of constructing the URL manually\n const url = new URL(transactionUrl);\n url.search = '';\n url.pathname += '/payments';\n this.edit({ payment_method_uri: url.toString() });\n } catch (err) {\n this.edit({ payment_method_uri: '' });\n }\n };\n\n private readonly __paymentMethodUriFilters: Option[] = [\n {\n label: 'filter_type',\n type: Type.String,\n path: 'payments:type',\n list: [\n { label: 'filter_type_value_purchase_order', value: 'purchase_order' },\n { label: 'filter_type_value_amazon_mws', value: 'amazon_mws' },\n { label: 'filter_type_value_paypal_ec', value: 'paypal_ec' },\n { label: 'filter_type_value_paypal', value: 'paypal' },\n { label: 'filter_type_value_hosted', value: 'hosted' },\n { label: 'filter_type_value_ogone', value: 'ogone' },\n ],\n },\n {\n label: 'filter_cc_type',\n type: Type.String,\n path: 'payments:cc_type',\n list: [\n { label: 'filter_cc_type_value_mastercard', value: 'mastercard' },\n { label: 'filter_cc_type_value_discover', value: 'discover' },\n { label: 'filter_cc_type_value_unionpay', value: 'unionpay' },\n { label: 'filter_cc_type_value_maestro', value: 'maestro' },\n { label: 'filter_cc_type_value_diners', value: 'diners' },\n { label: 'filter_cc_type_value_visa', value: 'visa' },\n { label: 'filter_cc_type_value_amex', value: 'amex' },\n { label: 'filter_cc_type_value_jcb', value: 'jcb' },\n ],\n },\n {\n label: 'filter_cc_number_masked',\n type: Type.String,\n path: 'payments:cc_number_masked',\n },\n ];\n\n private readonly __customerUriSetValue = (newValue: string) => {\n this.edit({ customer_uri: newValue, customer_email: '' });\n };\n\n private readonly __customerUriOptions: Option[] = [\n { label: 'filter_email', path: 'email', type: Type.String },\n {\n label: 'filter_is_anonymous',\n path: 'is_anonymous',\n type: Type.String,\n list: [\n { value: 'false', label: 'filter_is_anonymous_value_false' },\n { value: 'true', label: 'filter_is_anonymous_value_true' },\n ],\n },\n ];\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (this.form.customer_uri) {\n alwaysMatch.unshift('general:customer-email');\n } else {\n alwaysMatch.unshift('billing:payment-method-uri');\n }\n\n if (this.data) {\n if (!this.form.use_customer_shipping_address) {\n alwaysMatch.unshift('shipping:shipping-address');\n }\n } else {\n alwaysMatch.unshift(\n 'applied-coupon-codes',\n 'custom-fields',\n 'attributes',\n 'shipping',\n 'billing',\n 'totals',\n 'items'\n );\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderHeaderActions(): TemplateResult {\n return html`\n <foxy-internal-cart-form-create-session-action infer=\"view-as-customer\">\n </foxy-internal-cart-form-create-session-action>\n `;\n }\n\n renderBody(): TemplateResult {\n const links = this.data?._links;\n const customer = this.__customer;\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-resource-picker-control\n layout=\"summary-item\"\n first=${ifDefined(this.templateSets ?? void 0)}\n infer=\"template-set-uri\"\n item=\"foxy-template-set-card\"\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-select-control\n layout=\"summary-item\"\n infer=\"language\"\n .options=${this.__languageOptions}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-resource-picker-control\n layout=\"summary-item\"\n first=${ifDefined(this.customers ?? void 0)}\n infer=\"customer-uri\"\n item=\"foxy-customer-card\"\n .setValue=${this.__customerUriSetValue}\n .filters=${this.__customerUriOptions}\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-text-control layout=\"summary-item\" infer=\"customer-email\">\n </foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"items\"\n class=\"min-w-0\"\n first=${ifDefined(this.__itemsHref)}\n alert\n wide\n item=\"foxy-item-card\"\n form=\"foxy-item-form\"\n .related=${this.href ? [this.href] : []}\n .itemProps=${{ 'locale-codes': this.localeCodes }}\n .formProps=${{\n 'item-categories': this.itemCategories,\n 'locale-codes': this.localeCodes,\n 'store': this.data?._links['fx:store'].href,\n }}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-cart-form-totals-control class=\"min-w-0\" infer=\"totals\">\n </foxy-internal-cart-form-totals-control>\n\n <foxy-internal-async-list-control\n infer=\"applied-coupon-codes\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:applied_coupon_codes'].href)}\n item=\"foxy-applied-coupon-code-card\"\n form=\"foxy-applied-coupon-code-form\"\n alert\n .related=${this.href ? [this.href] : []}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-summary-control infer=\"billing\">\n <foxy-internal-resource-picker-control\n placeholder=${this.__paymentMethodUriPlaceholder}\n layout=\"summary-item\"\n first=${ifDefined(this.__transactionsWithPaymentsUrl)}\n infer=\"payment-method-uri\"\n item=\"foxy-internal-cart-form-payment-method-card\"\n form=\"foxy-internal-cart-form-payment-method-form\"\n .getDisplayValueOptions=${this.__paymentMethodUriGetDisplayValueOptions}\n .formProps=${{\n 'default-payment-method': customer?._links['fx:default_payment_method'].href ?? '',\n 'payment-card-embed-url': this.__pickerPaymentCardEmbedUrl ?? '',\n }}\n .setValue=${this.__paymentMethodUriSetValue}\n .filters=${this.__paymentMethodUriFilters}\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-cart-form-address-summary-item\n countries=${ifDefined(this.countries ?? void 0)}\n regions=${ifDefined(this.regions ?? void 0)}\n infer=\"billing-address\"\n type=\"billing\"\n .customer=${customer}\n >\n </foxy-internal-cart-form-address-summary-item>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"shipping\">\n <foxy-internal-switch-control infer=\"use-customer-shipping-address\" invert>\n </foxy-internal-switch-control>\n\n <foxy-internal-cart-form-address-summary-item\n countries=${ifDefined(this.countries ?? void 0)}\n regions=${ifDefined(this.regions ?? void 0)}\n infer=\"shipping-address\"\n type=\"shipping\"\n .customer=${customer}\n >\n </foxy-internal-cart-form-address-summary-item>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"custom-fields\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:custom_fields'].href)}\n limit=\"5\"\n item=\"foxy-custom-field-card\"\n form=\"foxy-custom-field-form\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n infer=\"attributes\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:attributes'].href)}\n limit=\"5\"\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 class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.languages ?? void 0)}\n id=${this.__languagesLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__customerHref)}\n id=${this.__customerLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __paymentMethodUriPlaceholder() {\n const defaultPaymentMethod = this.__customer?._embedded['fx:default_payment_method'];\n const ccExpMonth = defaultPaymentMethod?.cc_exp_month ?? null;\n const ccExpYear = defaultPaymentMethod?.cc_exp_year ?? null;\n const ccLast4 = defaultPaymentMethod?.cc_number_masked?.replace(/x/g, '') ?? null;\n const ccType = defaultPaymentMethod?.cc_type ?? null;\n\n return this.t('billing.payment-method-uri.value', {\n cc_exp_month: ccExpMonth ?? '',\n cc_exp_year: ccExpYear ?? '',\n cc_last4: ccLast4 ?? '',\n cc_type: ccType ?? '',\n context: ccLast4 && ccExpMonth && ccExpYear && ccType ? '' : 'empty',\n });\n }\n\n private get __transactionsWithPaymentsUrl() {\n try {\n const url = new URL(this.__customer?._links['fx:transactions'].href ?? '');\n url.searchParams.set('zoom', 'payments');\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __pickerPaymentCardEmbedUrl() {\n try {\n const url = new URL(this.paymentCardEmbedUrl ?? '');\n const id = getResourceId(this.form.template_set_uri ?? '');\n if (id !== null) {\n url.searchParams.set('template_set_id', String(id));\n return url.toString();\n }\n } catch {\n // ignore\n }\n }\n\n private get __customerHref() {\n try {\n const url = new URL(this.form.customer_uri ?? '');\n url.searchParams.set(\n 'zoom',\n 'default_payment_method,default_billing_address,default_shipping_address'\n );\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __itemsHref() {\n try {\n const url = new URL(this.data?._links['fx:items'].href ?? '');\n url.searchParams.set('zoom', 'item_options');\n return url.toString();\n } catch {\n //\n }\n }\n\n private get __languageOptions() {\n type Loader = NucleonElement<Resource<Rels.Languages>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__languagesLoaderId}`);\n const values = Object.entries(loader?.data?.values ?? {});\n return values.map(([value, rawLabel]) => ({ rawLabel, value }));\n }\n\n private get __customer() {\n type Loader = NucleonElement<\n Resource<\n Rels.Customer,\n { zoom: ['default_payment_method', 'default_shipping_address', 'default_billing_address'] }\n >\n >;\n\n return this.renderRoot.querySelector<Loader>(`#${this.__customerLoaderId}`)?.data;\n }\n}\n"]}
1
+ {"version":3,"file":"CartForm.js","sourceRoot":"","sources":["../../../../src/elements/public/CartForm/CartForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { NucleonElement } from '../NucleonElement/NucleonElement';\nimport type { NucleonV8N } from '../NucleonElement/types';\nimport type { Resource } from '@foxy.io/sdk/core';\nimport type { Option } from '../QueryBuilder/types';\nimport type { Rels } from '@foxy.io/sdk/backend';\nimport type { Data } from './types';\n\nimport { BooleanSelector, getResourceId } from '@foxy.io/sdk/core';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { Type } from '../QueryBuilder/types';\nimport { html } from 'lit-html';\n\nconst NS = 'cart-form';\nconst Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));\n\n/**\n * Form element for creating or editing carts (`fx:cart`).\n *\n * @element foxy-cart-form\n * @since 1.21.0\n */\nexport class CartForm extends Base<Data> {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n paymentCardEmbedUrl: { attribute: 'payment-card-embed-url' },\n getCustomerPageUrl: { attribute: false },\n itemCategories: { attribute: 'item-categories' },\n templateSets: { attribute: 'template-sets' },\n localeCodes: { attribute: 'locale-codes' },\n languages: {},\n customers: {},\n countries: {},\n regions: {},\n coupons: {},\n };\n }\n\n static get v8n(): NucleonV8N<Data> {\n return [\n ({ billing_first_name: v }) => !v || v.length <= 50 || 'billing-first-name:v8n_too_long',\n ({ billing_last_name: v }) => !v || v.length <= 50 || 'billing-last-name:v8n_too_long',\n ({ billing_state: v }) => !v || v.length <= 50 || 'billing-state:v8n_too_long',\n ({ billing_city: v }) => !v || v.length <= 50 || 'billing-city:v8n_too_long',\n ({ billing_phone: v }) => !v || v.length <= 50 || 'billing-phone:v8n_too_long',\n ({ billing_company: v }) => !v || v.length <= 50 || 'billing-company:v8n_too_long',\n ({ billing_address2: v }) => !v || v.length <= 100 || 'billing-address-two:v8n_too_long',\n ({ billing_address1: v }) => !v || v.length <= 100 || 'billing-address-one:v8n_too_long',\n ({ billing_postal_code: v }) => !v || v.length <= 50 || 'billing-postal-code:v8n_too_long',\n ({ shipping_first_name: v }) => !v || v.length <= 50 || 'shipping-first-name:v8n_too_long',\n ({ shipping_last_name: v }) => !v || v.length <= 50 || 'shipping-last-name:v8n_too_long',\n ({ shipping_state: v }) => !v || v.length <= 50 || 'shipping-state:v8n_too_long',\n ({ shipping_city: v }) => !v || v.length <= 50 || 'shipping-city:v8n_too_long',\n ({ shipping_phone: v }) => !v || v.length <= 50 || 'shipping-phone:v8n_too_long',\n ({ shipping_company: v }) => !v || v.length <= 50 || 'shipping-company:v8n_too_long',\n ({ shipping_address2: v }) => !v || v.length <= 100 || 'shipping-address-two:v8n_too_long',\n ({ shipping_address1: v }) => !v || v.length <= 100 || 'shipping-address-one:v8n_too_long',\n ({ shipping_postal_code: v }) => !v || v.length <= 50 || 'shipping-postal-code:v8n_too_long',\n ];\n }\n\n /** Payment Card Embed configuration URL. The form will append template set parameter on its own. */\n paymentCardEmbedUrl: string | null = null;\n\n /** When configured, Customer section will include a link generated by this function. */\n getCustomerPageUrl: ((id: string) => string) | null = null;\n\n /** URL of the `fx:item_categories` collection for the store. */\n itemCategories: string | null = null;\n\n /** URL of the `fx:template_sets` collection for the store. */\n templateSets: string | null = null;\n\n /** URL of the `fx:locale_codes` property helper. */\n localeCodes: string | null = null;\n\n /** URL of the `fx:languages` property helper. */\n languages: string | null = null;\n\n /** URL of the `fx:customers` collection for the store. */\n customers: string | null = null;\n\n /** URL of the `fx:countries` property helper. */\n countries: string | null = null;\n\n /** URL of the `fx:regions` property helper. */\n regions: string | null = null;\n\n /** URL of the `fx:coupons` collection for the store. */\n coupons: string | null = null;\n\n private readonly __languagesLoaderId = 'languagesLoader';\n\n private readonly __customerLoaderId = 'customerLoader';\n\n private readonly __paymentMethodUriGetDisplayValueOptions = (\n payments: Resource<Rels.Payments>\n ) => {\n const payment = payments?._embedded?.['fx:payments']?.[0] ?? null;\n const ccExpMonth = payment?.cc_exp_month;\n const ccExpYear = payment?.cc_exp_year;\n const ccLast4 = payment?.cc_number_masked?.replace(/x/g, '');\n const ccType = payment?.cc_type;\n\n return {\n cc_exp_month: ccExpMonth ?? '',\n cc_exp_year: ccExpYear ?? '',\n cc_last4: ccLast4 ?? '',\n cc_type: ccType ?? '',\n context: ccLast4 && ccExpMonth && ccExpYear && ccType ? '' : 'empty',\n };\n };\n\n private readonly __paymentMethodUriSetValue = (transactionUrl: string) => {\n try {\n // TODO use links instead of constructing the URL manually\n const url = new URL(transactionUrl);\n url.search = '';\n url.pathname += '/payments';\n this.edit({ payment_method_uri: url.toString() });\n } catch (err) {\n this.edit({ payment_method_uri: '' });\n }\n };\n\n private readonly __paymentMethodUriFilters: Option[] = [\n {\n label: 'filter_type',\n type: Type.String,\n path: 'payments:type',\n list: [\n { label: 'filter_type_value_purchase_order', value: 'purchase_order' },\n { label: 'filter_type_value_amazon_mws', value: 'amazon_mws' },\n { label: 'filter_type_value_paypal_ec', value: 'paypal_ec' },\n { label: 'filter_type_value_paypal', value: 'paypal' },\n { label: 'filter_type_value_hosted', value: 'hosted' },\n { label: 'filter_type_value_ogone', value: 'ogone' },\n ],\n },\n {\n label: 'filter_cc_type',\n type: Type.String,\n path: 'payments:cc_type',\n list: [\n { label: 'filter_cc_type_value_mastercard', value: 'mastercard' },\n { label: 'filter_cc_type_value_discover', value: 'discover' },\n { label: 'filter_cc_type_value_unionpay', value: 'unionpay' },\n { label: 'filter_cc_type_value_maestro', value: 'maestro' },\n { label: 'filter_cc_type_value_diners', value: 'diners' },\n { label: 'filter_cc_type_value_visa', value: 'visa' },\n { label: 'filter_cc_type_value_amex', value: 'amex' },\n { label: 'filter_cc_type_value_jcb', value: 'jcb' },\n ],\n },\n {\n label: 'filter_cc_number_masked',\n type: Type.String,\n path: 'payments:cc_number_masked',\n },\n ];\n\n private readonly __customerUriSetValue = (newValue: string) => {\n this.edit({ customer_uri: newValue, customer_email: '' });\n };\n\n private readonly __customerUriOptions: Option[] = [\n { label: 'filter_email', path: 'email', type: Type.String },\n {\n label: 'filter_is_anonymous',\n path: 'is_anonymous',\n type: Type.String,\n list: [\n { value: 'false', label: 'filter_is_anonymous_value_false' },\n { value: 'true', label: 'filter_is_anonymous_value_true' },\n ],\n },\n ];\n\n get hiddenSelector(): BooleanSelector {\n const alwaysMatch = [super.hiddenSelector.toString()];\n\n if (this.form.customer_uri) {\n alwaysMatch.unshift('general:customer-email');\n } else {\n alwaysMatch.unshift('billing:payment-method-uri');\n }\n\n if (this.data) {\n if (!this.form.use_customer_shipping_address) {\n alwaysMatch.unshift('shipping:shipping-address');\n }\n } else {\n alwaysMatch.unshift(\n 'applied-coupon-codes',\n 'custom-fields',\n 'attributes',\n 'shipping',\n 'billing',\n 'totals',\n 'items'\n );\n }\n\n return new BooleanSelector(alwaysMatch.join(' ').trim());\n }\n\n renderHeaderActions(): TemplateResult {\n return html`\n <foxy-internal-cart-form-create-session-action infer=\"view-as-customer\">\n </foxy-internal-cart-form-create-session-action>\n `;\n }\n\n renderBody(): TemplateResult {\n const links = this.data?._links;\n const customer = this.__customer;\n\n return html`\n ${this.renderHeader()}\n\n <foxy-internal-summary-control infer=\"general\">\n <foxy-internal-resource-picker-control\n layout=\"summary-item\"\n first=${ifDefined(this.templateSets ?? void 0)}\n infer=\"template-set-uri\"\n item=\"foxy-template-set-card\"\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-select-control\n layout=\"summary-item\"\n infer=\"language\"\n .options=${this.__languageOptions}\n >\n </foxy-internal-select-control>\n\n <foxy-internal-text-control layout=\"summary-item\" infer=\"customer-email\">\n </foxy-internal-text-control>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"items\"\n class=\"min-w-0\"\n first=${ifDefined(this.__itemsHref)}\n alert\n wide\n item=\"foxy-item-card\"\n form=\"foxy-item-form\"\n .related=${this.href ? [this.href] : []}\n .itemProps=${{ 'locale-codes': this.localeCodes }}\n .formProps=${{\n 'item-categories': this.itemCategories,\n 'locale-codes': this.localeCodes,\n 'store': this.data?._links['fx:store'].href,\n }}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-cart-form-totals-control class=\"min-w-0\" infer=\"totals\">\n </foxy-internal-cart-form-totals-control>\n\n <foxy-internal-async-list-control\n infer=\"applied-coupon-codes\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:applied_coupon_codes'].href)}\n item=\"foxy-applied-coupon-code-card\"\n form=\"foxy-applied-coupon-code-form\"\n alert\n .related=${this.href ? [this.href] : []}\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-resource-picker-control\n first=${ifDefined(this.customers ?? void 0)}\n infer=\"customer-uri\"\n item=\"foxy-customer-card\"\n show-copy-id-button\n .getItemUrl=${this.getCustomerPageUrl}\n .setValue=${this.__customerUriSetValue}\n .filters=${this.__customerUriOptions}\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-summary-control infer=\"billing\">\n <foxy-internal-resource-picker-control\n placeholder=${this.__paymentMethodUriPlaceholder}\n layout=\"summary-item\"\n first=${ifDefined(this.__transactionsWithPaymentsUrl)}\n infer=\"payment-method-uri\"\n item=\"foxy-internal-cart-form-payment-method-card\"\n form=\"foxy-internal-cart-form-payment-method-form\"\n .getDisplayValueOptions=${this.__paymentMethodUriGetDisplayValueOptions}\n .formProps=${{\n 'default-payment-method': customer?._links['fx:default_payment_method'].href ?? '',\n 'payment-card-embed-url': this.__pickerPaymentCardEmbedUrl ?? '',\n }}\n .setValue=${this.__paymentMethodUriSetValue}\n .filters=${this.__paymentMethodUriFilters}\n >\n </foxy-internal-resource-picker-control>\n\n <foxy-internal-cart-form-address-summary-item\n countries=${ifDefined(this.countries ?? void 0)}\n regions=${ifDefined(this.regions ?? void 0)}\n infer=\"billing-address\"\n type=\"billing\"\n .customer=${customer}\n >\n </foxy-internal-cart-form-address-summary-item>\n </foxy-internal-summary-control>\n\n <foxy-internal-summary-control infer=\"shipping\">\n <foxy-internal-switch-control infer=\"use-customer-shipping-address\" invert>\n </foxy-internal-switch-control>\n\n <foxy-internal-cart-form-address-summary-item\n countries=${ifDefined(this.countries ?? void 0)}\n regions=${ifDefined(this.regions ?? void 0)}\n infer=\"shipping-address\"\n type=\"shipping\"\n .customer=${customer}\n >\n </foxy-internal-cart-form-address-summary-item>\n </foxy-internal-summary-control>\n\n <foxy-internal-async-list-control\n infer=\"custom-fields\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:custom_fields'].href)}\n limit=\"5\"\n item=\"foxy-custom-field-card\"\n form=\"foxy-custom-field-form\"\n alert\n >\n </foxy-internal-async-list-control>\n\n <foxy-internal-async-list-control\n infer=\"attributes\"\n class=\"min-w-0\"\n first=${ifDefined(links?.['fx:attributes'].href)}\n limit=\"5\"\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 class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.languages ?? void 0)}\n id=${this.__languagesLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n\n <foxy-nucleon\n class=\"hidden\"\n infer=\"\"\n href=${ifDefined(this.__customerHref)}\n id=${this.__customerLoaderId}\n @update=${() => this.requestUpdate()}\n >\n </foxy-nucleon>\n `;\n }\n\n private get __paymentMethodUriPlaceholder() {\n const defaultPaymentMethod = this.__customer?._embedded['fx:default_payment_method'];\n const ccExpMonth = defaultPaymentMethod?.cc_exp_month ?? null;\n const ccExpYear = defaultPaymentMethod?.cc_exp_year ?? null;\n const ccLast4 = defaultPaymentMethod?.cc_number_masked?.replace(/x/g, '') ?? null;\n const ccType = defaultPaymentMethod?.cc_type ?? null;\n\n return this.t('billing.payment-method-uri.value', {\n cc_exp_month: ccExpMonth ?? '',\n cc_exp_year: ccExpYear ?? '',\n cc_last4: ccLast4 ?? '',\n cc_type: ccType ?? '',\n context: ccLast4 && ccExpMonth && ccExpYear && ccType ? '' : 'empty',\n });\n }\n\n private get __transactionsWithPaymentsUrl() {\n try {\n const url = new URL(this.__customer?._links['fx:transactions'].href ?? '');\n url.searchParams.set('zoom', 'payments');\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __pickerPaymentCardEmbedUrl() {\n try {\n const url = new URL(this.paymentCardEmbedUrl ?? '');\n const id = getResourceId(this.form.template_set_uri ?? '');\n if (id !== null) {\n url.searchParams.set('template_set_id', String(id));\n return url.toString();\n }\n } catch {\n // ignore\n }\n }\n\n private get __customerHref() {\n try {\n const url = new URL(this.form.customer_uri ?? '');\n url.searchParams.set(\n 'zoom',\n 'default_payment_method,default_billing_address,default_shipping_address'\n );\n return url.toString();\n } catch {\n // ignore\n }\n }\n\n private get __itemsHref() {\n try {\n const url = new URL(this.data?._links['fx:items'].href ?? '');\n url.searchParams.set('zoom', 'item_options');\n return url.toString();\n } catch {\n //\n }\n }\n\n private get __languageOptions() {\n type Loader = NucleonElement<Resource<Rels.Languages>>;\n const loader = this.renderRoot.querySelector<Loader>(`#${this.__languagesLoaderId}`);\n const values = Object.entries(loader?.data?.values ?? {});\n return values.map(([value, rawLabel]) => ({ rawLabel, value }));\n }\n\n private get __customer() {\n type Loader = NucleonElement<\n Resource<\n Rels.Customer,\n { zoom: ['default_payment_method', 'default_shipping_address', 'default_billing_address'] }\n >\n >;\n\n return this.renderRoot.querySelector<Loader>(`#${this.__customerLoaderId}`)?.data;\n }\n}\n"]}
@@ -1,4 +1,5 @@
1
- import { CSSResult, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';
1
+ import type { CSSResult, PropertyDeclarations, TemplateResult } from 'lit-element';
2
+ import { LitElement } from 'lit-element';
2
3
  declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/inferrable").InferrableMixinHost> & {
3
4
  inferredProperties: string[];
4
5
  } & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
@@ -14,11 +15,16 @@ declare const Base: typeof LitElement & import("lit-element").Constructor<import
14
15
  export declare class CopyToClipboard extends Base {
15
16
  static get properties(): PropertyDeclarations;
16
17
  static get styles(): CSSResult;
18
+ /** Icon or text UI. Icon UI by default. */
19
+ layout: 'text' | 'icon' | null;
20
+ /** VaadinButton theme for text layout. */
21
+ theme: string | null;
17
22
  /** Default icon. */
18
23
  icon: string | null;
19
24
  /** Text to copy. */
20
25
  text: string | null;
21
26
  private __state;
22
27
  render(): TemplateResult;
28
+ private __copy;
23
29
  }
24
30
  export {};
@@ -1,8 +1,10 @@
1
- import { LitElement, css, html, } from 'lit-element';
1
+ import { LitElement, css, html } from 'lit-element';
2
+ import { TranslatableMixin } from "../../../mixins/translatable.js";
2
3
  import { ConfigurableMixin } from "../../../mixins/configurable.js";
3
4
  import { InferrableMixin } from "../../../mixins/inferrable.js";
4
- import { TranslatableMixin } from "../../../mixins/translatable.js";
5
- const Base = ConfigurableMixin(TranslatableMixin(InferrableMixin(LitElement), 'copy-to-clipboard'));
5
+ import { ifDefined } from 'lit-html/directives/if-defined';
6
+ const NS = 'copy-to-clipboard';
7
+ const Base = ConfigurableMixin(TranslatableMixin(InferrableMixin(LitElement), NS));
6
8
  /**
7
9
  * A simple "click to copy" button that takes the size of the font
8
10
  * your text is written in (considering that the font styles are applied to container).
@@ -13,6 +15,10 @@ const Base = ConfigurableMixin(TranslatableMixin(InferrableMixin(LitElement), 'c
13
15
  export class CopyToClipboard extends Base {
14
16
  constructor() {
15
17
  super(...arguments);
18
+ /** Icon or text UI. Icon UI by default. */
19
+ this.layout = null;
20
+ /** VaadinButton theme for text layout. */
21
+ this.theme = null;
16
22
  /** Default icon. */
17
23
  this.icon = null;
18
24
  /** Text to copy. */
@@ -22,13 +28,15 @@ export class CopyToClipboard extends Base {
22
28
  static get properties() {
23
29
  return {
24
30
  ...super.properties,
31
+ layout: {},
32
+ theme: {},
25
33
  text: { type: String },
26
34
  icon: { type: String },
27
35
  __state: { attribute: false },
28
36
  };
29
37
  }
30
38
  static get styles() {
31
- return css `button{
39
+ return css `.icon-button{
32
40
  position:relative;
33
41
  appearance:none;
34
42
  background:none;
@@ -44,7 +52,7 @@ export class CopyToClipboard extends Base {
44
52
  align-items:center;
45
53
  }
46
54
 
47
- button::before{
55
+ .icon-button::before{
48
56
  position:absolute;
49
57
  inset:0;
50
58
  content:' ';
@@ -55,22 +63,22 @@ button::before{
55
63
  border-radius:var(--lumo-border-radius-s);
56
64
  }
57
65
 
58
- button:focus{
66
+ .icon-button:focus{
59
67
  outline:none;
60
68
  box-shadow:0 0 0 2px currentColor;
61
69
  }
62
70
 
63
- button:disabled{
71
+ .icon-button:disabled{
64
72
  opacity:0.5;
65
73
  cursor:default;
66
74
  }
67
75
 
68
76
  @media (hover: hover){
69
- button:not(:disabled):hover{
77
+ .icon-button:not(:disabled):hover{
70
78
  cursor:pointer;
71
79
  }
72
80
 
73
- button:not(:disabled):hover::before{
81
+ .icon-button:not(:disabled):hover::before{
74
82
  opacity:0.16;
75
83
  }
76
84
  }
@@ -82,7 +90,8 @@ iron-icon{
82
90
  `;
83
91
  }
84
92
  render() {
85
- var _a;
93
+ var _a, _b;
94
+ const layout = this.layout === 'text' ? 'text' : 'icon';
86
95
  let label = '';
87
96
  let icon = '';
88
97
  if (this.__state === 'busy') {
@@ -102,27 +111,48 @@ iron-icon{
102
111
  icon = (_a = this.icon) !== null && _a !== void 0 ? _a : 'icons:content-copy';
103
112
  }
104
113
  return html `
105
- <button
106
- id="trigger"
107
- ?disabled=${this.disabled}
108
- @click=${() => {
109
- var _a;
110
- if (this.__state === 'idle') {
111
- this.__state = 'busy';
112
- navigator.clipboard
113
- .writeText((_a = this.text) !== null && _a !== void 0 ? _a : '')
114
- .then(() => (this.__state = 'done'))
115
- .catch(() => (this.__state = 'fail'))
116
- .then(() => setTimeout(() => (this.__state = 'idle'), 2000));
117
- }
118
- }}
119
- >
120
- <iron-icon icon=${icon}></iron-icon>
121
- </button>
122
- <vcf-tooltip for="trigger" position="bottom">
123
- <span class="text-s"><foxy-i18n infer="" class="text-s" key=${label}></foxy-i18n></span>
124
- </vcf-tooltip>
114
+ ${layout === 'icon'
115
+ ? html `
116
+ <button
117
+ id="trigger"
118
+ class="icon-button"
119
+ ?disabled=${this.disabled}
120
+ @click=${this.__copy}
121
+ >
122
+ <iron-icon icon=${icon}></iron-icon>
123
+ </button>
124
+ <vcf-tooltip
125
+ position="bottom"
126
+ style="--lumo-base-color: black"
127
+ theme="light"
128
+ for="trigger"
129
+ >
130
+ <span class="text-s" style="color: white">
131
+ <foxy-i18n infer="" key=${label}></foxy-i18n>
132
+ </span>
133
+ </vcf-tooltip>
134
+ `
135
+ : html `
136
+ <vaadin-button
137
+ theme=${ifDefined((_b = this.theme) !== null && _b !== void 0 ? _b : void 0)}
138
+ ?disabled=${this.disabled}
139
+ @click=${this.__copy}
140
+ >
141
+ <foxy-i18n infer="" key=${label}></foxy-i18n>
142
+ </vaadin-button>
143
+ `}
125
144
  `;
126
145
  }
146
+ __copy() {
147
+ var _a;
148
+ if (this.__state === 'idle') {
149
+ this.__state = 'busy';
150
+ navigator.clipboard
151
+ .writeText((_a = this.text) !== null && _a !== void 0 ? _a : '')
152
+ .then(() => (this.__state = 'done'))
153
+ .catch(() => (this.__state = 'fail'))
154
+ .then(() => setTimeout(() => (this.__state = 'idle'), 2000));
155
+ }
156
+ }
127
157
  }
128
158
  //# sourceMappingURL=CopyToClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CopyToClipboard.js","sourceRoot":"","sources":["../../../../src/elements/public/CopyToClipboard/CopyToClipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,UAAU,EAGV,GAAG,EACH,IAAI,GACL,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AAEjE,MAAM,IAAI,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC,CAAC,CAAC;AAEpG;;;;;;GAMG;AACH,MAAM,OAAO,eAAgB,SAAQ,IAAI;IAAzC;;QAkEE,oBAAoB;QACpB,SAAI,GAAkB,IAAI,CAAC;QAE3B,oBAAoB;QACpB,SAAI,GAAkB,IAAI,CAAC;QAEnB,YAAO,GAAsC,MAAM,CAAC;IA2C9D,CAAC;IAlHC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;YACtB,OAAO,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAoDT,CAAC;IACJ,CAAC;IAUD,MAAM;;QACJ,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YAC3B,KAAK,GAAG,SAAS,CAAC;YAClB,IAAI,GAAG,uBAAuB,CAAC;SAChC;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YAClC,KAAK,GAAG,gBAAgB,CAAC;YACzB,IAAI,GAAG,qBAAqB,CAAC;SAC9B;aAAM,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;YAClC,KAAK,GAAG,MAAM,CAAC;YACf,IAAI,GAAG,YAAY,CAAC;SACrB;aAAM;YACL,KAAK,GAAG,eAAe,CAAC;YACxB,IAAI,SAAG,IAAI,CAAC,IAAI,mCAAI,oBAAoB,CAAC;SAC1C;QAED,OAAO,IAAI,CAAA;;;oBAGK,IAAI,CAAC,QAAQ;iBAChB,GAAG,EAAE;;YACZ,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;gBAC3B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;gBAEtB,SAAS,CAAC,SAAS;qBAChB,SAAS,OAAC,IAAI,CAAC,IAAI,mCAAI,EAAE,CAAC;qBAC1B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;qBACnC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC;qBACpC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;aAChE;QACH,CAAC;;0BAEiB,IAAI;;;sEAGwC,KAAK;;KAEtE,CAAC;IACJ,CAAC;CACF","sourcesContent":["import {\n CSSResult,\n LitElement,\n PropertyDeclarations,\n TemplateResult,\n css,\n html,\n} from 'lit-element';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\n\nconst Base = ConfigurableMixin(TranslatableMixin(InferrableMixin(LitElement), 'copy-to-clipboard'));\n\n/**\n * A simple \"click to copy\" button that takes the size of the font\n * your text is written in (considering that the font styles are applied to container).\n *\n * @element foxy-copy-to-clipboard\n * @since 1.17.0\n */\nexport class CopyToClipboard extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n text: { type: String },\n icon: { type: String },\n __state: { attribute: false },\n };\n }\n\n static get styles(): CSSResult {\n return css`\n button {\n position: relative;\n appearance: none;\n background: none;\n border: none;\n border-radius: var(--lumo-border-radius-s);\n color: inherit;\n font-size: inherit;\n padding: 0;\n width: 1.5em;\n height: 1.5em;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n button::before {\n position: absolute;\n inset: 0;\n content: ' ';\n display: block;\n background: currentColor;\n opacity: 0.08;\n transition: opacity 0.15s ease;\n border-radius: var(--lumo-border-radius-s);\n }\n\n button:focus {\n outline: none;\n box-shadow: 0 0 0 2px currentColor;\n }\n\n button:disabled {\n opacity: 0.5;\n cursor: default;\n }\n\n @media (hover: hover) {\n button:not(:disabled):hover {\n cursor: pointer;\n }\n\n button:not(:disabled):hover::before {\n opacity: 0.16;\n }\n }\n\n iron-icon {\n --iron-icon-height: 1em;\n --iron-icon-width: 1em;\n }\n `;\n }\n\n /** Default icon. */\n icon: string | null = null;\n\n /** Text to copy. */\n text: string | null = null;\n\n private __state: 'idle' | 'busy' | 'fail' | 'done' = 'idle';\n\n render(): TemplateResult {\n let label = '';\n let icon = '';\n\n if (this.__state === 'busy') {\n label = 'copying';\n icon = 'icons:hourglass-empty';\n } else if (this.__state === 'fail') {\n label = 'failed_to_copy';\n icon = 'icons:error-outline';\n } else if (this.__state === 'done') {\n label = 'done';\n icon = 'icons:done';\n } else {\n label = 'click_to_copy';\n icon = this.icon ?? 'icons:content-copy';\n }\n\n return html`\n <button\n id=\"trigger\"\n ?disabled=${this.disabled}\n @click=${() => {\n if (this.__state === 'idle') {\n this.__state = 'busy';\n\n navigator.clipboard\n .writeText(this.text ?? '')\n .then(() => (this.__state = 'done'))\n .catch(() => (this.__state = 'fail'))\n .then(() => setTimeout(() => (this.__state = 'idle'), 2000));\n }\n }}\n >\n <iron-icon icon=${icon}></iron-icon>\n </button>\n <vcf-tooltip for=\"trigger\" position=\"bottom\">\n <span class=\"text-s\"><foxy-i18n infer=\"\" class=\"text-s\" key=${label}></foxy-i18n></span>\n </vcf-tooltip>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"CopyToClipboard.js","sourceRoot":"","sources":["../../../../src/elements/public/CopyToClipboard/CopyToClipboard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CSSResult, PropertyDeclarations, TemplateResult } from 'lit-element';\n\nimport { LitElement, css, html } from 'lit-element';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { InferrableMixin } from '../../../mixins/inferrable';\nimport { ifDefined } from 'lit-html/directives/if-defined';\n\nconst NS = 'copy-to-clipboard';\nconst Base = ConfigurableMixin(TranslatableMixin(InferrableMixin(LitElement), NS));\n\n/**\n * A simple \"click to copy\" button that takes the size of the font\n * your text is written in (considering that the font styles are applied to container).\n *\n * @element foxy-copy-to-clipboard\n * @since 1.17.0\n */\nexport class CopyToClipboard extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n layout: {},\n theme: {},\n text: { type: String },\n icon: { type: String },\n __state: { attribute: false },\n };\n }\n\n static get styles(): CSSResult {\n return css`\n .icon-button {\n position: relative;\n appearance: none;\n background: none;\n border: none;\n border-radius: var(--lumo-border-radius-s);\n color: inherit;\n font-size: inherit;\n padding: 0;\n width: 1.5em;\n height: 1.5em;\n display: flex;\n justify-content: center;\n align-items: center;\n }\n\n .icon-button::before {\n position: absolute;\n inset: 0;\n content: ' ';\n display: block;\n background: currentColor;\n opacity: 0.08;\n transition: opacity 0.15s ease;\n border-radius: var(--lumo-border-radius-s);\n }\n\n .icon-button:focus {\n outline: none;\n box-shadow: 0 0 0 2px currentColor;\n }\n\n .icon-button:disabled {\n opacity: 0.5;\n cursor: default;\n }\n\n @media (hover: hover) {\n .icon-button:not(:disabled):hover {\n cursor: pointer;\n }\n\n .icon-button:not(:disabled):hover::before {\n opacity: 0.16;\n }\n }\n\n iron-icon {\n --iron-icon-height: 1em;\n --iron-icon-width: 1em;\n }\n `;\n }\n\n /** Icon or text UI. Icon UI by default. */\n layout: 'text' | 'icon' | null = null;\n\n /** VaadinButton theme for text layout. */\n theme: string | null = null;\n\n /** Default icon. */\n icon: string | null = null;\n\n /** Text to copy. */\n text: string | null = null;\n\n private __state: 'idle' | 'busy' | 'fail' | 'done' = 'idle';\n\n render(): TemplateResult {\n const layout = this.layout === 'text' ? 'text' : 'icon';\n let label = '';\n let icon = '';\n\n if (this.__state === 'busy') {\n label = 'copying';\n icon = 'icons:hourglass-empty';\n } else if (this.__state === 'fail') {\n label = 'failed_to_copy';\n icon = 'icons:error-outline';\n } else if (this.__state === 'done') {\n label = 'done';\n icon = 'icons:done';\n } else {\n label = 'click_to_copy';\n icon = this.icon ?? 'icons:content-copy';\n }\n\n return html`\n ${layout === 'icon'\n ? html`\n <button\n id=\"trigger\"\n class=\"icon-button\"\n ?disabled=${this.disabled}\n @click=${this.__copy}\n >\n <iron-icon icon=${icon}></iron-icon>\n </button>\n <vcf-tooltip\n position=\"bottom\"\n style=\"--lumo-base-color: black\"\n theme=\"light\"\n for=\"trigger\"\n >\n <span class=\"text-s\" style=\"color: white\">\n <foxy-i18n infer=\"\" key=${label}></foxy-i18n>\n </span>\n </vcf-tooltip>\n `\n : html`\n <vaadin-button\n theme=${ifDefined(this.theme ?? void 0)}\n ?disabled=${this.disabled}\n @click=${this.__copy}\n >\n <foxy-i18n infer=\"\" key=${label}></foxy-i18n>\n </vaadin-button>\n `}\n `;\n }\n\n private __copy() {\n if (this.__state === 'idle') {\n this.__state = 'busy';\n\n navigator.clipboard\n .writeText(this.text ?? '')\n .then(() => (this.__state = 'done'))\n .catch(() => (this.__state = 'fail'))\n .then(() => setTimeout(() => (this.__state = 'idle'), 2000));\n }\n }\n}\n"]}
@@ -16,13 +16,12 @@ export declare class CouponForm extends Base<Data> {
16
16
  static get properties(): PropertyDeclarations;
17
17
  static get v8n(): NucleonV8N<Data>;
18
18
  getTransactionPageHref: TransactionPageHrefGetter | null;
19
+ private readonly __customerAttributeRestrictionsGetValue;
20
+ private readonly __customerAttributeRestrictionsSetValue;
19
21
  private readonly __customerSubscriptionRestrictionsGetValue;
20
22
  private readonly __customerSubscriptionRestrictionsSetValue;
21
23
  private readonly __productCodeRestrictionsGetValue;
22
24
  private readonly __productCodeRestrictionsSetValue;
23
- private readonly __itemOptionRestrictionsOperators;
24
- private readonly __itemOptionRestrictionsGetValue;
25
- private readonly __itemOptionRestrictionsSetValue;
26
25
  private readonly __storeLoaderId;
27
26
  private readonly __codesFilters;
28
27
  private __couponCodesActions;
@@ -1,10 +1,12 @@
1
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
2
  import { ResponsiveMixin } from "../../../mixins/responsive.js";
3
3
  import { BooleanSelector } from '@foxy.io/sdk/core';
4
- import { Operator, Type } from "../QueryBuilder/types.js";
5
4
  import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
6
5
  import { ifDefined } from 'lit-html/directives/if-defined';
6
+ import { Type } from "../QueryBuilder/types.js";
7
7
  import { html } from 'lit-html';
8
+ import { parse } from "../QueryBuilder/utils/parse.js";
9
+ import { stringify } from "../QueryBuilder/utils/stringify.js";
8
10
  const NS = 'coupon-form';
9
11
  const Base = ResponsiveMixin(TranslatableMixin(InternalForm, NS));
10
12
  /**
@@ -17,6 +19,50 @@ export class CouponForm extends Base {
17
19
  constructor() {
18
20
  super(...arguments);
19
21
  this.getTransactionPageHref = null;
22
+ this.__customerAttributeRestrictionsGetValue = () => {
23
+ var _a;
24
+ const params = new URLSearchParams(stringify(parse((_a = this.form.customer_attribute_restrictions) !== null && _a !== void 0 ? _a : '')
25
+ .filter(value => Array.isArray(value) || typeof value.name === 'string')
26
+ .map(value => {
27
+ if (Array.isArray(value)) {
28
+ return value
29
+ .filter(({ name }) => typeof name === 'string')
30
+ .map(({ name, operator, value }) => {
31
+ const output = { path: name, operator, value };
32
+ return output;
33
+ });
34
+ }
35
+ const output = {
36
+ operator: value.operator,
37
+ value: value.value,
38
+ path: value.name,
39
+ };
40
+ return output;
41
+ })));
42
+ params.delete('zoom');
43
+ return params.toString();
44
+ };
45
+ this.__customerAttributeRestrictionsSetValue = (newValue) => {
46
+ const params = new URLSearchParams(stringify(parse(newValue).map(value => {
47
+ if (Array.isArray(value)) {
48
+ return value.map(({ path, operator, value }) => {
49
+ const output = { name: path, path: 'attributes', operator, value };
50
+ return output;
51
+ });
52
+ }
53
+ else {
54
+ const output = {
55
+ operator: value.operator,
56
+ value: value.value,
57
+ path: 'attributes',
58
+ name: value.path,
59
+ };
60
+ return output;
61
+ }
62
+ })));
63
+ params.delete('zoom');
64
+ this.edit({ customer_attribute_restrictions: params.toString() });
65
+ };
20
66
  this.__customerSubscriptionRestrictionsGetValue = () => {
21
67
  var _a;
22
68
  const items = (_a = this.form.customer_subscription_restrictions) === null || _a === void 0 ? void 0 : _a.split(',').map(value => value.trim()).filter((value, index, values) => !!value && values.indexOf(value) === index).map(value => ({ value }));
@@ -51,22 +97,6 @@ export class CouponForm extends Base {
51
97
  .join(','),
52
98
  });
53
99
  };
54
- this.__itemOptionRestrictionsOperators = [Operator.In];
55
- this.__itemOptionRestrictionsGetValue = () => {
56
- var _a;
57
- const query = new URLSearchParams();
58
- const rules = (_a = this.form.item_option_restrictions) !== null && _a !== void 0 ? _a : {};
59
- for (const key in rules) {
60
- query.set(`${key}:in`, rules[key].join(','));
61
- }
62
- return query.toString();
63
- };
64
- this.__itemOptionRestrictionsSetValue = (newValue) => {
65
- const rules = Object.fromEntries(Array.from(new URLSearchParams(newValue).entries()).map(([key, value]) => {
66
- return [key.replace(':in', ''), value.split(',').filter(v => !!v.trim())];
67
- }));
68
- this.edit({ item_option_restrictions: rules });
69
- };
70
100
  this.__storeLoaderId = 'storeLoader';
71
101
  this.__codesFilters = [
72
102
  { label: 'code', path: 'code', type: Type.String },
@@ -212,19 +242,15 @@ export class CouponForm extends Base {
212
242
  >
213
243
  </foxy-internal-editable-list-control>
214
244
 
215
- <foxy-internal-query-builder-control
216
- infer="item-option-restrictions"
217
- disable-or
218
- .operators=${this.__itemOptionRestrictionsOperators}
219
- .getValue=${this.__itemOptionRestrictionsGetValue}
220
- .setValue=${this.__itemOptionRestrictionsSetValue}
221
- >
222
- </foxy-internal-query-builder-control>
245
+ <foxy-internal-array-map-control infer="item-option-restrictions">
246
+ </foxy-internal-array-map-control>
223
247
 
224
248
  <foxy-internal-summary-control infer="customer-restrictions">
225
249
  <foxy-internal-query-builder-control
226
250
  layout="summary-item"
227
251
  infer="customer-attribute-restrictions"
252
+ .getValue=${this.__customerAttributeRestrictionsGetValue}
253
+ .setValue=${this.__customerAttributeRestrictionsSetValue}
228
254
  >
229
255
  </foxy-internal-query-builder-control>
230
256