@magento/venia-ui 9.1.0 → 9.2.0-alpha.1

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 (290) hide show
  1. package/i18n/en_US.json +22 -7
  2. package/lib/RootComponents/CMS/__tests__/cms.spec.js +50 -20
  3. package/lib/RootComponents/CMS/cms.js +39 -43
  4. package/lib/RootComponents/CMS/cms.module.css +17 -14
  5. package/lib/RootComponents/Category/NoProductsFound/noProductsFound.js +1 -1
  6. package/lib/RootComponents/Category/__tests__/__snapshots__/category.spec.js.snap +2 -2
  7. package/lib/RootComponents/Category/__tests__/__snapshots__/categoryContent.spec.js.snap +60 -0
  8. package/lib/RootComponents/Category/__tests__/category.spec.js +1 -1
  9. package/lib/RootComponents/Category/__tests__/categoryContent.spec.js +8 -0
  10. package/lib/RootComponents/Category/category.gql.js +2 -1
  11. package/lib/RootComponents/Category/category.js +6 -6
  12. package/lib/RootComponents/Category/categoryContent.js +11 -4
  13. package/lib/components/Accordion/section.js +6 -2
  14. package/lib/components/AccountChip/accountChip.gql.js +1 -1
  15. package/lib/components/AccountInformationPage/accountInformationPage.gql.js +5 -7
  16. package/lib/components/AccountInformationPage/accountInformationPage.js +5 -1
  17. package/lib/components/AccountInformationPage/editForm.js +22 -4
  18. package/lib/components/AccountMenu/accountMenu.js +1 -1
  19. package/lib/components/AccountMenu/accountMenuItems.js +2 -1
  20. package/lib/components/AddressBookPage/__tests__/__snapshots__/addressCard.spec.js.snap +5 -0
  21. package/lib/components/AddressBookPage/addEditDialog.js +36 -10
  22. package/lib/components/AddressBookPage/addressBookPage.js +5 -2
  23. package/lib/components/AddressBookPage/addressCard.js +17 -4
  24. package/lib/components/App/app.js +5 -1
  25. package/lib/components/App/localeProvider.js +2 -1
  26. package/lib/components/Breadcrumbs/breadcrumbs.js +3 -3
  27. package/lib/components/Breadcrumbs/breadcrumbs.module.css +10 -3
  28. package/lib/components/CartPage/GiftCards/giftCard.js +1 -0
  29. package/lib/components/CartPage/GiftCards/giftCards.js +2 -0
  30. package/lib/components/CartPage/PriceAdjustments/CouponCode/couponCode.js +3 -0
  31. package/lib/components/CartPage/PriceAdjustments/GiftOptions/giftOptions.js +3 -0
  32. package/lib/components/CartPage/PriceAdjustments/ShippingMethods/shippingForm.js +10 -2
  33. package/lib/components/CartPage/PriceAdjustments/ShippingMethods/shippingMethods.js +2 -1
  34. package/lib/components/CartPage/PriceAdjustments/ShippingMethods/shippingRadio.js +1 -1
  35. package/lib/components/CartPage/PriceAdjustments/ShippingMethods/shippingRadios.js +1 -1
  36. package/lib/components/CartPage/PriceAdjustments/giftCardSection.ee.js +1 -0
  37. package/lib/components/CartPage/PriceAdjustments/priceAdjustments.js +4 -1
  38. package/lib/components/CartPage/PriceSummary/discountSummary.js +8 -2
  39. package/lib/components/CartPage/PriceSummary/giftCardSummary.ee.js +4 -1
  40. package/lib/components/CartPage/PriceSummary/priceSummary.js +10 -3
  41. package/lib/components/CartPage/PriceSummary/shippingSummary.js +6 -1
  42. package/lib/components/CartPage/PriceSummary/taxSummary.js +1 -1
  43. package/lib/components/CartPage/ProductListing/EditModal/__tests__/__snapshots__/productDetail.spec.js.snap +3 -3
  44. package/lib/components/CartPage/ProductListing/EditModal/__tests__/__snapshots__/productForm.spec.js.snap +2 -2
  45. package/lib/components/CartPage/ProductListing/EditModal/productDetail.js +1 -1
  46. package/lib/components/CartPage/ProductListing/__tests__/__snapshots__/errorMessage.spec.js.snap +11 -0
  47. package/lib/components/CartPage/ProductListing/__tests__/errorMessage.spec.js +20 -0
  48. package/lib/components/CartPage/ProductListing/__tests__/product.spec.js +1 -0
  49. package/lib/components/CartPage/ProductListing/errorMessage.js +31 -0
  50. package/lib/components/CartPage/ProductListing/errorMessage.module.css +9 -0
  51. package/lib/components/CartPage/ProductListing/product.js +14 -7
  52. package/lib/components/CartPage/ProductListing/productListing.js +6 -1
  53. package/lib/components/CartPage/ProductListing/productListing.module.css +6 -0
  54. package/lib/components/CartPage/ProductListing/quantity.js +3 -0
  55. package/lib/components/CartPage/cartPage.js +1 -1
  56. package/lib/components/CategoryList/__tests__/categoryList.spec.js +2 -0
  57. package/lib/components/CategoryList/categoryList.js +4 -2
  58. package/lib/components/CategoryList/categoryList.module.css +2 -0
  59. package/lib/components/CategoryList/categoryTile.js +2 -0
  60. package/lib/components/CategoryList/categoryTile.module.css +2 -0
  61. package/lib/components/CategoryList/index.js +2 -0
  62. package/lib/components/CategoryTree/categoryBranch.js +2 -1
  63. package/lib/components/CategoryTree/categoryLeaf.js +1 -0
  64. package/lib/components/CategoryTree/categoryTree.js +3 -3
  65. package/lib/components/Checkbox/checkbox.module.css +11 -3
  66. package/lib/components/Checkout/addressForm.js +2 -3
  67. package/lib/components/CheckoutPage/GuestSignIn/guestSignIn.js +6 -2
  68. package/lib/components/CheckoutPage/ItemsReview/__fixtures__/cartItems.js +12 -12
  69. package/lib/components/CheckoutPage/ItemsReview/__tests__/__snapshots__/item.spec.js.snap +2 -2
  70. package/lib/components/CheckoutPage/ItemsReview/__tests__/__snapshots__/itemsReview.spec.js.snap +3 -3
  71. package/lib/components/CheckoutPage/ItemsReview/item.js +1 -1
  72. package/lib/components/CheckoutPage/ItemsReview/itemsReview.js +4 -1
  73. package/lib/components/CheckoutPage/OrderConfirmationPage/__tests__/__snapshots__/orderConfirmationPage.spec.js.snap +1 -1
  74. package/lib/components/CheckoutPage/OrderConfirmationPage/createAccount.js +6 -0
  75. package/lib/components/CheckoutPage/OrderConfirmationPage/orderConfirmationPage.js +10 -4
  76. package/lib/components/CheckoutPage/OrderSummary/orderSummary.js +1 -1
  77. package/lib/components/CheckoutPage/PaymentInformation/braintreeSummary.js +2 -1
  78. package/lib/components/CheckoutPage/PaymentInformation/creditCard.js +11 -1
  79. package/lib/components/CheckoutPage/PaymentInformation/editCard.js +1 -1
  80. package/lib/components/CheckoutPage/PaymentInformation/editModal.js +1 -1
  81. package/lib/components/CheckoutPage/PaymentInformation/paymentInformation.js +1 -1
  82. package/lib/components/CheckoutPage/ShippingInformation/AddressForm/__tests__/__snapshots__/guestForm.spec.js.snap +8 -0
  83. package/lib/components/CheckoutPage/ShippingInformation/AddressForm/__tests__/guestForm.spec.js +56 -1
  84. package/lib/components/CheckoutPage/ShippingInformation/AddressForm/customerForm.js +27 -4
  85. package/lib/components/CheckoutPage/ShippingInformation/AddressForm/guestForm.js +96 -9
  86. package/lib/components/CheckoutPage/ShippingInformation/card.js +1 -1
  87. package/lib/components/CheckoutPage/ShippingInformation/shippingInformation.js +14 -3
  88. package/lib/components/CheckoutPage/ShippingMethod/completedView.js +1 -0
  89. package/lib/components/CheckoutPage/ShippingMethod/shippingMethod.js +2 -1
  90. package/lib/components/CheckoutPage/ShippingMethod/updateModal.js +1 -0
  91. package/lib/components/CheckoutPage/__tests__/__snapshots__/checkoutPage.spec.js.snap +32 -0
  92. package/lib/components/CheckoutPage/__tests__/checkoutPage.spec.js +2 -0
  93. package/lib/components/CheckoutPage/checkoutPage.js +26 -4
  94. package/lib/components/ContactPage/__tests__/__snapshots__/contactLink.spec.js.snap +11 -0
  95. package/lib/components/ContactPage/__tests__/__snapshots__/contactPage.shimmer.spec.js.snap +113 -0
  96. package/lib/components/ContactPage/__tests__/__snapshots__/contactPage.spec.js.snap +312 -0
  97. package/lib/components/ContactPage/__tests__/contactLink.spec.js +58 -0
  98. package/lib/components/ContactPage/__tests__/contactPage.shimmer.spec.js +20 -0
  99. package/lib/components/ContactPage/__tests__/contactPage.spec.js +159 -0
  100. package/lib/components/ContactPage/contactLink.js +21 -0
  101. package/lib/components/ContactPage/contactPage.js +270 -0
  102. package/lib/components/ContactPage/contactPage.module.css +81 -0
  103. package/lib/components/ContactPage/contactPage.shimmer.js +104 -0
  104. package/lib/components/ContactPage/contactPage.shimmer.module.css +27 -0
  105. package/lib/components/ContactPage/index.js +2 -0
  106. package/lib/components/CreateAccount/createAccount.js +5 -0
  107. package/lib/components/Dialog/dialog.js +18 -4
  108. package/lib/components/ErrorMessage/errorMessage.js +7 -2
  109. package/lib/components/ErrorView/errorView.js +4 -2
  110. package/lib/components/Field/field.module.css +10 -6
  111. package/lib/components/FilterModal/CurrentFilters/currentFilter.js +7 -3
  112. package/lib/components/FilterModal/FilterList/__tests__/filterItem.spec.js +34 -5
  113. package/lib/components/FilterModal/FilterList/filterDefault.js +3 -2
  114. package/lib/components/FilterModal/FilterList/filterItem.js +27 -7
  115. package/lib/components/FilterModal/FilterList/filterList.js +6 -1
  116. package/lib/components/FilterModal/filterBlock.js +9 -4
  117. package/lib/components/FilterModal/filterFooter.js +1 -0
  118. package/lib/components/FilterModal/filterModal.js +6 -1
  119. package/lib/components/FilterModalOpenButton/filterModalOpenButton.js +1 -0
  120. package/lib/components/FilterSidebar/filterSidebar.js +6 -1
  121. package/lib/components/Footer/__tests__/__snapshots__/footer.spec.js.snap +14 -0
  122. package/lib/components/Footer/__tests__/footer.spec.js +9 -1
  123. package/lib/components/Footer/footer.js +14 -7
  124. package/lib/components/Footer/sampleData.js +8 -3
  125. package/lib/components/ForgotPassword/ForgotPasswordForm/forgotPasswordForm.js +3 -0
  126. package/lib/components/ForgotPassword/FormSubmissionSuccessful/formSubmissionSuccessful.js +4 -2
  127. package/lib/components/ForgotPassword/forgotPassword.gql.js +0 -1
  128. package/lib/components/FormError/formError.js +10 -4
  129. package/lib/components/Gallery/__tests__/__snapshots__/addToCartButton.spec.js.snap +0 -3
  130. package/lib/components/Gallery/__tests__/__snapshots__/item.spec.js.snap +1 -0
  131. package/lib/components/Gallery/addToCartButton.js +24 -20
  132. package/lib/components/Gallery/item.js +15 -4
  133. package/lib/components/Gallery/item.module.css +1 -0
  134. package/lib/components/Head/index.js +2 -1
  135. package/lib/components/Header/__tests__/header.spec.js +1 -1
  136. package/lib/components/Header/accountTrigger.js +1 -0
  137. package/lib/components/Header/cartTrigger.js +4 -1
  138. package/lib/components/Header/header.js +1 -1
  139. package/lib/components/Header/navTrigger.js +1 -0
  140. package/lib/components/Header/searchTrigger.js +1 -0
  141. package/lib/components/LegacyMiniCart/cartOptions.gql.js +4 -3
  142. package/lib/components/LegacyMiniCart/editFormFragment.gql.js +7 -3
  143. package/lib/components/LegacyMiniCart/kebab.js +1 -0
  144. package/lib/components/LegacyMiniCart/productOptions.js +6 -1
  145. package/lib/components/LegacyMiniCart/section.js +15 -5
  146. package/lib/components/Link/link.js +6 -4
  147. package/lib/components/Mask/mask.js +3 -3
  148. package/lib/components/MegaMenu/__tests__/MegaMenuItem.spec.js +1 -0
  149. package/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenu.spec.js.snap +9 -0
  150. package/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenuItem.spec.js.snap +6 -0
  151. package/lib/components/MegaMenu/__tests__/__snapshots__/Submenu.spec.js.snap +2 -0
  152. package/lib/components/MegaMenu/megaMenu.js +6 -2
  153. package/lib/components/MegaMenu/megaMenuItem.js +27 -6
  154. package/lib/components/MegaMenu/megaMenuItem.module.css +0 -5
  155. package/lib/components/MegaMenu/submenu.js +5 -3
  156. package/lib/components/MegaMenu/submenuColumn.js +15 -4
  157. package/lib/components/MiniCart/ProductList/__tests__/__snapshots__/item.spec.js.snap +4 -4
  158. package/lib/components/MiniCart/ProductList/item.js +5 -2
  159. package/lib/components/MiniCart/ProductList/productList.js +5 -1
  160. package/lib/components/MiniCart/__tests__/__snapshots__/miniCart.spec.js.snap +1 -1
  161. package/lib/components/MiniCart/miniCart.gql.js +3 -2
  162. package/lib/components/MiniCart/miniCart.js +9 -4
  163. package/lib/components/MyAccount/ResetPassword/resetPassword.gql.js +1 -1
  164. package/lib/components/Newsletter/__tests__/__snapshots__/newsletter.shimmer.spec.js.snap +40 -0
  165. package/lib/components/Newsletter/__tests__/__snapshots__/newsletter.spec.js.snap +14 -8
  166. package/lib/components/Newsletter/__tests__/newsletter.shimmer.spec.js +10 -0
  167. package/lib/components/Newsletter/__tests__/newsletter.spec.js +25 -2
  168. package/lib/components/Newsletter/newsletter.js +27 -6
  169. package/lib/components/Newsletter/newsletter.shimmer.js +46 -0
  170. package/lib/components/Newsletter/newsletter.shimmer.module.css +11 -0
  171. package/lib/components/OrderHistoryPage/OrderDetails/__tests__/__snapshots__/item.spec.js.snap +1 -1
  172. package/lib/components/OrderHistoryPage/OrderDetails/__tests__/__snapshots__/shippingMethod.spec.js.snap +3 -0
  173. package/lib/components/OrderHistoryPage/OrderDetails/billingInformation.js +4 -1
  174. package/lib/components/OrderHistoryPage/OrderDetails/item.js +1 -1
  175. package/lib/components/OrderHistoryPage/OrderDetails/items.js +1 -1
  176. package/lib/components/OrderHistoryPage/OrderDetails/paymentMethod.js +1 -1
  177. package/lib/components/OrderHistoryPage/OrderDetails/shippingInformation.js +4 -1
  178. package/lib/components/OrderHistoryPage/OrderDetails/shippingMethod.js +5 -1
  179. package/lib/components/OrderHistoryPage/orderHistoryPage.js +8 -1
  180. package/lib/components/Pagination/pagination.js +1 -1
  181. package/lib/components/Pagination/tile.js +5 -1
  182. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/__tests__/__snapshots__/boolean.spec.js.snap +20 -0
  183. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/__tests__/boolean.spec.js +52 -0
  184. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.js +74 -0
  185. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.module.css +9 -0
  186. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/index.js +1 -0
  187. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/__tests__/__snapshots__/date.spec.js.snap +25 -0
  188. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/__tests__/date.spec.js +52 -0
  189. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.js +82 -0
  190. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.module.css +9 -0
  191. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/index.js +1 -0
  192. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/__tests__/__snapshots__/dateTime.spec.js.snap +29 -0
  193. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/__tests__/dateTime.spec.js +53 -0
  194. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.js +85 -0
  195. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.module.css +9 -0
  196. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/index.js +1 -0
  197. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/__tests__/__snapshots__/multiSelect.spec.js.snap +36 -0
  198. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/__tests__/multiSelect.spec.js +88 -0
  199. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/index.js +1 -0
  200. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.js +99 -0
  201. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.module.css +13 -0
  202. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/__tests__/__snapshots__/price.spec.js.snap +23 -0
  203. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/__tests__/price.spec.js +52 -0
  204. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/index.js +1 -0
  205. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.js +74 -0
  206. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.module.css +9 -0
  207. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/__tests__/__snapshots__/select.spec.js.snap +36 -0
  208. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/__tests__/select.spec.js +88 -0
  209. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/index.js +1 -0
  210. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.js +99 -0
  211. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.module.css +13 -0
  212. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/__tests__/__snapshots__/text.spec.js.snap +33 -0
  213. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/__tests__/text.spec.js +74 -0
  214. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/index.js +1 -0
  215. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.js +88 -0
  216. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.module.css +13 -0
  217. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/__tests__/__snapshots__/textarea.spec.js.snap +33 -0
  218. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/__tests__/textarea.spec.js +74 -0
  219. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/index.js +1 -0
  220. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.js +88 -0
  221. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.module.css +13 -0
  222. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/__tests__/__snapshots__/attributeType.spec.js.snap +101 -0
  223. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/__tests__/attributeType.spec.js +173 -0
  224. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/attributeType.js +61 -0
  225. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/index.js +1 -0
  226. package/lib/components/ProductFullDetail/CustomAttributes/__tests__/__snapshots__/customAttributes.spec.js.snap +49 -0
  227. package/lib/components/ProductFullDetail/CustomAttributes/__tests__/customAttributes.spec.js +78 -0
  228. package/lib/components/ProductFullDetail/CustomAttributes/customAttributes.js +66 -0
  229. package/lib/components/ProductFullDetail/CustomAttributes/customAttributes.module.css +14 -0
  230. package/lib/components/ProductFullDetail/CustomAttributes/index.js +1 -0
  231. package/lib/components/ProductFullDetail/__tests__/__snapshots__/productFullDetail.spec.js.snap +39 -0
  232. package/lib/components/ProductFullDetail/__tests__/productFullDetail.spec.js +3 -1
  233. package/lib/components/ProductFullDetail/productFullDetail.js +18 -3
  234. package/lib/components/ProductOptions/__tests__/__snapshots__/option.spec.js.snap +1 -1
  235. package/lib/components/ProductOptions/__tests__/__snapshots__/options.spec.js.snap +2 -2
  236. package/lib/components/ProductOptions/__tests__/__snapshots__/swatch.spec.js.snap +44 -2
  237. package/lib/components/ProductOptions/__tests__/__snapshots__/swatchList.spec.js.snap +22 -1
  238. package/lib/components/ProductOptions/__tests__/swatch.spec.js +0 -2
  239. package/lib/components/ProductOptions/option.js +2 -2
  240. package/lib/components/ProductOptions/swatch.js +7 -5
  241. package/lib/components/ProductOptions/swatch.module.css +11 -0
  242. package/lib/components/ProductOptions/tile.js +1 -0
  243. package/lib/components/ProductSort/__tests__/__snapshots__/sortItem.spec.js.snap +14 -0
  244. package/lib/components/ProductSort/__tests__/sortItem.spec.js +61 -0
  245. package/lib/components/ProductSort/productSort.js +84 -40
  246. package/lib/components/ProductSort/sortItem.js +26 -11
  247. package/lib/components/RadioGroup/radio.module.css +13 -5
  248. package/lib/components/RadioGroup/radioGroup.js +2 -1
  249. package/lib/components/Rating/__tests__/__snapshots__/rating.spec.js.snap +27 -0
  250. package/lib/components/Rating/__tests__/rating.spec.js +13 -0
  251. package/lib/components/Rating/index.js +1 -0
  252. package/lib/components/Rating/rating.js +30 -0
  253. package/lib/components/Rating/rating.module.css +21 -0
  254. package/lib/components/RichContent/richContent.module.css +52 -59
  255. package/lib/components/SearchBar/autocomplete.js +2 -0
  256. package/lib/components/SearchBar/searchBar.js +1 -1
  257. package/lib/components/SearchBar/searchField.js +1 -0
  258. package/lib/components/SearchBar/suggestedCategory.js +1 -1
  259. package/lib/components/SearchBar/suggestedProduct.js +6 -1
  260. package/lib/components/SearchPage/__tests__/__snapshots__/searchPage.spec.js.snap +41 -1
  261. package/lib/components/SearchPage/__tests__/searchPage.spec.js +8 -0
  262. package/lib/components/SearchPage/searchPage.js +12 -6
  263. package/lib/components/Shimmer/shimmer.js +11 -2
  264. package/lib/components/Shimmer/shimmer.module.css +4 -8
  265. package/lib/components/SignIn/__tests__/__snapshots__/signIn.spec.js.snap +126 -0
  266. package/lib/components/SignIn/__tests__/signIn.spec.js +11 -0
  267. package/lib/components/SignIn/signIn.gql.js +8 -4
  268. package/lib/components/SignIn/signIn.js +24 -4
  269. package/lib/components/TextArea/textArea.module.css +9 -0
  270. package/lib/components/TextInput/textInput.module.css +4 -0
  271. package/lib/components/ToastContainer/toast.js +23 -3
  272. package/lib/components/ToastContainer/toast.module.css +3 -0
  273. package/lib/components/Trigger/trigger.js +9 -2
  274. package/lib/components/Wishlist/AddToListButton/addToListButton.ee.js +1 -0
  275. package/lib/components/Wishlist/WishlistDialog/CreateWishlistForm/createWishlistForm.js +2 -0
  276. package/lib/components/Wishlist/WishlistDialog/WishlistLineItem/wishlistLineItem.js +1 -0
  277. package/lib/components/Wishlist/WishlistDialog/wishlistDialog.js +1 -0
  278. package/lib/components/WishlistPage/__tests__/__snapshots__/wishlistPage.spec.js.snap +5 -5
  279. package/lib/components/WishlistPage/createWishlist.ee.js +2 -0
  280. package/lib/components/WishlistPage/wishlist.js +8 -3
  281. package/lib/components/WishlistPage/wishlistItem.js +17 -4
  282. package/lib/components/WishlistPage/wishlistPage.js +5 -3
  283. package/lib/defaultRoutes.json +6 -0
  284. package/lib/targets/__tests__/venia-ui-targets.spec.js +2 -0
  285. package/lib/util/__tests__/shrinkGETQuery.spec.js +1 -1
  286. package/lib/util/apolloCache.js +2 -2
  287. package/lib/util/formValidators.js +10 -8
  288. package/lib/util/toCamelCase.js +3 -0
  289. package/package.json +17 -14
  290. package/upward.yml +19 -40
