@foxy.io/elements 1.43.0-beta.1 → 1.43.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 (366) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +5 -5
  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-api.js +1 -1
  30. package/dist/cdn/foxy-customer-card.js +1 -1
  31. package/dist/cdn/foxy-customer-form.js +1 -1
  32. package/dist/cdn/foxy-customer-portal-settings-form.js +1 -1
  33. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  34. package/dist/cdn/foxy-customer-portal.js +13 -13
  35. package/dist/cdn/foxy-customer.js +5 -5
  36. package/dist/cdn/foxy-customers-table.js +1 -1
  37. package/dist/cdn/foxy-discount-builder.js +1 -1
  38. package/dist/cdn/foxy-discount-card.js +1 -1
  39. package/dist/cdn/foxy-discount-detail-card.js +1 -1
  40. package/dist/cdn/foxy-donation.js +1 -1
  41. package/dist/cdn/foxy-downloadable-card.js +1 -1
  42. package/dist/cdn/foxy-downloadable-form.js +2 -2
  43. package/dist/cdn/foxy-email-template-card.js +1 -1
  44. package/dist/cdn/foxy-email-template-form.js +1 -1
  45. package/dist/cdn/foxy-error-entry-card.js +1 -1
  46. package/dist/cdn/foxy-experimental-add-to-cart-builder.js +1 -1
  47. package/dist/cdn/foxy-filter-attribute-card.js +1 -1
  48. package/dist/cdn/foxy-filter-attribute-form.js +1 -1
  49. package/dist/cdn/foxy-form-dialog.js +1 -1
  50. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  51. package/dist/cdn/foxy-gift-card-card.js +1 -1
  52. package/dist/cdn/foxy-gift-card-code-card.js +1 -1
  53. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  54. package/dist/cdn/foxy-gift-card-code-log-card.js +1 -1
  55. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  56. package/dist/cdn/foxy-gift-card-form.js +1 -1
  57. package/dist/cdn/foxy-i18n-editor.js +3 -3
  58. package/dist/cdn/foxy-i18n.js +1 -1
  59. package/dist/cdn/foxy-integration-card.js +1 -1
  60. package/dist/cdn/foxy-integration-form.js +1 -1
  61. package/dist/cdn/foxy-item-card.js +1 -1
  62. package/dist/cdn/foxy-item-category-card.js +1 -1
  63. package/dist/cdn/foxy-item-category-form.js +1 -1
  64. package/dist/cdn/foxy-item-form.js +1 -1
  65. package/dist/cdn/foxy-item-option-card.js +1 -1
  66. package/dist/cdn/foxy-item-option-form.js +1 -1
  67. package/dist/cdn/foxy-items-form.js +1 -1
  68. package/dist/cdn/foxy-native-integration-card.js +1 -1
  69. package/dist/cdn/foxy-native-integration-form.js +1 -1
  70. package/dist/cdn/foxy-nucleon-element.js +1 -1
  71. package/dist/cdn/foxy-pagination.js +1 -1
  72. package/dist/cdn/foxy-passkey-card.js +1 -1
  73. package/dist/cdn/foxy-passkey-form.js +1 -1
  74. package/dist/cdn/foxy-payment-card-embed.js +1 -1
  75. package/dist/cdn/foxy-payment-card.js +1 -1
  76. package/dist/cdn/foxy-payment-method-card.js +1 -1
  77. package/dist/cdn/foxy-payments-api-fraud-protection-card.js +1 -1
  78. package/dist/cdn/foxy-payments-api-fraud-protection-form.js +1 -1
  79. package/dist/cdn/foxy-payments-api-payment-method-card.js +1 -1
  80. package/dist/cdn/foxy-payments-api-payment-method-form.js +1 -1
  81. package/dist/cdn/foxy-payments-api-payment-preset-card.js +1 -1
  82. package/dist/cdn/foxy-payments-api-payment-preset-form.js +1 -1
  83. package/dist/cdn/foxy-payments-api.js +1 -1
  84. package/dist/cdn/foxy-query-builder.js +1 -1
  85. package/dist/cdn/foxy-report-form.js +2 -2
  86. package/dist/cdn/foxy-reports-table.js +6 -6
  87. package/dist/cdn/foxy-shipment-card.js +1 -1
  88. package/dist/cdn/foxy-shipping-container-card.js +1 -1
  89. package/dist/cdn/foxy-shipping-drop-type-card.js +1 -1
  90. package/dist/cdn/foxy-shipping-method-card.js +1 -1
  91. package/dist/cdn/foxy-shipping-service-card.js +1 -1
  92. package/dist/cdn/foxy-sign-in-form.js +1 -1
  93. package/dist/cdn/foxy-spinner.js +2 -2
  94. package/dist/cdn/foxy-store-card.js +1 -1
  95. package/dist/cdn/foxy-store-form.js +1 -1
  96. package/dist/cdn/foxy-store-shipping-method-form.js +1 -1
  97. package/dist/cdn/foxy-subscription-card.js +1 -1
  98. package/dist/cdn/foxy-subscription-form.js +1 -1
  99. package/dist/cdn/foxy-subscription-settings-form.js +1 -1
  100. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  101. package/dist/cdn/foxy-table.js +1 -1
  102. package/dist/cdn/foxy-tax-card.js +1 -1
  103. package/dist/cdn/foxy-tax-form.js +1 -1
  104. package/dist/cdn/foxy-template-config-form.js +1 -1
  105. package/dist/cdn/foxy-template-form.js +1 -1
  106. package/dist/cdn/foxy-template-set-card.js +1 -1
  107. package/dist/cdn/foxy-template-set-form.js +1 -1
  108. package/dist/cdn/foxy-transaction-card.js +1 -1
  109. package/dist/cdn/foxy-transaction.js +1 -1
  110. package/dist/cdn/foxy-transactions-table.js +7 -7
  111. package/dist/cdn/foxy-update-payment-method-form.js +1 -1
  112. package/dist/cdn/foxy-user-card.js +1 -1
  113. package/dist/cdn/foxy-user-form.js +1 -1
  114. package/dist/cdn/foxy-user-invitation-card.js +1 -1
  115. package/dist/cdn/foxy-user-invitation-form.js +1 -1
  116. package/dist/cdn/foxy-users-table.js +1 -1
  117. package/dist/cdn/foxy-webhook-card.js +1 -1
  118. package/dist/cdn/foxy-webhook-form.js +1 -1
  119. package/dist/cdn/foxy-webhook-log-card.js +1 -1
  120. package/dist/cdn/foxy-webhook-status-card.js +1 -1
  121. package/dist/cdn/{shared-41208627.js → shared-02acac7f.js} +1 -1
  122. package/dist/cdn/{shared-ad60e8d1.js → shared-03b67a3d.js} +2 -2
  123. package/dist/cdn/{shared-cc4b3b42.js → shared-049295b7.js} +1 -1
  124. package/dist/cdn/{shared-2828fcbf.js → shared-0584a904.js} +1 -1
  125. package/dist/cdn/{shared-9342ca50.js → shared-0993c2f5.js} +1 -1
  126. package/dist/cdn/{shared-2aa23b5f.js → shared-0ea750af.js} +1 -1
  127. package/dist/cdn/shared-109cfbba.js +1 -0
  128. package/dist/cdn/{shared-dd303282.js → shared-10c8f21c.js} +1 -1
  129. package/dist/cdn/{shared-eb963ba3.js → shared-12973e93.js} +1 -1
  130. package/dist/cdn/{shared-9c010e0a.js → shared-12bab9de.js} +1 -1
  131. package/dist/cdn/shared-13ba9f3a.js +15 -0
  132. package/dist/cdn/{shared-fed829c2.js → shared-19b43f73.js} +1 -1
  133. package/dist/cdn/{shared-264e8301.js → shared-1af6aa1d.js} +1 -1
  134. package/dist/cdn/{shared-94716ec1.js → shared-1b627cc5.js} +1 -1
  135. package/dist/cdn/{shared-0d0585dc.js → shared-1c252319.js} +1 -1
  136. package/dist/cdn/shared-1da47f50.js +1 -0
  137. package/dist/cdn/shared-2061be9a.js +1 -0
  138. package/dist/cdn/{shared-6033e09d.js → shared-206d3153.js} +1 -1
  139. package/dist/cdn/{shared-70e6f32c.js → shared-21a445d9.js} +1 -1
  140. package/dist/cdn/{shared-9171c265.js → shared-2557c0c4.js} +1 -1
  141. package/dist/cdn/{shared-bedc5e82.js → shared-264bea6b.js} +1 -1
  142. package/dist/cdn/{shared-5f8c01f8.js → shared-2c00e6b1.js} +1 -1
  143. package/dist/cdn/{shared-1cd02e50.js → shared-2db6b377.js} +1 -1
  144. package/dist/cdn/{shared-9b9d5ff1.js → shared-2ebcaabc.js} +1 -1
  145. package/dist/cdn/{shared-4b393539.js → shared-2f17b0fa.js} +1 -1
  146. package/dist/cdn/shared-2f1ced90.js +1 -0
  147. package/dist/cdn/{shared-ffd5932d.js → shared-3558bfae.js} +1 -1
  148. package/dist/cdn/{shared-5e4a03d1.js → shared-37869bac.js} +1 -1
  149. package/dist/cdn/{shared-99a8889a.js → shared-3b4148ad.js} +1 -1
  150. package/dist/cdn/{shared-2cb397e4.js → shared-3e0b2588.js} +1 -1
  151. package/dist/cdn/{shared-567ba8ae.js → shared-3e3c5095.js} +1 -1
  152. package/dist/cdn/{shared-656a46f7.js → shared-3ffa26c1.js} +2 -2
  153. package/dist/cdn/{shared-0224f0b8.js → shared-457789d7.js} +1 -1
  154. package/dist/cdn/{shared-e88763ec.js → shared-5700fbfd.js} +1 -1
  155. package/dist/cdn/shared-5905fca4.js +1 -0
  156. package/dist/cdn/{shared-cae7a43b.js → shared-5aacbf1f.js} +1 -1
  157. package/dist/cdn/{shared-6962f117.js → shared-6540a584.js} +1 -1
  158. package/dist/cdn/shared-65b2760f.js +1 -0
  159. package/dist/cdn/{shared-a507d54f.js → shared-68d1075b.js} +4 -4
  160. package/dist/cdn/{shared-89d4000a.js → shared-6a65acb4.js} +1 -1
  161. package/dist/cdn/{shared-d7d949bc.js → shared-6ebe5ef5.js} +1 -1
  162. package/dist/cdn/{shared-a6c75cc0.js → shared-6eebe353.js} +2 -2
  163. package/dist/cdn/{shared-9dc36194.js → shared-74a5f2a4.js} +1 -1
  164. package/dist/cdn/{shared-e2d3c014.js → shared-76c608e2.js} +1 -1
  165. package/dist/cdn/shared-7b5bdf0e.js +1 -0
  166. package/dist/cdn/{shared-673d668a.js → shared-7dc40542.js} +1 -1
  167. package/dist/cdn/shared-7fec42f2.js +15 -0
  168. package/dist/cdn/{shared-dc4d2996.js → shared-80dafe85.js} +1 -1
  169. package/dist/cdn/{shared-44b46fef.js → shared-8259d01b.js} +1 -1
  170. package/dist/cdn/shared-88a59a2e.js +1 -0
  171. package/dist/cdn/{shared-4dd24dda.js → shared-8b0d25e5.js} +1 -1
  172. package/dist/cdn/{shared-c502de27.js → shared-8dd6f543.js} +1 -1
  173. package/dist/cdn/{shared-8a0bd046.js → shared-9006bac2.js} +1 -1
  174. package/dist/cdn/{shared-d68c6616.js → shared-90a8d5cf.js} +1 -1
  175. package/dist/cdn/{shared-4cafa2e7.js → shared-9363a954.js} +1 -1
  176. package/dist/cdn/{shared-c832f3a1.js → shared-944fab16.js} +1 -1
  177. package/dist/cdn/shared-998c0ace.js +1 -0
  178. package/dist/cdn/{shared-6b3fed56.js → shared-a3234358.js} +1 -1
  179. package/dist/cdn/{shared-bb6d7b97.js → shared-a715e3e5.js} +1 -1
  180. package/dist/cdn/{shared-74d599dc.js → shared-aab4ed2b.js} +1 -1
  181. package/dist/cdn/{shared-a4216b50.js → shared-ab0bbad5.js} +1 -1
  182. package/dist/cdn/{shared-8ea2bbcc.js → shared-aedaf182.js} +1 -1
  183. package/dist/cdn/{shared-274dec57.js → shared-b2bd7666.js} +1 -1
  184. package/dist/cdn/{shared-b1435a0a.js → shared-bdbdf963.js} +1 -1
  185. package/dist/cdn/shared-be30b940.js +1 -0
  186. package/dist/cdn/{shared-e6a1eef8.js → shared-be7af87f.js} +1 -1
  187. package/dist/cdn/{shared-5afb584d.js → shared-c782b9fa.js} +1 -1
  188. package/dist/cdn/{shared-7fd51889.js → shared-cd0ae051.js} +3 -3
  189. package/dist/cdn/{shared-8f009bbb.js → shared-cd3cfea5.js} +1 -1
  190. package/dist/cdn/{shared-7594e563.js → shared-d6a0954b.js} +1 -1
  191. package/dist/cdn/shared-da95bb48.js +1 -0
  192. package/dist/cdn/{shared-87b93771.js → shared-dd7e85be.js} +1 -1
  193. package/dist/cdn/{shared-aa6dab90.js → shared-ddda911c.js} +2 -2
  194. package/dist/cdn/shared-e1e4d8f5.js +1 -0
  195. package/dist/cdn/{shared-2f8e53c0.js → shared-e52d2fdd.js} +1 -1
  196. package/dist/cdn/{shared-66201dc5.js → shared-ee689ddc.js} +1 -1
  197. package/dist/cdn/{shared-678beccf.js → shared-f497cd69.js} +3 -3
  198. package/dist/cdn/shared-f4be6924.js +40 -0
  199. package/dist/cdn/shared-f8e1143e.js +1 -0
  200. package/dist/cdn/translations/cart-form/en.json +42 -41
  201. package/dist/cdn/translations/coupon-form/en.json +38 -26
  202. package/dist/cdn/translations/customer/en.json +14 -17
  203. package/dist/cdn/translations/filter-attribute-form/en.json +19 -14
  204. package/dist/cdn/translations/gift-card-code-form/en.json +14 -16
  205. package/dist/cdn/translations/gift-card-form/en.json +33 -32
  206. package/dist/cdn/translations/payment-method-card/en.json +14 -17
  207. package/dist/cdn/translations/query-builder/en.json +15 -13
  208. package/dist/cdn/translations/update-payment-method-form/en.json +14 -17
  209. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControlFilterOverlay.js +1 -1
  210. package/dist/elements/internal/InternalAsyncListControl/InternalAsyncListControlFilterOverlay.js.map +1 -1
  211. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +9 -10
  212. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -1
  213. package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js +1 -1
  214. package/dist/elements/internal/InternalSummaryControl/InternalSummaryControl.js.map +1 -1
  215. package/dist/elements/public/CouponForm/CouponForm.js +4 -4
  216. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  217. package/dist/elements/public/Donation/Donation.d.ts +10 -0
  218. package/dist/elements/public/Donation/Donation.js +2 -0
  219. package/dist/elements/public/Donation/Donation.js.map +1 -1
  220. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.d.ts +2 -2
  221. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js +71 -25
  222. package/dist/elements/public/FilterAttributeForm/FilterAttributeForm.js.map +1 -1
  223. package/dist/elements/public/FilterAttributeForm/index.d.ts +2 -2
  224. package/dist/elements/public/FilterAttributeForm/index.js +2 -2
  225. package/dist/elements/public/FilterAttributeForm/index.js.map +1 -1
  226. package/dist/elements/public/GiftCardForm/GiftCardForm.js +5 -5
  227. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  228. package/dist/elements/public/QueryBuilder/QueryBuilder.d.ts +15 -6
  229. package/dist/elements/public/QueryBuilder/QueryBuilder.js +152 -32
  230. package/dist/elements/public/QueryBuilder/QueryBuilder.js.map +1 -1
  231. package/dist/elements/public/QueryBuilder/components/AdvancedGroup.d.ts +16 -0
  232. package/dist/elements/public/QueryBuilder/components/AdvancedGroup.js +78 -0
  233. package/dist/elements/public/QueryBuilder/components/AdvancedGroup.js.map +1 -0
  234. package/dist/elements/public/QueryBuilder/components/AdvancedInput.d.ts +12 -0
  235. package/dist/elements/public/QueryBuilder/components/AdvancedInput.js +49 -0
  236. package/dist/elements/public/QueryBuilder/components/AdvancedInput.js.map +1 -0
  237. package/dist/elements/public/QueryBuilder/components/AdvancedOperatorToggle.d.ts +14 -0
  238. package/dist/elements/public/QueryBuilder/components/AdvancedOperatorToggle.js +41 -0
  239. package/dist/elements/public/QueryBuilder/components/AdvancedOperatorToggle.js.map +1 -0
  240. package/dist/elements/public/QueryBuilder/components/AdvancedRule.d.ts +18 -0
  241. package/dist/elements/public/QueryBuilder/components/{Rule.js → AdvancedRule.js} +50 -59
  242. package/dist/elements/public/QueryBuilder/components/AdvancedRule.js.map +1 -0
  243. package/dist/elements/public/QueryBuilder/components/SimpleAttributeRule.d.ts +2 -0
  244. package/dist/elements/public/QueryBuilder/components/SimpleAttributeRule.js +78 -0
  245. package/dist/elements/public/QueryBuilder/components/SimpleAttributeRule.js.map +1 -0
  246. package/dist/elements/public/QueryBuilder/components/SimpleBooleanRule.d.ts +2 -0
  247. package/dist/elements/public/QueryBuilder/components/SimpleBooleanRule.js +16 -0
  248. package/dist/elements/public/QueryBuilder/components/SimpleBooleanRule.js.map +1 -0
  249. package/dist/elements/public/QueryBuilder/components/SimpleDateRule.d.ts +2 -0
  250. package/dist/elements/public/QueryBuilder/components/SimpleDateRule.js +111 -0
  251. package/dist/elements/public/QueryBuilder/components/SimpleDateRule.js.map +1 -0
  252. package/dist/elements/public/QueryBuilder/components/SimpleGroup.d.ts +14 -0
  253. package/dist/elements/public/QueryBuilder/components/SimpleGroup.js +111 -0
  254. package/dist/elements/public/QueryBuilder/components/SimpleGroup.js.map +1 -0
  255. package/dist/elements/public/QueryBuilder/components/SimpleInput.d.ts +15 -0
  256. package/dist/elements/public/QueryBuilder/components/SimpleInput.js +43 -0
  257. package/dist/elements/public/QueryBuilder/components/SimpleInput.js.map +1 -0
  258. package/dist/elements/public/QueryBuilder/components/SimpleListRule.d.ts +2 -0
  259. package/dist/elements/public/QueryBuilder/components/SimpleListRule.js +45 -0
  260. package/dist/elements/public/QueryBuilder/components/SimpleListRule.js.map +1 -0
  261. package/dist/elements/public/QueryBuilder/components/SimpleNumberRule.d.ts +2 -0
  262. package/dist/elements/public/QueryBuilder/components/SimpleNumberRule.js +100 -0
  263. package/dist/elements/public/QueryBuilder/components/SimpleNumberRule.js.map +1 -0
  264. package/dist/elements/public/QueryBuilder/components/SimpleSelect.d.ts +24 -0
  265. package/dist/elements/public/QueryBuilder/components/SimpleSelect.js +45 -0
  266. package/dist/elements/public/QueryBuilder/components/SimpleSelect.js.map +1 -0
  267. package/dist/elements/public/QueryBuilder/components/SimpleStringRule.d.ts +2 -0
  268. package/dist/elements/public/QueryBuilder/components/SimpleStringRule.js +46 -0
  269. package/dist/elements/public/QueryBuilder/components/SimpleStringRule.js.map +1 -0
  270. package/dist/elements/public/QueryBuilder/icons/field.d.ts +1 -0
  271. package/dist/elements/public/QueryBuilder/icons/{typeAny.js → field.js} +2 -2
  272. package/dist/elements/public/QueryBuilder/icons/field.js.map +1 -0
  273. package/dist/elements/public/QueryBuilder/icons/index.d.ts +1 -6
  274. package/dist/elements/public/QueryBuilder/icons/index.js +1 -6
  275. package/dist/elements/public/QueryBuilder/icons/index.js.map +1 -1
  276. package/dist/elements/public/QueryBuilder/index.d.ts +2 -0
  277. package/dist/elements/public/QueryBuilder/index.js +2 -0
  278. package/dist/elements/public/QueryBuilder/index.js.map +1 -1
  279. package/dist/elements/public/QueryBuilder/styles.js +23 -0
  280. package/dist/elements/public/QueryBuilder/styles.js.map +1 -1
  281. package/dist/elements/public/QueryBuilder/types.d.ts +24 -6
  282. package/dist/elements/public/QueryBuilder/types.js.map +1 -1
  283. package/dist/elements/public/QueryBuilder/utils/parse.d.ts +2 -2
  284. package/dist/elements/public/QueryBuilder/utils/parse.js.map +1 -1
  285. package/dist/elements/public/QueryBuilder/utils/stringify.d.ts +2 -2
  286. package/dist/elements/public/QueryBuilder/utils/stringify.js.map +1 -1
  287. package/dist/elements/public/TaxForm/TaxForm.js +5 -4
  288. package/dist/elements/public/TaxForm/TaxForm.js.map +1 -1
  289. package/dist/mixins/themeable.js +17 -12
  290. package/dist/mixins/themeable.js.map +1 -1
  291. package/package.json +1 -1
  292. package/dist/cdn/shared-0aedd809.js +0 -1
  293. package/dist/cdn/shared-2f5cc0e2.js +0 -1
  294. package/dist/cdn/shared-343d1fd7.js +0 -1
  295. package/dist/cdn/shared-4a38cb3e.js +0 -1
  296. package/dist/cdn/shared-4c764a91.js +0 -1
  297. package/dist/cdn/shared-5592ec6e.js +0 -1
  298. package/dist/cdn/shared-5ef40e86.js +0 -1
  299. package/dist/cdn/shared-79d0699c.js +0 -1
  300. package/dist/cdn/shared-894c69f8.js +0 -1
  301. package/dist/cdn/shared-97e2abfb.js +0 -1
  302. package/dist/cdn/shared-b6f53f3b.js +0 -64
  303. package/dist/cdn/shared-c31c50e2.js +0 -1
  304. package/dist/cdn/shared-cb58dfcd.js +0 -15
  305. package/dist/cdn/shared-d0363ae9.js +0 -1
  306. package/dist/cdn/shared-ef4ad461.js +0 -1
  307. package/dist/cdn/shared-f7bfb29e.js +0 -15
  308. package/dist/cdn/shared-f83207fb.js +0 -1
  309. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.d.ts +0 -5
  310. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js +0 -34
  311. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/InternalFilterAttributeFormActionControl.js.map +0 -1
  312. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.d.ts +0 -5
  313. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js +0 -7
  314. package/dist/elements/public/FilterAttributeForm/internal/InternalFilterAttributeFormActionControl/index.js.map +0 -1
  315. package/dist/elements/public/QueryBuilder/components/BooleanValue.d.ts +0 -12
  316. package/dist/elements/public/QueryBuilder/components/BooleanValue.js +0 -21
  317. package/dist/elements/public/QueryBuilder/components/BooleanValue.js.map +0 -1
  318. package/dist/elements/public/QueryBuilder/components/Group.d.ts +0 -15
  319. package/dist/elements/public/QueryBuilder/components/Group.js +0 -95
  320. package/dist/elements/public/QueryBuilder/components/Group.js.map +0 -1
  321. package/dist/elements/public/QueryBuilder/components/Input.d.ts +0 -18
  322. package/dist/elements/public/QueryBuilder/components/Input.js +0 -98
  323. package/dist/elements/public/QueryBuilder/components/Input.js.map +0 -1
  324. package/dist/elements/public/QueryBuilder/components/IsDefinedValue.d.ts +0 -11
  325. package/dist/elements/public/QueryBuilder/components/IsDefinedValue.js +0 -16
  326. package/dist/elements/public/QueryBuilder/components/IsDefinedValue.js.map +0 -1
  327. package/dist/elements/public/QueryBuilder/components/ListValue.d.ts +0 -12
  328. package/dist/elements/public/QueryBuilder/components/ListValue.js +0 -48
  329. package/dist/elements/public/QueryBuilder/components/ListValue.js.map +0 -1
  330. package/dist/elements/public/QueryBuilder/components/Name.d.ts +0 -11
  331. package/dist/elements/public/QueryBuilder/components/Name.js +0 -14
  332. package/dist/elements/public/QueryBuilder/components/Name.js.map +0 -1
  333. package/dist/elements/public/QueryBuilder/components/OperatorToggle.d.ts +0 -13
  334. package/dist/elements/public/QueryBuilder/components/OperatorToggle.js +0 -63
  335. package/dist/elements/public/QueryBuilder/components/OperatorToggle.js.map +0 -1
  336. package/dist/elements/public/QueryBuilder/components/Path.d.ts +0 -13
  337. package/dist/elements/public/QueryBuilder/components/Path.js +0 -16
  338. package/dist/elements/public/QueryBuilder/components/Path.js.map +0 -1
  339. package/dist/elements/public/QueryBuilder/components/RangeValue.d.ts +0 -12
  340. package/dist/elements/public/QueryBuilder/components/RangeValue.js +0 -47
  341. package/dist/elements/public/QueryBuilder/components/RangeValue.js.map +0 -1
  342. package/dist/elements/public/QueryBuilder/components/Rule.d.ts +0 -18
  343. package/dist/elements/public/QueryBuilder/components/Rule.js.map +0 -1
  344. package/dist/elements/public/QueryBuilder/components/Select.d.ts +0 -16
  345. package/dist/elements/public/QueryBuilder/components/Select.js +0 -86
  346. package/dist/elements/public/QueryBuilder/components/Select.js.map +0 -1
  347. package/dist/elements/public/QueryBuilder/components/SingleValue.d.ts +0 -12
  348. package/dist/elements/public/QueryBuilder/components/SingleValue.js +0 -21
  349. package/dist/elements/public/QueryBuilder/components/SingleValue.js.map +0 -1
  350. package/dist/elements/public/QueryBuilder/icons/typeAny.d.ts +0 -1
  351. package/dist/elements/public/QueryBuilder/icons/typeAny.js.map +0 -1
  352. package/dist/elements/public/QueryBuilder/icons/typeAttribute.d.ts +0 -1
  353. package/dist/elements/public/QueryBuilder/icons/typeAttribute.js +0 -8
  354. package/dist/elements/public/QueryBuilder/icons/typeAttribute.js.map +0 -1
  355. package/dist/elements/public/QueryBuilder/icons/typeBoolean.d.ts +0 -1
  356. package/dist/elements/public/QueryBuilder/icons/typeBoolean.js +0 -10
  357. package/dist/elements/public/QueryBuilder/icons/typeBoolean.js.map +0 -1
  358. package/dist/elements/public/QueryBuilder/icons/typeDate.d.ts +0 -1
  359. package/dist/elements/public/QueryBuilder/icons/typeDate.js +0 -7
  360. package/dist/elements/public/QueryBuilder/icons/typeDate.js.map +0 -1
  361. package/dist/elements/public/QueryBuilder/icons/typeNumber.d.ts +0 -1
  362. package/dist/elements/public/QueryBuilder/icons/typeNumber.js +0 -7
  363. package/dist/elements/public/QueryBuilder/icons/typeNumber.js.map +0 -1
  364. package/dist/elements/public/QueryBuilder/icons/typeString.d.ts +0 -1
  365. package/dist/elements/public/QueryBuilder/icons/typeString.js +0 -7
  366. package/dist/elements/public/QueryBuilder/icons/typeString.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Donation.js","sourceRoot":"","sources":["../../../../src/elements/public/Donation/Donation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScopedElementsMap } from '@open-wc/scoped-elements';\nimport '@vaadin/vaadin-button';\nimport '@vaadin/vaadin-text-field/vaadin-text-area';\nimport { PropertyDeclarations } from 'lit-element';\nimport { html, TemplateResult } from 'lit-html';\nimport { Translatable } from '../../../mixins/translatable';\nimport { parseDuration } from '../../../utils/parse-duration';\nimport { CheckboxChangeEvent, ChoiceChangeEvent, DropdownChangeEvent } from '../../private/events';\nimport { Checkbox, Choice, Dropdown, ErrorScreen, Group, I18N } from '../../private/index';\nimport { DonationChangeEvent } from './DonationChangeEvent';\nimport { DonationSubmitEvent } from './DonationSubmitEvent';\n\ninterface DonationEventsMap {\n change: typeof DonationChangeEvent;\n submit: typeof DonationSubmitEvent;\n}\n\n/**\n * A custom element providing customizable donation forms.\n *\n * @fires Donation#change - Instance of `Donation.events.change`. Emitted after user input triggers a change in the form data.\n * @fires Donation#submit - Instance of `Donation.events.submit`. Emitted when the form is submitted. Cancelling this event will stop the submission.\n *\n * @slot amount - Space below the amount selector, if it's visible.\n * @slot designation - Space below the designation selector, if it's visible.\n * @slot comment - Space below the comment field, if it's visible.\n *\n * @element foxy-donation\n * @since 0.3.0\n */\nexport class Donation extends Translatable {\n /** @readonly */\n public static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-text-area': customElements.get('vaadin-text-area'),\n 'x-error-screen': ErrorScreen,\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-dropdown': Dropdown,\n 'x-checkbox': Checkbox,\n 'x-choice': Choice,\n 'x-group': Group,\n 'x-i18n': I18N,\n };\n }\n\n /** @readonly */\n public static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n currency: { type: String },\n custom: { type: Array },\n amount: { type: Number },\n amounts: { type: Array },\n frequency: { type: String },\n frequencies: { type: Array },\n designation: { type: Array },\n designations: { type: Array },\n comment: { type: String },\n anonymity: { reflect: true, type: Boolean },\n anonymous: { reflect: true, type: Boolean },\n image: { type: String },\n store: { type: String },\n name: { type: String },\n code: { type: String },\n url: { type: String },\n cart: { type: String },\n target: { type: String },\n empty: { type: String },\n };\n }\n\n /** @readonly */\n public static get events(): DonationEventsMap {\n return {\n change: DonationChangeEvent,\n submit: DonationSubmitEvent,\n };\n }\n\n /**\n * **Required** 3-letter lowercase currency code.\n *\n * **Example:** `\"usd\"`\n */\n public currency: null | string = null;\n\n /**\n * **Required** donation amount in specified currency. When more than one amount option\n * is available, this field will contain the selected amount. This value is deliberately not\n * limited to the predefined options: whatever you set it to will show up in the cart.\n *\n * **Example:** `25`\n */\n public amount: null | number = null;\n\n /**\n * **Required** store domain. This is usually the part after before `.foxycart.com`\n * and after `https://`, e.g. the `foxy-demo` bit of `https://foxy-demo.foxycart.com`.\n * Custom domains like `my.domain.example.com` are also supported since v1.6.1.\n *\n * **Example:** `\"foxy-demo\"`\n */\n public store: null | string = null;\n\n /**\n * **Required** product name for this donation. This will show up in the cart when this form is submitted.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"One-time donation\"`\n */\n public name: null | string = null;\n\n /**\n * Optional parts of the form including a custom (\"other\") option.\n * Adding `amount` to this array will enable custom amount.\n *\n * **Example:** `[\"amount\"]`\n */\n public custom: null | 'amount'[] = null;\n\n /**\n * Optional donation amount variants. If this property is set, the form will render\n * the amount selection interface. If this array includes the value of the `amount` property,\n * it will be pre-selected in the form.\n *\n * **Example:** `[25, 50, 75]`\n */\n public amounts: null | number[] = null;\n\n /**\n * Optional donation frequency string encoded as count (integer) + units (one\n * of: `d` for days, `w` for weeks, `m` for months, `y` for years). A special\n * value for twice a month is also supported: `.5m`. If set, the form will\n * create a subscription with the specified frequency in the cart. This value is deliberately not\n * limited to the predefined options: whatever you set it to will show up in the cart.\n *\n * **Example:** `\"1m\"`\n */\n public frequency: null | string = null;\n\n /**\n * Optional donation frequency variants in the same format as `frequency`. If this property is set,\n * the form will render the frequency selection interface. If this array includes\n * the value of the `frequency` property, it will be pre-selected in the form.\n *\n * **Example:** `[\"7d\", \".5m\", \"1y\"]`\n */\n public frequencies: null | string[] = null;\n\n /**\n * Optional donation designation(s). The form will serialize and pass this value to the cart\n * on submission. This value is deliberately not limited to the predefined options:\n * whatever you set it to will show up in the cart.\n *\n * **Example:** `\"Medical Care\"`\n * **Example:** `[\"Medical Care\", \"Daily Meals\"]`\n */\n public designation: null | string = null;\n\n /**\n * Optional donation designation(s) variants. If this property is set,\n * the form will render the designation selection interface: multiple choice\n * if `designation` is an array and a single choice otherwise. All values overlapping\n * with the `designation` property will be pre-selected in the form.\n *\n * **Example:** `[\"Medical Care\", \"Daily Meals\", \"Area of Greatest Need\"]`\n */\n public designations: null | string[] = null;\n\n /**\n * Optional comment accompanying the donation. If set (even to an empty string),\n * the form will render a comment field. The value of this property will be updated\n * as the customer enters their message and will be added to the order as a custom field in the end.\n *\n * **Example:** `\"\"`\n */\n public comment: null | string = null;\n\n /**\n * Optional switch controlling visibility of the anonymity checkbox. If set to `true`, the form\n * will render the checkbox. All changes in the value are reflected to the attribute.\n *\n * **Example:** `true`\n */\n public anonymity = false;\n\n /**\n * Optional switch marking this donation as anonymous via a custom field when set to `true`. When\n * the anonymity checkbox is rendered, also checks or unchecks it depending on the value.\n * All changes in the value are reflected to the attribute.\n *\n * **Example:** `true`\n */\n public anonymous = false;\n\n /**\n * Optional product image URL (absolute path). This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"https://picsum.photos/320\"`\n */\n public image: null | string = null;\n\n /**\n * Optional product code for this donation. This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public code: null | string = null;\n\n /**\n * Optional product URL for this donation. Accepts a full URL to the product page, starting\n * with `http://` or `https://`, or a relative path to the produt from the store's\n * domain (as configured in the store settings). This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"https://example.com/my-product\"`\n */\n public url: null | string = null;\n\n /**\n * Optional cart\n * If set to 'add' will add items to the cart and, on submit, user is redirected to the cart.\n * If set to 'checkout', the default, on submit user is redirected to checkout directly\n */\n public cart = 'checkout';\n\n /**\n * Optional empty\n * If set to 'true' clears the contents of the cart prior to adding the donation to the cart\n * If set to 'reset' clears the contents of the cart and cookies prior to adding the donation to the cart\n */\n public empty?: string;\n\n /**\n * Optional target to display the form response.\n */\n public target = '_top';\n\n public constructor() {\n super('donation');\n }\n\n /** Submits the form, emitting a cancelable `submit` event. */\n public submit(): void {\n /* istanbul ignore if */\n if (this.dispatchEvent(new DonationSubmitEvent())) this.__form.submit();\n }\n\n public render(): TemplateResult {\n if (!this.currency || !this.amount || !this.store || !this.name) {\n return html`\n <x-error-screen data-testid=\"error\" type=\"setup_needed\" class=\"relative\"></x-error-screen>\n `;\n }\n\n const domain = this.store.includes('.') ? this.store : `${this.store}.foxycart.com`;\n\n return html`\n <form\n target=\"${this.target}\"\n class=\"sr-only\"\n method=\"POST\"\n action=\"https://${domain}/cart\"\n data-testid=\"form\"\n >\n ${[...this.__data.entries()].map(\n ([name, value]) => html`<input type=\"hidden\" name=${name} value=${value} />`\n )}\n </form>\n\n <section>\n ${this.amounts && this.amounts.length > 0\n ? html`\n <x-group frame>\n <x-i18n ns=${this.ns} lang=${this.lang} key=\"amount\" slot=\"header\"></x-i18n>\n <x-choice\n ?custom=${!!this.custom?.includes('amount')}\n .getText=${(v: string) => this.__translateAmount(parseFloat(v))}\n .items=${this.amounts.map(String)}\n .value=${this.amount.toString()}\n type=\"number\"\n lang=${this.lang}\n min=\"1\"\n ns=${this.ns}\n data-testid=\"amount\"\n @change=${(evt: ChoiceChangeEvent) => {\n const value = parseFloat(evt.detail as string);\n this.amount = isNaN(value) ? /* istanbul ignore next */ 1 : value;\n }}\n >\n </x-choice>\n </x-group>\n\n <slot name=\"amount\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${this.designations && this.designations.length > 0\n ? html`\n <x-dropdown\n .label=${this._t('designation').toString()}\n .items=${this.designations}\n .value=${Array.isArray(this.designation)\n ? '${this.designation[0]}: ${this.designation[1]}'\n : this.designation}\n data-testid=\"designation\"\n @change=${(evt: DropdownChangeEvent) => {\n this.designation = evt.detail as string;\n }}\n >\n </x-dropdown>\n\n <slot name=\"designation\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${typeof this.comment === 'string'\n ? html`\n <vaadin-text-area\n placeholder=${this._t('comment_placeholder').toString()}\n value=${this.comment!}\n label=${this._t('comment_label').toString()}\n class=\"w-full\"\n data-testid=\"comment\"\n @input=${(evt: InputEvent) => {\n evt.stopPropagation();\n this.comment = (evt.target as HTMLTextAreaElement).value;\n }}\n >\n </vaadin-text-area>\n\n <slot name=\"comment\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${this.anonymity\n ? html`\n <x-checkbox\n class=\"my-m\"\n data-testid=\"anonymity\"\n ?checked=${this.anonymous}\n @change=${(evt: CheckboxChangeEvent) => (this.anonymous = evt.detail)}\n >\n ${this._t('anonymous')}\n </x-checkbox>\n `\n : ''}\n\n <div class=\"flex flex-wrap -m-s\">\n ${this.frequencies && this.frequencies.length > 0\n ? html`\n <div class=\"flex-1 p-s\">\n <x-dropdown\n .value=${this.frequency}\n .items=${this.frequencies}\n .getText=${this.__translateFrequency.bind(this)}\n data-testid=\"frequency\"\n @change=${(evt: DropdownChangeEvent) => {\n this.frequency = evt.detail as string;\n }}\n >\n </x-dropdown>\n </div>\n `\n : ''}\n\n <div class=\"flex-1 p-s\">\n <vaadin-button\n class=\"w-full\"\n theme=\"primary\"\n data-testid=\"submit\"\n @click=${() => this.submit()}\n >\n <x-i18n\n .opts=${{\n amount: this.__translateAmount(this.amount),\n frequency: this.frequency ? this.__translateFrequency(this.frequency) : '',\n }}\n lang=${this.lang}\n key=${this.frequency && !this.frequencies?.length ? 'donate_recurrently' : 'donate'}\n ns=${this.ns}\n >\n </x-i18n>\n </vaadin-button>\n </div>\n </div>\n </section>\n `;\n }\n\n public updated(): void {\n this.dispatchEvent(new DonationChangeEvent(this.__data));\n }\n\n private get __data() {\n const data = new FormData();\n\n if (typeof this.designation === 'string') {\n data.set('Designation', this.designation.trim());\n }\n\n if (typeof this.amount === 'number' && typeof this.currency === 'string') {\n data.set('price', `${this.amount.toFixed(2)}${this.currency}`);\n }\n\n if (this.frequency) data.set('sub_frequency', this.frequency);\n if (typeof this.comment === 'string') data.set('Comment', this.comment.trim());\n if (typeof this.image === 'string') data.set('image', this.image);\n if (typeof this.code === 'string') data.set('code', this.code);\n if (typeof this.name === 'string') data.set('name', this.name.trim());\n if (typeof this.url === 'string') data.set('url', this.url);\n if (typeof this.cart === 'string') data.set('cart', this.cart);\n if (this.empty) data.set('empty', this.empty);\n if (this.anonymous) data.set('Anonymous', 'true');\n\n data.set('quantity', '1');\n\n return data;\n }\n\n private get __form(): HTMLFormElement {\n return this.shadowRoot!.querySelector('form')!;\n }\n\n private __translateFrequency(frequency: string) {\n if (!frequency || frequency.match(/^\\s*$/)) return this._t('frequency_once');\n if (frequency === '.5m') return this._t('frequency_0_5m');\n\n const { count, units } = parseDuration(frequency);\n return this._t('frequency', {\n units: this._t(units, { count }),\n count,\n });\n }\n\n private __translateAmount(amount: number) {\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 0,\n currency: this.currency!,\n style: 'currency',\n });\n }\n}\n"]}
