ordering-ui-external 11.0.11 → 12.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 (29) hide show
  1. package/_bundles/{0.ordering-ui.f6ab4fd53f85792a6e5f.js → 0.ordering-ui.6487547c80bb5fd2fdee.js} +1 -1
  2. package/_bundles/{7.ordering-ui.f6ab4fd53f85792a6e5f.js → 7.ordering-ui.6487547c80bb5fd2fdee.js} +1 -1
  3. package/_bundles/{ordering-ui.f6ab4fd53f85792a6e5f.js → ordering-ui.6487547c80bb5fd2fdee.js} +2 -2
  4. package/_modules/themes/callcenterOriginal/src/components/Orders/OrdersTable/styles.js +1 -1
  5. package/_modules/themes/five/src/components/BusinessController/styles.js +2 -2
  6. package/_modules/themes/five/src/components/Cart/index.js +7 -7
  7. package/_modules/themes/five/src/components/Checkout/index.js +108 -87
  8. package/_modules/themes/five/src/components/MultiCheckout/index.js +65 -20
  9. package/_modules/themes/five/src/components/UserDetails/index.js +2 -2
  10. package/_modules/themes/five/src/components/UserFormDetails/index.js +59 -49
  11. package/_modules/utils/index.js +4 -3
  12. package/package.json +2 -2
  13. package/src/themes/callcenterOriginal/src/components/Orders/OrdersTable/styles.js +1 -1
  14. package/src/themes/five/src/components/BusinessController/styles.js +4 -4
  15. package/src/themes/five/src/components/Cart/index.js +6 -6
  16. package/src/themes/five/src/components/Checkout/index.js +75 -66
  17. package/src/themes/five/src/components/MultiCheckout/index.js +53 -21
  18. package/src/themes/five/src/components/UserDetails/index.js +2 -2
  19. package/src/themes/five/src/components/UserFormDetails/index.js +75 -66
  20. package/src/utils/index.js +3 -3
  21. /package/_bundles/{1.ordering-ui.f6ab4fd53f85792a6e5f.js → 1.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  22. /package/_bundles/{2.ordering-ui.f6ab4fd53f85792a6e5f.js → 2.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  23. /package/_bundles/{4.ordering-ui.f6ab4fd53f85792a6e5f.js → 4.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  24. /package/_bundles/{5.ordering-ui.f6ab4fd53f85792a6e5f.js → 5.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  25. /package/_bundles/{6.ordering-ui.f6ab4fd53f85792a6e5f.js → 6.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  26. /package/_bundles/{7.ordering-ui.f6ab4fd53f85792a6e5f.js.LICENSE.txt → 7.ordering-ui.6487547c80bb5fd2fdee.js.LICENSE.txt} +0 -0
  27. /package/_bundles/{8.ordering-ui.f6ab4fd53f85792a6e5f.js → 8.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  28. /package/_bundles/{9.ordering-ui.f6ab4fd53f85792a6e5f.js → 9.ordering-ui.6487547c80bb5fd2fdee.js} +0 -0
  29. /package/_bundles/{ordering-ui.f6ab4fd53f85792a6e5f.js.LICENSE.txt → ordering-ui.6487547c80bb5fd2fdee.js.LICENSE.txt} +0 -0
@@ -50,7 +50,10 @@ export const UserFormDetailsUI = (props) => {
50
50
  requiredFields,
51
51
  handleChangeNotifications,
52
52
  handlePlaceOrderAsGuest,
53
- isAllowGuest
53
+ isAllowGuest,
54
+ isOrderTypeValidationField,
55
+ checkoutFields,
56
+ isCheckoutPlace
54
57
  } = props
55
58
 
56
59
  const formMethods = useForm()
@@ -103,8 +106,8 @@ export const UserFormDetailsUI = (props) => {
103
106
  handlePlaceOrderAsGuest && handlePlaceOrderAsGuest()
104
107
  }
105
108
 
106
- const showInputPhoneNumber = validationFields?.fields?.checkout?.cellphone?.enabled ?? false
107
- const showInputBirthday = validationFields?.fields?.checkout?.birthdate?.enabled ?? false
109
+ const showInputPhoneNumber = isOrderTypeValidationField ? checkoutFields?.find(field => field?.validation_field?.code === 'mobile_phone')?.enabled : (validationFields?.fields?.checkout?.cellphone?.enabled ?? false)
110
+ const showInputBirthday = isOrderTypeValidationField ? checkoutFields?.find(field => field?.validation_field?.code === 'birthdate')?.enabled : (validationFields?.fields?.checkout?.birthdate?.enabled ?? false)
108
111
 
109
112
  const setUserCellPhone = (isEdit = false) => {
110
113
  if (userPhoneNumber && !userPhoneNumber.includes('null') && !isEdit) {
@@ -130,29 +133,37 @@ export const UserFormDetailsUI = (props) => {
130
133
  }
131
134
 
132
135
  const onSubmit = () => {
133
- const isPhoneNumberValid = userPhoneNumber ? isValidPhoneNumber : true
136
+ const isPhoneNumberValid = userPhoneNumber && showInputPhoneNumber ? isValidPhoneNumber : true
137
+ const requiredPhone = (user?.guest_id && requiredFields?.includes?.('cellphone')) || (validationFields?.fields?.checkout?.cellphone?.enabled && validationFields?.fields?.checkout?.cellphone?.required)
138
+ const content = []
139
+ if (requiredFields?.includes?.('birthdate') && !birthdate) {
140
+ content.push(t('VALIDATION_ERROR_BIRTHDATE_REQUIRED', 'Birthdate is required'))
141
+ }
134
142
  if (!userPhoneNumber &&
135
143
  ((validationFields?.fields?.checkout?.cellphone?.enabled &&
136
144
  validationFields?.fields?.checkout?.cellphone?.required) ||
137
145
  configs?.verification_phone_required?.value === '1')
138
146
  ) {
147
+ content.push(t('VALIDATION_ERROR_MOBILE_PHONE_REQUIRED', 'The field Phone Number is required.'))
139
148
  setAlertState({
140
149
  open: true,
141
- content: [t('VALIDATION_ERROR_MOBILE_PHONE_REQUIRED', 'The field Phone Number is required.')]
150
+ content: content
142
151
  })
143
152
  return
144
153
  }
145
154
  if (!isPhoneNumberValid && userPhoneNumber) {
146
155
  if (user?.country_phone_code) {
156
+ content.push(t('INVALID_ERROR_PHONE_NUMBER', 'The Phone Number field is invalid'))
147
157
  setAlertState({
148
158
  open: true,
149
- content: [t('INVALID_ERROR_PHONE_NUMBER', 'The Phone Number field is invalid')]
159
+ content: content
150
160
  })
151
161
  return
152
162
  }
163
+ content.push(t('INVALID_ERROR_COUNTRY_CODE_PHONE_NUMBER', 'The country code of the phone number is invalid'))
153
164
  setAlertState({
154
165
  open: true,
155
- content: [t('INVALID_ERROR_COUNTRY_CODE_PHONE_NUMBER', 'The country code of the phone number is invalid')]
166
+ content: content
156
167
  })
157
168
  return
158
169
  }
@@ -167,6 +178,13 @@ export const UserFormDetailsUI = (props) => {
167
178
  if (isCustomerMode) {
168
179
  setUserCustomer(formState.result.result, true)
169
180
  }
181
+ if (content?.length > 0) {
182
+ setAlertState({
183
+ open: true,
184
+ content: content
185
+ })
186
+ return
187
+ }
170
188
  handleButtonUpdateClick(changes)
171
189
  }
172
190
  }
@@ -207,9 +225,6 @@ export const UserFormDetailsUI = (props) => {
207
225
  const handleChangeInputEmail = (e) => {
208
226
  handleChangeInput({ target: { name: 'email', value: e.target.value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, '') } })
209
227
  formMethods.setValue('email', e.target.value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, ''))
210
- if (emailInput.current) {
211
- emailInput.current.value = e.target.value.toLowerCase().replace(/[&,()%";:ç?<>{}\\[\]\s]/g, '')
212
- }
213
228
  }
214
229
 
215
230
  const showFieldWithTheme = (name) => {
@@ -258,14 +273,6 @@ export const UserFormDetailsUI = (props) => {
258
273
  if (!isEdit) onCancel && onCancel()
259
274
  }, [user, isEdit])
260
275
 
261
- useEffect(() => {
262
- if (!validationFields.loading && emailInput.current) {
263
- formMethods.setValue('email', formState?.result?.result
264
- ? formState?.result?.result?.email
265
- : formState?.changes?.email ?? (user && user?.email) ?? '')
266
- }
267
- }, [validationFields, emailInput.current])
268
-
269
276
  useEffect(() => {
270
277
  if (!validationFields.loading && birthdate) {
271
278
  formMethods.setValue('birthdate', formState?.result?.result
@@ -274,19 +281,6 @@ export const UserFormDetailsUI = (props) => {
274
281
  }
275
282
  }, [validationFields, birthdate])
276
283
 
277
- useEffect(() => {
278
- if (requiredFields) return
279
- formMethods.register('email', {
280
- required: isRequiredField('email')
281
- ? t('VALIDATION_ERROR_EMAIL_REQUIRED', 'The field Email is required').replace('_attribute_', t('EMAIL', 'Email'))
282
- : null,
283
- pattern: {
284
- value: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i,
285
- message: t('INVALID_ERROR_EMAIL', 'Invalid email address').replace('_attribute_', t('EMAIL', 'Email'))
286
- }
287
- })
288
- }, [formMethods])
289
-
290
284
  useEffect(() => {
291
285
  if (isChanged && userPhoneNumber && isValidPhoneNumber && formState?.changes?.country_phone_code && formState?.changes?.cellphone && configs?.verification_phone_required?.value === '1') {
292
286
  setWillVerifyOtpState && setWillVerifyOtpState(true)
@@ -329,11 +323,12 @@ export const UserFormDetailsUI = (props) => {
329
323
  props.beforeMidComponents?.map((BeforeMidComponents, i) => (
330
324
  <BeforeMidComponents key={i} {...props} />))
331
325
  }
332
- {sortInputFields({ values: validationFields?.fields?.checkout }).map(field =>
333
- ((showField && showField(field.code) && showFieldWithTheme(field.code)) || user?.guest_id) && (
326
+ {sortInputFields({ values: isOrderTypeValidationField ? checkoutFields : validationFields?.fields?.checkout }).map(item => {
327
+ const field = item?.validation_field || item
328
+ return (
334
329
  <React.Fragment key={field.id}>
335
330
  {field.code === 'email' ? (
336
- ((requiredFields && requiredFields?.includes?.(field.code)) || !requiredFields) && (
331
+ ((isOrderTypeValidationField ? item?.enabled : (showField && showField(field.code))) && ((requiredFields && requiredFields?.includes?.(field.code)) || !requiredFields || !isCheckoutPlace)) && (
337
332
  <InputGroup>
338
333
  <p>{t(field.code.toUpperCase(), field?.name)}</p>
339
334
  <Input
@@ -346,15 +341,18 @@ export const UserFormDetailsUI = (props) => {
346
341
  placeholder={t(field.code.toUpperCase(), field?.name)}
347
342
  defaultValue={formState?.changes[field.code] ?? (user && user[field.code]) ?? ''}
348
343
  onChange={handleChangeInputEmail}
349
- ref={(e) => {
350
- emailInput.current = e
351
- }}
344
+ ref={
345
+ formMethods.register({
346
+ required: t('VALIDATION_ERROR_EMAIL_REQUIRED', 'The field Email is required').replace('_attribute_', t('EMAIL', 'Email')),
347
+ pattern: /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}$/i
348
+ })
349
+ }
352
350
  autoComplete='off'
353
351
  />
354
352
  </InputGroup>
355
353
  )
356
354
  ) : (
357
- ((requiredFields && requiredFields?.includes?.(field.code)) || !requiredFields) && (
355
+ ((isOrderTypeValidationField ? item?.enabled : (showField && showField(field.code))) && ((requiredFields && requiredFields?.includes?.(field.code)) || !requiredFields || !isCheckoutPlace)) && (
358
356
  <InputGroup>
359
357
  <p>{t(field.code.toUpperCase(), field?.name)}</p>
360
358
  <Input
@@ -379,34 +377,45 @@ export const UserFormDetailsUI = (props) => {
379
377
  )}
380
378
  </React.Fragment>
381
379
  )
382
- )}
383
- {((!user?.guest_id && showInputBirthday) || (user?.guest_id && requiredFields?.includes?.('birthdate'))) && (
384
- <InputPhoneNumberWrapper>
385
- <p>{t('BIRTHDATE', 'Birthdate')}</p>
386
- <Input
387
- borderBottom
388
- className='form'
389
- value={birthdate ? moment(birthdate).format('YYYY/MM/DD') : ''}
390
- autoComplete='off'
391
- onFocus={() => setOpenCalendar(true)}
392
- />
393
- {openCalendar && (
394
- <DatePickerUI value={birthdate} onChange={_handleChangeDate} name={'birthdate'} />
395
- )}
396
- </InputPhoneNumberWrapper>
397
- )}
398
- {((!user?.guest_id && !!showInputPhoneNumber) || (user?.guest_id && requiredFields?.includes?.('cellphone'))) && showCustomerCellphone && ((requiredFields && requiredFields?.includes?.('cellphone')) || !requiredFields) && (
399
- <InputPhoneNumberWrapper>
400
- <p>{t('PHONE', 'Phone')}</p>
401
- <InputPhoneNumber
402
- user={user}
403
- value={userPhoneNumber}
404
- setValue={handleChangePhoneNumber}
405
- handleIsValid={setIsValidPhoneNumber}
406
- disabled={!isEdit}
407
- />
408
- </InputPhoneNumberWrapper>
409
- )}
380
+ })}
381
+ {((!user?.guest_id && showInputBirthday) || (isOrderTypeValidationField || user?.guest_id)) &&
382
+ showInputBirthday &&
383
+ ((requiredFields && requiredFields?.includes?.('birthdate')) || !requiredFields || !isCheckoutPlace) &&
384
+ (
385
+ <InputPhoneNumberWrapper>
386
+ <p>{t('BIRTHDATE', 'Birthdate')}</p>
387
+ <Input
388
+ borderBottom
389
+ className='form'
390
+ value={birthdate ? moment(birthdate).format('YYYY/MM/DD') : ''}
391
+ autoComplete='off'
392
+ onFocus={() => setOpenCalendar(true)}
393
+ ref={formMethods.register({
394
+ required: isRequiredField('birthdate')
395
+ ? t('VALIDATION_ERROR_BIRTHDATE_REQUIRED', 'Birthdate is required')
396
+ : null
397
+ })}
398
+ />
399
+ {openCalendar && (
400
+ <DatePickerUI value={birthdate} onChange={_handleChangeDate} name={'birthdate'} />
401
+ )}
402
+ </InputPhoneNumberWrapper>
403
+ )}
404
+ {((!user?.guest_id && !!showInputPhoneNumber) || (isOrderTypeValidationField || user?.guest_id)) &&
405
+ showCustomerCellphone &&
406
+ ((requiredFields && requiredFields?.includes?.('cellphone')) || !requiredFields || !isCheckoutPlace) &&
407
+ (
408
+ <InputPhoneNumberWrapper>
409
+ <p>{t('PHONE', 'Phone')}</p>
410
+ <InputPhoneNumber
411
+ user={user}
412
+ value={userPhoneNumber}
413
+ setValue={handleChangePhoneNumber}
414
+ handleIsValid={setIsValidPhoneNumber}
415
+ disabled={!isEdit}
416
+ />
417
+ </InputPhoneNumberWrapper>
418
+ )}
410
419
  {!isCheckout && showCustomerPassword && !requiredFields && !isCustomerMode && (
411
420
  <InputGroup>
412
421
  <p>{t('PASSWORD', 'Password')}</p>
@@ -198,15 +198,15 @@ export const fieldsToSort = ['name', 'middle_name', 'lastname', 'second_lastname
198
198
  export const sortInputFields = ({ fields, values }) => {
199
199
  let fieldsBase = fields
200
200
  const fieldsSorted = []
201
- const fieldsArray = Array.isArray(values) ? values : Object.values(values)
201
+ const fieldsArray = Array.isArray(values) ? values : values && Object.values(values)
202
202
 
203
203
  if (!fieldsBase) {
204
204
  fieldsBase = fieldsToSort
205
205
  }
206
206
 
207
207
  fieldsBase.forEach(f => {
208
- fieldsArray.forEach(field => {
209
- if (f === field.code) {
208
+ fieldsArray && fieldsArray.forEach(field => {
209
+ if (f === field.code || f === field?.validation_field?.code) {
210
210
  fieldsSorted.push(field)
211
211
  }
212
212
  })