@@ -0,0 +1,40 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`renders correctly 1`] = `
4
+ <div
5
+ className="root"
6
+ >
7
+ <div
8
+ className="root_rectangle"
9
+ style={Object {}}
10
+ />
11
+ <div
12
+ className="root_rectangle"
13
+ style={Object {}}
14
+ />
15
+ <div
16
+ className="root_rectangle"
17
+ style={
18
+ Object {
19
+ "width": "50%",
20
+ }
21
+ }
22
+ />
23
+ <div
24
+ className="form"
25
+ >
26
+ <div
27
+ className="root_textInput"
28
+ style={Object {}}
29
+ />
30
+ <div
31
+ className="buttonsContainer"
32
+ >
33
+ <div
34
+ className="root_button"
35
+ style={Object {}}
36
+ />
37
+ </div>
38
+ </div>
39
+ </div>
40
+ `;
@@ -1,6 +1,10 @@
1
1
  // Jest Snapshot v1, https://goo.gl/fbAQLP
2
2
 
3
- exports[`Newsletter displays an error message if the email already subscribed 1`] = `
3
+ exports[`#Newsletter display it does not display when disabled 1`] = `null`;
4
+
5
+ exports[`#Newsletter display it renders shimmer while loading config 1`] = `<NewsletterShimmer />`;
6
+
7
+ exports[`#Newsletter display renders correctly 1`] = `
4
8
  <div
5
9
  className="root"
6
10
  >
@@ -21,11 +25,8 @@ exports[`Newsletter displays an error message if the email already subscribed 1`
21
25
  />
22
26
  </p>
23
27
  <FormError
24
- errors={
25
- Array [
26
- "This email address is already subscribed.",
27
- ]
28
- }
28
+ allowErrorMessages={true}
29
+ errors={Array []}
29
30
  />
30
31
  <form
31
32
  className="form"
@@ -85,7 +86,7 @@ exports[`Newsletter displays an error message if the email already subscribed 1`
85
86
  </div>
86
87
  `;
