ordering-ui-admin-external 1.39.9 → 1.40.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 (114) hide show
  1. package/_bundles/{ordering-ui-admin.a195abab9ce10c18d568.js → ordering-ui-admin.27b7bb0f04b6581074ce.js} +2 -2
  2. package/_modules/components/BusinessIntelligence/InvoiceDriverPdf/index.js +2 -1
  3. package/_modules/components/BusinessIntelligence/Reports/ReportsSlaOrders/index.js +84 -8
  4. package/_modules/components/BusinessIntelligence/Reports/ReportsSlaOrders/styles.js +8 -4
  5. package/_modules/components/Delivery/DriversGroupAddForm/BusinessesForm/index.js +23 -4
  6. package/_modules/components/Delivery/DriversGroupAddForm/BusinessesForm/styles.js +7 -3
  7. package/_modules/components/Delivery/DriversGroupBusinesses/index.js +23 -4
  8. package/_modules/components/Delivery/DriversGroupBusinesses/styles.js +7 -3
  9. package/_modules/components/Delivery/DriversGroupsListing/index.js +2 -0
  10. package/_modules/components/Delivery/UsersListingHeader/index.js +9 -1
  11. package/_modules/components/Delivery/UsersListingHeader/styles.js +17 -2
  12. package/_modules/components/MyProducts/AdvancedSettings/index.js +20 -0
  13. package/_modules/components/MyProducts/AppLayout/index.js +56 -46
  14. package/_modules/components/MyProducts/CallCenterApp/index.js +2 -6
  15. package/_modules/components/MyProducts/CustomProject/index.js +1 -1
  16. package/_modules/components/MyProducts/CustomerApp/index.js +3 -1
  17. package/_modules/components/MyProducts/DriverApp/index.js +3 -1
  18. package/_modules/components/MyProducts/KioskApp/index.js +2 -4
  19. package/_modules/components/MyProducts/StoreApp/index.js +3 -1
  20. package/_modules/components/Orders/AllInOne/DriversManager/index.js +13 -5
  21. package/_modules/components/Orders/AllInOne/index.js +13 -4
  22. package/_modules/components/Orders/DeliveriesLocation/index.js +6 -2
  23. package/_modules/components/Orders/DriversBusyStatusFilter/index.js +5 -2
  24. package/_modules/components/Orders/DriversBusyStatusFilter/styles.js +5 -2
  25. package/_modules/components/Orders/DriversList/Driver.js +67 -0
  26. package/_modules/components/Orders/DriversList/index.js +21 -48
  27. package/_modules/components/Orders/DriversList/styles.js +35 -26
  28. package/_modules/components/Orders/DriversLocation/index.js +8 -13
  29. package/_modules/components/Orders/DriversManager/index.js +10 -1
  30. package/_modules/components/Orders/DriversManager/styles.js +18 -3
  31. package/_modules/components/Orders/DriversOnlineOfflineFilter/index.js +5 -2
  32. package/_modules/components/Orders/DriversOnlineOfflineFilter/styles.js +11 -8
  33. package/_modules/components/Orders/OrderContactInformation/index.js +39 -18
  34. package/_modules/components/Orders/OrderContactInformation/styles.js +4 -3
  35. package/_modules/components/Orders/OrderDetails/index.js +8 -3
  36. package/_modules/components/Orders/OrderDetailsHeader/styles.js +1 -1
  37. package/_modules/components/Orders/OrderStatusTypeSelector/index.js +19 -27
  38. package/_modules/components/Orders/OrdersDashboard/index.js +2 -2
  39. package/_modules/components/Orders/OrdersFilterGroup/index.js +5 -2
  40. package/_modules/components/Orders/OrdersFilterGroup/styles.js +9 -3
  41. package/_modules/components/Orders/OrdersLateralBar/index.js +1 -0
  42. package/_modules/components/Orders/OrdersListing/index.js +12 -3
  43. package/_modules/components/Orders/OrdersListing/styles.js +23 -2
  44. package/_modules/components/Orders/OrdersManager/index.js +4 -2
  45. package/_modules/components/Orders/OrdersManager/test.js +975 -0
  46. package/_modules/components/Orders/OrdersTable/Order.js +230 -0
  47. package/_modules/components/Orders/OrdersTable/index.js +30 -200
  48. package/_modules/components/Orders/ProductItemAccordion/styles.js +1 -1
  49. package/_modules/components/Settings/SettingsLogs/index.js +174 -0
  50. package/_modules/components/Settings/SettingsLogs/styles.js +80 -0
  51. package/_modules/components/Settings/index.js +7 -0
  52. package/_modules/components/SidebarMenu/index.js +6 -1
  53. package/_modules/components/Stores/BusinessAdd/BusinessDetails/index.js +8 -3
  54. package/_modules/index.js +6 -0
  55. package/index-template.js +1 -1
  56. package/package.json +2 -2
  57. package/src/components/BusinessIntelligence/InvoiceDriverPdf/index.js +1 -1
  58. package/src/components/BusinessIntelligence/Reports/ReportsSlaOrders/index.js +71 -2
  59. package/src/components/BusinessIntelligence/Reports/ReportsSlaOrders/styles.js +15 -1
  60. package/src/components/Delivery/DriversGroupAddForm/BusinessesForm/index.js +46 -18
  61. package/src/components/Delivery/DriversGroupAddForm/BusinessesForm/styles.js +12 -0
  62. package/src/components/Delivery/DriversGroupBusinesses/index.js +46 -18
  63. package/src/components/Delivery/DriversGroupBusinesses/styles.js +12 -0
  64. package/src/components/Delivery/DriversGroupsListing/index.js +2 -0
  65. package/src/components/Delivery/UsersListingHeader/index.js +14 -2
  66. package/src/components/Delivery/UsersListingHeader/styles.js +55 -0
  67. package/src/components/MyProducts/AdvancedSettings/index.js +6 -1
  68. package/src/components/MyProducts/AppLayout/index.js +82 -64
  69. package/src/components/MyProducts/CallCenterApp/index.js +2 -6
  70. package/src/components/MyProducts/CustomProject/index.js +1 -1
  71. package/src/components/MyProducts/CustomerApp/index.js +3 -1
  72. package/src/components/MyProducts/DriverApp/index.js +3 -1
  73. package/src/components/MyProducts/KioskApp/index.js +2 -4
  74. package/src/components/MyProducts/StoreApp/index.js +3 -1
  75. package/src/components/Orders/AllInOne/DriversManager/index.js +8 -2
  76. package/src/components/Orders/AllInOne/index.js +10 -2
  77. package/src/components/Orders/DeliveriesLocation/index.js +8 -2
  78. package/src/components/Orders/DriversBusyStatusFilter/index.js +3 -2
  79. package/src/components/Orders/DriversBusyStatusFilter/styles.js +5 -0
  80. package/src/components/Orders/DriversList/Driver.js +61 -0
  81. package/src/components/Orders/DriversList/index.js +14 -41
  82. package/src/components/Orders/DriversList/styles.js +25 -1
  83. package/src/components/Orders/DriversLocation/index.js +12 -25
  84. package/src/components/Orders/DriversManager/index.js +15 -2
  85. package/src/components/Orders/DriversManager/styles.js +55 -0
  86. package/src/components/Orders/DriversOnlineOfflineFilter/index.js +3 -2
  87. package/src/components/Orders/DriversOnlineOfflineFilter/styles.js +11 -0
  88. package/src/components/Orders/OrderContactInformation/index.js +26 -3
  89. package/src/components/Orders/OrderContactInformation/styles.js +16 -0
  90. package/src/components/Orders/OrderDetails/index.js +19 -2
  91. package/src/components/Orders/OrderDetailsHeader/styles.js +3 -1
  92. package/src/components/Orders/OrderStatusTypeSelector/index.js +19 -27
  93. package/src/components/Orders/OrdersDashboard/index.js +2 -2
  94. package/src/components/Orders/OrdersFilterGroup/index.js +2 -1
  95. package/src/components/Orders/OrdersFilterGroup/styles.js +14 -5
  96. package/src/components/Orders/OrdersLateralBar/index.js +1 -0
  97. package/src/components/Orders/OrdersListing/index.js +20 -4
  98. package/src/components/Orders/OrdersListing/styles.js +62 -0
  99. package/src/components/Orders/OrdersManager/index.js +2 -0
  100. package/src/components/Orders/OrdersManager/test.js +602 -0
  101. package/src/components/Orders/OrdersTable/Order.js +281 -0
  102. package/src/components/Orders/OrdersTable/index.js +35 -252
  103. package/src/components/Orders/ProductItemAccordion/styles.js +0 -4
  104. package/src/components/Settings/SettingsLogs/index.js +307 -0
  105. package/src/components/Settings/SettingsLogs/styles.js +268 -0
  106. package/src/components/Settings/index.js +2 -0
  107. package/src/components/SidebarMenu/index.js +8 -1
  108. package/src/components/Stores/BusinessAdd/BusinessDetails/index.js +9 -0
  109. package/src/index.js +2 -0
  110. package/template/app.js +4 -0
  111. package/template/components/ListenPageChanges/index.js +1 -0
  112. package/template/helmetdata.json +7 -0
  113. package/template/pages/SettingsLogs/index.js +12 -0
  114. /package/_bundles/{ordering-ui-admin.a195abab9ce10c18d568.js.LICENSE.txt → ordering-ui-admin.27b7bb0f04b6581074ce.js.LICENSE.txt} +0 -0
