@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
@@ -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
+ `;
@@ -0,0 +1,52 @@
1
+ import React from 'react';
2
+
3
+ import { createTestInstance } from '@magento/peregrine';
4
+
5
+ import Date from '../date';
6
+
7
+ jest.mock('react-intl', () => ({
8
+ FormattedDate: props => <mock-FormattedDate {...props} />
9
+ }));
10
+
11
+ let inputProps = {};
12
+
13
+ const Component = () => {
14
+ return <Date {...inputProps} />;
15
+ };
16
+
17
+ const givenDefaultValues = () => {
18
+ inputProps = {
19
+ attribute_metadata: {
20
+ label: 'Date Label'
21
+ }
22
+ };
23
+ };
24
+
25
+ describe('#Date', () => {
26
+ it('renders empty when no data is provided', () => {
27
+ const tree = createTestInstance(<Component />);
28
+
29
+ expect(tree.toJSON()).toMatchSnapshot();
30
+ });
31
+
32
+ it('renders label only when data is missing', () => {
33
+ givenDefaultValues();
34
+ const tree = createTestInstance(<Component />);
35
+
36
+ expect(tree.toJSON()).toMatchSnapshot();
37
+ });
38
+
39
+ it('renders date when data is provided', () => {
40
+ givenDefaultValues();
41
+ inputProps = {
42
+ ...inputProps,
43
+ entered_attribute_value: {
44
+ value: '2019-08-27 12:00:00'
45
+ }
46
+ };
47
+
48
+ const tree = createTestInstance(<Component />);
49
+
50
+ expect(tree.toJSON()).toMatchSnapshot();
51
+ });
52
+ });
@@ -0,0 +1,82 @@
1
+ import React, { Fragment } from 'react';
2
+ import { shape, string } from 'prop-types';
3
+ import { FormattedDate } from 'react-intl';
4
+
5
+ import { useStyle } from '@magento/venia-ui/lib/classify';
6
+
7
+ import defaultClasses from './date.module.css';
8
+
9
+ /**
10
+ * Custom Attributes Date Type component.
11
+ *
12
+ * @typedef Date
13
+ * @kind functional component
14
+ *
15
+ * @param {props} props React component props
16
+ *
17
+ * @returns {React.Element} A React component that displays a Date Type Product Attribute.
18
+ */
19
+ const Date = props => {
20
+ const classes = useStyle(defaultClasses, props.classes);
21
+ const { attribute_metadata = {}, entered_attribute_value = {} } = props;
22
+
23
+ const attributeLabel = attribute_metadata.label ? (
24
+ <div className={classes.label}>{attribute_metadata.label}</div>
25
+ ) : null;
26
+ let attributeContent;
27
+
28
+ // TODO: Get correct data from GraphQl based on config time zone
29
+ if (entered_attribute_value.value) {
30
+ // Convert date to ISO-8601 format so Safari can also parse it
31
+ const isoFormattedDate = entered_attribute_value.value.replace(
32
+ ' ',
33
+ 'T'
34
+ );
35
+
36
+ attributeContent = (
37
+ <div className={classes.content}>
38
+ <FormattedDate
39
+ value={isoFormattedDate}
40
+ year="numeric"
41
+ month="short"
42
+ day="2-digit"
43
+ />
44
+ </div>
45
+ );
46
+ }
47
+
48
+ return (
49
+ <Fragment>
50
+ {attributeLabel}
51
+ {attributeContent}
52
+ </Fragment>
53
+ );
54
+ };
55
+
56
+ /**
57
+ * Props for {@link Date}
58
+ *
59
+ * @typedef props
60
+ *
61
+ * @property {Object} classes An object containing the class names for the attribute
62
+ * @property {String} classes.label CSS class for the attribute label
63
+ * @property {String} classes.content CSS class for the attribute content
64
+ * @property {Object} attribute_metadata An object containing the attribute metadata
65
+ * @property {String} attribute_metadata.label The attribute label
66
+ * @property {Object} entered_attribute_value An object containing the attribute value
67
+ * @property {String} entered_attribute_value.value Attribute value
68
+ */
69
+ Date.propTypes = {
70
+ classes: shape({
71
+ label: string,
72
+ content: string
73
+ }),
74
+ attribute_metadata: shape({
75
+ label: string
76
+ }),
77
+ entered_attribute_value: shape({
78
+ value: string
79
+ })
80
+ };
81
+
82
+ export default Date;
@@ -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 './date';
@@ -0,0 +1,29 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`#DateTime renders date time when data is provided 1`] = `
4
+ Array [
5
+ <div>
6
+ DateTime 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
+ ,
16
+ <mock-FormattedTime
17
+ value="2019-08-27T12:00:00"
18
+ />
19
+ </div>,
20
+ ]
21
+ `;
22
+
23
+ exports[`#DateTime renders empty when no data is provided 1`] = `null`;
24
+
25
+ exports[`#DateTime renders label only when data is missing 1`] = `
26
+ <div>
27
+ DateTime Label
28
+ </div>
29
+ `;
@@ -0,0 +1,53 @@
1
+ import React from 'react';
2
+
3
+ import { createTestInstance } from '@magento/peregrine';
4
+
5
+ import DateTime from '../dateTime';
6
+
7
+ jest.mock('react-intl', () => ({
8
+ FormattedDate: props => <mock-FormattedDate {...props} />,
9
+ FormattedTime: props => <mock-FormattedTime {...props} />
10
+ }));
11
+
12
+ let inputProps = {};
13
+
14
+ const Component = () => {
15
+ return <DateTime {...inputProps} />;
16
+ };
17
+
18
+ const givenDefaultValues = () => {
19
+ inputProps = {
20
+ attribute_metadata: {
21
+ label: 'DateTime Label'
22
+ }
23
+ };
24
+ };
25
+
26
+ describe('#DateTime', () => {
27
+ it('renders empty when no data is provided', () => {
28
+ const tree = createTestInstance(<Component />);
29
+
30
+ expect(tree.toJSON()).toMatchSnapshot();
31
+ });
32
+
33
+ it('renders label only when data is missing', () => {
34
+ givenDefaultValues();
35
+ const tree = createTestInstance(<Component />);
36
+
37
+ expect(tree.toJSON()).toMatchSnapshot();
38
+ });
39
+
40
+ it('renders date time when data is provided', () => {
41
+ givenDefaultValues();
42
+ inputProps = {
43
+ ...inputProps,
44
+ entered_attribute_value: {
45
+ value: '2019-08-27 12:00:00'
46
+ }
47
+ };
48
+
49
+ const tree = createTestInstance(<Component />);
50
+
51
+ expect(tree.toJSON()).toMatchSnapshot();
52
+ });
53
+ });
@@ -0,0 +1,85 @@
1
+ import React, { Fragment } from 'react';
2
+ import { shape, string } from 'prop-types';
3
+ import { FormattedDate, FormattedTime } from 'react-intl';
4
+
5
+ import { useStyle } from '@magento/venia-ui/lib/classify';
6
+
7
+ import defaultClasses from './dateTime.module.css';
8
+
9
+ /**
10
+ * Custom Attributes DateTime Type component.
11
+ *
12
+ * @typedef DateTime
13
+ * @kind functional component
14
+ *
15
+ * @param {props} props React component props
16
+ *
17
+ * @returns {React.Element} A React component that displays a DateTime Type Product Attribute.
18
+ */
19
+ const DateTime = props => {
20
+ const classes = useStyle(defaultClasses, props.classes);
21
+ const { attribute_metadata = {}, entered_attribute_value = {} } = props;
22
+
23
+ const attributeLabel = attribute_metadata.label ? (
24
+ <div className={classes.label}>{attribute_metadata.label}</div>
25
+ ) : null;
26
+ let attributeContent;
27
+
28
+ // TODO: Get correct data from GraphQl based on config time zone
29
+ if (entered_attribute_value.value) {
30
+ // Convert date to ISO-8601 format so Safari can also parse it
31
+ const isoFormattedDate = entered_attribute_value.value.replace(
32
+ ' ',
33
+ 'T'
34
+ );
35
+
36
+ attributeContent = (
37
+ <div className={classes.content}>
38
+ <FormattedDate
39
+ value={isoFormattedDate}
40
+ year="numeric"
41
+ month="short"
42
+ day="2-digit"
43
+ />
44
+ {/* eslint-disable-next-line react/jsx-no-literals */}
45
+ {', '}
46
+ <FormattedTime value={isoFormattedDate} />
47
+ </div>
48
+ );
49
+ }
50
+
51
+ return (
52
+ <Fragment>
53
+ {attributeLabel}
54
+ {attributeContent}
55
+ </Fragment>
56
+ );
57
+ };
58
+
59
+ /**
60
+ * Props for {@link DateTime}
61
+ *
62
+ * @typedef props
63
+ *
64
+ * @property {Object} classes An object containing the class names for the attribute
65
+ * @property {String} classes.label CSS class for the attribute label
66
+ * @property {String} classes.content CSS class for the attribute content
67
+ * @property {Object} attribute_metadata An object containing the attribute metadata
68
+ * @property {String} attribute_metadata.label The attribute label
69
+ * @property {Object} entered_attribute_value An object containing the attribute value
70
+ * @property {String} entered_attribute_value.value Attribute value
71
+ */
72
+ DateTime.propTypes = {
73
+ classes: shape({
74
+ label: string,
75
+ content: string
76
+ }),
77
+ attribute_metadata: shape({
78
+ label: string
79
+ }),
80
+ entered_attribute_value: shape({
81
+ value: string
82
+ })
83
+ };
84
+
85
+ export default DateTime;
@@ -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 './dateTime';
@@ -0,0 +1,36 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`#Multiselect renders empty when no data is provided 1`] = `null`;
4
+
5
+ exports[`#Multiselect renders label only when data is missing 1`] = `
6
+ <div>
7
+ Multiselect Label
8
+ </div>
9
+ `;
10
+
11
+ exports[`#Multiselect renders options with html when data is provided 1`] = `
12
+ Array [
13
+ <div>
14
+ Multiselect Label
15
+ </div>,
16
+ <div>
17
+ <mock-RichContent
18
+ html="<span>Option 1</span>"
19
+ />
20
+ <mock-RichContent
21
+ html="<span>Option 2</span>"
22
+ />
23
+ </div>,
24
+ ]
25
+ `;
26
+
27
+ exports[`#Multiselect renders options without html when data is provided 1`] = `
28
+ Array [
29
+ <div>
30
+ Multiselect Label
31
+ </div>,
32
+ <div>
33
+ Option 1, Option 2
34
+ </div>,
35
+ ]
36
+ `;
@@ -0,0 +1,88 @@
1
+ import React from 'react';
2
+
3
+ import { createTestInstance } from '@magento/peregrine';
4
+
5
+ import Multiselect from '../multiselect';
6
+
7
+ jest.mock('@magento/venia-ui/lib/components/RichContent', () => {
8
+ return props => <mock-RichContent {...props} />;
9
+ });
10
+
11
+ let inputProps = {};
12
+
13
+ const Component = () => {
14
+ return <Multiselect {...inputProps} />;
15
+ };
16
+
17
+ const givenDefaultValues = () => {
18
+ inputProps = {
19
+ attribute_metadata: {
20
+ label: 'Multiselect Label'
21
+ }
22
+ };
23
+ };
24
+
25
+ describe('#Multiselect', () => {
26
+ it('renders empty when no data is provided', () => {
27
+ const tree = createTestInstance(<Component />);
28
+
29
+ expect(tree.toJSON()).toMatchSnapshot();
30
+ });
31
+
32
+ it('renders label only when data is missing', () => {
33
+ givenDefaultValues();
34
+ const tree = createTestInstance(<Component />);
35
+
36
+ expect(tree.toJSON()).toMatchSnapshot();
37
+ });
38
+
39
+ it('renders options without html when data is provided', () => {
40
+ inputProps = {
41
+ attribute_metadata: {
42
+ label: 'Multiselect Label',
43
+ ui_input: {
44
+ is_html_allowed: false
45
+ }
46
+ },
47
+ selected_attribute_options: {
48
+ attribute_option: [
49
+ {
50
+ label: 'Option 1'
51
+ },
52
+ {
53
+ label: 'Option 2'
54
+ }
55
+ ]
56
+ }
57
+ };
58
+
59
+ const tree = createTestInstance(<Component />);
60
+
61
+ expect(tree.toJSON()).toMatchSnapshot();
62
+ });
63
+
64
+ it('renders options with html when data is provided', () => {
65
+ inputProps = {
66
+ attribute_metadata: {
67
+ label: 'Multiselect Label',
68
+ ui_input: {
69
+ is_html_allowed: true
70
+ }
71
+ },
72
+ selected_attribute_options: {
73
+ attribute_option: [
74
+ {
75
+ label: '<span>Option 1</span>'
76
+ },
77
+ {
78
+ label: '<span>Option 2</span>'
79
+ }
80
+ ]
81
+ }
82
+ };
83
+
84
+ const tree = createTestInstance(<Component />);
85
+
86
+ expect(tree.toJSON()).toMatchSnapshot();
87
+ });
88
+ });
@@ -0,0 +1 @@
1
+ export { default } from './multiselect';
@@ -0,0 +1,99 @@
1
+ import React, { Fragment } from 'react';
2
+ import { arrayOf, bool, shape, string } from 'prop-types';
3
+
4
+ import { useStyle } from '@magento/venia-ui/lib/classify';
5
+ import RichContent from '@magento/venia-ui/lib/components/RichContent';
6
+
7
+ import defaultClasses from './multiselect.module.css';
8
+
9
+ /**
10
+ * Custom Attributes Multiselect Type component.
11
+ *
12
+ * @typedef Multiselect
13
+ * @kind functional component
14
+ *
15
+ * @param {props} props React component props
16
+ *
17
+ * @returns {React.Element} A React component that displays a Multiselect Type Product Attribute.
18
+ */
19
+ const Multiselect = props => {
20
+ const classes = useStyle(defaultClasses, props.classes);
21
+ const { attribute_metadata = {}, selected_attribute_options = {} } = props;
22
+
23
+ const attributeLabel = attribute_metadata.label ? (
24
+ <div className={classes.label}>{attribute_metadata.label}</div>
25
+ ) : null;
26
+ let attributeContent;
27
+
28
+ if (selected_attribute_options.attribute_option?.length > 0) {
29
+ const { is_html_allowed: isHtml } = attribute_metadata.ui_input;
30
+
31
+ if (isHtml) {
32
+ const options = selected_attribute_options.attribute_option.map(
33
+ (option, key) => {
34
+ return (
35
+ // TODO: Get decoded wysiwyg widgets from GraphQl
36
+ <RichContent key={key} html={option.label} />
37
+ );
38
+ }
39
+ );
40
+
41
+ attributeContent = (
42
+ <div className={classes.contentHtml}>{options}</div>
43
+ );
44
+ } else {
45
+ const options = selected_attribute_options.attribute_option
46
+ .map(option => option.label)
47
+ .join(', ');
48
+
49
+ attributeContent = <div className={classes.content}>{options}</div>;
50
+ }
51
+ }
52
+
53
+ return (
54
+ <Fragment>
55
+ {attributeLabel}
56
+ {attributeContent}
57
+ </Fragment>
58
+ );
59
+ };
60
+
61
+ /**
62
+ * Props for {@link Multiselect}
63
+ *
64
+ * @typedef props
65
+ *
66
+ * @property {Object} classes An object containing the class names for the attribute
67
+ * @property {String} classes.label CSS class for the attribute label
68
+ * @property {String} classes.content CSS class for the attribute content
69
+ * @property {String} classes.contentHtml CSS class for the attribute content containing html
70
+ * @property {Object} attribute_metadata An object containing the attribute metadata
71
+ * @property {String} attribute_metadata.label The attribute label
72
+ * @property {Object} attribute_metadata.ui_input An object containing the input ui data
73
+ * @property {Boolean} attribute_metadata.ui_input.is_html_allowed Indicates if value might contain html
74
+ * @property {Object} selected_attribute_options An object containing the attribute selected options
75
+ * @property {Array} selected_attribute_options.attribute_option An array of the selected options
76
+ * @property {String} selected_attribute_options.attribute_option.label Label of the selected option
77
+ */
78
+ Multiselect.propTypes = {
79
+ classes: shape({
80
+ label: string,
81
+ content: string,
82
+ contentHtml: string
83
+ }),
84
+ attribute_metadata: shape({
85
+ label: string,
86
+ ui_input: shape({
87
+ is_html_allowed: bool
88
+ })
89
+ }),
90
+ selected_attribute_options: shape({
91
+ attribute_option: arrayOf(
92
+ shape({
93
+ label: string
94
+ })
95
+ )
96
+ })
97
+ };
98
+
99
+ export default Multiselect;
@@ -0,0 +1,13 @@
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
+ }
10
+
11
+ .contentHtml {
12
+ composes: block from global;
13
+ }