87
88
 
88
- exports[`Newsletter renders correctly 1`] = `
89
+ exports[`#Newsletter submit displays an error message if the email already subscribed 1`] = `
89
90
  <div
90
91
  className="root"
91
92
  >
@@ -106,7 +107,12 @@ exports[`Newsletter renders correctly 1`] = `
106
107
  />
107
108
  </p>
108
109
  <FormError
109
- errors={Array []}
110
+ allowErrorMessages={true}
111
+ errors={
112
+ Array [
113
+ "This email address is already subscribed.",
114
+ ]
115
+ }
110
116
  />
111
117
  <form
112
118
  className="form"
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import { createTestInstance } from '@magento/peregrine';
3
+ import NewsletterShimmer from '../newsletter.shimmer';
4
+
5
+ jest.mock('../../../classify');
6
+
7
+ test('renders correctly', () => {
8
+ const component = createTestInstance(<NewsletterShimmer />);
9
+ expect(component.toJSON()).toMatchSnapshot();
10
+ });
@@ -22,6 +22,7 @@ jest.mock('../../Button', () => () => <i />);
22
22
  jest.mock('../../LinkButton', () => () => <i />);
23
23
  jest.mock('../../FormError/formError', () => 'FormError');
24
24
  jest.mock('../../LoadingIndicator', () => () => <i />);
25
+ jest.mock('../newsletter.shimmer', () => 'NewsletterShimmer');
25
26
 
26
27
  jest.mock('@magento/peregrine', () => {
27
28
  const actual = jest.requireActual('@magento/peregrine');
@@ -45,20 +46,42 @@ jest.mock('@magento/peregrine/lib/hooks/useAwaitQuery', () => {
45
46
  });
46
47
  const mockHandleSubmit = jest.fn();
47
48
  const talonProps = {
49
+ isEnabled: true,
48
50
  errors: [],
49
51
  handleSubmit: mockHandleSubmit,
50
52
  isBusy: false,
53
+ isLoading: false,
51
54
  setFormApi: jest.fn()
52
55
  };
53
56
  const props = {};
54
57
 
55
- describe('Newsletter', () => {
58
+ describe('#Newsletter display', () => {
56
59
  test('renders correctly', () => {
57
60
  useNewsletter.mockReturnValueOnce(talonProps);
58
61
  const component = createTestInstance(<Newsletter {...props} />);
59
62
  expect(component.toJSON()).toMatchSnapshot();
60
63
  });
61
64
 
65
+ test('it renders shimmer while loading config', () => {
66
+ useNewsletter.mockReturnValueOnce({
67
+ ...talonProps,
68
+ isLoading: true
69
+ });
70
+ const component = createTestInstance(<Newsletter {...props} />);
71
+ expect(component.toJSON()).toMatchSnapshot();
72
+ });
73
+
74
+ test('it does not display when disabled', () => {
75
+ useNewsletter.mockReturnValueOnce({
76
+ ...talonProps,
77
+ isEnabled: false
78
+ });
79
+ const component = createTestInstance(<Newsletter {...props} />);
80
+ expect(component.toJSON()).toMatchSnapshot();
81
+ });
82
+ });
83
+
84
+ describe('#Newsletter submit', () => {
62
85
  test('calls `handleSubmit` on submit', () => {
63
86
  useNewsletter.mockReturnValueOnce(talonProps);
64
87
  useMutation.mockReturnValueOnce([mockHandleSubmit, {}]);
@@ -108,7 +131,7 @@ describe('Newsletter', () => {
108
131
  expect(component.toJSON()).toMatchSnapshot();
109
132
  });
110
133
 
111
- test('throws a toast if there is response', () => {
134
+ test('shows a toast if there is response', () => {
112
135
  useNewsletter.mockReturnValueOnce({
113
136
  ...talonProps,
114
137
  newsLetterResponse: { status: 'SUBSCRIBED' }
@@ -13,8 +13,9 @@ import Button from '../Button';
13
13
  import Field from '../Field';
14
14
  import LoadingIndicator from '../LoadingIndicator';
15
15
  import TextInput from '../TextInput';
16
- import defaultClasses from './newsletter.module.css';
17
16
  import LinkButton from '../LinkButton';
17
+ import Shimmer from './newsletter.shimmer';
18
+ import defaultClasses from './newsletter.module.css';
18
19
 
19
20
  const Newsletter = props => {
20
21
  const { formatMessage } = useIntl();
@@ -22,17 +23,20 @@ const Newsletter = props => {
22
23
  const talonProps = useNewsletter();
23
24
  const [, { addToast }] = useToasts();
24
25
  const {
26
+ isEnabled,
25
27
  errors,
26
28
  handleSubmit,
27
29
  isBusy,
30
+ isLoading,
28
31
  setFormApi,
29
- newsLetterResponse
32
+ newsLetterResponse,
33
+ clearErrors
30
34
  } = talonProps;
31
35
 
32
36
  useEffect(() => {
33
37
  if (newsLetterResponse && newsLetterResponse.status) {
34
38
  addToast({
35
- type: 'info',
39
+ type: 'success',
36
40
  message: formatMessage({
37
41
  id: 'newsletter.subscribeMessage',
38
42
  defaultMessage: 'The email address is subscribed.'
@@ -42,6 +46,14 @@ const Newsletter = props => {
42
46
  }
43
47
  }, [addToast, formatMessage, newsLetterResponse]);
44
48
 
49
+ if (isLoading) {
50
+ return <Shimmer />;
51
+ }
52
+
53
+ if (!isEnabled) {
54
+ return null;
55
+ }
56
+
45
57
  const maybeLoadingIndicator = isBusy ? (
46
58
  <div className={classes.loadingContainer}>
47
59
  <LoadingIndicator>
@@ -54,7 +66,7 @@ const Newsletter = props => {
54
66
  ) : null;
55
67
 
56
68
  return (
57
- <div className={classes.root}>
69
+ <div className={classes.root} data-cy={'Newsletter-root'}>
58
70
  {maybeLoadingIndicator}
59
71
  <span className={classes.title}>
60
72
  <FormattedMessage
@@ -71,7 +83,10 @@ const Newsletter = props => {
71
83
  }
72
84
  />
73
85
  </p>
74
- <FormError errors={Array.from(errors.values())} />
86
+ <FormError
87
+ allowErrorMessages
88
+ errors={Array.from(errors.values())}
89
+ />
75
90
  <Form
76
91
  getApi={setFormApi}
77
92
  className={classes.form}
@@ -95,6 +110,7 @@ const Newsletter = props => {
95
110
  className={classes.subscribe_link}
96
111
  type="submit"
97
112
  disabled={isBusy}
113
+ onClick={clearErrors}
98
114
  >
99
115
  <FormattedMessage
100
116
  id={'newsletter.subscribeText'}
@@ -102,7 +118,12 @@ const Newsletter = props => {
102
118
  />
103
119
  </LinkButton>
104
120
  <div className={classes.buttonsContainer}>
105
- <Button priority="normal" type="submit" disabled={isBusy}>
121
+ <Button
122
+ priority="normal"
123
+ type="submit"
124
+ disabled={isBusy}
125
+ onClick={clearErrors}
126
+ >
106
127
  <FormattedMessage
107
128
  id={'newsletter.subscribeText'}
108
129
  defaultMessage={'Subscribe'}
@@ -0,0 +1,46 @@
1
+ import React from 'react';
2
+
3
+ import { useStyle } from '../../classify';
4
+ import Shimmer from '../Shimmer';
5
+ import defaultClasses from './newsletter.module.css';
6
+ import defaultShimmerClasses from './newsletter.shimmer.module.css';
7
+
8
+ const NewsletterShimmer = props => {
9
+ const classes = useStyle(
10
+ defaultClasses,
11
+ defaultShimmerClasses,
12
+ props.classes
13
+ );
14
+
15
+ return (
16
+ <div className={classes.root}>
17
+ <Shimmer
18
+ key="title"
19
+ classes={{
20
+ root_rectangle: classes.shimmerItem
21
+ }}
22
+ />
23
+ <Shimmer
24
+ key="text"
25
+ classes={{
26
+ root_rectangle: classes.shimmerParagraphLine
27
+ }}
28
+ />
29
+ <Shimmer
30
+ key="text2"
31
+ width="50%"
32
+ classes={{
33
+ root_rectangle: classes.shimmerItem
34
+ }}
35
+ />
36
+ <div className={classes.form}>
37
+ <Shimmer type="textInput" />
38
+ <div className={classes.buttonsContainer}>
39
+ <Shimmer type="button" />
40
+ </div>
41
+ </div>
42
+ </div>
43
+ );
44
+ };
45
+
46
+ export default NewsletterShimmer;
@@ -0,0 +1,11 @@
1
+ .shimmerItem {
2
+ composes: root_rectangle from '../Shimmer/shimmer.module.css';
3
+ display: block;
4
+ margin-bottom: 1rem;
5
+ }
6
+
7
+ .shimmerParagraphLine {
8
+ composes: root_rectangle from '../Shimmer/shimmer.module.css';
9
+ display: block;
10
+ margin-bottom: 0.5rem;
11
+ }
@@ -57,7 +57,7 @@ https://www.venia.com/product1-thumbnail.jpg?auto=webp&format=pjpg&width=2560&he
57
57
  </dl>
58
58
  <span>
59
59
  <mock-FormattedMessage
60
- defaultMessage="Qty"
60
+ defaultMessage="Qty : {quantity}"
61
61
  id="orderDetails.quantity"
62
62
  values={
63
63
  Object {
@@ -30,6 +30,7 @@ exports[`should render properly 1`] = `
30
30
  <div>
