ordering-ui-admin-external 1.28.1 → 1.29.3

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 (190) hide show
  1. package/_bundles/main.css +294 -26
  2. package/_bundles/{ordering-ui-admin.d6c72a98321193c34fe9.js → ordering-ui-admin.e0348521ef103574aa53.js} +2 -2
  3. package/_bundles/{ordering-ui-admin.d6c72a98321193c34fe9.js.LICENSE.txt → ordering-ui-admin.e0348521ef103574aa53.js.LICENSE.txt} +12 -18
  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/DeliveryUsersListing/index.js +45 -7
  8. package/_modules/components/Delivery/DriversGroupLogs/index.js +5 -2
  9. package/_modules/components/Delivery/UsersList/index.js +17 -4
  10. package/_modules/components/Delivery/UsersList/styles.js +9 -4
  11. package/_modules/components/Home/HomePage/index.js +5 -1
  12. package/_modules/components/MyProducts/OrderingWebsite/index.js +5 -1
  13. package/_modules/components/OrderingProducts/SiteTheme/index.js +1 -1
  14. package/_modules/components/Orders/CompanySelector/index.js +2 -2
  15. package/_modules/components/Orders/CompanySelector/styles.js +1 -1
  16. package/_modules/components/Orders/CreateCustomOrder/CardForm/index.js +96 -0
  17. package/_modules/components/Orders/CreateCustomOrder/CardForm/styles.js +35 -0
  18. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +102 -0
  19. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/index.js +148 -0
  20. package/_modules/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +16 -0
  21. package/_modules/components/Orders/CreateCustomOrder/CartBill/index.js +275 -0
  22. package/_modules/components/Orders/CreateCustomOrder/CartBill/styles.js +23 -0
  23. package/_modules/components/Orders/CreateCustomOrder/Checkout/index.js +498 -0
  24. package/_modules/components/Orders/CreateCustomOrder/Checkout/styles.js +31 -0
  25. package/_modules/components/Orders/CreateCustomOrder/CouponControl/index.js +100 -0
  26. package/_modules/components/Orders/CreateCustomOrder/CouponControl/styles.js +17 -0
  27. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +139 -0
  28. package/_modules/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +17 -0
  29. package/_modules/components/Orders/CreateCustomOrder/DriverTips/index.js +101 -0
  30. package/_modules/components/Orders/CreateCustomOrder/DriverTips/styles.js +37 -0
  31. package/_modules/components/Orders/CreateCustomOrder/Map/index.js +131 -0
  32. package/_modules/components/Orders/CreateCustomOrder/Map/styles.js +12 -0
  33. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +83 -0
  34. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +81 -0
  35. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +23 -0
  36. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +45 -0
  37. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +12 -0
  38. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +112 -0
  39. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +21 -0
  40. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +259 -0
  41. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +66 -0
  42. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +173 -0
  43. package/_modules/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +26 -0
  44. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/index.js +400 -0
  45. package/_modules/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +40 -0
  46. package/_modules/components/Orders/CreateCustomOrder/ProductForm/index.js +613 -0
  47. package/_modules/components/Orders/CreateCustomOrder/ProductForm/styles.js +109 -0
  48. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/index.js +39 -0
  49. package/_modules/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +23 -0
  50. package/_modules/components/Orders/CreateCustomOrder/ProductOption/index.js +51 -0
  51. package/_modules/components/Orders/CreateCustomOrder/ProductOption/styles.js +29 -0
  52. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +148 -0
  53. package/_modules/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +79 -0
  54. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +82 -0
  55. package/_modules/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +21 -0
  56. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/index.js +192 -0
  57. package/_modules/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +68 -0
  58. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/index.js +234 -0
  59. package/_modules/components/Orders/CreateCustomOrder/SelectProducts/styles.js +54 -0
  60. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/index.js +99 -0
  61. package/_modules/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +131 -0
  62. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +73 -0
  63. package/_modules/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +17 -0
  64. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +124 -0
  65. package/_modules/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +12 -0
  66. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +83 -0
  67. package/_modules/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +21 -0
  68. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/index.js +48 -0
  69. package/_modules/components/Orders/CreateCustomOrder/TaxInformation/styles.js +14 -0
  70. package/_modules/components/Orders/CreateCustomOrder/index.js +59 -0
  71. package/_modules/components/Orders/DriverSelector/index.js +2 -2
  72. package/_modules/components/Orders/DriverSelector/styles.js +1 -1
  73. package/_modules/components/Orders/OrderContactInformation/styles.js +1 -1
  74. package/_modules/components/Orders/OrderDetails/styles.js +1 -1
  75. package/_modules/components/Orders/OrderStatusTypeSelector/styles.js +1 -1
  76. package/_modules/components/Orders/OrderToPrintTicket/index.js +2 -2
  77. package/_modules/components/Orders/OrdersContentHeader/index.js +6 -4
  78. package/_modules/components/Orders/OrdersContentHeader/styles.js +13 -7
  79. package/_modules/components/Orders/OrdersDashboardControls/index.js +6 -2
  80. package/_modules/components/Orders/OrdersDashboardControls/styles.js +3 -3
  81. package/_modules/components/Orders/OrdersExportCSV/styles.js +14 -8
  82. package/_modules/components/Orders/OrdersManager/index.js +7 -5
  83. package/_modules/components/Orders/OrdersManager/styles.js +1 -1
  84. package/_modules/components/Shared/AutoScroll/index.js +1 -0
  85. package/_modules/components/Shared/LinkableText/index.js +22 -0
  86. package/_modules/components/Shared/Tabs/index.js +32 -0
  87. package/_modules/components/Shared/index.js +20 -0
  88. package/_modules/components/SidebarMenu/index.js +2 -1
  89. package/_modules/components/Stores/BusinessProductsListing/index.js +7 -3
  90. package/_modules/components/Stores/BusinessQRCodeOption/index.js +6 -2
  91. package/_modules/components/Stores/BusinessSummary/index.js +7 -3
  92. package/_modules/components/Users/UserAddForm/index.js +15 -6
  93. package/_modules/components/Users/UserAddForm/styles.js +1 -1
  94. package/_modules/styles/Selects/index.js +1 -1
  95. package/_modules/utils/index.js +9 -2
  96. package/index-template.js +1 -1
  97. package/package.json +6 -4
  98. package/src/components/Delivery/AddressForm/styles.js +3 -3
  99. package/src/components/Delivery/AddressList/index.js +6 -61
  100. package/src/components/Delivery/AddressList/styles.js +1 -1
  101. package/src/components/Delivery/DeliveryUsersListing/index.js +26 -3
  102. package/src/components/Delivery/DriversGroupLogs/index.js +8 -2
  103. package/src/components/Delivery/UsersList/index.js +27 -12
  104. package/src/components/Delivery/UsersList/styles.js +16 -0
  105. package/src/components/Home/HomePage/index.js +3 -2
  106. package/src/components/MyProducts/OrderingWebsite/index.js +9 -8
  107. package/src/components/OrderingProducts/SiteTheme/index.js +1 -1
  108. package/src/components/Orders/CompanySelector/index.js +4 -6
  109. package/src/components/Orders/CompanySelector/styles.js +10 -0
  110. package/src/components/Orders/CreateCustomOrder/CardForm/index.js +135 -0
  111. package/src/components/Orders/CreateCustomOrder/CardForm/styles.js +135 -0
  112. package/src/components/Orders/CreateCustomOrder/CardFormCustom/cardUtils.js +111 -0
  113. package/src/components/Orders/CreateCustomOrder/CardFormCustom/index.js +161 -0
  114. package/src/components/Orders/CreateCustomOrder/CardFormCustom/styles.js +20 -0
  115. package/src/components/Orders/CreateCustomOrder/CartBill/index.js +267 -0
  116. package/src/components/Orders/CreateCustomOrder/CartBill/styles.js +67 -0
  117. package/src/components/Orders/CreateCustomOrder/Checkout/index.js +519 -0
  118. package/src/components/Orders/CreateCustomOrder/Checkout/styles.js +85 -0
  119. package/src/components/Orders/CreateCustomOrder/CouponControl/index.js +90 -0
  120. package/src/components/Orders/CreateCustomOrder/CouponControl/styles.js +22 -0
  121. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/index.js +132 -0
  122. package/src/components/Orders/CreateCustomOrder/CustomOrderDetails/styles.js +28 -0
  123. package/src/components/Orders/CreateCustomOrder/DriverTips/index.js +113 -0
  124. package/src/components/Orders/CreateCustomOrder/DriverTips/styles.js +91 -0
  125. package/src/components/Orders/CreateCustomOrder/Map/index.js +115 -0
  126. package/src/components/Orders/CreateCustomOrder/Map/styles.js +10 -0
  127. package/src/components/Orders/CreateCustomOrder/PaymentOptionCard/index.js +70 -0
  128. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/index.js +83 -0
  129. package/src/components/Orders/CreateCustomOrder/PaymentOptionCash/styles.js +50 -0
  130. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/index.js +43 -0
  131. package/src/components/Orders/CreateCustomOrder/PaymentOptionPaypal/styles.js +5 -0
  132. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/index.js +105 -0
  133. package/src/components/Orders/CreateCustomOrder/PaymentOptionSquare/styles.js +27 -0
  134. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/index.js +261 -0
  135. package/src/components/Orders/CreateCustomOrder/PaymentOptionStripe/styles.js +159 -0
  136. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/index.js +172 -0
  137. package/src/components/Orders/CreateCustomOrder/PaymentOptionWallet/styles.js +33 -0
  138. package/src/components/Orders/CreateCustomOrder/PaymentOptions/index.js +440 -0
  139. package/src/components/Orders/CreateCustomOrder/PaymentOptions/styles.js +132 -0
  140. package/src/components/Orders/CreateCustomOrder/ProductForm/index.js +701 -0
  141. package/src/components/Orders/CreateCustomOrder/ProductForm/styles.js +540 -0
  142. package/src/components/Orders/CreateCustomOrder/ProductIngredient/index.js +43 -0
  143. package/src/components/Orders/CreateCustomOrder/ProductIngredient/styles.js +29 -0
  144. package/src/components/Orders/CreateCustomOrder/ProductOption/index.js +58 -0
  145. package/src/components/Orders/CreateCustomOrder/ProductOption/styles.js +76 -0
  146. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/index.js +182 -0
  147. package/src/components/Orders/CreateCustomOrder/ProductOptionSubOption/styles.js +195 -0
  148. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/index.js +67 -0
  149. package/src/components/Orders/CreateCustomOrder/SelectBusinesses/styles.js +63 -0
  150. package/src/components/Orders/CreateCustomOrder/SelectCustomer/index.js +242 -0
  151. package/src/components/Orders/CreateCustomOrder/SelectCustomer/styles.js +235 -0
  152. package/src/components/Orders/CreateCustomOrder/SelectProducts/index.js +237 -0
  153. package/src/components/Orders/CreateCustomOrder/SelectProducts/styles.js +161 -0
  154. package/src/components/Orders/CreateCustomOrder/SingleProductCard/index.js +105 -0
  155. package/src/components/Orders/CreateCustomOrder/SingleProductCard/styles.js +314 -0
  156. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/index.js +71 -0
  157. package/src/components/Orders/CreateCustomOrder/StripeElementsForm/styles.js +13 -0
  158. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/index.js +90 -0
  159. package/src/components/Orders/CreateCustomOrder/StripeMethodForm/styles.js +9 -0
  160. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/index.js +96 -0
  161. package/src/components/Orders/CreateCustomOrder/StripeRedirectForm/styles.js +73 -0
  162. package/src/components/Orders/CreateCustomOrder/TaxInformation/index.js +69 -0
  163. package/src/components/Orders/CreateCustomOrder/TaxInformation/styles.js +25 -0
  164. package/src/components/Orders/CreateCustomOrder/index.js +45 -0
  165. package/src/components/Orders/DriverSelector/index.js +2 -2
  166. package/src/components/Orders/DriverSelector/styles.js +10 -0
  167. package/src/components/Orders/OrderContactInformation/index.js +32 -32
  168. package/src/components/Orders/OrderContactInformation/styles.js +0 -5
  169. package/src/components/Orders/OrderDetails/styles.js +7 -2
  170. package/src/components/Orders/OrderStatusTypeSelector/styles.js +9 -0
  171. package/src/components/Orders/OrderToPrintTicket/index.js +1 -1
  172. package/src/components/Orders/OrdersContentHeader/index.js +4 -4
  173. package/src/components/Orders/OrdersContentHeader/styles.js +7 -2
  174. package/src/components/Orders/OrdersDashboardControls/index.js +4 -1
  175. package/src/components/Orders/OrdersDashboardControls/styles.js +13 -11
  176. package/src/components/Orders/OrdersExportCSV/styles.js +16 -0
  177. package/src/components/Orders/OrdersManager/index.js +6 -2
  178. package/src/components/Orders/OrdersManager/styles.js +2 -0
  179. package/src/components/Shared/AutoScroll/index.js +1 -0
  180. package/src/components/Shared/LinkableText/index.js +17 -0
  181. package/src/components/Shared/Tabs/index.js +28 -0
  182. package/src/components/Shared/index.js +5 -0
  183. package/src/components/SidebarMenu/index.js +1 -1
  184. package/src/components/Stores/BusinessProductsListing/index.js +6 -3
  185. package/src/components/Stores/BusinessQRCodeOption/index.js +5 -3
  186. package/src/components/Stores/BusinessSummary/index.js +6 -4
  187. package/src/components/Users/UserAddForm/index.js +21 -9
  188. package/src/components/Users/UserAddForm/styles.js +2 -2
  189. package/src/styles/Selects/index.js +1 -1
  190. 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
