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

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 (633) hide show
  1. package/dist/cdn/foxy-access-recovery-form.js +1 -1
  2. package/dist/cdn/foxy-address-card.js +3 -85
  3. package/dist/cdn/foxy-address-form.js +1 -1
  4. package/dist/cdn/foxy-api-browser.js +5 -0
  5. package/dist/cdn/foxy-applied-tax-card.js +1 -1
  6. package/dist/cdn/foxy-attribute-card.js +1 -1
  7. package/dist/cdn/foxy-attribute-form.js +1 -1
  8. package/dist/cdn/foxy-cancellation-form.js +1 -1
  9. package/dist/cdn/foxy-collection-page.js +1 -1
  10. package/dist/cdn/foxy-collection-pages.js +1 -1
  11. package/dist/cdn/foxy-copy-to-clipboard.js +1 -0
  12. package/dist/cdn/foxy-coupon-card.js +1 -1
  13. package/dist/cdn/foxy-coupon-code-form.js +1 -1
  14. package/dist/cdn/foxy-coupon-codes-form.js +1 -1
  15. package/dist/cdn/foxy-coupon-detail-card.js +1 -0
  16. package/dist/cdn/foxy-coupon-form.js +1 -1
  17. package/dist/cdn/foxy-custom-field-card.js +1 -1
  18. package/dist/cdn/foxy-custom-field-form.js +1 -1
  19. package/dist/cdn/foxy-customer-api.js +1 -1
  20. package/dist/cdn/foxy-customer-card.js +1 -1
  21. package/dist/cdn/foxy-customer-form.js +1 -1
  22. package/dist/cdn/foxy-customer-portal-settings.js +1 -1
  23. package/dist/cdn/foxy-customer-portal.js +15 -15
  24. package/dist/cdn/foxy-customer.js +6 -6
  25. package/dist/cdn/foxy-customers-table.js +1 -1
  26. package/dist/cdn/foxy-discount-builder.js +1 -0
  27. package/dist/cdn/foxy-discount-card.js +1 -1
  28. package/dist/cdn/foxy-discount-detail-card.js +1 -0
  29. package/dist/cdn/foxy-donation.js +1 -1
  30. package/dist/cdn/foxy-email-template-form.js +1 -1
  31. package/dist/cdn/foxy-error-entry-card.js +1 -1
  32. package/dist/cdn/foxy-form-dialog.js +1 -1
  33. package/dist/cdn/foxy-generate-codes-form.js +1 -1
  34. package/dist/cdn/foxy-gift-card-card.js +1 -1
  35. package/dist/cdn/foxy-gift-card-code-form.js +1 -1
  36. package/dist/cdn/foxy-gift-card-codes-form.js +1 -1
  37. package/dist/cdn/foxy-gift-card-form.js +1 -1
  38. package/dist/cdn/foxy-i18n.js +1 -1
  39. package/dist/cdn/foxy-item-card.js +1 -0
  40. package/dist/cdn/foxy-item-form.js +1 -0
  41. package/dist/cdn/foxy-item-option-card.js +1 -0
  42. package/dist/cdn/foxy-item-option-form.js +1 -0
  43. package/dist/cdn/foxy-items-form.js +1 -1
  44. package/dist/cdn/foxy-nucleon-element.js +1 -1
  45. package/dist/cdn/foxy-pagination.js +1 -1
  46. package/dist/cdn/foxy-payment-card.js +1 -1
  47. package/dist/cdn/foxy-payment-method-card.js +1 -1
  48. package/dist/cdn/foxy-query-builder.js +1 -1
  49. package/dist/cdn/foxy-report-form.js +195 -0
  50. package/dist/cdn/foxy-reports-table.js +41 -0
  51. package/dist/cdn/foxy-shipment-card.js +13 -0
  52. package/dist/cdn/foxy-sign-in-form.js +1 -1
  53. package/dist/cdn/foxy-spinner.js +2 -2
  54. package/dist/cdn/foxy-store-shipping-method-card.js +1 -0
  55. package/dist/cdn/foxy-store-shipping-method-form.js +150 -0
  56. package/dist/cdn/foxy-subscription-card.js +1 -1
  57. package/dist/cdn/foxy-subscription-form.js +4 -4
  58. package/dist/cdn/foxy-subscriptions-table.js +1 -1
  59. package/dist/cdn/foxy-swipe-actions.js +1 -0
  60. package/dist/cdn/foxy-table.js +1 -1
  61. package/dist/cdn/foxy-tax-card.js +1 -1
  62. package/dist/cdn/foxy-tax-form.js +1 -1
  63. package/dist/cdn/foxy-template-config-form.js +1 -1
  64. package/dist/cdn/foxy-template-form.js +1 -1
  65. package/dist/cdn/foxy-transaction-card.js +1 -1
  66. package/dist/cdn/foxy-transaction.js +1 -0
  67. package/dist/cdn/foxy-transactions-table.js +1 -1
  68. package/dist/cdn/foxy-user-form.js +1 -1
  69. package/dist/cdn/foxy-users-table.js +1 -1
  70. package/dist/cdn/foxy-webhook-card.js +1 -0
  71. package/dist/cdn/foxy-webhook-form.js +318 -0
  72. package/dist/cdn/foxy-webhook-log-card.js +1 -0
  73. package/dist/cdn/foxy-webhook-status-card.js +1 -0
  74. package/dist/cdn/shared-0b9c755c.js +1 -0
  75. package/dist/cdn/{shared-218ba06e.js → shared-0eb966c5.js} +1 -1
  76. package/dist/cdn/{shared-65dfd512.js → shared-12f8034b.js} +2 -11
  77. package/dist/cdn/{shared-7f0a9790.js → shared-16d10bca.js} +1 -1
  78. package/dist/cdn/{shared-1a67bc75.js → shared-17331dc5.js} +4 -4
  79. package/dist/cdn/{shared-59e44f29.js → shared-1bbd9b73.js} +1 -1
  80. package/dist/cdn/{shared-07134f93.js → shared-22ba9566.js} +1 -1
  81. package/dist/cdn/shared-29dd9d87.js +1 -0
  82. package/dist/cdn/shared-2b077e01.js +134 -0
  83. package/dist/cdn/shared-2caab7af.js +169 -0
  84. package/dist/cdn/shared-2f186d21.js +1 -0
  85. package/dist/cdn/{shared-548f721a.js → shared-2f19b670.js} +1 -1
  86. package/dist/cdn/shared-30bb4828.js +1 -0
  87. package/dist/cdn/{shared-a040d79d.js → shared-32b15545.js} +1 -1
  88. package/dist/cdn/shared-33b47806.js +29 -0
  89. package/dist/cdn/{shared-0f38a631.js → shared-40689cd2.js} +1 -1
  90. package/dist/cdn/shared-4473f0cf.js +1 -0
  91. package/dist/cdn/shared-48ef8a04.js +1 -0
  92. package/dist/cdn/{shared-f7fbb249.js → shared-4f8fe424.js} +10 -10
  93. package/dist/cdn/{shared-60126eee.js → shared-4fc53390.js} +1 -1
  94. package/dist/cdn/shared-5652560a.js +1 -0
  95. package/dist/cdn/shared-58a35351.js +1 -0
  96. package/dist/cdn/{shared-f4ad24f4.js → shared-59796faa.js} +2 -2
  97. package/dist/cdn/shared-5f411ce2.js +1 -0
  98. package/dist/cdn/shared-6c1aab74.js +1 -0
  99. package/dist/cdn/{shared-ea9f7255.js → shared-6eeb69e7.js} +5 -5
  100. package/dist/cdn/{shared-448781f9.js → shared-75e34b5b.js} +1 -1
  101. package/dist/cdn/shared-7ed7818e.js +1 -0
  102. package/dist/cdn/shared-8166ba00.js +1 -0
  103. package/dist/cdn/{shared-4f424828.js → shared-824f6e03.js} +2 -2
  104. package/dist/cdn/shared-8936b109.js +12 -0
  105. package/dist/cdn/shared-89dce718.js +1 -0
  106. package/dist/cdn/shared-95f4cffd.js +1 -0
  107. package/dist/cdn/{shared-6d45a07b.js → shared-9803aa7c.js} +1 -1
  108. package/dist/cdn/{shared-b0f0e8b5.js → shared-99940888.js} +1 -1
  109. package/dist/cdn/{shared-8f2c9582.js → shared-9f9cdbb0.js} +1 -1
  110. package/dist/cdn/{shared-b710881a.js → shared-a0c6a159.js} +2 -2
  111. package/dist/cdn/shared-a64ead08.js +9 -0
  112. package/dist/cdn/{shared-30dd6de7.js → shared-b52c7edf.js} +14 -19
  113. package/dist/cdn/shared-b772fbb1.js +15 -0
  114. package/dist/cdn/shared-c13674cb.js +201 -0
  115. package/dist/cdn/{shared-fab8c705.js → shared-c5a638d1.js} +10 -10
  116. package/dist/cdn/{shared-5a54a9bc.js → shared-d539ee69.js} +1 -1
  117. package/dist/cdn/shared-d673b138.js +1 -0
  118. package/dist/cdn/shared-d6dd67a5.js +82 -0
  119. package/dist/cdn/shared-d6ed2e5c.js +1 -0
  120. package/dist/cdn/shared-da130124.js +1 -0
  121. package/dist/cdn/{shared-073cb8e9.js → shared-dbdc2a38.js} +1 -1
  122. package/dist/cdn/shared-dc73b9a5.js +159 -0
  123. package/dist/cdn/shared-e06de519.js +1 -0
  124. package/dist/cdn/{shared-9221e6b2.js → shared-e1c1e8e2.js} +1 -1
  125. package/dist/cdn/shared-e25c676a.js +1 -0
  126. package/dist/cdn/shared-e6a7b2f1.js +1 -0
  127. package/dist/cdn/shared-f966bbc3.js +1 -0
  128. package/dist/cdn/shared-f9f9ed5b.js +6 -0
  129. package/dist/cdn/shared-fadcb2e1.js +1 -0
  130. package/dist/cdn/shared-fcdc4903.js +1 -0
  131. package/dist/cdn/{shared-46ee137f.js → shared-fd001fd3.js} +13 -13
  132. package/dist/cdn/translations/api-browser/en.json +31 -0
  133. package/dist/cdn/translations/copy-to-clipboard/en.json +6 -0
  134. package/dist/cdn/translations/coupon-form/en.json +21 -2
  135. package/dist/cdn/translations/discount-builder/en.json +14 -0
  136. package/dist/cdn/translations/gift-card-form/en.json +21 -0
  137. package/dist/cdn/translations/item-card/en.json +9 -0
  138. package/dist/cdn/translations/item-form/en.json +411 -0
  139. package/dist/cdn/translations/item-option-form/en.json +43 -0
  140. package/dist/cdn/translations/report-form/en.json +38 -0
  141. package/dist/cdn/translations/reports-table/en.json +21 -0
  142. package/dist/cdn/translations/shipment-card/en.json +470 -0
  143. package/dist/cdn/translations/store-shipping-method-card/en.json +15 -0
  144. package/dist/cdn/translations/store-shipping-method-form/en.json +83 -0
  145. package/dist/cdn/translations/transaction/en.json +965 -0
  146. package/dist/cdn/translations/webhook-card/en.json +7 -0
  147. package/dist/cdn/translations/webhook-form/en.json +101 -0
  148. package/dist/cdn/translations/webhook-log-card/en.json +8 -0
  149. package/dist/cdn/translations/webhook-status-card/en.json +11 -0
  150. package/dist/elements/index.d.ts +1 -0
  151. package/dist/elements/index.js +2 -0
  152. package/dist/elements/index.js.map +1 -0
  153. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.d.ts +25 -0
  154. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js +98 -0
  155. package/dist/elements/internal/InternalAsyncComboBoxControl/InternalAsyncComboBoxControl.js.map +1 -0
  156. package/dist/elements/internal/InternalAsyncComboBoxControl/index.d.ts +4 -0
  157. package/dist/elements/internal/InternalAsyncComboBoxControl/index.js +6 -0
  158. package/dist/elements/internal/InternalAsyncComboBoxControl/index.js.map +1 -0
  159. package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.d.ts +31 -0
  160. package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js +140 -0
  161. package/dist/elements/internal/InternalAsyncDetailsControl/InternalAsyncDetailsControl.js.map +1 -0
  162. package/dist/elements/internal/InternalAsyncDetailsControl/index.d.ts +8 -0
  163. package/dist/elements/internal/InternalAsyncDetailsControl/index.js +10 -0
  164. package/dist/elements/internal/InternalAsyncDetailsControl/index.js.map +1 -0
  165. package/dist/elements/internal/InternalCard/InternalCard.d.ts +21 -0
  166. package/dist/elements/internal/InternalCard/InternalCard.js +53 -0
  167. package/dist/elements/internal/InternalCard/InternalCard.js.map +1 -0
  168. package/dist/elements/internal/InternalCard/index.d.ts +3 -0
  169. package/dist/elements/internal/InternalCard/index.js +5 -0
  170. package/dist/elements/internal/InternalCard/index.js.map +1 -0
  171. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.d.ts +17 -0
  172. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.js +51 -0
  173. package/dist/elements/internal/InternalCheckboxGroupControl/InternalCheckboxGroupControl.js.map +1 -0
  174. package/dist/elements/internal/InternalCheckboxGroupControl/index.d.ts +6 -0
  175. package/dist/elements/internal/InternalCheckboxGroupControl/index.js +8 -0
  176. package/dist/elements/internal/InternalCheckboxGroupControl/index.js.map +1 -0
  177. package/dist/elements/internal/InternalCheckboxGroupControl/types.d.ts +6 -0
  178. package/dist/elements/internal/InternalCheckboxGroupControl/types.js +2 -0
  179. package/dist/elements/internal/InternalCheckboxGroupControl/types.js.map +1 -0
  180. package/dist/elements/internal/InternalControl/InternalControl.d.ts +41 -0
  181. package/dist/elements/internal/InternalControl/InternalControl.js +74 -0
  182. package/dist/elements/internal/InternalControl/InternalControl.js.map +1 -0
  183. package/dist/elements/internal/InternalControl/index.d.ts +4 -0
  184. package/dist/elements/internal/InternalControl/index.js +6 -0
  185. package/dist/elements/internal/InternalControl/index.js.map +1 -0
  186. package/dist/elements/internal/InternalCreateControl/InternalCreateControl.d.ts +22 -0
  187. package/dist/elements/internal/InternalCreateControl/InternalCreateControl.js +60 -0
  188. package/dist/elements/internal/InternalCreateControl/InternalCreateControl.js.map +1 -0
  189. package/dist/elements/internal/InternalCreateControl/index.d.ts +5 -0
  190. package/dist/elements/internal/InternalCreateControl/index.js +7 -0
  191. package/dist/elements/internal/InternalCreateControl/index.js.map +1 -0
  192. package/dist/elements/internal/InternalDateControl/InternalDateControl.d.ts +14 -0
  193. package/dist/elements/internal/InternalDateControl/InternalDateControl.js +60 -0
  194. package/dist/elements/internal/InternalDateControl/InternalDateControl.js.map +1 -0
  195. package/dist/elements/internal/InternalDateControl/index.d.ts +4 -0
  196. package/dist/elements/internal/InternalDateControl/index.js +6 -0
  197. package/dist/elements/internal/InternalDateControl/index.js.map +1 -0
  198. package/dist/elements/internal/InternalDeleteControl/InternalDeleteControl.d.ts +15 -0
  199. package/dist/elements/internal/InternalDeleteControl/InternalDeleteControl.js +51 -0
  200. package/dist/elements/internal/InternalDeleteControl/InternalDeleteControl.js.map +1 -0
  201. package/dist/elements/internal/InternalDeleteControl/index.d.ts +6 -0
  202. package/dist/elements/internal/InternalDeleteControl/index.js +8 -0
  203. package/dist/elements/internal/InternalDeleteControl/index.js.map +1 -0
  204. package/dist/elements/internal/InternalDetails/InternalDetails.d.ts +22 -0
  205. package/dist/elements/internal/InternalDetails/InternalDetails.js +71 -0
  206. package/dist/elements/internal/InternalDetails/InternalDetails.js.map +1 -0
  207. package/dist/elements/internal/InternalDetails/index.d.ts +6 -0
  208. package/dist/elements/internal/InternalDetails/index.js +8 -0
  209. package/dist/elements/internal/InternalDetails/index.js.map +1 -0
  210. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.d.ts +79 -0
  211. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.js +155 -0
  212. package/dist/elements/internal/InternalEditableControl/InternalEditableControl.js.map +1 -0
  213. package/dist/elements/internal/InternalEditableControl/index.d.ts +3 -0
  214. package/dist/elements/internal/InternalEditableControl/index.js +5 -0
  215. package/dist/elements/internal/InternalEditableControl/index.js.map +1 -0
  216. package/dist/elements/internal/InternalForm/InternalForm.d.ts +27 -0
  217. package/dist/elements/internal/InternalForm/InternalForm.js +65 -0
  218. package/dist/elements/internal/InternalForm/InternalForm.js.map +1 -0
  219. package/dist/elements/internal/InternalForm/index.d.ts +6 -0
  220. package/dist/elements/internal/InternalForm/index.js +8 -0
  221. package/dist/elements/internal/InternalForm/index.js.map +1 -0
  222. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.d.ts +14 -0
  223. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js +115 -0
  224. package/dist/elements/internal/InternalFrequencyControl/InternalFrequencyControl.js.map +1 -0
  225. package/dist/elements/internal/InternalFrequencyControl/index.d.ts +6 -0
  226. package/dist/elements/internal/InternalFrequencyControl/index.js +8 -0
  227. package/dist/elements/internal/InternalFrequencyControl/index.js.map +1 -0
  228. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.d.ts +13 -0
  229. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js +41 -0
  230. package/dist/elements/internal/InternalIntegerControl/InternalIntegerControl.js.map +1 -0
  231. package/dist/elements/internal/InternalIntegerControl/index.d.ts +4 -0
  232. package/dist/elements/internal/InternalIntegerControl/index.js +6 -0
  233. package/dist/elements/internal/InternalIntegerControl/index.js.map +1 -0
  234. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.d.ts +13 -0
  235. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js +41 -0
  236. package/dist/elements/internal/InternalNumberControl/InternalNumberControl.js.map +1 -0
  237. package/dist/elements/internal/InternalNumberControl/index.d.ts +4 -0
  238. package/dist/elements/internal/InternalNumberControl/index.js +6 -0
  239. package/dist/elements/internal/InternalNumberControl/index.js.map +1 -0
  240. package/dist/elements/internal/InternalRadioGroupControl/InternalRadioGroupControl.d.ts +17 -0
  241. package/dist/elements/internal/InternalRadioGroupControl/InternalRadioGroupControl.js +51 -0
  242. package/dist/elements/internal/InternalRadioGroupControl/InternalRadioGroupControl.js.map +1 -0
  243. package/dist/elements/internal/InternalRadioGroupControl/index.d.ts +6 -0
  244. package/dist/elements/internal/InternalRadioGroupControl/index.js +8 -0
  245. package/dist/elements/internal/InternalRadioGroupControl/index.js.map +1 -0
  246. package/dist/elements/internal/InternalRadioGroupControl/types.d.ts +6 -0
  247. package/dist/elements/internal/InternalRadioGroupControl/types.js +2 -0
  248. package/dist/elements/internal/InternalRadioGroupControl/types.js.map +1 -0
  249. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.d.ts +13 -0
  250. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.js +40 -0
  251. package/dist/elements/internal/InternalTextAreaControl/InternalTextAreaControl.js.map +1 -0
  252. package/dist/elements/internal/InternalTextAreaControl/index.d.ts +4 -0
  253. package/dist/elements/internal/InternalTextAreaControl/index.js +6 -0
  254. package/dist/elements/internal/InternalTextAreaControl/index.js.map +1 -0
  255. package/dist/elements/internal/InternalTextControl/InternalTextControl.d.ts +13 -0
  256. package/dist/elements/internal/InternalTextControl/InternalTextControl.js +40 -0
  257. package/dist/elements/internal/InternalTextControl/InternalTextControl.js.map +1 -0
  258. package/dist/elements/internal/InternalTextControl/index.d.ts +4 -0
  259. package/dist/elements/internal/InternalTextControl/index.js +6 -0
  260. package/dist/elements/internal/InternalTextControl/index.js.map +1 -0
  261. package/dist/elements/internal/InternalTimestampsControl/InternalTimestampsControl.d.ts +14 -0
  262. package/dist/elements/internal/InternalTimestampsControl/InternalTimestampsControl.js +57 -0
  263. package/dist/elements/internal/InternalTimestampsControl/InternalTimestampsControl.js.map +1 -0
  264. package/dist/elements/internal/InternalTimestampsControl/index.d.ts +4 -0
  265. package/dist/elements/internal/InternalTimestampsControl/index.js +6 -0
  266. package/dist/elements/internal/InternalTimestampsControl/index.js.map +1 -0
  267. package/dist/elements/private/Dialog/Dialog.d.ts +4 -2
  268. package/dist/elements/private/Dialog/Dialog.js +3 -1
  269. package/dist/elements/private/Dialog/Dialog.js.map +1 -1
  270. package/dist/elements/private/EditableList/EditableList.d.ts +4 -2
  271. package/dist/elements/private/EditableList/EditableList.js +3 -1
  272. package/dist/elements/private/EditableList/EditableList.js.map +1 -1
  273. package/dist/elements/private/FrequencyInput/FrequencyInput.d.ts +3 -1
  274. package/dist/elements/private/FrequencyInput/FrequencyInput.js +2 -1
  275. package/dist/elements/private/FrequencyInput/FrequencyInput.js.map +1 -1
  276. package/dist/elements/public/ApiBrowser/ApiBrowser.d.ts +31 -0
  277. package/dist/elements/public/ApiBrowser/ApiBrowser.js +221 -0
  278. package/dist/elements/public/ApiBrowser/ApiBrowser.js.map +1 -0
  279. package/dist/elements/public/ApiBrowser/index.d.ts +10 -0
  280. package/dist/elements/public/ApiBrowser/index.js +12 -0
  281. package/dist/elements/public/ApiBrowser/index.js.map +1 -0
  282. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.d.ts +32 -0
  283. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js +297 -0
  284. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/InternalApiBrowserResourceForm.js.map +1 -0
  285. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/index.d.ts +11 -0
  286. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/index.js +13 -0
  287. package/dist/elements/public/ApiBrowser/internal/InternalApiBrowserResourceForm/index.js.map +1 -0
  288. package/dist/elements/public/ApiBrowser/types.d.ts +10 -0
  289. package/dist/elements/public/ApiBrowser/types.js +2 -0
  290. package/dist/elements/public/ApiBrowser/types.js.map +1 -0
  291. package/dist/elements/public/CollectionPage/CollectionPage.d.ts +4 -3
  292. package/dist/elements/public/CollectionPage/CollectionPage.js +5 -3
  293. package/dist/elements/public/CollectionPage/CollectionPage.js.map +1 -1
  294. package/dist/elements/public/CollectionPage/types.d.ts +1 -0
  295. package/dist/elements/public/CollectionPage/types.js.map +1 -1
  296. package/dist/elements/public/CollectionPages/CollectionPages.d.ts +4 -2
  297. package/dist/elements/public/CollectionPages/CollectionPages.js +3 -1
  298. package/dist/elements/public/CollectionPages/CollectionPages.js.map +1 -1
  299. package/dist/elements/public/CopyToClipboard/CopyToClipboard.d.ts +22 -0
  300. package/dist/elements/public/CopyToClipboard/CopyToClipboard.js +121 -0
  301. package/dist/elements/public/CopyToClipboard/CopyToClipboard.js.map +1 -0
  302. package/dist/elements/public/CopyToClipboard/index.d.ts +5 -0
  303. package/dist/elements/public/CopyToClipboard/index.js +7 -0
  304. package/dist/elements/public/CopyToClipboard/index.js.map +1 -0
  305. package/dist/elements/public/CouponDetailCard/CouponDetailCard.d.ts +25 -0
  306. package/dist/elements/public/CouponDetailCard/CouponDetailCard.js +58 -0
  307. package/dist/elements/public/CouponDetailCard/CouponDetailCard.js.map +1 -0
  308. package/dist/elements/public/CouponDetailCard/index.d.ts +5 -0
  309. package/dist/elements/public/CouponDetailCard/index.js +7 -0
  310. package/dist/elements/public/CouponDetailCard/index.js.map +1 -0
  311. package/dist/elements/public/CouponDetailCard/types.d.ts +3 -0
  312. package/dist/elements/public/CouponDetailCard/types.js +2 -0
  313. package/dist/elements/public/CouponDetailCard/types.js.map +1 -0
  314. package/dist/elements/public/CouponForm/CouponForm.js +36 -34
  315. package/dist/elements/public/CouponForm/CouponForm.js.map +1 -1
  316. package/dist/elements/public/CouponForm/index.d.ts +1 -0
  317. package/dist/elements/public/CouponForm/index.js +1 -0
  318. package/dist/elements/public/CouponForm/index.js.map +1 -1
  319. package/dist/elements/public/CustomerApi/CustomerApi.d.ts +3 -1
  320. package/dist/elements/public/CustomerApi/CustomerApi.js +2 -1
  321. package/dist/elements/public/CustomerApi/CustomerApi.js.map +1 -1
  322. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.d.ts +3 -1
  323. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.js +2 -1
  324. package/dist/elements/public/CustomerPortal/InternalCustomerPortalChangePassword.js.map +1 -1
  325. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js +22 -26
  326. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedInView.js.map +1 -1
  327. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.d.ts +3 -1
  328. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js +2 -1
  329. package/dist/elements/public/CustomerPortal/InternalCustomerPortalLoggedOutView.js.map +1 -1
  330. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.d.ts +3 -1
  331. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js +2 -1
  332. package/dist/elements/public/CustomerPortal/InternalCustomerPortalSubscriptions.js.map +1 -1
  333. package/dist/elements/public/CustomerPortal/InternalCustomerPortalTransactions.d.ts +3 -1
  334. package/dist/elements/public/CustomerPortal/InternalCustomerPortalTransactions.js +2 -1
  335. package/dist/elements/public/CustomerPortal/InternalCustomerPortalTransactions.js.map +1 -1
  336. package/dist/elements/public/DiscountBuilder/DiscountBuilder.d.ts +40 -0
  337. package/dist/elements/public/DiscountBuilder/DiscountBuilder.js +342 -0
  338. package/dist/elements/public/DiscountBuilder/DiscountBuilder.js.map +1 -0
  339. package/dist/elements/public/DiscountBuilder/index.d.ts +3 -0
  340. package/dist/elements/public/DiscountBuilder/index.js +5 -0
  341. package/dist/elements/public/DiscountBuilder/index.js.map +1 -0
  342. package/dist/elements/public/DiscountBuilder/types.d.ts +32 -0
  343. package/dist/elements/public/DiscountBuilder/types.js +2 -0
  344. package/dist/elements/public/DiscountBuilder/types.js.map +1 -0
  345. package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.d.ts +25 -0
  346. package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.js +58 -0
  347. package/dist/elements/public/DiscountDetailCard/DiscountDetailCard.js.map +1 -0
  348. package/dist/elements/public/DiscountDetailCard/index.d.ts +5 -0
  349. package/dist/elements/public/DiscountDetailCard/index.js +7 -0
  350. package/dist/elements/public/DiscountDetailCard/index.js.map +1 -0
  351. package/dist/elements/public/DiscountDetailCard/types.d.ts +3 -0
  352. package/dist/elements/public/DiscountDetailCard/types.js +2 -0
  353. package/dist/elements/public/DiscountDetailCard/types.js.map +1 -0
  354. package/dist/elements/public/ErrorEntryCard/ErrorEntryCard.js +2 -1
  355. package/dist/elements/public/ErrorEntryCard/ErrorEntryCard.js.map +1 -1
  356. package/dist/elements/public/GiftCardForm/GiftCardForm.js +28 -15
  357. package/dist/elements/public/GiftCardForm/GiftCardForm.js.map +1 -1
  358. package/dist/elements/public/GiftCardForm/index.d.ts +1 -0
  359. package/dist/elements/public/GiftCardForm/index.js +1 -0
  360. package/dist/elements/public/GiftCardForm/index.js.map +1 -1
  361. package/dist/elements/public/I18n/I18n.d.ts +3 -1
  362. package/dist/elements/public/I18n/I18n.js +2 -1
  363. package/dist/elements/public/I18n/I18n.js.map +1 -1
  364. package/dist/elements/public/I18n/format/discount.js +1 -0
  365. package/dist/elements/public/I18n/format/discount.js.map +1 -1
  366. package/dist/elements/public/ItemCard/ItemCard.d.ts +22 -0
  367. package/dist/elements/public/ItemCard/ItemCard.js +151 -0
  368. package/dist/elements/public/ItemCard/ItemCard.js.map +1 -0
  369. package/dist/elements/public/ItemCard/index.d.ts +4 -0
  370. package/dist/elements/public/ItemCard/index.js +6 -0
  371. package/dist/elements/public/ItemCard/index.js.map +1 -0
  372. package/dist/elements/public/ItemCard/types.d.ts +5 -0
  373. package/dist/elements/public/ItemCard/types.js +2 -0
  374. package/dist/elements/public/ItemCard/types.js.map +1 -0
  375. package/dist/elements/public/ItemForm/ItemForm.d.ts +61 -0
  376. package/dist/elements/public/ItemForm/ItemForm.js +138 -0
  377. package/dist/elements/public/ItemForm/ItemForm.js.map +1 -0
  378. package/dist/elements/public/ItemForm/index.d.ts +19 -0
  379. package/dist/elements/public/ItemForm/index.js +21 -0
  380. package/dist/elements/public/ItemForm/index.js.map +1 -0
  381. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/InternalItemFormCartControl.d.ts +6 -0
  382. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/InternalItemFormCartControl.js +23 -0
  383. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/InternalItemFormCartControl.js.map +1 -0
  384. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/index.d.ts +7 -0
  385. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/index.js +9 -0
  386. package/dist/elements/public/ItemForm/internal/InternalItemFormCartControl/index.js.map +1 -0
  387. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/InternalItemFormInventoryControl.d.ts +6 -0
  388. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/InternalItemFormInventoryControl.js +31 -0
  389. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/InternalItemFormInventoryControl.js.map +1 -0
  390. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/index.d.ts +6 -0
  391. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/index.js +8 -0
  392. package/dist/elements/public/ItemForm/internal/InternalItemFormInventoryControl/index.js.map +1 -0
  393. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/InternalItemFormLineItemDiscountControl.d.ts +6 -0
  394. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/InternalItemFormLineItemDiscountControl.js +58 -0
  395. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/InternalItemFormLineItemDiscountControl.js.map +1 -0
  396. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/index.d.ts +7 -0
  397. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/index.js +9 -0
  398. package/dist/elements/public/ItemForm/internal/InternalItemFormLineItemDiscountControl/index.js.map +1 -0
  399. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/InternalItemFormShippingControl.d.ts +6 -0
  400. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/InternalItemFormShippingControl.js +32 -0
  401. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/InternalItemFormShippingControl.js.map +1 -0
  402. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/index.d.ts +6 -0
  403. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/index.js +8 -0
  404. package/dist/elements/public/ItemForm/internal/InternalItemFormShippingControl/index.js.map +1 -0
  405. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/InternalItemFormSubscriptionControl.d.ts +6 -0
  406. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/InternalItemFormSubscriptionControl.js +70 -0
  407. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/InternalItemFormSubscriptionControl.js.map +1 -0
  408. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/index.d.ts +9 -0
  409. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/index.js +11 -0
  410. package/dist/elements/public/ItemForm/internal/InternalItemFormSubscriptionControl/index.js.map +1 -0
  411. package/dist/elements/public/ItemForm/types.d.ts +3 -0
  412. package/dist/elements/public/ItemForm/types.js +2 -0
  413. package/dist/elements/public/ItemForm/types.js.map +1 -0
  414. package/dist/elements/public/ItemOptionCard/ItemOptionCard.d.ts +25 -0
  415. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js +56 -0
  416. package/dist/elements/public/ItemOptionCard/ItemOptionCard.js.map +1 -0
  417. package/dist/elements/public/ItemOptionCard/index.d.ts +6 -0
  418. package/dist/elements/public/ItemOptionCard/index.js +8 -0
  419. package/dist/elements/public/ItemOptionCard/index.js.map +1 -0
  420. package/dist/elements/public/ItemOptionCard/types.d.ts +11 -0
  421. package/dist/elements/public/ItemOptionCard/types.js +2 -0
  422. package/dist/elements/public/ItemOptionCard/types.js.map +1 -0
  423. package/dist/elements/public/ItemOptionForm/ItemOptionForm.d.ts +30 -0
  424. package/dist/elements/public/ItemOptionForm/ItemOptionForm.js +41 -0
  425. package/dist/elements/public/ItemOptionForm/ItemOptionForm.js.map +1 -0
  426. package/dist/elements/public/ItemOptionForm/index.d.ts +5 -0
  427. package/dist/elements/public/ItemOptionForm/index.js +7 -0
  428. package/dist/elements/public/ItemOptionForm/index.js.map +1 -0
  429. package/dist/elements/public/ItemOptionForm/types.d.ts +3 -0
  430. package/dist/elements/public/ItemOptionForm/types.js +2 -0
  431. package/dist/elements/public/ItemOptionForm/types.js.map +1 -0
  432. package/dist/elements/public/NucleonElement/NucleonElement.d.ts +7 -1
  433. package/dist/elements/public/NucleonElement/NucleonElement.js +13 -1
  434. package/dist/elements/public/NucleonElement/NucleonElement.js.map +1 -1
  435. package/dist/elements/public/Pagination/Pagination.d.ts +3 -1
  436. package/dist/elements/public/Pagination/Pagination.js +3 -2
  437. package/dist/elements/public/Pagination/Pagination.js.map +1 -1
  438. package/dist/elements/public/PaymentCard/PaymentCard.js +1 -1
  439. package/dist/elements/public/PaymentCard/PaymentCard.js.map +1 -1
  440. package/dist/elements/public/QueryBuilder/QueryBuilder.d.ts +3 -1
  441. package/dist/elements/public/QueryBuilder/QueryBuilder.js +2 -1
  442. package/dist/elements/public/QueryBuilder/QueryBuilder.js.map +1 -1
  443. package/dist/elements/public/ReportForm/ReportForm.d.ts +48 -0
  444. package/dist/elements/public/ReportForm/ReportForm.js +391 -0
  445. package/dist/elements/public/ReportForm/ReportForm.js.map +1 -0
  446. package/dist/elements/public/ReportForm/index.d.ts +11 -0
  447. package/dist/elements/public/ReportForm/index.js +13 -0
  448. package/dist/elements/public/ReportForm/index.js.map +1 -0
  449. package/dist/elements/public/ReportForm/types.d.ts +17 -0
  450. package/dist/elements/public/ReportForm/types.js +2 -0
  451. package/dist/elements/public/ReportForm/types.js.map +1 -0
  452. package/dist/elements/public/ReportForm/utils.d.ts +16 -0
  453. package/dist/elements/public/ReportForm/utils.js +73 -0
  454. package/dist/elements/public/ReportForm/utils.js.map +1 -0
  455. package/dist/elements/public/ReportsTable/ReportsTable.d.ts +21 -0
  456. package/dist/elements/public/ReportsTable/ReportsTable.js +101 -0
  457. package/dist/elements/public/ReportsTable/ReportsTable.js.map +1 -0
  458. package/dist/elements/public/ReportsTable/index.d.ts +4 -0
  459. package/dist/elements/public/ReportsTable/index.js +6 -0
  460. package/dist/elements/public/ReportsTable/index.js.map +1 -0
  461. package/dist/elements/public/ReportsTable/types.d.ts +3 -0
  462. package/dist/elements/public/ReportsTable/types.js +2 -0
  463. package/dist/elements/public/ReportsTable/types.js.map +1 -0
  464. package/dist/elements/public/ShipmentCard/ShipmentCard.d.ts +28 -0
  465. package/dist/elements/public/ShipmentCard/ShipmentCard.js +119 -0
  466. package/dist/elements/public/ShipmentCard/ShipmentCard.js.map +1 -0
  467. package/dist/elements/public/ShipmentCard/index.d.ts +8 -0
  468. package/dist/elements/public/ShipmentCard/index.js +10 -0
  469. package/dist/elements/public/ShipmentCard/index.js.map +1 -0
  470. package/dist/elements/public/ShipmentCard/types.d.ts +18 -0
  471. package/dist/elements/public/ShipmentCard/types.js +2 -0
  472. package/dist/elements/public/ShipmentCard/types.js.map +1 -0
  473. package/dist/elements/public/Spinner/Spinner.d.ts +4 -2
  474. package/dist/elements/public/Spinner/Spinner.js +3 -1
  475. package/dist/elements/public/Spinner/Spinner.js.map +1 -1
  476. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.d.ts +16 -0
  477. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.js +60 -0
  478. package/dist/elements/public/StoreShippingMethodCard/StoreShippingMethodCard.js.map +1 -0
  479. package/dist/elements/public/StoreShippingMethodCard/index.d.ts +6 -0
  480. package/dist/elements/public/StoreShippingMethodCard/index.js +8 -0
  481. package/dist/elements/public/StoreShippingMethodCard/index.js.map +1 -0
  482. package/dist/elements/public/StoreShippingMethodCard/types.d.ts +5 -0
  483. package/dist/elements/public/StoreShippingMethodCard/types.js +2 -0
  484. package/dist/elements/public/StoreShippingMethodCard/types.js.map +1 -0
  485. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.d.ts +25 -0
  486. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js +151 -0
  487. package/dist/elements/public/StoreShippingMethodForm/StoreShippingMethodForm.js.map +1 -0
  488. package/dist/elements/public/StoreShippingMethodForm/index.d.ts +11 -0
  489. package/dist/elements/public/StoreShippingMethodForm/index.js +13 -0
  490. package/dist/elements/public/StoreShippingMethodForm/index.js.map +1 -0
  491. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.d.ts +5 -0
  492. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.js +33 -0
  493. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/InternalStoreShippingMethodFormServicesControl.js.map +1 -0
  494. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.d.ts +6 -0
  495. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.js +8 -0
  496. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesControl/index.js.map +1 -0
  497. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.d.ts +19 -0
  498. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.js +96 -0
  499. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/InternalStoreShippingMethodFormServicesPage.js.map +1 -0
  500. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.d.ts +5 -0
  501. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.js +7 -0
  502. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPage/index.js.map +1 -0
  503. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.d.ts +17 -0
  504. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.js +45 -0
  505. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/InternalStoreShippingMethodFormServicesPageItem.js.map +1 -0
  506. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.d.ts +3 -0
  507. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.js +5 -0
  508. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItem/index.js.map +1 -0
  509. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.d.ts +16 -0
  510. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.js +49 -0
  511. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/InternalStoreShippingMethodFormServicesPageItemContent.js.map +1 -0
  512. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.d.ts +3 -0
  513. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.js +5 -0
  514. package/dist/elements/public/StoreShippingMethodForm/internal/InternalStoreShippingMethodFormServicesPageItemContent/index.js.map +1 -0
  515. package/dist/elements/public/StoreShippingMethodForm/types.d.ts +5 -0
  516. package/dist/elements/public/StoreShippingMethodForm/types.js +2 -0
  517. package/dist/elements/public/StoreShippingMethodForm/types.js.map +1 -0
  518. package/dist/elements/public/SwipeActions/SwipeActions.d.ts +28 -0
  519. package/dist/elements/public/SwipeActions/SwipeActions.js +130 -0
  520. package/dist/elements/public/SwipeActions/SwipeActions.js.map +1 -0
  521. package/dist/elements/public/SwipeActions/index.d.ts +2 -0
  522. package/dist/elements/public/SwipeActions/index.js +4 -0
  523. package/dist/elements/public/SwipeActions/index.js.map +1 -0
  524. package/dist/elements/public/Transaction/Transaction.d.ts +19 -0
  525. package/dist/elements/public/Transaction/Transaction.js +107 -0
  526. package/dist/elements/public/Transaction/Transaction.js.map +1 -0
  527. package/dist/elements/public/Transaction/index.d.ts +17 -0
  528. package/dist/elements/public/Transaction/index.js +19 -0
  529. package/dist/elements/public/Transaction/index.js.map +1 -0
  530. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/InternalTransactionActionsControl.d.ts +9 -0
  531. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/InternalTransactionActionsControl.js +65 -0
  532. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/InternalTransactionActionsControl.js.map +1 -0
  533. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/index.d.ts +4 -0
  534. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/index.js +6 -0
  535. package/dist/elements/public/Transaction/internal/InternalTransactionActionsControl/index.js.map +1 -0
  536. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/InternalTransactionCustomerControl.d.ts +5 -0
  537. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/InternalTransactionCustomerControl.js +36 -0
  538. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/InternalTransactionCustomerControl.js.map +1 -0
  539. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/index.d.ts +7 -0
  540. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/index.js +9 -0
  541. package/dist/elements/public/Transaction/internal/InternalTransactionCustomerControl/index.js.map +1 -0
  542. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/InternalTransactionPostActionControl.d.ts +10 -0
  543. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/InternalTransactionPostActionControl.js +61 -0
  544. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/InternalTransactionPostActionControl.js.map +1 -0
  545. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/index.d.ts +6 -0
  546. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/index.js +8 -0
  547. package/dist/elements/public/Transaction/internal/InternalTransactionPostActionControl/index.js.map +1 -0
  548. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.d.ts +8 -0
  549. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js +66 -0
  550. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/InternalTransactionSummaryControl.js.map +1 -0
  551. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/index.d.ts +4 -0
  552. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/index.js +6 -0
  553. package/dist/elements/public/Transaction/internal/InternalTransactionSummaryControl/index.js.map +1 -0
  554. package/dist/elements/public/Transaction/types.d.ts +3 -0
  555. package/dist/elements/public/Transaction/types.js +2 -0
  556. package/dist/elements/public/Transaction/types.js.map +1 -0
  557. package/dist/elements/public/WebhookCard/WebhookCard.d.ts +16 -0
  558. package/dist/elements/public/WebhookCard/WebhookCard.js +36 -0
  559. package/dist/elements/public/WebhookCard/WebhookCard.js.map +1 -0
  560. package/dist/elements/public/WebhookCard/index.d.ts +5 -0
  561. package/dist/elements/public/WebhookCard/index.js +7 -0
  562. package/dist/elements/public/WebhookCard/index.js.map +1 -0
  563. package/dist/elements/public/WebhookCard/types.d.ts +3 -0
  564. package/dist/elements/public/WebhookCard/types.js +2 -0
  565. package/dist/elements/public/WebhookCard/types.js.map +1 -0
  566. package/dist/elements/public/WebhookForm/WebhookForm.d.ts +47 -0
  567. package/dist/elements/public/WebhookForm/WebhookForm.js +101 -0
  568. package/dist/elements/public/WebhookForm/WebhookForm.js.map +1 -0
  569. package/dist/elements/public/WebhookForm/index.d.ts +8 -0
  570. package/dist/elements/public/WebhookForm/index.js +10 -0
  571. package/dist/elements/public/WebhookForm/index.js.map +1 -0
  572. package/dist/elements/public/WebhookForm/types.d.ts +3 -0
  573. package/dist/elements/public/WebhookForm/types.js +2 -0
  574. package/dist/elements/public/WebhookForm/types.js.map +1 -0
  575. package/dist/elements/public/WebhookLogCard/WebhookLogCard.d.ts +16 -0
  576. package/dist/elements/public/WebhookLogCard/WebhookLogCard.js +28 -0
  577. package/dist/elements/public/WebhookLogCard/WebhookLogCard.js.map +1 -0
  578. package/dist/elements/public/WebhookLogCard/index.d.ts +4 -0
  579. package/dist/elements/public/WebhookLogCard/index.js +6 -0
  580. package/dist/elements/public/WebhookLogCard/index.js.map +1 -0
  581. package/dist/elements/public/WebhookLogCard/types.d.ts +3 -0
  582. package/dist/elements/public/WebhookLogCard/types.js +2 -0
  583. package/dist/elements/public/WebhookLogCard/types.js.map +1 -0
  584. package/dist/elements/public/WebhookStatusCard/WebhookStatusCard.d.ts +16 -0
  585. package/dist/elements/public/WebhookStatusCard/WebhookStatusCard.js +41 -0
  586. package/dist/elements/public/WebhookStatusCard/WebhookStatusCard.js.map +1 -0
  587. package/dist/elements/public/WebhookStatusCard/index.d.ts +4 -0
  588. package/dist/elements/public/WebhookStatusCard/index.js +6 -0
  589. package/dist/elements/public/WebhookStatusCard/index.js.map +1 -0
  590. package/dist/elements/public/WebhookStatusCard/types.d.ts +3 -0
  591. package/dist/elements/public/WebhookStatusCard/types.js +2 -0
  592. package/dist/elements/public/WebhookStatusCard/types.js.map +1 -0
  593. package/dist/elements/public/index.d.ts +20 -0
  594. package/dist/elements/public/index.defined.d.ts +20 -0
  595. package/dist/elements/public/index.defined.js +20 -0
  596. package/dist/elements/public/index.defined.js.map +1 -1
  597. package/dist/elements/public/index.js +20 -0
  598. package/dist/elements/public/index.js.map +1 -1
  599. package/dist/mixins/configurable.d.ts +5 -3
  600. package/dist/mixins/configurable.js +40 -4
  601. package/dist/mixins/configurable.js.map +1 -1
  602. package/dist/mixins/inferrable.d.ts +15 -0
  603. package/dist/mixins/inferrable.js +67 -0
  604. package/dist/mixins/inferrable.js.map +1 -0
  605. package/dist/mixins/themeable.js +6848 -13
  606. package/dist/mixins/themeable.js.map +1 -1
  607. package/dist/mixins/translatable.d.ts +3 -1
  608. package/dist/mixins/translatable.js +16 -2
  609. package/dist/mixins/translatable.js.map +1 -1
  610. package/package.json +9 -7
  611. package/dist/cdn/shared-1a91d467.js +0 -1
  612. package/dist/cdn/shared-1de261b3.js +0 -1
  613. package/dist/cdn/shared-21419f10.js +0 -1
  614. package/dist/cdn/shared-39e3ae67.js +0 -1
  615. package/dist/cdn/shared-4f1f4281.js +0 -1
  616. package/dist/cdn/shared-50765afb.js +0 -1
  617. package/dist/cdn/shared-5535f38f.js +0 -15
  618. package/dist/cdn/shared-55481c27.js +0 -1
  619. package/dist/cdn/shared-63eaded9.js +0 -159
  620. package/dist/cdn/shared-6f412a43.js +0 -302
  621. package/dist/cdn/shared-756034e4.js +0 -1
  622. package/dist/cdn/shared-81cd9eac.js +0 -1
  623. package/dist/cdn/shared-87aa97d2.js +0 -1
  624. package/dist/cdn/shared-8b20bc23.js +0 -12
  625. package/dist/cdn/shared-a62e1a93.js +0 -1
  626. package/dist/cdn/shared-ad16479c.js +0 -1
  627. package/dist/cdn/shared-b58b8353.js +0 -1
  628. package/dist/cdn/shared-c64bc1a0.js +0 -1
  629. package/dist/cdn/shared-ce2ac6b4.js +0 -1
  630. package/dist/cdn/shared-db4f299b.js +0 -1
  631. package/dist/cdn/shared-df730f90.js +0 -1
  632. package/dist/cdn/shared-f6e51811.js +0 -1
  633. package/dist/cdn/shared-ff79f3f9.js +0 -230
