@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
@@ -0,0 +1,103 @@
1
+ const { execute } = require('@evershop/postgres-query-builder');
2
+
3
+ // eslint-disable-next-line no-multi-assign
4
+ module.exports = exports = async (connection) => {
5
+ // Drop the layout column in the cms_page table
6
+ await execute(connection, `ALTER TABLE cms_page DROP COLUMN layout`);
7
+
8
+ const query = `
9
+ INSERT INTO widget (name, type, route, area, sort_order, settings, status)
10
+ VALUES ($1, $2, $3, $4, $5, $6, $7)
11
+ `;
12
+ const mainMenu = [
13
+ 'Main menu',
14
+ 'basic_menu',
15
+ '["all"]',
16
+ '["header"]',
17
+ 1,
18
+ JSON.stringify({
19
+ menus: [
20
+ {
21
+ id: 'hanhk3km0m8nt2b',
22
+ // eslint-disable-next-line no-script-url
23
+ url: 'javascript:void(0)',
24
+ name: 'Shop ❤️',
25
+ type: 'custom',
26
+ // eslint-disable-next-line no-script-url
27
+ uuid: 'javascript:void(0)',
28
+ children: [
29
+ {
30
+ id: 'hanhk3km0m8nt2c',
31
+ url: '/men',
32
+ name: 'Men',
33
+ type: 'custom',
34
+ uuid: '/men'
35
+ },
36
+ {
37
+ id: 'hanhk3km0m8nt2d',
38
+ url: '/women',
39
+ name: 'Women',
40
+ type: 'custom',
41
+ uuid: '/women'
42
+ }
43
+ ]
44
+ },
45
+ {
46
+ id: 'hanhk3km0m8nt2e',
47
+ url: '/page/about-us',
48
+ name: 'About us',
49
+ type: 'custom',
50
+ uuid: '/page/about-us',
51
+ children: []
52
+ }
53
+ ],
54
+ isMain: '1',
55
+ className: ''
56
+ }),
57
+ true
58
+ ];
59
+
60
+ await connection.query(query, mainMenu);
61
+
62
+ const featuredCategories = [
63
+ 'Featured categories',
64
+ 'text_block',
65
+ '["homepage"]',
66
+ '["content"]',
67
+ 10,
68
+ JSON.stringify({
69
+ text: '[{"id":"r__c13ffd49-f39e-40d7-8d67-d345c0a018c1","size":3,"columns":[{"id":"c__6dffc7a4-4378-4247-8ffd-07d956ce4939","size":1,"data":{"time":1725357550597,"blocks":[{"id":"PjJh9eW0O7","type":"header","data":{"text":"Kids shoes collection","level":3}},{"id":"CHsT6VaRCw","type":"paragraph","data":{"text":"Constructed from luxury nylons, leathers, and custom hardware, featuring sport details such as hidden breathing vents, waterproof + antimicrobial linings, and more."}},{"id":"-0lRctONo9","type":"raw","data":{"html":"<a href=\\"/kids\\" class=\\"button primary\\"><span>Shop kids</span></a>"}}],"version":"2.30.2"}},{"id":"c__ca76b2e3-65e3-4eb3-83cb-7ffdfba41208","size":1,"data":{"time":1725357550599,"blocks":[{"id":"2K_v3fp7Dd","type":"header","data":{"text":"Women shoes collection","level":3}},{"id":"XiPHWtWbZm","type":"paragraph","data":{"text":"Constructed from luxury nylons, leathers, and custom hardware, featuring sport details such as hidden breathing vents, waterproof + antimicrobial linings, and more."}},{"id":"f9KXlEkYmu","type":"raw","data":{"html":"<a href=\\"/women\\" class=\\"button primary\\"><span>Shop women</span></a>"}}],"version":"2.30.2"}},{"id":"c__2872ebd9-7f79-442b-bade-6c19d74220ef","size":1,"data":{"time":1725357550612,"blocks":[{"id":"mxTqYRjSTw","type":"header","data":{"text":"Men shoes collection","level":3}},{"id":"p-frIk8CU-","type":"paragraph","data":{"text":"Constructed from luxury nylons, leathers, and custom hardware, featuring sport details such as hidden breathing vents, waterproof + antimicrobial linings, and more."}},{"id":"AoCaoHwyWd","type":"raw","data":{"html":"<a href=\\"/men\\" class=\\"button primary\\"><span>Shop men</span></a>"}}],"version":"2.30.2"}}]}]',
70
+ className: 'page-width'
71
+ }),
72
+ true
73
+ ];
74
+
75
+ await connection.query(query, featuredCategories);
76
+
77
+ const featuredProducts = [
78
+ 'Featured Products',
79
+ 'collection_products',
80
+ '["homepage"]',
81
+ '["content"]',
82
+ 20,
83
+ JSON.stringify({ count: 4, collection: 'homepage' }),
84
+ true
85
+ ];
86
+
87
+ await connection.query(query, featuredProducts);
88
+
89
+ const mainBanner = [
90
+ 'Main banner',
91
+ 'text_block',
92
+ '["homepage"]',
93
+ '["content"]',
94
+ 5,
95
+ JSON.stringify({
96
+ text: '[{"id":"r__63dcb2ab-c2a4-40fc-a995-105bf1484b06","size":1,"columns":[{"id":"c__354832f1-6fe1-4845-8cbb-7e094082810e","size":1,"data":{"time":1725374404621,"blocks":[{"id":"KRtRWBBVvm","type":"raw","data":{"html":"&lt;div style=\\"height: 500px; margin-top: -3rem; background: linear-gradient(135deg, #aad3ff, #0056b3); display: flex; align-items: center; justify-content: center;\\"&gt;\\n &lt;div style=\\"display: flex; align-items: center; max-width: 1200px; width: 100%; padding: 0 20px;\\"&gt;\\n &lt;div style=\\"flex: 1; text-align: center;\\"&gt;\\n &lt;svg width=\\"300\\" height=\\"300\\" viewBox=\\"0 0 128 146\\" fill=\\"none\\" xmlns=\\"http://www.w3.org/2000/svg\\" style=\\"fill: #0056b3; color: #0056b3;\\"&gt;\\n &lt;path d=\\"M32.388 18.0772L1.15175 36.1544L1.05206 72.5081L0.985596 108.895L32.4213 127.039C49.7009 137.008 63.9567 145.182 64.1228 145.182C64.289 145.182 72.8956 140.264 83.2966 134.283C93.6644 128.268 107.82 120.127 114.732 116.139L127.26 108.895V101.119V93.3102L126.529 93.7089C126.097 93.9415 111.941 102.083 95.06 111.853C78.1459 121.622 64.156 129.531 63.9567 129.498C63.724 129.431 52.5587 123.051 39.1005 115.275L14.6099 101.152V72.5746V43.9967L25.6756 37.6165C31.7234 34.1274 42.8223 27.7472 50.2991 23.4273C57.7426 19.1073 63.9899 15.585 64.1228 15.585C64.2557 15.585 72.9288 20.5362 83.3963 26.5841L113.902 43.9967L118.713 41.1657L127.26 36.1544L113.902 28.5447C103.334 22.2974 64.3554 -0.033191 64.0231 3.90721e-05C63.8237 3.90721e-05 49.568 8.14142 32.388 18.0772Z\\" fill=\\"#0056b3\\"&gt;&lt;/path&gt;\\n &lt;path d=\\"M96.0237 54.1983C78.9434 64.0677 64.721 72.2423 64.4219 72.3088C64.0896 72.4084 55.7488 67.7562 44.8826 61.509L25.9082 50.543V58.4186L25.9414 66.2609L44.3841 76.8945C54.5193 82.743 63.1591 87.6611 63.5911 87.8272C64.2557 88.0598 68.9079 85.5011 95.5585 70.1156C112.705 60.1798 126.861 51.9719 127.027 51.839C127.16 51.7061 127.227 48.1505 127.194 43.9302L127.094 36.2541L96.0237 54.1983Z\\" fill=\\"#0056b3\\"&gt;&lt;/path&gt;\\n &lt;path d=\\"M123.771 66.7261C121.943 67.7562 107.854 75.8976 92.4349 84.8033C77.0161 93.7089 64.289 100.986 64.1228 100.986C63.9567 100.986 55.3501 96.0683 44.9491 90.0869L26.0744 79.1874L25.9747 86.8303C25.9082 92.6788 26.0079 94.5729 26.307 94.872C26.9383 95.4369 63.7241 116.604 64.1228 116.604C64.4551 116.604 126.496 80.8821 127.027 80.4169C127.16 80.284 127.227 76.7284 127.194 72.4749L127.094 64.7987L123.771 66.7261Z\\" fill=\\"#0056b3\\"&gt;&lt;/path&gt;\\n &lt;/svg&gt;\\n &lt;/div&gt;\\n \\n &lt;div style=\\"flex: 1; text-align: left; padding: 20px;\\"&gt;\\n <h1 style=\\"font-size: 3.5rem; color: #fff;\\">Your Heading Here</h1>\\n &lt;p style=\\"font-size: 1.5rem; color: #fff; margin: 20px 0;\\"&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent ultricies sodales mi, at ornare elit semper ac.&lt;/p&gt;\\n &lt;a href=\\"#\\" style=\\"display: inline-block; padding: 10px 20px; background-color: #fff; color: #0056b3; text-decoration: none; border-radius: 5px; font-weight: bold;\\"&gt;SHOP NOW&lt;/a&gt;\\n &lt;/div&gt;\\n &lt;/div&gt;\\n&lt;/div&gt;\\n"}}],"version":"2.30.2"}}]}]',
97
+ className: ''
98
+ }),
99
+ true
100
+ ];
101
+
102
+ await connection.query(query, mainBanner);
103
+ };
@@ -5,7 +5,7 @@ import Button from '@components/common/form/Button';
5
5
 