1
+ {"version":3,"file":"Donation.js","sourceRoot":"","sources":["../../../../src/elements/public/Donation/Donation.ts"],"names":[],"mappings":"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","sourcesContent":["import { ScopedElementsMap } from '@open-wc/scoped-elements';\nimport '@vaadin/vaadin-button';\nimport '@vaadin/vaadin-text-field/vaadin-text-area';\nimport { PropertyDeclarations } from 'lit-element';\nimport { html, TemplateResult } from 'lit-html';\nimport { Translatable } from '../../../mixins/translatable';\nimport { parseDuration } from '../../../utils/parse-duration';\nimport { CheckboxChangeEvent, ChoiceChangeEvent, DropdownChangeEvent } from '../../private/events';\nimport { Checkbox, Choice, Dropdown, ErrorScreen, Group, I18N } from '../../private/index';\nimport { DonationChangeEvent } from './DonationChangeEvent';\nimport { DonationSubmitEvent } from './DonationSubmitEvent';\n\ndeclare global {\n interface Window {\n FC?: {\n settings: {\n session_name: string;\n session_id: string;\n };\n };\n }\n}\n\ninterface DonationEventsMap {\n change: typeof DonationChangeEvent;\n submit: typeof DonationSubmitEvent;\n}\n\n/**\n * A custom element providing customizable donation forms.\n *\n * @fires Donation#change - Instance of `Donation.events.change`. Emitted after user input triggers a change in the form data.\n * @fires Donation#submit - Instance of `Donation.events.submit`. Emitted when the form is submitted. Cancelling this event will stop the submission.\n *\n * @slot amount - Space below the amount selector, if it's visible.\n * @slot designation - Space below the designation selector, if it's visible.\n * @slot comment - Space below the comment field, if it's visible.\n *\n * @element foxy-donation\n * @since 0.3.0\n */\nexport class Donation extends Translatable {\n /** @readonly */\n public static get scopedElements(): ScopedElementsMap {\n return {\n 'vaadin-text-area': customElements.get('vaadin-text-area'),\n 'x-error-screen': ErrorScreen,\n 'vaadin-button': customElements.get('vaadin-button'),\n 'x-dropdown': Dropdown,\n 'x-checkbox': Checkbox,\n 'x-choice': Choice,\n 'x-group': Group,\n 'x-i18n': I18N,\n };\n }\n\n /** @readonly */\n public static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n currency: { type: String },\n custom: { type: Array },\n amount: { type: Number },\n amounts: { type: Array },\n frequency: { type: String },\n frequencies: { type: Array },\n designation: { type: Array },\n designations: { type: Array },\n comment: { type: String },\n anonymity: { reflect: true, type: Boolean },\n anonymous: { reflect: true, type: Boolean },\n image: { type: String },\n store: { type: String },\n name: { type: String },\n code: { type: String },\n url: { type: String },\n cart: { type: String },\n target: { type: String },\n empty: { type: String },\n };\n }\n\n /** @readonly */\n public static get events(): DonationEventsMap {\n return {\n change: DonationChangeEvent,\n submit: DonationSubmitEvent,\n };\n }\n\n /**\n * **Required** 3-letter lowercase currency code.\n *\n * **Example:** `\"usd\"`\n */\n public currency: null | string = null;\n\n /**\n * **Required** donation amount in specified currency. When more than one amount option\n * is available, this field will contain the selected amount. This value is deliberately not\n * limited to the predefined options: whatever you set it to will show up in the cart.\n *\n * **Example:** `25`\n */\n public amount: null | number = null;\n\n /**\n * **Required** store domain. This is usually the part after before `.foxycart.com`\n * and after `https://`, e.g. the `foxy-demo` bit of `https://foxy-demo.foxycart.com`.\n * Custom domains like `my.domain.example.com` are also supported since v1.6.1.\n *\n * **Example:** `\"foxy-demo\"`\n */\n public store: null | string = null;\n\n /**\n * **Required** product name for this donation. This will show up in the cart when this form is submitted.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"One-time donation\"`\n */\n public name: null | string = null;\n\n /**\n * Optional parts of the form including a custom (\"other\") option.\n * Adding `amount` to this array will enable custom amount.\n *\n * **Example:** `[\"amount\"]`\n */\n public custom: null | 'amount'[] = null;\n\n /**\n * Optional donation amount variants. If this property is set, the form will render\n * the amount selection interface. If this array includes the value of the `amount` property,\n * it will be pre-selected in the form.\n *\n * **Example:** `[25, 50, 75]`\n */\n public amounts: null | number[] = null;\n\n /**\n * Optional donation frequency string encoded as count (integer) + units (one\n * of: `d` for days, `w` for weeks, `m` for months, `y` for years). A special\n * value for twice a month is also supported: `.5m`. If set, the form will\n * create a subscription with the specified frequency in the cart. This value is deliberately not\n * limited to the predefined options: whatever you set it to will show up in the cart.\n *\n * **Example:** `\"1m\"`\n */\n public frequency: null | string = null;\n\n /**\n * Optional donation frequency variants in the same format as `frequency`. If this property is set,\n * the form will render the frequency selection interface. If this array includes\n * the value of the `frequency` property, it will be pre-selected in the form.\n *\n * **Example:** `[\"7d\", \".5m\", \"1y\"]`\n */\n public frequencies: null | string[] = null;\n\n /**\n * Optional donation designation(s). The form will serialize and pass this value to the cart\n * on submission. This value is deliberately not limited to the predefined options:\n * whatever you set it to will show up in the cart.\n *\n * **Example:** `\"Medical Care\"`\n * **Example:** `[\"Medical Care\", \"Daily Meals\"]`\n */\n public designation: null | string = null;\n\n /**\n * Optional donation designation(s) variants. If this property is set,\n * the form will render the designation selection interface: multiple choice\n * if `designation` is an array and a single choice otherwise. All values overlapping\n * with the `designation` property will be pre-selected in the form.\n *\n * **Example:** `[\"Medical Care\", \"Daily Meals\", \"Area of Greatest Need\"]`\n */\n public designations: null | string[] = null;\n\n /**\n * Optional comment accompanying the donation. If set (even to an empty string),\n * the form will render a comment field. The value of this property will be updated\n * as the customer enters their message and will be added to the order as a custom field in the end.\n *\n * **Example:** `\"\"`\n */\n public comment: null | string = null;\n\n /**\n * Optional switch controlling visibility of the anonymity checkbox. If set to `true`, the form\n * will render the checkbox. All changes in the value are reflected to the attribute.\n *\n * **Example:** `true`\n */\n public anonymity = false;\n\n /**\n * Optional switch marking this donation as anonymous via a custom field when set to `true`. When\n * the anonymity checkbox is rendered, also checks or unchecks it depending on the value.\n * All changes in the value are reflected to the attribute.\n *\n * **Example:** `true`\n */\n public anonymous = false;\n\n /**\n * Optional product image URL (absolute path). This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"https://picsum.photos/320\"`\n */\n public image: null | string = null;\n\n /**\n * Optional product code for this donation. This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"ISBN 978-0-12-345678-9\"`\n */\n public code: null | string = null;\n\n /**\n * Optional product URL for this donation. Accepts a full URL to the product page, starting\n * with `http://` or `https://`, or a relative path to the produt from the store's\n * domain (as configured in the store settings). This property affects cart UI only.\n * See [Products](https://wiki.foxycart.com/v/2.0/products) wiki for more details.\n *\n * **Example:** `\"https://example.com/my-product\"`\n */\n public url: null | string = null;\n\n /**\n * Optional cart\n * If set to 'add' will add items to the cart and, on submit, user is redirected to the cart.\n * If set to 'checkout', the default, on submit user is redirected to checkout directly\n */\n public cart = 'checkout';\n\n /**\n * Optional empty\n * If set to 'true' clears the contents of the cart prior to adding the donation to the cart\n * If set to 'reset' clears the contents of the cart and cookies prior to adding the donation to the cart\n */\n public empty?: string;\n\n /**\n * Optional target to display the form response.\n */\n public target = '_top';\n\n public constructor() {\n super('donation');\n }\n\n /** Submits the form, emitting a cancelable `submit` event. */\n public submit(): void {\n /* istanbul ignore if */\n if (this.dispatchEvent(new DonationSubmitEvent())) this.__form.submit();\n }\n\n public render(): TemplateResult {\n if (!this.currency || !this.amount || !this.store || !this.name) {\n return html`\n <x-error-screen data-testid=\"error\" type=\"setup_needed\" class=\"relative\"></x-error-screen>\n `;\n }\n\n const domain = this.store.includes('.') ? this.store : `${this.store}.foxycart.com`;\n\n return html`\n <form\n target=\"${this.target}\"\n class=\"sr-only\"\n method=\"POST\"\n action=\"https://${domain}/cart\"\n data-testid=\"form\"\n >\n ${[...this.__data.entries()].map(\n ([name, value]) => html`<input type=\"hidden\" name=${name} value=${value} />`\n )}\n </form>\n\n <section>\n ${this.amounts && this.amounts.length > 0\n ? html`\n <x-group frame>\n <x-i18n ns=${this.ns} lang=${this.lang} key=\"amount\" slot=\"header\"></x-i18n>\n <x-choice\n ?custom=${!!this.custom?.includes('amount')}\n .getText=${(v: string) => this.__translateAmount(parseFloat(v))}\n .items=${this.amounts.map(String)}\n .value=${this.amount.toString()}\n type=\"number\"\n lang=${this.lang}\n min=\"1\"\n ns=${this.ns}\n data-testid=\"amount\"\n @change=${(evt: ChoiceChangeEvent) => {\n const value = parseFloat(evt.detail as string);\n this.amount = isNaN(value) ? /* istanbul ignore next */ 1 : value;\n }}\n >\n </x-choice>\n </x-group>\n\n <slot name=\"amount\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${this.designations && this.designations.length > 0\n ? html`\n <x-dropdown\n .label=${this._t('designation').toString()}\n .items=${this.designations}\n .value=${Array.isArray(this.designation)\n ? '${this.designation[0]}: ${this.designation[1]}'\n : this.designation}\n data-testid=\"designation\"\n @change=${(evt: DropdownChangeEvent) => {\n this.designation = evt.detail as string;\n }}\n >\n </x-dropdown>\n\n <slot name=\"designation\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${typeof this.comment === 'string'\n ? html`\n <vaadin-text-area\n placeholder=${this._t('comment_placeholder').toString()}\n value=${this.comment!}\n label=${this._t('comment_label').toString()}\n class=\"w-full\"\n data-testid=\"comment\"\n @input=${(evt: InputEvent) => {\n evt.stopPropagation();\n this.comment = (evt.target as HTMLTextAreaElement).value;\n }}\n >\n </vaadin-text-area>\n\n <slot name=\"comment\" class=\"block my-m\"></slot>\n `\n : ''}\n </section>\n\n <section>\n ${this.anonymity\n ? html`\n <x-checkbox\n class=\"my-m\"\n data-testid=\"anonymity\"\n ?checked=${this.anonymous}\n @change=${(evt: CheckboxChangeEvent) => (this.anonymous = evt.detail)}\n >\n ${this._t('anonymous')}\n </x-checkbox>\n `\n : ''}\n\n <div class=\"flex flex-wrap -m-s\">\n ${this.frequencies && this.frequencies.length > 0\n ? html`\n <div class=\"flex-1 p-s\">\n <x-dropdown\n .value=${this.frequency}\n .items=${this.frequencies}\n .getText=${this.__translateFrequency.bind(this)}\n data-testid=\"frequency\"\n @change=${(evt: DropdownChangeEvent) => {\n this.frequency = evt.detail as string;\n }}\n >\n </x-dropdown>\n </div>\n `\n : ''}\n\n <div class=\"flex-1 p-s\">\n <vaadin-button\n class=\"w-full\"\n theme=\"primary\"\n data-testid=\"submit\"\n @click=${() => this.submit()}\n >\n <x-i18n\n .opts=${{\n amount: this.__translateAmount(this.amount),\n frequency: this.frequency ? this.__translateFrequency(this.frequency) : '',\n }}\n lang=${this.lang}\n key=${this.frequency && !this.frequencies?.length ? 'donate_recurrently' : 'donate'}\n ns=${this.ns}\n >\n </x-i18n>\n </vaadin-button>\n </div>\n </div>\n </section>\n `;\n }\n\n public updated(): void {\n this.dispatchEvent(new DonationChangeEvent(this.__data));\n }\n\n private get __data() {\n const data = new FormData();\n\n if (typeof this.designation === 'string') {\n data.set('Designation', this.designation.trim());\n }\n\n if (typeof this.amount === 'number' && typeof this.currency === 'string') {\n data.set('price', `${this.amount.toFixed(2)}${this.currency}`);\n }\n\n if (this.frequency) data.set('sub_frequency', this.frequency);\n if (typeof this.comment === 'string') data.set('Comment', this.comment.trim());\n if (typeof this.image === 'string') data.set('image', this.image);\n if (typeof this.code === 'string') data.set('code', this.code);\n if (typeof this.name === 'string') data.set('name', this.name.trim());\n if (typeof this.url === 'string') data.set('url', this.url);\n if (typeof this.cart === 'string') data.set('cart', this.cart);\n if (this.empty) data.set('empty', this.empty);\n if (this.anonymous) data.set('Anonymous', 'true');\n if (window.FC) data.set(window.FC.settings.session_name, window.FC.settings.session_id);\n\n data.set('quantity', '1');\n\n return data;\n }\n\n private get __form(): HTMLFormElement {\n return this.shadowRoot!.querySelector('form')!;\n }\n\n private __translateFrequency(frequency: string) {\n if (!frequency || frequency.match(/^\\s*$/)) return this._t('frequency_once');\n if (frequency === '.5m') return this._t('frequency_0_5m');\n\n const { count, units } = parseDuration(frequency);\n return this._t('frequency', {\n units: this._t(units, { count }),\n count,\n });\n }\n\n private __translateAmount(amount: number) {\n return amount.toLocaleString(this.lang, {\n minimumFractionDigits: 0,\n currency: this.currency!,\n style: 'currency',\n });\n }\n}\n"]}
@@ -2,7 +2,6 @@ import type { PropertyDeclarations } from 'lit-element';
2
2
  import type { TemplateResult } from 'lit-html';
3
3
  import type { Option } from '../QueryBuilder/types';
4
4
  import type { Data } from './types';
5
- import { BooleanSelector } from '@foxy.io/sdk/core';
6
5
  import { InternalForm } from '../../internal/InternalForm/InternalForm';
7
6
  declare const Base: typeof InternalForm & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
8
7
  defaultNS: string;
@@ -26,11 +25,12 @@ export declare class FilterAttributeForm extends Base<Data> {
26
25
  defaults: string | null;
27
26
  /** Admin page pathname. */
28
27
  pathname: string | null;
28
+ /** Same as the `docsHref` property of `QueryBuilder`. */
29
+ docsHref: string | null;
29
30
  /** Filter options passed down to `QueryBuilder.options.` */
30
31
  options: Option[];
31
32
  private readonly __filterNameGetValue;
32
33
  private readonly __filterNameSetValue;
33
- get hiddenSelector(): BooleanSelector;
34
34
  renderBody(): TemplateResult;
35
35
  updated(changes: Map<keyof this, unknown>): void;
36
36
  submit(): void;
@@ -1,8 +1,8 @@
1
1
  import { TranslatableMixin } from "../../../mixins/translatable.js";
2
- import { BooleanSelector } from '@foxy.io/sdk/core';
3
2
  import { encode, decode } from 'html-entities';
4
3
  import { InternalForm } from "../../internal/InternalForm/InternalForm.js";
5
- import { html } from 'lit-html';
4
+ import { ifDefined } from 'lit-html/directives/if-defined';
5
+ import { html, svg } from 'lit-html';
6
6
  const NS = 'filter-attribute-form';
7
7
  const Base = TranslatableMixin(InternalForm, NS);
8
8
  /**
@@ -21,6 +21,8 @@ export class FilterAttributeForm extends Base {
21
21
  this.defaults = null;
22
22
  /** Admin page pathname. */
23
23
  this.pathname = null;
24
+ /** Same as the `docsHref` property of `QueryBuilder`. */
25
+ this.docsHref = null;
24
26
  /** Filter options passed down to `QueryBuilder.options.` */
25
27
  this.options = [];
26
28
  this.__filterNameGetValue = () => {
@@ -37,41 +39,85 @@ export class FilterAttributeForm extends Base {
37
39
  ...super.properties,
38
40
  defaults: {},
39
41
  pathname: {},
42
+ docsHref: { attribute: 'docs-href' },
40
43
  options: { type: Array },
41
44
  };
42
45
  }
43
- get hiddenSelector() {
44
- const alwaysHidden = [];
46
+ renderBody() {
47
+ var _a;
45
48
  const constructor = this.constructor;
46
49
  const filterQuery = this.__getValueParam(constructor.filterQueryKey);
47
- const hasData = !!this.data;
50
+ const hasChanges = this.in({ idle: { snapshot: 'dirty' } });
48
51
  const hasValue = !!this.form.value;
49
- if (!hasData)
50
- alwaysHidden.push('filter-name');
51
- if (!hasValue || (!filterQuery && !hasData))
52
- alwaysHidden.push('action');
53
- return new BooleanSelector(`${alwaysHidden.join(' ')} ${super.hiddenSelector}`.trim());
54
- }
55
- renderBody() {
56
- const constructor = this.constructor;
52
+ const hasData = !!this.data;
57
53
  return html `
54
+ <div class="flex gap-s">
55
+ ${this.data
56
+ ? html `
57
+ <div
58
+ class="flex-1 rounded bg-contrast-5 transition-colors hover-bg-contrast-10 focus-within-bg-contrast-10 focus-within-ring-2 focus-within-ring-primary-50"
59
+ >
60
+ <input
61
+ placeholder=${this.t('filter-name.placeholder')}
62
+ aria-label=${this.t('filter-name.label')}
63
+ style="padding: 0 calc(0.625 * var(--lumo-font-size-m) + (var(--lumo-border-radius) / 4) - 1px)"
64
+ class="block w-full h-full appearance-none bg-transparent text-xl font-medium focus-outline-none"
65
+ .value=${this.__filterNameGetValue()}
66
+ @keydown=${(evt) => {
67
+ if (evt.key === 'Enter') {
68
+ evt.preventDefault();
69
+ this.submit();
70
+ }
71
+ }}
72
+ @input=${(evt) => {
73
+ this.__filterNameSetValue(evt.target.value);
74
+ }}
75
+ />
76
+ </div>
77
+ `
78
+ : html `
79
+ <foxy-i18n class="text-xl flex-1 font-medium" infer="header" key="title"></foxy-i18n>
80
+ `}
81
+ ${!hasValue || (!filterQuery && !hasData)
82
+ ? ''
83
+ : html `
84
+ ${hasData && hasChanges
85
+ ? html `
86
+ <vaadin-button
87
+ aria-label=${this.t('action.reset')}
88
+ theme="contrast icon"
89
+ ?disabled=${this.disabled}
90
+ @click=${() => this.undo()}
91
+ >
92
+ ${svg `<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width: 1em; height: 1em; transform: translateY(-0.1em) scale(1.25)"><path stroke-linecap="round" stroke-linejoin="round" d="M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3" /></svg>`}
93
+ </vaadin-button>
94
+ `
95
+ : ''}
96
+
97
+ <vaadin-button
98
+ theme=${hasData ? (hasChanges ? 'secondary' : 'error') : 'success'}
99
+ style=${ifDefined(hasData ? void 0 : '--lumo-button-size: auto')}
100
+ ?disabled=${this.disabled}
101
+ @click=${() => (!hasData || hasChanges ? this.submit() : this.delete())}
102
+ >
103
+ <foxy-i18n
104
+ infer="action"
105
+ class="px-s"
106
+ key=${hasData ? (hasChanges ? 'update' : 'delete') : 'create'}
107
+ >
108
+ </foxy-i18n>
109
+ </vaadin-button>
110
+ `}
111
+ </div>
112
+
58
113
  <foxy-query-builder
114
+ docs-href=${ifDefined((_a = this.docsHref) !== null && _a !== void 0 ? _a : void 0)}
115
+ options=${JSON.stringify(this.options)}
59
116
  infer="filter-query"
60
- .options=${this.options}
61
- .value=${this.__getValueParam(constructor.filterQueryKey)}
117
+ value=${filterQuery}
62
118
  @change=${this.__handleFilterQueryChange}
63
119
  >
64
120
  </foxy-query-builder>
65
-
66
- <foxy-internal-text-control
67
- infer="filter-name"
68
- .getValue=${this.__filterNameGetValue}
69
- .setValue=${this.__filterNameSetValue}
70
- >
71
- </foxy-internal-text-control>
72
-
73
- <foxy-internal-filter-attribute-form-action-control infer="action">
74
- </foxy-internal-filter-attribute-form-action-control>
75
121
  `;
76
122
  }
77
123
  updated(changes) {
@@ -1 +1 @@
1
- {"version":3,"file":"FilterAttributeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/FilterAttributeForm.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAEhC,MAAM,EAAE,GAAG,uBAAuB,CAAC;AACnC,MAAM,IAAI,GAAG,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,OAAO,mBAAoB,SAAQ,IAAU;IAAnD;;QAkBE,4BAA4B;QAC5B,aAAQ,GAAkB,IAAI,CAAC;QAE/B,2BAA2B;QAC3B,aAAQ,GAAkB,IAAI,CAAC;QAE/B,4DAA4D;QAC5D,YAAO,GAAa,EAAE,CAAC;QAEN,yBAAoB,GAAG,GAAG,EAAE;YAC3C,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;YACnE,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC;QAEe,yBAAoB,GAAG,CAAC,CAAS,EAAE,EAAE;YACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;YACnE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC;IAsGJ,CAAC;IAhIC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,EAAE;YACZ,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;SACzB,CAAC;IACJ,CAAC;IAqBD,IAAI,cAAc;QAChB,MAAM,YAAY,GAAa,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;QACnE,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACrE,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5B,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAEnC,IAAI,CAAC,OAAO;YAAE,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,OAAO,CAAC;YAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzE,OAAO,IAAI,eAAe,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,UAAU;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;QAEnE,OAAO,IAAI,CAAA;;;mBAGI,IAAI,CAAC,OAAO;iBACd,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC;kBAC/C,IAAI,CAAC,yBAAyB;;;;;;oBAM5B,IAAI,CAAC,oBAAoB;oBACzB,IAAI,CAAC,oBAAoB;;;;;;KAMxC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,OAAiC;;QACvC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE;YACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,qBAAqB,CAAC,CAAC;YACpE,GAAG,CAAC,QAAQ,SAAG,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,IAAI,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK;gBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;SACrD;IACH,CAAC;IAED,MAAM;QACJ,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;QAEnE,IAAI,CAAC,IAAI,CAAC;YACR,UAAU,EAAE,WAAW,CAAC,mBAAmB;YAC3C,IAAI,EAAE,WAAW,CAAC,aAAa;SAChC,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,EAAE,CAAC;IACjB,CAAC;IAEO,eAAe,CAAC,GAAW;;QACjC,IAAI;YACF,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;YACnE,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,OAAC,IAAI,CAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAE1E,IAAI,MAAM,SAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC;YAE7C,IACE,GAAG,KAAK,WAAW,CAAC,cAAc;gBAClC,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC,EACtF;gBACA,IAAI;oBACF,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;oBAC9C,MAAM,QAAQ,GAAG,IAAI,eAAe,OAAC,IAAI,CAAC,QAAQ,mCAAI,EAAE,CAAC,CAAC;oBAC1D,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAChD,MAAM,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;iBAC9B;gBAAC,WAAM;oBACN,QAAQ;iBACT;aACF;YAED,OAAO,MAAM,CAAC;SACf;QAAC,WAAM;YACN,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAEO,eAAe,CAAC,GAAW,EAAE,KAAa;;QAChD,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,OAAC,IAAI,CAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;YAC1E,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;SAC3E;QAAC,WAAM;YACN,SAAS;SACV;IACH,CAAC;IAEO,yBAAyB,CAAC,GAAgB;;QAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAyC,CAAC;QACnE,MAAM,OAAO,GAAG,GAAG,CAAC,aAA6B,CAAC;QAClD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,cAAc,QAAE,OAAO,CAAC,KAAK,mCAAI,EAAE,CAAC,CAAC;IACxE,CAAC;;AAvIe,uCAAmB,GAAuB,YAAY,CAAC;AAEvD,kCAAc,GAAW,cAAc,CAAC;AAExC,iCAAa,GAAW,qBAAqB,CAAC;AAE9C,iCAAa,GAAW,aAAa,CAAC","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport type { Option } from '../QueryBuilder/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { BooleanSelector } from '@foxy.io/sdk/core';\nimport { encode, decode } from 'html-entities';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { html } from 'lit-html';\n\nconst NS = 'filter-attribute-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating and editing saved filters in Admin. Saved filters\n * are powered by the Bookmark attribute format that allows adding custom sidebar items\n * to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a\n * relative URL of the bookmarked Admin page in the value.\n *\n * @element foxy-filter-attribute-form\n * @since 1.24.0\n */\nexport class FilterAttributeForm extends Base<Data> {\n static readonly attributeVisibility: Data['visibility'] = 'restricted';\n\n static readonly filterQueryKey: string = 'filter_query';\n\n static readonly attributeName: string = 'foxy-admin-bookmark';\n\n static readonly filterNameKey: string = 'filter_name';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n defaults: {},\n pathname: {},\n options: { type: Array },\n };\n }\n\n /** Default filter query. */\n defaults: string | null = null;\n\n /** Admin page pathname. */\n pathname: string | null = null;\n\n /** Filter options passed down to `QueryBuilder.options.` */\n options: Option[] = [];\n\n private readonly __filterNameGetValue = () => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n return this.__getValueParam(constructor.filterNameKey);\n };\n\n private readonly __filterNameSetValue = (v: string) => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n this.__setValueParam(constructor.filterNameKey, v);\n };\n\n get hiddenSelector(): BooleanSelector {\n const alwaysHidden: string[] = [];\n const constructor = this.constructor as typeof FilterAttributeForm;\n const filterQuery = this.__getValueParam(constructor.filterQueryKey);\n const hasData = !!this.data;\n const hasValue = !!this.form.value;\n\n if (!hasData) alwaysHidden.push('filter-name');\n if (!hasValue || (!filterQuery && !hasData)) alwaysHidden.push('action');\n\n return new BooleanSelector(`${alwaysHidden.join(' ')} ${super.hiddenSelector}`.trim());\n }\n\n renderBody(): TemplateResult {\n const constructor = this.constructor as typeof FilterAttributeForm;\n\n return html`\n <foxy-query-builder\n infer=\"filter-query\"\n .options=${this.options}\n .value=${this.__getValueParam(constructor.filterQueryKey)}\n @change=${this.__handleFilterQueryChange}\n >\n </foxy-query-builder>\n\n <foxy-internal-text-control\n infer=\"filter-name\"\n .getValue=${this.__filterNameGetValue}\n .setValue=${this.__filterNameSetValue}\n >\n </foxy-internal-text-control>\n\n <foxy-internal-filter-attribute-form-action-control infer=\"action\">\n </foxy-internal-filter-attribute-form-action-control>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n if (typeof this.form.value === 'string') {\n const url = new URL(decode(this.form.value), 'https://example.com');\n url.pathname = this.pathname ?? '';\n const value = encode(url.toString().substring(url.origin.length));\n if (value !== this.form.value) this.edit({ value });\n }\n }\n\n submit(): void {\n const constructor = this.constructor as typeof FilterAttributeForm;\n\n this.edit({\n visibility: constructor.attributeVisibility,\n name: constructor.attributeName,\n });\n\n super.submit();\n }\n\n private __getValueParam(key: string) {\n try {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n\n let result = url.searchParams.get(key) ?? '';\n\n if (\n key === constructor.filterQueryKey &&\n (this.in({ idle: { snapshot: 'clean' } }) || this.in({ idle: { template: 'clean' } }))\n ) {\n try {\n const fullQuery = new URLSearchParams(result);\n const defaults = new URLSearchParams(this.defaults ?? '');\n fullQuery.forEach((v, k) => defaults.set(k, v));\n result = defaults.toString();\n } catch {\n // no-op\n }\n }\n\n return result;\n } catch {\n return '';\n }\n }\n\n private __setValueParam(key: string, value: string) {\n try {\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n url.searchParams.set(key, value);\n this.edit({ value: encode(url.toString().substring(url.origin.length)) });\n } catch {\n // ignore\n }\n }\n\n private __handleFilterQueryChange(evt: CustomEvent) {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const element = evt.currentTarget as QueryBuilder;\n this.__setValueParam(constructor.filterQueryKey, element.value ?? '');\n }\n}\n"]}
1
+ {"version":3,"file":"FilterAttributeForm.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/FilterAttributeForm.ts"],"names":[],"mappings":"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","sourcesContent":["import type { PropertyDeclarations } from 'lit-element';\nimport type { TemplateResult } from 'lit-html';\nimport type { QueryBuilder } from '../QueryBuilder/QueryBuilder';\nimport type { Option } from '../QueryBuilder/types';\nimport type { Data } from './types';\n\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { encode, decode } from 'html-entities';\nimport { InternalForm } from '../../internal/InternalForm/InternalForm';\nimport { ifDefined } from 'lit-html/directives/if-defined';\nimport { html, svg } from 'lit-html';\n\nconst NS = 'filter-attribute-form';\nconst Base = TranslatableMixin(InternalForm, NS);\n\n/**\n * Form element for creating and editing saved filters in Admin. Saved filters\n * are powered by the Bookmark attribute format that allows adding custom sidebar items\n * to Admin. Bookmark attributes are named `foxy-admin-bookmark` and contain a\n * relative URL of the bookmarked Admin page in the value.\n *\n * @element foxy-filter-attribute-form\n * @since 1.24.0\n */\nexport class FilterAttributeForm extends Base<Data> {\n static readonly attributeVisibility: Data['visibility'] = 'restricted';\n\n static readonly filterQueryKey: string = 'filter_query';\n\n static readonly attributeName: string = 'foxy-admin-bookmark';\n\n static readonly filterNameKey: string = 'filter_name';\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n defaults: {},\n pathname: {},\n docsHref: { attribute: 'docs-href' },\n options: { type: Array },\n };\n }\n\n /** Default filter query. */\n defaults: string | null = null;\n\n /** Admin page pathname. */\n pathname: string | null = null;\n\n /** Same as the `docsHref` property of `QueryBuilder`. */\n docsHref: string | null = null;\n\n /** Filter options passed down to `QueryBuilder.options.` */\n options: Option[] = [];\n\n private readonly __filterNameGetValue = () => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n return this.__getValueParam(constructor.filterNameKey);\n };\n\n private readonly __filterNameSetValue = (v: string) => {\n const constructor = this.constructor as typeof FilterAttributeForm;\n this.__setValueParam(constructor.filterNameKey, v);\n };\n\n renderBody(): TemplateResult {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const filterQuery = this.__getValueParam(constructor.filterQueryKey);\n const hasChanges = this.in({ idle: { snapshot: 'dirty' } });\n const hasValue = !!this.form.value;\n const hasData = !!this.data;\n\n return html`\n <div class=\"flex gap-s\">\n ${this.data\n ? html`\n <div\n class=\"flex-1 rounded bg-contrast-5 transition-colors hover-bg-contrast-10 focus-within-bg-contrast-10 focus-within-ring-2 focus-within-ring-primary-50\"\n >\n <input\n placeholder=${this.t('filter-name.placeholder')}\n aria-label=${this.t('filter-name.label')}\n style=\"padding: 0 calc(0.625 * var(--lumo-font-size-m) + (var(--lumo-border-radius) / 4) - 1px)\"\n class=\"block w-full h-full appearance-none bg-transparent text-xl font-medium focus-outline-none\"\n .value=${this.__filterNameGetValue()}\n @keydown=${(evt: KeyboardEvent) => {\n if (evt.key === 'Enter') {\n evt.preventDefault();\n this.submit();\n }\n }}\n @input=${(evt: Event) => {\n this.__filterNameSetValue((evt.target as HTMLInputElement).value);\n }}\n />\n </div>\n `\n : html`\n <foxy-i18n class=\"text-xl flex-1 font-medium\" infer=\"header\" key=\"title\"></foxy-i18n>\n `}\n ${!hasValue || (!filterQuery && !hasData)\n ? ''\n : html`\n ${hasData && hasChanges\n ? html`\n <vaadin-button\n aria-label=${this.t('action.reset')}\n theme=\"contrast icon\"\n ?disabled=${this.disabled}\n @click=${() => this.undo()}\n >\n ${svg`<svg xmlns=\"http://www.w3.org/2000/svg\" fill=\"none\" viewBox=\"0 0 24 24\" stroke-width=\"1.5\" stroke=\"currentColor\" style=\"width: 1em; height: 1em; transform: translateY(-0.1em) scale(1.25)\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3\" /></svg>`}\n </vaadin-button>\n `\n : ''}\n\n <vaadin-button\n theme=${hasData ? (hasChanges ? 'secondary' : 'error') : 'success'}\n style=${ifDefined(hasData ? void 0 : '--lumo-button-size: auto')}\n ?disabled=${this.disabled}\n @click=${() => (!hasData || hasChanges ? this.submit() : this.delete())}\n >\n <foxy-i18n\n infer=\"action\"\n class=\"px-s\"\n key=${hasData ? (hasChanges ? 'update' : 'delete') : 'create'}\n >\n </foxy-i18n>\n </vaadin-button>\n `}\n </div>\n\n <foxy-query-builder\n docs-href=${ifDefined(this.docsHref ?? void 0)}\n options=${JSON.stringify(this.options)}\n infer=\"filter-query\"\n value=${filterQuery}\n @change=${this.__handleFilterQueryChange}\n >\n </foxy-query-builder>\n `;\n }\n\n updated(changes: Map<keyof this, unknown>): void {\n super.updated(changes);\n if (typeof this.form.value === 'string') {\n const url = new URL(decode(this.form.value), 'https://example.com');\n url.pathname = this.pathname ?? '';\n const value = encode(url.toString().substring(url.origin.length));\n if (value !== this.form.value) this.edit({ value });\n }\n }\n\n submit(): void {\n const constructor = this.constructor as typeof FilterAttributeForm;\n\n this.edit({\n visibility: constructor.attributeVisibility,\n name: constructor.attributeName,\n });\n\n super.submit();\n }\n\n private __getValueParam(key: string) {\n try {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n\n let result = url.searchParams.get(key) ?? '';\n\n if (\n key === constructor.filterQueryKey &&\n (this.in({ idle: { snapshot: 'clean' } }) || this.in({ idle: { template: 'clean' } }))\n ) {\n try {\n const fullQuery = new URLSearchParams(result);\n const defaults = new URLSearchParams(this.defaults ?? '');\n fullQuery.forEach((v, k) => defaults.set(k, v));\n result = defaults.toString();\n } catch {\n // no-op\n }\n }\n\n return result;\n } catch {\n return '';\n }\n }\n\n private __setValueParam(key: string, value: string) {\n try {\n const url = new URL(decode(this.form.value ?? ''), 'https://example.com');\n url.searchParams.set(key, value);\n this.edit({ value: encode(url.toString().substring(url.origin.length)) });\n } catch {\n // ignore\n }\n }\n\n private __handleFilterQueryChange(evt: CustomEvent) {\n const constructor = this.constructor as typeof FilterAttributeForm;\n const element = evt.currentTarget as QueryBuilder;\n this.__setValueParam(constructor.filterQueryKey, element.value ?? '');\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import './internal/InternalFilterAttributeFormActionControl/index';
2
- import '../../internal/InternalTextControl/index';
1
+ import '@vaadin/vaadin-button';
3
2
  import '../../internal/InternalForm/index';
4
3
  import '../QueryBuilder/index';
4
+ import '../I18n/index';
5
5
  import { FilterAttributeForm } from './FilterAttributeForm';
6
6
  export { FilterAttributeForm };
@@ -1,7 +1,7 @@
1
- import "./internal/InternalFilterAttributeFormActionControl/index.js";
2
- import "../../internal/InternalTextControl/index.js";
1
+ import '@vaadin/vaadin-button';
3
2
  import "../../internal/InternalForm/index.js";
4
3
  import "../QueryBuilder/index.js";
4
+ import "../I18n/index.js";
5
5
  import { FilterAttributeForm } from "./FilterAttributeForm.js";
6
6
  customElements.define('foxy-filter-attribute-form', FilterAttributeForm);
7
7
  export { FilterAttributeForm };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/index.ts"],"names":[],"mappings":"AAAA,sEAAmE;AACnE,qDAAkD;AAClD,8CAA2C;AAC3C,kCAA+B;AAE/B,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import './internal/InternalFilterAttributeFormActionControl/index';\nimport '../../internal/InternalTextControl/index';\nimport '../../internal/InternalForm/index';\nimport '../QueryBuilder/index';\n\nimport { FilterAttributeForm } from './FilterAttributeForm';\n\ncustomElements.define('foxy-filter-attribute-form', FilterAttributeForm);\n\nexport { FilterAttributeForm };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/elements/public/FilterAttributeForm/index.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,8CAA2C;AAE3C,kCAA+B;AAC/B,0BAAuB;AAEvB,OAAO,EAAE,mBAAmB,EAAE,iCAA8B;AAE5D,cAAc,CAAC,MAAM,CAAC,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;AAEzE,OAAO,EAAE,mBAAmB,EAAE,CAAC","sourcesContent":["import '@vaadin/vaadin-button';\n\nimport '../../internal/InternalForm/index';\n\nimport '../QueryBuilder/index';\nimport '../I18n/index';\n\nimport { FilterAttributeForm } from './FilterAttributeForm';\n\ncustomElements.define('foxy-filter-attribute-form', FilterAttributeForm);\n\nexport { FilterAttributeForm };\n"]}
@@ -97,11 +97,11 @@ export class GiftCardForm extends Base {
97
97
  };
98
98
  this.__storeLoaderId = 'storeLoader';
99
99
  this.__codesFilters = [
100
- { label: 'code', path: 'code', type: Type.String },
101
- { label: 'current_balance', path: 'current_balance', type: Type.Number },
102
- { label: 'end_date', path: 'end_date', type: Type.Date },
103
- { label: 'date_created', path: 'date_created', type: Type.Date },
104
- { label: 'date_modified', path: 'date_modified', type: Type.Date },
100
+ { label: 'option_code', path: 'code', type: Type.String },
101
+ { label: 'option_current_balance', path: 'current_balance', type: Type.Number },
102
+ { label: 'option_end_date', path: 'end_date', type: Type.Date },
103
+ { label: 'option_date_created', path: 'date_created', type: Type.Date },
104
+ { label: 'option_date_modified', path: 'date_modified', type: Type.Date },
105
105
  ];
106
106
  this.__codesActions = [
107
107
  {
@@ -1 +1 @@
1
- {"version":3,"file":"GiftCardForm.js","sourceRoot":"","sources":["../../../../src/elements/public/GiftCardForm/GiftCardForm.ts"],"names":[],"mappings":"AAUA,OAAO,EAAU,IAAI,EAAE,iCAA8B;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAEnC,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,oDAAiD;AACxE,OAAO,EAAE,UAAU,EAAE,wBAAqB;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAE3D,MAAM,EAAE,GAAG,gBAAgB,CAAC;AAC5B,MAAM,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC;AAElE;;;;;GAKG;AACH,MAAM,OAAO,YAAa,SAAQ,IAAU;IAA5C;;QAwCE,iGAAiG;QACjG,2BAAsB,GAAqC,IAAI,CAAC;QAEhE,8DAA8D;QAC9D,oBAAe,GAAoC,EAAE,CAAC,EAAE;YACtD,OAAO,sCAAsC,EAAE,EAAE,CAAC;QACpD,CAAC,CAAC;QAEF,+DAA+D;QAC/D,gBAAW,GAAkB,IAAI,CAAC;QAEjB,wCAAmC,GAAG,GAAG,EAAE;;YAC1D,aAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,CAAC;QAC5D,CAAC,CAAC;QAEe,wCAAmC,GAAG,CAAC,MAAc,EAAE,EAAE;;YACxE,MAAM,MAAM,eAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,mCAAI,MAAM,CAAC;YAE5E,IAAI,CAAC,IAAI,CAAC;gBACR,mBAAmB,EAAE;oBACnB,sBAAsB,EAAE,IAAI;oBAC5B,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;oBACtD,mBAAmB,EAAE,MAAM;iBAC5B;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEe,wCAAmC,GAAG,GAAG,EAAE;;YAC1D,aAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,CAAC;QAC5D,CAAC,CAAC;QAEe,wCAAmC,GAAG,CAAC,MAAc,EAAE,EAAE;;YACxE,MAAM,MAAM,eAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,mCAAI,MAAM,CAAC;YAE5E,IAAI,CAAC,IAAI,CAAC;gBACR,mBAAmB,EAAE;oBACnB,sBAAsB,EAAE,IAAI;oBAC5B,mBAAmB,EAAE,MAAM;oBAC3B,mBAAmB,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM;iBACvD;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEe,oCAA+B,GAAG,GAAG,EAAE;;YACtD,OAAO,CAAC,QAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,sBAAsB,CAAA,CAAC;QACjE,CAAC,CAAC;QAEe,oCAA+B,GAAG,CAAC,QAAiB,EAAE,EAAE;;YACvE,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC;oBACR,mBAAmB,EAAE;wBACnB,sBAAsB,EAAE,IAAI;wBAC5B,mBAAmB,cAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,mCAAI,CAAC;wBAC5E,mBAAmB,cAAE,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,mCAAI,CAAC;qBAC7E;iBACF,CAAC,CAAC;aACJ;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC,CAAC;aAC1C;QACH,CAAC,CAAC;QAEe,sCAAiC,GAAG,GAAG,EAAE;;YACxD,aAAO,IAAI,CAAC,IAAI,CAAC,yBAAyB,0CACtC,KAAK,CAAC,GAAG,EACV,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EACtB,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gBACb,KAAK;gBACL,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;oBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;oBAChF,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,CAAC;aAC/D,CAAC,EAAE;QACR,CAAC,CAAC;QAEe,sCAAiC,GAAG,CAAC,QAAgB,EAAE,EAAE;YACxE,IAAI,CAAC,IAAI,CAAC;gBACR,yBAAyB,EAAE,QAAQ;qBAChC,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;qBAClE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;qBAC9C,IAAI,CAAC,GAAG,CAAC;aACb,CAAC,CAAC;QACL,CAAC,CAAC;QAEe,2BAAsB,GAAG,GAAG,EAAE;;YAC7C,aAAO,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAE,WAAW,GAAG;QAChD,CAAC,CAAC;QAEe,oBAAe,GAAG,aAAa,CAAC;QAEhC,mBAAc,GAAa;YAC1C,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YAClD,EAAE,KAAK,EAAE,iBAAiB,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE;YACxE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YACxD,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;YAChE,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;SACnE,CAAC;QAEM,mBAAc,GAA+C;YACnE;gBACE,KAAK,EAAE,UAAU;gBACjB,KAAK,EAAE,MAAM;gBACb,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,KAAK,EAAC,IAAI,EAAC,EAAE;oBACpB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;oBACtC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;oBAE/C,IAAI;wBACF,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC;qBACtC;oBAAC,WAAM;wBACN,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,CAAC;qBACxC;4BAAS;wBACR,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;wBAC/C,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;4BACtC,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;wBACjD,CAAC,EAAE,IAAI,CAAC,CAAC;qBACV;gBACH,CAAC;aACF;SACF,CAAC;IAqLJ,CAAC;IAnVC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,sBAAsB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC5C,eAAe,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YACrC,WAAW,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE;SAC3C,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;YAE5D,IAAI,CAAC,EAAE;;gBACL,UAAI,IAAI,CAAC,mBAAmB,0CAAE,sBAAsB,EAAE;oBACpD,IAAI,CAAC,IAAI,CAAC,GAAG;wBAAE,OAAO,kBAAkB,CAAC;oBACzC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG;wBAAE,OAAO,kBAAkB,CAAC;iBACtD;gBAED,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,EAAE;;gBACL,MAAM,CAAC,SAAG,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,CAAC;gBACxD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,CAAC;YAED,IAAI,CAAC,EAAE;;gBACL,MAAM,CAAC,SAAG,IAAI,CAAC,mBAAmB,0CAAE,mBAAmB,CAAC;gBACxD,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5E,CAAC;YAED,CAAC,EAAE,yBAAyB,EAAE,CAAC,EAAE,EAAE,EAAE;gBACnC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,wCAAwC,CAAC;YAC5E,CAAC;SACF,CAAC;IACJ,CAAC;IA2HD,IAAI,cAAc;;QAChB,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACd,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,YAAY,CAAC,CAAC;SAClE;QAED,IAAI,QAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,0CAAE,sBAAsB,CAAA,EAAE;YAC1D,WAAW,CAAC,IAAI,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,0BAA0B,CAAC,CAAC;SAC9F;QAED,OAAO,IAAI,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,qBAAqB;QACvB,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IACxC,CAAC;IAED,mBAAmB,CAAC,IAAU;QAC5B,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI;;;mBAGnC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC;;;;;iBAK1C,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI;;;mBAGpC,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC;;;;QAInD,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC;KAClC,CAAC;IACJ,CAAC;IAED,UAAU;;QACR,IAAI,QAA4B,CAAC;QAEjC,IAAI;YACF,MAAM,GAAG,GAAG,IAAI,GAAG,aAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,oBAAoB,EAAE,IAAI,mCAAI,EAAE,CAAC,CAAC;YACxE,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAEnD,QAAQ,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;SAC3B;QAAC,WAAM;YACN,QAAQ,GAAG,SAAS,CAAC;SACtB;QAED,OAAO,IAAI,CAAA;QACP,IAAI,CAAC,YAAY,EAAE;;;;;;;;;;sBAUL,IAAI,CAAC,sBAAsB;qBAC5B,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,yBAAyB,KAAK,EAAE,CAAC;YAC/C,KAAK;SACN,CAAC,CAAC;;;;;;;;;;;;;;;sBAeS,IAAI,CAAC,+BAA+B;sBACpC,IAAI,CAAC,+BAA+B;;;;;;;;mBAQvC,SAAS,OAAC,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAE,WAAW,GAAG;;;sBAG9C,IAAI,CAAC,mCAAmC;sBACxC,IAAI,CAAC,mCAAmC;;;;;;mBAM3C,SAAS,OAAC,IAAI,CAAC,IAAI,CAAC,aAAa,0CAAE,WAAW,GAAG;;;sBAG9C,IAAI,CAAC,mCAAmC;sBACxC,IAAI,CAAC,mCAAmC;;;;;;iBAM7C,SAAS,OAAC,IAAI,CAAC,WAAW,mCAAI,KAAK,CAAC,CAAC;gBACtC,QAAQ;;;;;;mBAML,IAAI,CAAC,cAAc;mBACnB,IAAI,CAAC,cAAc;qBACjB;YACX,yBAAyB,EAAE,IAAI,CAAC,sBAAsB;YACtD,kBAAkB,EAAE,IAAI,CAAC,eAAe;SACzC;;;;;;oBAMW,IAAI,CAAC,iCAAiC;oBACtC,IAAI,CAAC,iCAAiC;iBACzC;YACP,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;YACzE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,sCAAsC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;SAC1E;;;;;;;;uBAQc,SAAS,aAAC,IAAI,CAAC,aAAa,0CAAE,IAAI,0CAAE,MAAM,CAAC,oBAAoB,EAAE,IAAI,CAAC;qBACxE,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,8BAA8B,EAAE,IAAI,CAAC;;kBAEpE,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;;;;;gBAQxC,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC;;;;;;;;;QAS1D,KAAK,CAAC,UAAU,EAAE;;;;;eAKX,SAAS,OAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC;aAC/C,IAAI,CAAC,eAAe;kBACf,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE;;;KAGvC,CAAC;IACJ,CAAC;IAED,IAAY,aAAa;QAEvB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,CAAS,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3E,CAAC;CACF","sourcesContent":["import type { PropertyDeclarations, TemplateResult } from 'lit-element';\nimport type { TransactionPageHrefGetter } from '../GiftCardCodeForm/types';\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 getTransactionPageHref: { attribute: false },\n getCustomerHref: { attribute: false },\n codesFilter: { attribute: 'codes-filter' },\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 /** When set, the Cart Item section in Gift Card Code form will display a link to transaction. */\n getTransactionPageHref: TransactionPageHrefGetter | null = null;\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 /** When set, will apply as default filter in Codes section. */\n codesFilter: string | null = null;\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 filter=${ifDefined(this.codesFilter ?? void 0)}\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 .actions=${this.__codesActions}\n .filters=${this.__codesFilters}\n .formProps=${{\n '.getTransactionPageHref': this.getTransactionPageHref,\n '.getCustomerHref': this.getCustomerHref,\n }}\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 { TransactionPageHrefGetter } from '../GiftCardCodeForm/types';\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 getTransactionPageHref: { attribute: false },\n getCustomerHref: { attribute: false },\n codesFilter: { attribute: 'codes-filter' },\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 /** When set, the Cart Item section in Gift Card Code form will display a link to transaction. */\n getTransactionPageHref: TransactionPageHrefGetter | null = null;\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 /** When set, will apply as default filter in Codes section. */\n codesFilter: string | null = null;\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: 'option_code', path: 'code', type: Type.String },\n { label: 'option_current_balance', path: 'current_balance', type: Type.Number },\n { label: 'option_end_date', path: 'end_date', type: Type.Date },\n { label: 'option_date_created', path: 'date_created', type: Type.Date },\n { label: 'option_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 filter=${ifDefined(this.codesFilter ?? void 0)}\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 .actions=${this.__codesActions}\n .filters=${this.__codesFilters}\n .formProps=${{\n '.getTransactionPageHref': this.getTransactionPageHref,\n '.getCustomerHref': this.getCustomerHref,\n }}\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,5 +1,7 @@
1
- import { CSSResultArray, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';
2
- import { Operator, Option, Type } from './types';
1
+ import type { CSSResultArray, PropertyDeclarations, TemplateResult } from 'lit-element';
2
+ import type { Option } from './types';
3
+ import { LitElement } from 'lit-element';
4
+ import { Operator, Type } from './types';
3
5
  declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/inferrable").InferrableMixinHost> & {
4
6
  inferredProperties: string[];
5
7
  } & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
@@ -15,7 +17,7 @@ declare const Base: typeof LitElement & import("lit-element").Constructor<import
15
17
  * @element foxy-query-builder
16
18
  * @since 1.12.0
17
19
  */
18
- declare class QueryBuilder extends Base {
20
+ export declare class QueryBuilder extends Base {
19
21
  /** QueryBuilder dispatches this event on itself when value changes. */
20
22
  static readonly ChangeEvent: {
21
23
  new (typeArg: string, eventInitDict?: CustomEventInit<void> | undefined): {
@@ -51,16 +53,23 @@ declare class QueryBuilder extends Base {
51
53
  static readonly Type: typeof Type;
52
54
  static get properties(): PropertyDeclarations;
53
55
  static get styles(): CSSResultArray;
56
+ /** Simple Mode will not show controls for these paths unless explicitly specified in options. */
57
+ reservedPaths: string[];
54
58
  /** If true, doesn't add `zoom` query parameter for complex paths. */
55
59
  disableZoom: boolean;
56
- /** If true, hides the UI for the "OR" operator in queries. */
60
+ /** If true, hides the UI for the "OR" operator in queries in the Advanced Mode. */
57
61
  disableOr: boolean;
58
62
  /** List of operators available in the builder UI. */
59
63
  operators: Operator[];
60
- /** Autocomplete suggestions. */
64
+ /** When provided, will display a documentation link in the Advanced Mode. */
65
+ docsHref: string | null;
66
+ /** Filter options in Simple Mode and autocomplete suggestions in Advanced Mode. */
61
67
  options: Option[] | null;
62
68
  /** Current value as hAPI filter string. */
63
69
  value: string | null;
70
+ private __isAdvancedMode;
64
71
  render(): TemplateResult;
72
+ private get __isSimpleModeSupported();
73
+ private get __simpleModeOptions();
65
74
  }
66
- export { QueryBuilder };
75
+ export {};