@@ -6,6 +6,7 @@ import { FetchEvent } from "./FetchEvent.js";
6
6
  import { UpdateEvent } from "./UpdateEvent.js";
7
7
  import memoize from 'lodash-es/memoize';
8
8
  import { serveFromCache } from "./serveFromCache.js";
9
+ import { InferrableMixin } from "../../../mixins/inferrable.js";
9
10
  /**
10
11
  * Base class for custom elements working with remote HAL+JSON resources.
11
12
  *
@@ -15,7 +16,7 @@ import { serveFromCache } from "./serveFromCache.js";
15
16
  * @element foxy-nucleon
16
17
  * @since 1.1.0
17
18
  */
18
- export class NucleonElement extends LitElement {
19
+ export class NucleonElement extends InferrableMixin(LitElement) {
19
20
  constructor() {
20
21
  super(...arguments);
21
22
  /**
@@ -57,6 +58,9 @@ export class NucleonElement extends LitElement {
57
58
  },
58
59
  }));
59
60
  }
61
+ static get inferredProperties() {
62
+ return [...super.inferredProperties, 'group', 'lang'];
63
+ }
60
64
  /** @readonly */
61
65
  static get properties() {
62
66
  return {
@@ -210,6 +214,14 @@ export class NucleonElement extends LitElement {
210
214
  this.__destroyServer();
211
215
  this.__flushFetchEventQueue('parent element was disconnected');
212
216
  }
217
+ applyInferredProperties(context) {
218
+ var _a, _b;
219
+ super.applyInferredProperties(context);
220
+ if (this.infer === null)
221
+ return;
222
+ this.group = (_a = context.get('group')) !== null && _a !== void 0 ? _a : '';
223
+ this.lang = (_b = context.get('lang')) !== null && _b !== void 0 ? _b : '';
224
+ }
213
225
  /** Sends API request. Throws an error on non-2XX response. */
214
226
  async _fetch(...args) {
215
227
  const response = await new API(this).fetch(...args);
@@ -1 +1 @@
1
- {"version":3,"file":"NucleonElement.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/NucleonElement.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComputedElementProperties, HALJSONResource, NucleonMachine, NucleonV8N } from './types';\nimport { LitElement, PropertyDeclarations } from 'lit-element';\nimport { Nucleon, Rumour } from '@foxy.io/sdk/core';\nimport { assign, interpret } from 'xstate';\n\nimport { API } from './API';\nimport { FetchEvent } from './FetchEvent';\nimport { UpdateEvent } from './UpdateEvent';\nimport memoize from 'lodash-es/memoize';\nimport { serveFromCache } from './serveFromCache';\n\n/**\n * Base class for custom elements working with remote HAL+JSON resources.\n *\n * @fires NucleonElement#update - Instance of `NucleonElement.UpdateEvent`. Dispatched on an element whenever it changes its state.\n * @fires NucleonElement#fetch - Instance of `NucleonElement.API.FetchEvent`. Emitted before each API request.\n *\n * @element foxy-nucleon\n * @since 1.1.0\n */\nexport class NucleonElement<TData extends HALJSONResource> extends LitElement {\n /**\n * Instances of this event are dispatched on an element whenever it changes its\n * state (e.g. when going from `busy` to `idle` or on `form` data change).\n * This event isn't cancelable, and it does not bubble.\n * @readonly\n */\n static readonly UpdateEvent = UpdateEvent;\n\n /**\n * Creates a tagged [Rumour](https://sdk.foxy.dev/classes/_core_index_.rumour.html)\n * instance if it doesn't exist or returns cached one otherwise. NucleonElements\n * use empty Rumour group by default.\n * @readonly\n */\n static readonly Rumour = memoize<(group: string) => Rumour>(() => new Rumour());\n\n /**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches cancellable `FetchEvent` on an element before each request.\n * @readonly\n */\n static readonly API = API;\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n related: { type: Array },\n parent: { type: String },\n group: { type: String, noAccessor: true },\n href: { type: String, noAccessor: true },\n lang: { type: String },\n };\n }\n\n /**\n * Array of validation functions. Each function accepts `element.form` and must return\n * either an error code string if form data fails the check or `true` otherwise.\n * Error codes are collected in `element.errors`. Empty by default.\n */\n static get v8n(): NucleonV8N<any> {\n return [];\n }\n\n /**\n * Optional ISO 639-1 code describing the language element content is written in.\n * Changing the `lang` attribute will update the value of this property.\n */\n lang = '';\n\n /**\n * Optional URL of the collection this element's resource belongs to.\n * Changing the `parent` attribute will update the value of this property.\n */\n parent = '';\n\n /**\n * Optional URI list of the related resources. If Rumour encounters a related\n * resource on creation or deletion, it will be reloaded from source.\n */\n related: string[] = [];\n\n private __href = '';\n\n private __group = '';\n\n private __unsubscribeFromRumour!: () => void;\n\n private __fetchEventHandler!: (evt: Event) => void;\n\n private __fetchEventQueue: FetchEvent[] = [];\n\n private readonly __service = interpret(\n (Nucleon.machine as NucleonMachine<TData>).withConfig({\n services: {\n sendDelete: () => this._sendDelete(),\n sendPatch: ({ edits }) => this._sendPatch(edits!),\n sendPost: ({ edits }) => this._sendPost(edits!),\n sendGet: () => this._sendGet(),\n },\n\n actions: {\n validate: assign<Nucleon.Context<TData, string>, Nucleon.Event<TData>>({\n errors: context => {\n const rules = (this.constructor as typeof NucleonElement).v8n;\n const form = { ...context.data, ...context.edits };\n\n return rules\n .map(validate => validate(form))\n .filter(v8nResult => typeof v8nResult === 'string')\n .filter((err, errIndex, errs) => errs.indexOf(err) === errIndex) as string[];\n },\n }),\n },\n })\n );\n\n /**\n * If network request returns non-2XX code, the entire error response\n * will be available via this getter.\n *\n * This property is readonly. Changing failure records via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override error status.\n *\n * @since 1.4.0\n */\n get failure(): Response | null {\n return this.__service.state.context.failure;\n }\n\n /**\n * Array of validation errors returned from `NucleonElement.v8n` checks.\n *\n * This property is readonly. Adding or removing error codes via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override validity status.\n */\n get errors(): string[] {\n return this.__service.state.context.errors;\n }\n\n /**\n * Resource snapshot with edits applied. Empty object if unavailable.\n *\n * This property and its value are readonly. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please use `element.edit({ foo: 'bar' })` instead.\n * If you need to replace the entire data object, consider using `element.data`.\n */\n get form(): Partial<TData> {\n const { data, edits } = this.__service.state.context;\n return { ...data, ...edits } as Partial<TData>;\n }\n\n /**\n * Resource snapshot as-is, no edits applied. Null if unavailable.\n *\n * Returned value is not reactive. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please set the property instead: `element.data = { ...element.data, foo: 'bar' }`.\n * If you're processing user input, consider using `element.form` and `element.edit()` instead.\n */\n get data(): TData | null {\n return this.__service.state.context.data;\n }\n\n set data(data: TData | null) {\n this.__service.send({ type: 'SET_DATA', data });\n this.__href = data?._links.self.href ?? '';\n }\n\n /**\n * Rumour group. Elements in different groups will not share updates. Empty by default.\n * @example element.group = 'my-group'\n */\n get group(): string {\n return this.__group;\n }\n\n set group(value: string) {\n this.__group = value;\n this.__destroyRumour();\n this.__createRumour();\n }\n\n /**\n * Optional URL of the resource to load. Switches element to `idle.template` state if empty (default).\n * @example element.href = 'https://demo.foxycart.com/s/customer/attributes/0'\n */\n get href(): string {\n return this.__href;\n }\n\n set href(value: string) {\n this.__href = value;\n\n if (value) {\n this.__service.send({ type: 'FETCH' });\n } else {\n this.__service.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /**\n * Checks if this element is in the given state.\n * @example element.in({ idle: 'snapshot' })\n */\n in<TStateValue extends Nucleon.State<TData, string>['value']>(\n stateValue: TStateValue\n ): this is this & ComputedElementProperties<TData, TStateValue> {\n return this.__service.state.matches(stateValue);\n }\n\n /**\n * Clears all edits and emits the `update` event.\n * @example element.undo()\n */\n undo(): void {\n this.__service.send({ type: 'UNDO' });\n }\n\n /**\n * Applies an edit to the local resource snapshot or its template and emits the `update` event.\n * @example element.edit({ first_name: 'Alex' })\n */\n edit(data: Partial<TData>): void {\n this.__service.send({ type: 'EDIT', data });\n }\n\n /**\n * Submits the form, updating the resource if href isn't empty or creating it otherwise.\n * Emits multiple `update` events as element state changes. Has no effect on invalid forms.\n * @example element.submit()\n */\n submit(): void {\n this.__service.send({ type: 'SUBMIT' });\n }\n\n /**\n * Sends a DELETE request to `element.href` and clears local data on success.\n * Emits multiple update events as element state changes.\n * @example element.delete()\n */\n delete(): void {\n this.__service.send({ type: 'DELETE' });\n }\n\n /**\n * Fetches data from `element.href` in background, keeping the edits and v8n errors.\n * @example element.refresh()\n */\n refresh(): void {\n this.__service.send({ type: 'REFRESH' });\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n\n this.__createService();\n this.__createRumour();\n this.__createServer();\n this.__processFetchEventQueue();\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__destroyService();\n this.__destroyRumour();\n this.__destroyServer();\n this.__flushFetchEventQueue('parent element was disconnected');\n }\n\n /** Sends API request. Throws an error on non-2XX response. */\n protected async _fetch<TResult = TData>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n const response = await new API(this).fetch(...args);\n if (!response.ok) throw response;\n return response.json();\n }\n\n /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPost(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.parent, { body, method: 'POST' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data, related, source: data._links.self.href });\n this.__createRumour();\n\n return data;\n }\n\n /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendGet(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href);\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href });\n this.__createRumour();\n\n return data;\n }\n\n /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPatch(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.href, { body, method: 'PATCH' });\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href, related: this.related });\n this.__createRumour();\n\n return data;\n }\n\n /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendDelete(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href, { method: 'DELETE' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data: null, source: this.href, related });\n this.__createRumour();\n\n return data;\n }\n\n private __createService() {\n this.__service.onTransition(state => {\n if (!state.changed) return;\n\n const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], [] as string[]);\n this.setAttribute('state', [...new Set(flags)].join(' '));\n\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n\n if (!state.matches('busy')) this.__processFetchEventQueue();\n });\n\n this.__service.onChange(() => {\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n });\n\n this.__service.start();\n }\n\n private __destroyService() {\n this.__service.stop();\n }\n\n private __createRumour() {\n const rumour = NucleonElement.Rumour(this.group);\n this.__unsubscribeFromRumour = rumour.track(update => this.__handleRumourUpdate(update));\n }\n\n private __destroyRumour() {\n this.__unsubscribeFromRumour?.();\n }\n\n private __createServer() {\n this.__fetchEventHandler = this.__handleFetchEvent.bind(this);\n this.addEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __destroyServer() {\n this.removeEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __handleRumourUpdate(update: (oldData: TData) => TData | null) {\n try {\n const oldData = this.__service.state?.context.data;\n if (!oldData) return;\n\n const newData = update(oldData);\n if (newData !== oldData) this.__service.send({ data: newData, type: 'SET_DATA' });\n } catch (err) {\n if (err instanceof Rumour.UpdateError) {\n this.__service.send({ type: 'REFRESH' });\n } else {\n throw err;\n }\n }\n }\n\n private __processFetchEventQueue() {\n const api = new NucleonElement.API(this);\n\n this.__fetchEventQueue.forEach(event => {\n const request = event.request;\n const cacheResponse = serveFromCache(request.url, this.data);\n const whenResponseReady = cacheResponse.ok ? cacheResponse : api.fetch(request);\n\n event.respondWith(Promise.resolve(whenResponseReady));\n\n if (cacheResponse.ok) {\n console.debug(\n `%c@foxy.io/elements::${this.localName}\\n%c200%c GET ${request.url}`,\n 'color: gray',\n `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`,\n ''\n );\n }\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __flushFetchEventQueue(errorMessage: string) {\n this.__fetchEventQueue.forEach(event => {\n event.respondWith(Promise.reject(new Error(errorMessage)));\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n if (event.request.method !== 'GET') return;\n if (event.request.url.startsWith('foxy://')) return;\n if (event.composedPath()[0] === this) return;\n\n event.preventDefault();\n this.__fetchEventQueue.push(event);\n\n if (!this.in('busy')) this.__processFetchEventQueue();\n }\n}\n"]}
1
+ {"version":3,"file":"NucleonElement.js","sourceRoot":"","sources":["../../../../src/elements/public/NucleonElement/NucleonElement.ts"],"names":[],"mappings":"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","sourcesContent":["import { ComputedElementProperties, HALJSONResource, NucleonMachine, NucleonV8N } from './types';\nimport { LitElement, PropertyDeclarations } from 'lit-element';\nimport { Nucleon, Rumour } from '@foxy.io/sdk/core';\nimport { assign, interpret } from 'xstate';\n\nimport { API } from './API';\nimport { FetchEvent } from './FetchEvent';\nimport { UpdateEvent } from './UpdateEvent';\nimport memoize from 'lodash-es/memoize';\nimport { serveFromCache } from './serveFromCache';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\n/**\n * Base class for custom elements working with remote HAL+JSON resources.\n *\n * @fires NucleonElement#update - Instance of `NucleonElement.UpdateEvent`. Dispatched on an element whenever it changes its state.\n * @fires NucleonElement#fetch - Instance of `NucleonElement.API.FetchEvent`. Emitted before each API request.\n *\n * @element foxy-nucleon\n * @since 1.1.0\n */\nexport class NucleonElement<TData extends HALJSONResource> extends InferrableMixin(LitElement) {\n /**\n * Instances of this event are dispatched on an element whenever it changes its\n * state (e.g. when going from `busy` to `idle` or on `form` data change).\n * This event isn't cancelable, and it does not bubble.\n * @readonly\n */\n static readonly UpdateEvent = UpdateEvent;\n\n /**\n * Creates a tagged [Rumour](https://sdk.foxy.dev/classes/_core_index_.rumour.html)\n * instance if it doesn't exist or returns cached one otherwise. NucleonElements\n * use empty Rumour group by default.\n * @readonly\n */\n static readonly Rumour = memoize<(group: string) => Rumour>(() => new Rumour());\n\n /**\n * Universal [API](https://sdk.foxy.dev/classes/_core_index_.api.html) client\n * that dispatches cancellable `FetchEvent` on an element before each request.\n * @readonly\n */\n static readonly API = API;\n\n static get inferredProperties(): string[] {\n return [...super.inferredProperties, 'group', 'lang'];\n }\n\n /** @readonly */\n static get properties(): PropertyDeclarations {\n return {\n related: { type: Array },\n parent: { type: String },\n group: { type: String, noAccessor: true },\n href: { type: String, noAccessor: true },\n lang: { type: String },\n };\n }\n\n /**\n * Array of validation functions. Each function accepts `element.form` and must return\n * either an error code string if form data fails the check or `true` otherwise.\n * Error codes are collected in `element.errors`. Empty by default.\n */\n static get v8n(): NucleonV8N<any> {\n return [];\n }\n\n /**\n * Optional ISO 639-1 code describing the language element content is written in.\n * Changing the `lang` attribute will update the value of this property.\n */\n lang = '';\n\n /**\n * Optional URL of the collection this element's resource belongs to.\n * Changing the `parent` attribute will update the value of this property.\n */\n parent = '';\n\n /**\n * Optional URI list of the related resources. If Rumour encounters a related\n * resource on creation or deletion, it will be reloaded from source.\n */\n related: string[] = [];\n\n private __href = '';\n\n private __group = '';\n\n private __unsubscribeFromRumour!: () => void;\n\n private __fetchEventHandler!: (evt: Event) => void;\n\n private __fetchEventQueue: FetchEvent[] = [];\n\n private readonly __service = interpret(\n (Nucleon.machine as NucleonMachine<TData>).withConfig({\n services: {\n sendDelete: () => this._sendDelete(),\n sendPatch: ({ edits }) => this._sendPatch(edits!),\n sendPost: ({ edits }) => this._sendPost(edits!),\n sendGet: () => this._sendGet(),\n },\n\n actions: {\n validate: assign<Nucleon.Context<TData, string>, Nucleon.Event<TData>>({\n errors: context => {\n const rules = (this.constructor as typeof NucleonElement).v8n;\n const form = { ...context.data, ...context.edits };\n\n return rules\n .map(validate => validate(form))\n .filter(v8nResult => typeof v8nResult === 'string')\n .filter((err, errIndex, errs) => errs.indexOf(err) === errIndex) as string[];\n },\n }),\n },\n })\n );\n\n /**\n * If network request returns non-2XX code, the entire error response\n * will be available via this getter.\n *\n * This property is readonly. Changing failure records via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override error status.\n *\n * @since 1.4.0\n */\n get failure(): Response | null {\n return this.__service.state.context.failure;\n }\n\n /**\n * Array of validation errors returned from `NucleonElement.v8n` checks.\n *\n * This property is readonly. Adding or removing error codes via this property is\n * not guaranteed to work. NucleonElement does not provide a way to override validity status.\n */\n get errors(): string[] {\n return this.__service.state.context.errors;\n }\n\n /**\n * Resource snapshot with edits applied. Empty object if unavailable.\n *\n * This property and its value are readonly. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please use `element.edit({ foo: 'bar' })` instead.\n * If you need to replace the entire data object, consider using `element.data`.\n */\n get form(): Partial<TData> {\n const { data, edits } = this.__service.state.context;\n return { ...data, ...edits } as Partial<TData>;\n }\n\n /**\n * Resource snapshot as-is, no edits applied. Null if unavailable.\n *\n * Returned value is not reactive. Assignments like `element.data.foo = 'bar'`\n * are not guaranteed to work. Please set the property instead: `element.data = { ...element.data, foo: 'bar' }`.\n * If you're processing user input, consider using `element.form` and `element.edit()` instead.\n */\n get data(): TData | null {\n return this.__service.state.context.data;\n }\n\n set data(data: TData | null) {\n this.__service.send({ type: 'SET_DATA', data });\n this.__href = data?._links.self.href ?? '';\n }\n\n /**\n * Rumour group. Elements in different groups will not share updates. Empty by default.\n * @example element.group = 'my-group'\n */\n get group(): string {\n return this.__group;\n }\n\n set group(value: string) {\n this.__group = value;\n this.__destroyRumour();\n this.__createRumour();\n }\n\n /**\n * Optional URL of the resource to load. Switches element to `idle.template` state if empty (default).\n * @example element.href = 'https://demo.foxycart.com/s/customer/attributes/0'\n */\n get href(): string {\n return this.__href;\n }\n\n set href(value: string) {\n this.__href = value;\n\n if (value) {\n this.__service.send({ type: 'FETCH' });\n } else {\n this.__service.send({ type: 'SET_DATA', data: null });\n }\n }\n\n /**\n * Checks if this element is in the given state.\n * @example element.in({ idle: 'snapshot' })\n */\n in<TStateValue extends Nucleon.State<TData, string>['value']>(\n stateValue: TStateValue\n ): this is this & ComputedElementProperties<TData, TStateValue> {\n return this.__service.state.matches(stateValue);\n }\n\n /**\n * Clears all edits and emits the `update` event.\n * @example element.undo()\n */\n undo(): void {\n this.__service.send({ type: 'UNDO' });\n }\n\n /**\n * Applies an edit to the local resource snapshot or its template and emits the `update` event.\n * @example element.edit({ first_name: 'Alex' })\n */\n edit(data: Partial<TData>): void {\n this.__service.send({ type: 'EDIT', data });\n }\n\n /**\n * Submits the form, updating the resource if href isn't empty or creating it otherwise.\n * Emits multiple `update` events as element state changes. Has no effect on invalid forms.\n * @example element.submit()\n */\n submit(): void {\n this.__service.send({ type: 'SUBMIT' });\n }\n\n /**\n * Sends a DELETE request to `element.href` and clears local data on success.\n * Emits multiple update events as element state changes.\n * @example element.delete()\n */\n delete(): void {\n this.__service.send({ type: 'DELETE' });\n }\n\n /**\n * Fetches data from `element.href` in background, keeping the edits and v8n errors.\n * @example element.refresh()\n */\n refresh(): void {\n this.__service.send({ type: 'REFRESH' });\n }\n\n /** @readonly */\n connectedCallback(): void {\n super.connectedCallback();\n\n this.__createService();\n this.__createRumour();\n this.__createServer();\n this.__processFetchEventQueue();\n }\n\n /** @readonly */\n disconnectedCallback(): void {\n super.disconnectedCallback();\n\n this.__destroyService();\n this.__destroyRumour();\n this.__destroyServer();\n this.__flushFetchEventQueue('parent element was disconnected');\n }\n\n applyInferredProperties(context: Map<string, unknown>): void {\n super.applyInferredProperties(context);\n\n if (this.infer === null) return;\n\n this.group = (context.get('group') as string | undefined) ?? '';\n this.lang = (context.get('lang') as string | undefined) ?? '';\n }\n\n /** Sends API request. Throws an error on non-2XX response. */\n protected async _fetch<TResult = TData>(...args: Parameters<Window['fetch']>): Promise<TResult> {\n const response = await new API(this).fetch(...args);\n if (!response.ok) throw response;\n return response.json();\n }\n\n /** POSTs to `element.parent`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPost(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.parent, { body, method: 'POST' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data, related, source: data._links.self.href });\n this.__createRumour();\n\n return data;\n }\n\n /** GETs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendGet(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href);\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href });\n this.__createRumour();\n\n return data;\n }\n\n /** PATCHes `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendPatch(edits: Partial<TData>): Promise<TData> {\n this.__destroyRumour();\n\n const body = JSON.stringify(edits);\n const data = await this._fetch(this.href, { body, method: 'PATCH' });\n const rumour = NucleonElement.Rumour(this.group);\n\n rumour.share({ data, source: this.href, related: this.related });\n this.__createRumour();\n\n return data;\n }\n\n /** DELETEs `element.href`, shares response with the Rumour group and returns parsed JSON. */\n protected async _sendDelete(): Promise<TData> {\n this.__destroyRumour();\n\n const data = await this._fetch(this.href, { method: 'DELETE' });\n const rumour = NucleonElement.Rumour(this.group);\n const related = [...this.related, this.parent];\n\n rumour.share({ data: null, source: this.href, related });\n this.__createRumour();\n\n return data;\n }\n\n private __createService() {\n this.__service.onTransition(state => {\n if (!state.changed) return;\n\n const flags = state.toStrings().reduce((p, c) => [...p, ...c.split('.')], [] as string[]);\n this.setAttribute('state', [...new Set(flags)].join(' '));\n\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n\n if (!state.matches('busy')) this.__processFetchEventQueue();\n });\n\n this.__service.onChange(() => {\n this.requestUpdate();\n this.dispatchEvent(new UpdateEvent());\n });\n\n this.__service.start();\n }\n\n private __destroyService() {\n this.__service.stop();\n }\n\n private __createRumour() {\n const rumour = NucleonElement.Rumour(this.group);\n this.__unsubscribeFromRumour = rumour.track(update => this.__handleRumourUpdate(update));\n }\n\n private __destroyRumour() {\n this.__unsubscribeFromRumour?.();\n }\n\n private __createServer() {\n this.__fetchEventHandler = this.__handleFetchEvent.bind(this);\n this.addEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __destroyServer() {\n this.removeEventListener('fetch', this.__fetchEventHandler);\n }\n\n private __handleRumourUpdate(update: (oldData: TData) => TData | null) {\n try {\n const oldData = this.__service.state?.context.data;\n if (!oldData) return;\n\n const newData = update(oldData);\n if (newData !== oldData) this.__service.send({ data: newData, type: 'SET_DATA' });\n } catch (err) {\n if (err instanceof Rumour.UpdateError) {\n this.__service.send({ type: 'REFRESH' });\n } else {\n throw err;\n }\n }\n }\n\n private __processFetchEventQueue() {\n const api = new NucleonElement.API(this);\n\n this.__fetchEventQueue.forEach(event => {\n const request = event.request;\n const cacheResponse = serveFromCache(request.url, this.data);\n const whenResponseReady = cacheResponse.ok ? cacheResponse : api.fetch(request);\n\n event.respondWith(Promise.resolve(whenResponseReady));\n\n if (cacheResponse.ok) {\n console.debug(\n `%c@foxy.io/elements::${this.localName}\\n%c200%c GET ${request.url}`,\n 'color: gray',\n `background: gray; padding: 0 .2em; border-radius: .2em; color: white;`,\n ''\n );\n }\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __flushFetchEventQueue(errorMessage: string) {\n this.__fetchEventQueue.forEach(event => {\n event.respondWith(Promise.reject(new Error(errorMessage)));\n });\n\n this.__fetchEventQueue = [];\n }\n\n private __handleFetchEvent(event: Event) {\n if (!(event instanceof FetchEvent)) return;\n if (event.defaultPrevented) return;\n if (event.request.method !== 'GET') return;\n if (event.request.url.startsWith('foxy://')) return;\n if (event.composedPath()[0] === this) return;\n\n event.preventDefault();\n this.__fetchEventQueue.push(event);\n\n if (!this.in('busy')) this.__processFetchEventQueue();\n }\n}\n"]}
@@ -1,5 +1,7 @@
1
1
  import { LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';
2
- declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
2
+ declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/inferrable").InferrableMixinHost> & {
3
+ inferredProperties: string[];
4
+ } & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
3
5
  defaultNS: string;
4
6
  } & {
5
7
  styles: import("lit-element").CSSResultArray;
@@ -6,8 +6,9 @@ import { ThemeableMixin } from "../../../mixins/themeable.js";
6
6
  import { TranslatableMixin } from "../../../mixins/translatable.js";
7
7
  import { classMap } from "../../../utils/class-map.js";
8
8
  import get from 'lodash-es/get';
9
+ import { InferrableMixin } from "../../../mixins/inferrable.js";
9
10
  const NS = 'pagination';
10
- const Base = ResponsiveMixin(ConfigurableMixin(ThemeableMixin(TranslatableMixin(LitElement, NS))));
11
+ const Base = ResponsiveMixin(ConfigurableMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS))));
11
12
  /**
12
13
  * Helper element that adds pagination controls to elements
13
14
  * representing Hypermedia API collection pages. Works with NucleonElement instances only.
@@ -66,7 +67,7 @@ export class Pagination extends Base {
66
67
  return html `
67
68
  <slot @slotchange=${this.__connectPageElement}></slot>
68
69
 
69
- <div class="grid grid-cols-3 gap-s items-center">
70
+ <div class="grid grid-cols-3 gap-s items-center -mx-xs">
70
71
  <div class="flex items-center space-x-s">
71
72
  <vaadin-button
72
73
  data-testid="first"
@@ -1 +1 @@
1
- {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../src/elements/public/Pagination/Pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport get from 'lodash-es/get';\n\nconst NS = 'pagination';\nconst Base = ResponsiveMixin(ConfigurableMixin(ThemeableMixin(TranslatableMixin(LitElement, NS))));\n\n/**\n * Helper element that adds pagination controls to elements\n * representing Hypermedia API collection pages. Works with NucleonElement instances only.\n * Page element **MUST** be a direct descendant of `foxy-pagination`.\n *\n * @example\n * ```html\n * <foxy-pagination first=\"https://demo.api/hapi/customers?limit=3\">\n * <foxy-customers-table></foxy-customers-table>\n * </foxy-pagination>\n * ```\n *\n * @element foxy-pagination\n * @since 1.15.0\n */\nexport class Pagination extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n first: { type: String },\n __pageElement: { attribute: false },\n };\n }\n\n private __pageElement: NucleonElement<any> | null = null;\n\n private __rerender = () => this.requestUpdate();\n\n private __first = '';\n\n /** URL of the first page of the colletion. */\n get first(): string {\n return this.__first;\n }\n\n set first(newValue: string) {\n this.__first = newValue;\n if (this.__pageElement) this.__pageElement.href = newValue;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.__connectPageElement();\n }\n\n render(): TemplateResult {\n const data = this.__pageElement?.data;\n const { disabled, lang, ns } = this;\n\n const returnedItemsValue = Number(get(data, 'returned_items'));\n const returnedItems = Number.isNaN(returnedItemsValue) ? 0 : returnedItemsValue;\n\n const totalItemsValue = Number(get(data, 'total_items'));\n const totalItems = Number.isNaN(totalItemsValue) ? 0 : totalItemsValue;\n\n const offsetValue = Number(get(data, 'offset'));\n const offset = Number.isNaN(offsetValue) ? 0 : offsetValue;\n\n const canGoBack = !disabled && offset > 0;\n const canGoForth = !disabled && offset + returnedItems < totalItems;\n\n const labelClass = 'sr-only sm-not-sr-only';\n\n return html`\n <slot @slotchange=${this.__connectPageElement}></slot>\n\n <div class=\"grid grid-cols-3 gap-s items-center\">\n <div class=\"flex items-center space-x-s\">\n <vaadin-button\n data-testid=\"first\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoBack}\n @click=${() => this.__goTo('first')}\n >\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:first-page\"></iron-icon>\n <foxy-i18n class=${labelClass} lang=${lang} key=\"first\" ns=${ns}></foxy-i18n>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"prev\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoBack}\n @click=${() => this.__goTo('prev')}\n >\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:chevron-left\"></iron-icon>\n <foxy-i18n class=${labelClass} lang=${lang} key=\"previous\" ns=${ns}></foxy-i18n>\n </vaadin-button>\n </div>\n\n <foxy-i18n\n options=${JSON.stringify({\n total: totalItems,\n from: offset ? offset + 1 : 0,\n to: offset + returnedItems,\n })}\n class=${classMap({\n 'flex-1 text-xs text-tertiary text-center leading-xs': true,\n 'opacity-0': !data,\n })}\n lang=${lang}\n key=\"pagination\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <div class=\"flex items-center justify-end space-x-s\">\n <vaadin-button\n data-testid=\"next\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoForth}\n @click=${() => this.__goTo('next')}\n >\n <foxy-i18n class=${labelClass} lang=${lang} key=\"next\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:chevron-right\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"last\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoForth}\n @click=${() => this.__goTo('last')}\n >\n <foxy-i18n class=${labelClass} lang=${lang} key=\"last\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:last-page\"></iron-icon>\n </vaadin-button>\n </div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.__disconnectPageElement();\n }\n\n private __goTo(rel: string): void {\n this.__pageElement!.href = String(get(this.__pageElement?.data, `_links.${rel}.href`));\n }\n\n private __disconnectPageElement() {\n this.__pageElement?.removeEventListener('update', this.__rerender);\n this.__pageElement = null;\n }\n\n private __connectPageElement() {\n this.__disconnectPageElement();\n\n const slot = this.renderRoot.querySelector<HTMLSlotElement>('slot');\n const assignedElements = slot?.assignedElements() ?? [];\n const firstNucleonElement = assignedElements.find(el => el instanceof NucleonElement) as\n | NucleonElement<any>\n | undefined;\n\n if (firstNucleonElement) {\n this.__pageElement = firstNucleonElement;\n this.__pageElement.addEventListener('update', this.__rerender);\n this.__pageElement.href = this.first;\n }\n }\n}\n"]}
1
+ {"version":3,"file":"Pagination.js","sourceRoot":"","sources":["../../../../src/elements/public/Pagination/Pagination.ts"],"names":[],"mappings":"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","sourcesContent":["import { LitElement, PropertyDeclarations, TemplateResult, html } from 'lit-element';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\nimport get from 'lodash-es/get';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst NS = 'pagination';\nconst Base = ResponsiveMixin(\n ConfigurableMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS)))\n);\n\n/**\n * Helper element that adds pagination controls to elements\n * representing Hypermedia API collection pages. Works with NucleonElement instances only.\n * Page element **MUST** be a direct descendant of `foxy-pagination`.\n *\n * @example\n * ```html\n * <foxy-pagination first=\"https://demo.api/hapi/customers?limit=3\">\n * <foxy-customers-table></foxy-customers-table>\n * </foxy-pagination>\n * ```\n *\n * @element foxy-pagination\n * @since 1.15.0\n */\nexport class Pagination extends Base {\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n first: { type: String },\n __pageElement: { attribute: false },\n };\n }\n\n private __pageElement: NucleonElement<any> | null = null;\n\n private __rerender = () => this.requestUpdate();\n\n private __first = '';\n\n /** URL of the first page of the colletion. */\n get first(): string {\n return this.__first;\n }\n\n set first(newValue: string) {\n this.__first = newValue;\n if (this.__pageElement) this.__pageElement.href = newValue;\n }\n\n connectedCallback(): void {\n super.connectedCallback();\n this.__connectPageElement();\n }\n\n render(): TemplateResult {\n const data = this.__pageElement?.data;\n const { disabled, lang, ns } = this;\n\n const returnedItemsValue = Number(get(data, 'returned_items'));\n const returnedItems = Number.isNaN(returnedItemsValue) ? 0 : returnedItemsValue;\n\n const totalItemsValue = Number(get(data, 'total_items'));\n const totalItems = Number.isNaN(totalItemsValue) ? 0 : totalItemsValue;\n\n const offsetValue = Number(get(data, 'offset'));\n const offset = Number.isNaN(offsetValue) ? 0 : offsetValue;\n\n const canGoBack = !disabled && offset > 0;\n const canGoForth = !disabled && offset + returnedItems < totalItems;\n\n const labelClass = 'sr-only sm-not-sr-only';\n\n return html`\n <slot @slotchange=${this.__connectPageElement}></slot>\n\n <div class=\"grid grid-cols-3 gap-s items-center -mx-xs\">\n <div class=\"flex items-center space-x-s\">\n <vaadin-button\n data-testid=\"first\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoBack}\n @click=${() => this.__goTo('first')}\n >\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:first-page\"></iron-icon>\n <foxy-i18n class=${labelClass} lang=${lang} key=\"first\" ns=${ns}></foxy-i18n>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"prev\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoBack}\n @click=${() => this.__goTo('prev')}\n >\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:chevron-left\"></iron-icon>\n <foxy-i18n class=${labelClass} lang=${lang} key=\"previous\" ns=${ns}></foxy-i18n>\n </vaadin-button>\n </div>\n\n <foxy-i18n\n options=${JSON.stringify({\n total: totalItems,\n from: offset ? offset + 1 : 0,\n to: offset + returnedItems,\n })}\n class=${classMap({\n 'flex-1 text-xs text-tertiary text-center leading-xs': true,\n 'opacity-0': !data,\n })}\n lang=${lang}\n key=\"pagination\"\n ns=${ns}\n >\n </foxy-i18n>\n\n <div class=\"flex items-center justify-end space-x-s\">\n <vaadin-button\n data-testid=\"next\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoForth}\n @click=${() => this.__goTo('next')}\n >\n <foxy-i18n class=${labelClass} lang=${lang} key=\"next\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:chevron-right\"></iron-icon>\n </vaadin-button>\n\n <vaadin-button\n data-testid=\"last\"\n theme=\"contrast tertiary-inline\"\n ?disabled=${!canGoForth}\n @click=${() => this.__goTo('last')}\n >\n <foxy-i18n class=${labelClass} lang=${lang} key=\"last\" ns=${ns}></foxy-i18n>\n <iron-icon class=\"icon-inline text-s\" icon=\"icons:last-page\"></iron-icon>\n </vaadin-button>\n </div>\n </div>\n `;\n }\n\n disconnectedCallback(): void {\n super.disconnectedCallback();\n this.__disconnectPageElement();\n }\n\n private __goTo(rel: string): void {\n this.__pageElement!.href = String(get(this.__pageElement?.data, `_links.${rel}.href`));\n }\n\n private __disconnectPageElement() {\n this.__pageElement?.removeEventListener('update', this.__rerender);\n this.__pageElement = null;\n }\n\n private __connectPageElement() {\n this.__disconnectPageElement();\n\n const slot = this.renderRoot.querySelector<HTMLSlotElement>('slot');\n const assignedElements = slot?.assignedElements() ?? [];\n const firstNucleonElement = assignedElements.find(el => el instanceof NucleonElement) as\n | NucleonElement<any>\n | undefined;\n\n if (firstNucleonElement) {\n this.__pageElement = firstNucleonElement;\n this.__pageElement.addEventListener('update', this.__rerender);\n this.__pageElement.href = this.first;\n }\n }\n}\n"]}
@@ -60,7 +60,7 @@ export class PaymentCard extends Base {
60
60
  ${isCardInfoHidden && isFraudRiskHidden
61
61
  ? ''
62
62
  : html `
63
- <div class="my-s flex space-x-s">
63
+ <div class="my-s flex space-x-s overflow-auto">
64
64
  ${isCardInfoHidden ? '' : this.__renderCardInfo()}
65
65
  ${isFraudRiskHidden ? '' : this.__renderFraudRisk()}
66
66
  </div>
@@ -1 +1 @@
1
- {"version":3,"file":"PaymentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentCard/PaymentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import * as logos from '../PaymentMethodCard/logos';\n\nimport { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, 'payment-card')));\n\n/**\n * Basic card displaying a payment.\n *\n * Note: payment gateway names need to be loaded separately. You can obtain\n * them from `fx:property_helpers` using your own Backend API proxy or just hardcode the values\n * you need. Once you have the gateway names, call `I18n.setGateways(names)`.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @slot card-info:before\n * @slot card-info:after\n *\n * @slot fraud-risk:before\n * @slot fraud-risk:after\n *\n * @slot processor-response:before\n * @slot processor-response:after\n *\n * @element foxy-payment-card\n * @since 1.11.0\n */\nexport class PaymentCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n private __currency = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n const isCardInfoHidden = hidden.matches('card-info', true);\n const isFraudRiskHidden = hidden.matches('fraud-risk', true);\n\n return html`\n <div\n aria-busy=${!this.data && this.in('busy')}\n aria-live=\"polite\"\n class=\"relative text-body text-m font-lumo leading-m focus-outline-none\"\n >\n <div\n class=${classMap({\n 'relative transition duration-250 ease-in-out': true,\n 'opacity-0 pointer-events-none': !this.data,\n })}\n >\n ${hidden.matches('title', true) ? '' : this.__renderTitle()}\n ${hidden.matches('subtitle', true) ? '' : this.__renderSubtitle()}\n ${isCardInfoHidden && isFraudRiskHidden\n ? ''\n : html`\n <div class=\"my-s flex space-x-s\">\n ${isCardInfoHidden ? '' : this.__renderCardInfo()}\n ${isFraudRiskHidden ? '' : this.__renderFraudRisk()}\n </div>\n `}\n ${hidden.matches('processor-response', true) ? '' : this.__renderProcessorResponse()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n type Store = Resource<Rels.Store>;\n\n const payment = await super._sendGet();\n const [transaction, store] = await Promise.all([\n super._fetch<Transaction>(payment._links['fx:transaction'].href),\n super._fetch<Store>(payment._links['fx:store'].href),\n ]);\n\n this.__currency = transaction.currency_code;\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n\n return payment;\n }\n\n private __renderTitle() {\n const key = this.data ? `gateways.${this.data.gateway_type}` : '';\n const ns = `${this.ns} gateways`;\n\n return html`\n <div class=\"text-m flex text-secondary\" data-testid=\"title\">\n ${this.renderTemplateOrSlot('title:before')}\n <foxy-i18n lang=${this.lang} key=${key} ns=${ns}></foxy-i18n>&ZeroWidthSpace;\n ${this.renderTemplateOrSlot('title:after')}\n </div>\n `;\n }\n\n private __renderSubtitle() {\n const amount = `${this.data?.amount ?? ''} ${this.__currency}`;\n const amountOptions = JSON.stringify({ amount, currencyDisplay: this.__currencyDisplay });\n\n const date = this.data?.date_created ?? '';\n const dateOptions = JSON.stringify({ value: date });\n\n const lang = this.lang;\n const ns = this.ns;\n\n return html`\n <div class=\"flex font-semibold text-m\" data-testid=\"subtitle\">\n ${this.renderTemplateOrSlot('subtitle:before')}\n\n <foxy-i18n options=${amountOptions} lang=${lang} key=\"price\" ns=${ns}></foxy-i18n>\n <span>&nbsp;&bull;&nbsp;</span>\n <foxy-i18n options=${dateOptions} lang=${lang} key=\"date\" ns=${ns}></foxy-i18n>\n\n ${this.renderTemplateOrSlot('subtitle:after')}\n </div>\n `;\n }\n\n private __renderCardInfo() {\n const data = this.data;\n const type = (data?.cc_type ?? 'unknown').toLowerCase() as keyof typeof logos;\n const year = data?.cc_exp_year?.substring(2);\n const month = data?.cc_exp_month;\n const last4Digits = data?.cc_number_masked?.replace(/x/gi, '');\n\n if (!month || !year || !last4Digits) return;\n\n return html`\n <div class=\"flex\" data-testid=\"card-info\">\n ${this.renderTemplateOrSlot('card-info:before')}\n\n <div class=\"truncate flex items-center h-s rounded overflow-hidden bg-contrast-5\">\n <div class=\"h-s\">${logos[type] ?? logos.unknown}</div>\n <div class=\"text-m font-semibold px-s\">•••• ${last4Digits} ${month}/${year}</div>\n </div>\n\n ${this.renderTemplateOrSlot('card-info:after')}\n </div>\n `;\n }\n\n private __renderFraudRisk() {\n const score = this.data?.fraud_protection_score ?? 0;\n const color = score > 0 ? 'text-error' : 'text-success';\n const background = score > 0 ? 'bg-error-10' : 'bg-success-10';\n\n return html`\n <div class=\"flex\" data-testid=\"fraud-risk\">\n ${this.renderTemplateOrSlot('fraud-risk:before')}\n\n <foxy-i18n\n options=${JSON.stringify({ score })}\n class=\"truncate flex font-semibold h-s items-center px-s rounded text-m ${color} ${background}\"\n lang=${this.lang}\n key=\"fraud_risk\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('fraud-risk:after')}\n </div>\n `;\n }\n\n private __renderProcessorResponse() {\n return html`\n <div class=\"text-m text-tertiary\" data-testid=\"processor-response\">\n ${this.renderTemplateOrSlot('processor-response:before')}\n ${this.data?.processor_response}&ZeroWidthSpace;\n ${this.renderTemplateOrSlot('processor-response:after')}\n </div>\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"PaymentCard.js","sourceRoot":"","sources":["../../../../src/elements/public/PaymentCard/PaymentCard.ts"],"names":[],"mappings":"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","sourcesContent":["import * as logos from '../PaymentMethodCard/logos';\n\nimport { Data, Templates } from './types';\nimport { TemplateResult, html } from 'lit-html';\n\nimport { ConfigurableMixin } from '../../../mixins/configurable';\nimport { NucleonElement } from '../NucleonElement/NucleonElement';\nimport { Rels } from '@foxy.io/sdk/backend';\nimport { Resource } from '@foxy.io/sdk/core';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { classMap } from '../../../utils/class-map';\n\nconst Base = ThemeableMixin(ConfigurableMixin(TranslatableMixin(NucleonElement, 'payment-card')));\n\n/**\n * Basic card displaying a payment.\n *\n * Note: payment gateway names need to be loaded separately. You can obtain\n * them from `fx:property_helpers` using your own Backend API proxy or just hardcode the values\n * you need. Once you have the gateway names, call `I18n.setGateways(names)`.\n *\n * @slot title:before\n * @slot title:after\n *\n * @slot subtitle:before\n * @slot subtitle:after\n *\n * @slot card-info:before\n * @slot card-info:after\n *\n * @slot fraud-risk:before\n * @slot fraud-risk:after\n *\n * @slot processor-response:before\n * @slot processor-response:after\n *\n * @element foxy-payment-card\n * @since 1.11.0\n */\nexport class PaymentCard extends Base<Data> {\n templates: Templates = {};\n\n private __currencyDisplay = '';\n\n private __currency = '';\n\n render(): TemplateResult {\n const hidden = this.hiddenSelector;\n const isCardInfoHidden = hidden.matches('card-info', true);\n const isFraudRiskHidden = hidden.matches('fraud-risk', true);\n\n return html`\n <div\n aria-busy=${!this.data && this.in('busy')}\n aria-live=\"polite\"\n class=\"relative text-body text-m font-lumo leading-m focus-outline-none\"\n >\n <div\n class=${classMap({\n 'relative transition duration-250 ease-in-out': true,\n 'opacity-0 pointer-events-none': !this.data,\n })}\n >\n ${hidden.matches('title', true) ? '' : this.__renderTitle()}\n ${hidden.matches('subtitle', true) ? '' : this.__renderSubtitle()}\n ${isCardInfoHidden && isFraudRiskHidden\n ? ''\n : html`\n <div class=\"my-s flex space-x-s overflow-auto\">\n ${isCardInfoHidden ? '' : this.__renderCardInfo()}\n ${isFraudRiskHidden ? '' : this.__renderFraudRisk()}\n </div>\n `}\n ${hidden.matches('processor-response', true) ? '' : this.__renderProcessorResponse()}\n </div>\n\n <div\n class=${classMap({\n 'transition duration-250 ease-in-out absolute inset-0 flex': true,\n 'opacity-0 pointer-events-none': !!this.data,\n })}\n >\n <foxy-spinner\n data-testid=\"spinner\"\n class=\"m-auto\"\n state=${this.in('fail') ? 'error' : this.in({ idle: 'template' }) ? 'empty' : 'busy'}\n lang=${this.lang}\n ns=\"${this.ns} ${customElements.get('foxy-spinner')?.defaultNS ?? ''}\"\n >\n </foxy-spinner>\n </div>\n </div>\n `;\n }\n\n protected async _sendGet(): Promise<Data> {\n type Transaction = Resource<Rels.Transaction>;\n type Store = Resource<Rels.Store>;\n\n const payment = await super._sendGet();\n const [transaction, store] = await Promise.all([\n super._fetch<Transaction>(payment._links['fx:transaction'].href),\n super._fetch<Store>(payment._links['fx:store'].href),\n ]);\n\n this.__currency = transaction.currency_code;\n this.__currencyDisplay = store.use_international_currency_symbol ? 'code' : 'symbol';\n\n return payment;\n }\n\n private __renderTitle() {\n const key = this.data ? `gateways.${this.data.gateway_type}` : '';\n const ns = `${this.ns} gateways`;\n\n return html`\n <div class=\"text-m flex text-secondary\" data-testid=\"title\">\n ${this.renderTemplateOrSlot('title:before')}\n <foxy-i18n lang=${this.lang} key=${key} ns=${ns}></foxy-i18n>&ZeroWidthSpace;\n ${this.renderTemplateOrSlot('title:after')}\n </div>\n `;\n }\n\n private __renderSubtitle() {\n const amount = `${this.data?.amount ?? ''} ${this.__currency}`;\n const amountOptions = JSON.stringify({ amount, currencyDisplay: this.__currencyDisplay });\n\n const date = this.data?.date_created ?? '';\n const dateOptions = JSON.stringify({ value: date });\n\n const lang = this.lang;\n const ns = this.ns;\n\n return html`\n <div class=\"flex font-semibold text-m\" data-testid=\"subtitle\">\n ${this.renderTemplateOrSlot('subtitle:before')}\n\n <foxy-i18n options=${amountOptions} lang=${lang} key=\"price\" ns=${ns}></foxy-i18n>\n <span>&nbsp;&bull;&nbsp;</span>\n <foxy-i18n options=${dateOptions} lang=${lang} key=\"date\" ns=${ns}></foxy-i18n>\n\n ${this.renderTemplateOrSlot('subtitle:after')}\n </div>\n `;\n }\n\n private __renderCardInfo() {\n const data = this.data;\n const type = (data?.cc_type ?? 'unknown').toLowerCase() as keyof typeof logos;\n const year = data?.cc_exp_year?.substring(2);\n const month = data?.cc_exp_month;\n const last4Digits = data?.cc_number_masked?.replace(/x/gi, '');\n\n if (!month || !year || !last4Digits) return;\n\n return html`\n <div class=\"flex\" data-testid=\"card-info\">\n ${this.renderTemplateOrSlot('card-info:before')}\n\n <div class=\"truncate flex items-center h-s rounded overflow-hidden bg-contrast-5\">\n <div class=\"h-s\">${logos[type] ?? logos.unknown}</div>\n <div class=\"text-m font-semibold px-s\">•••• ${last4Digits} ${month}/${year}</div>\n </div>\n\n ${this.renderTemplateOrSlot('card-info:after')}\n </div>\n `;\n }\n\n private __renderFraudRisk() {\n const score = this.data?.fraud_protection_score ?? 0;\n const color = score > 0 ? 'text-error' : 'text-success';\n const background = score > 0 ? 'bg-error-10' : 'bg-success-10';\n\n return html`\n <div class=\"flex\" data-testid=\"fraud-risk\">\n ${this.renderTemplateOrSlot('fraud-risk:before')}\n\n <foxy-i18n\n options=${JSON.stringify({ score })}\n class=\"truncate flex font-semibold h-s items-center px-s rounded text-m ${color} ${background}\"\n lang=${this.lang}\n key=\"fraud_risk\"\n ns=${this.ns}\n >\n </foxy-i18n>\n\n ${this.renderTemplateOrSlot('fraud-risk:after')}\n </div>\n `;\n }\n\n private __renderProcessorResponse() {\n return html`\n <div class=\"text-m text-tertiary\" data-testid=\"processor-response\">\n ${this.renderTemplateOrSlot('processor-response:before')}\n ${this.data?.processor_response}&ZeroWidthSpace;\n ${this.renderTemplateOrSlot('processor-response:after')}\n </div>\n `;\n }\n}\n"]}
@@ -1,6 +1,8 @@
1
1
  import { CSSResultArray, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';
2
2
  import { Operator, Option, Type } from './types';
3
- declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
3
+ declare const Base: typeof LitElement & import("lit-element").Constructor<import("../../../mixins/inferrable").InferrableMixinHost> & {
4
+ inferredProperties: string[];
5
+ } & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
4
6
  defaultNS: string;
5
7
  } & {
6
8
  styles: CSSResultArray;
@@ -7,8 +7,9 @@ import { TranslatableMixin } from "../../../mixins/translatable.js";
7
7
  import { parse } from "./utils/parse.js";
8
8
  import { stringify } from "./utils/stringify.js";
9
9
  import { styles } from "./styles.js";
10
+ import { InferrableMixin } from "../../../mixins/inferrable.js";
10
11
  const NS = 'query-builder';
11
- const Base = ResponsiveMixin(ThemeableMixin(TranslatableMixin(LitElement, NS)));
12
+ const Base = ResponsiveMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS)));
12
13
  /**
13
14
  * UI component for creating Foxy hAPI filters visually. Compatible with
14
15
  * Backend API, Customer API or any other API using the same format as described
@@ -1 +1 @@
1
- {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/elements/public/QueryBuilder/QueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAU,IAAI,EAAE,mBAAgB;AAEjD,OAAO,EAAE,KAAK,EAAE,8BAA2B;AAC3C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,KAAK,EAAE,yBAAsB;AACtC,OAAO,EAAE,SAAS,EAAE,6BAA0B;AAC9C,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAElC,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEhF;;;;;;;GAOG;AACH,MAAM,YAAa,SAAQ,IAAI;IAA/B;;QAsBE,gCAAgC;QAChC,YAAO,GAAoB,IAAI,CAAC;QAEhC,2CAA2C;QAC3C,UAAK,GAAkB,IAAI,CAAC;IAa9B,CAAC;IA7BC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAQD,MAAM;;QACJ,OAAO,KAAK,CAAC;YACX,YAAY,EAAE,KAAK,OAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC;YACrC,OAAO,QAAE,IAAI,CAAC,OAAO,mCAAI,EAAE;YAC3B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;AArCD,uEAAuE;AACvD,wBAAW,GAAG,KAAM,SAAQ,WAAiB;CAAG,CAAC;AAEjE,2DAA2D;AAC3C,qBAAQ,GAAG,QAAQ,CAAC;AAEpC,6DAA6D;AAC7C,iBAAI,GAAG,IAAI,CAAC;AAiC9B,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { CSSResultArray, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { Operator, Option, Type } from './types';\n\nimport { Group } from './components/Group';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { parse } from './utils/parse';\nimport { stringify } from './utils/stringify';\nimport { styles } from './styles';\n\nconst NS = 'query-builder';\nconst Base = ResponsiveMixin(ThemeableMixin(TranslatableMixin(LitElement, NS)));\n\n/**\n * UI component for creating Foxy hAPI filters visually. Compatible with\n * Backend API, Customer API or any other API using the same format as described\n * in our [docs](https://api.foxy.io/docs/cheat-sheet).\n *\n * @element foxy-query-builder\n * @since 1.12.0\n */\nclass QueryBuilder extends Base {\n /** QueryBuilder dispatches this event on itself when value changes. */\n static readonly ChangeEvent = class extends CustomEvent<void> {};\n\n /** Operator dictionary for use in autocomplete options. */\n static readonly Operator = Operator;\n\n /** Field type dictionary for use in autocomplete options. */\n static readonly Type = Type;\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n value: { type: String },\n };\n }\n\n static get styles(): CSSResultArray {\n return [super.styles, styles];\n }\n\n /** Autocomplete suggestions. */\n options: Option[] | null = null;\n\n /** Current value as hAPI filter string. */\n value: string | null = null;\n\n render(): TemplateResult {\n return Group({\n parsedValues: parse(this.value ?? ''),\n options: this.options ?? [],\n t: this.t.bind(this),\n onChange: newValue => {\n this.value = stringify(newValue);\n this.dispatchEvent(new QueryBuilder.ChangeEvent('change'));\n },\n });\n }\n}\n\nexport { QueryBuilder };\n"]}
1
+ {"version":3,"file":"QueryBuilder.js","sourceRoot":"","sources":["../../../../src/elements/public/QueryBuilder/QueryBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,UAAU,EAAwC,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,QAAQ,EAAU,IAAI,EAAE,mBAAgB;AAEjD,OAAO,EAAE,KAAK,EAAE,8BAA2B;AAC3C,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAC7D,OAAO,EAAE,cAAc,EAAE,qCAAkC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,wCAAqC;AACjE,OAAO,EAAE,KAAK,EAAE,yBAAsB;AACtC,OAAO,EAAE,SAAS,EAAE,6BAA0B;AAC9C,OAAO,EAAE,MAAM,EAAE,oBAAiB;AAClC,OAAO,EAAE,eAAe,EAAE,sCAAmC;AAE7D,MAAM,EAAE,GAAG,eAAe,CAAC;AAC3B,MAAM,IAAI,GAAG,eAAe,CAAC,cAAc,CAAC,iBAAiB,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjG;;;;;;;GAOG;AACH,MAAM,YAAa,SAAQ,IAAI;IAA/B;;QAsBE,gCAAgC;QAChC,YAAO,GAAoB,IAAI,CAAC;QAEhC,2CAA2C;QAC3C,UAAK,GAAkB,IAAI,CAAC;IAa9B,CAAC;IA7BC,MAAM,KAAK,UAAU;QACnB,OAAO;YACL,GAAG,KAAK,CAAC,UAAU;YACnB,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;YACxB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;IAQD,MAAM;;QACJ,OAAO,KAAK,CAAC;YACX,YAAY,EAAE,KAAK,OAAC,IAAI,CAAC,KAAK,mCAAI,EAAE,CAAC;YACrC,OAAO,QAAE,IAAI,CAAC,OAAO,mCAAI,EAAE;YAC3B,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;YACpB,QAAQ,EAAE,QAAQ,CAAC,EAAE;gBACnB,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjC,IAAI,CAAC,aAAa,CAAC,IAAI,YAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;AArCD,uEAAuE;AACvD,wBAAW,GAAG,KAAM,SAAQ,WAAiB;CAAG,CAAC;AAEjE,2DAA2D;AAC3C,qBAAQ,GAAG,QAAQ,CAAC;AAEpC,6DAA6D;AAC7C,iBAAI,GAAG,IAAI,CAAC;AAiC9B,OAAO,EAAE,YAAY,EAAE,CAAC","sourcesContent":["import { CSSResultArray, LitElement, PropertyDeclarations, TemplateResult } from 'lit-element';\nimport { Operator, Option, Type } from './types';\n\nimport { Group } from './components/Group';\nimport { ResponsiveMixin } from '../../../mixins/responsive';\nimport { ThemeableMixin } from '../../../mixins/themeable';\nimport { TranslatableMixin } from '../../../mixins/translatable';\nimport { parse } from './utils/parse';\nimport { stringify } from './utils/stringify';\nimport { styles } from './styles';\nimport { InferrableMixin } from '../../../mixins/inferrable';\n\nconst NS = 'query-builder';\nconst Base = ResponsiveMixin(ThemeableMixin(TranslatableMixin(InferrableMixin(LitElement), NS)));\n\n/**\n * UI component for creating Foxy hAPI filters visually. Compatible with\n * Backend API, Customer API or any other API using the same format as described\n * in our [docs](https://api.foxy.io/docs/cheat-sheet).\n *\n * @element foxy-query-builder\n * @since 1.12.0\n */\nclass QueryBuilder extends Base {\n /** QueryBuilder dispatches this event on itself when value changes. */\n static readonly ChangeEvent = class extends CustomEvent<void> {};\n\n /** Operator dictionary for use in autocomplete options. */\n static readonly Operator = Operator;\n\n /** Field type dictionary for use in autocomplete options. */\n static readonly Type = Type;\n\n static get properties(): PropertyDeclarations {\n return {\n ...super.properties,\n options: { type: Array },\n value: { type: String },\n };\n }\n\n static get styles(): CSSResultArray {\n return [super.styles, styles];\n }\n\n /** Autocomplete suggestions. */\n options: Option[] | null = null;\n\n /** Current value as hAPI filter string. */\n value: string | null = null;\n\n render(): TemplateResult {\n return Group({\n parsedValues: parse(this.value ?? ''),\n options: this.options ?? [],\n t: this.t.bind(this),\n onChange: newValue => {\n this.value = stringify(newValue);\n this.dispatchEvent(new QueryBuilder.ChangeEvent('change'));\n },\n });\n }\n}\n\nexport { QueryBuilder };\n"]}
@@ -0,0 +1,48 @@
1
+ import { Data, Templates } from './types';
2
+ import { PropertyDeclarations, TemplateResult } from 'lit-element';
3
+ import { ScopedElementsMap } from '@open-wc/scoped-elements';
4
+ import { NucleonElement } from '../NucleonElement/NucleonElement';
5
+ import { NucleonV8N } from '../NucleonElement/types';
6
+ declare const Base: typeof NucleonElement & import("lit-element").Constructor<import("../../../mixins/translatable").TranslatableMixinHost> & {
7
+ defaultNS: string;
8
+ } & import("lit-element").Constructor<import("../../../mixins/configurable").ConfigurableMixinHost> & {
9
+ styles: import("lit-element").CSSResultArray;
10
+ } & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/src/types").ScopedElementsHost>;
11
+ /**
12
+ * Form element for creating or editing reports (`fx:report`).
13
+ *
14
+ * @slot name:before
15
+ * @slot name:after
16
+ *
17
+ * @slot range:before
18
+ * @slot range:after
19
+ *
20
+ * @slot timestamps:before
21
+ * @slot timestamps:after
22
+ *
23
+ * @slot delete:before
24
+ * @slot delete:after
25
+ *
26
+ * @slot create:before
27
+ * @slot create:after
28
+ *
29
+ * @element foxy-report-form
30
+ * @since 1.16.0
31
+ */
32
+ export declare class ReportForm extends Base<Data> {
33
+ static get scopedElements(): ScopedElementsMap;
34
+ static get properties(): PropertyDeclarations;
35
+ static get v8n(): NucleonV8N<Data>;
36
+ templates: Templates;
37
+ private __showRangeTime;
38
+ render(): TemplateResult;
39
+ private __renderName;
40
+ private __renderRangePreset;
41
+ private __renderRangeDateTimePicker;
42
+ private __renderRangeDatePicker;
43
+ private __renderRange;
44
+ private __renderTimestamps;
45
+ private __renderCreate;
46
+ private __renderDelete;
47
+ }
48
+ export {};