+ }
@@ -62,7 +62,7 @@ const DriverSelectorUI = (props) => {
62
62
  </OptionContent>
63
63
  </>
64
64
  ) : (
65
- t('SELECT_DRIVER', 'Select driver')
65
+ <span>{t('SELECT_DRIVER', 'Select driver')}</span>
66
66
  )}
67
67
  </Option>
68
68
  ),
@@ -75,7 +75,7 @@ const DriverSelectorUI = (props) => {
75
75
  _driversOptionList.push({
76
76
  value: 'remove',
77
77
  content: (
78
- <Option isRemove>{t('REMOVE_DRIVER', 'Remove assigned driver')}</Option>
78
+ <Option isRemove><span>{t('REMOVE_DRIVER', 'Remove assigned driver')}</span></Option>
79
79
  ),
80
80
  disabled: defaultValue === 'default'
81
81
  })
@@ -28,6 +28,13 @@ export const Option = styled.div`
28
28
  }
29
29
  `}
30
30
 
31
+ span {
32
+ overflow: hidden;
33
+ white-space: nowrap;
34
+ text-overflow: ellipsis;
35
+ max-width: 350px;
36
+ }
37
+
31
38
  @media (max-width: 576px) {
32
39
  padding: ${({ padding }) => padding || '5px 0px'};
33
40
  ${({ isFilterView }) => isFilterView && css`
@@ -37,6 +44,9 @@ export const Option = styled.div`
37
44
  margin-left: 10px;
38
45
  `}
39
46
  `}
47
+ span {
48
+ max-width: 280px;
49
+ }
40
50
  }
