@magento/venia-ui 9.0.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 (299) hide show
  1. package/i18n/en_US.json +21 -1
  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 +11 -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 +17 -10
  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 +15 -0
  122. package/lib/components/Footer/__tests__/footer.spec.js +13 -1
  123. package/lib/components/Footer/footer.js +17 -8
  124. package/lib/components/Footer/footer.module.css +18 -3
  125. package/lib/components/Footer/sampleData.js +8 -3
  126. package/lib/components/ForgotPassword/ForgotPasswordForm/forgotPasswordForm.js +3 -0
  127. package/lib/components/ForgotPassword/FormSubmissionSuccessful/formSubmissionSuccessful.js +4 -2
  128. package/lib/components/ForgotPassword/forgotPassword.gql.js +0 -1
  129. package/lib/components/FormError/formError.js +10 -4
  130. package/lib/components/Gallery/__tests__/__snapshots__/addToCartButton.spec.js.snap +0 -3
  131. package/lib/components/Gallery/__tests__/__snapshots__/item.spec.js.snap +1 -0
  132. package/lib/components/Gallery/addToCartButton.js +27 -22
  133. package/lib/components/Gallery/item.js +16 -4
  134. package/lib/components/Gallery/item.module.css +3 -1
  135. package/lib/components/Head/index.js +2 -1
  136. package/lib/components/Header/__tests__/header.spec.js +1 -1
  137. package/lib/components/Header/accountTrigger.js +1 -0
  138. package/lib/components/Header/cartTrigger.js +4 -1
  139. package/lib/components/Header/currencySwitcher.module.css +1 -1
  140. package/lib/components/Header/header.js +1 -1
  141. package/lib/components/Header/header.module.css +100 -96
  142. package/lib/components/Header/navTrigger.js +1 -0
  143. package/lib/components/Header/searchTrigger.js +1 -0
  144. package/lib/components/LegacyMiniCart/cartOptions.gql.js +7 -6
  145. package/lib/components/LegacyMiniCart/cartOptions.js +1 -1
  146. package/lib/components/LegacyMiniCart/editFormFragment.gql.js +7 -3
  147. package/lib/components/LegacyMiniCart/kebab.js +1 -0
  148. package/lib/components/LegacyMiniCart/product.js +1 -1
  149. package/lib/components/LegacyMiniCart/productOptions.js +6 -1
  150. package/lib/components/LegacyMiniCart/section.js +15 -5
  151. package/lib/components/Link/link.js +6 -4
  152. package/lib/components/Mask/mask.js +3 -3
  153. package/lib/components/MegaMenu/__tests__/MegaMenuItem.spec.js +1 -0
  154. package/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenu.spec.js.snap +9 -0
  155. package/lib/components/MegaMenu/__tests__/__snapshots__/MegaMenuItem.spec.js.snap +6 -0
  156. package/lib/components/MegaMenu/__tests__/__snapshots__/Submenu.spec.js.snap +2 -0
  157. package/lib/components/MegaMenu/megaMenu.js +6 -2
  158. package/lib/components/MegaMenu/megaMenu.module.css +8 -11
  159. package/lib/components/MegaMenu/megaMenuItem.js +27 -6
  160. package/lib/components/MegaMenu/megaMenuItem.module.css +0 -5
  161. package/lib/components/MegaMenu/submenu.js +5 -3
  162. package/lib/components/MegaMenu/submenuColumn.js +15 -4
  163. package/lib/components/MiniCart/ProductList/__tests__/__snapshots__/item.spec.js.snap +4 -4
  164. package/lib/components/MiniCart/ProductList/item.js +7 -4
  165. package/lib/components/MiniCart/ProductList/productList.js +5 -1
  166. package/lib/components/MiniCart/__tests__/__snapshots__/miniCart.spec.js.snap +1 -1
  167. package/lib/components/MiniCart/miniCart.gql.js +4 -3
  168. package/lib/components/MiniCart/miniCart.js +9 -4
  169. package/lib/components/MyAccount/ResetPassword/resetPassword.gql.js +1 -1
  170. package/lib/components/Newsletter/__tests__/__snapshots__/newsletter.shimmer.spec.js.snap +40 -0
  171. package/lib/components/Newsletter/__tests__/__snapshots__/newsletter.spec.js.snap +173 -0
  172. package/lib/components/Newsletter/__tests__/newsletter.shimmer.spec.js +10 -0
  173. package/lib/components/Newsletter/__tests__/newsletter.spec.js +143 -0
  174. package/lib/components/Newsletter/index.js +1 -0
  175. package/lib/components/Newsletter/newsletter.js +148 -0
  176. package/lib/components/Newsletter/newsletter.module.css +94 -0
  177. package/lib/components/Newsletter/newsletter.shimmer.js +46 -0
  178. package/lib/components/Newsletter/newsletter.shimmer.module.css +11 -0
  179. package/lib/components/OrderHistoryPage/OrderDetails/__tests__/__snapshots__/item.spec.js.snap +1 -1
  180. package/lib/components/OrderHistoryPage/OrderDetails/__tests__/__snapshots__/shippingMethod.spec.js.snap +3 -0
  181. package/lib/components/OrderHistoryPage/OrderDetails/billingInformation.js +4 -1
  182. package/lib/components/OrderHistoryPage/OrderDetails/item.js +1 -1
  183. package/lib/components/OrderHistoryPage/OrderDetails/items.js +1 -1
  184. package/lib/components/OrderHistoryPage/OrderDetails/paymentMethod.js +1 -1
  185. package/lib/components/OrderHistoryPage/OrderDetails/shippingInformation.js +4 -1
  186. package/lib/components/OrderHistoryPage/OrderDetails/shippingMethod.js +5 -1
  187. package/lib/components/OrderHistoryPage/orderHistoryPage.js +8 -1
  188. package/lib/components/Pagination/pagination.js +1 -1
  189. package/lib/components/Pagination/tile.js +5 -1
  190. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/__tests__/__snapshots__/boolean.spec.js.snap +20 -0
  191. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/__tests__/boolean.spec.js +52 -0
  192. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.js +74 -0
  193. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/boolean.module.css +9 -0
  194. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Boolean/index.js +1 -0
  195. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/__tests__/__snapshots__/date.spec.js.snap +25 -0
  196. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/__tests__/date.spec.js +52 -0
  197. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.js +82 -0
  198. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/date.module.css +9 -0
  199. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Date/index.js +1 -0
  200. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/__tests__/__snapshots__/dateTime.spec.js.snap +29 -0
  201. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/__tests__/dateTime.spec.js +53 -0
  202. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.js +85 -0
  203. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/dateTime.module.css +9 -0
  204. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/DateTime/index.js +1 -0
  205. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/__tests__/__snapshots__/multiSelect.spec.js.snap +36 -0
  206. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/__tests__/multiSelect.spec.js +88 -0
  207. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/index.js +1 -0
  208. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.js +99 -0
  209. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Multiselect/multiselect.module.css +13 -0
  210. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/__tests__/__snapshots__/price.spec.js.snap +23 -0
  211. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/__tests__/price.spec.js +52 -0
  212. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/index.js +1 -0
  213. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.js +74 -0
  214. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Price/price.module.css +9 -0
  215. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/__tests__/__snapshots__/select.spec.js.snap +36 -0
  216. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/__tests__/select.spec.js +88 -0
  217. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/index.js +1 -0
  218. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.js +99 -0
  219. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Select/select.module.css +13 -0
  220. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/__tests__/__snapshots__/text.spec.js.snap +33 -0
  221. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/__tests__/text.spec.js +74 -0
  222. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/index.js +1 -0
  223. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.js +88 -0
  224. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Text/text.module.css +13 -0
  225. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/__tests__/__snapshots__/textarea.spec.js.snap +33 -0
  226. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/__tests__/textarea.spec.js +74 -0
  227. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/index.js +1 -0
  228. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.js +88 -0
  229. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/Textarea/textarea.module.css +13 -0
  230. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/__tests__/__snapshots__/attributeType.spec.js.snap +101 -0
  231. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/__tests__/attributeType.spec.js +173 -0
  232. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/attributeType.js +61 -0
  233. package/lib/components/ProductFullDetail/CustomAttributes/AttributeType/index.js +1 -0
  234. package/lib/components/ProductFullDetail/CustomAttributes/__tests__/__snapshots__/customAttributes.spec.js.snap +49 -0
  235. package/lib/components/ProductFullDetail/CustomAttributes/__tests__/customAttributes.spec.js +78 -0
  236. package/lib/components/ProductFullDetail/CustomAttributes/customAttributes.js +66 -0
  237. package/lib/components/ProductFullDetail/CustomAttributes/customAttributes.module.css +14 -0
  238. package/lib/components/ProductFullDetail/CustomAttributes/index.js +1 -0
  239. package/lib/components/ProductFullDetail/__tests__/__snapshots__/productFullDetail.spec.js.snap +39 -0
  240. package/lib/components/ProductFullDetail/__tests__/productFullDetail.spec.js +3 -1
  241. package/lib/components/ProductFullDetail/productFullDetail.js +18 -3
  242. package/lib/components/ProductOptions/__tests__/__snapshots__/option.spec.js.snap +1 -1
  243. package/lib/components/ProductOptions/__tests__/__snapshots__/options.spec.js.snap +2 -2
  244. package/lib/components/ProductOptions/__tests__/__snapshots__/swatch.spec.js.snap +44 -2
  245. package/lib/components/ProductOptions/__tests__/__snapshots__/swatchList.spec.js.snap +22 -1
  246. package/lib/components/ProductOptions/__tests__/swatch.spec.js +0 -2
  247. package/lib/components/ProductOptions/option.js +2 -2
  248. package/lib/components/ProductOptions/swatch.js +7 -5
  249. package/lib/components/ProductOptions/swatch.module.css +11 -0
  250. package/lib/components/ProductOptions/tile.js +1 -0
  251. package/lib/components/ProductSort/__tests__/__snapshots__/sortItem.spec.js.snap +14 -0
  252. package/lib/components/ProductSort/__tests__/sortItem.spec.js +61 -0
  253. package/lib/components/ProductSort/productSort.js +84 -40
  254. package/lib/components/ProductSort/sortItem.js +26 -11
  255. package/lib/components/RadioGroup/radio.module.css +13 -5
  256. package/lib/components/RadioGroup/radioGroup.js +2 -1
  257. package/lib/components/Rating/__tests__/__snapshots__/rating.spec.js.snap +27 -0
  258. package/lib/components/Rating/__tests__/rating.spec.js +13 -0
  259. package/lib/components/Rating/index.js +1 -0
  260. package/lib/components/Rating/rating.js +30 -0
  261. package/lib/components/Rating/rating.module.css +21 -0
  262. package/lib/components/RichContent/richContent.module.css +52 -59
  263. package/lib/components/SearchBar/autocomplete.js +2 -0
  264. package/lib/components/SearchBar/searchBar.js +1 -1
  265. package/lib/components/SearchBar/searchBar.module.css +1 -0
  266. package/lib/components/SearchBar/searchField.js +1 -0
  267. package/lib/components/SearchBar/suggestedCategory.js +1 -1
  268. package/lib/components/SearchBar/suggestedProduct.js +6 -1
  269. package/lib/components/SearchPage/__tests__/__snapshots__/searchPage.spec.js.snap +195 -1
  270. package/lib/components/SearchPage/__tests__/searchPage.spec.js +13 -0
  271. package/lib/components/SearchPage/searchPage.js +20 -6
  272. package/lib/components/Shimmer/shimmer.js +11 -2
  273. package/lib/components/Shimmer/shimmer.module.css +4 -8
  274. package/lib/components/SignIn/__tests__/__snapshots__/signIn.spec.js.snap +126 -0
  275. package/lib/components/SignIn/__tests__/signIn.spec.js +11 -0
  276. package/lib/components/SignIn/signIn.gql.js +8 -4
  277. package/lib/components/SignIn/signIn.js +24 -4
  278. package/lib/components/TextArea/textArea.module.css +9 -0
  279. package/lib/components/TextInput/textInput.module.css +4 -0
  280. package/lib/components/ToastContainer/toast.js +23 -3
  281. package/lib/components/ToastContainer/toast.module.css +3 -0
  282. package/lib/components/Trigger/trigger.js +9 -2
  283. package/lib/components/Wishlist/AddToListButton/addToListButton.ee.js +1 -0
  284. package/lib/components/Wishlist/WishlistDialog/CreateWishlistForm/createWishlistForm.js +2 -0
  285. package/lib/components/Wishlist/WishlistDialog/WishlistLineItem/wishlistLineItem.js +1 -0
  286. package/lib/components/Wishlist/WishlistDialog/wishlistDialog.js +1 -0
  287. package/lib/components/WishlistPage/__tests__/__snapshots__/wishlistPage.spec.js.snap +5 -5
  288. package/lib/components/WishlistPage/createWishlist.ee.js +2 -0
  289. package/lib/components/WishlistPage/wishlist.js +8 -3
  290. package/lib/components/WishlistPage/wishlistItem.js +17 -4
  291. package/lib/components/WishlistPage/wishlistPage.js +5 -3
  292. package/lib/defaultRoutes.json +6 -0
  293. package/lib/targets/__tests__/venia-ui-targets.spec.js +2 -0
  294. package/lib/util/__tests__/shrinkGETQuery.spec.js +1 -1
  295. package/lib/util/apolloCache.js +2 -2
  296. package/lib/util/formValidators.js +10 -8
  297. package/lib/util/toCamelCase.js +3 -0
  298. package/package.json +17 -14
  299. package/upward.yml +19 -40
