ordering-ui-admin-external 1.28.0 → 1.29.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 (169) hide show
  1. package/_bundles/main.css +294 -26
  2. package/_bundles/{ordering-ui-admin.88341b2ec95c8949082e.js → ordering-ui-admin.452c5996b9b7ebdf8016.js} +2 -2
  3. package/_bundles/{ordering-ui-admin.88341b2ec95c8949082e.js.LICENSE.txt → ordering-ui-admin.452c5996b9b7ebdf8016.js.LICENSE.txt} +8 -0
  4. package/_modules/components/Delivery/AddressForm/styles.js +2 -2
  5. package/_modules/components/Delivery/AddressList/index.js +9 -56
  6. package/_modules/components/Delivery/AddressList/styles.js +1 -1
  7. package/_modules/components/Delivery/DriversGroupLogs/index.js +5 -2
  8. package/_modules/components/Delivery/UserAddForm/index.js +16 -4
  9. package/_modules/components/Delivery/UserFormDetails/index.js +17 -5
  10. package/_modules/components/Home/HomePage/index.js +5 -1
  11. package/_modules/components/MyProducts/OrderingWebsite/index.js +5 -1
  12. package/_modules/components/OrderingProducts/SiteTheme/index.js +1 -1
  13. package/_modules/components/Orders/CreateCustomOrder/CardForm/index.js +96 -0
  14. package/_modules/components/Orders/CreateCustomOrder/CardForm/styles.js +35 -0
  15. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +102 -0
  16. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/index.js +148 -0
  17. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +16 -0
  18. package/_modules/components/Orders/CreateCustomOrder/CartBill/index.js +275 -0
  19. package/_modules/components/Orders/CreateCustomOrder/CartBill/styles.js +23 -0
  20. package/_modules/components/Orders/CreateCustomOrder/Checkout/index.js +498 -0
  21. package/_modules/components/Orders/CreateCustomOrder/Checkout/styles.js +31 -0
  22. package/_modules/components/Orders/CreateCustomOrder/CouponControl/index.js +100 -0
  23. package/_modules/components/Orders/CreateCustomOrder/CouponControl/styles.js +17 -0
  24. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +139 -0
  25. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +17 -0
  26. package/_modules/components/Orders/CreateCustomOrder/DriverTips/index.js +101 -0
  27. package/_modules/components/Orders/CreateCustomOrder/DriverTips/styles.js +37 -0
  28. package/_modules/components/Orders/CreateCustomOrder/Map/index.js +131 -0
  29. package/_modules/components/Orders/CreateCustomOrder/Map/styles.js +12 -0
  30. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +83 -0
  31. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +81 -0
  32. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +23 -0
  33. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +45 -0
  34. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +12 -0
  35. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +112 -0
  36. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +21 -0
  37. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +259 -0
  38. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +66 -0
  39. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +173 -0
  40. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +26 -0
  41. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/index.js +400 -0
  42. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +40 -0
  43. package/_modules/components/Orders/CreateCustomOrder/ProductForm/index.js +613 -0
  44. package/_modules/components/Orders/CreateCustomOrder/ProductForm/styles.js +109 -0
  45. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/index.js +39 -0
  46. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +23 -0
  47. package/_modules/components/Orders/CreateCustomOrder/ProductOption/index.js +51 -0
  48. package/_modules/components/Orders/CreateCustomOrder/ProductOption/styles.js +29 -0
  49. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +148 -0
  50. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +79 -0
  51. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +82 -0
  52. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +21 -0
  53. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/index.js +191 -0
  54. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +68 -0
  55. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/index.js +234 -0
  56. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/styles.js +54 -0
  57. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/index.js +99 -0
  58. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +131 -0
  59. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +73 -0
  60. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +17 -0
  61. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +124 -0
  62. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +12 -0
  63. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +83 -0
  64. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +21 -0
  65. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/index.js +48 -0
  66. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/styles.js +14 -0
  67. package/_modules/components/Orders/CreateCustomOrder/index.js +59 -0
  68. package/_modules/components/Orders/OrderToPrintTicket/index.js +2 -2
  69. package/_modules/components/Orders/OrdersDashboardControls/index.js +6 -2
  70. package/_modules/components/Orders/OrdersDashboardControls/styles.js +3 -3
  71. package/_modules/components/Orders/OrdersExportCSV/styles.js +14 -8
  72. package/_modules/components/Orders/OrdersManager/index.js +6 -4
  73. package/_modules/components/Orders/OrdersManager/styles.js +1 -1
  74. package/_modules/components/Shared/AutoScroll/index.js +1 -0
  75. package/_modules/components/Shared/LinkableText/index.js +22 -0
  76. package/_modules/components/Shared/Tabs/index.js +32 -0
  77. package/_modules/components/Shared/index.js +20 -0
  78. package/_modules/components/SidebarMenu/index.js +2 -1
  79. package/_modules/components/Stores/BusinessProductsListing/index.js +7 -3
  80. package/_modules/components/Stores/BusinessQRCodeOption/index.js +6 -2
  81. package/_modules/components/Stores/BusinessSummary/index.js +7 -3
  82. package/_modules/components/Users/UserAddForm/index.js +13 -5
  83. package/_modules/components/Users/UserAddForm/styles.js +1 -1
  84. package/_modules/styles/Selects/index.js +1 -1
  85. package/_modules/utils/index.js +9 -2
  86. package/index-template.js +1 -1
  87. package/package.json +6 -4
  88. package/src/components/Delivery/AddressForm/styles.js +3 -3
  89. package/src/components/Delivery/AddressList/index.js +6 -61
  90. package/src/components/Delivery/AddressList/styles.js +1 -1
  91. package/src/components/Delivery/DriversGroupLogs/index.js +8 -2
  92. package/src/components/Delivery/UserAddForm/index.js +32 -13
  93. package/src/components/Delivery/UserFormDetails/index.js +30 -13
  94. package/src/components/Home/HomePage/index.js +3 -2
  95. package/src/components/MyProducts/OrderingWebsite/index.js +9 -8
  96. package/src/components/OrderingProducts/SiteTheme/index.js +1 -1
  97. package/src/components/Orders/CreateCustomOrder/CardForm/index.js +135 -0
  98. package/src/components/Orders/CreateCustomOrder/CardForm/styles.js +135 -0
  99. package/src/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +111 -0
  100. package/src/components/Orders/CreateCustomOrder/CardFormCustom/index.js +161 -0
  101. package/src/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +20 -0
  102. package/src/components/Orders/CreateCustomOrder/CartBill/index.js +267 -0
  103. package/src/components/Orders/CreateCustomOrder/CartBill/styles.js +67 -0
  104. package/src/components/Orders/CreateCustomOrder/Checkout/index.js +519 -0
  105. package/src/components/Orders/CreateCustomOrder/Checkout/styles.js +85 -0
  106. package/src/components/Orders/CreateCustomOrder/CouponControl/index.js +90 -0
  107. package/src/components/Orders/CreateCustomOrder/CouponControl/styles.js +22 -0
  108. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +132 -0
  109. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +28 -0
  110. package/src/components/Orders/CreateCustomOrder/DriverTips/index.js +113 -0
  111. package/src/components/Orders/CreateCustomOrder/DriverTips/styles.js +91 -0
  112. package/src/components/Orders/CreateCustomOrder/Map/index.js +115 -0
  113. package/src/components/Orders/CreateCustomOrder/Map/styles.js +10 -0
  114. package/src/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +70 -0
  115. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +83 -0
  116. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +50 -0
  117. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +43 -0
  118. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +5 -0
  119. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +105 -0
  120. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +27 -0
  121. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +261 -0
  122. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +159 -0
  123. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +172 -0
  124. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +33 -0
  125. package/src/components/Orders/CreateCustomOrder/PaymentOptions/index.js +440 -0
  126. package/src/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +132 -0
  127. package/src/components/Orders/CreateCustomOrder/ProductForm/index.js +701 -0
  128. package/src/components/Orders/CreateCustomOrder/ProductForm/styles.js +540 -0
  129. package/src/components/Orders/CreateCustomOrder/ProductIngredient/index.js +43 -0
  130. package/src/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +29 -0
  131. package/src/components/Orders/CreateCustomOrder/ProductOption/index.js +58 -0
  132. package/src/components/Orders/CreateCustomOrder/ProductOption/styles.js +76 -0
  133. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +182 -0
  134. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +195 -0
  135. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +67 -0
  136. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +63 -0
  137. package/src/components/Orders/CreateCustomOrder/SelectCustomer/index.js +241 -0
  138. package/src/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +235 -0
  139. package/src/components/Orders/CreateCustomOrder/SelectProducts/index.js +237 -0
  140. package/src/components/Orders/CreateCustomOrder/SelectProducts/styles.js +161 -0
  141. package/src/components/Orders/CreateCustomOrder/SingleProductCard/index.js +105 -0
  142. package/src/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +314 -0
  143. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +71 -0
  144. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +13 -0
  145. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +90 -0
  146. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +9 -0
  147. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +96 -0
  148. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +73 -0
  149. package/src/components/Orders/CreateCustomOrder/TaxInformation/index.js +69 -0
  150. package/src/components/Orders/CreateCustomOrder/TaxInformation/styles.js +25 -0
  151. package/src/components/Orders/CreateCustomOrder/index.js +45 -0
  152. package/src/components/Orders/OrderToPrintTicket/index.js +1 -1
  153. package/src/components/Orders/OrdersDashboardControls/index.js +4 -1
  154. package/src/components/Orders/OrdersDashboardControls/styles.js +13 -11
  155. package/src/components/Orders/OrdersExportCSV/styles.js +16 -0
  156. package/src/components/Orders/OrdersManager/index.js +5 -1
  157. package/src/components/Orders/OrdersManager/styles.js +2 -0
  158. package/src/components/Shared/AutoScroll/index.js +1 -0
  159. package/src/components/Shared/LinkableText/index.js +17 -0
  160. package/src/components/Shared/Tabs/index.js +28 -0
  161. package/src/components/Shared/index.js +5 -0
  162. package/src/components/SidebarMenu/index.js +1 -1
  163. package/src/components/Stores/BusinessProductsListing/index.js +6 -3
  164. package/src/components/Stores/BusinessQRCodeOption/index.js +5 -3
  165. package/src/components/Stores/BusinessSummary/index.js +6 -4
  166. package/src/components/Users/UserAddForm/index.js +12 -3
  167. package/src/components/Users/UserAddForm/styles.js +2 -2
  168. package/src/styles/Selects/index.js +1 -1
  169. package/src/utils/index.js +5 -0