41
51
  `
42
52
 
@@ -216,38 +216,38 @@ export const OrderContactInformation = (props) => {
216
216
  </Accordion>
217
217
  {order?.delivery_type === 1 && !isServiceOrder && (
218
218
  <>
219
- {!order?.driver_id && (
220
- <DriverSelectorContainer>
221
- <p>{t('DRIVER_COMPANY', 'Driver company')}</p>
222
- <CompanySelector
223
- small
224
- isPhoneView
225
- defaultValue={order?.driver_company_id ?? 'default'}
226
- order={order}
227
- isTourOpen={isTourOpen}
228
- setCurrentTourStep={setCurrentTourStep}
229
- handleOpenMessages={handleOpenMessages}
230
- isOrderDrivers
231
- orderId={order?.id}
232
- />
233
- </DriverSelectorContainer>
234
- )}
235
- {!order?.driver_company_id && (
236
- <DriverSelectorContainer>
237
- <p>{t('DRIVER_ASSIGN', 'Driver assign')}</p>
238
- <DriverSelector
239
- small
240
- isPhoneView
241
- defaultValue={order?.driver_id ?? 'default'}
242
- order={order}
243
- isTourOpen={isTourOpen}
244
- setCurrentTourStep={setCurrentTourStep}
245
- handleOpenMessages={handleOpenMessages}
246
- isOrderDrivers
247
- orderId={order?.id}
248
- />
249
- </DriverSelectorContainer>
250
- )}
219
+ {!order?.driver_id && (
220
+ <DriverSelectorContainer>
221
+ <p>{t('DRIVER_COMPANY', 'Driver company')}</p>
222
+ <CompanySelector
223
+ small
224
+ isPhoneView
225
+ defaultValue={order?.driver_company_id ?? 'default'}
226
+ order={order}
227
+ isTourOpen={isTourOpen}
228
+ setCurrentTourStep={setCurrentTourStep}
229
+ handleOpenMessages={handleOpenMessages}
230
+ isOrderDrivers
231
+ orderId={order?.id}
232
+ />
233
+ </DriverSelectorContainer>
234
+ )}
235
+ {!order?.driver_company_id && (
236
+ <DriverSelectorContainer>
237
+ <p>{t('DRIVER_ASSIGN', 'Driver assign')}</p>
238
+ <DriverSelector
239
+ small
240
+ isPhoneView
241
+ defaultValue={order?.driver_id ?? 'default'}
242
+ order={order}
243
+ isTourOpen={isTourOpen}
244
+ setCurrentTourStep={setCurrentTourStep}
245
+ handleOpenMessages={handleOpenMessages}
246
+ isOrderDrivers
247
+ orderId={order?.id}
248
+ />
249
+ </DriverSelectorContainer>
250
+ )}
251
251
  <DriverInfoContainer>
252
252
  <DriverInfo>
253
253
  <PhotoWrapper>
@@ -134,11 +134,6 @@ export const DriverSelectorContainer = styled.div`
134
134
  }