31
31
  <span>
32
32
  <mock-FormattedMessage
33
+ defaultMessage="<strong>Tracking number:</strong> {number}"
33
34
  id="orderDetails.trackingInformation"
34
35
  values={
35
36
  Object {
@@ -41,6 +42,7 @@ exports[`should render properly 1`] = `
41
42
  </span>
42
43
  <span>
43
44
  <mock-FormattedMessage
45
+ defaultMessage="<strong>Tracking number:</strong> {number}"
44
46
  id="orderDetails.trackingInformation"
45
47
  values={
46
48
  Object {
@@ -52,6 +54,7 @@ exports[`should render properly 1`] = `
52
54
  </span>
53
55
  <span>
54
56
  <mock-FormattedMessage
57
+ defaultMessage="<strong>Tracking number:</strong> {number}"
55
58
  id="orderDetails.trackingInformation"
56
59
  values={
57
60
  Object {
@@ -30,7 +30,10 @@ const BillingInformation = props => {
30
30
  });
31
31
 
32
32
  return (
33
- <div className={classes.root}>
33
+ <div
34
+ className={classes.root}
35
+ data-cy="OrderDetails-BillingInformation-root"
36
+ >
34
37
  <div className={classes.heading}>
35
38
  <FormattedMessage
36
39
  id="orderDetails.billingInformationLabel"
@@ -64,7 +64,7 @@ const Item = props => {
64
64
  <span className={classes.quantity}>
65
65
  <FormattedMessage
66
66
  id="orderDetails.quantity"
67
- defaultMessage="Qty"
67
+ defaultMessage="Qty : {quantity}"
68
68
  values={{
69
69
  quantity: quantity_ordered
70
70
  }}
@@ -17,7 +17,7 @@ const Items = props => {
17
17
  ));
18
18
 
19
19
  return (
20
- <div className={classes.root}>
20
+ <div className={classes.root} data-cy="OrderDetails-Items-root">
21
21
  <h3 className={classes.heading}>
22
22
  <FormattedMessage
23
23
  id="orderItems.itemsHeading"
@@ -17,7 +17,7 @@ const PaymentMethod = props => {
17
17
  const [{ name }] = data;
18
18
 
19
19
  return (
20
- <div className={classes.root}>
20
+ <div className={classes.root} data-cy="OrderDetails-PaymentMethod-root">
21
21
  <div className={classes.heading}>
22
22
  <FormattedMessage
23
23
  id="orderDetails.paymentMethodLabel"
@@ -52,7 +52,10 @@ const ShippingInformation = props => {
52
52
  }
53
53
 
54
54
  return (
55
- <div className={classes.root}>
55
+ <div
56
+ className={classes.root}
57
+ data-cy="OrderDetails-ShippingInformation-root"
58
+ >
56
59
  <div className={classes.heading}>
57
60
  <FormattedMessage
58
61
  id="orderDetails.shippingInformationLabel"
@@ -23,6 +23,7 @@ const ShippingMethod = props => {
23
23
  <span className={classes.trackingRow} key={number}>
24
24
  <FormattedMessage
25
25
  id="orderDetails.trackingInformation"
26
+ defaultMessage="<strong>Tracking number:</strong> {number}"
26
27
  values={{
27
28
  number,
28
29
  strong: chunks => <strong>{chunks}</strong>
@@ -43,7 +44,10 @@ const ShippingMethod = props => {
43
44
  }
44
45
 
45
46
  return (
46
- <div className={classes.root}>
47
+ <div
48
+ className={classes.root}
49
+ data-cy="OrderDetails-ShippingMethod-root"
50
+ >
47
51
  <div className={classes.heading}>
48
52
  <FormattedMessage
49
53
  id="orderDetails.shippingMethodLabel"
@@ -89,7 +89,14 @@ const OrderHistoryPage = props => {
89
89
  </h3>
90
90
  );
91
91
  } else {
92
- return <ul className={classes.orderHistoryTable}>{orderRows}</ul>;
92
+ return (
93
+ <ul
94
+ className={classes.orderHistoryTable}
95
+ data-cy="OrderHistoryPage-orderHistoryTable"
96
+ >
97
+ {orderRows}
98
+ </ul>
99
+ );
93
100
  }
94
101
  }, [
95
102
  classes.emptyHistoryMessage,
@@ -50,7 +50,7 @@ const Pagination = props => {
50
50
  }
51
51
 
52
52
  return (
53
- <div className={classes.root}>
53
+ <div className={classes.root} data-cy="Pagination-root">
54
54
  <NavButton
55
55
  name={navButtons.firstPage.name}
56
56
  active={isActiveLeft}
@@ -11,7 +11,11 @@ const Tile = props => {
11
11
  const handleClick = useCallback(() => onClick(number), [onClick, number]);
12
12
 
13
13
  return (
14
- <button className={rootClass} onClick={handleClick}>
14
+ <button
15
+ className={rootClass}
16
+ onClick={handleClick}
17
+ data-cy={isActive ? 'Tile-activeRoot' : 'Tile-root'}
18
+ >
15
19
  {number}
16
20
  </button>
17
21
  );
@@ -0,0 +1,20 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`#Boolean renders boolean when data is provided 1`] = `
4
+ Array [
5
+ <div>
6
+ Boolean Label
7
+ </div>,
8
+ <div>
9
+ Yes
10
+ </div>,
11
+ ]
12
+ `;
13
+
14
+ exports[`#Boolean renders empty when no data is provided 1`] = `null`;
15
+
16
+ exports[`#Boolean renders label only when data is missing 1`] = `
17
+ <div>
18
+ Boolean Label
19
+ </div>
20
+ `;
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+
3
+ import { createTestInstance } from '@magento/peregrine';
4
+
5
+ import Boolean from '../boolean';
6
+
7
+ let inputProps = {};
8
+
9
+ const Component = () => {
10
+ return <Boolean {...inputProps} />;
11
+ };
12
+
13
+ const givenDefaultValues = () => {
14
+ inputProps = {
15
+ attribute_metadata: {
16
+ label: 'Boolean Label'
17
+ }
18
+ };
19
+ };
20
+
21
+ describe('#Boolean', () => {
22
+ it('renders empty when no data is provided', () => {
23
+ const tree = createTestInstance(<Component />);
24
+
25
+ expect(tree.toJSON()).toMatchSnapshot();
26
+ });
27
+
28
+ it('renders label only when data is missing', () => {
29
+ givenDefaultValues();
30
+ const tree = createTestInstance(<Component />);
31
+
32
+ expect(tree.toJSON()).toMatchSnapshot();
33
+ });
34
+
35
+ it('renders boolean when data is provided', () => {
36
+ givenDefaultValues();
37
+ inputProps = {
38
+ ...inputProps,
39
+ selected_attribute_options: {
40
+ attribute_option: [
41
+ {
42
+ label: 'Yes'
43
+ }
44
+ ]
45
+ }
46
+ };
47
+
48
+ const tree = createTestInstance(<Component />);
49
+
50
+ expect(tree.toJSON()).toMatchSnapshot();
51
+ });
52
+ });
@@ -0,0 +1,74 @@
1
+ import React, { Fragment } from 'react';
2
+ import { arrayOf, shape, string } from 'prop-types';
3
+
4
+ import { useStyle } from '@magento/venia-ui/lib/classify';
5
+
6
+ import defaultClasses from './boolean.module.css';
7
+
8
+ /**
9
+ * Custom Attributes Boolean Type component.
10
+ *
11
+ * @typedef Boolean
12
+ * @kind functional component
13
+ *
14
+ * @param {props} props React component props
15
+ *
16
+ * @returns {React.Element} A React component that displays a Boolean Type Product Attribute.
17
+ */
18
+ const Boolean = props => {
19
+ const classes = useStyle(defaultClasses, props.classes);
20
+ const { attribute_metadata = {}, selected_attribute_options = {} } = props;
21
+
22
+ const attributeLabel = attribute_metadata.label ? (
23
+ <div className={classes.label}>{attribute_metadata.label}</div>
24
+ ) : null;
25
+ let attributeContent;
26
+
27
+ if (selected_attribute_options.attribute_option?.length > 0) {
28
+ const options = selected_attribute_options.attribute_option
29
+ .map(option => option.label)
30
+ .join(', ');
31
+
32
+ attributeContent = <div className={classes.content}>{options}</div>;
33
+ }
34
+
35
+ return (
36
+ <Fragment>
37
+ {attributeLabel}
38
+ {attributeContent}
39
+ </Fragment>
40
+ );
41
+ };
42
+
43
+ /**
44
+ * Props for {@link Boolean}
45
+ *
46
+ * @typedef props
47
+ *
48
+ * @property {Object} classes An object containing the class names for the attribute
49
+ * @property {String} classes.label CSS class for the attribute label
50
+ * @property {String} classes.content CSS class for the attribute content
51
+ * @property {Object} attribute_metadata An object containing the attribute metadata
52
+ * @property {String} attribute_metadata.label The attribute label
53
+ * @property {Object} selected_attribute_options An object containing the attribute selected options
54
+ * @property {Array} selected_attribute_options.attribute_option An array of the selected options
55
+ * @property {String} selected_attribute_options.attribute_option.label Label of the selected option
56
+ */
57
+ Boolean.propTypes = {
58
+ classes: shape({
59
+ label: string,
60
+ content: string
61
+ }),
62
+ attribute_metadata: shape({
63
+ label: string
64
+ }),
65
+ selected_attribute_options: shape({
66
+ attribute_option: arrayOf(
67
+ shape({
68
+ label: string
69
+ })
70
+ )
71
+ })
72
+ };
73
+
74
+ export default Boolean;
@@ -0,0 +1,9 @@
1
+ .label {
2
+ composes: font-bold from global;
3
+ composes: inline-block from global;
4
+ composes: mr-2 from global;
5
+ }
6
+
7
+ .content {
8
+ composes: inline-block from global;
9
+ }
@@ -0,0 +1 @@
1
+ export { default } from './boolean';
@@ -0,0 +1,25 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`#Date renders date when data is provided 1`] = `
4
+ Array [
5
+ <div>
6
+ Date Label
7
+ </div>,
8
+ <div>
9
+ <mock-FormattedDate
10
+ day="2-digit"
11
+ month="short"
12
+ value="2019-08-27T12:00:00"
13
+ year="numeric"
14
+ />
15
+ </div>,
16
+ ]
17
+ `;
18
+
19
+ exports[`#Date renders empty when no data is provided 1`] = `null`;
20
+
21
+ exports[`#Date renders label only when data is missing 1`] = `
22
+ <div>
23
+ Date Label
24
+ </div>
25
+ `;