@@ -11,8 +11,11 @@ import {
11
11
  BusinessesContainer,
12
12
  BusinessWrapper,
13
13
  WrapperImage,
14
- Image
14
+ Image,
15
+ SkeletonContainer,
16
+ SkeletonWrapper
15
17
  } from './styles'
18
+ import Skeleton from 'react-loading-skeleton'
16
19
 
17
20
  export const BusinessesForm = (props) => {
18
21
  const {
@@ -20,7 +23,8 @@ export const BusinessesForm = (props) => {
20
23
  handleSelectBusiness,
21
24
  actionState,
22
25
  handleSelectAllBusiness,
23
- selectedBusinessIds
26
+ selectedBusinessIds,
27
+ businessesLoading
24
28
  } = props
25
29
 
26
30
  const [, t] = useLanguage()
@@ -35,7 +39,7 @@ export const BusinessesForm = (props) => {
35
39
  _filteredBusinesses = [...businesses]
36
40
  }
37
41
  setFilteredBusinesses(_filteredBusinesses)
38
- }, [searchValue])
42
+ }, [searchValue, businesses])
39
43
 
40
44
  return (
41
45
  <Container>
@@ -66,21 +70,45 @@ export const BusinessesForm = (props) => {
66
70
  </Button>
67
71
  </ButtonGroup>
68
72
  <BusinessesContainer>
69
- {filteredBusinesses.map(business => (
70
- <BusinessWrapper
71
- key={business.id}
72
- isDisabed={actionState.loading}
73
- >
74
- <Checkbox
75
- checked={selectedBusinessIds.includes(business.id)}
76
- onChange={e => handleSelectBusiness(business.id, e.target.checked)}
77
- />
78
- <WrapperImage>
79
- <Image bgimage={business?.logo} alt='logo' />
80
- </WrapperImage>
81
- <p>{business?.name}</p>
82
- </BusinessWrapper>
83
- ))}
73
+ {businessesLoading ? (
74
+ <>
75
+ {
76
+ [...Array(9).keys()].map(i => (
77
+ <SkeletonWrapper key={i}>
78
+ <tr>
79
+ <td>
80
+ <SkeletonContainer>
81
+ <Skeleton width={18} height={18} />
82
+ <Skeleton width={35} height={35} style={{ margin: '0px 5px', borderRadius: '100%' }} />
83
+ </SkeletonContainer>
84
+ </td>
85
+ <td>
86
+ <Skeleton width={250} />
87
+ </td>
88
+ </tr>
89
+ </SkeletonWrapper>
90
+ ))
91
+ }
92
+ </>
93
+ ) : (
94
+ <>
95
+ {filteredBusinesses.map(business => (
96
+ <BusinessWrapper
97
+ key={business.id}
98
+ isDisabed={actionState.loading}
99
+ >
100
+ <Checkbox
101
+ checked={selectedBusinessIds.includes(business.id)}
102
+ onChange={e => handleSelectBusiness(business.id, e.target.checked)}
103
+ />
104
+ <WrapperImage>
105
+ <Image bgimage={business?.logo} alt='logo' />
106
+ </WrapperImage>
107
+ <p>{business?.name}</p>
108
+ </BusinessWrapper>
109
+ ))}
110
+ </>
111
+ )}
84
112
  </BusinessesContainer>
85
113
  </Container>
86
114
  )
@@ -85,3 +85,15 @@ export const Image = (props) => {
85
85
  </ImageStyled>
86
86
  )
87
87
  }