@@ -0,0 +1,90 @@
1
+ import React, { useState, useEffect } from 'react'
2
+ import { PaymentRequestButtonElement, useStripe } from '@stripe/react-stripe-js'
3
+ import { CardForm as CardFormController, useConfig, useLanguage } from 'ordering-components-admin-external'
4
+ import Skeleton from 'react-loading-skeleton'
5
+ import { Container } from './styles'
6
+ export const StripeMethodFormUI = (props) => {
7
+ const {
8
+ cart,
9
+ handleSource,
10
+ handleCancel,
11
+ paymethod,
12
+ cartGroup
13
+ } = props
14
+
15
+ const [, t] = useLanguage()
16
+ const stripe = useStripe()
17
+ const [{ configs }] = useConfig()
18
+ const [paymentRequest, setPaymentRequest] = useState(null)
19
+ const [methodUnavailable, setMethodUnavailable] = useState(false)
20
+
21
+ const googlePayMethods = ['google_pay', 'global_google_pay']
22
+
23
+ useEffect(() => {
24
+ if (stripe) {
25
+ let cartNames = ''
26
+ if (cartGroup) {
27
+ // eslint-disable-next-line no-unused-expressions
28
+ cartGroup?.carts.map((cart, i) => (
29
+ cartNames = `${cart?.business?.name} ${i !== cartNames?.carts?.length && ', '}`
30
+ ))
31
+ }
32
+ const pr = stripe.paymentRequest({
33
+ country: 'US',
34
+ currency: configs?.stripe_currency?.value?.toLowerCase?.() || 'usd',
35
+ total: {
36
+ label: cartNames || cart?.business?.name,
37
+ amount: Math.floor((cartGroup?.balance || cartGroup?.total || cart?.balance || cart?.total) * 100)
38
+ },
39
+ requestPayerName: true,
40
+ requestPayerEmail: true
41
+ })
42
+ pr.canMakePayment().then(result => {
43
+ if (result) {
44
+ setPaymentRequest(pr)
45
+ } else {
46
+ setMethodUnavailable(true)
47
+ }
48
+ })
49
+ pr.on('paymentmethod', async (e) => {
50
+ const data = {
51
+ ...e?.paymentMethod?.card,
52
+ id: e.paymentMethod.id,
53
+ type: e.paymentMethod.type,
54
+ source_id: e?.paymentMethod?.id,
55
+ card: {
56
+ brand: e.paymentMethod.card.brand,
57
+ last4: e.paymentMethod.card.last4
58
+ }
59
+ }
60
+ e.complete('success')
61
+ handleCancel()
62
+ handleSource(cartGroup ? JSON.stringify(data) : data)
63
+ })
64
+ }
65
+ }, [stripe])
66
+
67
+ return (
68
+ <Container>
69
+ {methodUnavailable ? (
70
+ <h2>{googlePayMethods.includes(paymethod) ? t('GOOGLE_PAY_UNAVAILABLE', 'Google pay unavailable') : t('APPLE_PAY_UNAVAILABLE', 'Apple pay unavailable')}</h2>
71
+ ) : (
72
+ <>
73
+ {paymentRequest ? (
74
+ <PaymentRequestButtonElement options={{ paymentRequest }} />
75
+ ) : (
76
+ <Skeleton />
77
+ )}
78
+ </>
79
+ )}
80
+ </Container>
81
+ )
82
+ }
83
+
84
+ export const StripeMethodForm = (props) => {
85
+ const propsController = {
86
+ ...props,
87
+ UIComponent: StripeMethodFormUI
88
+ }
89
+ return <CardFormController {...propsController} />
90
+ }
@@ -0,0 +1,9 @@
1
+ import styled from 'styled-components'
2
+
3
+ export const Container = styled.div`
4
+ width: 100%;
5
+ span {
6
+ width: 100%;
7
+ height: 35px;
8
+ }
9
+ `
@@ -0,0 +1,96 @@
1
+ import React from 'react'
2
+ import { useForm } from 'react-hook-form'
3
+ import { StripeRedirectForm as StripeRedirectFormController, useSession, useLanguage } from 'ordering-components-admin-external'
4
+ import { Button, Input } from '../../../../styles'
5
+
6
+ import {
7
+ FormRedirect,
8
+ FormGroup,
9
+ ErrorMessage
10
+ } from './styles'
11
+
12
+ const StripeRedirectFormUI = (props) => {
13
+ const {
14
+ paymethods,
15
+ handleSubmitPaymentMethod
16
+ } = props
17
+
18
+ const [{ user }] = useSession()
19
+ const { handleSubmit, register, errors, formState } = useForm()
20
+ const [, t] = useLanguage()
21
+
22
+ return (
23
+ <>
24
+ <FormRedirect onSubmit={handleSubmit(handleSubmitPaymentMethod)}>
25
+
26
+ <FormGroup>
27
+ <label>{t('SELECT_A_PAYMENT_METHOD', 'Select a payment method')}</label>
28
+ <select
29
+ name='type'
30
+ ref={
31
+ register({
32
+ required: true
33
+ })
34
+ }
35
+ >
36
+ <option value=''>{t('SELECT_A_PAYMENT_METHOD', 'Select a payment method')}</option>
37
+ {paymethods?.length > 0 && paymethods.map((paymethod, i) => (
38
+ <option key={i} value={paymethod.value}>{paymethod.name}</option>
39
+ ))}
40
+ </select>
41
+ {errors.type && errors.type.type === 'required' && (
42
+ <ErrorMessage>{t('FIELD_REQUIRED', 'This field is required')}</ErrorMessage>
43
+ )}
44
+ </FormGroup>
45
+
46
+ <FormGroup>
47
+ <label>{t('ACCOUNT_HOLDER', 'Account holder')}</label>
48
+ <Input
49
+ name='name'
50
+ defaultValue={user?.name}
51
+ placeholder={t('TYPE_ACCOUNT_HOLDER', 'Type an Account holder')}
52
+ ref={
53
+ register({
54
+ required: true
55
+ })
56
+ }
57
+ autoComplete='off'
58
+ />
59
+ {errors.name && errors.name.type === 'required' && (
60
+ <ErrorMessage>{t('FIELD_REQUIRED', 'This field is required')}</ErrorMessage>
61
+ )}
62
+ </FormGroup>
63
+
64
+ <FormGroup>
65
+ <label>{t('EMAIL', 'Email')}</label>
66
+ <Input
67
+ name='email'
68
+ type='email'
69
+ defaultValue={user?.email}
70
+ placeholder={t('TYPE_AN_EMAIL', 'Type an email')}
71
+ ref={
72
+ register({
73
+ required: true
74
+ })
75
+ }
76
+ autoComplete='off'
77
+ />
78
+ {errors.email && errors.email.type === 'required' && (
79
+ <ErrorMessage>{t('FIELD_REQUIRED', 'This field is required')}</ErrorMessage>
80
+ )}
81
+ </FormGroup>
82
+ <Button borderRadius='8px' color='primary' type='submit' disabled={formState.isSubmitting}>
83
+ {formState.isSubmitting ? t('LOADING', 'Loading...') : t('OK', 'OK')}
84
+ </Button>
85
+ </FormRedirect>
86
+ </>
87
+ )
88
+ }
89
+
90
+ export const StripeRedirectForm = (props) => {
91
+ const stripeRedirectFormProps = {
92
+ ...props,
93
+ UIComponent: StripeRedirectFormUI
94
+ }
95
+ return <StripeRedirectFormController {...stripeRedirectFormProps} />
96
+ }
@@ -0,0 +1,73 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const FormRedirect = styled.form`
4
+ display: flex;
5
+ flex-direction: column;
6
+ padding-left: 10px;
7
+ ${props => props.theme?.rtl && css`
8
+ padding-right: 10px;
9
+ padding-left: 0px;
10
+ `}
11
+ button {
12
+ width: 100%;
13
+ padding-top: 8px;
14
+ padding-bottom: 8px;
15
+ margin-top: 10px;
16
+
17
+ &:disabled {
18
+ opacity: 0.5;
19
+ }
20
+ }
21
+
22
+ .StripeElement,
23
+ .StripeElementIdeal {
24
+ display: block;
25
+ margin: 0 10px;
26
+ padding: 10px 14px;
27
+ box-shadow: rgba(50, 50, 93, 0.14902) 0px 1px 3px,
28
+ rgba(0, 0, 0, 0.0196078) 0px 1px 0px;
29
+ border-radius: 4px;
30
+ background: white;
31
+ }
32
+
33
+ .StripeElement--focus,
34
+ .StripeElementIdeal--focus {
35
+ box-shadow: rgba(50, 50, 93, 0.109804) 0px 4px 6px,
36
+ rgba(0, 0, 0, 0.0784314) 0px 1px 3px;
37
+ -webkit-transition: all 150ms ease;
38
+ transition: all 150ms ease;
39
+ }
40
+
41
+ .StripeElement.loading {
42
+ height: 41.6px;
43
+ opacity: 0.6;
44
+ }
45
+
46
+ .StripeElementIdeal {
47
+ padding: 0;
48
+ }
49
+ `
50
+
51
+ export const FormGroup = styled.div`
52
+ display: flex;
53
+ flex-direction: column;
54
+ margin-bottom: 10px;
55
+
56
+ label {
57
+ margin-bottom: 5px;
58
+ }
59
+
60
+ select {
61
+ padding: 7px 5px;
62
+ margin-top: 8px;
63
+ font-size: 16px;
64
+ border-radius: 7.6px;
65
+ border: 1px solid #DBDCDB;
66
+ }
67
+ `
68
+
69
+ export const ErrorMessage = styled.p`
70
+ color: #D81212;
71
+ margin: 10px 0 0 0;
72
+ font-weight: bold;
73
+ `
@@ -0,0 +1,69 @@
1
+ import React from 'react'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
+ import { SingleProductCard } from '../SingleProductCard'
4
+ import { TaxInformationContainer, ProductContainer } from './styles'
5
+
6
+ export const TaxInformation = (props) => {
7
+ const {
8
+ data,
9
+ products,
10
+ type
11
+ } = props
12
+
13
+ const [, t] = useLanguage()
14
+
15
+ const includedOnPriceString = data?.type === 1 ? `(${t('INCLUDED_ON_PRICE', 'Included on price')})` : `(${t('NOT_INCLUDED_ON_PRICE', 'Not included on price')})`
16
+ const offersHideArray = ['offer_target_2', 'offer_target_3']
17
+ const hideProductsSectionOffers = offersHideArray.includes(type)
18
+ const dataHideArray = ['platform', 'business']
19
+ const hideProductsSectionData = dataHideArray.includes(data.type)
20
+
21
+ const getFilterValidation = (product) => {
22
+ return (
23
+ type === 'tax'
24
+ ? (product.tax?.id ? product.tax?.id === data?.id : product.tax?.id === null && data?.id === null)
25
+ : type === 'fee'
26
+ ? (product.fee?.id ? product.fee?.id === data?.id : (product.fee?.id === null && data?.id === null))
27
+ : Object.keys(data?.discounts ?? {}).find(code => code.includes(product?.code))
28
+ )
29
+ }
30
+
31
+ const getTypeString = () => {
32
+ return (
33
+ type === 'offer_target_1'
34
+ ? t('PRODUCT_DISCOUNT', 'Product discount')
35
+ : type === 'tax'
36
+ ? t('TAX', 'Tax')
37
+ : t('Fee', 'Fee')
38
+ )
39
+ }
40
+
41
+ return (
42
+ <TaxInformationContainer>
43
+ {data?.description ? (
44
+ <h2>
45
+ {t('DESCRIPTION', 'Description')}: {data?.description} {data?.type && !type.includes('offer') && includedOnPriceString}
46
+ </h2>
47
+ ) : (
48
+ <h2>
49
+ {t('WITHOUT_DESCRIPTION', 'Without description')}
50
+ </h2>
51
+ )}
52
+ {!hideProductsSectionOffers && !hideProductsSectionData && (
53
+ <>
54
+ <h3>{t('OTHER_PRODUCTS_WITH_THIS', 'Other products with this')} {getTypeString()}:</h3>
55
+ <ProductContainer>
56
+ {
57
+ products.filter(product => getFilterValidation(product)).map(product => (
58
+ <SingleProductCard
59
+ key={product.id}
60
+ product={product}
61
+ />
62
+ ))
63
+ }
64
+ </ProductContainer>
65
+ </>
66
+ )}
67
+ </TaxInformationContainer>
68
+ )
69
+ }
@@ -0,0 +1,25 @@
1
+ import styled from 'styled-components'
2
+
3
+ export const TaxInformationContainer = styled.div`
4
+ h2{
5
+ font-size: 22px;
6
+ margin: 10px;
7
+ text-align: center;
8
+ }
9
+ h3{
10
+ font-size: 18px;
11
+ }
12
+ `
13
+
14
+ export const ProductContainer = styled.div`
15
+ display: flex;
16
+ flex-wrap: wrap;
17
+ > div{
18
+ border: 1px solid #E9ECEF;
19
+ cursor: initial;
20
+ @media (min-width: 681px){
21
+ width: calc(50% - 45px);
22
+ }
23
+
24
+ }
25
+ `
@@ -0,0 +1,45 @@
1
+ import React, { useState } from 'react'
2
+ import { useLanguage } from 'ordering-components-admin-external'
3
+ import { CustomOrderDetails } from './CustomOrderDetails'
4
+ import { SideBar } from '../../Shared'
5
+ import { Button } from '../../../styles'
6
+
7
+ export const CreateCustomOrder = (props) => {
8
+ const {
9
+ handleOpenCustomOrderDetail
10
+ } = props
11
+
12
+ const [, t] = useLanguage()
13
+ const [openSidebar, setOpenSidebar] = useState(false)
14
+ const [moveDistance, setMoveDistance] = useState(0)
15
+
16
+ return (
17
+ <>
18
+ <Button
19
+ borderRadius='7.6px'
20
+ color='lightPrimary'
21
+ onClick={() => setOpenSidebar(true)}
22
+ >
23
+ {t('CREATE_CUSTOM_ORDER', 'Create custom order')}
24
+ </Button>
25
+ {openSidebar && (
26
+ <SideBar
27
+ sidebarId='custom_order_details'
28
+ open={openSidebar}
29
+ onClose={() => {
30
+ setMoveDistance(0)
31
+ setOpenSidebar(false)
32
+ }}
33
+ defaultSideBarWidth={500 + moveDistance}
34
+ moveDistance={moveDistance}
35
+ >
36
+ <CustomOrderDetails
37
+ handleParentSidebarMove={val => setMoveDistance(val)}
38
+ handleOpenCustomOrderDetail={handleOpenCustomOrderDetail}
39
+ onClose={() => setOpenSidebar(false)}
40
+ />
41
+ </SideBar>
42
+ )}
43
+ </>
44
+ )
45
+ }
@@ -112,7 +112,7 @@ export const OrderToPrintTicket = forwardRef((props, ref) => {
112
112
  {!!order?.customer?.internal_number && (
113
113
  `${t('INTERNAL_NUMBER', 'Internal Number')}: ${order?.customer?.internal_number}`)}
114
114
  <br />
115
- {!!order?.customer.zipcode && (
115
+ {!!order?.customer?.zipcode && (
116
116
  `${t('ZIPCODE', 'Zipcode')}: ${order?.customer.zipcode}`
117
117
  )}
118
118
  </PrintTextContainer>
@@ -3,6 +3,7 @@ import { useSession } from 'ordering-components-admin-external'
3
3
  import { OrderStatusTypeSelector } from '../OrderStatusTypeSelector'
4
4
  import { OrdersExportCSV } from '../OrdersExportCSV'
5
5
  import { OrderDelete } from '../OrderDelete'
6
+ import { CreateCustomOrder } from '../CreateCustomOrder'
6
7
  import {
7
8
  OrderDashboardControlsContainer,
8
9
  InnerContnet,
@@ -14,7 +15,8 @@ export const OrdersDashboardControls = (props) => {
14
15
  selectedOrderNumber,
15
16
  filterValues,
16
17
  handleDeleteMultiOrders,
17
- handleChangeMultiOrdersStatus
18
+ handleChangeMultiOrdersStatus,
19
+ handleOpenCustomOrderDetail
18
20
  } = props
19
21
 
20
22
  const [{ user }] = useSession()
@@ -23,6 +25,7 @@ export const OrdersDashboardControls = (props) => {
23
25
  <>
24
26
  <OrderDashboardControlsContainer>
25
27
  <InnerContnet>
28
+ <CreateCustomOrder handleOpenCustomOrderDetail={handleOpenCustomOrderDetail} />
26
29
  <OrdersExportCSV filterValues={filterValues} />
27
30
  {selectedOrderNumber > 0 && (
28
31
  <>
@@ -4,20 +4,22 @@ export const OrderDashboardControlsContainer = styled.div`
4
4
  display: flex;
5
5
  margin-top: 10px;
6
6
 
7
- button {
8
- height: 42px;
9
- ${props => props.theme?.rtl ? css`
10
- margin-left: 14px;
11
- ` : css`
12
- margin-right: 14px;
13
- `}
14
-
15
- svg {
7
+ > div {
8
+ > button {
9
+ height: 42px;
16
10
  ${props => props.theme?.rtl ? css`
17
- margin-right: 5px;
11
+ margin-left: 14px;
18
12
  ` : css`
19
- margin-left: 5px;
13
+ margin-right: 14px;
20
14
  `}
15
+
16
+ svg {
17
+ ${props => props.theme?.rtl ? css`
18
+ margin-right: 5px;
19
+ ` : css`
20
+ margin-left: 5px;
21
+ `}
22
+ }
21
23
  }
22
24
  }
23
25
 
@@ -2,6 +2,22 @@ import styled, { css } from 'styled-components'
2
2
 
3
3
  export const ExportContainer = styled.div`
4
4
  position: relative;
5
+ > button {
6
+ height: 42px;
7
+ ${props => props.theme?.rtl ? css`
8
+ margin-left: 14px;
9
+ ` : css`
10
+ margin-right: 14px;
11
+ `}
12
+
13
+ svg {
14
+ ${props => props.theme?.rtl ? css`
15
+ margin-right: 5px;
16
+ ` : css`
17
+ margin-left: 5px;
18
+ `}
19
+ }
20
+ }
5
21
  `
6
22
 
7
23
  export const PopoverContainer = styled.div`
@@ -191,7 +191,7 @@ const OrdersManagerUI = (props) => {
191
191
  changeOrderStatus={handleOrdersStatusGroupFilter}
192
192
  numberOfOrdersByStatus={numberOfOrdersByStatus}
193
193
  />
194
- <OrderSubFilterControls isColumn={selectedOrderIds?.length}>
194
+ <OrderSubFilterControls>
195
195
  <OrderStatusSubFilterWrapper isColumn={selectedOrderIds?.length}>
196
196
  <OrderStatusSubFilter
197
197
  ordersStatusGroup={ordersStatusGroup}
@@ -205,6 +205,10 @@ const OrdersManagerUI = (props) => {
205
205
  filterValues={filterValues}
206
206
  handleChangeMultiOrdersStatus={handleChangeMultiOrdersStatus}
207
207
  handleDeleteMultiOrders={handleDeleteMultiOrders}
208
+ handleOpenCustomOrderDetail={(id) => {
209
+ setOrderDetailId(id)
210
+ setIsOpenOrderDetail(true)
211
+ }}
208
212
  />
209
213
  )}
210
214
  </OrderSubFilterControls>
@@ -43,6 +43,8 @@ export const OrderSubFilterControls = styled.div`
43
43
  display: flex;
44
44
  justify-content: space-between;
45
45
  width: 100%;
46
+ flex-direction: row;
47
+ justify-content: space-between;
46
48
  `
47
49
  export const OrderStatusSubFilterWrapper = styled.div`
48
50
  width: 50%;
@@ -83,6 +83,7 @@ export const AutoScroll = ({ children, modal, special, innerScroll, scrollId })
83
83
  useEffect(() => {
84
84
  if (!scrollId) return
85
85
  const element = document?.getElementById(`${autoScrollId}`)?.parentNode
86
+ if (!element) return
86
87
  setParentWidth(element.width)
87
88
  setParentElement(element)
88
89
  }, [scrollId])
@@ -0,0 +1,17 @@
1
+ import React from 'react'
2
+ import Linkify from 'react-linkify'
3
+
4
+ export const LinkableText = (props) => {
5
+ const { text } = props
6
+ return (
7
+ <Linkify
8
+ componentDecorator={(decoratedHref, decoratedText, key) => (
9
+ <a target='blank' href={decoratedHref} key={key}>
10
+ {decoratedText}
11
+ </a>
12
+ )}
13
+ >
14
+ {text}
15
+ </Linkify>
16
+ )
17
+ }
@@ -0,0 +1,28 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const Tabs = styled.div`
4
+ display: flex;
5
+ border-bottom: 1px solid ${props => props.theme.colors.borderColor};
6
+ `
7
+
8
+ export const Tab = styled.div`
9
+ padding: 10px 0;
10
+ ${props => props.theme?.rtl ? css`
11
+ margin-left: 30px;
12
+ ` : css`
13
+ margin-right: 30px;
14
+ `}
15
+ cursor: pointer;
16
+ color: ${props => props.theme.colors?.headingColor};
17
+ white-space: nowrap;
18
+ font-size: 14px;
19
+
20
+ ${({ active }) => active && css`
21
+ border-bottom: 3px solid;
22
+ font-weight: 500;
23
+ `}
24
+
25
+ ${({ active }) => !active && css`
26
+ color: ${props => props.theme.colors.lightGray};
27
+ `}
28
+ `
@@ -7,6 +7,7 @@ import { DragScroll } from './DragScroll'
7
7
  import { Image } from './Image'
8
8
  import { ImageCrop } from './ImageCrop'
9
9
  import { InputPhoneNumber } from './InputPhoneNumber'
10
+ import { LinkableText } from './LinkableText'
10
11
  import { Modal } from './Modal'
11
12
  import { MoreSidebarLayout } from './MoreSidebarLayout'
12
13
  import { NotFoundSource } from './NotFoundSource'
@@ -17,6 +18,7 @@ import { ProtectedRoute } from './ProtectedRoute'
17
18
  import { Schedule } from './Schedule'
18
19
  import { SearchBar } from './SearchBar'
19
20
  import { RangeCalendar } from './RangeCalendar'
21
+ import { Tabs, Tab } from './Tabs'
20
22
 
21
23
  import { SelectBusinessCategories } from './SelectBusinessCategories'
22
24
  import { SelectBusinessProducts } from './SelectBusinessProducts'
@@ -42,6 +44,7 @@ export {
42
44
  Image,
43
45
  ImageCrop,
44
46
  InputPhoneNumber,
47
+ LinkableText,
45
48
  Modal,
46
49
  MoreSidebarLayout,
47
50
  NotFoundSource,
@@ -52,6 +55,8 @@ export {
52
55
  Schedule,
53
56
  SearchBar,
54
57
  RangeCalendar,
58
+ Tabs,
59
+ Tab,
55
60
 
56
61
  SelectBusinessCategories,
57
62
  SelectBusinessProducts,
@@ -388,7 +388,7 @@ const SidebarMenuUI = (props) => {
388
388
  }
389
389
 
390
390
  const handleOpenSite = () => {
391
- handleGoToLink(`https://${ordering.project}.tryordering.com`)
391
+ handleGoToLink(configs?.site_url?.value || `https://${ordering.project}.tryordering.com`)
392
392
  }
393
393
 
394
394
  useEffect(() => {
@@ -7,6 +7,7 @@ import RiImageAddFill from '@meronex/icons/ri/RiImageAddFill'
7
7
  import {
8
8
  useLanguage,
9
9
  useApi,
10
+ useConfig,
10
11
  BusinessProductsListing as BusinessProductsListingController
11
12
  } from 'ordering-components-admin-external'
12
13
  import { BusinessProductsCategoyDetails } from '../BusinessProductsCategoyDetails'
@@ -46,6 +47,7 @@ import {
46
47
  ColumnsAllowWrapper,
47
48
  ButtonWrapper
48
49
  } from './styles'
50
+ import { checkSiteUrl } from '../../../utils'
49
51
 
50
52
  const BusinessProductsListingUI = (props) => {
51
53
  const {
@@ -83,6 +85,7 @@ const BusinessProductsListingUI = (props) => {
83
85
  const [, t] = useLanguage()
84
86
  const { width } = useWindowSize()
85
87
  const [ordering] = useApi()
88
+ const [{ configs }] = useConfig()
86
89
  const [{ isCollapse }, { handleMenuCollapse }] = useInfoShare()
87
90
  const [viewMethod, setViewMethod] = useState('list')
88
91
  const [currentCategory, setCurrentCategory] = useState(null)
@@ -219,10 +222,10 @@ const BusinessProductsListingUI = (props) => {
219
222
  }
220
223
 
221
224
  const handleOpenSite = () => {
222
- const url = siteState?.site?.domain && siteState?.site?.ssl_process_status === 'ended'
223
- ? `https://${siteState?.site?.domain}/store/${businessState?.business?.slug}`
225
+ const storeUrl = configs?.site_url?.value
226
+ ? `${checkSiteUrl(configs?.site_url?.value)}store/${businessState?.business?.slug}`
224
227
  : `https://${ordering.project}.tryordering.com/store/${businessState?.business?.slug}`
225
- window.open(url, '_blank')
228
+ window.open(storeUrl, '_blank')
226
229
  }
227
230
 
228
231
  const handleOpenAddBusiness = () => {