135
135
  }
136
136
 
137
- @media (min-width: 768px) {
138
- > div {
139
- width: 50%;
140
- }
141
- }
142
137
  @media (max-width: 576px) {
143
138
  > div {
144
139
  p {
@@ -97,8 +97,7 @@ export const ButtonLink = styled.div`
97
97
 
98
98
  export const OrderStatus = styled.div`
99
99
  display: flex;
100
- align-items: center;
101
- justify-content: space-between;
100
+ flex-direction: column;
102
101
  margin: 20px 0;
103
102
 
104
103
  h2 {
@@ -117,6 +116,12 @@ export const OrderStatus = styled.div`
117
116
  ${({ isDisabled }) => isDisabled && css`
118
117
  pointer-events: none;
119
118
  `}
119
+
120
+ @media (min-width: 768px) {
121
+ flex-direction: row;
122
+ align-items: center;
123
+ justify-content: space-between;
124
+ }
120
125
  `
121
126
  export const OrderStatusSelectorWrapper = styled.div`
122
127
  min-width: 50%;
@@ -7,6 +7,15 @@ export const OrderStatusTypeSelectWrapper = styled.div`
7
7
 
8
8
  .orderStatus {
9
9
  width: 100%;
10
+
11
+ > div:first-child {
12
+ p {
13
+ overflow: hidden;
14
+ white-space: nowrap;
15
+ text-overflow: ellipsis;
16
+ max-width: 200px;
17
+ }
18
+ }
10
19
  }
11
20
 
12
21
  .search-bar-container {
@@ -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>
@@ -25,7 +25,7 @@ import {
25
25
  export const OrdersContentHeader = (props) => {
26
26
  const {
27
27
  isDisableTitle,
28
- isDisableControl,
28
+ isSelectedOrders,
29
29
  title,
30
30
  handleChangeSearch,
31
31
  searchValue,
@@ -68,7 +68,7 @@ export const OrdersContentHeader = (props) => {
68
68
  return (
69
69
  <>
70
70
  <OrderContentHeaderContainer
71
- isDisableControl={isDisableControl}
71
+ isDisableControl={isSelectedOrders}
72
72
  >
73
73
  {!isDisableTitle && (
74
74
  <HeaderSection>
@@ -104,7 +104,7 @@ export const OrdersContentHeader = (props) => {
104
104
 
105
105
  </HeaderSection>
106
106
  )}
107
- <TopRightSection>
107
+ <TopRightSection isCustomLayout={isSelectedOrders}>
108
108
  <WebsocketStatus />
109
109
  {isShowMapsKeySettingButton && (
110
110
  <GoogleMapsApiKeySettingButton />
@@ -120,7 +120,7 @@ export const OrdersContentHeader = (props) => {
120
120
  </SLAControlsWrapper>
121
121
  )}
122
122
  <WrapperSearchAndFilter
123
- fullWidth={isDisableTitle && isDisableControl}
123
+ fullWidth={isDisableTitle}
124
124
  >
125
125
  <SearchBar
126
126
  isCustomLayout
@@ -66,8 +66,11 @@ export const HeaderTitle = styled.p`
66
66
  export const TopRightSection = styled.div`
67
67
  width: 100%;
68
68
  display: flex;
69
- justify-content: flex-end;
70
69
  flex-direction: column;
70
+ flex-wrap: wrap;
71
+ ${({ isCustomLayout }) => !isCustomLayout && css`
72
+ justify-content: flex-end;
73
+ `}
71
74
 
72
75
  @media (min-width: 768px) {
73
76
  flex-direction: row;
@@ -119,6 +122,8 @@ export const WrapperSearchAndFilter = styled.div`
119
122
  }
120
123
 
121
124
  @media (min-width: 992px) {
122
- margin: 0px;
125
+ ${({ fullWidth }) => !fullWidth && css`
126
+ margin: 0px;
127
+ `}
123
128
  }
124
129
  `
@@ -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
  <>