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
@@ -0,0 +1,307 @@
1
+ import React, { useEffect } from 'react'
2
+ import { useLanguage, useUtils, useConfig, SettingsLogs as SettingsLogsController } from 'ordering-components-admin-external'
3
+ import Skeleton from 'react-loading-skeleton'
4
+ import { Modal, Pagination } from '../../Shared'
5
+
6
+ import {
7
+ DriversGroupLogsContainer,
8
+ TableWrapper,
9
+ Table,
10
+ UserInfoContainer,
11
+ DateTimeWrapper,
12
+ NoData,
13
+ WrapperPagination,
14
+ DataListTable,
15
+ EventTypeContainer,
16
+ SeeChanges,
17
+ SchedulesWrapper,
18
+ Schedules,
19
+ ScheduleDay,
20
+ ScheduleLapses,
21
+ ScheduleTitle,
22
+ HeaderContainer,
23
+ HeaderTitleContainer,
24
+ ConfigListTable
25
+ } from './styles'
26
+
27
+ const SettingsLogsUI = (props) => {
28
+
29
+ const { logsList, paginationProps, getSettingsLogs } = props
30
+
31
+ const [, t] = useLanguage()
32
+ const [{ parseDate }] = useUtils()
33
+ const [open, setOpen] = React.useState(false)
34
+ const [schedules, setSchedules] = React.useState({
35
+ newSchedule: [],
36
+ oldSchedule: []
37
+ })
38
+ const [{ configs }] = useConfig()
39
+ const formatTime = configs?.general_hour_format?.value
40
+
41
+ const handleChangePage = (page) => {
42
+ getSettingsLogs(page, 10)
43
+ }
44
+
45
+ const handleChangePageSize = (pageSize) => {
46
+ const expectedPage = Math.ceil(paginationProps.from / pageSize)
47
+ getDriversGroupLogs(expectedPage, pageSize)
48
+ }
49
+
50
+ const getValidLogData = (data) => {
51
+ return typeof data === 'object'
52
+ ? Object.values(data)
53
+ : typeof data === 'string' ? JSON.parse(data) : data
54
+ }
55
+
56
+ const handleSchedules = (_schedules) => {
57
+ setSchedules({
58
+ newSchedule: _schedules?.new,
59
+ oldSchedule: _schedules?.old
60
+ })
61
+ }
62
+
63
+ const scheduleModalData = (_schedules) => {
64
+ setOpen(true)
65
+ handleSchedules(_schedules)
66
+ }
67
+
68
+ useEffect(() => {
69
+ if (logsList.loading || logsList.logs.length > 0 || paginationProps.totalPages <= 1) return
70
+ if (paginationProps.currentPage !== paginationProps.totalPages) {
71
+ handleChangePage(paginationProps.currentPage)
72
+ } else {
73
+ handleChangePage(paginationProps.currentPage - 1)
74
+ }
75
+ }, [logsList.logs, paginationProps])
76
+
77
+ const daysOptions = [
78
+ t('DAY7', 'Sunday'),
79
+ t('DAY1', 'Monday'),
80
+ t('DAY2', 'Tuesday'),
81
+ t('DAY3', 'Wednesday'),
82
+ t('DAY4', 'Thursday'),
83
+ t('DAY5', 'Friday'),
84
+ t('DAY6', 'Saturday')
85
+ ]
86
+
87
+ const checkTime = (val) => (val < 10 ? `0${val}` : val)
88
+ const timeFormated = (time) => {
89
+ return moment(`1900-01-01 ${checkTime(time.hour)}:${checkTime(time.minute)}`).format(formatTime)
90
+ }
91
+
92
+ const getSchedule = (_schedules) => {
93
+ return ((!_schedules?.length && _schedules?.length < 1) ? <p>{t('NONE', 'None')}</p> : _schedules?.map((schedule, i) => {
94
+ return (
95
+ <ScheduleDay key={i}>
96
+ <span>{daysOptions[i]}</span>
97
+ <ScheduleLapses>
98
+ {schedule?.lapses?.map((item, i) => {
99
+ return <p key={i}>{`${timeFormated(item?.open)} - ${timeFormated(item?.close)}`}</p>
100
+ })}
101
+ </ScheduleLapses>
102
+ </ScheduleDay>
103
+ )
104
+ })
105
+ )
106
+ }
107
+
108
+ return (
109
+ <>
110
+ <DriversGroupLogsContainer>
111
+ <HeaderContainer>
112
+ <HeaderTitleContainer>
113
+ <h1>{t('SETTINGS_LOGS', 'Settings Logs')}</h1>
114
+ </HeaderTitleContainer>
115
+ </HeaderContainer>
116
+ <TableWrapper>
117
+ {(logsList.loading || logsList.logs.length > 0) ? (
118
+ <Table>
119
+ <thead>
120
+ <tr>
121
+ <th>{t('CONTROL_PANEL_USERS', 'Users')}</th>
122
+ <th>{t('EVENTS_TYPE', 'Events type')}</th>
123
+ <th>{t('CONFIG', 'Config')}</th>
124
+ <th>{t('DETAILS', 'Details')}</th>
125
+ <th>{t('NEW', 'New')}</th>
126
+ <th>{t('OLD', 'Old')}</th>
127
+ <th>{t('EXPORT_DATE', 'Date')}</th>
128
+ <th>{t('USER_AGENT', 'User agent')}</th>
129
+ </tr>
130
+ </thead>
131
+ {logsList.loading ? (
132
+ [...Array(10).keys()].map(i => (
133
+ <tbody key={i}>
134
+ <tr>
135
+ <td>
136
+ <UserInfoContainer>
137
+ <p><Skeleton width={100} /></p>
138
+ <p><Skeleton width={120} /></p>
139
+ </UserInfoContainer>
140
+ </td>
141
+ <td>
142
+ <DataListTable>
143
+ <tbody>
144
+ <tr>
145
+ <td><Skeleton width={100} /></td>
146
+ <td><Skeleton width={20} /></td>
147
+ <td><Skeleton width={20} /></td>
148
+ </tr>
149
+ </tbody>
150
+ </DataListTable>
151
+ </td>
152
+ <td>
153
+ <DateTimeWrapper>
154
+ <Skeleton />
155
+ </DateTimeWrapper>
156
+ </td>
157
+ <td>
158
+ <Skeleton />
159
+ </td>
160
+ </tr>
161
+ </tbody>
162
+ ))
163
+ ) : (
164
+ !logsList.error && logsList.logs?.map(log => (
165
+ <tbody key={log.id}>
166
+ <tr>
167
+ <td>
168
+ <UserInfoContainer>
169
+ <p>{log?.author?.name || log?.user?.name} {log?.author?.lastname || log?.user?.lastname}</p>
170
+ <p>{log?.author?.email || log?.user?.email}</p>
171
+ </UserInfoContainer>
172
+ </td>
173
+ <td>
174
+ <EventTypeContainer>
175
+ <p>{t((log?.event || '').toUpperCase())}</p>
176
+ </EventTypeContainer>
177
+ </td>
178
+ <td>
179
+ <ConfigListTable>
180
+ <p>{t((log?.config?.key || '').toUpperCase(), (log?.config?.key || '').replaceAll('_',' '))}</p>
181
+ </ConfigListTable>
182
+ </td>
183
+ <td>
184
+ <DataListTable>
185
+ {log?.data && getValidLogData(log?.data).map((item, i) => (
186
+ <tbody key={i}>
187
+ <tr>
188
+ <td>{t(item?.attribute.toUpperCase(), item?.attribute.replaceAll('_',' '))}</td>
189
+ </tr>
190
+ </tbody>
191
+ ))}
192
+ </DataListTable>
193
+ </td>
194
+ <td>
195
+ <DataListTable>
196
+ {log?.data && getValidLogData(log?.data).map((item, i) => (
197
+ <tbody key={i}>
198
+ <tr>
199
+ {item.attribute !== 'schedule'
200
+ ? (
201
+ <td>
202
+ {
203
+ (typeof item?.new !== 'undefined' && item?.new !== null)
204
+ ? `${item?.new}`
205
+ : item?.added?.length > 0 ? item?.added?.toString() : t('NONE', 'None')
206
+ }
207
+ </td>
208
+ )
209
+ : (
210
+ <td>
211
+ <SeeChanges onClick={() => scheduleModalData(item, 'new')}>{t('SEE_CHANGES', 'See changes')}</SeeChanges>
212
+ </td>
213
+ )}
214
+ </tr>
215
+ </tbody>
216
+ ))}
217
+ </DataListTable>
218
+ </td>
219
+ <td>
220
+ <DataListTable>
221
+ {log?.data && getValidLogData(log?.data).map((item, i) => (
222
+ <tbody key={i}>
223
+ <tr>
224
+ {item.attribute !== 'schedule'
225
+ ? (
226
+ <td>
227
+ {
228
+ (typeof item?.old !== 'undefined' && item?.old !== null)
229
+ ? `${item?.old}`
230
+ : item?.removed?.length > 0 ? item?.removed?.toString() : t('NONE', 'None')
231
+ }
232
+ </td>
233
+ )
234
+ : (
235
+ <td>
236
+ <SeeChanges onClick={() => scheduleModalData(item, 'old')}>{t('SEE_CHANGES', 'See changes')}</SeeChanges>
237
+ </td>
238
+ )}
239
+ </tr>
240
+ </tbody>
241
+ ))}
242
+ </DataListTable>
243
+ </td>
244
+ <td>
245
+ <DateTimeWrapper>
246
+ {parseDate(log.created_at, { utc: false })}
247
+ </DateTimeWrapper>
248
+ </td>
249
+ <td>
250
+ {log?.user_agent}
251
+ </td>
252
+ </tr>
253
+ </tbody>
254
+ ))
255
+ )}
256
+ </Table>
257
+ ) : (
258
+ <NoData>{t('NO_DATA', 'No Data')}</NoData>
259
+ )}
260
+ </TableWrapper>
261
+ {logsList?.logs.length > 0 && (
262
+ <WrapperPagination>
263
+ <Pagination
264
+ isHidePagecontrol
265
+ currentPage={paginationProps.currentPage}
266
+ totalPages={paginationProps.totalPages}
267
+ handleChangePage={handleChangePage}
268
+ handleChangePageSize={handleChangePageSize}
269
+ />
270
+ </WrapperPagination>
271
+ )}
272
+ </DriversGroupLogsContainer>
273
+ <Modal
274
+ width='40%'
275
+ height='60vh'
276
+ style={{ overflowY: 'auto' }}
277
+ padding='30px'
278
+ title={t('SCHEDULE_CHANGES', 'Schedule changes')}
279
+ open={open}
280
+ onClose={() => setOpen(false)}
281
+ >
282
+ <SchedulesWrapper border={!!schedules?.oldSchedule}>
283
+ {schedules?.newSchedule && (
284
+ <Schedules>
285
+ <ScheduleTitle>{t('NEW', 'New')}</ScheduleTitle>
286
+ {getSchedule(schedules?.newSchedule)}
287
+ </Schedules>
288
+ )}
289
+ {schedules?.oldSchedule && (
290
+ <Schedules>
291
+ <ScheduleTitle>{t('OLD', 'Old')}</ScheduleTitle>
292
+ {getSchedule(schedules?.oldSchedule)}
293
+ </Schedules>
294
+ )}
295
+ </SchedulesWrapper>
296
+ </Modal>
297
+ </>
298
+ )
299
+ }
300
+
301
+ export const SettingsLogs = (props) => {
302
+ const settingsLogsProps = {
303
+ ...props,
304
+ UIComponent: SettingsLogsUI
305
+ }
306
+ return <SettingsLogsController {...settingsLogsProps} />
307
+ }
@@ -0,0 +1,268 @@
1
+ import styled, { css } from 'styled-components'
2
+
3
+ export const DriversGroupLogsContainer = styled.div`
4
+ flex: 1;
5
+ padding: 20px;
6
+ box-sizing: border-box;
7
+ transition: all 0.5s;
8
+ overflow: auto;
9
+ `
10
+
11
+ export const TableWrapper = styled.div`
12
+ overflow: auto;
13
+ max-height: calc(100vh - 200px);
14
+ `
15
+
16
+ export const SeeChanges = styled.span`
17
+ color: ${props => props.theme.colors.primary};
18
+ cursor: pointer;
19
+ &:hover {
20
+ text-decoration: underline;
21
+ }
22
+ `
23
+
24
+ export const Table = styled.table`
25
+ width: 100%;
26
+ min-width: 1000px;
27
+ color: ${props => props.theme.colors?.headingColor};
28
+
29
+ thead {
30
+ tr {
31
+ border-bottom: solid 1px ${props => props.theme.colors.disabled};
32
+ th {
33
+ padding: 13px 0;
34
+ font-size: 12px;
35
+ &:first-child {
36
+ width: 10%;
37
+ ${props => props.theme?.rtl ? css`
38
+ padding-left: 15px;
39
+ ` : css`
40
+ padding-right: 15px;
41
+ `}
42
+ box-sizing: border-box;
43
+ }
44
+ &:nth-child(4) {
45
+ ${props => props.theme?.rtl ? css`
46
+ padding-right: 15px;
47
+ ` : css`
48
+ padding-left: 15px;
49
+ `}
50
+ box-sizing: border-box;
51
+ }
52
+ }
53
+ }
54
+ }
55
+
56
+ > tbody {
57
+ border-bottom: 1px solid ${props => props.theme.colors.borderColor};
58
+ td {
59
+ padding: 13px 0;
60
+ font-size: 12px;
61
+ &:first-child {
62
+ width: 10%;
63
+ ${props => props.theme?.rtl ? css`
64
+ padding-left: 15px;
65
+ ` : css`
66
+ padding-right: 15px;
67
+ `}
68
+ box-sizing: border-box;
69
+ }
70
+ &:nth-child(4) {
71
+ ${props => props.theme?.rtl ? css`
72
+ padding-right: 15px;
73
+ ` : css`
74
+ padding-left: 15px;
75
+ `}
76
+ box-sizing: border-box;
77
+ }
78
+ }
79
+ }
80
+ `
81
+
82
+ export const UserInfoContainer = styled.div`
83
+ p {
84
+ color: ${props => props.theme.colors.lightGray};
85
+ margin: 0px;
86
+ font-size: 12px;
87
+ &:first-child {
88
+ color: ${props => props.theme.colors.headingColor};
89
+ font-weight: 500;
90
+ }
91
+ }
92
+ `
93
+
94
+ export const DateTimeWrapper = styled.div`
95
+ white-space: nowrap;
96
+ font-size: 12px;
97
+ min-height: 36px;
98
+ display: flex;
99
+ align-items: center;
100
+
101
+ ${props => props.theme?.rtl ? css`
102
+ padding-left: 15px;
103
+ margin-left: 15px;
104
+ border-left: 1px solid ${props => props.theme.colors.borderColor};
105
+ ` : css`
106
+ padding-right: 15px;
107
+ margin-right: 15px;
108
+ border-right: 1px solid ${props => props.theme.colors.borderColor};
109
+ `}
110
+ `
111
+
112
+ export const NoData = styled.div`
113
+ font-size: 16px;
114
+ `
115
+ export const WrapperPagination = styled.div`
116
+ display: flex;
117
+ align-items: center;
118
+ padding: 20px 0;
119
+ justify-content: flex-end;
120
+ `
121
+
122
+ export const DataListTable = styled.table`
123
+ width: 100%;
124
+ border-right: 1px solid ${props => props.theme.colors.borderColor};
125
+
126
+ tbody {
127
+ border-bottom: none;
128
+ td {
129
+ box-sizing: border-box;
130
+ &:first-child {
131
+ width: 50% !important;
132
+ padding-left: 15px;
133
+ padding-right: 15px;
134
+ box-sizing: border-box;
135
+ }
136
+ &:not(:first-child) {
137
+ width: initial !important;
138
+ }
139
+ white-space: nowrap;
140
+ padding-top: 10px;
141
+ padding-bottom: 10px;
142
+ ${props => props.theme?.rtl ? css`
143
+ padding-left: 15px;
144
+ ` : css`
145
+ padding-right: 15px;
146
+ `}
147
+ }
148
+ }
149
+ `
150
+
151
+ export const ConfigListTable = styled.table`
152
+ width: 100%;
153
+ border-right: 1px solid ${props => props.theme.colors.borderColor};
154
+ text-transform: capitalize;
155
+
156
+ tbody {
157
+ border-bottom: none;
158
+ td {
159
+ box-sizing: border-box;
160
+ &:first-child {
161
+ width: 50% !important;
162
+ padding-left: 15px;
163
+ padding-right: 15px;
164
+ box-sizing: border-box;
165
+ }
166
+ &:not(:first-child) {
167
+ width: initial !important;
168
+ }
169
+ white-space: nowrap;
170
+ padding-top: 10px;
171
+ padding-bottom: 10px;
172
+ ${props => props.theme?.rtl ? css`
173
+ padding-left: 15px;
174
+ ` : css`
175
+ padding-right: 15px;
176
+ `}
177
+ }
178
+ }
179
+ `
180
+
181
+ export const EventTypeContainer = styled.div`
182
+ white-space: nowrap;
183
+ font-size: 12px;
184
+ min-height: 36px;
185
+ display: flex;
186
+ align-items: center;
187
+ padding-right: 15px;
188
+ padding-left: 15px;
189
+ margin-left: 15px;
190
+ margin-right: 10px;
191
+ border-right: 1px solid ${props => props.theme.colors.borderColor};
192
+ border-left: 1px solid ${props => props.theme.colors.borderColor};
193
+ p{
194
+ margin-bottom: 0px;
195
+ }
196
+ `
197
+
198
+ export const SchedulesWrapper = styled.div`
199
+ display: flex;
200
+ flex-direction: row;
201
+ gap: 30px;
202
+ justify-content: center;
203
+
204
+ ${props => props?.border && css`
205
+ div:first-child {
206
+ border-right: 1px solid #E9ECEF;
207
+ padding-right: 30px;
208
+ `
209
+ }
210
+ `
211
+
212
+ export const Schedules = styled.div`
213
+ display: flex;
214
+ flex-direction: column;
215
+ gap: 20px;
216
+ `
217
+
218
+ export const ScheduleDay = styled.div`
219
+ display: flex;
220
+ align-items: center;
221
+ gap: 10px;
222
+ justify-content: space-between;
223
+ `
224
+
225
+ export const ScheduleLapses = styled.div`
226
+ display: flex;
227
+ flex-direction: column;
228
+ border-left: 1px solid #E9ECEF;
229
+ padding-left: 10px;
230
+
231
+ p {
232
+ margin: 0px;
233
+ }
234
+ `
235
+
236
+ export const ScheduleTitle = styled.h2`
237
+ text-align: center;
238
+ `
239
+
240
+ export const HeaderContainer = styled.div`
241
+ display: flex;
242
+ flex-direction: column;
243
+ margin-bottom: 20px;
244
+
245
+ input {
246
+ border: none;
247
+ background: #F8F9FA;
248
+ border-radius: 50px;
249
+ }
250
+
251
+ @media (min-width: 992px) {
252
+ flex-direction: row;
253
+ align-items: center;
254
+ justify-content: space-between;
255
+ }
256
+ `
257
+
258
+ export const HeaderTitleContainer = styled.div`
259
+ flex: 1;
260
+ display: flex;
261
+ align-items: center;
262
+ h1 {
263
+ font-size: 20px;
264
+ margin: 10px 0 0 0;
265
+ font-weight: bold;
266
+ color: ${props => props.theme.colors.headingColor};
267
+ }
268
+ `
@@ -11,6 +11,7 @@ import { LalaMoveConnect } from './LalaMoveConnect'
11
11
  import { SettingsDetail } from './SettingsDetail'
12
12
  import { EmailSetting } from './EmailSetting'
13
13
  import { SettingsList } from './SettingsList'
14
+ import { SettingsLogs } from './SettingsLogs'
14
15
  import { NotificationSetting } from './NotificationSetting'
15
16
  import { SettingsSelectUI } from './SettingsSelectUI'
16
17
  import { SettingsCountryFilter } from './SettingsCountryFilter'
@@ -47,6 +48,7 @@ export {
47
48
  SettingsDetail,
48
49
  EmailSetting,
49
50
  SettingsList,
51
+ SettingsLogs,
50
52
  NotificationSetting,
51
53
  SettingsSelectUI,
52
54
  SettingsCountryFilter,
@@ -287,6 +287,12 @@ const SidebarMenuUI = (props) => {
287
287
  title: t('LANGUAGE_MANAGER', 'Language manager'),
288
288
  pageName: 'language',
289
289
  url: '/settings/language'
290
+ },
291
+ {
292
+ id: 8,
293
+ title: t('SETTINGS_LOGS', 'Settings logs'),
294
+ pageName: 'logs',
295
+ url: '/settings/logs'
290
296
  }
291
297
  ]
292
298
 
@@ -841,7 +847,8 @@ const SidebarMenuUI = (props) => {
841
847
  location.pathname === '/settings/integrations' ||
842
848
  location.pathname === '/settings/places' ||
843
849
  location.pathname === '/settings/advanced' ||
844
- location.pathname === '/settings/language'
850
+ location.pathname === '/settings/language' ||
851
+ location.pathname === '/settings/logs'
845
852
  }
846
853
  >
847
854
  <GearIcon />
@@ -87,6 +87,15 @@ export const BusinessDetails = (props) => {
87
87
  </WrapperMap>
88
88
  )}
