@evershop/evershop 1.1.0 → 1.2.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 (391) 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 +20 -2
  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 +193 -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 +33 -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 +34 -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 +16 -6
  125. package/src/lib/webpack/util/keyGenerator.js +9 -0
  126. package/src/lib/webpack/util/parseGraphql.js +30 -16
  127. package/src/lib/webpack/util/parseGraphqlByFile.js +16 -2
  128. package/src/modules/auth/pages/admin/adminLogin/LoginForm.jsx +54 -21
  129. package/src/modules/auth/pages/admin/all/AdminUser.jsx +3 -3
  130. package/src/modules/base/bootstrap.js +79 -0
  131. package/src/modules/base/graphql/types/Route/Route.admin.graphql +15 -0
  132. package/src/modules/base/graphql/types/Route/Route.admin.resolvers.js +10 -0
  133. package/src/modules/base/pages/global/response[errorHandler].js +25 -1
  134. package/src/modules/catalog/bootstrap.js +125 -5
  135. package/src/modules/catalog/graphql/types/Category/Category.graphql +4 -3
  136. package/src/modules/catalog/graphql/types/Category/Category.resolvers.js +34 -0
  137. package/src/modules/catalog/graphql/types/Collection/Collection.graphql +2 -2
  138. package/src/modules/catalog/graphql/types/Collection/Collection.resolvers.js +34 -0
  139. package/src/modules/catalog/graphql/types/Product/Attribute/ProductAttribute.resolvers.js +1 -0
  140. package/src/modules/catalog/graphql/types/Product/Product.graphql +1 -1
  141. package/src/modules/catalog/graphql/types/Product/Product.resolvers.js +34 -0
  142. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.graphql +11 -0
  143. package/src/modules/catalog/graphql/types/Widget/CollectionProductsWidget/CollectionProductsWidget.resolvers.js +8 -0
  144. package/src/modules/catalog/migration/Version-1.0.0.js +1 -0
  145. package/src/modules/catalog/migration/Version-1.0.7.js +10 -0
  146. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/FormContent.jsx +4 -4
  147. package/src/modules/catalog/pages/admin/attributeEdit+attributeNew/General.jsx +5 -5
  148. package/src/modules/catalog/pages/admin/attributeGrid/Grid.jsx +2 -2
  149. package/src/modules/catalog/pages/admin/categoryEdit/Products.jsx +4 -4
  150. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/FormContent.jsx +4 -4
  151. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/General.jsx +16 -18
  152. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Image.jsx +1 -2
  153. package/src/modules/catalog/pages/admin/categoryEdit+categoryNew/Status.jsx +16 -1
  154. package/src/modules/catalog/pages/admin/categoryGrid/Grid.jsx +3 -3
  155. package/src/modules/catalog/pages/admin/collectionEdit/Products.jsx +4 -4
  156. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/FormContent.jsx +2 -2
  157. package/src/modules/catalog/pages/admin/collectionEdit+collectionNew/General.jsx +2 -2
  158. package/src/modules/catalog/pages/admin/collectionGrid/Grid.jsx +3 -3
  159. package/src/modules/catalog/pages/admin/productEdit/Collection.jsx +7 -7
  160. package/src/modules/catalog/pages/admin/productEdit+productNew/Attributes.jsx +8 -3
  161. package/src/modules/catalog/pages/admin/productEdit+productNew/CustomOptions.jsss +4 -4
  162. package/src/modules/catalog/pages/admin/productEdit+productNew/FormContent.jsx +4 -4
  163. package/src/modules/catalog/pages/admin/productEdit+productNew/General.jsx +15 -17
  164. package/src/modules/catalog/pages/admin/productGrid/Grid.jsx +3 -3
  165. package/src/modules/catalog/pages/frontStore/catalogSearch/General.jsx +2 -2
  166. package/src/modules/catalog/pages/frontStore/catalogSearch/Products.jsx +1 -1
  167. package/src/modules/catalog/pages/frontStore/catalogSearch/route.json +2 -1
  168. package/src/modules/catalog/pages/frontStore/categoryView/CategoryView.jsx +19 -2
  169. package/src/modules/catalog/pages/frontStore/categoryView/Filter.scss +1 -0
  170. package/src/modules/catalog/pages/frontStore/categoryView/General.jsx +6 -8
  171. package/src/modules/catalog/pages/frontStore/categoryView/General.scss +0 -2
  172. package/src/modules/catalog/pages/frontStore/categoryView/Pagination.jsx +6 -0
  173. package/src/modules/catalog/pages/frontStore/categoryView/Products.jsx +8 -1
  174. package/src/modules/catalog/pages/frontStore/categoryView/route.json +2 -1
  175. package/src/modules/catalog/pages/frontStore/productView/Description.jsx +15 -4
  176. package/src/modules/catalog/pages/frontStore/productView/Form.jsx +4 -4
  177. package/src/modules/catalog/pages/frontStore/productView/Form.scss +1 -0
  178. package/src/modules/catalog/pages/frontStore/productView/GeneralInfo.jsx +1 -1
  179. package/src/modules/catalog/pages/frontStore/productView/Images.jsx +1 -1
  180. package/src/modules/catalog/pages/frontStore/productView/Layout.jsx +1 -1
  181. package/src/modules/catalog/pages/frontStore/productView/Options.jsx +7 -3
  182. package/src/modules/catalog/pages/frontStore/productView/Variants.jsx +6 -6
  183. package/src/modules/catalog/pages/frontStore/productView/route.json +2 -1
  184. package/src/modules/catalog/services/AttributeCollection.js +10 -10
  185. package/src/modules/catalog/services/AttributeGroupCollection.js +10 -10
  186. package/src/modules/catalog/services/CategoryCollection.js +10 -10
  187. package/src/modules/catalog/services/CollectionCollection.js +10 -10
  188. package/src/modules/catalog/services/registerCartItemProductUrlField.js +35 -0
  189. package/src/modules/catalog/services/registerCartItemVariantOptionsField.js +51 -0
  190. package/src/modules/catalog/services/registerDefaultCategoryCollectionFilters.js +16 -0
  191. package/src/modules/checkout/api/addShippingNote/[context]bodyParser[auth].js +5 -0
  192. package/src/modules/checkout/api/addShippingNote/payloadSchema.json +15 -0
  193. package/src/modules/checkout/api/addShippingNote/route.json +5 -0
  194. package/src/modules/checkout/api/addShippingNote/saveShippingNote.js +50 -0
  195. package/src/modules/checkout/api/createCart/createNewCart.js +28 -3
  196. package/src/modules/checkout/api/updateCartItemQty/[bodyParser]updateQty.js +49 -0
  197. package/src/modules/checkout/api/updateCartItemQty/[context]bodyParser[auth].js +5 -0
  198. package/src/modules/checkout/api/updateCartItemQty/payloadSchema.json +21 -0
  199. package/src/modules/checkout/api/updateCartItemQty/route.json +5 -0
  200. package/src/modules/checkout/api/updateMineCartItemQty/[context]bodyParser[auth].js +5 -0
  201. package/src/modules/checkout/api/updateMineCartItemQty/[detectCurrentCart]updateQty.js +51 -0
  202. package/src/modules/checkout/api/updateMineCartItemQty/[getCurrentCustomer]detectCurrentCart.js +32 -0
  203. package/src/modules/checkout/api/updateMineCartItemQty/payloadSchema.json +21 -0
  204. package/src/modules/checkout/api/updateMineCartItemQty/route.json +5 -0
  205. package/src/modules/checkout/bootstrap.js +27 -0
  206. package/src/modules/checkout/graphql/types/Cart/Cart.graphql +22 -3
  207. package/src/modules/checkout/graphql/types/Cart/Cart.resolvers.js +18 -2
  208. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.graphql +3 -0
  209. package/src/modules/checkout/graphql/types/CheckoutSetting/CheckoutSetting.resolvers.js +7 -0
  210. package/src/modules/checkout/migration/Version-1.0.0.js +14 -0
  211. package/src/modules/checkout/migration/Version-1.0.6.js +201 -0
  212. package/src/modules/checkout/pages/admin/shippingSetting/ShippingSetting.jsx +2 -2
  213. package/src/modules/checkout/pages/frontStore/all/[context]detectCurrentCart[auth].js +5 -0
  214. package/src/modules/checkout/pages/frontStore/cart/ShoppingCart.jsx +20 -12
  215. package/src/modules/checkout/pages/frontStore/cart/Summary.jsx +34 -23
  216. package/src/modules/checkout/pages/frontStore/cart/route.json +2 -1
  217. package/src/modules/checkout/pages/frontStore/checkout/Checkout.jsx +5 -5
  218. package/src/modules/checkout/pages/frontStore/checkout/Checkout.scss +4 -0
  219. package/src/modules/checkout/pages/frontStore/checkout/ShippingMethods.jsx +2 -2
  220. package/src/modules/checkout/pages/frontStore/checkout/ShippingNote.jsx +105 -0
  221. package/src/modules/checkout/pages/frontStore/checkout/Summary.jsx +14 -14
  222. package/src/modules/checkout/pages/frontStore/checkout/SummaryMobile.jsx +12 -15
  223. package/src/modules/checkout/pages/frontStore/checkout/route.json +2 -1
  224. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.jsx +1 -1
  225. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CheckoutSuccess.scss +4 -0
  226. package/src/modules/checkout/pages/frontStore/checkoutSuccess/CustomerInfo.jsx +30 -32
  227. package/src/modules/checkout/pages/frontStore/checkoutSuccess/ShippingNote.jsx +47 -0
  228. package/src/modules/checkout/pages/frontStore/checkoutSuccess/Summary.jsx +12 -15
  229. package/src/modules/checkout/pages/frontStore/checkoutSuccess/route.json +2 -1
  230. package/src/modules/checkout/services/cart/Cart.js +31 -27
  231. package/src/modules/checkout/services/cart/registerCartBaseFields.js +133 -41
  232. package/src/modules/checkout/services/cart/registerCartItemBaseFields.js +300 -374
  233. package/src/modules/checkout/services/toPrice.js +1 -1
  234. package/src/modules/checkout/tests/basicSetup.js +85 -0
  235. package/src/modules/checkout/tests/coupons.js +82 -0
  236. package/src/modules/checkout/tests/products.js +67 -0
  237. package/src/modules/checkout/tests/taxRates.js +3 -0
  238. package/src/modules/checkout/tests/unit/discountAmount.test.js +60 -0
  239. package/src/modules/checkout/tests/unit/grandTotal.test.js +83 -0
  240. package/src/modules/checkout/tests/unit/lineTotal.test.js +92 -0
  241. package/src/modules/checkout/tests/unit/lineTotalWithDiscount.test.js +103 -0
  242. package/src/modules/checkout/tests/unit/productPrice.test.js +69 -0
  243. package/src/modules/checkout/tests/unit/subTotal.test.js +85 -0
  244. package/src/modules/checkout/tests/unit/subTotalWithDiscount.test.js +117 -0
  245. package/src/modules/checkout/tests/unit/taxAmount.test.js +68 -0
  246. package/src/modules/checkout/tests/unit/taxAmountRounding.test.js +277 -0
  247. package/src/modules/cms/api/createWidget/[context]bodyParser[auth].js +5 -0
  248. package/src/modules/cms/api/createWidget/createWidget[finish].js +17 -0
  249. package/src/modules/cms/api/createWidget/finish[apiResponse].js +27 -0
  250. package/src/modules/cms/api/createWidget/payloadSchema.json +18 -0
  251. package/src/modules/cms/api/createWidget/route.json +5 -0
  252. package/src/modules/cms/api/deleteWidget/deleteWidget.js +27 -0
  253. package/src/modules/cms/api/deleteWidget/route.json +5 -0
  254. package/src/modules/cms/api/updateWidget/[context]bodyParser[auth].js +5 -0
  255. package/src/modules/cms/api/updateWidget/finish[apiResponse].js +27 -0
  256. package/src/modules/cms/api/updateWidget/payloadSchema.json +18 -0
  257. package/src/modules/cms/api/updateWidget/route.json +5 -0
  258. package/src/modules/cms/api/updateWidget/updateWidget[finish].js +17 -0
  259. package/src/modules/cms/bootstrap.js +223 -3
  260. package/src/modules/cms/graphql/types/CmsPage/CmsPage.graphql +1 -2
  261. package/src/modules/cms/graphql/types/CmsPage/CmsPage.resolvers.js +35 -1
  262. package/src/modules/cms/graphql/types/Widget/Widget.graphql +91 -0
  263. package/src/modules/cms/graphql/types/Widget/Widget.resolvers.js +142 -0
  264. package/src/modules/cms/migration/Version-1.1.0.js +22 -0
  265. package/src/modules/cms/migration/Version-1.1.1.js +103 -0
  266. package/src/modules/cms/pages/admin/adminNotFound/NotFound.jsx +4 -4
  267. package/src/modules/cms/pages/admin/all/CmsMenuGroup.jsx +12 -4
  268. package/src/modules/cms/pages/admin/all/Notification.scss +1 -1
  269. package/src/modules/cms/pages/admin/all/search/NoResult.jsx +2 -2
  270. package/src/modules/cms/pages/admin/all/search/Results.jsx +3 -3
  271. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/FormContent.jsx +7 -9
  272. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/General.jsx +3 -3
  273. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Seo.jsx +1 -1
  274. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/Status.jsx +40 -0
  275. package/src/modules/cms/pages/admin/cmsPageGrid/Grid.jsx +3 -4
  276. package/src/modules/cms/pages/admin/dashboard/Layout.jsx +3 -3
  277. package/src/modules/cms/pages/admin/widgetEdit/WidgetForm.jsx +52 -0
  278. package/src/modules/cms/pages/admin/widgetEdit/index.js +36 -0
  279. package/src/modules/cms/pages/admin/widgetEdit/route.json +4 -0
  280. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.jsx +69 -0
  281. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/FormContent.scss +7 -0
  282. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/General.jsx +185 -0
  283. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/PageHeading.jsx +37 -0
  284. package/src/modules/cms/pages/admin/widgetEdit+widgetNew/Setting.jsx +55 -0
  285. package/src/modules/cms/pages/admin/widgetGrid/Grid.jsx +415 -0
  286. package/src/modules/cms/pages/admin/widgetGrid/Heading.jsx +11 -0
  287. package/src/modules/cms/pages/admin/widgetGrid/NewWidgetButton.jsx +52 -0
  288. package/src/modules/cms/pages/admin/widgetGrid/index.js +15 -0
  289. package/src/modules/cms/pages/admin/widgetGrid/route.json +4 -0
  290. package/src/modules/cms/pages/admin/widgetNew/WidgetNewForm.jsx +60 -0
  291. package/src/modules/cms/pages/admin/widgetNew/index.js +11 -0
  292. package/src/modules/cms/pages/admin/widgetNew/route.json +4 -0
  293. package/src/modules/cms/pages/admin/widgetNew/typeValidate.js +21 -0
  294. package/src/modules/cms/pages/frontStore/all/Breadcrumb.jsx +1 -1
  295. package/src/modules/cms/pages/frontStore/all/Footer.jsx +2 -2
  296. package/src/modules/cms/pages/frontStore/all/Layout.jsx +3 -3
  297. package/src/modules/cms/pages/frontStore/all/Layout.scss +13 -0
  298. package/src/modules/cms/pages/frontStore/all/Logo.jsx +2 -2
  299. package/src/modules/cms/pages/frontStore/all/Logo.scss +2 -4
  300. package/src/modules/cms/pages/frontStore/all/Notification.scss +1 -1
  301. package/src/modules/cms/pages/frontStore/cmsPageView/Layout.jsx +2 -2
  302. package/src/modules/cms/pages/frontStore/cmsPageView/View.jsx +5 -3
  303. package/src/modules/cms/pages/frontStore/cmsPageView/index.js +6 -12
  304. package/src/modules/cms/pages/frontStore/cmsPageView/route.json +2 -1
  305. package/src/modules/cms/pages/frontStore/homepage/route.json +2 -1
  306. package/src/modules/cms/pages/frontStore/notFound/NotFound.jsx +4 -4
  307. package/src/modules/cms/pages/frontStore/notFound/route.json +2 -1
  308. package/src/modules/cms/pages/frontStore/staticAsset/[context]staticAssets[auth].js +1 -1
  309. package/src/modules/cms/services/CMSPageCollection.js +10 -10
  310. package/src/modules/cms/services/WidgetCollection.js +62 -0
  311. package/src/modules/cms/services/getWidgetsBaseQuery.js +7 -0
  312. package/src/modules/cms/services/page/createPage.js +1 -2
  313. package/src/modules/cms/services/page/pageDataSchema.json +0 -4
  314. package/src/modules/cms/services/registerDefaultWidgetCollectionFilters.js +62 -0
  315. package/src/modules/cms/services/tailwind.admin.config.js +22 -107
  316. package/src/modules/cms/services/tailwind.frontStore.config.js +23 -108
  317. package/src/modules/cms/services/widget/createWidget.js +73 -0
  318. package/src/modules/cms/services/widget/deleteWidget.js +49 -0
  319. package/src/modules/cms/services/widget/loadWidgetInstances.js +54 -0
  320. package/src/modules/cms/services/widget/updateWidget.js +86 -0
  321. package/src/modules/cms/services/widget/widgetDataSchema.json +29 -0
  322. package/src/modules/cod/pages/admin/paymentSetting/CODSetting.jsx +2 -2
  323. package/src/modules/cod/pages/frontStore/checkout/CashOnDelivery.jsx +1 -1
  324. package/src/modules/customer/bootstrap.js +21 -4
  325. package/src/modules/customer/pages/admin/customerEdit/CustomerEditForm.jsx +3 -3
  326. package/src/modules/customer/pages/admin/customerEdit+customerNew/OrderHistory.jsx +1 -1
  327. package/src/modules/customer/pages/admin/customerGrid/Grid.jsx +3 -3
  328. package/src/modules/customer/pages/frontStore/account/AccountDetails.jsx +3 -3
  329. package/src/modules/customer/pages/frontStore/account/Layout.jsx +3 -3
  330. package/src/modules/customer/pages/frontStore/account/OrderHistory.jsx +1 -1
  331. package/src/modules/customer/pages/frontStore/account/route.json +2 -1
  332. package/src/modules/customer/pages/frontStore/login/LoginForm.jsx +2 -2
  333. package/src/modules/customer/pages/frontStore/login/route.json +2 -1
  334. package/src/modules/customer/pages/frontStore/register/RegisterForm.jsx +2 -2
  335. package/src/modules/customer/pages/frontStore/register/route.json +2 -1
  336. package/src/modules/customer/pages/frontStore/resetPasswordPage/ResetPasswordForm.jsx +2 -2
  337. package/src/modules/customer/pages/frontStore/resetPasswordPage/route.json +2 -1
  338. package/src/modules/customer/pages/frontStore/updatePasswordPage/UpdatePasswordForm.jsx +3 -3
  339. package/src/modules/customer/pages/frontStore/updatePasswordPage/route.json +2 -1
  340. package/src/modules/customer/services/CustomerCollection.js +10 -10
  341. package/src/modules/customer/services/CustomerGroupCollection.js +10 -10
  342. package/src/modules/graphql/pages/global/[bodyParser]buildQuery[graphql].js +241 -6
  343. package/src/modules/graphql/pages/global/[buildQuery]graphql[notification].js +12 -8
  344. package/src/modules/oms/bootstrap.js +87 -3
  345. package/src/modules/oms/graphql/types/Order/Order.graphql +11 -2
  346. package/src/modules/oms/graphql/types/Order/Order.resolvers.js +7 -1
  347. package/src/modules/oms/pages/admin/dashboard/Bestsellers.jsx +2 -2
  348. package/src/modules/oms/pages/admin/dashboard/Lifetimesales.jsx +5 -5
  349. package/src/modules/oms/pages/admin/orderEdit/AddTrackingButton.jsx +1 -1
  350. package/src/modules/oms/pages/admin/orderEdit/Items.jsx +7 -7
  351. package/src/modules/oms/pages/admin/orderEdit/Layout.jsx +3 -3
  352. package/src/modules/oms/pages/admin/orderEdit/Payment.jsx +6 -6
  353. package/src/modules/oms/pages/admin/orderEdit/ShipButton.jsx +1 -1
  354. package/src/modules/oms/pages/admin/orderGrid/Grid.jsx +3 -3
  355. package/src/modules/oms/services/OrderCollection.js +10 -10
  356. package/src/modules/paypal/api/paypalCreateOrder/[bodyParser]createOrder.js +55 -24
  357. package/src/modules/paypal/pages/admin/paymentSetting/PaypalSetting.jsx +6 -6
  358. package/src/modules/paypal/pages/frontStore/checkout/Paypal.jsx +3 -4
  359. package/src/modules/promotion/bootstrap.js +19 -101
  360. package/src/modules/promotion/pages/admin/couponEdit+couponNew/DiscountType.jsx +1 -1
  361. package/src/modules/promotion/pages/admin/couponEdit+couponNew/FormContent.jsx +5 -5
  362. package/src/modules/promotion/pages/admin/couponGrid/Grid.jsx +3 -3
  363. package/src/modules/promotion/pages/frontStore/cart/Coupon.jsx +2 -2
  364. package/src/modules/promotion/services/CouponCollection.js +10 -10
  365. package/src/modules/promotion/services/couponValidator.js +4 -7
  366. package/src/modules/promotion/services/discountCalculator.js +2 -7
  367. package/src/modules/promotion/services/registerCartItemPromotionFields.js +80 -0
  368. package/src/modules/promotion/services/registerCartPromotionFields.js +128 -0
  369. package/src/modules/promotion/services/registerDefaultCalculators.js +48 -20
  370. package/src/modules/promotion/services/registerDefaultValidators.js +16 -4
  371. package/src/modules/setting/pages/admin/paymentSetting/PaymentSetting.jsx +2 -2
  372. package/src/modules/setting/pages/admin/storeSetting/StoreSetting.jsx +98 -35
  373. package/src/modules/stripe/pages/admin/paymentSetting/StripePayment.jsx +5 -5
  374. package/src/modules/stripe/pages/frontStore/checkout/Stripe.jsx +1 -1
  375. package/src/modules/tax/bootstrap.js +40 -5
  376. package/src/modules/tax/graphql/types/Product/Price/ProductPrice.resolvers.js +6 -39
  377. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.graphql +1 -2
  378. package/src/modules/tax/graphql/types/TaxSetting/TaxSetting.resolvers.js +1 -8
  379. package/src/modules/tax/pages/admin/taxSetting/TaxSetting.jsx +4 -4
  380. package/src/modules/tax/services/TaxClassCollection.js +10 -10
  381. package/src/modules/tax/services/calculateTaxAmount.js +12 -9
  382. package/src/modules/tax/services/registerCartItemTaxPercentField.js +76 -0
  383. package/src/modules/auth/services/adminSessionMiddleware.js +0 -0
  384. package/src/modules/catalog/pages/frontStore/homepage/FeaturedCategories.jsx +0 -58
  385. package/src/modules/cms/pages/admin/cmsPageEdit+cmsPageNew/StatusAndLayout.jsx +0 -61
  386. package/src/modules/cms/pages/frontStore/all/Menu.jsx +0 -46
  387. package/src/modules/cms/pages/frontStore/all/Menu.scss +0 -7
  388. package/src/modules/cms/pages/frontStore/all/MobileMenu.jsx +0 -73
  389. package/src/modules/cms/pages/frontStore/all/MobileMenu.scss +0 -35
  390. package/src/modules/cms/pages/frontStore/homepage/MainBanner.jsx +0 -31
  391. package/src/modules/cms/pages/frontStore/homepage/MainBanner.scss +0 -48
