ordering-ui-external 1.3.2 → 1.4.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 (133) hide show
  1. package/_bundles/0.ordering-ui.4daed536057dd0fbaf15.js +1 -0
  2. package/_bundles/{0.ordering-ui.8d3ec9f208550df10621.js → 1.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  3. package/_bundles/{1.ordering-ui.8d3ec9f208550df10621.js → 2.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  4. package/_bundles/{4.ordering-ui.8d3ec9f208550df10621.js → 4.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  5. package/_bundles/{5.ordering-ui.8d3ec9f208550df10621.js → 5.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  6. package/_bundles/{6.ordering-ui.8d3ec9f208550df10621.js → 6.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  7. package/_bundles/7.ordering-ui.4daed536057dd0fbaf15.js +2 -0
  8. package/_bundles/{7.ordering-ui.8d3ec9f208550df10621.js.LICENSE.txt → 7.ordering-ui.4daed536057dd0fbaf15.js.LICENSE.txt} +0 -0
  9. package/_bundles/{8.ordering-ui.8d3ec9f208550df10621.js → 8.ordering-ui.4daed536057dd0fbaf15.js} +0 -0
  10. package/_bundles/{9.ordering-ui.8d3ec9f208550df10621.js → 9.ordering-ui.4daed536057dd0fbaf15.js} +1 -1
  11. package/_bundles/ordering-ui.4daed536057dd0fbaf15.js +2 -0
  12. package/_bundles/{ordering-ui.8d3ec9f208550df10621.js.LICENSE.txt → ordering-ui.4daed536057dd0fbaf15.js.LICENSE.txt} +0 -0
  13. package/_modules/themes/five/index.js +7 -0
  14. package/_modules/themes/five/src/components/BusinessListingSearch/MaxSectionItem/index.js +47 -0
  15. package/_modules/themes/five/src/components/BusinessListingSearch/index.js +14 -29
  16. package/_modules/themes/five/src/components/BusinessProductsList/index.js +10 -6
  17. package/_modules/themes/five/src/components/BusinessProductsList/styles.js +8 -7
  18. package/_modules/themes/five/src/components/BusinessProductsListing/index.js +1 -1
  19. package/_modules/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/index.js +3 -3
  20. package/_modules/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/styles.js +4 -1
  21. package/_modules/themes/five/src/components/Cart/index.js +3 -1
  22. package/_modules/themes/five/src/components/Checkout/index.js +46 -33
  23. package/_modules/themes/five/src/components/Favorite/index.js +16 -2
  24. package/_modules/themes/five/src/components/FavoriteList/index.js +15 -1
  25. package/_modules/themes/five/src/components/Header/index.js +2 -2
  26. package/_modules/themes/five/src/components/Header/styles.js +5 -3
  27. package/_modules/themes/five/src/components/Modal/index.js +2 -2
  28. package/_modules/themes/five/src/components/Modal/styles.js +8 -4
  29. package/_modules/themes/five/src/components/MyOrders/index.js +9 -2
  30. package/_modules/themes/five/src/components/OrderDetails/ActionsSection.js +1 -0
  31. package/_modules/themes/five/src/components/OrdersOption/PreviousBusinessOrdered/index.js +10 -40
  32. package/_modules/themes/five/src/components/OrdersOption/PreviousProfessionalOrdered/index.js +25 -0
  33. package/_modules/themes/five/src/components/OrdersOption/PreviousProfessionalOrdered/styles.js +19 -0
  34. package/_modules/themes/five/src/components/OrdersOption/index.js +16 -13
  35. package/_modules/themes/five/src/components/ProductForm/index.js +5 -5
  36. package/_modules/themes/five/src/components/RenderProductsLayout/styles.js +1 -1
  37. package/_modules/themes/five/src/components/SidebarMenu/index.js +39 -17
  38. package/_modules/themes/five/src/components/SingleProductCard/styles.js +1 -1
  39. package/_modules/themes/five/src/components/SingleProfessionalCard/index.js +95 -0
  40. package/_modules/themes/five/src/components/SingleProfessionalCard/styles.js +47 -0
  41. package/_modules/themes/five/src/styles/Selects/index.js +1 -1
  42. package/index-template.js +28 -5
  43. package/package.json +6 -3
  44. package/src/themes/five/index.js +2 -0
  45. package/src/themes/five/src/components/BusinessListingSearch/MaxSectionItem/index.js +44 -0
  46. package/src/themes/five/src/components/BusinessListingSearch/index.js +8 -30
  47. package/src/themes/five/src/components/BusinessProductsList/index.js +29 -22
  48. package/src/themes/five/src/components/BusinessProductsList/styles.js +25 -2
  49. package/src/themes/five/src/components/BusinessProductsListing/index.js +1 -1
  50. package/src/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/index.js +4 -3
  51. package/src/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/styles.js +1 -1
  52. package/src/themes/five/src/components/Cart/index.js +2 -0
  53. package/src/themes/five/src/components/Checkout/index.js +19 -12
  54. package/src/themes/five/src/components/Favorite/index.js +19 -1
  55. package/src/themes/five/src/components/FavoriteList/index.js +24 -0
  56. package/src/themes/five/src/components/Header/index.js +11 -8
  57. package/src/themes/five/src/components/Header/styles.js +5 -0
  58. package/src/themes/five/src/components/Modal/index.js +9 -6
  59. package/src/themes/five/src/components/Modal/styles.js +15 -1
  60. package/src/themes/five/src/components/MyOrders/index.js +11 -1
  61. package/src/themes/five/src/components/OrderDetails/ActionsSection.js +1 -0
  62. package/src/themes/five/src/components/OrdersOption/PreviousBusinessOrdered/index.js +8 -29
  63. package/src/themes/five/src/components/OrdersOption/PreviousProfessionalOrdered/index.js +32 -0
  64. package/src/themes/five/src/components/OrdersOption/PreviousProfessionalOrdered/styles.js +38 -0
  65. package/src/themes/five/src/components/OrdersOption/index.js +18 -9
  66. package/src/themes/five/src/components/ProductForm/index.js +5 -5
  67. package/src/themes/five/src/components/RenderProductsLayout/styles.js +1 -1
  68. package/src/themes/five/src/components/SidebarMenu/index.js +98 -42
  69. package/src/themes/five/src/components/SingleProductCard/styles.js +5 -1
  70. package/src/themes/five/src/components/SingleProfessionalCard/index.js +82 -0
  71. package/src/themes/five/src/components/SingleProfessionalCard/styles.js +92 -0
  72. package/src/themes/five/src/styles/Selects/index.js +1 -0
  73. package/template/Utils/index.js +4 -0
  74. package/template/app.js +554 -143
  75. package/template/assets/images/business-hero.jpg +0 -0
  76. package/template/assets/images/business-signup-background.png +0 -0
  77. package/template/assets/images/business_signup.png +0 -0
  78. package/template/assets/images/congratulation_approval.png +0 -0
  79. package/template/assets/images/congratulation_no_approval.png +0 -0
  80. package/template/assets/images/credit.png +0 -0
  81. package/template/assets/images/delivery-types/curbside.jpg +0 -0
  82. package/template/assets/images/delivery-types/delivery.jpg +0 -0
  83. package/template/assets/images/delivery-types/drive_thru.jpg +0 -0
  84. package/template/assets/images/delivery-types/eat_in.jpg +0 -0
  85. package/template/assets/images/delivery-types/pickup.jpg +0 -0
  86. package/template/assets/images/driver-signup-background.png +0 -0
  87. package/template/assets/images/driver-signup-hero.png +0 -0
  88. package/template/assets/images/driver_congratulation_approval.png +0 -0
  89. package/template/assets/images/driver_congratulation_no_approval.png +0 -0
  90. package/template/assets/images/driver_signup.png +0 -0
  91. package/template/assets/images/home-hero.jpg +0 -0
  92. package/template/assets/images/loyalty_level.png +0 -0
  93. package/template/assets/images/mastercard.png +0 -0
  94. package/template/assets/images/not-found.svg +94 -1
  95. package/template/assets/images/not-network.svg +226 -1
  96. package/template/assets/images/visa.png +0 -0
  97. package/template/components/HelmetTags/index.js +5 -4
  98. package/template/components/ListenPageChanges/index.js +25 -12
  99. package/template/components/ScrollToTop/index.js +4 -0
  100. package/template/config.js +14 -0
  101. package/template/config.json +1 -0
  102. package/template/helmetdata.json +91 -28
  103. package/template/pages/AddressList/index.js +34 -0
  104. package/template/pages/AddressList/styles.js +43 -0
  105. package/template/pages/BusinessListingSearch/index.js +106 -0
  106. package/template/pages/BusinessProductsList/index.js +152 -29
  107. package/template/pages/BusinessesList/index.js +17 -6
  108. package/template/pages/Checkout/index.js +14 -4
  109. package/template/pages/Favorite/index.js +12 -0
  110. package/template/pages/Help/index.js +7 -2
  111. package/template/pages/Home/index.js +58 -36
  112. package/template/pages/Home/styles.js +14 -0
  113. package/template/pages/MessagesList/index.js +19 -0
  114. package/template/pages/MultiCheckout/index.js +26 -0
  115. package/template/pages/MultiOrdersDetails/index.js +21 -0
  116. package/template/pages/MyOrders/index.js +87 -3
  117. package/template/pages/OrderDetails/index.js +12 -2
  118. package/template/pages/Profile/index.js +16 -3
  119. package/template/pages/Promotions/index.js +13 -0
  120. package/template/pages/ResetPassword/index.js +15 -9
  121. package/template/pages/SessionsList/index.js +12 -0
  122. package/template/pages/SignUpBusiness/index.js +12 -0
  123. package/template/pages/SignUpDriver/index.js +12 -0
  124. package/template/pages/UserVerification/index.js +12 -0
  125. package/template/pages/Wallets/index.js +12 -0
  126. package/template/service-worker.js +72 -0
  127. package/template/theme.json +27 -51
  128. package/_bundles/3.ordering-ui.8d3ec9f208550df10621.js +0 -1
  129. package/_bundles/7.ordering-ui.8d3ec9f208550df10621.js +0 -2
  130. package/_bundles/ordering-ui.8d3ec9f208550df10621.js +0 -2
  131. package/template/assets/images/exclamation.svg +0 -3
  132. package/template/assets/images/order-creating.png +0 -0
  133. package/template/assets/images/order-sucess.png +0 -0
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.UserPhoto = exports.InfoWrapper = exports.Container = exports.ActionWrapper = void 0;
8
+ var _styledComponents = _interopRequireWildcard(require("styled-components"));
9
+ var _react = _interopRequireDefault(require("react"));
10
+ var _templateObject, _templateObject2, _templateObject3, _templateObject4, _templateObject5, _templateObject6, _templateObject7;
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
13
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
14
+ function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
15
+ function _taggedTemplateLiteral(strings, raw) { if (!raw) { raw = strings.slice(0); } return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }
16
+ var Container = _styledComponents.default.div(_templateObject || (_templateObject = _taggedTemplateLiteral(["\n box-shadow: 0px 1px 4px rgba(0, 0, 0, 0.1);\n border-radius: 4px;\n padding: 12px 14px;\n display: flex;\n align-items: center;\n background-color: ", ";\n border: 1px solid ", ";\n box-sizing: border-box;\n margin: 10px;\n"])), function (props) {
17
+ return props.theme.colors.backgroundPage;
18
+ }, function (props) {
19
+ return props.theme.colors.gray200;
20
+ });
21
+ exports.Container = Container;
22
+ var UserPhotoStyled = _styledComponents.default.div(_templateObject2 || (_templateObject2 = _taggedTemplateLiteral(["\n box-sizing: border-box;\n position: relative;\n background-repeat: no-repeat, repeat;\n background-size: cover;\n background-position: center;\n object-fit: cover;\n min-height: 86px;\n width: 86px;\n height: 86px;\n border-radius: 4px;\n\n ", "\n"])), function (_ref) {
23
+ var isSkeleton = _ref.isSkeleton;
24
+ return isSkeleton && (0, _styledComponents.css)(_templateObject3 || (_templateObject3 = _taggedTemplateLiteral(["\n background-color: ", ";\n "])), function (props) {
25
+ return props.theme.colors.gray200;
26
+ });
27
+ });
28
+ var UserPhoto = function UserPhoto(props) {
29
+ var style = {};
30
+ if (props.bgimage) {
31
+ style.backgroundImage = "url(".concat(props.bgimage, ")");
32
+ }
33
+ return /*#__PURE__*/_react.default.createElement(UserPhotoStyled, _extends({}, props, {
34
+ style: style
35
+ }), props.children);
36
+ };
37
+ exports.UserPhoto = UserPhoto;
38
+ var InfoWrapper = _styledComponents.default.div(_templateObject4 || (_templateObject4 = _taggedTemplateLiteral(["\n width: calc(100% - 106px);\n margin-left: 20px;\n ", "\n > h4 {\n font-weight: 400;\n font-size: 14px;\n line-height: 24px;\n margin: 0px;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n }\n p {\n margin-top: 2px;\n font-weight: 400;\n font-size: 12px;\n line-height: 22px;\n }\n"])), function (props) {
39
+ return props.theme.rtl && (0, _styledComponents.css)(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n margin-left: 0px;\n margin-right: 20px;\n "])));
40
+ });
41
+ exports.InfoWrapper = InfoWrapper;
42
+ var ActionWrapper = _styledComponents.default.div(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n margin-top: 15px;\n display: flex;\n align-items: center;\n > .info {\n cursor: pointer;\n font-size: 16px;\n margin-right: 7px;\n ", "\n }\n > span {\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n svg {\n color: ", ";\n font-size: 16px;\n margin-top: 2px;\n }\n }\n"])), function (props) {
43
+ return props.theme.rtl && (0, _styledComponents.css)(_templateObject7 || (_templateObject7 = _taggedTemplateLiteral(["\n margin-right: 0px;\n margin-left: 7px;\n "])));
44
+ }, function (props) {
45
+ return props.theme.colors.danger500;
46
+ });
47
+ exports.ActionWrapper = ActionWrapper;
@@ -21,7 +21,7 @@ var Option = _styledComponents.default.div(_templateObject || (_templateObject =
21
21
  });
22
22
  });
23
23
  exports.Option = Option;
24
- var Options = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n background-color: #CCC;\n margin-top: 7px;\n z-index: 10000;\n border-width: 1px;\n border-style: solid;\n border-color: #CCC;\n border-radius: 15px;\n overflow: hidden;\n ", "\n ", "\n"])), function (_ref2) {
24
+ var Options = _styledComponents.default.div(_templateObject5 || (_templateObject5 = _taggedTemplateLiteral(["\n position: absolute;\n background-color: #CCC;\n margin-top: 7px;\n z-index: 10000;\n border-width: 1px;\n border-style: solid;\n border-color: #CCC;\n border-radius: 15px;\n overflow: hidden;\n\n ", "\n ", "\n"])), function (_ref2) {
25
25
  var position = _ref2.position;
26
26
  return (position === null || position === void 0 ? void 0 : position.toLowerCase()) === 'left' && (0, _styledComponents.css)(_templateObject6 || (_templateObject6 = _taggedTemplateLiteral(["\n left: 0;\n margin-left: -1px;\n ", "\n "])), function (props) {
27
27
  var _props$theme2;
package/index-template.js CHANGED
@@ -20,6 +20,7 @@ import isotype from './template/assets/images/isotype.svg'
20
20
  import isotypeInvert from './template/assets/images/isotype-invert.svg'
21
21
 
22
22
  import homeHero from './template/assets/images/home-hero.jpg'
23
+ import businessHero from './template/assets/images/business-hero.jpg'
23
24
  import notFound from './template/assets/images/not-found.svg'
24
25
  import notNetwork from './template/assets/images/not-network.svg'
25
26
  import notFound404 from './template/assets/images/not-found-404.svg'
@@ -27,8 +28,12 @@ import notFoundLighting from './template/assets/images/not-found-lighting.svg'
27
28
  import searchIcon from './template/assets/images/search-icon.svg'
28
29
  import emptyActiveOrders from './template/assets/images/empty-active-orders.svg'
29
30
  import emptyPastOrders from './template/assets/images/empty-past-orders.svg'
30
- import creatingOrder from './template/assets/images/order-creating.png'
31
- import successOrder from './template/assets/images/order-sucess.png'
31
+ import visa from './template/assets/images/visa.png'
32
+ import mastercard from './template/assets/images/mastercard.png'
33
+ import credit from './template/assets/images/credit.png'
34
+ import businessSignUpHero from './template/assets/images/business_signup.png'
35
+ import driverSignUpHero from './template/assets/images/driver-signup-hero.png'
36
+ import loyaltyLevel from './template/assets/images/loyalty_level.png'
32
37
 
33
38
  import orderStatus0 from './template/assets/images/order/status-0.svg'
34
39
  import orderStatus1 from './template/assets/images/order/status-1.svg'
@@ -65,6 +70,12 @@ import storeDummy from './template/assets/images/dummies/store.png'
65
70
  import leftArrow from './template/assets/left-arrow.svg'
66
71
  import rightArrow from './template/assets/right-arrow.svg'
67
72
 
73
+ import delivery from './template/assets/images/delivery-types/delivery.jpg'
74
+ import curbside from './template/assets/images/delivery-types/curbside.jpg'
75
+ import driveThru from './template/assets/images/delivery-types/drive_thru.jpg'
76
+ import eatIn from './template/assets/images/delivery-types/eat_in.jpg'
77
+ import pickUp from './template/assets/images/delivery-types/pickup.jpg'
78
+
68
79
  Sentry.init({
69
80
  environment: process.env.NODE_ENV,
70
81
  dsn: "https://28d1f7ef8d764235902101e569102521@o460529.ingest.sentry.io/6302953",
@@ -97,6 +108,7 @@ theme.images = {
97
108
  logos,
98
109
  general: {
99
110
  homeHero,
111
+ businessHero,
100
112
  notFound,
101
113
  notFound404,
102
114
  notFoundLighting,
@@ -104,8 +116,11 @@ theme.images = {
104
116
  notNetwork,
105
117
  emptyActiveOrders,
106
118
  emptyPastOrders,
107
- creatingOrder,
108
- successOrder,
119
+ visa,
120
+ mastercard,
121
+ credit,
122
+ businessSignUpHero,
123
+ driverSignUpHero,
109
124
  leftArrow,
110
125
  rightArrow
111
126
  },
@@ -145,7 +160,15 @@ theme.images = {
145
160
  product: productDummy,
146
161
  driverPhoto: 'https://res.cloudinary.com/demo/image/fetch/c_thumb,g_face,r_max/https://www.freeiconspng.com/thumbs/driver-icon/driver-icon-14.png',
147
162
  businessLogo: storeDummy,
148
- customerPhoto: 'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png'
163
+ customerPhoto: 'https://res.cloudinary.com/demo/image/upload/c_thumb,g_face,r_max/d_avatar.png/non_existing_id.png',
164
+ loyaltyLevel
165
+ },
166
+ deliveryTypes: {
167
+ delivery: delivery,
168
+ curbside: curbside,
169
+ driveThru: driveThru,
170
+ eatIn: eatIn,
171
+ pickUp: pickUp
149
172
  }
150
173
  }
151
174
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ordering-ui-external",
3
- "version": "1.3.2",
3
+ "version": "1.4.0",
4
4
  "description": "Ordering UI Components",
5
5
  "main": "./_modules/index.js",
6
6
  "exports": {
@@ -67,7 +67,9 @@
67
67
  "url-loader": "^4.1.1",
68
68
  "webpack": "^4.43.0",
69
69
  "webpack-cli": "^3.3.12",
70
- "webpack-dev-server": "^3.11.0"
70
+ "webpack-dev-server": "^3.11.0",
71
+ "webpack-merge": "^5.2.0",
72
+ "workbox-webpack-plugin": "^6.5.3"
71
73
  },
72
74
  "dependencies": {
73
75
  "@babel/runtime": "^7.10.4",
@@ -83,13 +85,14 @@
83
85
  "libphonenumber-js": "^1.9.4",
84
86
  "lodash": "^4.17.19",
85
87
  "moment": "^2.29.4",
86
- "ordering-components-external": "1.2.1",
88
+ "ordering-components-external": "1.3.0",
87
89
  "polished": "^3.6.6",
88
90
  "react-bootstrap-icons": "^1.7.2",
89
91
  "react-calendar": "^3.3.1",
90
92
  "react-datepicker": "^4.1.1",
91
93
  "react-helmet": "^6.1.0",
92
94
  "react-hook-form": "^6.8.1",
95
+ "react-ios-pwa-prompt": "^1.8.4",
93
96
  "react-linkify": "^1.0.0-alpha",
94
97
  "react-loading-skeleton": "^2.1.1",
95
98
  "react-otp-input": "^2.3.0",
@@ -84,6 +84,7 @@ import { SignUpBusiness } from './src/components/SignUpBusiness'
84
84
  import { SignUpDriver } from './src/components/SignUpDriver'
85
85
  import { SignUpApproval } from './src/components/SignUpApproval'
86
86
  import { SingleProductCard } from './src/components/SingleProductCard'
87
+ import { SingleProfessionalCard } from './src/components/SingleProfessionalCard'
87
88
  import { StripeElementsForm } from './src/components/StripeElementsForm'
88
89
  import { StripeRedirectForm } from './src/components/StripeRedirectForm'
89
90
  import { UpsellingPage } from './src/components/UpsellingPage'
@@ -199,6 +200,7 @@ export {
199
200
  SignUpDriver,
200
201
  SignUpApproval,
201
202
  SingleProductCard,
203
+ SingleProfessionalCard,
202
204
  StripeElementsForm,
203
205
  StripeRedirectForm,
204
206
  UpsellingPage,
@@ -0,0 +1,44 @@
1
+ import { useLanguage, useUtils } from 'ordering-components-external'
2
+ import React from 'react'
3
+ import { MaxFilterContainer, MaxItem, MaxItemContainer, ProgressBar, ProgressContentWrapper } from '../styles'
4
+
5
+ export const MaxSectionItem = (props) => {
6
+ const {
7
+ filters,
8
+ handleChangeFilters,
9
+ title,
10
+ options,
11
+ filter
12
+ } = props
13
+
14
+ const [, t] = useLanguage()
15
+ const [{ parsePrice }] = useUtils()
16
+
17
+ const parseValue = (option) => {
18
+ return filter === 'max_distance'
19
+ ? `${option / 1000} ${t('KM', 'Km')}`
20
+ : filter === 'max_eta'
21
+ ? `${option} ${t('MIN', 'min')}`
22
+ : parsePrice(option)
23
+ }
24
+
25
+ return (
26
+ <MaxFilterContainer>
27
+ <h3>{title}</h3>
28
+ <ProgressContentWrapper>
29
+ <ProgressBar style={{ width: `${((options.indexOf(filters?.[filter]) / 3) * 100) ?? 100}%` }} />
30
+ </ProgressContentWrapper>
31
+ <MaxItemContainer>
32
+ {options.map((option, i) => (
33
+ <MaxItem
34
+ key={option}
35
+ active={filters?.[filter] === option || (option === 'default' && (filters?.[filter] === 'default' || !filters?.[filter]))}
36
+ onClick={() => handleChangeFilters(filter, option)}
37
+ >
38
+ {option === 'default' ? `${parseValue(options[i - 1])}+` : parseValue(option)}
39
+ </MaxItem>
40
+ ))}
41
+ </MaxItemContainer>
42
+ </MaxFilterContainer>
43
+ )
44
+ }
@@ -53,6 +53,7 @@ import BisDownArrow from '@meronex/icons/bi/BisDownArrow'
53
53
  import BisUpArrow from '@meronex/icons/bi/BisUpArrow'
54
54
  import { Modal } from '../Modal'
55
55
  import { ProductForm } from '../ProductForm'
56
+ import { MaxSectionItem } from './MaxSectionItem'
56
57
 
57
58
  export const BusinessListingSearchUI = (props) => {
58
59
  const {
@@ -123,35 +124,6 @@ export const BusinessListingSearchUI = (props) => {
123
124
  setCurProduct({ business: null, product: null })
124
125
  }
125
126
 
126
- const MaxSectionItem = ({ title, options, filter }) => {
127
- const parseValue = (option) => {
128
- return filter === 'max_distance'
129
- ? `${option / 1000} ${t('KM', 'Km')}`
130
- : filter === 'max_eta'
131
- ? `${option} ${t('MIN', 'min')}`
132
- : parsePrice(option)
133
- }
134
- return (
135
- <MaxFilterContainer>
136
- <h3>{title}</h3>
137
- <ProgressContentWrapper>
138
- <ProgressBar style={{ width: `${((options.indexOf(filters?.[filter]) / 3) * 100) ?? 100}%` }} />
139
- </ProgressContentWrapper>
140
- <MaxItemContainer>
141
- {options.map((option, i) => (
142
- <MaxItem
143
- key={option}
144
- active={filters?.[filter] === option || (option === 'default' && (filters?.[filter] === 'default' || !filters?.[filter]))}
145
- onClick={() => handleChangeFilters(filter, option)}
146
- >
147
- {option === 'default' ? `${parseValue(options[i - 1])}+` : parseValue(option)}
148
- </MaxItem>
149
- ))}
150
- </MaxItemContainer>
151
- </MaxFilterContainer>
152
- )
153
- }
154
-
155
127
  return (
156
128
  <BusinessListingSearchContainer>
157
129
  <BusinessesTitle>
@@ -226,6 +198,8 @@ export const BusinessListingSearchUI = (props) => {
226
198
  title={t('MAX_DELIVERY_FEE', 'Max delivery fee')}
227
199
  options={maxDeliveryFeeOptions}
228
200
  filter='max_delivery_price'
201
+ filters={filters}
202
+ handleChangeFilters={handleChangeFilters}
229
203
  />
230
204
  )}
231
205
  {[1, 2].includes(orderState?.options?.type) && (
@@ -233,12 +207,16 @@ export const BusinessListingSearchUI = (props) => {
233
207
  title={orderState?.options?.type === 1 ? t('MAX_DELIVERY_TIME', 'Max delivery time') : t('MAX_PICKUP_TIME', 'Max pickup time')}
234
208
  options={maxTimeOptions}
235
209
  filter='max_eta'
210
+ filters={filters}
211
+ handleChangeFilters={handleChangeFilters}
236
212
  />
237
213
  )}
238
214
  <MaxSectionItem
239
215
  title={t('MAX_DISTANCE', 'Max distance')}
240
216
  options={maxDistanceOptions}
241
217
  filter='max_distance'
218
+ filters={filters}
219
+ handleChangeFilters={handleChangeFilters}
242
220
  />
243
221
  {/* <MaxSectionItem
244
222
  title={t('MAX_PRODUCT_PRICE', 'Max product price')}
@@ -255,7 +233,7 @@ export const BusinessListingSearchUI = (props) => {
255
233
  </TagsContainer>
256
234
  </Filters>
257
235
  <FiltersResultContainer>
258
- {auth && (
236
+ {auth && termValue?.length === 0 && (
259
237
  <PreviouslyOrderedContainer>
260
238
  <MyOrders
261
239
  hideOrders
@@ -5,6 +5,8 @@ import { SingleProductCard } from '../SingleProductCard'
5
5
  import { NotFoundSource } from '../NotFoundSource'
6
6
  import { Modal } from '../Modal'
7
7
  import { shape } from '../../../../../utils'
8
+ import { AutoScroll } from '../AutoScroll'
9
+ import { XLg as Close } from 'react-bootstrap-icons'
8
10
 
9
11
  import {
10
12
  ProductsContainer,
@@ -19,7 +21,8 @@ import {
19
21
  ContainerButton,
20
22
  CategoryDescription,
21
23
  DescriptionContainer,
22
- SubcategorySearchContainer
24
+ SubcategorySearchContainer,
25
+ SubCategoriesInnerContainer
23
26
  } from './styles'
24
27
  import { Button } from '../../styles/Buttons'
25
28
 
@@ -74,33 +77,37 @@ const BusinessProductsListUI = (props) => {
74
77
 
75
78
  return (
76
79
  <SubCategoriesContainer>
77
- <ContainerButton
78
- isSelected={allsubcategorySelected}
79
- >
80
- <Button
81
- onClick={() => onClickSubcategory(null, category)}
82
- color={allsubcategorySelected ? 'primary' : 'secondary'}
83
- >
84
- {t('ALL', 'All')} {allsubcategorySelected && 'X'}
85
- </Button>
86
- </ContainerButton>
87
- {category?.subcategories?.map(subcategory => {
88
- const isSubcategorySelected = subcategoriesSelected?.find(_subcategory => _subcategory?.id === subcategory?.id)
89
- return (
80
+ <SubCategoriesInnerContainer>
81
+ <AutoScroll scrollId={`scroll_${category?.id}`}>
90
82
  <ContainerButton
91
- key={subcategory?.id}
92
- isSelected={isSubcategorySelected}
83
+ isSelected={allsubcategorySelected}
93
84
  >
94
85
  <Button
95
- onClick={() => onClickSubcategory(subcategory, category)}
96
- color={isSubcategorySelected ? 'primary' : 'secondary'}
86
+ onClick={() => onClickSubcategory(null, category)}
87
+ color={allsubcategorySelected ? 'primary' : 'lightGray'}
97
88
  >
98
- {subcategory?.name} {isSubcategorySelected && 'X'}
89
+ {t('ALL', 'All')} {allsubcategorySelected && <Close />}
99
90
  </Button>
100
91
  </ContainerButton>
101
- )
102
- }
103
- )}
92
+ {category?.subcategories?.map(subcategory => {
93
+ const isSubcategorySelected = subcategoriesSelected?.find(_subcategory => _subcategory?.id === subcategory?.id)
94
+ return (
95
+ <ContainerButton
96
+ key={subcategory?.id}
97
+ isSelected={isSubcategorySelected}
98
+ >
99
+ <Button
100
+ onClick={() => onClickSubcategory(subcategory, category)}
101
+ color={isSubcategorySelected ? 'primary' : 'lightGray'}
102
+ >
103
+ {subcategory?.name} {isSubcategorySelected && <Close />}
104
+ </Button>
105
+ </ContainerButton>
106
+ )
107
+ }
108
+ )}
109
+ </AutoScroll>
110
+ </SubCategoriesInnerContainer>
104
111
  </SubCategoriesContainer>
105
112
  )
106
113
  }
@@ -162,16 +162,39 @@ export const RibbonBox = styled.div`
162
162
  `
163
163
 
164
164
  export const SubCategoriesContainer = styled.div`
165
+ overflow: auto hidden;
166
+ margin-top: 10px;
167
+ width: 100%;
168
+ ::-webkit-scrollbar {
169
+ opacity: 0;
170
+ }
171
+ @media (min-width: 993px) {
172
+ width: calc(100% - 30px);
173
+ }
174
+ `
175
+
176
+ export const SubCategoriesInnerContainer = styled.div`
165
177
  display: flex;
166
178
  `
167
179
 
168
180
  export const ContainerButton = styled.div`
169
181
  button {
182
+ white-space: nowrap;
183
+ font-size: 14px;
184
+ display: flex;
185
+ align-items: center;
170
186
  overflow: hidden;
171
187
  margin-right: 10px;
172
- margin-top: 10px;
173
188
  border-radius: 50px;
174
- color: ${({ isSelected }) => isSelected ? '#fff' : '#414954'};
189
+
190
+ svg {
191
+ margin-left: 5px;
192
+ font-size: 13px;
193
+ ${props => props.theme.rtl && css`
194
+ margin-right: 5px;
195
+ margin-left: 0px;
196
+ `}
197
+ }
175
198
  }
176
199
  `
177
200
 
@@ -347,7 +347,7 @@ const BusinessProductsListingUI = (props) => {
347
347
  disabled={openUpselling || !currentCart?.valid_maximum || (!currentCart?.valid_minimum && !(currentCart?.discount_type === 1 && currentCart?.discount_rate === 100))}
348
348
  />
349
349
  )}
350
- {windowSize.width < 1000 && currentCart?.products?.length > 0 && (
350
+ {(windowSize.width < 1000 || windowSize.height < 600) && currentCart?.products?.length > 0 && (
351
351
  <MobileCartViewWrapper>
352
352
  <span>{parsePrice(currentCart?.total)}</span>
353
353
  <Button color='primary' onClick={() => setisCartModal(true)}>{t('VIEW_CART', 'View cart')}</Button>
@@ -9,7 +9,6 @@ import {
9
9
  useSession,
10
10
  useLanguage,
11
11
  useConfig,
12
- useOrderingTheme,
13
12
  BusinessList as BusinessListController
14
13
  } from 'ordering-components-external'
15
14
 
@@ -76,7 +75,6 @@ const BusinessesListingUI = (props) => {
76
75
  const [orderState, { changeCityFilter }] = useOrder()
77
76
  const [{ auth }] = useSession()
78
77
  const [{ configs }] = useConfig()
79
- const orderingTheme = useOrderingTheme()
80
78
  const theme = useTheme()
81
79
  const [modals, setModals] = useState({ listOpen: false, formOpen: false, citiesOpen: false })
82
80
  const [alertState, setAlertState] = useState({ open: false, content: [] })
@@ -250,7 +248,10 @@ const BusinessesListingUI = (props) => {
250
248
  {props.beforeComponents?.map((BeforeComponent, i) => (
251
249
  <BeforeComponent key={i} {...props} />))}
252
250
  <BusinessContainer>
253
- <BusinessHeroImg bgimage={theme.images?.general?.businessHero} />
251
+ <BusinessHeroImg
252
+ bgimage={theme.images?.general?.businessHero}
253
+ height={theme?.business_listing_view?.components?.business_hero?.style?.height}
254
+ />
254
255
  <OrderProgressWrapper>
255
256
  <OrderProgress
256
257
  franchiseId={props.franchiseId}
@@ -98,7 +98,7 @@ export const BusinessHeroImgStyled = styled.div`
98
98
  height: 370px;
99
99
  }
100
100
  @media (min-width: 821px) {
101
- height: 650px;
101
+ height: ${({ height }) => height || '650px'};
102
102
  }
103
103
  `
104
104
 
@@ -617,9 +617,11 @@ const CartUI = (props) => {
617
617
  onClose={() => setOpenChangeStore(false)}
618
618
  >
619
619
  <CartStoresListing
620
+ isStore={isStore}
620
621
  pageChangeStore='business'
621
622
  cartuuid={cart?.uuid}
622
623
  onClose={() => setOpenChangeStore(false)}
624
+ handleCustomStoreRedirect={handleStoreRedirect}
623
625
  />
624
626
  </Modal>
625
627
 
@@ -624,19 +624,26 @@ export const Checkout = (props) => {
624
624
 
625
625
  const getOrder = async (cartId) => {
626
626
  try {
627
- setCartState({ ...cartState, loading: true })
627
+ let result = {}
628
+ const cart = cartsWithProducts.find(cart => cart.uuid === cartId)
628
629
  const userCustomer = JSON.parse(window.localStorage.getItem('user-customer'))
629
- const url = userCustomer
630
- ? `${ordering.root}/carts/${cartId}?user_id=${userCustomer?.id}`
631
- : `${ordering.root}/carts/${cartId}`
632
- const response = await fetch(url, {
633
- method: 'GET',
634
- headers: {
635
- 'Content-Type': 'application/json',
636
- Authorization: `Bearer ${token}`
637
- }
638
- })
639
- const { result } = await response.json()
630
+ if (cart && !userCustomer) {
631
+ result = { ...cart }
632
+ } else {
633
+ setCartState({ ...cartState, loading: true })
634
+ const url = userCustomer
635
+ ? `${ordering.root}/carts/${cartId}?user_id=${userCustomer?.id}`
636
+ : `${ordering.root}/carts/${cartId}`
637
+ const response = await fetch(url, {
638
+ method: 'GET',
639
+ headers: {
640
+ 'Content-Type': 'application/json',
641
+ Authorization: `Bearer ${token}`
642
+ }
643
+ })
644
+ const content = await response.json()
645
+ result = content.result
646
+ }
640
647
 
641
648
  if (result.status === 1 && result.order?.uuid) {
642
649
  handleOrderRedirect(result.order.uuid)
@@ -1,5 +1,5 @@
1
1
  import React, { useState } from 'react'
2
- import { useLanguage, useOrder } from 'ordering-components-external'
2
+ import { useLanguage, useOrder, useOrderingTheme } from 'ordering-components-external'
3
3
  import { FavoriteList } from '../FavoriteList'
4
4
  import { Tabs } from '../../styles/Tabs'
5
5
  import {
@@ -12,7 +12,9 @@ import {
12
12
 
13
13
  export const Favorite = (props) => {
14
14
  const [, t] = useLanguage()
15
+ const [orderingTheme] = useOrderingTheme()
15
16
  const [orderState] = useOrder()
17
+ const layout = orderingTheme?.theme?.favorite?.components?.layout?.type || 'original'
16
18
 
17
19
  const [tabSelected, setTabSelected] = useState('businesses')
18
20
 
@@ -44,6 +46,15 @@ export const Favorite = (props) => {
44
46
  {item?.name}
45
47
  </Tab>
46
48
  ))}
49
+ {layout === 'appointments' && (
50
+ <Tab
51
+ borderBottom
52
+ active={tabSelected === 'professionals'}
53
+ onClick={() => setTabSelected('professionals')}
54
+ >
55
+ {t('PROFESSIONALS', 'Professionals')}
56
+ </Tab>
57
+ )}
47
58
  </Tabs>
48
59
  </TabsContainer>
49
60
  <ContentWrapper>
@@ -70,6 +81,13 @@ export const Favorite = (props) => {
70
81
  isOrder
71
82
  />
72
83
  )}
84
+ {tabSelected === 'professionals' && (
85
+ <FavoriteList
86
+ favoriteURL='favorite_users'
87
+ originalURL='users'
88
+ isProfessional
89
+ />
90
+ )}
73
91
  </ContentWrapper>
74
92
  </FavoritesContainer>
75
93
  {props.afterComponents?.map((AfterComponent, i) => (
@@ -11,6 +11,7 @@ import { SingleProductCard } from '../SingleProductCard'
11
11
  import { useTheme } from 'styled-components'
12
12
  import { SingleOrderCard } from '../SingleOrderCard'
13
13
  import { checkSiteUrl } from '../../../../../utils'
14
+ import { SingleProfessionalCard } from '../SingleProfessionalCard'
14
15
 
15
16
  import {
16
17
  Container,
@@ -29,6 +30,7 @@ const FavoriteListUI = (props) => {
29
30
  isBusiness,
30
31
  isProduct,
31
32
  isOrder,
33
+ isProfessional,
32
34
  handleReorder,
33
35
  reorderState
34
36
  } = props
@@ -323,6 +325,28 @@ const FavoriteListUI = (props) => {
323
325
  )}
324
326
  </>
325
327
  )}
328
+ {isProfessional && (
329
+ <>
330
+ {
331
+ !favoriteList?.loading && favoriteList?.favorites?.map((professional, i) => (
332
+ <SingleProfessionalCard
333
+ key={i}
334
+ professional={professional}
335
+ handleUpdateProfessionals={handleUpdateFavoriteList}
336
+ />
337
+ ))
338
+ }
339
+ {favoriteList?.loading && (
340
+ [...Array(5).keys()].map(i => (
341
+ <SingleProfessionalCard
342
+ key={i}
343
+ professional={{}}
344
+ isSkeleton
345
+ />
346
+ ))
347
+ )}
348
+ </>
349
+ )}
326
350
  {!favoriteList?.loading && pagination?.totalPages && pagination?.currentPage < pagination?.totalPages && (
327
351
  <ReadMoreCard>
328
352
  <Button
@@ -24,7 +24,8 @@ import {
24
24
  AddressMenu,
25
25
  MomentMenu,
26
26
  FarAwayMessage,
27
- Divider
27
+ Divider,
28
+ AddressFormWrapper
28
29
  } from './styles'
29
30
  import { useWindowSize } from '../../../../../hooks/useWindowSize'
30
31
  import { useOnlineStatus } from '../../../../../hooks/useOnlineStatus'
@@ -433,13 +434,15 @@ export const Header = (props) => {
433
434
  isCustomerMode={isCustomerMode}
434
435
  />
435
436
  ) : (
436
- <AddressForm
437
- useValidationFileds
438
- address={orderState?.options?.address || {}}
439
- onCancel={() => setModalIsOpen(false)}
440
- onSaveAddress={() => setModalIsOpen(false)}
441
- isCustomerMode={isCustomerMode}
442
- />
437
+ <AddressFormWrapper>
438
+ <AddressForm
439
+ useValidationFileds
440
+ address={orderState?.options?.address || {}}
441
+ onCancel={() => setModalIsOpen(false)}
442
+ onSaveAddress={() => setModalIsOpen(false)}
443
+ isCustomerMode={isCustomerMode}
444
+ />
445
+ </AddressFormWrapper>
443
446
  )
444
447
  )}
445
448
  {modalSelected === 'moment' && (