89
89
  </GoogleMapContainer>
90
+ <FormControl>
91
+ <label>{t('SLUG', 'Slug')}</label>
92
+ <Input
93
+ name='slug'
94
+ placeholder={t('SLUG', 'Slug')}
95
+ value={formState?.changes?.slug ?? ''}
96
+ onChange={handleChangeInput}
97
+ />
98
+ </FormControl>
90
99
  <FormControl noBottom>
91
100
  <label>{t('PHONE_NUMBER', 'Phone number')}</label>
92
101
  <Input
package/src/index.js CHANGED
@@ -185,6 +185,7 @@ import {
185
185
  SettingsDetail,
186
186
  EmailSetting,
187
187
  SettingsList,
188
+ SettingsLogs,
188
189
  NotificationSetting,
189
190
  SettingsSelectUI,
190
191
  SettingsCountryFilter,
@@ -604,6 +605,7 @@ export {
604
605
  SettingsDetail,
605
606
  EmailSetting,
606
607
  SettingsList,
608
+ SettingsLogs,
607
609
  NotificationSetting,
608
610
  SettingsSelectUI,
609
611
  SettingsCountryFilter,
package/template/app.js CHANGED
@@ -85,6 +85,7 @@ import { BusinessAdd } from './pages/BusinessAdd'
85
85
  import { CustomProject } from './pages/CustomProject'
86
86
  import { OrderingWidgets } from './pages/OrderingWidgets'
87
87
  import { BusinessDevicesList } from './pages/BusinessDevicesList'
88
+ import { SettingsLogs } from './pages/SettingsLogs'
88
89
 
89
90
  export const App = () => {
90
91
  const history = useHistory()
@@ -431,6 +432,9 @@ export const App = () => {
431
432
  <ProtectedRoute path='/settings/language' allowedLevels={[0]}>
432
433
  <LanguageManager />
433
434
  </ProtectedRoute>
435
+ <ProtectedRoute path='/settings/logs' allowedLevels={[0]}>
436
+ <SettingsLogs />
437
+ </ProtectedRoute>
434
438
 
435
439
  <ProtectedRoute path='/support' allowedLevels={[0]}>
436
440
  <Support />
@@ -34,6 +34,7 @@ export const ListenPageChanges = ({ children }) => {
34
34
  places: '/settings/places',
35
35
  integrations: '/settings/integrations',
36
36
  language: '/settings/language',
37
+ logs: '/settings/logs',
37
38
  business_analytics: '/intelligence/business',
38
39
  drivers_analytics: '/intelligence/drivers',
39
40
  invoice: '/intelligence/invoice',
@@ -104,6 +104,13 @@
104
104
  "robots": "index, follow",
105
105
  "canonicalUrl": ""
106
106
  },
107
+ "logs": {
108
+ "title": "Settings logs",
109
+ "description": "a dummy description about this page",
110
+ "keywords": "test, dummy, data",
111
+ "robots": "index, follow",
112
+ "canonicalUrl": ""
113
+ },
107
114
  "store": {
108
115
  "title": "Store",
109
116
  "description": "a dummy description about this page",
@@ -0,0 +1,12 @@
1
+ import React from 'react'
2
+ import { HelmetTags } from '../../components/HelmetTags'
3
+ import { SettingsLogs as SettingsLogsController } from '../../../src/components/Settings/SettingsLogs'
4
+
5
+ export const SettingsLogs = (props) => {
6
+ return (
7
+ <>
8
+ <HelmetTags page='logs' />
9
+ <SettingsLogsController {...props} />
10
+ </>
11
+ )
12
+ }