@@ -1,7 +1,7 @@
1
1
  import React, { useMemo, useCallback } from 'react';
2
2
  import { ChevronDown as ArrowDown } from 'react-feather';
3
- import { FormattedMessage } from 'react-intl';
4
- import { array, arrayOf, shape, string, oneOf } from 'prop-types';
3
+ import { FormattedMessage, useIntl } from 'react-intl';
4
+ import { array, arrayOf, shape, string } from 'prop-types';
5
5
  import { useDropdown } from '@magento/peregrine/lib/hooks/useDropdown';
6
6
 
7
7
  import { useStyle } from '../../classify';
@@ -15,6 +15,34 @@ const ProductSort = props => {
15
15
  const { availableSortMethods, sortProps } = props;
16
16
  const [currentSort, setSort] = sortProps;
17
17
  const { elementRef, expanded, setExpanded } = useDropdown();
18
+ const { formatMessage, locale } = useIntl();
19
+
20
+ const orderSortingList = useCallback(
21
+ list => {
22
+ return list.sort((a, b) => {
23
+ return a.text.localeCompare(b.text, locale, {
24
+ sensitivity: 'base'
25
+ });
26
+ });
27
+ },
28
+ [locale]
29
+ );
30
+
31
+ const sortMethodsFromConfig = availableSortMethods
32
+ ? availableSortMethods
33
+ .map(method => {
34
+ const { value, label } = method;
35
+ if (value !== 'price' && value !== 'position') {
36
+ return {
37
+ id: `sortItem.${value}`,
38
+ text: label,
39
+ attribute: value,
40
+ sortDirection: 'ASC'
41
+ };
42
+ }
43
+ })
44
+ .filter(method => !!method)
45
+ : null;
18
46
 
19
47
  // click event for menu items
20
48
  const handleItemClick = useCallback(
@@ -36,7 +64,52 @@ const ProductSort = props => {
36
64
  return null;
37
65
  }
38
66
 
39
- const itemElements = Array.from(availableSortMethods, sortItem => {
67
+ const defaultSortMethods = [
68
+ {
69
+ id: 'sortItem.relevance',
70
+ text: formatMessage({
71
+ id: 'sortItem.relevance',
72
+ defaultMessage: 'Best Match'
73
+ }),
74
+ attribute: 'relevance',
75
+ sortDirection: 'DESC'
76
+ },
77
+ {
78
+ id: 'sortItem.position',
79
+ text: formatMessage({
80
+ id: 'sortItem.position',
81
+ defaultMessage: 'Position'
82
+ }),
83
+ attribute: 'position',
84
+ sortDirection: 'ASC'
85
+ },
86
+ {
87
+ id: 'sortItem.priceDesc',
88
+ text: formatMessage({
89
+ id: 'sortItem.priceDesc',
90
+ defaultMessage: 'Price: High to Low'
91
+ }),
92
+ attribute: 'price',
93
+ sortDirection: 'DESC'
94
+ },
95
+ {
96
+ id: 'sortItem.priceAsc',
97
+ text: formatMessage({
98
+ id: 'sortItem.priceAsc',
99
+ defaultMessage: 'Price: Low to High'
100
+ }),
101
+ attribute: 'price',
102
+ sortDirection: 'ASC'
103
+ }
104
+ ];
105
+
106
+ const allSortingMethods = sortMethodsFromConfig
107
+ ? orderSortingList(
108
+ [sortMethodsFromConfig, defaultSortMethods].flat()
109
+ )
110
+ : defaultSortMethods;
111
+
112
+ const itemElements = Array.from(allSortingMethods, sortItem => {
40
113
  const { attribute, sortDirection } = sortItem;
41
114
  const isActive =
42
115
  currentSort.sortAttribute === attribute &&
@@ -60,13 +133,15 @@ const ProductSort = props => {
60
133
  </div>
61
134
  );
62
135
  }, [
63
- availableSortMethods,
64
136
  classes.menu,
65
137
  classes.menuItem,
66
138
  currentSort.sortAttribute,
67
139
  currentSort.sortDirection,
68
140
  expanded,
69
- handleItemClick
141
+ formatMessage,
142
+ handleItemClick,
143
+ orderSortingList,
144
+ sortMethodsFromConfig
70
145
  ]);
71
146
 
72
147
  // expand or collapse on click
@@ -78,6 +153,7 @@ const ProductSort = props => {
78
153
  <div
79
154
  ref={elementRef}
80
155
  className={classes.root}
156
+ data-cy="ProductSort-root"
81
157
  aria-live="polite"
82
158
  aria-busy="false"
83
159
  >
@@ -87,6 +163,7 @@ const ProductSort = props => {
87
163
  root_lowPriority: classes.sortButton
88
164
  }}
89
165
  onClick={handleSortClick}
166
+ data-cy="ProductSort-sortButton"
90
167
  >
91
168
  <span className={classes.mobileText}>
92
169
  <FormattedMessage
@@ -116,8 +193,6 @@ const ProductSort = props => {
116
193
  );
117
194
  };
118
195
 
119
- const sortDirections = oneOf(['ASC', 'DESC']);
120
-
121
196
  ProductSort.propTypes = {
122
197
  classes: shape({
123
198
  menuItem: string,
@@ -127,42 +202,11 @@ ProductSort.propTypes = {
127
202
  }),
128
203
  availableSortMethods: arrayOf(
129
204
  shape({
130
- text: string,
131
- id: string,
132
- attribute: string,
133
- sortDirection: sortDirections
205
+ label: string,
206
+ value: string
134
207
  })
135
208
  ),
136
209
  sortProps: array
137
210
  };
138
211
 
139
- ProductSort.defaultProps = {
140
- availableSortMethods: [
141
- {
142
- text: 'Position',
143
- id: 'sortItem.position',
144
- attribute: 'position',
145
- sortDirection: 'ASC'
146
- },
147
- {
148
- id: 'sortItem.relevance',
149
- text: 'Best Match',
150
- attribute: 'relevance',
151
- sortDirection: 'DESC'
152
- },
153
- {
154
- id: 'sortItem.priceAsc',
155
- text: 'Price: Low to High',
156
- attribute: 'price',
157
- sortDirection: 'ASC'
158
- },
159
- {
160
- id: 'sortItem.priceDesc',
161
- text: 'Price: High to Low',
162
- attribute: 'price',
163
- sortDirection: 'DESC'
164
- }
165
- ]
166
- };
167
-
168
212
  export default ProductSort;
@@ -1,5 +1,4 @@
1
1
  import React, { useCallback } from 'react';
2
- import { FormattedMessage } from 'react-intl';
3
2
  import { Check } from 'react-feather';
4
3
  import { bool, func, shape, string } from 'prop-types';
5
4
 
@@ -11,21 +10,37 @@ const SortItem = props => {
11
10
  const { active, onClick, sortItem } = props;
12
11
  const classes = useStyle(defaultClasses, props.classes);
13
12
 
14
- const handleClick = useCallback(() => {
15
- onClick(sortItem);
16
- }, [sortItem, onClick]);
13
+ const handleClick = useCallback(
14
+ e => {
15
+ // use only left click for selection
16
+ if (e.button === 0) {
17
+ onClick(sortItem);
18
+ }
19
+ },
20
+ [sortItem, onClick]
21
+ );
22
+
23
+ const handleKeyDown = useCallback(
24
+ e => {
25
+ if (e.key === 'Enter' || e.key === ' ') {
26
+ e.preventDefault();
27
+ onClick(sortItem);
28
+ }
29
+ },
30
+ [onClick, sortItem]
31
+ );
17
32
 
18
33
  const activeIcon = active ? <Icon size={20} src={Check} /> : null;
19
34
 
20
35
  return (
21
- <button className={classes.root} onClick={handleClick}>
36
+ <button
37
+ className={classes.root}
38
+ data-cy={active ? 'SortItem-activeButton' : 'SortItem-button'}
39
+ onMouseDown={handleClick}
40
+ onKeyDown={handleKeyDown}
41
+ >
22
42
  <span className={classes.content}>
23
- <span className={classes.text}>
24
- <FormattedMessage
25
- id={sortItem.id}
26
- defaultMessage={sortItem.text}
27
- />
28
- </span>
43
+ <span className={classes.text}>{sortItem.text}</span>
29
44
  {activeIcon}
30
45
  </span>
31
46
  </button>
@@ -11,17 +11,21 @@
11
11
  line-height: 1.5rem;
12
12
  }
13
13
 
14
+ .input_base {
15
+ border-radius: 50%;
16
+ height: 1.5rem;
17
+ margin: 0;
18
+ width: 1.5rem;
19
+ z-index: 2;
20
+ }
21
+
14
22
  .input {
23
+ composes: input_base;
15
24
  -webkit-appearance: none;
16
25
  background: none;
17
26
  background-clip: content-box;
18
27
  border: 7px solid transparent;
19
- border-radius: 50%;
20
28
  grid-area: input;
21
- height: 1.5rem;
22
- margin: 0;
23
- width: 1.5rem;
24
- z-index: 2;
25
29
  }
26
30
 
27
31
  .icon {
@@ -54,3 +58,7 @@
54
58
  box-shadow: -3px 3px rgb(var(--venia-brand-color-1-100));
55
59
  outline: none;
56
60
  }
61
+
62
+ .input_shimmer {
63
+ composes: input_base;
64
+ }
@@ -26,6 +26,7 @@ const RadioGroup = props => {
26
26
  children ||
27
27
  items.map(({ value, ...item }) => (
28
28
  <Radio
29
+ data-cy=""
29
30
  key={value}
30
31
  disabled={disabled}
31
32
  {...item}
@@ -40,7 +41,7 @@ const RadioGroup = props => {
40
41
 
41
42
  return (
42
43
  <Fragment>
43
- <div className={classes.root}>
44
+ <div data-cy="RadioGroup-root" className={classes.root}>
44
45
  <InformedRadioGroup {...rest} field={field} id={id}>
45
46
  {options}
46
47
  </InformedRadioGroup>
@@ -0,0 +1,27 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`renders the correct tree 1`] = `
4
+ <div>
5
+ <span>
6
+ 0.1
7
+ </span>
8
+
9
+ <span>
10
+ <svg
11
+ fill="none"
12
+ height={18}
13
+ stroke="currentColor"
14
+ strokeLinecap="round"
15
+ strokeLinejoin="round"
16
+ strokeWidth="2"
17
+ viewBox="0 0 24 24"
18
+ width={18}
19
+ xmlns="http://www.w3.org/2000/svg"
20
+ >
21
+ <polygon
22
+ points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"
23
+ />
24
+ </svg>
25
+ </span>
26
+ </div>
27
+ `;
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import TestRenderer from 'react-test-renderer';
3
+ import Rating from '../rating';
4
+
5
+ const props = {
6
+ rating: 3
7
+ };
8
+
9
+ test('renders the correct tree', () => {
10
+ const tree = TestRenderer.create(<Rating {...props} />).toJSON();
11
+
12
+ expect(tree).toMatchSnapshot();
13
+ });
@@ -0,0 +1 @@
1
+ export { default } from './rating';
@@ -0,0 +1,30 @@
1
+ import React from 'react';
2
+ import { string, number, shape } from 'prop-types';
3
+ import { Star } from 'react-feather';
4
+ import Icon from '../Icon';
5
+ import { useStyle } from '../../classify';
6
+ import defaultClasses from './rating.module.css';
7
+
8
+ const Rating = props => {
9
+ const { rating } = props;
10
+
11
+ const classes = useStyle(defaultClasses, props.classes);
12
+
13
+ return (
14
+ <div className={classes.ratingAverage}>
15
+ <span className={classes.ratingValue}>
16
+ {((rating * 5) / 100).toFixed(1)}
17
+ </span>{' '}
18
+ <Icon size={18} src={Star} classes={{ root: classes.ratingIcon }} />
19
+ </div>
20
+ );
21
+ };
22
+ Rating.propTypes = {
23
+ classes: shape({
24
+ ratingAverage: string,
25
+ ratingValue: string,
26
+ ratingIcon: string
27
+ }),
28
+ rating: number.isRequired
29
+ };
30
+ export default Rating;
@@ -0,0 +1,21 @@
1
+ .ratingAverage {
2
+ position: absolute;
3
+ bottom: 0.75rem;
4
+ right: 0.75rem;
5
+ display: grid;
6
+ grid-template-columns: auto auto;
7
+ padding: 0.5rem;
8
+ align-items: center;
9
+ column-gap: 0.5rem;
10
+ background-color: rgb(var(--venia-global-color-gray-darker));
11
+ color: rgb(var(--venia-global-color-gray-50));
12
+ }
13
+
14
+ .ratingValue {
15
+ font-weight: var(--venia-global-fontWeight-semibold);
16
+ }
17
+
18
+ .ratingIcon {
19
+ composes: root from '../Icon/icon.module.css';
20
+ --stroke: rgb(var(--venia-global-color-gray-50));
21
+ }
@@ -4,138 +4,131 @@
4
4
  .root h4,
5
5
  .root h5,
6
6
  .root h6 {
7
- word-break: break-word;
8
- line-height: 1.25em;
9
- margin-bottom: 0.5em;
10
- margin-top: 1rem;
7
+ margin-bottom: 0.5rem;
8
+ line-height: 1.25;
11
9
  }
12
10
 
13
11
  .root h1 {
14
- font-size: 2rem;
15
- margin-top: 0.9em;
16
- font-weight: 300;
12
+ margin-top: 0.75rem;
13
+ font-size: 1.875rem;
14
+ font-weight: 400;
17
15
  }
16
+
18
17
  .root h2 {
19
- font-size: 1.625rem;
18
+ margin-top: 1rem;
19
+ font-size: 1.5rem;
20
20
  font-weight: 400;
21
21
  }
22
+
22
23
  .root h3 {
23
- font-size: 1.375rem;
24
+ margin-top: 1rem;
25
+ font-size: 1.25rem;
24
26
  font-weight: 400;
25
27
  }
28
+
26
29
  .root h4 {
30
+ margin-top: 1rem;
27
31
  font-size: 1.125rem;
28
32
  font-weight: 600;
29
33
  }
34
+
30
35
  .root h5 {
36
+ margin-top: 1rem;
31
37
  font-size: 1rem;
32
38
  font-weight: 600;
33
39
  }
40
+
34
41
  .root h6 {
42
+ margin-top: 1rem;
35
43
  font-size: 0.875rem;
36
44
  font-weight: 600;
37
45
  }
46
+
38
47
  .root p {
39
48
  margin-bottom: 1rem;
40
- line-height: 1.65em;
49
+ line-height: 1.5;
41
50
  }
51
+
52
+ .root p:last-child {
53
+ margin-bottom: 0;
54
+ }
55
+
42
56
  .root img {
43
57
  max-width: 100%;
44
58
  margin: 1rem 0;
45
59
  }
60
+
46
61
  .root ol,
47
62
  .root ul {
48
- margin-block-start: 1.2em;
49
- margin-block-end: 1.2em;
50
- padding-left: 2em;
63
+ padding-left: 1.5rem;
64
+ margin-top: 1rem;
65
+ margin-bottom: 1rem;
66
+ line-height: 1.5;
51
67
  }
68
+
52
69
  .root p + ol,
53
70
  .root p + ul {
54
- margin-block-start: 0.2em;
71
+ margin-top: 0;
55
72
  }
73
+
56
74
  .root ol {
57
75
  list-style-type: decimal;
58
76
  }
77
+
59
78
  .root ul {
60
79
  list-style-type: disc;
61
80
  }
62
- .root ol li,
63
- .root ul li {
64
- line-height: 1.65em;
65
- padding: 1px 0.5rem;
66
- }
81
+
67
82
  .root a {
68
83
  text-decoration: underline;
69
84
  }
85
+
70
86
  .root blockquote {
71
- font-size: 1.375rem;
72
- line-height: 1.875rem;
73
87
  margin: 1rem 0;
74
- font-weight: 300;
88
+ font-size: 1.25rem;
75
89
  font-style: italic;
76
90
  }
91
+
77
92
  .root table {
78
93
  width: 100%;
79
- margin: 1rem 0;
80
- border-spacing: 0;
81
- border-left: 1px solid rgb(var(--venia-global-color-border));
82
- border-top: 1px solid rgb(var(--venia-global-color-border));
83
- }
84
- .root table td,
85
- .root table th {
86
94
  text-align: left;
87
- padding: 1rem;
88
- font-size: 0.875rem;
89
- line-height: 1.125em;
90
- border-right: 1px solid rgb(var(--venia-global-color-border));
91
- border-bottom: 1px solid rgb(var(--venia-global-color-border));
92
- }
93
- .root table th {
94
- background-color: rgb(var(--venia-global-color-gray));
95
- }
96
- .root :global .cms-content-important {
97
- background: rgb(var(--venia-global-color-gray));
98
- padding: 1.2rem 1rem;
99
- font-size: 1.125rem;
100
- border: 1px solid rgb(var(--venia-global-color-border));
101
95
  }
96
+
102
97
  .root pre {
98
+ padding: 1rem;
99
+ border: 1px solid rgb(var(--venia-global-color-border));
103
100
  background: rgb(var(--venia-global-color-gray));
101
+ }
102
+
103
+ .root :global .cms-content-important {
104
104
  padding: 1rem;
105
105
  border: 1px solid rgb(var(--venia-global-color-border));
106
+ background: rgb(var(--venia-global-color-gray));
107
+ font-size: 1.125rem;
106
108
  }
107
109
 
108
110
  @media only screen and (min-width: 769px) {
109
111
  .root h1 {
110
112
  font-size: 3rem;
111
- margin-top: 0.75em;
112
- line-height: 1.05em;
113
113
  }
114
+
114
115
  .root h2 {
115
116
  font-size: 2.25rem;
116
- line-height: 1.25em;
117
117
  }
118
+
118
119
  .root h3 {
119
- font-size: 1.75rem;
120
- line-height: 1.25em;
120
+ font-size: 1.875rem;
121
121
  }
122
+
122
123
  .root h4 {
123
- font-size: 1.375rem;
124
- line-height: 1.25em;
125
- font-weight: 400;
124
+ font-size: 1.5rem;
126
125
  }
126
+
127
127
  .root h5 {
128
128
  font-size: 1.125rem;
129
- line-height: 1.22em;
130
- margin-bottom: 0.75em;
131
129
  }
130
+
132
131
  .root h6 {
133
132
  font-size: 1rem;
134
- line-height: 1.22em;
135
- margin-bottom: 0.75em;
136
- }
137
- .root p {
138
- margin-bottom: 1rem;
139
- line-height: 1.5em;
140
133
  }
141
134
  }
@@ -21,8 +21,10 @@ const GET_AUTOCOMPLETE_RESULTS = gql`
21
21
  value
22
22
  }
23
23
  }
24
+ # eslint-disable-next-line @graphql-eslint/require-id-when-available
24
25
  items {
25
26
  id
27
+ uid
26
28
  name
27
29
  small_image {
28
30
  url
@@ -26,7 +26,7 @@ const SearchBar = React.forwardRef((props, ref) => {
26
26
  const rootClassName = isOpen ? classes.root_open : classes.root;
27
27
 
28
28
  return (
29
- <div className={rootClassName} ref={ref}>
29
+ <div className={rootClassName} data-cy="SearchBar-root" ref={ref}>
30
30
  <div ref={containerRef} className={classes.container}>
31
31
  <Form
32
32
  autoComplete="off"
@@ -1,4 +1,5 @@
1
1
  .root {
2
+ composes: justify-self-center from global;
2
3
  align-items: center;
3
4
  display: none;
4
5
  justify-items: center;
@@ -23,6 +23,7 @@ const SearchField = props => {
23
23
  after={resetButton}
24
24
  before={searchIcon}
25
25
  field="search_query"
26
+ data-cy="SearchField-textInput"
26
27
  onFocus={onFocus}
27
28
  onValueChange={onChange}
28
29
  forwardedRef={inputRef}
@@ -24,7 +24,7 @@ const SuggestedCategory = props => {
24
24
  <span className={classes.label}>
25
25
  <FormattedMessage
26
26
  id={'searchBar.label'}
27
- defaultMessage={' in category'}
27
+ defaultMessage={' in {label}'}
28
28
  values={{
29
29
  label
30
30
  }}
@@ -26,7 +26,12 @@ const SuggestedProduct = props => {
26
26
  ]);
27
27
 
28
28
  return (
29
- <Link className={classes.root} to={uri} onClick={handleClick}>
29
+ <Link
30
+ className={classes.root}
31
+ to={uri}
32
+ onClick={handleClick}
33
+ data-cy="SuggestedProduct-root"
34
+ >
30
35
  <Image
31
36
  alt={name}
32
37
  classes={{ image: classes.thumbnail, root: classes.image }}