@evershop/evershop 1.1.0 → 1.2.0

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 (390) hide show
  1. package/bin/build/index.js +24 -0
  2. package/bin/extension/index.js +2 -2
  3. package/bin/lib/addDefaultMiddlewareFuncs.js +7 -2
  4. package/bin/lib/buildEntry.js +15 -0
  5. package/bin/lib/onListening.js +7 -4
  6. package/bin/lib/startUp.js +6 -0
  7. package/package.json +9 -1
  8. package/src/components/admin/catalog/productEdit/category/CategoryItem.jsx +2 -7
  9. package/src/components/admin/catalog/productEdit/category/CategoryTree.jsx +14 -7
  10. package/src/components/admin/catalog/productEdit/category/CategoryTree.scss +10 -0
  11. package/src/components/admin/catalog/productEdit/variants/CreateVariant.jsx +2 -2
  12. package/src/components/admin/catalog/productEdit/variants/CreateVariantGroup.jsx +1 -1
  13. package/src/components/admin/catalog/productEdit/variants/EditVariant.jsx +1 -1
  14. package/src/components/admin/catalog/productEdit/variants/New.jsx +2 -2
  15. package/src/components/admin/catalog/productEdit/variants/Search.jsx +1 -1
  16. package/src/components/admin/catalog/productEdit/variants/SearchModal.jsx +1 -1
  17. package/src/components/admin/catalog/productEdit/variants/VariantModal.jsx +6 -6
  18. package/src/components/admin/catalog/productGrid/rows/ThumbnailRow.jsx +1 -1
  19. package/src/components/admin/checkout/shippingSetting/Method.jsx +6 -6
  20. package/src/components/admin/checkout/shippingSetting/MethodForm.jsx +4 -4
  21. package/src/components/admin/checkout/shippingSetting/Methods.jsx +3 -3
  22. package/src/components/admin/checkout/shippingSetting/PriceBasedPrice.jsx +2 -2
  23. package/src/components/admin/checkout/shippingSetting/WeightBasedPrice.jsx +2 -2
  24. package/src/components/admin/checkout/shippingSetting/Zone.jsx +7 -7
  25. package/src/components/admin/checkout/shippingSetting/ZoneForm.jsx +1 -1
  26. package/src/components/admin/cms/Card.jsx +3 -3
  27. package/src/components/admin/cms/PageHeading.jsx +3 -3
  28. package/src/components/admin/cms/widget/WidgetTypes.jsx +28 -0
  29. package/src/components/admin/cms/widget/grid/WidgetTypeRow.jsx +29 -0
  30. package/src/components/admin/oms/orderEdit/items/ItemVariantOptions.jsx +1 -1
  31. package/src/components/admin/oms/orderEdit/items/Name.jsx +1 -1
  32. package/src/components/admin/oms/orderGrid/headers/OrderDateColumnHeader.jsx +1 -1
  33. package/src/components/admin/promotion/couponEdit/AttributeGroupSelector.jsx +3 -3
  34. package/src/components/admin/promotion/couponEdit/BuyXGetY.jsx +2 -2
  35. package/src/components/admin/promotion/couponEdit/CategorySelector.jsx +6 -6
  36. package/src/components/admin/promotion/couponEdit/CollectionSelector.jsx +3 -3
  37. package/src/components/admin/promotion/couponEdit/ProductSkuSelector.jsx +4 -4
  38. package/src/components/admin/promotion/couponEdit/RequireProducts.jsx +2 -2
  39. package/src/components/admin/promotion/couponEdit/Setting.jsx +1 -1
  40. package/src/components/admin/promotion/couponEdit/TargetProducts.jsx +4 -4
  41. package/src/components/admin/tax/taxSetting/Rate.jsx +6 -6
  42. package/src/components/admin/tax/taxSetting/RateForm.jsx +5 -5
  43. package/src/components/admin/tax/taxSetting/Rates.jsx +6 -6
  44. package/src/components/admin/tax/taxSetting/TaxClass.jsx +3 -3
  45. package/src/components/admin/tax/taxSetting/TaxClassForm.jsx +1 -1
  46. package/src/components/admin/widgets/BasicMenuSetting.jsx +614 -0
  47. package/src/components/admin/widgets/BasicMenuSetting.scss +19 -0
  48. package/src/components/admin/widgets/CollectionProductsSetting.jsx +203 -0
  49. package/src/components/admin/widgets/TextBlockSetting.jsx +70 -0
  50. package/src/components/common/Area.jsx +31 -8
  51. package/src/components/common/Badge.jsx +1 -1
  52. package/src/components/common/Editor.jsx +191 -0
  53. package/src/components/common/Notification.scss +1 -0
  54. package/src/components/common/SimplePagination.jsx +2 -2
  55. package/src/components/common/form/Form.jsx +1 -1
  56. package/src/components/common/form/fields/Checkbox.jsx +1 -1
  57. package/src/components/common/form/fields/Ckeditor.jsx +11 -11
  58. package/src/components/common/form/fields/Editor.jsx +326 -0
  59. package/src/components/common/form/fields/Editor.scss +29 -0
  60. package/src/components/common/form/fields/Radio.jsx +1 -1
  61. package/src/components/common/form/fields/editor/FileBrowser.jsx +419 -0
  62. package/src/components/common/form/fields/editor/FileBrowser.scss +37 -0
  63. package/src/components/common/form/fields/editor/GetColumnClasses.jsx +14 -0
  64. package/src/components/common/form/fields/editor/GetRowClasses.jsx +18 -0
  65. package/src/components/common/form/fields/editor/RowTemplates.jsx +154 -0
  66. package/src/components/common/grid/Pagination.jsx +4 -4
  67. package/src/components/common/grid/headers/FromTo.jsx +1 -1
  68. package/src/components/common/grid/headers/Sortable.jsx +1 -1
  69. package/src/components/common/grid/rows/ThumbnailRow.jsx +1 -1
  70. package/src/components/common/list/Filter.jsx +1 -1
  71. package/src/components/common/modal/Alert.jsx +1 -1
  72. package/src/components/common/modal/Modal.jsx +1 -1
  73. package/src/components/frontStore/catalog/categoryView/filter/AttributeFilter.jsx +2 -2
  74. package/src/components/frontStore/catalog/categoryView/filter/CategoryFilter.jsx +3 -2
  75. package/src/components/frontStore/catalog/categoryView/filter/CategoryFilter.scss +5 -0
  76. package/src/components/frontStore/catalog/product/list/List.jsx +4 -4
  77. package/src/components/frontStore/catalog/product/list/Pagination.jsx +1 -1
  78. package/src/components/frontStore/catalog/product/list/Sorting.jsx +2 -2
  79. package/src/components/frontStore/catalog/product/list/item/Name.jsx +1 -1
  80. package/src/components/frontStore/checkout/cart/Empty.jsx +3 -3
  81. package/src/components/frontStore/checkout/cart/items/ItemOptions.jsx +1 -1
  82. package/src/components/frontStore/checkout/cart/items/ItemVariantOptions.jsx +1 -1
  83. package/src/components/frontStore/checkout/cart/items/Items.jsx +20 -21
  84. package/src/components/frontStore/checkout/cart/items/Items.scss +47 -0
  85. package/src/components/frontStore/checkout/cart/items/Quantity.jsx +154 -0
  86. package/src/components/frontStore/checkout/checkout/StepTitle.jsx +1 -1
  87. package/src/components/frontStore/checkout/checkout/payment/paymentStep/StepContent.jsx +5 -5
  88. package/src/components/frontStore/checkout/checkout/shipment/StepContent.jsx +1 -1
  89. package/src/components/frontStore/checkout/checkout/summary/Cart.jsx +10 -12
  90. package/src/components/frontStore/checkout/checkout/summary/Items.jsx +9 -9
  91. package/src/components/frontStore/checkout/checkout/summary/cart/Total.jsx +6 -6
  92. package/src/components/frontStore/checkout/success/summary/items/ItemOptions.jsx +1 -1
  93. package/src/components/frontStore/checkout/success/summary/items/Items.jsx +9 -6
  94. package/src/components/frontStore/checkout/success/summary/order/OrderSummary.jsx +9 -13
  95. package/src/components/frontStore/checkout/success/summary/order/Total.jsx +5 -5
  96. package/src/components/frontStore/customer/address/addressForm/AddressFormLoadingSkeleton.jsx +2 -2
  97. package/src/components/frontStore/customer/address/addressForm/NameAndTelephone.jsx +1 -1
  98. package/src/components/frontStore/customer/address/addressForm/ProvinceAndPostcode.jsx +1 -1
  99. package/src/components/frontStore/customer/checkout/Edit.jsx +2 -2
  100. package/src/components/frontStore/customer/detail/Order.jsx +4 -4
  101. package/src/components/frontStore/stripe/checkout/CheckoutForm.jsx +2 -2
  102. package/src/components/frontStore/stripe/checkout/TestCards.jsx +1 -1
  103. package/src/components/frontStore/widgets/BasicMenu.jsx +129 -0
  104. package/src/{modules/catalog/pages/frontStore/homepage/FeaturedProducts.jsx → components/frontStore/widgets/CollectionProducts.jsx} +40 -32
  105. package/src/components/frontStore/widgets/TextBlock.jsx +46 -0
  106. package/src/lib/componee/getComponentsByRoute.js +15 -2
  107. package/src/lib/event/event-manager.js +1 -1
  108. package/src/lib/middleware/tests/app/modules/404page/pages/frontStore/product/route.json +2 -1
  109. package/src/lib/middlewares/static.js +3 -1
  110. package/src/lib/response/render.js +5 -6
  111. package/src/lib/router/Router.js +1 -1
  112. package/src/lib/router/loadModuleRoutes.js +3 -0
  113. package/src/lib/router/registerAdminRoute.js +9 -1
  114. package/src/lib/router/registerFrontStoreRoute.js +2 -0
  115. package/src/lib/router/scanForRoutes.js +1 -0
  116. package/src/lib/router/tests/unit/unit.validateRoute.test.js +7 -1
  117. package/src/lib/util/defaultPaginationFilters.js +19 -17
  118. package/src/lib/util/getEnabledWidgets.js +28 -0
  119. package/src/lib/util/merge.js +67 -14
  120. package/src/lib/util/tests/unit/util.merge.test.js +21 -4
  121. package/src/lib/util/validateConfiguration.js +83 -0
  122. package/src/lib/webpack/createBaseConfig.js +4 -1
  123. package/src/lib/webpack/dev/createConfigClient.js +10 -2
  124. package/src/lib/webpack/loaders/AreaLoader.js +14 -3
  125. package/src/lib/webpack/util/parseGraphql.js +29 -16
  126. package/src/lib/webpack/util/parseGraphqlByFile.js +16 -2
  127. package/src/modules/auth/pages/admin/adminLogin/LoginForm.jsx +54 -21
  128. package/src/modules/auth/pages/admin/all/AdminUser.jsx +3 -3
  129. package/src/modules/base/bootstrap.js +79 -0
  130. package/src/modules/base/graphql/types/Route/Route.admin.graphql +15 -0
  131. package/src/modules/base/graphql/types/Route/Route.admin.resolvers.js +10 -0
  132. package/src/modules/base/pages/global/response[errorHandler].js +23 -0
  133. package/src/modules/catalog/bootstrap.js +125 -5
  134. package/src/modules/catalog/graphql/types/Category/Category.graphql +4 -3
  135. package/src/modules/catalog/graphql/types/Category/Category.resolvers.js +34 -0
  136. package/src/modules/catalog/graphql/types/Collection/Collection.graphql +2 -2
  137. package/src/modules/catalog/graphql/types/Collection/Collection.resolvers.js +34 -0
  138. package/src/modules/catalog/graphql/types/Product/Attribute/ProductAttribute.resolvers.js +1 -0
  139. package/src/modules/catalog/graphql/types/Product/Product.graphql +1 -1
  140. package/src/modules/catalog/graphql/types/Product/Product.resolvers.js +34 -0
  141. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.graphql +11 -0
  142. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.resolvers.js +8 -0
  143. package/src/modules/catalog/migration/Version-1.0.0.js +1 -0
  144. package/src/modules/catalog/migration/Version-1.0.7.js +10 -0
  145. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/FormContent.jsx +4 -4
  146. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/General.jsx +5 -5
  147. package/src/modules/catalog/pages/admin/attributeGrid/Grid.jsx +2 -2
  148. package/src/modules/catalog/pages/admin/categoryEdit/Products.jsx +4 -4
  149. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/FormContent.jsx +4 -4
  150. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/General.jsx +16 -18
  151. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Image.jsx +1 -2
  152. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Status.jsx +16 -1
  153. package/src/modules/catalog/pages/admin/categoryGrid/Grid.jsx +3 -3
  154. package/src/modules/catalog/pages/admin/collectionEdit/Products.jsx +4 -4
  155. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/FormContent.jsx +2 -2
  156. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/General.jsx +2 -2
  157. package/src/modules/catalog/pages/admin/collectionGrid/Grid.jsx +3 -3
  158. package/src/modules/catalog/pages/admin/productEdit/Collection.jsx +7 -7
  159. package/src/modules/catalog/pages/admin/productEdit+productNew/Attributes.jsx +1 -1
  160. package/src/modules/catalog/pages/admin/productEdit+productNew/CustomOptions.jsss +4 -4
  161. package/src/modules/catalog/pages/admin/productEdit+productNew/FormContent.jsx +4 -4
  162. package/src/modules/catalog/pages/admin/productEdit+productNew/General.jsx +15 -17
  163. package/src/modules/catalog/pages/admin/productGrid/Grid.jsx +3 -3
  164. package/src/modules/catalog/pages/frontStore/catalogSearch/General.jsx +2 -2
  165. package/src/modules/catalog/pages/frontStore/catalogSearch/Products.jsx +1 -1
  166. package/src/modules/catalog/pages/frontStore/catalogSearch/route.json +2 -1
  167. package/src/modules/catalog/pages/frontStore/categoryView/CategoryView.jsx +19 -2
  168. package/src/modules/catalog/pages/frontStore/categoryView/Filter.scss +1 -0
  169. package/src/modules/catalog/pages/frontStore/categoryView/General.jsx +6 -8
  170. package/src/modules/catalog/pages/frontStore/categoryView/General.scss +0 -2
  171. package/src/modules/catalog/pages/frontStore/categoryView/Pagination.jsx +6 -0
  172. package/src/modules/catalog/pages/frontStore/categoryView/Products.jsx +8 -1
  173. package/src/modules/catalog/pages/frontStore/categoryView/route.json +2 -1
  174. package/src/modules/catalog/pages/frontStore/productView/Description.jsx +3 -3
  175. package/src/modules/catalog/pages/frontStore/productView/Form.jsx +4 -4
  176. package/src/modules/catalog/pages/frontStore/productView/Form.scss +1 -0
  177. package/src/modules/catalog/pages/frontStore/productView/GeneralInfo.jsx +1 -1
  178. package/src/modules/catalog/pages/frontStore/productView/Images.jsx +1 -1
  179. package/src/modules/catalog/pages/frontStore/productView/Layout.jsx +1 -1
  180. package/src/modules/catalog/pages/frontStore/productView/Options.jsx +2 -2
  181. package/src/modules/catalog/pages/frontStore/productView/Variants.jsx +4 -4
  182. package/src/modules/catalog/pages/frontStore/productView/route.json +2 -1
  183. package/src/modules/catalog/services/AttributeCollection.js +10 -10
  184. package/src/modules/catalog/services/AttributeGroupCollection.js +10 -10
  185. package/src/modules/catalog/services/CategoryCollection.js +10 -10
  186. package/src/modules/catalog/services/CollectionCollection.js +10 -10
  187. package/src/modules/catalog/services/registerCartItemProductUrlField.js +35 -0
  188. package/src/modules/catalog/services/registerCartItemVariantOptionsField.js +51 -0
  189. package/src/modules/catalog/services/registerDefaultCategoryCollectionFilters.js +16 -0
  190. package/src/modules/checkout/api/addShippingNote/[context]bodyParser[auth].js +5 -0
  191. package/src/modules/checkout/api/addShippingNote/payloadSchema.json +15 -0
  192. package/src/modules/checkout/api/addShippingNote/route.json +5 -0
  193. package/src/modules/checkout/api/addShippingNote/saveShippingNote.js +50 -0
  194. package/src/modules/checkout/api/createCart/createNewCart.js +28 -1
  195. package/src/modules/checkout/api/updateCartItemQty/[bodyParser]updateQty.js +49 -0
  196. package/src/modules/checkout/api/updateCartItemQty/[context]bodyParser[auth].js +5 -0
  197. package/src/modules/checkout/api/updateCartItemQty/payloadSchema.json +21 -0
  198. package/src/modules/checkout/api/updateCartItemQty/route.json +5 -0
  199. package/src/modules/checkout/api/updateMineCartItemQty/[context]bodyParser[auth].js +5 -0
  200. package/src/modules/checkout/api/updateMineCartItemQty/[detectCurrentCart]updateQty.js +51 -0
  201. package/src/modules/checkout/api/updateMineCartItemQty/[getCurrentCustomer]detectCurrentCart.js +32 -0
  202. package/src/modules/checkout/api/updateMineCartItemQty/payloadSchema.json +21 -0
  203. package/src/modules/checkout/api/updateMineCartItemQty/route.json +5 -0
  204. package/src/modules/checkout/bootstrap.js +27 -0
  205. package/src/modules/checkout/graphql/types/Cart/Cart.graphql +22 -3
  206. package/src/modules/checkout/graphql/types/Cart/Cart.resolvers.js +18 -2
  207. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.graphql +3 -0
  208. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.resolvers.js +7 -0
  209. package/src/modules/checkout/migration/Version-1.0.0.js +14 -0
  210. package/src/modules/checkout/migration/Version-1.0.6.js +201 -0
  211. package/src/modules/checkout/pages/admin/shippingSetting/ShippingSetting.jsx +2 -2
  212. package/src/modules/checkout/pages/frontStore/all/[context]detectCurrentCart[auth].js +5 -0
  213. package/src/modules/checkout/pages/frontStore/cart/ShoppingCart.jsx +17 -8
  214. package/src/modules/checkout/pages/frontStore/cart/Summary.jsx +18 -19
  215. package/src/modules/checkout/pages/frontStore/cart/route.json +2 -1
  216. package/src/modules/checkout/pages/frontStore/checkout/Checkout.jsx +5 -5
  217. package/src/modules/checkout/pages/frontStore/checkout/Checkout.scss +4 -0
  218. package/src/modules/checkout/pages/frontStore/checkout/ShippingMethods.jsx +2 -2
  219. package/src/modules/checkout/pages/frontStore/checkout/ShippingNote.jsx +105 -0
  220. package/src/modules/checkout/pages/frontStore/checkout/Summary.jsx +14 -14
  221. package/src/modules/checkout/pages/frontStore/checkout/SummaryMobile.jsx +12 -15
  222. package/src/modules/checkout/pages/frontStore/checkout/route.json +2 -1
  223. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.jsx +1 -1
  224. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.scss +4 -0
  225. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CustomerInfo.jsx +30 -32
  226. package/src/modules/checkout/pages/frontStore/checkoutSuccess/ShippingNote.jsx +47 -0
  227. package/src/modules/checkout/pages/frontStore/checkoutSuccess/Summary.jsx +12 -15
  228. package/src/modules/checkout/pages/frontStore/checkoutSuccess/route.json +2 -1
  229. package/src/modules/checkout/services/cart/Cart.js +31 -27
  230. package/src/modules/checkout/services/cart/registerCartBaseFields.js +133 -41
  231. package/src/modules/checkout/services/cart/registerCartItemBaseFields.js +300 -374
  232. package/src/modules/checkout/services/toPrice.js +1 -1
  233. package/src/modules/checkout/tests/basicSetup.js +85 -0
  234. package/src/modules/checkout/tests/coupons.js +82 -0
  235. package/src/modules/checkout/tests/products.js +67 -0
  236. package/src/modules/checkout/tests/taxRates.js +3 -0
  237. package/src/modules/checkout/tests/unit/discountAmount.test.js +60 -0
  238. package/src/modules/checkout/tests/unit/grandTotal.test.js +83 -0
  239. package/src/modules/checkout/tests/unit/lineTotal.test.js +90 -0
  240. package/src/modules/checkout/tests/unit/lineTotalWithDiscount.test.js +103 -0
  241. package/src/modules/checkout/tests/unit/productPrice.test.js +67 -0
  242. package/src/modules/checkout/tests/unit/subTotal.test.js +85 -0
  243. package/src/modules/checkout/tests/unit/subTotalWithDiscount.test.js +117 -0
  244. package/src/modules/checkout/tests/unit/taxAmount.test.js +67 -0
  245. package/src/modules/checkout/tests/unit/taxAmountRounding.test.js +277 -0
  246. package/src/modules/cms/api/createWidget/[context]bodyParser[auth].js +5 -0
  247. package/src/modules/cms/api/createWidget/createWidget[finish].js +17 -0
  248. package/src/modules/cms/api/createWidget/finish[apiResponse].js +27 -0
  249. package/src/modules/cms/api/createWidget/payloadSchema.json +18 -0
  250. package/src/modules/cms/api/createWidget/route.json +5 -0
  251. package/src/modules/cms/api/deleteWidget/deleteWidget.js +27 -0
  252. package/src/modules/cms/api/deleteWidget/route.json +5 -0
  253. package/src/modules/cms/api/updateWidget/[context]bodyParser[auth].js +5 -0
  254. package/src/modules/cms/api/updateWidget/finish[apiResponse].js +27 -0
  255. package/src/modules/cms/api/updateWidget/payloadSchema.json +18 -0
  256. package/src/modules/cms/api/updateWidget/route.json +5 -0
  257. package/src/modules/cms/api/updateWidget/updateWidget[finish].js +17 -0
  258. package/src/modules/cms/bootstrap.js +223 -3
  259. package/src/modules/cms/graphql/types/CmsPage/CmsPage.graphql +1 -2
  260. package/src/modules/cms/graphql/types/CmsPage/CmsPage.resolvers.js +35 -1
  261. package/src/modules/cms/graphql/types/Widget/Widget.graphql +91 -0
  262. package/src/modules/cms/graphql/types/Widget/Widget.resolvers.js +142 -0
  263. package/src/modules/cms/migration/Version-1.1.0.js +22 -0
  264. package/src/modules/cms/migration/Version-1.1.1.js +103 -0
  265. package/src/modules/cms/pages/admin/adminNotFound/NotFound.jsx +4 -4
  266. package/src/modules/cms/pages/admin/all/CmsMenuGroup.jsx +12 -4
  267. package/src/modules/cms/pages/admin/all/Notification.scss +1 -1
  268. package/src/modules/cms/pages/admin/all/search/NoResult.jsx +2 -2
  269. package/src/modules/cms/pages/admin/all/search/Results.jsx +3 -3
  270. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/FormContent.jsx +7 -9
  271. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/General.jsx +3 -3
  272. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Seo.jsx +1 -1
  273. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Status.jsx +40 -0
  274. package/src/modules/cms/pages/admin/cmsPageGrid/Grid.jsx +3 -4
  275. package/src/modules/cms/pages/admin/dashboard/Layout.jsx +3 -3
  276. package/src/modules/cms/pages/admin/widgetEdit/WidgetForm.jsx +52 -0
  277. package/src/modules/cms/pages/admin/widgetEdit/index.js +36 -0
  278. package/src/modules/cms/pages/admin/widgetEdit/route.json +4 -0
  279. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.jsx +69 -0
  280. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.scss +7 -0
  281. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/General.jsx +185 -0
  282. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/PageHeading.jsx +37 -0
  283. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/Setting.jsx +55 -0
  284. package/src/modules/cms/pages/admin/widgetGrid/Grid.jsx +415 -0
  285. package/src/modules/cms/pages/admin/widgetGrid/Heading.jsx +11 -0
  286. package/src/modules/cms/pages/admin/widgetGrid/NewWidgetButton.jsx +52 -0
  287. package/src/modules/cms/pages/admin/widgetGrid/index.js +15 -0
  288. package/src/modules/cms/pages/admin/widgetGrid/route.json +4 -0
  289. package/src/modules/cms/pages/admin/widgetNew/WidgetNewForm.jsx +60 -0
  290. package/src/modules/cms/pages/admin/widgetNew/index.js +11 -0
  291. package/src/modules/cms/pages/admin/widgetNew/route.json +4 -0
  292. package/src/modules/cms/pages/admin/widgetNew/typeValidate.js +21 -0
  293. package/src/modules/cms/pages/frontStore/all/Breadcrumb.jsx +1 -1
  294. package/src/modules/cms/pages/frontStore/all/Footer.jsx +2 -2
  295. package/src/modules/cms/pages/frontStore/all/Layout.jsx +3 -3
  296. package/src/modules/cms/pages/frontStore/all/Layout.scss +13 -0
  297. package/src/modules/cms/pages/frontStore/all/Logo.jsx +2 -2
  298. package/src/modules/cms/pages/frontStore/all/Logo.scss +2 -4
  299. package/src/modules/cms/pages/frontStore/all/Notification.scss +1 -1
  300. package/src/modules/cms/pages/frontStore/cmsPageView/Layout.jsx +2 -2
  301. package/src/modules/cms/pages/frontStore/cmsPageView/View.jsx +5 -3
  302. package/src/modules/cms/pages/frontStore/cmsPageView/index.js +6 -12
  303. package/src/modules/cms/pages/frontStore/cmsPageView/route.json +2 -1
  304. package/src/modules/cms/pages/frontStore/homepage/route.json +2 -1
  305. package/src/modules/cms/pages/frontStore/notFound/NotFound.jsx +4 -4
  306. package/src/modules/cms/pages/frontStore/notFound/route.json +2 -1
  307. package/src/modules/cms/pages/frontStore/staticAsset/[context]staticAssets[auth].js +1 -1
  308. package/src/modules/cms/services/CMSPageCollection.js +10 -10
  309. package/src/modules/cms/services/WidgetCollection.js +62 -0
  310. package/src/modules/cms/services/getWidgetsBaseQuery.js +7 -0
  311. package/src/modules/cms/services/page/createPage.js +1 -2
  312. package/src/modules/cms/services/page/pageDataSchema.json +0 -4
  313. package/src/modules/cms/services/registerDefaultWidgetCollectionFilters.js +62 -0
  314. package/src/modules/cms/services/tailwind.admin.config.js +22 -107
  315. package/src/modules/cms/services/tailwind.frontStore.config.js +23 -108
  316. package/src/modules/cms/services/widget/createWidget.js +73 -0
  317. package/src/modules/cms/services/widget/deleteWidget.js +49 -0
  318. package/src/modules/cms/services/widget/loadWidgetInstances.js +54 -0
  319. package/src/modules/cms/services/widget/updateWidget.js +86 -0
  320. package/src/modules/cms/services/widget/widgetDataSchema.json +29 -0
  321. package/src/modules/cod/pages/admin/paymentSetting/CODSetting.jsx +2 -2
  322. package/src/modules/cod/pages/frontStore/checkout/CashOnDelivery.jsx +1 -1
  323. package/src/modules/customer/bootstrap.js +21 -4
  324. package/src/modules/customer/pages/admin/customerEdit/CustomerEditForm.jsx +3 -3
  325. package/src/modules/customer/pages/admin/customerEdit+customerNew/OrderHistory.jsx +1 -1
  326. package/src/modules/customer/pages/admin/customerGrid/Grid.jsx +3 -3
  327. package/src/modules/customer/pages/frontStore/account/AccountDetails.jsx +3 -3
  328. package/src/modules/customer/pages/frontStore/account/Layout.jsx +3 -3
  329. package/src/modules/customer/pages/frontStore/account/OrderHistory.jsx +1 -1
  330. package/src/modules/customer/pages/frontStore/account/route.json +2 -1
  331. package/src/modules/customer/pages/frontStore/login/LoginForm.jsx +2 -2
  332. package/src/modules/customer/pages/frontStore/login/route.json +2 -1
  333. package/src/modules/customer/pages/frontStore/register/RegisterForm.jsx +2 -2
  334. package/src/modules/customer/pages/frontStore/register/route.json +2 -1
  335. package/src/modules/customer/pages/frontStore/resetPasswordPage/ResetPasswordForm.jsx +2 -2
  336. package/src/modules/customer/pages/frontStore/resetPasswordPage/route.json +2 -1
  337. package/src/modules/customer/pages/frontStore/updatePasswordPage/UpdatePasswordForm.jsx +3 -3
  338. package/src/modules/customer/pages/frontStore/updatePasswordPage/route.json +2 -1
  339. package/src/modules/customer/services/CustomerCollection.js +10 -10
  340. package/src/modules/customer/services/CustomerGroupCollection.js +10 -10
  341. package/src/modules/graphql/pages/global/[bodyParser]buildQuery[graphql].js +238 -6
  342. package/src/modules/graphql/pages/global/[buildQuery]graphql[notification].js +12 -8
  343. package/src/modules/oms/bootstrap.js +87 -3
  344. package/src/modules/oms/graphql/types/Order/Order.graphql +11 -2
  345. package/src/modules/oms/graphql/types/Order/Order.resolvers.js +7 -1
  346. package/src/modules/oms/pages/admin/dashboard/Bestsellers.jsx +2 -2
  347. package/src/modules/oms/pages/admin/dashboard/Lifetimesales.jsx +5 -5
  348. package/src/modules/oms/pages/admin/orderEdit/AddTrackingButton.jsx +1 -1
  349. package/src/modules/oms/pages/admin/orderEdit/Items.jsx +7 -7
  350. package/src/modules/oms/pages/admin/orderEdit/Layout.jsx +3 -3
  351. package/src/modules/oms/pages/admin/orderEdit/Payment.jsx +6 -6
  352. package/src/modules/oms/pages/admin/orderEdit/ShipButton.jsx +1 -1
  353. package/src/modules/oms/pages/admin/orderGrid/Grid.jsx +3 -3
  354. package/src/modules/oms/services/OrderCollection.js +10 -10
  355. package/src/modules/paypal/api/paypalCreateOrder/[bodyParser]createOrder.js +55 -24
  356. package/src/modules/paypal/pages/admin/paymentSetting/PaypalSetting.jsx +6 -6
  357. package/src/modules/paypal/pages/frontStore/checkout/Paypal.jsx +3 -4
  358. package/src/modules/promotion/bootstrap.js +19 -101
  359. package/src/modules/promotion/pages/admin/couponEdit+couponNew/DiscountType.jsx +1 -1
  360. package/src/modules/promotion/pages/admin/couponEdit+couponNew/FormContent.jsx +5 -5
  361. package/src/modules/promotion/pages/admin/couponGrid/Grid.jsx +3 -3
  362. package/src/modules/promotion/pages/frontStore/cart/Coupon.jsx +2 -2
  363. package/src/modules/promotion/services/CouponCollection.js +10 -10
  364. package/src/modules/promotion/services/couponValidator.js +4 -7
  365. package/src/modules/promotion/services/discountCalculator.js +2 -7
  366. package/src/modules/promotion/services/registerCartItemPromotionFields.js +80 -0
  367. package/src/modules/promotion/services/registerCartPromotionFields.js +128 -0
  368. package/src/modules/promotion/services/registerDefaultCalculators.js +48 -20
  369. package/src/modules/promotion/services/registerDefaultValidators.js +16 -4
  370. package/src/modules/setting/pages/admin/paymentSetting/PaymentSetting.jsx +2 -2
  371. package/src/modules/setting/pages/admin/storeSetting/StoreSetting.jsx +98 -35
  372. package/src/modules/stripe/pages/admin/paymentSetting/StripePayment.jsx +5 -5
  373. package/src/modules/stripe/pages/frontStore/checkout/Stripe.jsx +1 -1
  374. package/src/modules/tax/bootstrap.js +40 -5
  375. package/src/modules/tax/graphql/types/Product/Price/ProductPrice.resolvers.js +6 -39
  376. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.graphql +1 -2
  377. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.resolvers.js +1 -8
  378. package/src/modules/tax/pages/admin/taxSetting/TaxSetting.jsx +4 -4
  379. package/src/modules/tax/services/TaxClassCollection.js +10 -10
  380. package/src/modules/tax/services/calculateTaxAmount.js +12 -9
  381. package/src/modules/tax/services/registerCartItemTaxPercentField.js +76 -0
  382. package/src/modules/auth/services/adminSessionMiddleware.js +0 -0
  383. package/src/modules/catalog/pages/frontStore/homepage/FeaturedCategories.jsx +0 -58
  384. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/StatusAndLayout.jsx +0 -61
  385. package/src/modules/cms/pages/frontStore/all/Menu.jsx +0 -46
  386. package/src/modules/cms/pages/frontStore/all/Menu.scss +0 -7
  387. package/src/modules/cms/pages/frontStore/all/MobileMenu.jsx +0 -73
  388. package/src/modules/cms/pages/frontStore/all/MobileMenu.scss +0 -35
  389. package/src/modules/cms/pages/frontStore/homepage/MainBanner.jsx +0 -31
  390. package/src/modules/cms/pages/frontStore/homepage/MainBanner.scss +0 -48