88
+
89
+ export const SkeletonWrapper = styled.div`
90
+ display: flex;
91
+ align-items: center;
92
+ padding: 10px 0;
93
+ border-bottom: 1px solid ${props => props.theme.colors.borderColor};
94
+ `
95
+
96
+ export const SkeletonContainer = styled.div`
97
+ display: flex;
98
+ align-items: center;
99
+ `
@@ -12,8 +12,11 @@ import {
12
12
  BusinessesContainer,
13
13
  BusinessWrapper,
14
14
  WrapperImage,
15
- Image
15
+ Image,
16
+ SkeletonWrapper,
17
+ SkeletonContainer
16
18
  } from './styles'
19
+ import Skeleton from 'react-loading-skeleton'
17
20
 
18
21
  export const DriversGroupBusinesses = (props) => {
19
22
  const {
@@ -26,7 +29,8 @@ export const DriversGroupBusinesses = (props) => {
26
29
  handleAddDriversGroup,
27
30
  handleSelectAllBusiness,
28
31
  selectedBusinessIds,
29
- actionDisabled
32
+ actionDisabled,
33
+ businessesLoading
30
34
  } = props
31
35
 
32
36
  const [, t] = useLanguage()
@@ -43,7 +47,7 @@ export const DriversGroupBusinesses = (props) => {
43
47
  _filteredBusinesses = [...businesses]
44
48
  }
45
49
  setFilteredBusinesses(_filteredBusinesses)
46
- }, [searchValue])
50
+ }, [searchValue, businesses])
47
51
 