@@ -39,7 +39,7 @@ export default function Attributes({ product, groups: { items } }) {
39
39
  value={currentGroup.groupId}
40
40
  name="group_id"
41
41
  />
42
- <div className="border rounded border-divider p-1">
42
+ <div className="border rounded border-divider p-4">
43
43
  <span>{currentGroup.groupName}</span>
44
44
  </div>
45
45
  <div className="italic text-textSubdued">
@@ -254,7 +254,7 @@ export const layout = {
254
254
  };
255
255
 
256
256
  export const query = `
257
- query Query {
257
+ query Query ($filters: [FilterInput!]) {
258
258
  product(id: getContextValue("productId", null)) {
259
259
  groupId
260
260
  variantGroupId
@@ -264,7 +264,7 @@ export const query = `
264
264
  optionText
265
265
  }
266
266
  },
267
- groups: attributeGroups {
267
+ groups: attributeGroups(filters: $filters) {
268
268
  items {
269
269
  groupId: attributeGroupId
270
270
  groupName
@@ -285,3 +285,8 @@ export const query = `
285
285
  }
286
286
  }
287
287
  `;
288
+
289
+ export const variables = `
290
+ {
291
+ filters: [{ key: "limit", operation: 'eq', value: 1000 }]
292
+ }`;
@@ -68,7 +68,7 @@ export default function CustomOption() {
68
68
  } = option;
69
69
  return (
70
70
  <Card.Session key={option_id} title={option_name || 'New option'} actions={[{ variant: 'critical', name: 'Remove option', onAction: () => { removeOption(option_id); } }]}>
71
- <div className="grid grid-cols-3 gap-1 mb-1">
71
+ <div className="grid grid-cols-3 gap-4 mb-4">
72
72
  <div>
73
73
  <Field
74
74
  name={`options[${option_id}][option_name]`}
@@ -99,7 +99,7 @@ export default function CustomOption() {
99
99
  />
100
100
  </div>
101
101
  </div>
102
- <div className="mb-1">
102
+ <div className="mb-4">
103
103
  <Field
104
104
  name={`options[${option_id}][is_required]`}
105
105
  isChecked={parseInt(is_required, 10) === 1}
@@ -109,7 +109,7 @@ export default function CustomOption() {
109
109
  />
110
110
  </div>
111
111
  <Card.Session title="Option values" actions={[{ variant: 'interactive', name: 'Add value', onAction: () => { addCustomOptionValue(option_id); } }]}>
112
- <div className="grid grid-cols-4 gap-1 mt-05">
112
+ <div className="grid grid-cols-4 gap-4 mt-2">
113
113
  <div>Value</div>
114
114
  <div>Extra Price</div>
115
115
  <div>Sort Order</div>
@@ -121,7 +121,7 @@ export default function CustomOption() {
121
121
  value_id, option_id, extra_price, sort_order, value
122
122
  } = val;
123
123
  return (
124
- <div key={val.value_id} className="grid-cols-4 grid gap-1 mb-05">
124
+ <div key={val.value_id} className="grid-cols-4 grid gap-4 mb-2">
125
125
  <div>
126
126
  <Field
127
127
  name={`options[${option_id}][values][${value_id}][value]`}
@@ -9,15 +9,15 @@ export default function FormContent({ gridUrl }) {
9
9
  const { state } = useFormContext();
10
10
  return (
11
11
  <>
12
- <div className="grid grid-cols-3 gap-x-2 grid-flow-row ">
13
- <div className="col-span-2 grid grid-cols-1 gap-2 auto-rows-max">
12
+ <div className="grid grid-cols-3 gap-x-8 grid-flow-row ">
13
+ <div className="col-span-2 grid grid-cols-1 gap-8 auto-rows-max">
14
14
  <Area id="leftSide" noOuter />
15
15
  </div>
16
- <div className="col-span-1 grid grid-cols-1 gap-2 auto-rows-max">
16
+ <div className="col-span-1 grid grid-cols-1 gap-8 auto-rows-max">
17
17
  <Area id="rightSide" noOuter />
18
18
  </div>
19
19
  </div>
20
- <div className="form-submit-button flex border-t border-divider mt-15 pt-15 justify-between">
20
+ <div className="form-submit-button flex border-t border-divider mt-6 pt-6 justify-between">
21
21
  <Button
22
22
  title="Cancel"
23
23
  variant="critical"
@@ -3,12 +3,12 @@ import React from 'react';
3
3
  import Area from '@components/common/Area';
4
4
  import { Field } from '@components/common/form/Field';
5
5
  import { Card } from '@components/admin/cms/Card';
6
- import CkeditorField from '@components/common/form/fields/Ckeditor';
7
6
  import CategoryTree from '@components/admin/catalog/productEdit/category/CategoryTree';
7
+ import Editor from '@components/common/form/fields/Editor';
8
8
 
9
9
  function SKUPriceWeight({ sku, price, weight, setting }) {
10
10
  return (
11
- <div className="grid grid-cols-3 gap-1 mt-15">
11
+ <div className="grid grid-cols-3 gap-4 mt-6">
12
12
  <div>
13
13
  <Field
14
14
  id="sku"
@@ -71,17 +71,17 @@ function Category({ product }) {
71
71
  );
72
72
 
73
73
  return (
74
- <div className="mt-15 relative">
75
- <div className="mb-1">Category</div>
74
+ <div className="mt-6 relative">
75
+ <div className="mb-4">Category</div>
76
76
  {category && (
77
- <div className="border rounded border-[#c9cccf] mb-1 p-1">
77
+ <div className="border rounded border-[#c9cccf] mb-4 p-4">
78
78
  {category.path.map((item, index) => (
79
79
  <span key={item.name} className="text-gray-500">
80
80
  {item.name}
81
81
  {index < category.path.length - 1 && ' > '}
82
82
  </span>
83
83
  ))}
84
- <span className="text-interactive pl-2">
84
+ <span className="text-interactive pl-8">
85
85
  <a
86
86
  href="#"
87
87
  onClick={(e) => {
@@ -97,7 +97,7 @@ function Category({ product }) {
97
97
  e.preventDefault();
98
98
  setCategory(null);
99
99
  }}
100
- className="text-critical ml-2"
100
+ className="text-critical ml-8"
101
101
  >
102
102
  Unassign
103
103
  </a>
@@ -117,15 +117,13 @@ function Category({ product }) {
117
117
  </a>
118
118
  )}
119
119
  {selecting && (
120
- <div className="absolute top-5 left-0 right-0 bg-[#eff2f5] z-50 border rounded border-[#c9cccf] p-[10px]">
121
- <CategoryTree
122
- selectedCategory={category}
123
- setSelectedCategory={(cat) => {
124
- setCategory(cat);
125
- setSelecting(false);
126
- }}
127
- />
128
- </div>
120
+ <CategoryTree
121
+ selectedCategory={category}
122
+ setSelectedCategory={(cat) => {
123
+ setCategory(cat);
124
+ setSelecting(false);
125
+ }}
126
+ />
129
127
  )}
130
128
  {category && (
131
129
  <input type="hidden" name="category_id" value={category?.categoryId} />
@@ -229,7 +227,7 @@ export default function General({
229
227
  id: 'tax_class'
230
228
  },
231
229
  {
232
- component: { default: CkeditorField },
230
+ component: { default: Editor },
233
231
  props: {
234
232
  id: 'description',
235
233
  name: 'description',
@@ -124,7 +124,7 @@ function Actions({ products = [], selectedIds = [] }) {
124
124
  {selectedIds.length > 0 && (
125
125
  <td style={{ borderTop: 0 }} colSpan="100">
126
126
  <div className="inline-flex border border-divider rounded justify-items-start">
127
- <a href="#" className="font-semibold pt-075 pb-075 pl-15 pr-15">
127
+ <a href="#" className="font-semibold pt-3 pb-3 pl-6 pr-6">
128
128
  {selectedIds.length} selected
129
129
  </a>
130
130
  {actions.map((action) => (
@@ -134,7 +134,7 @@ function Actions({ products = [], selectedIds = [] }) {
134
134
  e.preventDefault();
135
135
  action.onAction();
136
136
  }}
137
- className="font-semibold pt-075 pb-075 pl-15 pr-15 block border-l border-divider self-center"
137
+ className="font-semibold pt-3 pb-3 pl-6 pr-6 block border-l border-divider self-center"
138
138
  >
139
139
  <span>{action.name}</span>
140
140
  </a>
@@ -174,7 +174,7 @@ export default function ProductGrid({
174
174
  <Card.Session
175
175
  title={
176
176
  <Form submitBtn={false}>
177
- <div className="flex gap-2 justify-center items-center">
177
+ <div className="flex gap-8 justify-center items-center">
178
178
  <Area
179
179
  id="productGridFilter"
180
180
  noOuter
@@ -15,9 +15,9 @@ export default function SearchInfo() {
15
15
 
16
16
  return (
17
17
  <div className="page-width">
18
- <div className="mb-1 md:mb-2">
18
+ <div className="mb-4 md:mb-8">
19
19
  <div className="text-left ">
20
- <h1 className="search-name mt-25">
20
+ <h1 className="search-name mt-10">
21
21
  {_('Search results for "${keyword}"', { keyword: key })}
22
22
  </h1>
23
23
  </div>
@@ -7,7 +7,7 @@ export default function Products({ products: { items } }) {
7
7
  return (
8
8
  <div>
9
9
  <ProductList products={items} countPerRow={4} />
10
- <span className="product-count italic block mt-2">
10
+ <span className="product-count italic block mt-8">
11
11
  {_('${count} products', { count: items.length })}
12
12
  </span>
13
13
  </div>
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "methods": ["GET"],
3
- "path": "/search"
3
+ "path": "/search",
4
+ "name": "Catalog search page"
4
5
  }
@@ -1,16 +1,33 @@
1
1
  import React from 'react';
2
+ import PropTypes from 'prop-types';
2
3
  import Area from '@components/common/Area';
3
4
 
4
- export default function CategoryView() {
5
+ export default function CategoryView({ category }) {
6
+ if (!category.showProducts) {
7
+ return null;
8
+ }
5
9
  return (
6
- <div className="page-width grid grid-cols-1 md:grid-cols-4 gap-2">
10
+ <div className="page-width grid grid-cols-1 md:grid-cols-4 gap-8">
7
11
  <Area id="leftColumn" className="md:col-span-1" />
8
12
  <Area id="rightColumn" className="md:col-span-3" />
9
13
  </div>
10
14
  );
11
15
  }
12
16
 
17
+ CategoryView.propTypes = {
18
+ category: PropTypes.shape({
19
+ showProducts: PropTypes.number
20
+ }).isRequired
21
+ };
22
+
13
23
  export const layout = {
14
24
  areaId: 'content',
15
25
  sortOrder: 10
16
26
  };
27
+
28
+ export const query = `
29
+ query Query {
30
+ category(id: getContextValue('categoryId')) {
31
+ showProducts
32
+ }
33
+ }`;
@@ -132,6 +132,7 @@ input[type='range']:nth-child(1)::-webkit-slider-thumb {
132
132
  background-color: #fff;
133
133
  padding: 20px;
134
134
  box-sizing: border-box;
135
+ overflow: auto;
135
136
  }
136
137
 
137
138
  .filter-opener,
@@ -2,23 +2,21 @@
2
2
  import React from 'react';
3
3
  import PropTypes from 'prop-types';
4
4
  import './General.scss';
5
- import { CKEditor } from '@components/common/CKEditor';
5
+ import Editor from '@components/common/Editor';
6
6
 
7
7
  export default function CategoryInfo({
8
8
  category: { name, description, image }
9
9
  }) {
10
10
  return (
11
11
  <div className="page-width">
12
- <div className="mb-1 md:mb-2 category__general">
12
+ <div className="mb-4 md:mb-8 category__general">
13
13
  {image && (
14
14
  <img src={image.url} alt={name} className="category__image" />
15
15
  )}
16
- <div className="category__info">
17
- <div>
18
- <h1 className="category__name">{name}</h1>
19
- <div className="category__description">
20
- <CKEditor content={description} />
21
- </div>
16
+ <div className="category__info prose prose-base max-w-none">
17
+ <h1 className="category__name">{name}</h1>
18
+ <div className="category__description">
19
+ <Editor rows={description} />
22
20
  </div>
23
21
  </div>
24
22
  </div>
@@ -20,8 +20,6 @@
20
20
  padding: 50px;
21
21
  }
22
22
  .category__info {
23
- color: black;
24
- display: flex;
25
23
  align-items: center;
26
24
  }
27
25
  }
@@ -4,9 +4,13 @@ import { Pagination } from '@components/frontStore/catalog/product/list/Paginati
4
4
 
5
5
  export default function PaginationWrapper({
6
6
  products: {
7
+ showProducts,
7
8
  products: { total, currentFilters }
8
9
  }
9
10
  }) {
11
+ if (!showProducts) {
12
+ return null;
13
+ }
10
14
  const page = currentFilters.find((filter) => filter.key === 'page');
11
15
  const limit = currentFilters.find((filter) => filter.key === 'limit');
12
16
 
@@ -21,6 +25,7 @@ export default function PaginationWrapper({
21
25
 
22
26
  PaginationWrapper.propTypes = {
23
27
  products: PropTypes.shape({
28
+ showProducts: PropTypes.number.isRequired,
24
29
  products: PropTypes.shape({
25
30
  total: PropTypes.number.isRequired,
26
31
  currentFilters: PropTypes.arrayOf(
@@ -42,6 +47,7 @@ export const layout = {
42
47
  export const query = `
43
48
  query Query($filters: [FilterInput]) {
44
49
  products: category(id: getContextValue('categoryId')) {
50
+ showProducts
45
51
  products(filters: $filters) {
46
52
  total
47
53
  currentFilters {
@@ -5,13 +5,17 @@ import { _ } from '@evershop/evershop/src/lib/locale/translate';
5
5
 
6
6
  export default function Products({
7
7
  products: {
8
+ showProducts,
8
9
  products: { items }
9
10
  }
10
11
  }) {
12
+ if (!showProducts) {
13
+ return null;
14
+ }
11
15
  return (
12
16
  <div>
13
17
  <ProductList products={items} countPerRow={3} />
14
- <span className="product-count italic block mt-2">
18
+ <span className="product-count italic block mt-8">
15
19
  {_('${count} products', { count: items.length })}
16
20
  </span>
17
21
  </div>
@@ -20,6 +24,7 @@ export default function Products({
20
24
 
21
25
  Products.propTypes = {
22
26
  products: PropTypes.shape({
27
+ showProducts: PropTypes.number,
23
28
  products: PropTypes.shape({
24
29
  items: PropTypes.arrayOf(
25
30
  PropTypes.shape({
@@ -48,6 +53,7 @@ Products.propTypes = {
48
53
 
49
54
  Products.defaultProps = {
50
55
  products: {
56
+ showProducts: 1,
51
57
  products: {
52
58
  items: []
53
59
  }
@@ -62,6 +68,7 @@ export const layout = {
62
68
  export const query = `
63
69
  query Query($filters: [FilterInput]) {
64
70
  products: category(id: getContextValue('categoryId')) {
71
+ showProducts
65
72
  products(filters: $filters) {
66
73
  items {
67
74
  ...Product
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "methods": ["GET"],
3
- "path": "/category/:uuid"
3
+ "path": "/category/:uuid",
4
+ "name": "Category page"
4
5
  }
@@ -1,13 +1,13 @@
1
1
  /* eslint-disable react/no-danger */
2
- import { CKEditor } from '@components/common/CKEditor';
2
+ import Editor from '@components/common/Editor';
3
3
  import PropTypes from 'prop-types';
4
4
  import React from 'react';
5
5
 
6
6
  export default function Description({ product: { description } }) {
7
7
  return (
8
- <div className="mt-2 md:mt-3">
8
+ <div className="mt-8 md:mt-12">
9
9
  <div className="product-description">
10
- <CKEditor content={description} />
10
+ <Editor rows={description} />
11
11
  </div>
12
12
  </div>
13
13
  );
@@ -15,7 +15,18 @@ export default function Description({ product: { description } }) {
15
15
 
16
16
  Description.propTypes = {
17
17
  product: PropTypes.shape({
18
- description: PropTypes.string
18
+ description: PropTypes.arrayOf(
19
+ PropTypes.shape({
20
+ size: PropTypes.number.isRequired,
21
+ columns: PropTypes.arrayOf(
22
+ PropTypes.shape({
23
+ size: PropTypes.number.isRequired,
24
+ // eslint-disable-next-line react/forbid-prop-types
25
+ data: PropTypes.object
26
+ })
27
+ ).isRequired
28
+ })
29
+ ).isRequired
19
30
  }).isRequired
20
31
  };
21
32
 
@@ -86,7 +86,7 @@ ToastMessage.propTypes = {
86
86
 
87
87
  function AddToCart({ stockAvaibility, loading = false, error }) {
88
88
  return (
89
- <div className="add-to-cart mt-2">
89
+ <div className="add-to-cart mt-8">
90
90
  <div style={{ width: '8rem' }}>
91
91
  <Field
92
92
  type="text"
@@ -98,8 +98,8 @@ function AddToCart({ stockAvaibility, loading = false, error }) {
98
98
  formId="productForm"
99
99
  />
100
100
  </div>
101
- {error && <div className="text-critical mt-1">{error}</div>}
102
- <div className="mt-1">
101
+ {error && <div className="text-critical mt-4">{error}</div>}
102
+ <div className="mt-4">
103
103
  {stockAvaibility === true && (
104
104
  <Button
105
105
  title={_('ADD TO CART')}
@@ -211,7 +211,7 @@ ProductForm.propTypes = {
211
211
 
212
212
  export const layout = {
213
213
  areaId: 'productPageMiddleRight',
214
- sortOrder: 20
214
+ sortOrder: 45
215
215
  };
216
216
 
217
217
  export const query = `
@@ -21,6 +21,7 @@
21
21
  padding: 2rem;
22
22
  border: 1px solid var(--divider);
23
23
  box-shadow: 1px 1px 10px 2px #ebebeb80;
24
+ background-color: #fff;
24
25
  .top-head {
25
26
  grid-template-columns: 4fr 1fr;
26
27
  padding-bottom: 1rem;
@@ -10,7 +10,7 @@ export default function GeneralInfo({ product }) {
10
10
  return (
11
11
  <Area
12
12
  id="productViewGeneralInfo"
13
- className="flex flex-col gap-1"
13
+ className="flex flex-col gap-4"
14
14
  coreComponents={[
15
15
  {
16
16
  component: { default: Name },
@@ -51,7 +51,7 @@ export default function Images({ product: { uuid, image, gallery = [] } }) {
51
51
  return (
52
52
  <div className="product-single-media">
53
53
  <Current image={current} />
54
- <ul className="more-view-thumbnail product-gallery mt-2 grid grid-cols-4 gap-1">
54
+ <ul className="more-view-thumbnail product-gallery mt-8 grid grid-cols-4 gap-4">
55
55
  {thumbs.map((i, j) => (
56
56
  <li key={j} className="flex justify-center items-center">
57
57
  <a
@@ -6,7 +6,7 @@ export default function ProductPageLayout() {
6
6
  <div className="product-detail">
7
7
  <Area id="productPageTop" className="product-page-top" />
8
8
  <div className="product-page-middle page-width">
9
- <div className="grid grid-cols-1 gap-3 md:grid-cols-2">
9
+ <div className="grid grid-cols-1 gap-12 md:grid-cols-2">
10
10
  <Area id="productPageMiddleLeft" />
11
11
  <Area id="productPageMiddleRight" />
12
12
  </div>
@@ -10,8 +10,8 @@ export default function Options({ options = [] }) {
10
10
  }
11
11
 
12
12
  return (
13
- <div className="product-single-options mt-4 mb-4">
14
- <div className="product-single-options-title mb-2">
13
+ <div className="product-single-options mt-16 mb-16">
14
+ <div className="product-single-options-title mb-8">
15
15
  <strong>Options</strong>
16
16
  </div>
17
17
  {options.map((o, i) => {
@@ -77,7 +77,11 @@ Options.propTypes = {
77
77
  optionName: PropTypes.string,
78
78
  optionType: PropTypes.string
79
79
  })
80
- ).isRequired
80
+ )
81
+ };
82
+
83
+ Options.defaultProps = {
84
+ options: []
81
85
  };
82
86
 
83
87
  export const layout = {
@@ -146,7 +146,7 @@ export default function Variants({
146
146
  };
147
147
 
148
148
  return (
149
- <div className="variant variant-container grid grid-cols-1 gap-1 mt-2">
149
+ <div className="variant variant-container grid grid-cols-1 gap-4 mt-8">
150
150
  {attributes.map((a, i) => {
151
151
  const options = a.options.filter(
152
152
  (v, j, s) =>
@@ -157,17 +157,17 @@ export default function Variants({
157
157
  <input
158
158
  name={`variant_options[${i}][attribute_id]`}
159
159
  type="hidden"
160
- value={a.attributeId}
160
+ value={a.attributeId || ''}
161
161
  />
162
162
  <input
163
163
  name={`variant_options[${i}][optionId]`}
164
164
  type="hidden"
165
- value={a.selectedOption}
165
+ value={a.selectedOption || ''}
166
166
  />
167
- <div className="mb-05 text-textSubdued uppercase">
167
+ <div className="mb-2 text-textSubdued uppercase">
168
168
  <span>{a.attribute_name}</span>
169
169
  </div>
170
- <ul className="variant-option-list flex justify-start gap-05 flex-wrap">
170
+ <ul className="variant-option-list flex justify-start gap-2 flex-wrap">
171
171
  {options.map((o) => {
172
172
  let className = '';
173
173
  if (a.selected && a.selectedOption === o.optionId) {
@@ -240,7 +240,7 @@ Variants.propTypes = {
240
240
 
241
241
  export const layout = {
242
242
  areaId: 'productPageMiddleRight',
243
- sortOrder: 40
243
+ sortOrder: 35
244
244
  };
245
245
 
246
246
  export const query = `
@@ -1,4 +1,5 @@
1
1
  {
2
2
  "methods": ["GET"],
3
- "path": "/product/:uuid"
3
+ "path": "/product/:uuid",
4
+ "name": "Product single page"
4
5
  }
@@ -17,16 +17,16 @@ class AttributeCollection {
17
17
  );
18
18
 
19
19
  attributeCollectionFilters.forEach((filter) => {
20
- const check = filters.find((f) => f.key === filter.key);
21
- if (check) {
22
- if (filter.operation.includes(check.operation)) {
23
- filter.callback(
24
- this.baseQuery,
25
- check.operation,
26
- check.value,
27
- currentFilters
28
- );
29
- }
20
+ const check = filters.find(
21
+ (f) => f.key === filter.key && filter.operation.includes(f.operation)
22
+ );
23
+ if (filter.key === '*' || check) {
24
+ filter.callback(
25
+ this.baseQuery,
26
+ check?.operation,
27
+ check?.value,
28
+ currentFilters
29
+ );
30
30
  }
31
31
  });
32
32
 
@@ -58,16 +58,16 @@ class AttributeGroupCollection {
58
58
  );
59
59
 
60
60
  attributeGroupCollectionFilters.forEach((filter) => {
61
- const check = filters.find((f) => f.key === filter.key);
62
- if (check) {
63
- if (filter.operation.includes(check.operation)) {
64
- filter.callback(
65
- this.baseQuery,
66
- check.operation,
67
- check.value,
68
- currentFilters
69
- );
70
- }
61
+ const check = filters.find(
62
+ (f) => f.key === filter.key && filter.operation.includes(f.operation)
63
+ );
64
+ if (filter.key === '*' || check) {
65
+ filter.callback(
66
+ this.baseQuery,
67
+ check?.operation,
68
+ check?.value,
69
+ currentFilters
70
+ );
71
71
  }
72
72
  });
73
73