@@ -5,24 +5,21 @@ import { CartSummary } from '@components/frontStore/checkout/checkout/summary/Ca
5
5
  import Area from '@components/common/Area';
6
6
  import './Summary.scss';
7
7
 
8
- export default function Summary({
9
- cart,
10
- setting: { displayCheckoutPriceIncludeTax }
11
- }) {
8
+ export default function Summary({ cart, setting: { priceIncludingTax } }) {
12
9
  return (
13
10
  <Area
14
11
  id="checkoutSummary"
15
- className="checkout-summary hidden md:block"
12
+ className="checkout-summary h-full hidden md:block"
16
13
  coreComponents={[
17
14
  {
18
15
  component: { default: Items },
19
- props: { items: cart.items, displayCheckoutPriceIncludeTax },
16
+ props: { items: cart.items, priceIncludingTax },
20
17
  sortOrder: 20,
21
18
  id: 'checkoutOrderSummaryItems'
22
19
  },
23
20
  {
24
21
  component: { default: CartSummary },
25
- props: { ...cart, displayCheckoutPriceIncludeTax },
22
+ props: { ...cart, priceIncludingTax },
26
23
  sortOrder: 30,
27
24
  id: 'checkoutOrderSummaryCart'
28
25
  }
@@ -42,7 +39,10 @@ Summary.propTypes = {
42
39
  total: PropTypes.shape({
43
40
  text: PropTypes.string
44
41
  }),
45
- subTotal: PropTypes.shape({
42
+ lineTotal: PropTypes.shape({
43
+ text: PropTypes.string
44
+ }),
45
+ lineTotalInclTax: PropTypes.shape({
46
46
  text: PropTypes.string
47
47
  })
48
48
  })
@@ -60,7 +60,7 @@ Summary.propTypes = {
60
60
  discountAmount: PropTypes.shape({
61
61
  text: PropTypes.string
62
62
  }),
63
- taxAmount: PropTypes.shape({
63
+ totalTaxAmount: PropTypes.shape({
64
64
  text: PropTypes.string
65
65
  }),
66
66
  shippingFeeInclTax: PropTypes.shape({
@@ -70,7 +70,7 @@ Summary.propTypes = {
70
70
  coupon: PropTypes.string
71
71
  }).isRequired,
72
72
  setting: PropTypes.shape({
73
- displayCheckoutPriceIncludeTax: PropTypes.bool
73
+ priceIncludingTax: PropTypes.bool
74
74
  }).isRequired
75
75
  };
76
76
 
@@ -99,7 +99,7 @@ export const query = `
99
99
  value
100
100
  text
101
101
  }
102
- taxAmount {
102
+ totalTaxAmount {
103
103
  value
104
104
  text
105
105
  }
@@ -115,18 +115,18 @@ export const query = `
115
115
  productSku
116
116
  qty
117
117
  variantOptions
118
- total {
118
+ lineTotalInclTax {
119
119
  value
120
120
  text
121
121
  }
122
- subTotal {
122
+ lineTotal {
123
123
  value
124
124
  text
125
125
  }
126
126
  }
127
127
  }
128
128
  setting {
129
- displayCheckoutPriceIncludeTax
129
+ priceIncludingTax
130
130
  }
131
131
  }
132
132
  `;
@@ -5,24 +5,21 @@ import { CartSummary } from '@components/frontStore/checkout/checkout/summary/Ca
5
5
  import Area from '@components/common/Area';
6
6
  import './SummaryMobile.scss';
7
7
 
8
- export default function Summary({
9
- cart,
10
- setting: { displayCheckoutPriceIncludeTax }
11
- }) {
8
+ export default function Summary({ cart, setting: { priceIncludingTax } }) {
12
9
  return (
13
10
  <Area
14
11
  id="checkoutSummary"
15
- className="checkout-summary checkout__summary__mobile md:hidden divide-y border rounded border-divider px-2 mb-2"
12
+ className="checkout-summary checkout__summary__mobile md:hidden divide-y border rounded border-divider px-8 mb-8"
16
13
  coreComponents={[
17
14
  {
18
15
  component: { default: Items },
19
- props: { items: cart.items, displayCheckoutPriceIncludeTax },
16
+ props: { items: cart.items, priceIncludingTax },
20
17
  sortOrder: 20,
21
18
  id: 'checkoutOrderSummaryItems'
22
19
  },
23
20
  {
24
21
  component: { default: CartSummary },
25
- props: { ...cart, displayCheckoutPriceIncludeTax },
22
+ props: { ...cart, priceIncludingTax },
26
23
  sortOrder: 30,
27
24
  id: 'checkoutOrderSummaryCart'
28
25
  }
@@ -39,10 +36,10 @@ Summary.propTypes = {
39
36
  productName: PropTypes.string,
40
37
  variantOptions: PropTypes.string,
41
38
  qty: PropTypes.number,
42
- total: PropTypes.shape({
39
+ lineTotalInclTax: PropTypes.shape({
43
40
  text: PropTypes.string
44
41
  }),
45
- subTotal: PropTypes.shape({
42
+ lineTotal: PropTypes.shape({
46
43
  text: PropTypes.string
47
44
  })
48
45
  })
@@ -60,7 +57,7 @@ Summary.propTypes = {
60
57
  discountAmount: PropTypes.shape({
61
58
  text: PropTypes.string
62
59
  }),
63
- taxAmount: PropTypes.shape({
60
+ totalTaxAmount: PropTypes.shape({
64
61
  text: PropTypes.string
65
62
  }),
66
63
  shippingFeeInclTax: PropTypes.shape({
@@ -70,7 +67,7 @@ Summary.propTypes = {
70
67
  coupon: PropTypes.string
71
68
  }).isRequired,
72
69
  setting: PropTypes.shape({
73
- displayCheckoutPriceIncludeTax: PropTypes.bool
70
+ priceIncludingTax: PropTypes.bool
74
71
  }).isRequired
75
72
  };
76
73
 
@@ -99,7 +96,7 @@ export const query = `
99
96
  value
100
97
  text
101
98
  }
102
- taxAmount {
99
+ totalTaxAmount {
103
100
  value
104
101
  text
105
102
  }
@@ -115,18 +112,18 @@ export const query = `
115
112
  productSku
116
113
  qty
117
114
  variantOptions
118
- total {
115
+ lineTotalInclTax {
119
116
  value
120
117
  text
121
118
  }
122
- subTotal {
119
+ lineTotal {
123
120
  value
124
121
  text
125
122
  }
126
123
  }
127
124
  }
128
125
  setting {
129
- displayCheckoutPriceIncludeTax
126
+ priceIncludingTax
130
127
  }
131
128
  }
132
129
  `;
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "methods": ["GET"],
3
- "path": "/checkout"
3
+ "path": "/checkout",
4
+ "name": "Checkout page"
4
5
  }
@@ -4,7 +4,7 @@ import './CheckoutSuccess.scss';
4
4
 
5
5
  export default function CheckoutSuccessPage() {
6
6
  return (
7
- <div className="page-width grid grid-cols-1 md:grid-cols-2 gap-3">
7
+ <div className="page-width grid grid-cols-1 md:grid-cols-2 gap-12">
8
8
  <Area id="checkoutSuccessPageLeft" />
9
9
  <Area id="checkoutSuccessPageRight" />
10
10
  </div>
@@ -43,3 +43,7 @@
43
43
  padding: 0.5rem;
44
44
  }
45
45
  }
46
+
47
+ .breadcrumb {
48
+ display: none;
49
+ }
@@ -16,7 +16,7 @@ export default function CustomerInfo({
16
16
  }) {
17
17
  return (
18
18
  <div className="checkout-success-customer-info">
19
- <h3 className="thank-you flex justify-start space-x-2">
19
+ <h3 className="thank-you flex justify-start space-x-8">
20
20
  <div className="check flex justify-center self-center text-interactive">
21
21
  <svg
22
22
  style={{ width: '3rem', height: '3rem' }}
@@ -46,41 +46,37 @@ export default function CustomerInfo({
46
46
  </div>
47
47
  </h3>
48
48
 
49
- <div className="customer-info mt-3 mb-2">
50
- <div className="grid grid-cols-2 gap-3">
51
- <div className="grid grid-cols-1 gap-3">
52
- <div className="mb-2">
53
- <div className="mb-075">
54
- <h3>{_('Contact information')}</h3>
55
- </div>
56
- <div className="text-textSubdued">
57
- {customerFullName || billingAddress?.fullName}
58
- </div>
59
- <div className="text-textSubdued">{customerEmail}</div>
49
+ <div className="customer-info mt-12 mb-8">
50
+ <div className="grid grid-cols-2 gap-12">
51
+ <div>
52
+ <div className="mb-3">
53
+ <h3>{_('Contact information')}</h3>
54
+ </div>
55
+ <div className="text-textSubdued">
56
+ {customerFullName || billingAddress?.fullName}
57
+ </div>
58
+ <div className="text-textSubdued">{customerEmail}</div>
59
+ </div>
60
+ <div>
61
+ <div className="mb-3">
62
+ <h3>{_('Shipping Address')}</h3>
60
63
  </div>
61
- <div>
62
- <div className="mb-075">
63
- <h3>{_('Shipping Address')}</h3>
64
- </div>
65
- <div className="text-textSubdued">
66
- <AddressSummary address={shippingAddress} />
67
- </div>
64
+ <div className="text-textSubdued">
65
+ <AddressSummary address={shippingAddress} />
68
66
  </div>
69
67
  </div>
70
- <div className="grid grid-cols-1 gap-3">
71
- <div className="mb-2">
72
- <div className="mb-075">
73
- <h3>{_('Payment Method')}</h3>
74
- </div>
75
- <div className="text-textSubdued">{paymentMethodName}</div>
68
+ <div>
69
+ <div className="mb-3">
70
+ <h3>{_('Payment Method')}</h3>
71
+ </div>
72
+ <div className="text-textSubdued">{paymentMethodName}</div>
73
+ </div>
74
+ <div>
75
+ <div className="mb-3">
76
+ <h3>{_('Billing Address')}</h3>
76
77
  </div>
77
- <div>
78
- <div className="mb-075">
79
- <h3>{_('Billing Address')}</h3>
80
- </div>
81
- <div className="text-textSubdued">
82
- <AddressSummary address={billingAddress} />
83
- </div>
78
+ <div className="text-textSubdued">
79
+ <AddressSummary address={billingAddress} />
84
80
  </div>
85
81
  </div>
86
82
  </div>
@@ -96,6 +92,7 @@ CustomerInfo.propTypes = {
96
92
  customerFullName: PropTypes.string,
97
93
  customerEmail: PropTypes.string.isRequired,
98
94
  paymentMethodName: PropTypes.string.isRequired,
95
+ shippingNote: PropTypes.string,
99
96
  shippingAddress: PropTypes.shape({
100
97
  fullName: PropTypes.string,
101
98
  postcode: PropTypes.string,
@@ -143,6 +140,7 @@ export const query = `
143
140
  customerFullName
144
141
  customerEmail
145
142
  paymentMethodName
143
+ shippingNote
146
144
  shippingAddress {
147
145
  fullName
148
146
  postcode
@@ -0,0 +1,47 @@
1
+ import React from 'react';
2
+ import PropTypes from 'prop-types';
3
+
4
+ export default function ShippingNote({
5
+ setting: { showShippingNote },
6
+ order: { shippingNote }
7
+ }) {
8
+ return showShippingNote ? (
9
+ <div className="shipping-note mt-8">
10
+ <p className="italic">{shippingNote}</p>
11
+ </div>
12
+ ) : null;
13
+ }
14
+
15
+ ShippingNote.propTypes = {
16
+ setting: PropTypes.shape({
17
+ showShippingNote: PropTypes.bool
18
+ }),
19
+ order: PropTypes.shape({
20
+ shippingNote: PropTypes.string
21
+ })
22
+ };
23
+
24
+ ShippingNote.defaultProps = {
25
+ setting: {
26
+ showShippingNote: false
27
+ },
28
+ order: {
29
+ shippingNote: ''
30
+ }
31
+ };
32
+
33
+ export const layout = {
34
+ areaId: 'checkoutSuccessSummary',
35
+ sortOrder: 50
36
+ };
37
+
38
+ export const query = `
39
+ query Query {
40
+ order (uuid: getContextValue('orderId')) {
41
+ shippingNote
42
+ }
43
+ setting {
44
+ showShippingNote
45
+ }
46
+ }
47
+ `;
@@ -5,24 +5,21 @@ import Area from '@components/common/Area';
5
5
  import { OrderSummary } from '@components/frontStore/checkout/success/summary/order/OrderSummary';
6
6
  import './Summary.scss';
7
7
 
8
- export default function Summary({
9
- order,
10
- setting: { displayCheckoutPriceIncludeTax }
11
- }) {
8
+ export default function Summary({ order, setting: { priceIncludingTax } }) {
12
9
  return (
13
10
  <Area
14
11
  id="checkoutSuccessSummary"
15
- className="checkout-summary hidden md:block"
12
+ className="checkout-summary h-full hidden md:block"
16
13
  coreComponents={[
17
14
  {
18
15
  component: { default: Items },
19
- props: { items: order.items, displayCheckoutPriceIncludeTax },
16
+ props: { items: order.items, priceIncludingTax },
20
17
  sortOrder: 20,
21
18
  id: 'checkoutSuccessOrderSummaryItems'
22
19
  },
23
20
  {
24
21
  component: { default: OrderSummary },
25
- props: { ...order, displayCheckoutPriceIncludeTax },
22
+ props: { ...order, priceIncludingTax },
26
23
  sortOrder: 30,
27
24
  id: 'checkoutSuccessOrderSummary'
28
25
  }
@@ -43,10 +40,10 @@ Summary.propTypes = {
43
40
  }).isRequired,
44
41
  thumbnail: PropTypes.string.isRequired,
45
42
  variantOptions: PropTypes.string.isRequired,
46
- total: PropTypes.shape({
43
+ lineTotalInclTax: PropTypes.shape({
47
44
  text: PropTypes.string.isRequired
48
45
  }).isRequired,
49
- subTotal: PropTypes.shape({
46
+ lineTotal: PropTypes.shape({
50
47
  text: PropTypes.string.isRequired
51
48
  }).isRequired
52
49
  })
@@ -67,13 +64,13 @@ Summary.propTypes = {
67
64
  subTotalInclTax: PropTypes.shape({
68
65
  text: PropTypes.string
69
66
  }),
70
- taxAmount: PropTypes.shape({
67
+ totalTaxAmount: PropTypes.shape({
71
68
  text: PropTypes.string
72
69
  }),
73
70
  coupon: PropTypes.string
74
71
  }).isRequired,
75
72
  setting: PropTypes.shape({
76
- displayCheckoutPriceIncludeTax: PropTypes.bool
73
+ priceIncludingTax: PropTypes.bool
77
74
  }).isRequired
78
75
  };
79
76
 
@@ -96,7 +93,7 @@ export const query = `
96
93
  value
97
94
  text
98
95
  }
99
- taxAmount {
96
+ totalTaxAmount {
100
97
  value
101
98
  text
102
99
  }
@@ -118,18 +115,18 @@ export const query = `
118
115
  productSku
119
116
  qty
120
117
  variantOptions
121
- total {
118
+ lineTotalInclTax {
122
119
  value
123
120
  text
124
121
  }
125
- subTotal {
122
+ lineTotal {
126
123
  value
127
124
  text
128
125
  }
129
126
  }
130
127
  }
131
128
  setting {
132
- displayCheckoutPriceIncludeTax
129
+ priceIncludingTax
133
130
  }
134
131
  }
135
132
  `;
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "methods": ["GET"],
3
- "path": "/checkout/success/:orderId?"
3
+ "path": "/checkout/success/:orderId?",
4
+ "name": "Checkout success page"
4
5
  }
@@ -6,14 +6,11 @@ const {
6
6
  } = require('@evershop/evershop/src/lib/util/registry');
7
7
  const { select } = require('@evershop/postgres-query-builder');
8
8
  const { pool } = require('@evershop/evershop/src/lib/postgres/connection');
9
- const { v4: uuidv4, validate } = require('uuid');
9
+ const { v4: uuidv4 } = require('uuid');
10
10
  const {
11
11
  translate
12
12
  } = require('@evershop/evershop/src/lib/locale/translate/translate');
13
13
  const { DataObject } = require('./DataObject');
14
- const {
15
- getProductsBaseQuery
16
- } = require('../../../catalog/services/getProductsBaseQuery');
17
14
  // eslint-disable-next-line no-multi-assign
18
15
  module.exports = exports = {};
19
16
 
@@ -22,19 +19,17 @@ class Item extends DataObject {
22
19
 
23
20
  #product;
24
21
 
25
- constructor(theCart, initialData = {}) {
22
+ constructor(cart, initialData = {}) {
26
23
  super(getValueSync('cartItemFields', []), initialData);
27
- this.#cart = theCart;
24
+ this.#cart = cart;
28
25
  }
29
26
 
30
27
  async getProduct() {
31
28
  if (this.#product) {
32
29
  return this.#product;
33
30
  }
34
- const productQuery = getProductsBaseQuery();
35
- const product = await productQuery
36
- .where('product_id', '=', this.getData('product_id'))
37
- .load(pool);
31
+ const loaderFunction = getValueSync('cartItemProductLoaderFunction');
32
+ const product = await loaderFunction(this.getData('product_id'));
38
33
  this.#product = product;
39
34
  return product;
40
35
  }
@@ -67,7 +62,7 @@ class Cart extends DataObject {
67
62
 
68
63
  /**
69
64
  *
70
- * @param {string} productID | product_id, sku, or uuid
65
+ * @param {string} productID | product_id
71
66
  * @param {number} qty
72
67
  * @returns
73
68
  */
@@ -118,27 +113,36 @@ class Cart extends DataObject {
118
113
  }
119
114
  }
120
115
 
121
- async createItem(productID, qty) {
122
- // Make sure the qty is a number and greater than 0
123
- if (typeof qty !== 'number' || qty <= 0) {
124
- throw new Error('Invalid quantity');
116
+ async updateItemQty(uuid, qty, action) {
117
+ if (['increase', 'decrease'].indexOf(action) === -1) {
118
+ throw new Error('Invalid action');
119
+ }
120
+ const item = this.getItem(uuid);
121
+ if (!item) {
122
+ throw new Error('Item not found');
125
123
  }
126
- const productQuery = getProductsBaseQuery();
127
- if (validate(productID)) {
128
- productQuery.where('product.uuid', '=', productID);
129
- } else if (/^\d+$/.test(productID)) {
130
- productQuery
131
- .where('product.product_id', '=', productID)
132
- .or('product.sku', '=', productID);
124
+ if (action === 'increase') {
125
+ await item.setData('qty', item.getData('qty') + parseInt(qty, 10));
133
126
  } else {
134
- productQuery.where('product.sku', '=', productID);
127
+ const currentQty = item.getData('qty');
128
+ const newQty = Math.max(currentQty - parseInt(qty, 10), 0);
129
+ if (newQty === 0) {
130
+ await this.removeItem(uuid);
131
+ } else {
132
+ await item.setData('qty', newQty);
133
+ }
135
134
  }
136
- const product = await productQuery.load(pool);
137
- if (!product) {
138
- throw new Error(translate('Product not found'));
135
+ await this.build();
136
+ return item;
137
+ }
138
+
139
+ async createItem(productId, qty) {
140
+ // Make sure the qty is a number, not NaN and greater than 0
141
+ if (typeof qty !== 'number' || Number.isNaN(qty) || qty <= 0) {
142
+ throw new Error(translate('Invalid quantity'));
139
143
  }
140
144
  const item = new Item(this, {
141
- product_id: product.product_id,
145
+ product_id: productId,
142
146
  qty
143
147
  });
144
148
  await item.build();