6
6
  function Name() {
7
7
  return (
8
- <h1 className="page-name text-center mt-25 mb-15">404 Page Not Found</h1>
8
+ <h1 className="page-name text-center mt-10 mb-6">404 Page Not Found</h1>
9
9
  );
10
10
  }
11
11
 
@@ -13,7 +13,7 @@ function Content({ dashboardUrl }) {
13
13
  return (
14
14
  <div className="page-content">
15
15
  <div className="text-center">The page you requested does not exist.</div>
16
- <div className="mt-2 text-center">
16
+ <div className="mt-8 text-center">
17
17
  <Button title="Back To Dashboard" url={dashboardUrl} outline />
18
18
  </div>
19
19
  </div>
@@ -26,8 +26,8 @@ Content.propTypes = {
26
26
 
27
27
  export default function NotFound({ dashboardUrl }) {
28
28
  return (
29
- <div className="page-width mt-25">
30
- <div className="pt-15">
29
+ <div className="page-width mt-10">
30
+ <div className="pt-6">
31
31
  <Area
32
32
  id="notfound-page"
33
33
  coreComponents={[
@@ -1,18 +1,24 @@
1
1
  import PropTypes from 'prop-types';
2
2
  import React from 'react';
3
- import Icon from '@heroicons/react/solid/esm/DocumentIcon';
3
+ import PageIcon from '@heroicons/react/solid/esm/DocumentIcon';
4
+ import WidgetIcon from '@heroicons/react/solid/esm/PuzzleIcon';
4
5
  import NavigationItemGroup from '@components/admin/cms/NavigationItemGroup';
5
6
 
6
- export default function CmsMenuGroup({ cmsPageGrid }) {
7
+ export default function CmsMenuGroup({ cmsPageGrid, widgetGrid }) {
7
8
  return (
8
9
  <NavigationItemGroup
9
10
  id="cmsMenuGroup"
10
11
  name="CMS"
11
12
  items={[
12
13
  {
13
- Icon,
14
+ Icon: PageIcon,
14
15
  url: cmsPageGrid,
15
16
  title: 'Pages'
17
+ },
18
+ {
19
+ Icon: WidgetIcon,
20
+ url: widgetGrid,
21
+ title: 'Widgets'
16
22
  }
17
23
  ]}
18
24
  />
@@ -20,7 +26,8 @@ export default function CmsMenuGroup({ cmsPageGrid }) {
20
26
  }
21
27
 
22
28
  CmsMenuGroup.propTypes = {
23
- cmsPageGrid: PropTypes.string.isRequired
29
+ cmsPageGrid: PropTypes.string.isRequired,
30
+ widgetGrid: PropTypes.string.isRequired
24
31
  };
25
32
 
26
33
  export const layout = {
@@ -31,5 +38,6 @@ export const layout = {
31
38
  export const query = `
32
39
  query Query {
33
40
  cmsPageGrid: url(routeId:"cmsPageGrid")
41
+ widgetGrid: url(routeId:"widgetGrid")
34
42
  }
35
43
  `;
@@ -3,7 +3,7 @@
3
3
  -webkit-transform: translate3d(0, 0, 9999px);
4
4
  position: fixed;
5
5
  width: 380px;
6
- background-color: #fff;
6
+ background-color: transparent;
7
7
  }
8
8
  .Toastify__toast-container--top-left {
9
9
  top: 1em;
@@ -11,12 +11,12 @@ export function NoResult({ keyword, resourseLinks = [] }) {
11
11
  &quot;
12
12
  </h3>
13
13
  <div>TRY OTHER RESOURCES</div>
14
- <div className="grid grid-cols-2 mt-1">
14
+ <div className="grid grid-cols-2 mt-4">
15
15
  {resourseLinks.map((link, index) => (
16
16
  // eslint-disable-next-line react/no-array-index-key
17
17
  <div
18
18
  key={index}
19
- className="flex space-x-1 justify-center items-center"
19
+ className="flex space-x-4 justify-center items-center"
20
20
  >
21
21
  <Dot variant="info" />
22
22
  <a href={link.url} className="text-divider hover:underline">
@@ -13,7 +13,7 @@ export function Results({ keyword, results = {} }) {
13
13
  </h3>
14
14
  <div className="item-list">
15
15
  {products.items.length > 0 && (
16
- <div className="item-category flex flex-col space-x-1">
16
+ <div className="item-category flex flex-col space-x-4">
17
17
  <div className="result-category">Products</div>
18
18
  {products.items.map((product, index) => (
19
19
  // eslint-disable-next-line react/no-array-index-key
@@ -25,7 +25,7 @@ export function Results({ keyword, results = {} }) {
25
25
  </div>
26
26
  )}
27
27
  {customers.items.length > 0 && (
28
- <div className="item-category flex flex-col space-x-1">
28
+ <div className="item-category flex flex-col space-x-4">
29
29
  <div className="result-category">Customers</div>
30
30
  {customers.items.map((customer, index) => (
31
31
  // eslint-disable-next-line react/no-array-index-key
@@ -37,7 +37,7 @@ export function Results({ keyword, results = {} }) {
37
37
  </div>
38
38
  )}
39
39
  {orders.items.length > 0 && (
40
- <div className="item-category flex flex-col space-x-1">
40
+ <div className="item-category flex flex-col space-x-4">
41
41
  <div className="result-category">Orders</div>
42
42
  {orders.items.map((order, index) => (
43
43
  // eslint-disable-next-line react/no-array-index-key
@@ -9,15 +9,10 @@ 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">
14
- <Area id="leftSide" noOuter />
15
- </div>
16
- <div className="col-span-1 grid grid-cols-1 gap-2 auto-rows-max">
17
- <Area id="rightSide" noOuter />
18
- </div>
12
+ <div className="grid gap-8 grid-cols-1">
13
+ <Area id="wideScreen" noOuter />
19
14
  </div>
20
- <div className="form-submit-button flex border-t border-divider mt-15 pt-15 justify-between">
15
+ <div className="form-submit-button flex border-t border-divider mt-6 pt-6 justify-between">
21
16
  <Button
22
17
  title="Cancel"
23
18
  variant="critical"
@@ -28,7 +23,10 @@ export default function FormContent({ gridUrl }) {
28
23
  />
29
24
  <Button
30
25
  title="Save"
31
- onAction={() => {
26
+ onAction={async () => {
27
+ // const editorData = await editorRef.save();
28
+ // console.log(editorData);
29
+ // return;
32
30
  document
33
31
  .getElementById('cmsPageForm')
34
32
  .dispatchEvent(
@@ -4,7 +4,7 @@ import Area from '@components/common/Area';
4
4
  import { get } from '@evershop/evershop/src/lib/util/get';
5
5
  import { Field } from '@components/common/form/Field';
6
6
  import { Card } from '@components/admin/cms/Card';
7
- import CkeditorField from '@components/common/form/fields/Ckeditor';
7
+ import Editor from '@components/common/form/fields/Editor';
8
8
 
9
9
  export default function General({
10
10
  page,
@@ -36,7 +36,7 @@ export default function General({
36
36
  sortOrder: 10
37
37
  },
38
38
  {
39
- component: { default: CkeditorField },
39
+ component: { default: Editor },
40
40
  props: {
41
41
  id: 'content',
42
42
  name: 'content',
@@ -86,7 +86,7 @@ General.defaultProps = {
86
86
  };
87
87
 
88
88
  export const layout = {
89
- areaId: 'leftSide',
89
+ areaId: 'wideScreen',
90
90
  sortOrder: 10
91
91
  };
92
92
 
@@ -81,7 +81,7 @@ Seo.defaultProps = {
81
81
  };
82
82
 
83
83
  export const layout = {
84
- areaId: 'leftSide',
84
+ areaId: 'wideScreen',
85
85
  sortOrder: 30
86
86
  };
87
87
 
@@ -0,0 +1,40 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { Toggle } from '@components/common/form/fields/Toggle';
4
+
5
+ export default function Status({ cmsPage }) {
6
+ return (
7
+ <div className="form-field-container">
8
+ <Toggle
9
+ id="status"
10
+ name="status"
11
+ label="Status"
12
+ value={cmsPage?.status}
13
+ />
14
+ </div>
15
+ );
16
+ }
17
+
18
+ Status.propTypes = {
19
+ cmsPage: PropTypes.shape({
20
+ status: PropTypes.number,
21
+ includeInNave: PropTypes.number
22
+ })
23
+ };
24
+
25
+ Status.defaultProps = {
26
+ cmsPage: null
27
+ };
28
+
29
+ export const layout = {
30
+ areaId: 'pageEditGeneral',
31
+ sortOrder: 15
32
+ };
33
+
34
+ export const query = `
35
+ query Query {
36
+ cmsPage(id: getContextValue("cmsPageId", null)) {
37
+ status
38
+ }
39
+ }
40
+ `;
@@ -118,7 +118,7 @@ function Actions({ pages = [], selectedIds = [] }) {
118
118
  {selectedIds.length > 0 && (
119
119
  <td style={{ borderTop: 0 }} colSpan="100">
120
120
  <div className="inline-flex border border-divider rounded justify-items-start">
121
- <a href="#" className="font-semibold pt-075 pb-075 pl-15 pr-15">
121
+ <a href="#" className="font-semibold pt-3 pb-3 pl-6 pr-6">
122
122
  {selectedIds.length} selected
123
123
  </a>
124
124
  {actions.map((action) => (
@@ -128,7 +128,7 @@ function Actions({ pages = [], selectedIds = [] }) {
128
128
  e.preventDefault();
129
129
  action.onAction();
130
130
  }}
131
- className="font-semibold pt-075 pb-075 pl-15 pr-15 block border-l border-divider self-center"
131
+ className="font-semibold pt-3 pb-3 pl-6 pr-6 block border-l border-divider self-center"
132
132
  >
133
133
  <span>{action.name}</span>
134
134
  </a>
@@ -218,7 +218,7 @@ export default function CMSPageGrid({
218
218
  }
219
219
  }
220
220
  ]}
221
- />
221
+ />
222
222
  <table className="listing sticky">
223
223
  <thead>
224
224
  <tr>
@@ -359,7 +359,6 @@ export const query = `
359
359
  name
360
360
  status
361
361
  content
362
- layout
363
362
  editUrl
364
363
  updateApi
365
364
  deleteApi
@@ -4,11 +4,11 @@ import './Layout.scss';
4
4
 
5
5
  export default function DashboardLayout() {
6
6
  return (
7
- <div className="grid grid-cols-3 gap-x-2 grid-flow-row ">
8
- <div className="col-span-2 grid grid-cols-1 gap-2 auto-rows-max">
7
+ <div className="grid grid-cols-3 gap-x-8 grid-flow-row ">
8
+ <div className="col-span-2 grid grid-cols-1 gap-8 auto-rows-max">
9
9
  <Area id="leftSide" noOuter />
10
10
  </div>
11
- <div className="col-span-1 grid grid-cols-1 gap-2 auto-rows-max">
11
+ <div className="col-span-1 grid grid-cols-1 gap-8 auto-rows-max">
12
12
  <Area id="rightSide" noOuter />
13
13
  </div>
14
14
  </div>
@@ -0,0 +1,52 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import { toast } from 'react-toastify';
4
+ import Area from '@components/common/Area';
5
+ import { Form } from '@components/common/form/Form';
6
+ import { get } from '@evershop/evershop/src/lib/util/get';
7
+
8
+ export default function WidgetForm({ action }) {
9
+ const id = 'widgetForm';
10
+ return (
11
+ <Form
12
+ method="PATCH"
13
+ action={action}
14
+ onError={() => {
15
+ toast.error('Something wrong. Please reload the page!');
16
+ }}
17
+ onSuccess={(response) => {
18
+ if (response.error) {
19
+ toast.error(
20
+ get(
21
+ response,
22
+ 'error.message',
23
+ 'Something wrong. Please reload the page!'
24
+ )
25
+ );
26
+ } else {
27
+ toast.success('Widget saved successfully!');
28
+ }
29
+ }}
30
+ submitBtn={false}
31
+ id={id}
32
+ >
33
+ <Area id={id} noOuter />
34
+ </Form>
35
+ );
36
+ }
37
+
38
+ WidgetForm.propTypes = {
39
+ action: PropTypes.string.isRequired
40
+ };
41
+
42
+ export const layout = {
43
+ areaId: 'content',
44
+ sortOrder: 10
45
+ };
46
+
47
+ export const query = `
48
+ query Query {
49
+ action: url(routeId: "updateWidget", params: [{key: "id", value: getContextValue("widgetUuid")}]),
50
+ gridUrl: url(routeId: "widgetGrid")
51
+ }
52
+ `;
@@ -0,0 +1,36 @@
1
+ const { select } = require('@evershop/postgres-query-builder');
2
+ const { pool } = require('@evershop/evershop/src/lib/postgres/connection');
3
+ const {
4
+ getEnabledWidgets
5
+ } = require('@evershop/evershop/src/lib/util/getEnabledWidgets');
6
+ const {
7
+ setContextValue
8
+ } = require('../../../../graphql/services/contextHelper');
9
+
10
+ module.exports = async (request, response, delegate, next) => {
11
+ try {
12
+ const query = select();
13
+ query.from('widget');
14
+ query.andWhere('widget.uuid', '=', request.params.id);
15
+ const widget = await query.load(pool);
16
+ const enabledWidgets = getEnabledWidgets();
17
+ if (
18
+ widget === null ||
19
+ !enabledWidgets.find((row) => row.type === widget.type)
20
+ ) {
21
+ response.status(404);
22
+ next();
23
+ } else {
24
+ setContextValue(request, 'type', widget.type);
25
+ setContextValue(request, 'widgetId', widget.widget_id);
26
+ setContextValue(request, 'widgetUuid', widget.uuid);
27
+ setContextValue(request, 'pageInfo', {
28
+ title: widget.name,
29
+ description: widget.name
30
+ });
31
+ next();
32
+ }
33
+ } catch (e) {
34
+ next(e);
35
+ }
36
+ };
@@ -0,0 +1,4 @@
1
+ {
2
+ "methods": ["GET"],
3
+ "path": "/widgets/edit/:id"
4
+ }
@@ -0,0 +1,69 @@
1
+ import PropTypes from 'prop-types';
2
+ import React from 'react';
3
+ import Area from '@components/common/Area';
4
+ import Button from '@components/common/form/Button';
5
+ import { useFormContext } from '@components/common/form/Form';
6
+ import './FormContent.scss';
7
+
8
+ export default function FormContent({ gridUrl, type }) {
9
+ const { state } = useFormContext();
10
+ return (
11
+ <>
12
+ <input type="hidden" name="type" value={type.code} />
13
+ <div className="grid grid-cols-3 gap-x-8 grid-flow-row ">
14
+ <div className="col-span-2 grid grid-cols-1 gap-8 auto-rows-max">
15
+ <Area id="leftSide" type={type} noOuter />
16
+ </div>
17
+ <div className="col-span-1 grid grid-cols-1 gap-8 auto-rows-max">
18
+ <Area id="rightSide" type={type} noOuter />
19
+ </div>
20
+ </div>
21
+ <div className="form-submit-button flex border-t border-divider mt-6 pt-6 justify-between">
22
+ <Button
23
+ title="Cancel"
24
+ variant="critical"
25
+ outline
26
+ onAction={() => {
27
+ window.location = gridUrl;
28
+ }}
29
+ />
30
+ <Button
31
+ title="Save"
32
+ onAction={() => {
33
+ document
34
+ .getElementById('widgetForm')
35
+ .dispatchEvent(
36
+ new Event('submit', { cancelable: true, bubbles: true })
37
+ );
38
+ }}
39
+ isLoading={state === 'submitting'}
40
+ />
41
+ </div>
42
+ </>
43
+ );
44
+ }
45
+
46
+ FormContent.propTypes = {
47
+ gridUrl: PropTypes.string.isRequired,
48
+ type: PropTypes.shape({
49
+ code: PropTypes.string.isRequired,
50
+ description: PropTypes.string.isRequired
51
+ }).isRequired
52
+ };
53
+
54
+ export const layout = {
55
+ areaId: 'widgetForm',
56
+ sortOrder: 10
57
+ };
58
+
59
+ export const query = `
60
+ query Query {
61
+ gridUrl: url(routeId: "widgetGrid")
62
+ type: widgetType(code: getContextValue('type')) {
63
+ code
64
+ description
65
+ settingComponent
66
+ defaultSetting
67
+ }
68
+ }
69
+ `;
@@ -0,0 +1,7 @@
1
+ .page-heading {
2
+ max-width: 100rem;
3
+ }
4
+ .main-content-inner {
5
+ max-width: 100rem;
6
+ margin: 0 auto;
7
+ }