ordering-ui-external 13.0.5 → 14.0.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 (56) hide show
  1. package/_bundles/{0.ordering-ui.48d6f3f7598e282809bf.js → 0.ordering-ui.5d8e5d10aa0c5a9a862c.js} +1 -1
  2. package/_bundles/{4.ordering-ui.48d6f3f7598e282809bf.js → 4.ordering-ui.5d8e5d10aa0c5a9a862c.js} +1 -1
  3. package/_bundles/{7.ordering-ui.48d6f3f7598e282809bf.js → 7.ordering-ui.5d8e5d10aa0c5a9a862c.js} +1 -1
  4. package/_bundles/ordering-ui.5d8e5d10aa0c5a9a862c.js +2 -0
  5. package/_modules/themes/callcenterOriginal/src/components/AddressList/index.js +11 -4
  6. package/_modules/themes/callcenterOriginal/src/components/Messages/index.js +3 -1
  7. package/_modules/themes/callcenterOriginal/src/components/Orders/Messages/index.js +30 -12
  8. package/_modules/themes/callcenterOriginal/src/components/PhoneAutocomplete/index.js +80 -42
  9. package/_modules/themes/callcenterOriginal/src/components/SignUpForm/index.js +1 -1
  10. package/_modules/themes/callcenterOriginal/src/components/UserDetails/index.js +17 -10
  11. package/_modules/themes/five/src/components/AddressDetails/index.js +10 -2
  12. package/_modules/themes/five/src/components/AddressDetails/styles.js +5 -4
  13. package/_modules/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/OrdersSection/index.js +8 -4
  14. package/_modules/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/index.js +2 -1
  15. package/_modules/themes/five/src/components/Checkout/index.js +5 -4
  16. package/_modules/themes/five/src/components/HighestRated/index.js +1 -1
  17. package/_modules/themes/five/src/components/Messages/MapMessages.js +35 -5
  18. package/_modules/themes/five/src/components/Messages/index.js +8 -3
  19. package/_modules/themes/five/src/components/MultiCheckout/index.js +1 -1
  20. package/_modules/themes/five/src/components/MultiOrdersDetails/SingleOrderCard.js +1 -1
  21. package/_modules/themes/five/src/components/OrdersOption/index.js +3 -2
  22. package/_modules/themes/five/src/components/SingleOrderCard/index.js +10 -25
  23. package/_modules/themes/five/src/components/UserDetails/index.js +27 -15
  24. package/_modules/themes/five/src/components/UserDetails/styles.js +4 -3
  25. package/_modules/themes/five/src/components/UserFormDetails/index.js +2 -2
  26. package/package.json +2 -2
  27. package/src/themes/callcenterOriginal/src/components/AddressList/index.js +9 -2
  28. package/src/themes/callcenterOriginal/src/components/Messages/index.js +3 -8
  29. package/src/themes/callcenterOriginal/src/components/Orders/Messages/index.js +30 -12
  30. package/src/themes/callcenterOriginal/src/components/PhoneAutocomplete/index.js +115 -85
  31. package/src/themes/callcenterOriginal/src/components/SignUpForm/index.js +1 -1
  32. package/src/themes/callcenterOriginal/src/components/UserDetails/index.js +9 -3
  33. package/src/themes/five/src/components/AddressDetails/index.js +18 -5
  34. package/src/themes/five/src/components/AddressDetails/styles.js +7 -0
  35. package/src/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/OrdersSection/index.js +5 -1
  36. package/src/themes/five/src/components/BusinessesListing/layouts/OriginalBusinessesListing/index.js +1 -0
  37. package/src/themes/five/src/components/Checkout/index.js +29 -21
  38. package/src/themes/five/src/components/HighestRated/index.js +1 -1
  39. package/src/themes/five/src/components/Messages/MapMessages.js +21 -3
  40. package/src/themes/five/src/components/Messages/index.js +24 -15
  41. package/src/themes/five/src/components/MultiCheckout/index.js +1 -1
  42. package/src/themes/five/src/components/MultiOrdersDetails/SingleOrderCard.js +1 -1
  43. package/src/themes/five/src/components/OrdersOption/index.js +3 -2
  44. package/src/themes/five/src/components/SingleOrderCard/index.js +11 -4
  45. package/src/themes/five/src/components/UserDetails/index.js +21 -10
  46. package/src/themes/five/src/components/UserDetails/styles.js +4 -0
  47. package/src/themes/five/src/components/UserFormDetails/index.js +2 -2
  48. package/_bundles/ordering-ui.48d6f3f7598e282809bf.js +0 -2
  49. /package/_bundles/{1.ordering-ui.48d6f3f7598e282809bf.js → 1.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  50. /package/_bundles/{2.ordering-ui.48d6f3f7598e282809bf.js → 2.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  51. /package/_bundles/{5.ordering-ui.48d6f3f7598e282809bf.js → 5.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  52. /package/_bundles/{6.ordering-ui.48d6f3f7598e282809bf.js → 6.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  53. /package/_bundles/{7.ordering-ui.48d6f3f7598e282809bf.js.LICENSE.txt → 7.ordering-ui.5d8e5d10aa0c5a9a862c.js.LICENSE.txt} +0 -0
  54. /package/_bundles/{8.ordering-ui.48d6f3f7598e282809bf.js → 8.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  55. /package/_bundles/{9.ordering-ui.48d6f3f7598e282809bf.js → 9.ordering-ui.5d8e5d10aa0c5a9a862c.js} +0 -0
  56. /package/_bundles/{ordering-ui.48d6f3f7598e282809bf.js.LICENSE.txt → ordering-ui.5d8e5d10aa0c5a9a862c.js.LICENSE.txt} +0 -0
@@ -1,14 +1,13 @@
1
- import React from 'react'
1
+ import React, { useEffect, useState } from 'react'
2
2
  import { BubbleBusines, BubbleConsole, BubbleCustomer, ChatImage, MessageBusiness, MessageConsole, MessageContentWrapper, MessageCreatedDate, MessageCustomer, MyName, TimeofSent, TimeofSentByAdmin } from './styles'
3
3
  import { useLanguage, useSession, useUtils } from 'ordering-components-external'
4
4
 
5
5
  export const MapMessages = (props) => {
6
6
  const {
7
- messages,
8
- messagesToShow,
9
7
  order,
10
8
  filterSpecialStatus,
11
9
  handleModalImage,
10
+ hideLogBookMessages,
12
11
  getLevel,
13
12
  business,
14
13
  driver,
@@ -18,6 +17,25 @@ export const MapMessages = (props) => {
18
17
  const [, t] = useLanguage()
19
18
  const [{ parseDate, parseTime }] = useUtils()
20
19
  const [{ user }] = useSession()
20
+
21
+ const [messages, setMessages] = useState(props.messages)
22
+ const [messagesToShow, setMessagesToShow] = useState(props.messagesToShow)
23
+
24
+ useEffect(() => {
25
+ if ((!props.messages?.messages?.length && !props.messagesToShow?.messages?.length) || !hideLogBookMessages) return
26
+ const messages_ = {
27
+ ...props.messages,
28
+ messages: props.messages?.messages?.filter(msg => msg.type !== 1 && msg.type !== 0)
29
+ }
30
+ const messagesToShow_ = {
31
+ ...props.messagesToShow,
32
+ messages: props.messagesToShow?.messages?.filter(msg => msg.type !== 1 && msg.type !== 0)
33
+ }
34
+
35
+ setMessages(messages_)
36
+ setMessagesToShow(messagesToShow_)
37
+ }, [JSON.stringify(props.messages), JSON.stringify(props.messagesToShow)])
38
+
21
39
  return (
22
40
  <>
23
41
  {messages?.messages.map((message) => (
@@ -4,7 +4,8 @@ import {
4
4
  Messages as MessagesController,
5
5
  useUtils,
6
6
  useLanguage,
7
- useEvent
7
+ useEvent,
8
+ useConfig
8
9
  } from 'ordering-components-external'
9
10
  import { useForm } from 'react-hook-form'
10
11
  import IosSend from '@meronex/icons/ios/IosSend'
@@ -82,6 +83,7 @@ const MessagesUI = (props) => {
82
83
  } = props
83
84
 
84
85
  const theme = useTheme()
86
+ const [{ configs }] = useConfig()
85
87
  const [, t] = useLanguage()
86
88
  const { handleSubmit, register, errors, setValue } = useForm()
87
89
  const [alertState, setAlertState] = useState({ open: false, content: [] })
@@ -93,6 +95,8 @@ const MessagesUI = (props) => {
93
95
  const previousStatus = [1, 2, 5, 6, 10, 11, 12, 15, 16, 17]
94
96
  const chatDisabled = previousStatus.includes(order?.status)
95
97
 
98
+ const hideLogBookMessages = configs?.order_logbook_enabled?.value === '0'
99
+
96
100
  const quickMessageList = [
97
101
  { key: 'message_1', text: t('CUSTOMER_MESSAGE_1', 'Lorem ipsum 1') },
98
102
  { key: 'message_2', text: t('CUSTOMER_MESSAGE_2', 'Lorem ipsum 2') },
@@ -476,23 +480,28 @@ const MessagesUI = (props) => {
476
480
  {
477
481
  !messages?.loading && order && (
478
482
  <MessageContentWrapper>
479
- <MessageCreatedDate>
480
- <span>{parseDate(order.created_at, { outputFormat: 'MMM DD, YYYY' })}</span>
481
- </MessageCreatedDate>
482
- <MessageConsole>
483
- <BubbleConsole>
484
- {t('ORDER_PLACED_FOR', 'Order placed for')} {' '}
485
- <strong>{parseDate(order.created_at)}</strong> {' '}
486
- {t('VIA', 'Via')}{' '}
487
- <strong>
488
- {order.app_id ? t(order.app_id.toUpperCase(), order.app_id) : t('OTHER', 'Other')}
489
- </strong>{' '}
490
- <TimeofSent>{parseTime(order.created_at)}</TimeofSent>
491
- </BubbleConsole>
492
- </MessageConsole>
483
+ {!hideLogBookMessages && (
484
+ <>
485
+ <MessageCreatedDate>
486
+ <span>{parseDate(order.created_at, { outputFormat: 'MMM DD, YYYY' })}</span>
487
+ </MessageCreatedDate>
488
+ <MessageConsole>
489
+ <BubbleConsole>
490
+ {t('ORDER_PLACED_FOR', 'Order placed for')} {' '}
491
+ <strong>{parseDate(order.created_at)}</strong> {' '}
492
+ {t('VIA', 'Via')}{' '}
493
+ <strong>
494
+ {order.app_id ? t(order.app_id.toUpperCase(), order.app_id) : t('OTHER', 'Other')}
495
+ </strong>{' '}
496
+ <TimeofSent>{parseTime(order.created_at)}</TimeofSent>
497
+ </BubbleConsole>
498
+ </MessageConsole>
499
+ </>
500
+ )}
493
501
  <MapMessages
494
502
  messages={messagesToShow?.messages?.length ? messagesToShow : messages}
495
503
  messagesToShow={messagesToShow}
504
+ hideLogBookMessages={hideLogBookMessages}
496
505
  order={order}
497
506
  filterSpecialStatus={filterSpecialStatus}
498
507
  handleModalImage={handleModalImage}
@@ -153,7 +153,7 @@ const MultiCheckoutUI = (props) => {
153
153
  return
154
154
  }
155
155
 
156
- if (!userErrors.length && !requiredFields?.length) {
156
+ if ((!userErrors.length && !requiredFields?.length) || (requiredFields?.length === 1 && isCustomerMode && requiredFields?.includes('email'))) {
157
157
  handleGroupPlaceOrder && handleGroupPlaceOrder()
158
158
  return
159
159
  }
@@ -48,7 +48,7 @@ const SingleOrderCardUI = (props) => {
48
48
  const [unreadAlert, setUnreadAlert] = useState({ business: false, driver: false })
49
49
  const hideIndividualButton = configs.multi_business_checkout_remove_individual_buttons?.value === '1'
50
50
 
51
- const activeStatus = [0, 3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23]
51
+ const activeStatus = [0, 3, 4, 7, 8, 9, 14, 18, 19, 20, 21, 22, 23, 24, 25, 26]
52
52
 
53
53
  const handleGoToOrderDetails = (uuid) => {
54
54
  events.emit('go_to_page', { page: 'order_detail', params: { orderId: uuid }, replace: !props.isMultiOrders })
@@ -66,7 +66,8 @@ const OrdersOptionUI = (props) => {
66
66
  businesses,
67
67
  handleUpdateBusinesses,
68
68
  getPage,
69
- loadOrders
69
+ loadOrders,
70
+ disableSkeletons
70
71
  } = props
71
72
 
72
73
  const [, t] = useLanguage()
@@ -230,7 +231,7 @@ const OrdersOptionUI = (props) => {
230
231
  />
231
232
  )}
232
233
 
233
- {(isCustomLayout ? (loading || businesses?.loading) : showSkeletons) && (
234
+ {!disableSkeletons && (isCustomLayout ? (loading || businesses?.loading) : showSkeletons) && (
234
235
  <>
235
236
  {(businesses?.loading && isBusiness) ? (
236
237
  <BusinessControllerSkeleton>
@@ -44,7 +44,8 @@ const SingleOrderCardUI = (props) => {
44
44
  isSkeleton,
45
45
  isFavorite,
46
46
  handleRemoveCart,
47
- cartState
47
+ cartState,
48
+ reorderLoading
48
49
  } = props
49
50
 
50
51
  const [, t] = useLanguage()
@@ -115,7 +116,7 @@ const SingleOrderCardUI = (props) => {
115
116
  setConfirm({
116
117
  open: true,
117
118
  content: t('QUESTION_DELETE_PRODUCTS_FROM_CART', 'Are you sure that you want to delete all products from cart?'),
118
- handleOnAccept: async () => {
119
+ handleOnAccept: () => {
119
120
  handleRemoveCart()
120
121
  setConfirm({ ...confirm, open: false })
121
122
  }
@@ -270,8 +271,14 @@ const SingleOrderCardUI = (props) => {
270
271
  </Button>
271
272
  )}
272
273
  {order.cart && typeof order?.id === 'number' && !hideReorderButton && (
273
- <Button color='primary' className='reorder' outline onClick={() => handleClickReorder(order)}>
274
- {cartState?.loading ? t('LOADING', 'Loading...') : t('REORDER', 'Reorder')}
274
+ <Button
275
+ color='primary'
276
+ className='reorder'
277
+ outline
278
+ onClick={() => handleClickReorder(order)}
279
+ disabled={reorderLoading || cartState?.loading}
280
+ >
281
+ {reorderLoading || cartState?.loading ? t('LOADING', 'Loading...') : t('REORDER', 'Reorder')}
275
282
  </Button>
276
283
  )}
277
284
  </ButtonWrapper>
@@ -11,7 +11,8 @@ import {
11
11
  ModalIcon,
12
12
  TitleContainer,
13
13
  CountryFlag,
14
- PhoneContainer
14
+ PhoneContainer,
15
+ SkeletonsContainer
15
16
  } from './styles'
16
17
  import MdClose from '@meronex/icons/md/MdClose'
17
18
  import PhoneInput from 'react-phone-number-input'
@@ -50,8 +51,9 @@ const UserDetailsUI = (props) => {
50
51
  } = props
51
52
 
52
53
  const [, t] = useLanguage()
53
- const [{ user }] = useSession()
54
+ const [{ user, loading }] = useSession()
54
55
  const [alertState, setAlertState] = useState({ open: false, content: [] })
56
+ const [skeletonsLength] = useState(requiredFields)
55
57
  const userData = userState.result?.result || props.userData || formState.result?.result || user
56
58
 
57
59
  const [willVerifyOtpState, setWillVerifyOtpState] = useState(false)
@@ -127,7 +129,10 @@ const UserDetailsUI = (props) => {
127
129
  }, [willVerifyOtpState])
128
130
 
129
131
  useEffect(() => {
130
- if (isCheckoutPlace && requiredFields?.length === 0 && !formState?.loading) {
132
+ if (isCheckoutPlace &&
133
+ (requiredFields?.length === 0 || (requiredFields?.length === 1 && requiredFields?.includes('email') && isCustomerMode)) &&
134
+ !formState?.loading
135
+ ) {
131
136
  setIsSuccess && setIsSuccess(true)
132
137
  onClose && onClose()
133
138
  }
@@ -141,15 +146,21 @@ const UserDetailsUI = (props) => {
141
146
  </React.Fragment>))}
142
147
  {props.beforeComponents?.map((BeforeComponent, i) => (
143
148
  <BeforeComponent key={i} {...props} />))}
144
- {(validationFields.loading || formState.loading || userState.loading) && (
145
- <UserData>
146
- <Skeleton width={250} height={25} />
147
- <Skeleton width={180} height={25} />
148
- <Skeleton width={210} height={25} />
149
- </UserData>
149
+ {((validationFields.loading || formState.loading || userState.loading || loading)) && (
150
+ <SkeletonsContainer>
151
+ <UserData>
152
+ {skeletonsLength?.map(field => (
153
+ <div key={field?.id}>
154
+ <Skeleton width={250} height={35} />
155
+ <Skeleton width='100%' height={40} />
156
+ </div>
157
+ ))}
158
+ <Skeleton width='100%' height={44} style={{ marginTop: 20 }} />
159
+ </UserData>
160
+ </SkeletonsContainer>
150
161
  )}
151
162
 
152
- {!(validationFields.loading || formState.loading || userState.loading) && (
163
+ {!(validationFields.loading || formState.loading || userState.loading || loading) && (
153
164
  <Container>
154
165
  {isModal && (
155
166
  <TitleContainer isAddressFormOpen={isAddressFormOpen && !isEdit}>
@@ -115,3 +115,7 @@ export const PhoneContainer = styled.div`
115
115
  align-items: center;
116
116
  height: 30px;
117
117
  `
118
+
119
+ export const SkeletonsContainer = styled.div`
120
+ margin-top: 25px;
121
+ `
@@ -338,12 +338,12 @@ export const UserFormDetailsUI = (props) => {
338
338
  className='form'
339
339
  borderBottom
340
340
  disabled={!isEdit}
341
- placeholder={t(field.code.toUpperCase(), field?.name)}
341
+ placeholder={isCustomerMode ? t(field.code.toUpperCase() + '_OPTIONAL', field.name + ' (Optional)') : t(field.code.toUpperCase(), field?.name)}
342
342
  defaultValue={formState?.changes[field.code] ?? (user && user[field.code]) ?? ''}
343
343
  onChange={handleChangeInputEmail}
344
344
  ref={
345
345
  formMethods.register({
346
- required: t('VALIDATION_ERROR_EMAIL_REQUIRED', 'The field Email is required').replace('_attribute_', t('EMAIL', 'Email')),
346
+ required: !isCustomerMode ? t('VALIDATION_ERROR_EMAIL_REQUIRED', 'The field Email is required').replace('_attribute_', t('EMAIL', 'Email')) : null,
347
347
  pattern: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i
348
348
  })
349
349
  }