48
52
  const onSubmit = () => {
49
53
  if (driversGroupState.driversGroup) {
@@ -85,21 +89,45 @@ export const DriversGroupBusinesses = (props) => {
85
89
  </Button>
86
90
  </ButtonGroup>
87
91
  <BusinessesContainer>
88
- {filteredBusinesses.map(business => (
89
- <BusinessWrapper
90
- key={business.id}
91
- isDisabed={actionState.loading}
92
- >
93
- <Checkbox
94
- checked={selectedBusinessIds.includes(business.id)}
95
- onChange={e => handleSelectBusiness(business.id, e.target.checked)}
96
- />
97
- <WrapperImage>
98
- <Image bgimage={business?.logo} alt='logo' />
99
- </WrapperImage>
100
- <p>{business?.name}</p>
101
- </BusinessWrapper>
102
- ))}
92
+ {businessesLoading ? (
93
+ <>
94
+ {
95
+ [...Array(9).keys()].map(i => (
96
+ <SkeletonWrapper key={i}>
97
+ <tr>
98
+ <td>
99
+ <SkeletonContainer>
100
+ <Skeleton width={18} height={18} />
101
+ <Skeleton width={35} height={35} style={{ margin: '0px 5px', borderRadius: '100%' }} />
102
+ </SkeletonContainer>
103
+ </td>
104
+ <td>
105
+ <Skeleton width={250} />
106
+ </td>
107
+ </tr>
108
+ </SkeletonWrapper>
109
+ ))
110
+ }
111
+ </>
112
+ ) : (
113
+ <>
114
+ {filteredBusinesses.map(business => (
115
+ <BusinessWrapper
116
+ key={business.id}
117
+ isDisabed={actionState.loading}
118
+ >
119
+ <Checkbox
120
+ checked={selectedBusinessIds.includes(business.id)}
121
+ onChange={e => handleSelectBusiness(business.id, e.target.checked)}
122
+ />
123
+ <WrapperImage>
124
+ <Image bgimage={business?.logo} alt='logo' />
125
+ </WrapperImage>
126
+ <p>{business?.name}</p>
127
+ </BusinessWrapper>
128
+ ))}
129
+ </>
130
+ )}
103
131
  </BusinessesContainer>
104
132
  <Button
105
133
  borderRadius='8px'
@@ -97,3 +97,15 @@ export const Image = (props) => {
97
97
  </ImageStyled>
98
98
  )
99
99
  }
100
+
101
+ export const SkeletonWrapper = styled.div`
102
+ display: flex;
103
+ align-items: center;
104
+ padding: 10px 0;
105
+ border-bottom: 1px solid ${props => props.theme.colors.borderColor};
106
+ `
107
+
108
+ export const SkeletonContainer = styled.div`
109
+ display: flex;
110
+ align-items: center;
111
+ `
@@ -219,6 +219,7 @@ const DriversGroupsListingUI = (props) => {
219
219
  driversGroupId={curDriversGroupId}
220
220
  driversManagers={driversManagersList?.managers}
221
221
  businesses={businessesList?.businesses}
222
+ businessesLoading={businessesList?.loading}
222
223
  paymethods={paymethodsList?.paymethods}
223
224
  drivers={driversList?.drivers}
224
225
  companies={driversCompanyList?.companies}
@@ -246,6 +247,7 @@ const DriversGroupsListingUI = (props) => {
246
247
  driversGroupId={curDriversGroupId}
247
248
  driversManagers={driversManagersList?.managers}
248
249
  businesses={businessesList?.businesses}
250
+ businessesLoading={businessesList?.loading}
249
251
  paymethods={paymethodsList?.paymethods}
250
252
  drivers={driversList?.drivers}
251
253
  companies={driversCompanyList?.companies}
@@ -2,7 +2,7 @@ import React from 'react'
2
2
  import { useLanguage } from 'ordering-components-admin-external'
3
3
  import { SearchBar } from '../../Shared'
4
4
  import { List as MenuIcon, LifePreserver } from 'react-bootstrap-icons'
5
- import { Button, IconButton } from '../../../styles'
5
+ import { Button, IconButton, LinkButton } from '../../../styles'
6
6
  import { useInfoShare } from '../../../contexts/InfoShareContext'
7
7
  import { UsersDeleteButton, UsersExportCSV } from '../../Users'
8
8
  import { OverlayTrigger, Tooltip } from 'react-bootstrap'
@@ -10,8 +10,10 @@ import { OverlayTrigger, Tooltip } from 'react-bootstrap'
10
10
  import {
11
11
  HeaderContainer,
12
12
  HeaderTitleContainer,
13
- ActionContainer
13
+ ActionContainer,
14
+ WarningMessage
14
15
  } from './styles'
16
+ import TiWarningOutline from '@meronex/icons/ti/TiWarningOutline'
15
17
 
16
18
  export const UsersListingHeader = (props) => {
17
19
  const {
@@ -35,6 +37,9 @@ export const UsersListingHeader = (props) => {
35
37
 
36
38
  const [, t] = useLanguage()
37
39
  const [{ isCollapse }, { handleMenuCollapse }] = useInfoShare()
40
+ const handleClearFilters = () => {
41
+ if (searchValue) onSearch('')
42
+ }
38
43
 
39
44
  return (
40
45
  <HeaderContainer>
@@ -96,6 +101,13 @@ export const UsersListingHeader = (props) => {
96
101
  handleDeleteSeveralUsers={handleDeleteSeveralUsers}
97
102
  disabled={actionDisabled}
98
103
  />
104
+ {(!!searchValue) && (
105
+ <WarningMessage>
106
+ <TiWarningOutline />
107
+ <span>{t('WARNING_FILTER_APPLIED', 'Filters applied. You may miss new orders.')}</span>
108
+ <LinkButton onClick={() => handleClearFilters()}>{t('CLEAR_FILTERS', 'Clear filters')}</LinkButton>
109
+ </WarningMessage>
110
+ )}
99
111
  <SearchBar
100
112
  lazyLoad
101
113
  isCustomLayout
@@ -93,3 +93,58 @@ export const ActionContainer = styled.div`
93
93
  }
94
94
  }
95
95
  `
96
+
97
+ export const WarningMessage = styled.div`
98
+ position: absolute;
99
+ display: flex;
100
+ align-items: center;
101
+ z-index: 100;
102
+ top: 50px;
103
+ background: ${props => props.theme.colors.warning100};
104
+ border: 1px solid ${props => props.theme.colors.warning};
105
+ box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.12);
106
+ border-radius: 7.6px;
107
+ padding: 0px 15px;
108
+ box-sizing: border-box;
109
+ margin: 10px 0px 0px 0px !important;
110
+
111
+ right: 0px;
112
+ ${props => props.theme?.rtl && css`
113
+ left: 0px;
114
+ right: initial;
115
+ `}
116
+
117
+ svg {
118
+ font-size: 20px;
119
+ color: ${props => props.theme.colors.warning};
120
+ }
121
+
122
+ span {
123
+ font-size: 12px;
124
+ line-height: 18px;
125
+ color: ${props => props.theme.colors.headingColor};
126
+ margin: 0 10px;
127
+ flex: 1;
128
+ }
129
+
130
+ a {
131
+ font-size: 12px;
132
+ white-space: nowrap;
133
+ }
134
+
135
+ @media (min-width: 768px) {
136
+ padding: 0px 20px;
137
+ font-size: 14px;
138
+ line-height: 24px;
139
+ right: 0px;
140
+ z-index: 10;
141
+ ${props => props.theme?.rtl && css`
142
+ left: 0px;
143
+ right: initial;
144
+ `}
145
+
146
+ span {
147
+ white-space: nowrap;
148
+ }
149
+ }
150
+ `
@@ -30,7 +30,7 @@ export const AdvancedSettings = (props) => {
30
30
  const [themeStructure, setThemeStructure] = useState({})
31
31
  const [alertState, setAlertState] = useState({ open: false, content: [] })
32
32
  const themeValuesRef = useRef({})
33
-
33
+
34
34
  const [isOpenSound, setIsOpenSound] = useState(false)
35
35
 
36
36
  const headerList = [
@@ -65,6 +65,11 @@ export const AdvancedSettings = (props) => {
65
65
  { name: t('DEFAULT_BACKGROUND_COLOR', 'Default Background color'), type: 'color', path: 'business_view.components.style.backgroundColor' },
66
66
  { name: t('PRODUCTS_FROM_PREVIOUS_ORDERS_BLOCK', 'Products from previous orders block'), type: 'hidden', path: 'business_view.components.products_ordered.hidden' },
67
67
  { name: t('NEAR_BUSINESS_BLOCK', 'Near business block'), type: 'hidden', path: 'business_view.components.near_business.hidden' },
68
+ { name: t('REVIEWS', 'Reviews'), type: 'hidden', path: 'business_view.components.reviews.hidden' },
69
+ { name: t('CUSTOMER_COMMENTS', 'Customer comments'), type: 'hidden', path: 'business_view.components.reviews.components.customer_comments.hidden' },
70
+ { name: t('RANKING', 'Ranking'), type: 'hidden', path: 'business_view.components.reviews.components.ranking.hidden' },
71
+ { name: t('REVIEWS_DATE', 'Reviews date'), type: 'hidden', path: 'business_view.components.reviews.components.review_date.hidden' },
72
+ { name: t('SEARCH', 'Search'), type: 'hidden', path: 'business_view.components.reviews.components.search.hidden' },
68
73
  { name: t('BUSINESS_LOGO', 'Business logo'), type: 'hidden', path: 'business_view.components.header.components.logo.hidden' },
69
74
  { name: t('BUSINESS_INFO_ICON', 'Business info icon'), type: 'hidden', path: 'business_view.components.header.components.business_info.hidden' },
70
75
  { name: t('BUSINESS_HEADER', 'Business header'), type: 'hidden', path: 'business_view.components.header.hidden' }
@@ -24,9 +24,86 @@ export const AppLayout = (props) => {
24
24
  const [{ isCollapse }, { handleMenuCollapse }] = useInfoShare()
25
25
  const location = useLocation()
26
26
 
27
- const showMessage = (message) => {
28
- window.Intercom && window.Intercom('showNewMessage', message)
29
- }
27
+ const LeftContent = () => (
28
+ <AppInfoContainer>
29
+ <ImageWrapper isDriver={isDriver}>
30
+ <img src={appInfo.images.live} alt='' />
31
+ </ImageWrapper>
32
+ <h2>{appInfo.live_title}</h2>
33
+ {appInfo?.downloads && (
34
+ <DownLoadWrapper>
35
+ {appInfo.downloads.map(item => (
36
+ <img
37
+ src={item.icon}
38
+ alt=''
39
+ key={item.id}
40
+ onClick={() => window.open(item.link, '_blank')}
41
+ />
42
+ ))}
43
+ </DownLoadWrapper>
44
+ )}
45
+ {appInfo?.web_url && (
46
+ <DownloadLink href={appInfo.web_url} target='_blank' isSingle className='download-link'>
47
+ {appInfo.web_link_title}
48
+ </DownloadLink>
49
+ )}
50
+ <p>{appInfo.live_description}</p>
51
+ {appInfo?.purchase_message && (
52
+ <ButtonWRapper>
53
+ {appInfo?.purchase_link && (
54
+ <Button
55
+ color='primary'
56
+ borderRadius='8px'
57
+ onClick={() => window.open(appInfo?.purchase_link, '_blank')}
58
+ >
59
+ {t('PURCHASE_NOW', 'Purchase Now')}
60
+ </Button>
61
+ )}
62
+ {appInfo?.demo_link && (
63
+ <Button
64
+ color='primary'
65
+ outline
66
+ borderRadius='8px'
67
+ onClick={() => window.open(appInfo?.demo_link, '_blank')}
68
+ >
69
+ {t('BOOK_A_DEMO', 'Book a demo')}
70
+ </Button>
71
+ )}
72
+ </ButtonWRapper>
73
+ )}
74
+ </AppInfoContainer>
75
+ )
76
+
77
+ const RightContent = () => (
78
+ <AppInfoContainer>
79
+ <ImageWrapper isDriver={isDriver}>
80
+ <img src={appInfo.images.brand} alt='' />
81
+ </ImageWrapper>
82
+ <h2>{appInfo.brand_title}</h2>
83
+ <p>{appInfo.brand_description}</p>
84
+ <ButtonWRapper>
85
+ {appInfo?.purchase_link && (
86
+ <Button
87
+ color='primary'
88
+ borderRadius='8px'
89
+ onClick={() => window.open(appInfo?.purchase_link, '_blank')}
90
+ >
91
+ {t('PURCHASE_NOW', 'Purchase Now')}
92
+ </Button>
93
+ )}
94
+ {!appInfo?.purchase_link && appInfo?.demo_link && (
95
+ <Button
96
+ color='primary'
97
+ outline
98
+ borderRadius='8px'
99
+ onClick={() => window.open(appInfo?.demo_link, '_blank')}
100
+ >
101
+ {t('BOOK_A_DEMO', 'Book a demo')}
102
+ </Button>
103
+ )}
104
+ </ButtonWRapper>
105
+ </AppInfoContainer>
106
+ )
30
107
 
31
108
  return (
32
109
  <Container>
@@ -58,67 +135,8 @@ export const AppLayout = (props) => {
58
135
  <h1>{appInfo.title}</h1>
59
136
  <p>{appInfo.description}</p>
60
137
  <BoxWrapper>
61
- <AppInfoContainer>
62
- <ImageWrapper isDriver={isDriver}>
63
- <img src={appInfo.images.live} alt='' />
64
- </ImageWrapper>
65
- <h2>{appInfo.live_title}</h2>
66
- {appInfo?.downloads && (
67
- <DownLoadWrapper>
68
- {appInfo.downloads.map(item => (
69
- <img
70
- src={item.icon}
71
- alt=''
72
- key={item.id}
73
- onClick={() => window.open(item.link, '_blank')}
74
- />
75
- ))}
76
- </DownLoadWrapper>
77
- )}
78
- {appInfo?.web_url && (
79
- <DownloadLink href={appInfo.web_url} target='_blank' isSingle className='download-link'>
80
- {appInfo.web_link_title}
81
- </DownloadLink>
82
- )}
83
- <p>{appInfo.live_description}</p>
84
- {appInfo?.purchase_message && (
85
- <ButtonWRapper>
86
- <Button
87
- color='primary'
88
- borderRadius='8px'
89
- onClick={() => showMessage(appInfo?.purchase_message)}
90
- >
91
- {t('PURCHASE_NOW', 'Purchase Now')}
92
- </Button>
93
- {appInfo?.demo_book_message && (
94
- <Button
95
- color='primary'
96
- outline
97
- borderRadius='8px'
98
- onClick={() => showMessage(appInfo?.demo_book_message)}
99
- >
100
- {t('BOOK_A_DEMO', 'Book a demo')}
101
- </Button>
102
- )}
103
- </ButtonWRapper>
104
- )}
105
- </AppInfoContainer>
106
- <AppInfoContainer>
107
- <ImageWrapper isDriver={isDriver}>
108
- <img src={appInfo.images.brand} alt='' />
109
- </ImageWrapper>
110
- <h2>{appInfo.brand_title}</h2>
111
- <p>{appInfo.brand_description}</p>
112
- <ButtonWRapper>
113
- <Button
114
- color='primary'
115
- borderRadius='8px'
116
- onClick={() => showMessage(appInfo?.purchase_message)}
117
- >
118
- {t('PURCHASE_NOW', 'Purchase Now')}
119
- </Button>
120
- </ButtonWRapper>
121
- </AppInfoContainer>
138
+ {appInfo?.live_title && <LeftContent />}
139
+ <RightContent />
122
140
  </BoxWrapper>
123
141
  </ContentWrapper>
124
142
  </Container>
@@ -11,17 +11,13 @@ export const CallCenterApp = () => {
11
11
  title: t('ORDERING_CALL_CENTER_APP', 'Ordering Call Center App'),
12
12
  description: t('CALL_CENTER_DESCRIPTION', 'Give this tool to your team of agents, capture orders in just a few seconds, and keep offering the best customer experience possible.'),
13
13
  images: {
14
- live: theme.images.myProducts.myCallcenterAppLive,
15
14
  brand: theme.images.myProducts.myCallcenterAppBrand
16
15
  },
17
- live_title: t('LIVE_DEMO', 'Live Demo'),
18
- live_description: t('CALL_CENTER_APP_LIVE_DEMO_DESCRIPTION', 'This is a branded Ordering.co product; play with it and understand how it works'),
19
- web_url: 'https://callcenter.tryordering.com/search',
20
- web_link_title: t('CALL_CENTER', 'Call center'),
21
16
  brand_title: t('YOUR_BRANDED_CALL_CENTER', 'Your Branded Call Center'),
22
17
  brand_description: t('CALL_CENTER_BRANDED_DESCRIPTION', 'The Call Center is delivered in less than five working days, fully branded with your guidelines, and ready to be used on any tablet or device you add it to.'),
23
18
  demo_book_message: 'I would like to book a Demo about the Call center , can you assist me?',
24
- purchase_message: 'I would like to know about the Call center, can you assist me?'
19
+ purchase_message: 'I would like to know about the Call center, can you assist me?',
20
+ demo_link: 'https://www.ordering.co/platform-demo-and-pricing'
25
21
  }
26
22
 
27
23
  return (
@@ -42,7 +42,7 @@ export const CustomProject = () => {
42
42
  <Button
43
43
  color='primary'
44
44
  borderRadius='8px'
45
- onClick={() => showMessage('I\'m interested in a custom project, can you please provide more information?')}
45
+ onClick={() => window.open('https://www.ordering.co/quote-project-request', '_blank')}
46
46
  >
47
47
  {t('CONTACT_US', 'Contact us')}
48
48
  </Button>
@@ -23,7 +23,9 @@ export const CustomerApp = () => {
23
23
  downloads: [
24
24
  { id: 1, icon: theme.images.myProducts.appStoreSmall, link: 'https://apps.apple.com/us/app/customer-app-2-0/id1607414555' },
25
25
  { id: 2, icon: theme.images.myProducts.playStoreSmall, link: 'https://play.google.com/store/apps/details?id=com.ordering.onlineorderingappv5&hl=en&gl=US' }
26
- ]
26
+ ],
27
+ purchase_link: 'https://buy.stripe.com/5kA4in4Fp86Kg9yfZN',
28
+ demo_link: 'https://www.ordering.co/platform-demo-and-pricing'
27
29
  }
28
30
 
29
31
  return (
@@ -23,7 +23,9 @@ export const DriverApp = () => {
23
23
  downloads: [
24
24
  { id: 1, icon: theme.images.myProducts.appStoreSmall, link: 'https://apps.apple.com/us/app/driver-app-2-0/id1606257815' },
25
25
  { id: 2, icon: theme.images.myProducts.playStoreSmall, link: 'https://play.google.com/store/apps/details?id=com.ordering.deliveryv5' }
26
- ]
26
+ ],
27
+ purchase_link: 'https://buy.stripe.com/dR6g151tdcn0g9y3d3',
28
+ demo_link: 'https://www.ordering.co/platform-demo-and-pricing'
27
29
  }
28
30
 
29
31
  return (
@@ -11,11 +11,8 @@ export const KioskApp = () => {
11
11
  title: t('ORDERING_SELF_KIOSK', 'Ordering Self Ordering Kiosk'),
12
12
  description: t('KIOS_DESCRIPTION', 'This tool will help your store complete that final step on each sale with innovative and intuitive software and hardware inside your locations.'),
13
13
  images: {
14
- live: theme.images.myProducts.myKioskAppLive,
15
14
  brand: theme.images.myProducts.myKioskAppBrand
16
15
  },
17
- live_title: t('LIVE_DEMO', 'Live Demo'),
18
- live_description: t('KIOS_APP_LIVE_DEMO_DESCRIPTION', 'This is a branded Ordering.co product. play with it and understand how it works'),
19
16
  brand_title: t('YOUR_BRANDED_KIOSK', 'Your Branded Kiosk'),
20
17
  brand_description: t('KIOSK_BRANDED_DESCRIPTION', 'This App is delivered in less than five working days, fully branded with your guidelines, and ready to be used on any tablet you add it to.'),
21
18
  demo_book_message: 'I would like to book a Demo about the Kiosk app, can you assist me?',
@@ -23,7 +20,8 @@ export const KioskApp = () => {
23
20
  downloads: [
24
21
  { id: 1, icon: theme.images.myProducts.appStoreSmall, link: 'https://apps.apple.com/us/app/ordering-kiosk-2-0/id1615828153' },
25
22
  { id: 2, icon: theme.images.myProducts.playStoreSmall, link: 'https://play.google.com/store/apps/details?id=com.ordering.orderingkioskv5&hl=en&gl=US' }
26
- ]
23
+ ],
24
+ demo_link: 'https://www.ordering.co/platform-demo-and-pricing'
27
25
  }
28
26
 
29
27
  return (
@@ -23,7 +23,9 @@ export const StoreApp = () => {
23
23
  downloads: [
24
24
  { id: 1, icon: theme.images.myProducts.appStoreSmall, link: 'https://apps.apple.com/us/app/store-app-2-0/id1608192050' },
25
25
  { id: 2, icon: theme.images.myProducts.playStoreSmall, link: 'https://play.google.com/store/apps/details?id=com.ordering.storeappv5&pli=1' }
26
- ]
26
+ ],
27
+ purchase_link: 'https://buy.stripe.com/aEU5mr2xhgDg4qQcNC',
28
+ demo_link: 'https://www.ordering.co/platform-demo-and-pricing'
27
29
  }
28
30
 
29
31
  return (
@@ -29,7 +29,9 @@ const DriversManagerUI = (props) => {
29
29
  selectedDriver,
30
30
  setSelectedDriver,
31
31
  assignedOrders,
32
- handleUpdateAssignedOrders
32
+ handleUpdateAssignedOrders,
33
+ showCompressedInfo,
34
+ handleEmtpyOrderSelected
33
35
  } = props
34
36
 
35
37
  const [configState] = useConfig()
@@ -48,6 +50,7 @@ const DriversManagerUI = (props) => {
48
50
  }
49
51
 
50
52
  const handleChangeDriver = (driver) => {
53
+ handleEmtpyOrderSelected && handleEmtpyOrderSelected()
51
54
  if (selectedDriver?.id === driver.id) {
52
55
  setSelectedDriver(null)
53
56
  } else {
@@ -86,19 +89,21 @@ const DriversManagerUI = (props) => {
86
89
  )}
87
90
  </DriversHeader>
88
91
  <DriversContent>
89
- <DriverListContainer>
92
+ <DriverListContainer showCompressedInfo={showCompressedInfo}>
90
93
  <FilterContainer>
91
94
  <DriversOnlineOfflineFilter
92
95
  driversIsOnline={driversIsOnline}
93
96
  handleChangeDriverIsOnline={handleChangeDriverIsOnline}
94
97
  numberOfonlineDrivers={numberOfonlineDrivers}
95
98
  numberOfofflineDrivers={numberOfofflineDrivers}
99
+ showCompressedInfo={showCompressedInfo}
96
100
  />
97
101
  <DriversBusyStatusFilter
98
102
  driversSubfilter={driversSubfilter}
99
103
  handleChangeDriversSubFilter={handleChangeDriversSubFilter}
100
104
  numberOfbusyDrivers={numberOfbusyDrivers}
101
105
  numberOfnotBusyDrivers={numberOfnotBusyDrivers}
106
+ showCompressedInfo={showCompressedInfo}
102
107
  />
103
108
  </FilterContainer>
104
109
  <WrapperDriversList>
@@ -111,6 +116,7 @@ const DriversManagerUI = (props) => {
111
116
  selectedDriver={selectedDriver}
112
117
  handleChangeDriver={handleChangeDriver}
113
118
  handleOpenDriverOrders={handleOpenDriverOrders}
119
+ showCompressedInfo={showCompressedInfo}
114
120
  />
115
121
  </WrapperDriversList>
116
122
  </DriverListContainer>